Retrocomputing

A note on configuration of runtime interpreters

Most interactive applications for CP/M were distributed with a configuration program that would at minimum allow the user to define the terminal that was attached to the computer. CIS and LEVEL II COBOL were no exceptions. The utility is called 'CONFIG.COM'. It is used to configure RUNA.COM, FORMS2.COM and "INT" files that are linked with the Run Time System to produce an executable program. However, since many CP/M computers had only one type of screen, the COBOL product sold for that system was adapted to not make it possible to configure the terminal's escape sequences. In the most restricted cases, it was only possible to change the tab stops. The limitations are controlled by a value in the runtime programs.

Since so few copies of CIS and LEVEL II COBOL have survived, it may be necessary to modify the runtime manually to make it work on other computers. In the tables below, the runtime is configured for the ADM-3A terminal.

Configure control

AddressDescription
HexDec
0085133First letter of the URN
0086134First letter of the URN
0087135Number part of URN (MSB)
0088136Number part of URN (LSB)
0089137Second-last letter of the URN
008A138Last letter of the URN
008B139Major version ($04)
008C140Minor version (e.g. $05)
The URN and version values must match the same in config.com for it to modify the file.

Addresses $0060 to $0062 contain the revision number. $05,$01,$03 will show as revision 513.

Terminal characteristics

AddressValue (org)
HexDecHexDescription
008D14100Address for "call" area? Low byte
008E14200Address for "call" area? High byte
008F14301Unknown flag
00901444FNumber of characters per line minus one
009114517Number of lines on screen minus one
0092146001 = Terminal does its own echo
0093147001 = Screen position is used by highlighting control code, 0 = otherwise

Special keys

In CIS COBOL you can configure what the terminal will send for carriage return backspace etc.

AddressValue (org)
HexDecHexDescription
00961500DCarriage return
009715108Backspace one character
00981520CForward space one character
00991530BBackspace one field
009A1540AForward space one field
009B1551EBackspace to first field of accept (home)
009C15609Column tabbing
009D15700Escape

Direct IO port use

AddressValue (org)
HexDecHexDescription
009E15801Flag
009F159Input port
00A0160Invert bits (00 or FF)
00A1161Input status port
00A2162Input status bit mask
00A3163Output port
00A4164Invert bits (00 or FF)
00A5165Output status port
00A6166Output status bit mask
00F5245FFMask to be and'ed with all keyboard characters

Location of addressing

Both direct cursor addressing and step addressing, i.e. codes to move the cursor up, down, right and left are stored in addressess $00A7-$00BF.

Step addressing

AddressDescription
HexDec
00A6166Flag: 0 if step addressing
00A7167Up
00A8168Down
00A9169Right
00AA170Left
00AB171Unused

Direct addressing

AddressValue (org)
HexDecHexDescription
00A616601Flag: 1 if direct addressing
00A716702# to send bytes before
00A816859'X' or 'Y': coordinate #1 selector (binary)
00A916900# bytes between
00AA17058'Y' or 'X': coordinate #2 selector (binary)
00AB17100# bytes after
00AC17220X coordinate offset
00AD17320Y coordinate offset
00AE1741B1st byte to send before (see 00A7)
00AF1753D2nd byte to send before
00B0176001st byte to send between (see 00A9)

Highlighting

AddressValue (org)
HexDecHexDescription
00B718300Mask for highlighting
00B818400Number of characters to send to turn highlighting on
00B918500Number of characters to send to turn highlighting of
00BA18600First byte in sequence
00BF19100Last byte in sequence

Clear screen

Located address $00C0 to $00C3.

AddressValue (org)
HexDecHexDescription
00C019201Number of bytes to send
00C11931A1st byte to send
00C2194002nd byte to send
00C3195003rd byte to send

Move to top left corner

Located address $00C4 to $00C7.

AddressValue (org)
HexDecHexDescription
00C419601Number of bytes to send
00C51971E1st byte to send
00C6198002nd byte to send
00C7199003rd byte to send

Audible alarm (bell)

The character to send for the bell is located at $00C8.

AddressValue (org)
HexDecHexDescription
00C820007Bell character

Location of tab stops

On CIS COBOL 4.x the tab stops are stored in address 222-237.

AddressValue (org)
HexDecHexDescription
00DD22109Number of tab stops
00DE22308First tab stop at position 8
00DF22410Second tab stop at position 16
00E0225183rd tab stop at position 24
00E122620
00E222728
00E322830
00E422938
00E523040
00E623148
00E723200
00E823300
00E923400
00EA23500
00EB23600
00EC23720
00ED23800Flag. If it is $01, then only tab stops can be changed. If it is $00, then all features can be changed.