LDOS 5.3.1 for the Model III - SYS4/SYS Disassembled

Page Customization

Introduction/Summary

LDOS 5.3.1 SYS4/SYS Disassembly - @ERROR, the Error Messages (Model III)

SYS4/SYS turns an error number into its message for LDOS and displays it: the service @ERROR (4409H). It is a system file, loaded into the overlay area at 4E00H by the supervisor dispatcher of SYS0/SYS (4BCCH) whenever a request code names it: bits 3-0 of the code are 6. The only request of it that SYS0/SYS issues is 96H, from the @ERROR vector, which pushes the program's Register Pair AF first. The manual says that without this overlay every system error gives the message SYS ERROR, and that it takes one granule of a diskette.

The file is a load module of 1020 bytes: a record of type 1FH with the text Copyright 1991 MISOSYS, Inc., All rights reserved, four load blocks for 4E00H-51AEH, a load block for the two bytes 4BC8H-4BC9H (03AFH, the 943 bytes that SYS4/SYS takes up in the overlay area) and the transfer address record for 4E00H. The messages are not stored as text: a dictionary of 56 words (5088H), a run of word numbers for each message (4E03H) and an index of the runs by error number (505AH).

Calling @ERROR

The program puts the error number in Register A and calls 4409H. The bits of Register A:

BitsMeaning
5-0The error number, 00H-3FH. A number above 2DH (45) gets the message of 2DH, unknown error code; the full message still shows the number given.
6Set: the short message, the text alone. Clear: the full message, with the error number, the file or device and the address of the call. Bit 6 of SFLAG$ (442BH) clears this bit, so the full message is always given.
7Set: return to the program after the message, with Register A = the error number and Register Pairs BC, DE and HL as they were. Clear: the program ends at @ABORT (4030H), back to LDOS Ready.

Two bits of 4758H, the status byte of the command interpreter, change what is done. Bit 6 set: no message at all, only the return or the abort; no file on this diskette sets it. Bit 7 set: the short message is built in the program's buffer at Register Pair DE and not displayed, and bit 7 is cleared; TED/CMD uses this to show an error on its own status line (its 56AFH).

The Two Forms of the Message

The full message is built at 4300H and displayed (with the job log) by @LOGOT (428AH), then two more lines are displayed from the templates at 500DH-5059H:

LineContents
1A line feed, then *** Error code =NN, Text of the message *** (4EE4H, 4F02H, 4F33H). NN is the error number in decimal; the first letter of the text is made a capital.
2<Device=*XX> or <File=NAME/EXT:d> for the control block at JDCB$ (4220H), the one the latest file call used (4F69H). For most errors the block is open: a file is named from its directory record (4FB0H), a device by the name at +06H-+07H. For the errors marked below the block is read as the file specification it holds before an open, and shown as it was given (4F8BH).
3Referenced at X'NNNN': the address of the program's CALL into the file system, the return address in JRET$ (4BCAH) less 3 (4FF7H).

The short message is the text alone, with a space after its last word and a carriage return.

The Messages

Each run of the definition table holds one byte for each word: bits 5-0 the word number, bit 7 set on the last word, and bit 6 of the last byte set for the errors whose control block is read as a file specification (shown here as named from the specification).

ErrorMessage
00H (0)No error
01H (1)Parity error during header read
02H (2)Seek error during read
03H (3)Lost data during read
04H (4)Parity error during read
05H (5)Data record not found during read
06H (6)Attempted to read system data record
07H (7)Attempted to read locked/deleted data record
08H (8)Device not available (named from the specification)
09H (9)Parity error during header write
0AH (10)Seek error during write
0BH (11)Lost data during write
0CH (12)Parity error during write
0DH (13)Data record not found during write
0EH (14)Write fault on disk drive
0FH (15)Write protected disk
10H (16)Illegal logical file number
11H (17)Directory read error
12H (18)Directory write error
13H (19)Illegal file name (named from the specification)
14H (20)GAT read error
15H (21)GAT write error
16H (22)HIT read error
17H (23)HIT write error
18H (24)File not in directory (named from the specification)
19H (25)File access denied (named from the specification)
1AH (26)Full or write protected disk (named from the specification)
1BH (27)Disk space full
1CH (28)End of file encountered
1DH (29)Record number out of range
1EH (30)Directory full - can't extend file
1FH (31)Program not found (named from the specification)
20H (32)Illegal drive number (named from the specification)
21H (33)No device space available (named from the specification)
22H (34)Load file format error
23H (35)Memory fault
24H (36)Attempted to load read only memory
25H (37)Illegal access attempted to protected file
26H (38)File not open (named from the specification)
27H (39)Device in use
28H (40)Protected system device
29H (41)Unknown error code
2AH (42)Unknown error code
2BH (43)Unknown error code
2CH (44)Parameter error
2DH (45)Unknown error code

About This Page

Every byte of the file is shown, in address order: the load block at 4BC8H first, then 4E00H-51AEH. One instruction is changed by the code before it runs: JP M,0000H at 4F63H, whose operand 4EB2H sets to the dispatcher's return address 4BE6H.

Memory Map

Load Blocks in File Order

The five load blocks of the file in the order the overlay loader (4C8CH) reads them, after the copyright record. The transfer address is 4E00H.

AddressContents
4E00H-4EFFH256 bytes
4F00H-4FFFH256 bytes
5000H-50FFH256 bytes
5100H-51AEH175 bytes
4BC8H-4BC9H2 bytes

Sections of the Disassembly

AddressContents
4BC8HThe Overlay Length (Data)
4E00HOverlay Entry Point
4E03HError Message Definition Table
4EAEH@ERROR Service Entry, Option Decode and Display Gating
4ED8HBit 7 of 4758H: Build the Short Message for the Program
4EE4HError Code Prefix Builder
4F02HMessage Decompression Loop
4F33HFrame and Display the Message
4F5EHReturn to the Program or Abort
4F69HDevice or File Specification Builder
4F8BHThe Control Block as a File Specification
4FB0HAn Open File: the Name From Its Directory Record
4FF7HDisplay the Name and the Referenced At Line
500DHMessage Template Literals
505AHError Code Index Table
5088HCompressed Word Dictionary

Memory SYS4/SYS Uses

AddressContents
4030H@ABORT: the end of the program when bit 7 of the error number is clear (4F66H).
4300H-43FFHThe system buffer of SYS0/SYS: the full message is built here (4ED3H) and displayed; then the directory sector of an open file is read into it (4FB6H).
4220H-4221HJDCB$: the control block of the latest file call, named in the message (4F6BH).
4BCAH-4BCBHJRET$: the return address of the latest file call, shown less 3 in the referenced at line (4FFAH).
442BHSFLAG$: bit 6 forces the full message (4EBBH).
428AH@LOGOT: display a line and send it to the job log (4F53H, 4FF7H, 500AH).
4758HThe status byte of the command interpreter: bit 6 no message, bit 7 the short message into the program's buffer (4ECAH, 4ECFH, 4F4EH).
4B10HDIRRD of SYS0/SYS: the directory record of an open file (4FB6H).
4BC8H-4BC9HThe length of the system file in the overlay area: 03AFH for SYS4/SYS.
4BE6HThe end of the supervisor dispatcher, the way back to the program (4EB2H, 4F63H).
4D82HWrite Register Pair DE as four hex digits at Register Pair HL (5004H).
4E00H-51AEHSYS4/SYS in the overlay area.

Variables

The entry points of SYS4/SYS, then the data of the file, the operand it changes, and the cells of SYS0/SYS it uses, by address.

Entry Points

AddressNameContents
4E00HThe entry: JP 4EAEH over the definition table.
4EAEH@ERRORFunction 10H (request 96H, 4409H): display the message of the error number pushed by 4409H.
4ED8HBit 7 of 4758H: the short message into the program's buffer, not displayed.
4EE4HWrite the prefix of the full message with the error number in decimal.
4F02HBuild the text of the message from the definition table and the dictionary.
4F33HCapitalize, end and display the message.
4F5EHReturn to the program or end it at @ABORT.
4F69HDisplay the file or device of the error and the referenced at line.
4FF7HDisplay a line and then the referenced at line.

Data in the File

Address
Size
Contents
4BC8H-4BC9H
2 bytes
DEFW 03AFH
4BC8H-4BC9H: 03AFH (943), the number of bytes from 4E00H that SYS4/SYS takes up (4E00H-51AEH). Loading SYS4/SYS puts it over the length the system file loaded before it left here.
4E03H-4E04H
2 bytes
DEFB 01H, 82H
4E03H-4E04H: the message of error 00H (0), no error: 01H (word 1, no); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E05H-4E09H
5 bytes
DEFB 04H, 02H, 05H, 06H, 89H
4E05H-4E09H: the message of error 01H (1), parity error during header read: 04H (word 4, parity); 02H (word 2, error); 05H (word 5, during); 06H (word 6, header); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E0AH-4E0DH
4 bytes
DEFB 08H, 02H, 05H, 89H
4E0AH-4E0DH: the message of error 02H (2), seek error during read: 08H (word 8, seek); 02H (word 2, error); 05H (word 5, during); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E0EH-4E11H
4 bytes
DEFB 0BH, 07H, 05H, 89H
4E0EH-4E11H: the message of error 03H (3), lost data during read: 0BH (word 11, lost); 07H (word 7, data); 05H (word 5, during); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E12H-4E15H
4 bytes
DEFB 04H, 02H, 05H, 89H
4E12H-4E15H: the message of error 04H (4), parity error during read: 04H (word 4, parity); 02H (word 2, error); 05H (word 5, during); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E16H-4E1BH
6 bytes
DEFB 07H, 1BH, 0CH, 2CH, 05H, 89H
4E16H-4E1BH: the message of error 05H (5), data record not found during read: 07H (word 7, data); 1BH (word 27, record); 0CH (word 12, not); 2CH (word 44, found); 05H (word 5, during); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E1CH-4E20H
5 bytes
DEFB 0DH, 09H, 0FH, 07H, 9BH
4E1CH-4E20H: the message of error 06H (6), attempted to read system data record: 0DH (word 13, attempted to); 09H (word 9, read); 0FH (word 15, system); 07H (word 7, data); 9BH (word 27, record, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E21H-4E25H
5 bytes
DEFB 0DH, 09H, 0EH, 07H, 9BH
4E21H-4E25H: the message of error 07H (7), attempted to read locked/deleted data record: 0DH (word 13, attempted to); 09H (word 9, read); 0EH (word 14, locked/deleted); 07H (word 7, data); 9BH (word 27, record, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E26H-4E28H
3 bytes
DEFB 2AH, 0CH, F3H
4E26H-4E28H: the message of error 08H (8), device not available: 2AH (word 42, device); 0CH (word 12, not); F3H (word 51, available, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E29H-4E2DH
5 bytes
DEFB 04H, 02H, 05H, 06H, 8AH
4E29H-4E2DH: the message of error 09H (9), parity error during header write: 04H (word 4, parity); 02H (word 2, error); 05H (word 5, during); 06H (word 6, header); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E2EH-4E31H
4 bytes
DEFB 08H, 02H, 05H, 8AH
4E2EH-4E31H: the message of error 0AH (10), seek error during write: 08H (word 8, seek); 02H (word 2, error); 05H (word 5, during); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E32H-4E35H
4 bytes
DEFB 0BH, 07H, 05H, 8AH
4E32H-4E35H: the message of error 0BH (11), lost data during write: 0BH (word 11, lost); 07H (word 7, data); 05H (word 5, during); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E36H-4E39H
4 bytes
DEFB 04H, 02H, 05H, 8AH
4E36H-4E39H: the message of error 0CH (12), parity error during write: 04H (word 4, parity); 02H (word 2, error); 05H (word 5, during); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E3AH-4E3FH
6 bytes
DEFB 07H, 1BH, 0CH, 2CH, 05H, 8AH
4E3AH-4E3FH: the message of error 0DH (13), data record not found during write: 07H (word 7, data); 1BH (word 27, record); 0CH (word 12, not); 2CH (word 44, found); 05H (word 5, during); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E40H-4E44H
5 bytes
DEFB 0AH, 15H, 12H, 13H, B0H
4E40H-4E44H: the message of error 0EH (14), write fault on disk drive: 0AH (word 10, write); 15H (word 21, fault); 12H (word 18, on); 13H (word 19, disk); B0H (word 48, drive, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E45H-4E47H
3 bytes
DEFB 0AH, 16H, 93H
4E45H-4E47H: the message of error 0FH (15), write protected disk: 0AH (word 10, write); 16H (word 22, protected); 93H (word 19, disk, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E48H-4E4BH
4 bytes
DEFB 17H, 18H, 1AH, 99H
4E48H-4E4BH: the message of error 10H (16), illegal logical file number: 17H (word 23, illegal); 18H (word 24, logical); 1AH (word 26, file); 99H (word 25, number, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E4CH-4E4EH
3 bytes
DEFB 10H, 09H, 82H
4E4CH-4E4EH: the message of error 11H (17), directory read error: 10H (word 16, directory); 09H (word 9, read); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E4FH-4E51H
3 bytes
DEFB 10H, 0AH, 82H
4E4FH-4E51H: the message of error 12H (18), directory write error: 10H (word 16, directory); 0AH (word 10, write); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E52H-4E54H
3 bytes
DEFB 17H, 1AH, E9H
4E52H-4E54H: the message of error 13H (19), illegal file name: 17H (word 23, illegal); 1AH (word 26, file); E9H (word 41, name, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E55H-4E57H
3 bytes
DEFB 22H, 09H, 82H
4E55H-4E57H: the message of error 14H (20), GAT read error: 22H (word 34, GAT); 09H (word 9, read); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E58H-4E5AH
3 bytes
DEFB 22H, 0AH, 82H
4E58H-4E5AH: the message of error 15H (21), GAT write error: 22H (word 34, GAT); 0AH (word 10, write); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E5BH-4E5DH
3 bytes
DEFB 23H, 09H, 82H
4E5BH-4E5DH: the message of error 16H (22), HIT read error: 23H (word 35, HIT); 09H (word 9, read); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E5EH-4E60H
3 bytes
DEFB 23H, 0AH, 82H
4E5EH-4E60H: the message of error 17H (23), HIT write error: 23H (word 35, HIT); 0AH (word 10, write); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E61H-4E64H
4 bytes
DEFB 1AH, 0CH, 2DH, D0H
4E61H-4E64H: the message of error 18H (24), file not in directory: 1AH (word 26, file); 0CH (word 12, not); 2DH (word 45, in); D0H (word 16, directory, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E65H-4E67H
3 bytes
DEFB 1AH, 2EH, F1H
4E65H-4E67H: the message of error 19H (25), file access denied: 1AH (word 26, file); 2EH (word 46, access); F1H (word 49, denied, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E68H-4E6CH
5 bytes
DEFB 2FH, 37H, 0AH, 16H, D3H
4E68H-4E6CH: the message of error 1AH (26), full or write protected disk: 2FH (word 47, full); 37H (word 55, or); 0AH (word 10, write); 16H (word 22, protected); D3H (word 19, disk, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E6DH-4E6FH
3 bytes
DEFB 13H, 27H, AFH
4E6DH-4E6FH: the message of error 1BH (27), disk space full: 13H (word 19, disk); 27H (word 39, space); AFH (word 47, full, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E70H-4E73H
4 bytes
DEFB 1CH, 1DH, 1AH, A0H
4E70H-4E73H: the message of error 1CH (28), end of file encountered: 1CH (word 28, end); 1DH (word 29, of); 1AH (word 26, file); A0H (word 32, encountered, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E74H-4E78H
5 bytes
DEFB 1BH, 19H, 1EH, 1DH, 9FH
4E74H-4E78H: the message of error 1DH (29), record number out of range: 1BH (word 27, record); 19H (word 25, number); 1EH (word 30, out); 1DH (word 29, of); 9FH (word 31, range, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E79H-4E7CH
4 bytes
DEFB 10H, 2FH, 34H, 9AH
4E79H-4E7CH: the message of error 1EH (30), directory full - can't extend file: 10H (word 16, directory); 2FH (word 47, full); 34H (word 52, - can't extend); 9AH (word 26, file, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E7DH-4E7FH
3 bytes
DEFB 32H, 0CH, ECH
4E7DH-4E7FH: the message of error 1FH (31), program not found: 32H (word 50, program); 0CH (word 12, not); ECH (word 44, found, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E80H-4E82H
3 bytes
DEFB 17H, 30H, D9H
4E80H-4E82H: the message of error 20H (32), illegal drive number: 17H (word 23, illegal); 30H (word 48, drive); D9H (word 25, number, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E83H-4E86H
4 bytes
DEFB 01H, 2AH, 27H, F3H
4E83H-4E86H: the message of error 21H (33), no device space available: 01H (word 1, no); 2AH (word 42, device); 27H (word 39, space); F3H (word 51, available, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E87H-4E8AH
4 bytes
DEFB 26H, 1AH, 2BH, 82H
4E87H-4E8AH: the message of error 22H (34), load file format error: 26H (word 38, load); 1AH (word 26, file); 2BH (word 43, format); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E8BH-4E8CH
2 bytes
DEFB 11H, 95H
4E8BH-4E8CH: the message of error 23H (35), memory fault: 11H (word 17, memory); 95H (word 21, fault, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E8DH-4E91H
5 bytes
DEFB 0DH, 26H, 09H, 28H, 91H
4E8DH-4E91H: the message of error 24H (36), attempted to load read only memory: 0DH (word 13, attempted to); 26H (word 38, load); 09H (word 9, read); 28H (word 40, only); 91H (word 17, memory, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E92H-4E96H
5 bytes
DEFB 17H, 2EH, 0DH, 16H, 9AH
4E92H-4E96H: the message of error 25H (37), illegal access attempted to protected file: 17H (word 23, illegal); 2EH (word 46, access); 0DH (word 13, attempted to); 16H (word 22, protected); 9AH (word 26, file, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E97H-4E99H
3 bytes
DEFB 1AH, 0CH, F5H
4E97H-4E99H: the message of error 26H (38), file not open: 1AH (word 26, file); 0CH (word 12, not); F5H (word 53, open, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E9AH-4E9CH
3 bytes
DEFB 2AH, 2DH, B6H
4E9AH-4E9CH: the message of error 27H (39), device in use: 2AH (word 42, device); 2DH (word 45, in); B6H (word 54, use, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E9DH-4E9FH
3 bytes
DEFB 16H, 0FH, AAH
4E9DH-4E9FH: the message of error 28H (40), protected system device: 16H (word 22, protected); 0FH (word 15, system); AAH (word 42, device, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EA0H-4EA2H
3 bytes
DEFB 25H, 02H, A1H
4EA0H-4EA2H: the message of error 29H (41), unknown error code: 25H (word 37, unknown); 02H (word 2, error); A1H (word 33, code, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EA3H-4EA5H
3 bytes
DEFB 25H, 02H, A1H
4EA3H-4EA5H: the message of error 2AH (42), unknown error code: 25H (word 37, unknown); 02H (word 2, error); A1H (word 33, code, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EA6H-4EA8H
3 bytes
DEFB 25H, 02H, A1H
4EA6H-4EA8H: the message of error 2BH (43), unknown error code: 25H (word 37, unknown); 02H (word 2, error); A1H (word 33, code, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EA9H-4EAAH
2 bytes
DEFB 14H, 82H
4EA9H-4EAAH: the message of error 2CH (44), parameter error: 14H (word 20, parameter); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EABH-4EADH
3 bytes
DEFB 25H, 02H, A1H
4EABH-4EADH: the message of error 2DH (45), unknown error code: 25H (word 37, unknown); 02H (word 2, error); A1H (word 33, code, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
500DH
1 byte
DEFB 0AH
500DH: 0AH, the line feed that starts the full message on a new line, the first of the 17 bytes 4EE5H-4EEAH copy to the buffer.
500EH-5010H
3 bytes
DEFM "***"
500EH-5010H: three asterisks (2AH 2AH 2AH), the start of the full message, and the three bytes 4F3EH-4F44H copy after its last word as its end.
5011H-501DH
13 bytes
DEFM " Error code ="
5011H-501DH: the text Error code = with a space before it; 4EEFH-4EFAH write the two decimal digits of the error number right after the equal sign.
501EH-5027H
10 bytes
DEFM " <Device=*"
501EH-5027H: a space, the text Device= in angle brackets as far as the 2AH (the asterisk) of the device specification, displayed from 501EH by 4F86H-4F89H.
5028H-5029H
2 bytes
DEFM "XX"
5028H-5029H: the two letters of the device name, placeholders that 4F82H overwrites with Register Pair BC (the name from the control block) before the line is shown.
502AH
1 byte
DEFM ">"
502AH: the closing angle bracket of the device line, after the two letters of the device name at 5028H-5029H.
502BH
1 byte
DEFB 0DH
502BH: 0DH, the carriage return that ends the device line; @LOGOT (428AH) displays it and stops there.
502CH-5032H
7 bytes
DEFM " <File="
502CH-5032H: a space and the text File= after an angle bracket, the start of the file line displayed from 502CH by 4FF4H-4FF7H.
5033H-503AH
8 bytes
DEFM "NNNNNNNN"
5033H-503AH: placeholders for the file name. 4FB0H-4FCAH write the name from the directory record here, and 4F98H-4FACH copy the file specification held in the control block.
503BH
1 byte
DEFM "/"
503BH: the slash between the name and the extension in the template. 4FCCH writes its own slash after the name it copied, so this byte is overwritten.
503CH-503EH
3 bytes
DEFM "EEE"
503CH-503EH: placeholders for the file's extension, overwritten by the extension and the rest of the file specification written from 5033H.
503FH
1 byte
DEFM ":"
503FH: the colon before the drive number in the template, overwritten by the specification 4F98H-4FF1H write from 5033H.
5040H
1 byte
DEFM "D"
5040H: a placeholder for the drive number, overwritten by the specification 4F98H-4FF1H write from 5033H.
5041H
1 byte
DEFM ">"
5041H: the closing angle bracket of the template; 4FEBH-4FEDH write their own after the specification, wherever it ends.
5042H
1 byte
DEFB 0DH
5042H: 0DH, the carriage return of the template; 4FEFH-4FF1H write their own after the closing angle bracket.
5043H-5053H
17 bytes
DEFM " Referenced at X'"
5043H-5053H: a space, the text Referenced at and X with an apostrophe, the start of the line that 5007H-500AH display: the address the error was reported from.
5054H-5057H
4 bytes
DEFM "NNNN"
5054H-5057H: placeholders for four hex digits, overwritten by 5001H-5004H (4D82H of SYS0/SYS) with the address of the program's call into the file system.
5058H
1 byte
DEFM "'"
5058H: the apostrophe that closes the hex address X'NNNN' of the referenced at line.
5059H
1 byte
DEFB 0DH
5059H: 0DH, the carriage return that ends the referenced at line and the whole message.
505AH
1 byte
DEFB 03H
505AH, error 00H (0): 03H, the definition at 4E03H (4E00H + 03H): no error.
505BH
1 byte
DEFB 05H
505BH, error 01H (1): 05H, the definition at 4E05H (4E00H + 05H): parity error during header read.
505CH
1 byte
DEFB 0AH
505CH, error 02H (2): 0AH, the definition at 4E0AH (4E00H + 0AH): seek error during read.
505DH
1 byte
DEFB 0EH
505DH, error 03H (3): 0EH, the definition at 4E0EH (4E00H + 0EH): lost data during read.
505EH
1 byte
DEFB 12H
505EH, error 04H (4): 12H, the definition at 4E12H (4E00H + 12H): parity error during read.
505FH
1 byte
DEFB 16H
505FH, error 05H (5): 16H, the definition at 4E16H (4E00H + 16H): data record not found during read.
5060H
1 byte
DEFB 1CH
5060H, error 06H (6): 1CH, the definition at 4E1CH (4E00H + 1CH): attempted to read system data record.
5061H
1 byte
DEFB 21H
5061H, error 07H (7): 21H, the definition at 4E21H (4E00H + 21H): attempted to read locked/deleted data record.
5062H
1 byte
DEFB 26H
5062H, error 08H (8): 26H, the definition at 4E26H (4E00H + 26H): device not available.
5063H
1 byte
DEFB 29H
5063H, error 09H (9): 29H, the definition at 4E29H (4E00H + 29H): parity error during header write.
5064H
1 byte
DEFB 2EH
5064H, error 0AH (10): 2EH, the definition at 4E2EH (4E00H + 2EH): seek error during write.
5065H
1 byte
DEFB 32H
5065H, error 0BH (11): 32H, the definition at 4E32H (4E00H + 32H): lost data during write.
5066H
1 byte
DEFB 36H
5066H, error 0CH (12): 36H, the definition at 4E36H (4E00H + 36H): parity error during write.
5067H
1 byte
DEFB 3AH
5067H, error 0DH (13): 3AH, the definition at 4E3AH (4E00H + 3AH): data record not found during write.
5068H
1 byte
DEFB 40H
5068H, error 0EH (14): 40H, the definition at 4E40H (4E00H + 40H): write fault on disk drive.
5069H
1 byte
DEFB 45H
5069H, error 0FH (15): 45H, the definition at 4E45H (4E00H + 45H): write protected disk.
506AH
1 byte
DEFB 48H
506AH, error 10H (16): 48H, the definition at 4E48H (4E00H + 48H): illegal logical file number.
506BH
1 byte
DEFB 4CH
506BH, error 11H (17): 4CH, the definition at 4E4CH (4E00H + 4CH): directory read error.
506CH
1 byte
DEFB 4FH
506CH, error 12H (18): 4FH, the definition at 4E4FH (4E00H + 4FH): directory write error.
506DH
1 byte
DEFB 52H
506DH, error 13H (19): 52H, the definition at 4E52H (4E00H + 52H): illegal file name.
506EH
1 byte
DEFB 55H
506EH, error 14H (20): 55H, the definition at 4E55H (4E00H + 55H): GAT read error.
506FH
1 byte
DEFB 58H
506FH, error 15H (21): 58H, the definition at 4E58H (4E00H + 58H): GAT write error.
5070H
1 byte
DEFB 5BH
5070H, error 16H (22): 5BH, the definition at 4E5BH (4E00H + 5BH): HIT read error.
5071H
1 byte
DEFB 5EH
5071H, error 17H (23): 5EH, the definition at 4E5EH (4E00H + 5EH): HIT write error.
5072H
1 byte
DEFB 61H
5072H, error 18H (24): 61H, the definition at 4E61H (4E00H + 61H): file not in directory.
5073H
1 byte
DEFB 65H
5073H, error 19H (25): 65H, the definition at 4E65H (4E00H + 65H): file access denied.
5074H
1 byte
DEFB 68H
5074H, error 1AH (26): 68H, the definition at 4E68H (4E00H + 68H): full or write protected disk.
5075H
1 byte
DEFB 6DH
5075H, error 1BH (27): 6DH, the definition at 4E6DH (4E00H + 6DH): disk space full.
5076H
1 byte
DEFB 70H
5076H, error 1CH (28): 70H, the definition at 4E70H (4E00H + 70H): end of file encountered.
5077H
1 byte
DEFB 74H
5077H, error 1DH (29): 74H, the definition at 4E74H (4E00H + 74H): record number out of range.
5078H
1 byte
DEFB 79H
5078H, error 1EH (30): 79H, the definition at 4E79H (4E00H + 79H): directory full - can't extend file.
5079H
1 byte
DEFB 7DH
5079H, error 1FH (31): 7DH, the definition at 4E7DH (4E00H + 7DH): program not found.
507AH
1 byte
DEFB 80H
507AH, error 20H (32): 80H, the definition at 4E80H (4E00H + 80H): illegal drive number.
507BH
1 byte
DEFB 83H
507BH, error 21H (33): 83H, the definition at 4E83H (4E00H + 83H): no device space available.
507CH
1 byte
DEFB 87H
507CH, error 22H (34): 87H, the definition at 4E87H (4E00H + 87H): load file format error.
507DH
1 byte
DEFB 8BH
507DH, error 23H (35): 8BH, the definition at 4E8BH (4E00H + 8BH): memory fault.
507EH
1 byte
DEFB 8DH
507EH, error 24H (36): 8DH, the definition at 4E8DH (4E00H + 8DH): attempted to load read only memory.
507FH
1 byte
DEFB 92H
507FH, error 25H (37): 92H, the definition at 4E92H (4E00H + 92H): illegal access attempted to protected file.
5080H
1 byte
DEFB 97H
5080H, error 26H (38): 97H, the definition at 4E97H (4E00H + 97H): file not open.
5081H
1 byte
DEFB 9AH
5081H, error 27H (39): 9AH, the definition at 4E9AH (4E00H + 9AH): device in use.
5082H
1 byte
DEFB 9DH
5082H, error 28H (40): 9DH, the definition at 4E9DH (4E00H + 9DH): protected system device.
5083H
1 byte
DEFB A0H
5083H, error 29H (41): A0H, the definition at 4EA0H (4E00H + A0H): unknown error code.
5084H
1 byte
DEFB A3H
5084H, error 2AH (42): A3H, the definition at 4EA3H (4E00H + A3H): unknown error code.
5085H
1 byte
DEFB A6H
5085H, error 2BH (43): A6H, the definition at 4EA6H (4E00H + A6H): unknown error code.
5086H
1 byte
DEFB A9H
5086H, error 2CH (44): A9H, the definition at 4EA9H (4E00H + A9H): parameter error.
5087H
1 byte
DEFB ABH
5087H, error 2DH (45): ABH, the definition at 4EABH (4E00H + ABH): unknown error code.
5088H
1 byte
DEFB D2H
5088H: word 0, R; its only character, R (52H), is stored as D2H, with bit 7 set. Not used: the search at 4F15H-4F1EH skips at least one word end, so it never stops on the first word.
5089H-508AH
2 bytes
DEFM "n",EFH
5089H-508AH: word 1, no; its last character, o (6FH), is stored as EFH, with bit 7 set. Used by errors 00H, 21H.
508BH-508FH
5 bytes
DEFM "erro",F2H
508BH-508FH: word 2, error; its last character, r (72H), is stored as F2H, with bit 7 set. Used by errors 00H, 01H, 02H, 04H, 09H, 0AH, 0CH, 11H, 12H, 14H, 15H, 16H, 17H, 22H, 29H, 2AH, 2BH, 2CH, 2DH.
5090H
1 byte
DEFB EFH
5090H: word 3, o; its only character, o (6FH), is stored as EFH, with bit 7 set. No message uses it.
5091H-5096H
6 bytes
DEFM "parit",F9H
5091H-5096H: word 4, parity; its last character, y (79H), is stored as F9H, with bit 7 set. Used by errors 01H, 04H, 09H, 0CH.
5097H-509CH
6 bytes
DEFM "durin",E7H
5097H-509CH: word 5, during; its last character, g (67H), is stored as E7H, with bit 7 set. Used by errors 01H, 02H, 03H, 04H, 05H, 09H, 0AH, 0BH, 0CH, 0DH.
509DH-50A2H
6 bytes
DEFM "heade",F2H
509DH-50A2H: word 6, header; its last character, r (72H), is stored as F2H, with bit 7 set. Used by errors 01H, 09H.
50A3H-50A6H
4 bytes
DEFM "dat",E1H
50A3H-50A6H: word 7, data; its last character, a (61H), is stored as E1H, with bit 7 set. Used by errors 03H, 05H, 06H, 07H, 0BH, 0DH.
50A7H-50AAH
4 bytes
DEFM "see",EBH
50A7H-50AAH: word 8, seek; its last character, k (6BH), is stored as EBH, with bit 7 set. Used by errors 02H, 0AH.
50ABH-50AEH
4 bytes
DEFM "rea",E4H
50ABH-50AEH: word 9, read; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 01H, 02H, 03H, 04H, 05H, 06H, 07H, 11H, 14H, 16H, 24H.
50AFH-50B3H
5 bytes
DEFM "writ",E5H
50AFH-50B3H: word 10, write; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 09H, 0AH, 0BH, 0CH, 0DH, 0EH, 0FH, 12H, 15H, 17H, 1AH.
50B4H-50B7H
4 bytes
DEFM "los",F4H
50B4H-50B7H: word 11, lost; its last character, t (74H), is stored as F4H, with bit 7 set. Used by errors 03H, 0BH.
50B8H-50BAH
3 bytes
DEFM "no",F4H
50B8H-50BAH: word 12, not; its last character, t (74H), is stored as F4H, with bit 7 set. Used by errors 05H, 08H, 0DH, 18H, 1FH, 26H.
50BBH-50C6H
12 bytes
DEFM "attempted t",EFH
50BBH-50C6H: word 13, attempted to; its last character, o (6FH), is stored as EFH, with bit 7 set. Used by errors 06H, 07H, 24H, 25H.
50C7H-50D4H
14 bytes
DEFM "locked/delete",E4H
50C7H-50D4H: word 14, locked/deleted; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 07H.
50D5H-50DAH
6 bytes
DEFM "syste",EDH
50D5H-50DAH: word 15, system; its last character, m (6DH), is stored as EDH, with bit 7 set. Used by errors 06H, 28H.
50DBH-50E3H
9 bytes
DEFM "director",F9H
50DBH-50E3H: word 16, directory; its last character, y (79H), is stored as F9H, with bit 7 set. Used by errors 11H, 12H, 18H, 1EH.
50E4H-50E9H
6 bytes
DEFM "memor",F9H
50E4H-50E9H: word 17, memory; its last character, y (79H), is stored as F9H, with bit 7 set. Used by errors 23H, 24H.
50EAH-50EBH
2 bytes
DEFM "o",EEH
50EAH-50EBH: word 18, on; its last character, n (6EH), is stored as EEH, with bit 7 set. Used by error 0EH.
50ECH-50EFH
4 bytes
DEFM "dis",EBH
50ECH-50EFH: word 19, disk; its last character, k (6BH), is stored as EBH, with bit 7 set. Used by errors 0EH, 0FH, 1AH, 1BH.
50F0H-50F8H
9 bytes
DEFM "paramete",F2H
50F0H-50F8H: word 20, parameter; its last character, r (72H), is stored as F2H, with bit 7 set. Used by error 2CH.
50F9H-50FDH
5 bytes
DEFM "faul",F4H
50F9H-50FDH: word 21, fault; its last character, t (74H), is stored as F4H, with bit 7 set. Used by errors 0EH, 23H.
50FEH-5106H
9 bytes
DEFM "protecte",E4H
50FEH-5106H: word 22, protected; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 0FH, 1AH, 25H, 28H.
5107H-510DH
7 bytes
DEFM "illega",ECH
5107H-510DH: word 23, illegal; its last character, l (6CH), is stored as ECH, with bit 7 set. Used by errors 10H, 13H, 20H, 25H.
510EH-5114H
7 bytes
DEFM "logica",ECH
510EH-5114H: word 24, logical; its last character, l (6CH), is stored as ECH, with bit 7 set. Used by error 10H.
5115H-511AH
6 bytes
DEFM "numbe",F2H
5115H-511AH: word 25, number; its last character, r (72H), is stored as F2H, with bit 7 set. Used by errors 10H, 1DH, 20H.
511BH-511EH
4 bytes
DEFM "fil",E5H
511BH-511EH: word 26, file; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 10H, 13H, 18H, 19H, 1CH, 1EH, 22H, 25H, 26H.
511FH-5124H
6 bytes
DEFM "recor",E4H
511FH-5124H: word 27, record; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 05H, 06H, 07H, 0DH, 1DH.
5125H-5127H
3 bytes
DEFM "en",E4H
5125H-5127H: word 28, end; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 1CH.
5128H-5129H
2 bytes
DEFM "o",E6H
5128H-5129H: word 29, of; its last character, f (66H), is stored as E6H, with bit 7 set. Used by errors 1CH, 1DH.
512AH-512CH
3 bytes
DEFM "ou",F4H
512AH-512CH: word 30, out; its last character, t (74H), is stored as F4H, with bit 7 set. Used by error 1DH.
512DH-5131H
5 bytes
DEFM "rang",E5H
512DH-5131H: word 31, range; its last character, e (65H), is stored as E5H, with bit 7 set. Used by error 1DH.
5132H-513CH
11 bytes
DEFM "encountere",E4H
5132H-513CH: word 32, encountered; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 1CH.
513DH-5140H
4 bytes
DEFM "cod",E5H
513DH-5140H: word 33, code; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 29H, 2AH, 2BH, 2DH.
5141H-5143H
3 bytes
DEFM "GA",D4H
5141H-5143H: word 34, GAT; its last character, T (54H), is stored as D4H, with bit 7 set. Used by errors 14H, 15H.
5144H-5146H
3 bytes
DEFM "HI",D4H
5144H-5146H: word 35, HIT; its last character, T (54H), is stored as D4H, with bit 7 set. Used by errors 16H, 17H.
5147H
1 byte
DEFB F9H
5147H: word 36, y; its only character, y (79H), is stored as F9H, with bit 7 set. No message uses it.
5148H-514EH
7 bytes
DEFM "unknow",EEH
5148H-514EH: word 37, unknown; its last character, n (6EH), is stored as EEH, with bit 7 set. Used by errors 29H, 2AH, 2BH, 2DH.
514FH-5152H
4 bytes
DEFM "loa",E4H
514FH-5152H: word 38, load; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 22H, 24H.
5153H-5157H
5 bytes
DEFM "spac",E5H
5153H-5157H: word 39, space; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 1BH, 21H.
5158H-515BH
4 bytes
DEFM "onl",F9H
5158H-515BH: word 40, only; its last character, y (79H), is stored as F9H, with bit 7 set. Used by error 24H.
515CH-515FH
4 bytes
DEFM "nam",E5H
515CH-515FH: word 41, name; its last character, e (65H), is stored as E5H, with bit 7 set. Used by error 13H.
5160H-5165H
6 bytes
DEFM "devic",E5H
5160H-5165H: word 42, device; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 08H, 21H, 27H, 28H.
5166H-516BH
6 bytes
DEFM "forma",F4H
5166H-516BH: word 43, format; its last character, t (74H), is stored as F4H, with bit 7 set. Used by error 22H.
516CH-5170H
5 bytes
DEFM "foun",E4H
516CH-5170H: word 44, found; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 05H, 0DH, 1FH.
5171H-5172H
2 bytes
DEFM "i",EEH
5171H-5172H: word 45, in; its last character, n (6EH), is stored as EEH, with bit 7 set. Used by errors 18H, 27H.
5173H-5178H
6 bytes
DEFM "acces",F3H
5173H-5178H: word 46, access; its last character, s (73H), is stored as F3H, with bit 7 set. Used by errors 19H, 25H.
5179H-517CH
4 bytes
DEFM "ful",ECH
5179H-517CH: word 47, full; its last character, l (6CH), is stored as ECH, with bit 7 set. Used by errors 1AH, 1BH, 1EH.
517DH-5181H
5 bytes
DEFM "driv",E5H
517DH-5181H: word 48, drive; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 0EH, 20H.
5182H-5187H
6 bytes
DEFM "denie",E4H
5182H-5187H: word 49, denied; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 19H.
5188H-518EH
7 bytes
DEFM "progra",EDH
5188H-518EH: word 50, program; its last character, m (6DH), is stored as EDH, with bit 7 set. Used by error 1FH.
518FH-5197H
9 bytes
DEFM "availabl",E5H
518FH-5197H: word 51, available; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 08H, 21H.
5198H-51A5H
14 bytes
DEFM "- can't exten",E4H
5198H-51A5H: word 52, - can't extend; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 1EH.
51A6H-51A9H
4 bytes
DEFM "ope",EEH
51A6H-51A9H: word 53, open; its last character, n (6EH), is stored as EEH, with bit 7 set. Used by error 26H.
51AAH-51ACH
3 bytes
DEFM "us",E5H
51AAH-51ACH: word 54, use; its last character, e (65H), is stored as E5H, with bit 7 set. Used by error 27H.
51ADH-51AEH
2 bytes
DEFM "o",F2H
51ADH-51AEH: word 55, or; its last character, r (72H), is stored as F2H, with bit 7 set. Used by error 1AH.

Self-Modified Operands

Address
Size
Contents
4F64H-4F65H
2 bytes
The operand of JP M,0000H at 4F63H: 4EB2H stores the dispatcher's return address 4BE6H here, so an error number with bit 7 set goes back through the end of the dispatcher (which puts the BREAK trap switch back) to the program.

Cells Outside the File That SYS4/SYS Uses

Address
Size
Contents
4220H-4221H
2 bytes
JDCB$, the address of the file or device control block of the latest call into the file system, stored by the file prologue of SYS0/SYS (49F9H): the block named in the second line of the full message (4F6BH).
4BCAH-4BCBH
2 bytes
JRET$, the return address of the latest call into the file system, stored by the file prologue (49F6H): less 3, the address in the referenced at line (4FFAH).
442BH
1 byte
SFLAG$, the system flags: when bit 6 is set the short message bit of the error number is cleared, so the full message is given (4EBBH-4EC2H). SYS4/SYS is the only code on this diskette that tests the bit.
4300H-43FFH
256 bytes
The system buffer of SYS0/SYS: the full or short message is built here unless bit 7 of 4758H is set; afterwards the directory sector of an open file is read into it for its name (4FB6H).
4758H
1 byte
The status byte of the command interpreter (the fifth byte of SELECT among the disk primitives of SYS0/SYS): bit 6 set, no message (4ECAH; set by no file on this diskette); bit 7 set, the short message is built at the program's Register Pair DE and not displayed, and bit 7 is cleared (4ECFH, 4F4EH; TED/CMD sets it, its 56AFH).

Disassembly

4BC8H - The Overlay Length (Data)

Every system file from SYS1/SYS to SYS12/SYS carries a load block for the two bytes 4BC8H-4BC9H in the resident area of SYS0/SYS. They hold the length of the file's part in the overlay area: for SYS4/SYS 03AFH, the 943 bytes 4E00H-51AEH. In the file this block is the last load block, after the four blocks of 4E00H-51AEH and before the transfer address record (4E00H). SYS7/SYS reads and writes the word (its 55E4H, 5692H). The two bytes are data, not instructions.

4BC8-4BC9
DEFW 03AFH AF 03
4BC8H-4BC9H: 03AFH (943), the number of bytes from 4E00H that SYS4/SYS takes up (4E00H-51AEH). Loading SYS4/SYS puts it over the length the system file loaded before it left here.

4E00H - Overlay Entry Point

The supervisor dispatcher (4BCCH) loads SYS4/SYS into 4E00H for a request code whose bits 3-0 are 6 and calls 4E00H with Register A = the request code (from OVRLY$, 4414H). The only request of SYS4/SYS that SYS0/SYS issues is 96H, from the @ERROR vector at 4409H. The first instruction jumps over the message definition table to the code at 4EAEH.

4E00
JUMP to 4EAEH, the code of @ERROR, over the message definition table at 4E03H-4EADH. Register A holds the request code, 96H for @ERROR.

4E03H - Error Message Definition Table

One run of bytes for each message, found through the index table at 505AH: the low byte of the run's address is the index entry of its error number. Each byte names a word of the dictionary at 5088H: bits 5-0 are the word number (1-55), bit 7 set marks the last word of the message, and bit 6 of the last byte says how SYS4/SYS names the file or device of the error (4F70H): clear, the control block at JDCB$ (4220H) is an open file or device and is named from it; set, the control block is read as the file specification it holds before an open (the errors of an open, a load or a file name). The messages are built word by word with a space after each word.

4E03-4E04
DEFB 01H, 82H 01 82
4E03H-4E04H: the message of error 00H (0), no error: 01H (word 1, no); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E05-4E09
DEFB 04H, 02H, 05H, 06H, 89H 04 02 05 06 89
4E05H-4E09H: the message of error 01H (1), parity error during header read: 04H (word 4, parity); 02H (word 2, error); 05H (word 5, during); 06H (word 6, header); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E0A-4E0D
DEFB 08H, 02H, 05H, 89H 08 02 05 89
4E0AH-4E0DH: the message of error 02H (2), seek error during read: 08H (word 8, seek); 02H (word 2, error); 05H (word 5, during); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E0E-4E11
DEFB 0BH, 07H, 05H, 89H 0B 07 05 89
4E0EH-4E11H: the message of error 03H (3), lost data during read: 0BH (word 11, lost); 07H (word 7, data); 05H (word 5, during); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E12-4E15
DEFB 04H, 02H, 05H, 89H 04 02 05 89
4E12H-4E15H: the message of error 04H (4), parity error during read: 04H (word 4, parity); 02H (word 2, error); 05H (word 5, during); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E16-4E1B
DEFB 07H, 1BH, 0CH, 2CH, 05H, 89H 07 1B 0C 2C 05 89
4E16H-4E1BH: the message of error 05H (5), data record not found during read: 07H (word 7, data); 1BH (word 27, record); 0CH (word 12, not); 2CH (word 44, found); 05H (word 5, during); 89H (word 9, read, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E1C-4E20
DEFB 0DH, 09H, 0FH, 07H, 9BH 0D 09 0F 07 9B
4E1CH-4E20H: the message of error 06H (6), attempted to read system data record: 0DH (word 13, attempted to); 09H (word 9, read); 0FH (word 15, system); 07H (word 7, data); 9BH (word 27, record, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E21-4E25
DEFB 0DH, 09H, 0EH, 07H, 9BH 0D 09 0E 07 9B
4E21H-4E25H: the message of error 07H (7), attempted to read locked/deleted data record: 0DH (word 13, attempted to); 09H (word 9, read); 0EH (word 14, locked/deleted); 07H (word 7, data); 9BH (word 27, record, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E26-4E28
DEFB 2AH, 0CH, F3H 2A 0C F3
4E26H-4E28H: the message of error 08H (8), device not available: 2AH (word 42, device); 0CH (word 12, not); F3H (word 51, available, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E29-4E2D
DEFB 04H, 02H, 05H, 06H, 8AH 04 02 05 06 8A
4E29H-4E2DH: the message of error 09H (9), parity error during header write: 04H (word 4, parity); 02H (word 2, error); 05H (word 5, during); 06H (word 6, header); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E2E-4E31
DEFB 08H, 02H, 05H, 8AH 08 02 05 8A
4E2EH-4E31H: the message of error 0AH (10), seek error during write: 08H (word 8, seek); 02H (word 2, error); 05H (word 5, during); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E32-4E35
DEFB 0BH, 07H, 05H, 8AH 0B 07 05 8A
4E32H-4E35H: the message of error 0BH (11), lost data during write: 0BH (word 11, lost); 07H (word 7, data); 05H (word 5, during); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E36-4E39
DEFB 04H, 02H, 05H, 8AH 04 02 05 8A
4E36H-4E39H: the message of error 0CH (12), parity error during write: 04H (word 4, parity); 02H (word 2, error); 05H (word 5, during); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E3A-4E3F
DEFB 07H, 1BH, 0CH, 2CH, 05H, 8AH 07 1B 0C 2C 05 8A
4E3AH-4E3FH: the message of error 0DH (13), data record not found during write: 07H (word 7, data); 1BH (word 27, record); 0CH (word 12, not); 2CH (word 44, found); 05H (word 5, during); 8AH (word 10, write, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E40-4E44
DEFB 0AH, 15H, 12H, 13H, B0H 0A 15 12 13 B0
4E40H-4E44H: the message of error 0EH (14), write fault on disk drive: 0AH (word 10, write); 15H (word 21, fault); 12H (word 18, on); 13H (word 19, disk); B0H (word 48, drive, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E45-4E47
DEFB 0AH, 16H, 93H 0A 16 93
4E45H-4E47H: the message of error 0FH (15), write protected disk: 0AH (word 10, write); 16H (word 22, protected); 93H (word 19, disk, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E48-4E4B
DEFB 17H, 18H, 1AH, 99H 17 18 1A 99
4E48H-4E4BH: the message of error 10H (16), illegal logical file number: 17H (word 23, illegal); 18H (word 24, logical); 1AH (word 26, file); 99H (word 25, number, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E4C-4E4E
DEFB 10H, 09H, 82H 10 09 82
4E4CH-4E4EH: the message of error 11H (17), directory read error: 10H (word 16, directory); 09H (word 9, read); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E4F-4E51
DEFB 10H, 0AH, 82H 10 0A 82
4E4FH-4E51H: the message of error 12H (18), directory write error: 10H (word 16, directory); 0AH (word 10, write); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E52-4E54
DEFB 17H, 1AH, E9H 17 1A E9
4E52H-4E54H: the message of error 13H (19), illegal file name: 17H (word 23, illegal); 1AH (word 26, file); E9H (word 41, name, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E55-4E57
DEFB 22H, 09H, 82H 22 09 82
4E55H-4E57H: the message of error 14H (20), GAT read error: 22H (word 34, GAT); 09H (word 9, read); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E58-4E5A
DEFB 22H, 0AH, 82H 22 0A 82
4E58H-4E5AH: the message of error 15H (21), GAT write error: 22H (word 34, GAT); 0AH (word 10, write); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E5B-4E5D
DEFB 23H, 09H, 82H 23 09 82
4E5BH-4E5DH: the message of error 16H (22), HIT read error: 23H (word 35, HIT); 09H (word 9, read); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E5E-4E60
DEFB 23H, 0AH, 82H 23 0A 82
4E5EH-4E60H: the message of error 17H (23), HIT write error: 23H (word 35, HIT); 0AH (word 10, write); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E61-4E64
DEFB 1AH, 0CH, 2DH, D0H 1A 0C 2D D0
4E61H-4E64H: the message of error 18H (24), file not in directory: 1AH (word 26, file); 0CH (word 12, not); 2DH (word 45, in); D0H (word 16, directory, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E65-4E67
DEFB 1AH, 2EH, F1H 1A 2E F1
4E65H-4E67H: the message of error 19H (25), file access denied: 1AH (word 26, file); 2EH (word 46, access); F1H (word 49, denied, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E68-4E6C
DEFB 2FH, 37H, 0AH, 16H, D3H 2F 37 0A 16 D3
4E68H-4E6CH: the message of error 1AH (26), full or write protected disk: 2FH (word 47, full); 37H (word 55, or); 0AH (word 10, write); 16H (word 22, protected); D3H (word 19, disk, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E6D-4E6F
DEFB 13H, 27H, AFH 13 27 AF
4E6DH-4E6FH: the message of error 1BH (27), disk space full: 13H (word 19, disk); 27H (word 39, space); AFH (word 47, full, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E70-4E73
DEFB 1CH, 1DH, 1AH, A0H 1C 1D 1A A0
4E70H-4E73H: the message of error 1CH (28), end of file encountered: 1CH (word 28, end); 1DH (word 29, of); 1AH (word 26, file); A0H (word 32, encountered, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E74-4E78
DEFB 1BH, 19H, 1EH, 1DH, 9FH 1B 19 1E 1D 9F
4E74H-4E78H: the message of error 1DH (29), record number out of range: 1BH (word 27, record); 19H (word 25, number); 1EH (word 30, out); 1DH (word 29, of); 9FH (word 31, range, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E79-4E7C
DEFB 10H, 2FH, 34H, 9AH 10 2F 34 9A
4E79H-4E7CH: the message of error 1EH (30), directory full - can't extend file: 10H (word 16, directory); 2FH (word 47, full); 34H (word 52, - can't extend); 9AH (word 26, file, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E7D-4E7F
DEFB 32H, 0CH, ECH 32 0C EC
4E7DH-4E7FH: the message of error 1FH (31), program not found: 32H (word 50, program); 0CH (word 12, not); ECH (word 44, found, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E80-4E82
DEFB 17H, 30H, D9H 17 30 D9
4E80H-4E82H: the message of error 20H (32), illegal drive number: 17H (word 23, illegal); 30H (word 48, drive); D9H (word 25, number, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E83-4E86
DEFB 01H, 2AH, 27H, F3H 01 2A 27 F3
4E83H-4E86H: the message of error 21H (33), no device space available: 01H (word 1, no); 2AH (word 42, device); 27H (word 39, space); F3H (word 51, available, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E87-4E8A
DEFB 26H, 1AH, 2BH, 82H 26 1A 2B 82
4E87H-4E8AH: the message of error 22H (34), load file format error: 26H (word 38, load); 1AH (word 26, file); 2BH (word 43, format); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E8B-4E8C
DEFB 11H, 95H 11 95
4E8BH-4E8CH: the message of error 23H (35), memory fault: 11H (word 17, memory); 95H (word 21, fault, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E8D-4E91
DEFB 0DH, 26H, 09H, 28H, 91H 0D 26 09 28 91
4E8DH-4E91H: the message of error 24H (36), attempted to load read only memory: 0DH (word 13, attempted to); 26H (word 38, load); 09H (word 9, read); 28H (word 40, only); 91H (word 17, memory, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E92-4E96
DEFB 17H, 2EH, 0DH, 16H, 9AH 17 2E 0D 16 9A
4E92H-4E96H: the message of error 25H (37), illegal access attempted to protected file: 17H (word 23, illegal); 2EH (word 46, access); 0DH (word 13, attempted to); 16H (word 22, protected); 9AH (word 26, file, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E97-4E99
DEFB 1AH, 0CH, F5H 1A 0C F5
4E97H-4E99H: the message of error 26H (38), file not open: 1AH (word 26, file); 0CH (word 12, not); F5H (word 53, open, bit 7 set: the last word). Bit 6 of the last byte set: the control block is read as a file specification, its form before an open (4F8BH).
4E9A-4E9C
DEFB 2AH, 2DH, B6H 2A 2D B6
4E9AH-4E9CH: the message of error 27H (39), device in use: 2AH (word 42, device); 2DH (word 45, in); B6H (word 54, use, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4E9D-4E9F
DEFB 16H, 0FH, AAH 16 0F AA
4E9DH-4E9FH: the message of error 28H (40), protected system device: 16H (word 22, protected); 0FH (word 15, system); AAH (word 42, device, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EA0-4EA2
DEFB 25H, 02H, A1H 25 02 A1
4EA0H-4EA2H: the message of error 29H (41), unknown error code: 25H (word 37, unknown); 02H (word 2, error); A1H (word 33, code, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EA3-4EA5
DEFB 25H, 02H, A1H 25 02 A1
4EA3H-4EA5H: the message of error 2AH (42), unknown error code: 25H (word 37, unknown); 02H (word 2, error); A1H (word 33, code, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EA6-4EA8
DEFB 25H, 02H, A1H 25 02 A1
4EA6H-4EA8H: the message of error 2BH (43), unknown error code: 25H (word 37, unknown); 02H (word 2, error); A1H (word 33, code, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EA9-4EAA
DEFB 14H, 82H 14 82
4EA9H-4EAAH: the message of error 2CH (44), parameter error: 14H (word 20, parameter); 82H (word 2, error, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.
4EAB-4EAD
DEFB 25H, 02H, A1H 25 02 A1
4EABH-4EADH: the message of error 2DH (45), unknown error code: 25H (word 37, unknown); 02H (word 2, error); A1H (word 33, code, bit 7 set: the last word). Bit 6 of the last byte clear: the file or device is named from the open control block.

4EAEH - @ERROR Service Entry, Option Decode and Display Gating

Entered from 4E00H with Register A = the request code. A program calls @ERROR (4409H) with the error number in Register A: bits 5-0 the number, bit 6 set for the short message (the text alone), bit 7 set to get control back instead of ending at @ABORT (4030H). 4409H pushes Register Pair AF and issues request 96H; the dispatcher drops the return address of the RST 28H and CALLs 4E00H, so the stack holds the dispatcher's return 4BE6H, then the program's Register Pair AF, then the program's return address. Bit 6 of SFLAG$ (442BH) clears the short message bit; bit 6 of 4758H (the command interpreter's status byte) suppresses the message; bit 7 of 4758H builds the short message in the program's buffer at Register Pair DE without displaying it.

4EAE
AND 70H E6 70
Mask Register A (the request code, 96H for @ERROR) with 70H, keeping bits 6-4, the function: 10H for request 96H.
4EB0
RET Z C8
If the Z FLAG is set (function 00H, request 86H, which no vector of SYS0/SYS issues), RETurn to the dispatcher at 4BE6H with Register A = 00H.
4EB1
EX (SP),HL E3
Exchange Register Pair HL with the word at the Stack Pointer, the top of the stack: Register Pair HL = 4BE6H, the dispatcher's return address (the instruction after its CALL at 4BE3H, which puts the BREAK trap switch 4405H back), and the program's Register Pair HL goes onto the stack.
4EB2
LD (4F64H),HL 22 64 4F
Store Register Pair HL (4BE6H, the dispatcher's return address) into 4F64H-4F65H, the operand of the JP M at 4F63H, the way back to the program when bit 7 of the error number is set.
4EB5
POP HL E1
Restore the program's Register Pair HL from the stack.
4EB6
POP AF F1
Restore the program's Register Pair AF, pushed by @ERROR at 4409H: Register A = the error number with its option bits 7 and 6. The program's return address is now on top of the stack.
4EB7
PUSH HL E5
Save the program's Register Pair HL to the stack, to be restored at 4F61H.
4EB8
PUSH DE D5
Save the program's Register Pair DE to the stack, to be restored at 4F60H.
4EB9
PUSH BC C5
Save the program's Register Pair BC to the stack, to be restored at 4F5FH.
4EBA
LD B,A 47
Copy Register A (the error number with its option bits) into Register B.
4EBB
LD A,(442BH) 3A 2B 44
Fetch SFLAG$, the system flags at 442BH, into Register A. SYS4/SYS is the only code on this diskette that tests its bit 6.
4EBE
AND 40H E6 40
Mask Register A (SFLAG$) to bit 6: Register A = 40H when bit 6 of 442BH is set, else 00H.
4EC0
XOR B A8
XOR Register A (bit 6 of 442BH) with Register B (the error number): bit 6 of the result is bit 6 of the number flipped when bit 6 of SFLAG$ is set; the other bits are those of Register B.
4EC1
AND B A0
AND Register A with Register B (the error number): every bit of the number is kept except bit 6, which stays set only when it was set in the number and bit 6 of SFLAG$ (442BH) is clear.
4EC2
LD B,A 47
Copy Register A (the error number, its bit 6 cleared when bit 6 of SFLAG$ is set) into Register B, the working copy of the options.
4EC3
PUSH AF F5
Save Register Pair AF (Register A = the error number with its options) to the stack: 4F37H, 4F57H and 4F5EH take it back.
4EC4
AND 3FH E6 3F
Mask Register A (the error number with its options) with 3FH, keeping bits 5-0, the error number 00H-3FH.
4EC6
LD C,A 4F
Copy Register A (the error number) into Register C.
4EC7
LD HL,4758H 21 58 47
Load Register Pair HL with 4758H, the status byte of the command interpreter (the fifth byte of SELECT among the disk primitives of SYS0/SYS).
4ECA
BIT 6,(HL) CB 76
Test bit 6 of 4758H at Register Pair HL. No file on this diskette sets it; when it is set the error is not reported.
4ECC
If the NZ FLAG is set (bit 6 of 4758H set), JUMP to 4F5EH to restore Register Pairs BC, DE and HL and return to the program or abort, with no message.
4ECF
BIT 7,(HL) CB 7E
Test bit 7 of 4758H at Register Pair HL. TED/CMD sets it (its 56AFH) before it calls @ERROR with its own buffer in Register Pair DE.
4ED1
If the NZ FLAG is set (bit 7 of 4758H set), JUMP to 4ED8H to force the short message, built at the program's Register Pair DE.
4ED3
LD DE,4300H 11 00 43
Load Register Pair DE with 4300H, the system buffer of SYS0/SYS, where the message is built for display.
4ED6
JUMP to 4EDEH to test the short message bit in Register B.

4ED8H - Bit 7 of 4758H: Build the Short Message for the Program

Register Pair DE still holds the program's own Register Pair DE, the buffer the program wants the text in. The short message is forced in Register B and in the error number saved on the stack, so the text is built alone and, at 4F49H, not displayed.

4ED8
SET 6,B CB F0
Set bit 6 of Register B (the error number with its options): the short message.
4EDA
POP AF F1
Restore Register Pair AF (the error number with its options, saved at 4EC3H) from the stack.
4EDB
SET 6,A CB F7
Set bit 6 of Register A (the error number with its options): the short message, so 4F3AH adds no end and 4F59H names no file.
4EDD
PUSH AF F5
Save Register Pair AF (the error number with bit 6 set) to the stack again, in the place it was taken from.
4EDE
BIT 6,B CB 70
Test bit 6 of Register B (the error number with its options): set for the short message.
4EE0
LD B,00H 06 00
Load Register B with 00H, so that Register Pair BC = the error number in Register C. LD does not change the flags.
4EE2
If the NZ FLAG is set (the short message), JUMP to 4F02H to build the text with no prefix.

4EE4H - Error Code Prefix Builder

The full message starts with a line feed, three asterisks, Error code =, the error number in two decimal digits, a comma and a space, written at Register Pair DE (4300H). Register Pair DE ends one past the space.

4EE4
PUSH BC C5
Save Register Pair BC (Register B = 00H, Register C = the error number) to the stack.
4EE5
LD HL,500DH 21 0D 50
Load Register Pair HL with 500DH, the template of the prefix: a line feed, three asterisks and Error code =.
4EE8
LD C,11H 0E 11
Load Register C with 11H (17), the length of the prefix 500DH-501DH; Register B is 00H, so Register Pair BC = 0011H.
4EEA
LDIR ED B0
Copy the 17 bytes at Register Pair HL (500DH) to Register Pair DE (4300H), counting Register Pair BC down to 0000H: Register Pair DE ends at 4311H, Register Pair HL at 501EH.
4EEC
POP BC C1
Restore Register Pair BC (Register B = 00H, Register C = the error number) from the stack.
4EED
EX DE,HL EB
Exchange Register Pairs DE and HL: Register Pair HL = 4311H, the place for the digits, and Register Pair DE = 501EH.
4EEE
LD C,A 4F
Copy Register A (the error number 00H-3FH, unchanged since 4EC4H) into Register C.
4EEF
LD (HL),2FH 36 2F
Store 2FH, the character before 0 (30H), at Register Pair HL (4311H): the tens digit starts one below 0.
4EF1
INC (HL) 34
Increment the tens digit at Register Pair HL by one.
4EF2
SUB 0AH D6 0A
Subtract 0AH (10) from Register A (what is left of the error number).
4EF4
If the NC FLAG is set (no borrow: Register A was 10 or more), LOOP BACK to 4EF1H. On the borrow Register A = the units less 10 and the byte at Register Pair HL is the tens digit, 0-6.
4EF6
INC L 2C
Increment Register L: Register Pair HL = 4312H, the place for the units digit.
4EF7
ADD A,3AH C6 3A
ADD 3AH to Register A (the units less 10): 30H-39H, the units digit.
4EF9
LD (HL),A 77
Store Register A (the units digit) at Register Pair HL (4312H).
4EFA
INC L 2C
Increment Register L: Register Pair HL = 4313H.
4EFB
LD (HL),2CH 36 2C
Store 2CH, a comma, at Register Pair HL (4313H), after the two digits.
4EFD
INC L 2C
Increment Register L: Register Pair HL = 4314H.
4EFE
LD (HL),20H 36 20
Store 20H, a space, at Register Pair HL (4314H).
4F00
INC L 2C
Increment Register L: Register Pair HL = 4315H, where the text of the message starts.
4F01
EX DE,HL EB
Exchange Register Pairs DE and HL: Register Pair DE = 4315H, the place for the message, and Register Pair HL = 501EH.

4F02H - Message Decompression Loop

Register C = the error number, Register B = 00H, Register Pair DE = where the text goes (4300H, 4315H or the program's buffer). The number picks a run of the definition table through the index table at 505AH; each byte of the run names a word of the dictionary at 5088H, which is copied with bit 7 of its last character cleared and a space after it, until the byte with bit 7 set.

4F02
LD A,2DH 3E 2D
Load Register A with 2DH (45), the highest error number that has its own entry in the index table at 505AH.
4F04
CP C B9
Compare Register A (2DH) against Register C (the error number): the NC FLAG is set when the number is 2DH or less.
4F05
PUSH DE D5
Save Register Pair DE (where the text of the message starts) to the stack, for 4F33H to capitalize its first letter.
4F06
If the NC FLAG is set (the error number is 2DH or less), JUMP to 4F09H with Register C unchanged.
4F08
LD C,A 4F
Copy Register A (2DH) into Register C: an error number above 2DH gets the message of 2DH, unknown error code. The prefix keeps the number as it was given.
4F09
LD HL,505AH 21 5A 50
Load Register Pair HL with 505AH, the index table, one byte for each error number.
4F0C
ADD HL,BC 09
ADD Register Pair BC (Register B = 00H, Register C = the error number) to Register Pair HL: Register Pair HL = the index byte of the error.
4F0D
LD L,(HL) 6E
Fetch the index byte at Register Pair HL into Register L: the low byte of the address of the error's definition.
4F0E
LD H,4EH 26 4E
Load Register H with 4EH: Register Pair HL = 4E00H + the index byte, the error's definition in the table at 4E03H-4EADH.
4F10
LD A,(HL) 7E
Fetch the definition byte at Register Pair HL into Register A: bits 5-0 the word number, bit 7 set on the last word.
4F11
AND 3FH E6 3F
Mask Register A (the definition byte) with 3FH, keeping bits 5-0, the word number.
4F13
LD B,A 47
Copy Register A (the word number) into Register B, the count of word ends to skip.
4F14
PUSH HL E5
Save Register Pair HL (the definition byte) to the stack.
4F15
LD HL,5088H 21 88 50
Load Register Pair HL with 5088H, the first word of the dictionary.
4F18
LD A,(HL) 7E
Fetch the dictionary byte at Register Pair HL into Register A.
4F19
RLCA 07
Rotate Register A left: bit 7 of the dictionary byte goes into the CARRY FLAG, set on the last character of a word.
4F1A
INC HL 23
Increment Register Pair HL to the next dictionary byte. INC of a register pair does not change the flags.
4F1B
If the NC FLAG is set (not the last character of a word), LOOP BACK to 4F18H.
4F1D
DEC B 05
Decrement Register B, the count of word ends still to skip.
4F1E
If the NZ FLAG is set (more words to skip), LOOP BACK to 4F18H. Register Pair HL is now at the first character of word number Register B (the word number of 4F13H).
4F20
LD A,(HL) 7E
Fetch the character at Register Pair HL into Register A.
4F21
RLCA 07
Rotate Register A left: bit 7 of the character goes into bit 0 (and the CARRY FLAG).
4F22
SRL A CB 3F
Shift Register A right: the character comes back with bit 7 clear, and its old bit 7 goes into the CARRY FLAG, set on the last character of the word.
4F24
LD (DE),A 12
Store Register A (the character) at Register Pair DE, the message being built.
4F25
INC HL 23
Increment Register Pair HL to the next character of the word. The flags are kept.
4F26
INC DE 13
Increment Register Pair DE to the next place in the message. The flags are kept.
4F27
If the NC FLAG is set (not the last character), LOOP BACK to 4F20H.
4F29
LD A,20H 3E 20
Load Register A with 20H, the space that follows every word of the message.
4F2B
LD (DE),A 12
Store Register A (the space) at Register Pair DE, after the word.
4F2C
INC DE 13
Increment Register Pair DE to the next place in the message.
4F2D
POP HL E1
Restore Register Pair HL (the definition byte just used) from the stack.
4F2E
LD A,(HL) 7E
Fetch the definition byte at Register Pair HL into Register A again.
4F2F
INC HL 23
Increment Register Pair HL to the next definition byte. The flags are kept.
4F30
RLCA 07
Rotate Register A left: bit 7 of the definition byte goes into the CARRY FLAG, set on the last word of the message.
4F31
If the NC FLAG is set (more words), LOOP BACK to 4F10H to copy the word named by the definition byte at Register Pair HL. Otherwise Register Pair HL is one past the last definition byte.

4F33H - Frame and Display the Message

Register Pair DE = one past the space after the last word, Register Pair HL = one past the last definition byte, and the start of the text is on top of the stack. The first letter is made a capital, the full message gets three asterisks at its end, a carriage return ends the text, and the text at 4300H is displayed and logged unless bit 7 of 4758H was set. For the full message the file or device and the address of the call are shown next (4F69H).

4F33
EX (SP),HL E3
Exchange Register Pair HL with the word at the Stack Pointer, the top of the stack: Register Pair HL = the start of the text (saved at 4F05H), and the address one past the last definition byte goes onto the stack.
4F34
RES 5,(HL) CB AE
Reset bit 5 of the first character of the text at Register Pair HL: a small letter becomes a capital (no error becomes No error); a capital stays as it is.
4F36
POP HL E1
Restore Register Pair HL from the stack: the address one past the last definition byte.
4F37
POP AF F1
Restore Register Pair AF (the error number with its options) from the stack.
4F38
PUSH AF F5
Save Register Pair AF (the error number with its options) to the stack again.
4F39
PUSH HL E5
Save Register Pair HL (one past the last definition byte) to the stack, for 4F69H.
4F3A
BIT 6,A CB 77
Test bit 6 of Register A (the error number with its options): set for the short message.
4F3C
If the NZ FLAG is set (the short message), JUMP to 4F46H: no asterisks at the end.
4F3E
LD HL,500EH 21 0E 50
Load Register Pair HL with 500EH, the three asterisks of the template.
4F41
LD BC,0003H 01 03 00
Load Register Pair BC with 0003H, the three bytes to copy.
4F44
LDIR ED B0
Copy the three bytes at Register Pair HL (500EH) to Register Pair DE, after the space after the last word, counting Register Pair BC down to 0000H. Register Pair DE ends one past them.
4F46
LD A,0DH 3E 0D
Load Register A with 0DH, the carriage return that ends the text of the message.
4F48
LD (DE),A 12
Store Register A (the carriage return) at Register Pair DE, the end of the text.
4F49
LD HL,4758H 21 58 47
Load Register Pair HL with 4758H, the status byte of the command interpreter.
4F4C
BIT 7,(HL) CB 7E
Test bit 7 of 4758H at Register Pair HL: set when the program wants the text in its own buffer and not displayed.
4F4E
RES 7,(HL) CB BE
Reset bit 7 of 4758H at Register Pair HL, so that the next error is displayed. RES does not change the flags.
4F50
LD HL,4300H 21 00 43
Load Register Pair HL with 4300H, the buffer where the text was built when bit 7 of 4758H was clear. LD does not change the flags.
4F53
If the Z FLAG is set (bit 7 of 4758H was clear), GOSUB to 428AH (@LOGOT) to display the text at Register Pair HL (4300H) and send it to the job log.
4F56
POP HL E1
Restore Register Pair HL (one past the last definition byte) from the stack.
4F57
POP AF F1
Restore Register Pair AF (the error number with its options) from the stack.
4F58
PUSH AF F5
Save Register Pair AF (the error number with its options) to the stack again, for 4F5EH.
4F59
BIT 6,A CB 77
Test bit 6 of Register A (the error number with its options): set for the short message.
4F5B
If the Z FLAG is set (the full message), GOSUB to 4F69H to display the file or device line and the referenced at line, with Register Pair HL one past the last definition byte.

4F5EH - Return to the Program or Abort

The stack holds the error number saved at 4EC3H, the program's Register Pairs BC, DE and HL, and the program's return address. Bit 7 of the error number decides: set, back to the program through the dispatcher's end (4BE6H, which puts the BREAK trap switch back); clear, the program ends at @ABORT.

4F5E
POP AF F1
Restore Register Pair AF from the stack: Register A = the error number with its options (bit 6 as adjusted at 4EC1H or 4EDBH).
4F5F
POP BC C1
Restore the program's Register Pair BC from the stack.
4F60
POP DE D1
Restore the program's Register Pair DE from the stack.
4F61
POP HL E1
Restore the program's Register Pair HL from the stack.
4F62
OR A B7
OR Register A (the error number with its options) with itself: the S FLAG is set when bit 7 (return to the program) is set.
4F63
If the S FLAG is set (Minus: bit 7 of the error number), JUMP to the address stored at 4F64H-4F65H by 4EB2H, the dispatcher's 4BE6H (0000H in the file), which puts the BREAK trap switch back and RETurns to the program with Register A = the error number.
4F66
JUMP to 4030H, @ABORT, to end the program: request 93H, the LDOS Ready command loop of SYS1/SYS.

4F69H - Device or File Specification Builder

Called from 4F5BH for the full message, with Register Pair HL one past the last definition byte. Index Register IX = JDCB$ (4220H), the control block the file prologue of SYS0/SYS (49F9H) noted for the latest file call. Bit 6 of the last definition byte picks the source of the name: clear, an open control block (an open file is named from its directory record, 4FB0H; an open device from its +06H-+07H); set, the block is read as the file specification it holds before an open (4F8BH). The line is displayed and the referenced at line follows (4FF7H).

4F69
PUSH IX DD E5
Save the caller's Index Register IX to the stack.
4F6B
LD IX,(4220H) DD 2A 20 42
Load Index Register IX with the word at 4220H-4221H, JDCB$: the address of the file or device control block of the latest call into the file system.
4F6F
DEC HL 2B
Decrement Register Pair HL: Register Pair HL = the last byte of the error's definition.
4F70
BIT 6,(HL) CB 76
Test bit 6 of the last definition byte at Register Pair HL: set for the errors 08H, 13H, 18H, 19H, 1AH, 1FH, 20H, 21H and 26H, whose control block is read as a file specification.
4F72
If the NZ FLAG is set (bit 6 set), JUMP to 4F8BH to name the file or device from the specification in the control block.
4F74
LD C,(IX+06H) DD 4E 06
Load Register C with byte +06H of the control block at Index Register IX: the drive of an open file, or the first letter of an open device's name.
4F77
LD B,(IX+07H) DD 46 07
Load Register B with byte +07H of the control block at Index Register IX: the directory record number of an open file, or the second letter of an open device's name.
4F7A
BIT 7,(IX+00H) DD CB 00 7E
Test bit 7 of byte +00H of the control block at Index Register IX: set for an open file.
4F7E
If the NZ FLAG is set (an open file), JUMP to 4FB0H to name the file from its directory record (drive Register C, record Register B).
4F80
POP IX DD E1
Restore the caller's Index Register IX from the stack.
4F82
LD (5028H),BC ED 43 28 50
Store Register Pair BC (Register C = the first letter of the device name, Register B = the second) into 5028H-5029H, the XX of the device line.
4F86
LD HL,501EH 21 1E 50
Load Register Pair HL with 501EH, the device line: a space, Device= in angle brackets, the 2AH (the asterisk) and the two letters, then a carriage return.
4F89
JUMP to 4FF7H to display the device line at Register Pair HL and then the referenced at line.

4F8BH - The Control Block as a File Specification

Before an open the control block holds the file specification as typed, ended by 03H or 0DH; a device specification starts with 2AH (the asterisk) and the two letters of the name. Index Register IX = the control block; the caller's Index Register IX is on the stack.

4F8B
LD C,(IX+01H) DD 4E 01
Load Register C with byte +01H of the control block at Index Register IX: the first letter of a device name when byte +00H is 2AH.
4F8E
LD B,(IX+02H) DD 46 02
Load Register B with byte +02H of the control block at Index Register IX: the second letter of a device name when byte +00H is 2AH.
4F91
LD A,(IX+00H) DD 7E 00
Load Register A with byte +00H of the control block at Index Register IX: the first character of the specification.
4F94
CP 2AH FE 2A
Compare Register A (the first character) against 2AH, the asterisk that starts a device specification.
4F96
If the Z FLAG is set (a device specification), JUMP to 4F80H to show the device line with the name in Register Pair BC.
4F98
PUSH IX DD E5
Save Index Register IX (the control block) to the stack.
4F9A
POP HL E1
Restore Register Pair HL from the stack: Register Pair HL = the control block, the file specification.
4F9B
LD DE,5033H 11 33 50
Load Register Pair DE with 5033H, the place for the specification in the file line, after File=.
4F9E
LD B,18H 06 18
Load Register B with 18H (24), the most characters copied.
4FA0
LD A,(HL) 7E
Fetch the character of the specification at Register Pair HL into Register A.
4FA1
CP 03H FE 03
Compare Register A (the character) against 03H, an end of the specification.
4FA3
If the Z FLAG is set (03H), JUMP to 4FEBH to close the file line.
4FA5
CP 0DH FE 0D
Compare Register A (the character) against 0DH, the other end of the specification.
4FA7
If the Z FLAG is set (0DH), JUMP to 4FEBH to close the file line.
4FA9
INC HL 23
Increment Register Pair HL to the next character of the specification.
4FAA
LD (DE),A 12
Store Register A (the character) at Register Pair DE in the file line. A specification of more than 16 characters runs past 5042H into the referenced at line at 5043H.
4FAB
INC DE 13
Increment Register Pair DE to the next place in the file line.
4FAC
Decrement Register B (the characters left of 24) and LOOP BACK to 4FA0H until it reaches 0.
4FAE
JUMP to 4FEBH to close the file line after 24 characters.

4FB0H - An Open File: the Name From Its Directory Record

Index Register IX = the control block of an open file: +06H the drive, +07H the number of its directory record. The record is read into 4300H (the message has already been displayed from there) and the name and the extension are copied from it, then a colon and the drive digit.

4FB0
LD C,(IX+06H) DD 4E 06
Load Register C with byte +06H of the control block at Index Register IX: the drive the file is on.
4FB3
LD B,(IX+07H) DD 46 07
Load Register B with byte +07H of the control block at Index Register IX: the number of the file's directory record.
4FB6
GOSUB to 4B10H (DIRRD) to read the directory sector holding record Register B of drive Register C into 4300H: Register Pair HL = the record. The flags are not tested.
4FB9
LD BC,0005H 01 05 00
Load Register Pair BC with 0005H, the offset of the file name in a directory record.
4FBC
ADD HL,BC 09
ADD Register Pair BC (0005H) to Register Pair HL: Register Pair HL = the record's +05H, the eight characters of the name.
4FBD
LD DE,5033H 11 33 50
Load Register Pair DE with 5033H, the place for the name in the file line, after File=.
4FC0
LD B,08H 06 08
Load Register B with 08H, the most characters of a name.
4FC2
LD A,(HL) 7E
Fetch the character of the name at Register Pair HL into Register A.
4FC3
CP 20H FE 20
Compare Register A (the character) against 20H, the space that pads a name shorter than 8 characters.
4FC5
If the Z FLAG is set (a space: the name ended), JUMP to 4FCCH with Register B = the characters not copied.
4FC7
INC L 2C
Increment Register L to the next character of the record: a record lies inside the sector at 4300H, so Register H does not change.
4FC8
LD (DE),A 12
Store Register A (the character) at Register Pair DE in the file line.
4FC9
INC DE 13
Increment Register Pair DE to the next place in the file line.
4FCA
Decrement Register B (the characters left of 8) and LOOP BACK to 4FC2H until it reaches 0.
4FCC
LD A,2FH 3E 2F
Load Register A with 2FH, the slash between the name and the extension.
4FCE
LD (DE),A 12
Store Register A (the slash) at Register Pair DE, after the name. It is written even when the extension is blank.
4FCF
INC DE 13
Increment Register Pair DE to the next place in the file line.
4FD0
LD C,B 48
Copy Register B (the characters of the name not copied, 0-7) into Register C.
4FD1
LD B,00H 06 00
Load Register B with 00H: Register Pair BC = the characters not copied.
4FD3
ADD HL,BC 09
ADD Register Pair BC to Register Pair HL: Register Pair HL = the record's +0DH, the three characters of the extension.
4FD4
LD B,03H 06 03
Load Register B with 03H, the most characters of an extension.
4FD6
LD A,(HL) 7E
Fetch the character of the extension at Register Pair HL into Register A.
4FD7
INC L 2C
Increment Register L to the next character of the record. INC L changes the Z FLAG, which the CP below sets again.
4FD8
CP 20H FE 20
Compare Register A (the character) against 20H, the space that pads an extension.
4FDA
If the Z FLAG is set (a space: the extension ended), JUMP to 4FE0H.
4FDC
LD (DE),A 12
Store Register A (the character) at Register Pair DE in the file line.
4FDD
INC DE 13
Increment Register Pair DE to the next place in the file line.
4FDE
Decrement Register B (the characters left of 3) and LOOP BACK to 4FD6H until it reaches 0.
4FE0
LD A,3AH 3E 3A
Load Register A with 3AH, the colon between the extension and the drive digit.
4FE2
LD (DE),A 12
Store Register A (the colon) at Register Pair DE, before the drive number.
4FE3
INC DE 13
Increment Register Pair DE to the next place in the file line.
4FE4
LD A,(IX+06H) DD 7E 06
Load Register A with byte +06H of the control block at Index Register IX: the drive, 0-7.
4FE7
ADD A,30H C6 30
ADD 30H to Register A (the drive): the digit 0-7.
4FE9
LD (DE),A 12
Store Register A (the drive digit) at Register Pair DE in the file line.
4FEA
INC DE 13
Increment Register Pair DE to the next place in the file line.
4FEB
LD A,3EH 3E 3E
Load Register A with 3EH, a closing angle bracket.
4FED
LD (DE),A 12
Store Register A (the closing angle bracket) at Register Pair DE, after the specification.
4FEE
INC DE 13
Increment Register Pair DE to the next place in the file line.
4FEF
LD A,0DH 3E 0D
Load Register A with 0DH, the carriage return that ends the file line.
4FF1
LD (DE),A 12
Store Register A (the carriage return) at Register Pair DE, the end of the file line.
4FF2
POP IX DD E1
Restore the caller's Index Register IX from the stack.
4FF4
LD HL,502CH 21 2C 50
Load Register Pair HL with 502CH, the file line: a space, File= after an angle bracket, the specification, the closing angle bracket and the carriage return.

4FF7H - Display the Name and the Referenced At Line

Register Pair HL = the device line (501EH) or the file line (502CH). After it the referenced at line gives, as four hex digits, the address of the program's CALL into the file system: JRET$ (4BCAH), the return address the file prologue noted, less 3.

4FF7
GOSUB to 428AH (@LOGOT) to display the line at Register Pair HL (ended by its carriage return) and send it to the job log.
4FFA
LD DE,(4BCAH) ED 5B CA 4B
Load Register Pair DE with the word at 4BCAH-4BCBH, JRET$: the return address of the program's latest call into the file system, noted by the file prologue (49F6H).
4FFE
DEC DE 1B
Decrement Register Pair DE (the return address) by one.
4FFF
DEC DE 1B
Decrement Register Pair DE (the return address less 1) by one more.
5000
DEC DE 1B
Decrement Register Pair DE by one more: Register Pair DE = the return address less 3, the address of the CALL instruction itself.
5001
LD HL,5054H 21 54 50
Load Register Pair HL with 5054H, the four NNNN of the referenced at line.
5004
GOSUB to 4D82H to write Register Pair DE (the address of the CALL) as four hex digits at Register Pair HL (5054H-5057H).
5007
LD HL,5043H 21 43 50
Load Register Pair HL with 5043H, the referenced at line: Referenced at X, the four digits in apostrophes and a carriage return.
500A
JUMP to 428AH (@LOGOT) to display the line at Register Pair HL and send it to the job log; its RETurn goes back to 4F5EH.

500DH - Message Template Literals

The fixed parts of the messages, copied or displayed from here: the prefix of the full message (500DH-501DH, its 2AH 2AH 2AH also used as the suffix at 500EH), the device line (501EH-502BH), the file line (502CH-5042H) and the referenced at line (5043H-5059H). The letters X, N, E and D are placeholders that 4F82H, 4F98H-4FF1H and 5004H overwrite before the line is displayed.

500D
DEFB 0AH 0A
500DH: 0AH, the line feed that starts the full message on a new line, the first of the 17 bytes 4EE5H-4EEAH copy to the buffer.
500E-5010
DEFM "***" 2A 2A 2A
500EH-5010H: three asterisks (2AH 2AH 2AH), the start of the full message, and the three bytes 4F3EH-4F44H copy after its last word as its end.
5011-501D
DEFM " Error code =" 20 45 72 72 6F 72 20 63 6F 64 65 20 3D
5011H-501DH: the text Error code = with a space before it; 4EEFH-4EFAH write the two decimal digits of the error number right after the equal sign.
501E-5027
DEFM " <Device=*" 20 3C 44 65 76 69 63 65 3D 2A
501EH-5027H: a space, the text Device= in angle brackets as far as the 2AH (the asterisk) of the device specification, displayed from 501EH by 4F86H-4F89H.
5028-5029
DEFM "XX" 58 58
5028H-5029H: the two letters of the device name, placeholders that 4F82H overwrites with Register Pair BC (the name from the control block) before the line is shown.
502A
DEFM ">" 3E
502AH: the closing angle bracket of the device line, after the two letters of the device name at 5028H-5029H.
502B
DEFB 0DH 0D
502BH: 0DH, the carriage return that ends the device line; @LOGOT (428AH) displays it and stops there.
502C-5032
DEFM " <File=" 20 3C 46 69 6C 65 3D
502CH-5032H: a space and the text File= after an angle bracket, the start of the file line displayed from 502CH by 4FF4H-4FF7H.
5033-503A
DEFM "NNNNNNNN" 4E 4E 4E 4E 4E 4E 4E 4E
5033H-503AH: placeholders for the file name. 4FB0H-4FCAH write the name from the directory record here, and 4F98H-4FACH copy the file specification held in the control block.
503B
DEFM "/" 2F
503BH: the slash between the name and the extension in the template. 4FCCH writes its own slash after the name it copied, so this byte is overwritten.
503C-503E
DEFM "EEE" 45 45 45
503CH-503EH: placeholders for the file's extension, overwritten by the extension and the rest of the file specification written from 5033H.
503F
DEFM ":" 3A
503FH: the colon before the drive number in the template, overwritten by the specification 4F98H-4FF1H write from 5033H.
5040
DEFM "D" 44
5040H: a placeholder for the drive number, overwritten by the specification 4F98H-4FF1H write from 5033H.
5041
DEFM ">" 3E
5041H: the closing angle bracket of the template; 4FEBH-4FEDH write their own after the specification, wherever it ends.
5042
DEFB 0DH 0D
5042H: 0DH, the carriage return of the template; 4FEFH-4FF1H write their own after the closing angle bracket.
5043-5053
DEFM " Referenced at X'" 20 52 65 66 65 72 65 6E 63 65 64 20 61 74 20 58 27
5043H-5053H: a space, the text Referenced at and X with an apostrophe, the start of the line that 5007H-500AH display: the address the error was reported from.
5054-5057
DEFM "NNNN" 4E 4E 4E 4E
5054H-5057H: placeholders for four hex digits, overwritten by 5001H-5004H (4D82H of SYS0/SYS) with the address of the program's call into the file system.
5058
DEFM "'" 27
5058H: the apostrophe that closes the hex address X'NNNN' of the referenced at line.
5059
DEFB 0DH 0D
5059H: 0DH, the carriage return that ends the referenced at line and the whole message.

505AH - Error Code Index Table

One byte for each error number 00H-2DH (0-45): the low byte of the address of the error's run in the definition table, whose high byte is 4EH (4F09H-4F0EH). A larger error number is taken as 2DH (4F02H-4F08H). The errors 29H, 2AH, 2BH and 2DH have no message of their own: their bytes point at runs that make unknown error code.

505A
DEFB 03H 03
505AH, error 00H (0): 03H, the definition at 4E03H (4E00H + 03H): no error.
505B
DEFB 05H 05
505BH, error 01H (1): 05H, the definition at 4E05H (4E00H + 05H): parity error during header read.
505C
DEFB 0AH 0A
505CH, error 02H (2): 0AH, the definition at 4E0AH (4E00H + 0AH): seek error during read.
505D
DEFB 0EH 0E
505DH, error 03H (3): 0EH, the definition at 4E0EH (4E00H + 0EH): lost data during read.
505E
DEFB 12H 12
505EH, error 04H (4): 12H, the definition at 4E12H (4E00H + 12H): parity error during read.
505F
DEFB 16H 16
505FH, error 05H (5): 16H, the definition at 4E16H (4E00H + 16H): data record not found during read.
5060
DEFB 1CH 1C
5060H, error 06H (6): 1CH, the definition at 4E1CH (4E00H + 1CH): attempted to read system data record.
5061
DEFB 21H 21
5061H, error 07H (7): 21H, the definition at 4E21H (4E00H + 21H): attempted to read locked/deleted data record.
5062
DEFB 26H 26
5062H, error 08H (8): 26H, the definition at 4E26H (4E00H + 26H): device not available.
5063
DEFB 29H 29
5063H, error 09H (9): 29H, the definition at 4E29H (4E00H + 29H): parity error during header write.
5064
DEFB 2EH 2E
5064H, error 0AH (10): 2EH, the definition at 4E2EH (4E00H + 2EH): seek error during write.
5065
DEFB 32H 32
5065H, error 0BH (11): 32H, the definition at 4E32H (4E00H + 32H): lost data during write.
5066
DEFB 36H 36
5066H, error 0CH (12): 36H, the definition at 4E36H (4E00H + 36H): parity error during write.
5067
DEFB 3AH 3A
5067H, error 0DH (13): 3AH, the definition at 4E3AH (4E00H + 3AH): data record not found during write.
5068
DEFB 40H 40
5068H, error 0EH (14): 40H, the definition at 4E40H (4E00H + 40H): write fault on disk drive.
5069
DEFB 45H 45
5069H, error 0FH (15): 45H, the definition at 4E45H (4E00H + 45H): write protected disk.
506A
DEFB 48H 48
506AH, error 10H (16): 48H, the definition at 4E48H (4E00H + 48H): illegal logical file number.
506B
DEFB 4CH 4C
506BH, error 11H (17): 4CH, the definition at 4E4CH (4E00H + 4CH): directory read error.
506C
DEFB 4FH 4F
506CH, error 12H (18): 4FH, the definition at 4E4FH (4E00H + 4FH): directory write error.
506D
DEFB 52H 52
506DH, error 13H (19): 52H, the definition at 4E52H (4E00H + 52H): illegal file name.
506E
DEFB 55H 55
506EH, error 14H (20): 55H, the definition at 4E55H (4E00H + 55H): GAT read error.
506F
DEFB 58H 58
506FH, error 15H (21): 58H, the definition at 4E58H (4E00H + 58H): GAT write error.
5070
DEFB 5BH 5B
5070H, error 16H (22): 5BH, the definition at 4E5BH (4E00H + 5BH): HIT read error.
5071
DEFB 5EH 5E
5071H, error 17H (23): 5EH, the definition at 4E5EH (4E00H + 5EH): HIT write error.
5072
DEFB 61H 61
5072H, error 18H (24): 61H, the definition at 4E61H (4E00H + 61H): file not in directory.
5073
DEFB 65H 65
5073H, error 19H (25): 65H, the definition at 4E65H (4E00H + 65H): file access denied.
5074
DEFB 68H 68
5074H, error 1AH (26): 68H, the definition at 4E68H (4E00H + 68H): full or write protected disk.
5075
DEFB 6DH 6D
5075H, error 1BH (27): 6DH, the definition at 4E6DH (4E00H + 6DH): disk space full.
5076
DEFB 70H 70
5076H, error 1CH (28): 70H, the definition at 4E70H (4E00H + 70H): end of file encountered.
5077
DEFB 74H 74
5077H, error 1DH (29): 74H, the definition at 4E74H (4E00H + 74H): record number out of range.
5078
DEFB 79H 79
5078H, error 1EH (30): 79H, the definition at 4E79H (4E00H + 79H): directory full - can't extend file.
5079
DEFB 7DH 7D
5079H, error 1FH (31): 7DH, the definition at 4E7DH (4E00H + 7DH): program not found.
507A
DEFB 80H 80
507AH, error 20H (32): 80H, the definition at 4E80H (4E00H + 80H): illegal drive number.
507B
DEFB 83H 83
507BH, error 21H (33): 83H, the definition at 4E83H (4E00H + 83H): no device space available.
507C
DEFB 87H 87
507CH, error 22H (34): 87H, the definition at 4E87H (4E00H + 87H): load file format error.
507D
DEFB 8BH 8B
507DH, error 23H (35): 8BH, the definition at 4E8BH (4E00H + 8BH): memory fault.
507E
DEFB 8DH 8D
507EH, error 24H (36): 8DH, the definition at 4E8DH (4E00H + 8DH): attempted to load read only memory.
507F
DEFB 92H 92
507FH, error 25H (37): 92H, the definition at 4E92H (4E00H + 92H): illegal access attempted to protected file.
5080
DEFB 97H 97
5080H, error 26H (38): 97H, the definition at 4E97H (4E00H + 97H): file not open.
5081
DEFB 9AH 9A
5081H, error 27H (39): 9AH, the definition at 4E9AH (4E00H + 9AH): device in use.
5082
DEFB 9DH 9D
5082H, error 28H (40): 9DH, the definition at 4E9DH (4E00H + 9DH): protected system device.
5083
DEFB A0H A0
5083H, error 29H (41): A0H, the definition at 4EA0H (4E00H + A0H): unknown error code.
5084
DEFB A3H A3
5084H, error 2AH (42): A3H, the definition at 4EA3H (4E00H + A3H): unknown error code.
5085
DEFB A6H A6
5085H, error 2BH (43): A6H, the definition at 4EA6H (4E00H + A6H): unknown error code.
5086
DEFB A9H A9
5086H, error 2CH (44): A9H, the definition at 4EA9H (4E00H + A9H): parameter error.
5087
DEFB ABH AB
5087H, error 2DH (45): ABH, the definition at 4EABH (4E00H + ABH): unknown error code.

5088H - Compressed Word Dictionary

56 words, each stored once, its last character with bit 7 set (4F18H-4F27H: RLCA moves bit 7 into the CARRY FLAG). Word n is found by skipping n word ends from 5088H, so the first word, number 0, is never reached: a definition byte with word number 0 would skip 256. The words 3 (o) and 36 (y) are used by no message either. The block of the file ends at 50FFH and the last block, 5100H-51AEH, continues the word protected.

5088
DEFB D2H D2
5088H: word 0, R; its only character, R (52H), is stored as D2H, with bit 7 set. Not used: the search at 4F15H-4F1EH skips at least one word end, so it never stops on the first word.
5089-508A
DEFM "n",EFH 6E EF
5089H-508AH: word 1, no; its last character, o (6FH), is stored as EFH, with bit 7 set. Used by errors 00H, 21H.
508B-508F
DEFM "erro",F2H 65 72 72 6F F2
508BH-508FH: word 2, error; its last character, r (72H), is stored as F2H, with bit 7 set. Used by errors 00H, 01H, 02H, 04H, 09H, 0AH, 0CH, 11H, 12H, 14H, 15H, 16H, 17H, 22H, 29H, 2AH, 2BH, 2CH, 2DH.
5090
DEFB EFH EF
5090H: word 3, o; its only character, o (6FH), is stored as EFH, with bit 7 set. No message uses it.
5091-5096
DEFM "parit",F9H 70 61 72 69 74 F9
5091H-5096H: word 4, parity; its last character, y (79H), is stored as F9H, with bit 7 set. Used by errors 01H, 04H, 09H, 0CH.
5097-509C
DEFM "durin",E7H 64 75 72 69 6E E7
5097H-509CH: word 5, during; its last character, g (67H), is stored as E7H, with bit 7 set. Used by errors 01H, 02H, 03H, 04H, 05H, 09H, 0AH, 0BH, 0CH, 0DH.
509D-50A2
DEFM "heade",F2H 68 65 61 64 65 F2
509DH-50A2H: word 6, header; its last character, r (72H), is stored as F2H, with bit 7 set. Used by errors 01H, 09H.
50A3-50A6
DEFM "dat",E1H 64 61 74 E1
50A3H-50A6H: word 7, data; its last character, a (61H), is stored as E1H, with bit 7 set. Used by errors 03H, 05H, 06H, 07H, 0BH, 0DH.
50A7-50AA
DEFM "see",EBH 73 65 65 EB
50A7H-50AAH: word 8, seek; its last character, k (6BH), is stored as EBH, with bit 7 set. Used by errors 02H, 0AH.
50AB-50AE
DEFM "rea",E4H 72 65 61 E4
50ABH-50AEH: word 9, read; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 01H, 02H, 03H, 04H, 05H, 06H, 07H, 11H, 14H, 16H, 24H.
50AF-50B3
DEFM "writ",E5H 77 72 69 74 E5
50AFH-50B3H: word 10, write; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 09H, 0AH, 0BH, 0CH, 0DH, 0EH, 0FH, 12H, 15H, 17H, 1AH.
50B4-50B7
DEFM "los",F4H 6C 6F 73 F4
50B4H-50B7H: word 11, lost; its last character, t (74H), is stored as F4H, with bit 7 set. Used by errors 03H, 0BH.
50B8-50BA
DEFM "no",F4H 6E 6F F4
50B8H-50BAH: word 12, not; its last character, t (74H), is stored as F4H, with bit 7 set. Used by errors 05H, 08H, 0DH, 18H, 1FH, 26H.
50BB-50C6
DEFM "attempted t",EFH 61 74 74 65 6D 70 74 65 64 20 74 EF
50BBH-50C6H: word 13, attempted to; its last character, o (6FH), is stored as EFH, with bit 7 set. Used by errors 06H, 07H, 24H, 25H.
50C7-50D4
DEFM "locked/delete",E4H 6C 6F 63 6B 65 64 2F 64 65 6C 65 74 65 E4
50C7H-50D4H: word 14, locked/deleted; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 07H.
50D5-50DA
DEFM "syste",EDH 73 79 73 74 65 ED
50D5H-50DAH: word 15, system; its last character, m (6DH), is stored as EDH, with bit 7 set. Used by errors 06H, 28H.
50DB-50E3
DEFM "director",F9H 64 69 72 65 63 74 6F 72 F9
50DBH-50E3H: word 16, directory; its last character, y (79H), is stored as F9H, with bit 7 set. Used by errors 11H, 12H, 18H, 1EH.
50E4-50E9
DEFM "memor",F9H 6D 65 6D 6F 72 F9
50E4H-50E9H: word 17, memory; its last character, y (79H), is stored as F9H, with bit 7 set. Used by errors 23H, 24H.
50EA-50EB
DEFM "o",EEH 6F EE
50EAH-50EBH: word 18, on; its last character, n (6EH), is stored as EEH, with bit 7 set. Used by error 0EH.
50EC-50EF
DEFM "dis",EBH 64 69 73 EB
50ECH-50EFH: word 19, disk; its last character, k (6BH), is stored as EBH, with bit 7 set. Used by errors 0EH, 0FH, 1AH, 1BH.
50F0-50F8
DEFM "paramete",F2H 70 61 72 61 6D 65 74 65 F2
50F0H-50F8H: word 20, parameter; its last character, r (72H), is stored as F2H, with bit 7 set. Used by error 2CH.
50F9-50FD
DEFM "faul",F4H 66 61 75 6C F4
50F9H-50FDH: word 21, fault; its last character, t (74H), is stored as F4H, with bit 7 set. Used by errors 0EH, 23H.
50FE-5106
DEFM "protecte",E4H 70 72 6F 74 65 63 74 65 E4
50FEH-5106H: word 22, protected; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 0FH, 1AH, 25H, 28H.
5107-510D
DEFM "illega",ECH 69 6C 6C 65 67 61 EC
5107H-510DH: word 23, illegal; its last character, l (6CH), is stored as ECH, with bit 7 set. Used by errors 10H, 13H, 20H, 25H.
510E-5114
DEFM "logica",ECH 6C 6F 67 69 63 61 EC
510EH-5114H: word 24, logical; its last character, l (6CH), is stored as ECH, with bit 7 set. Used by error 10H.
5115-511A
DEFM "numbe",F2H 6E 75 6D 62 65 F2
5115H-511AH: word 25, number; its last character, r (72H), is stored as F2H, with bit 7 set. Used by errors 10H, 1DH, 20H.
511B-511E
DEFM "fil",E5H 66 69 6C E5
511BH-511EH: word 26, file; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 10H, 13H, 18H, 19H, 1CH, 1EH, 22H, 25H, 26H.
511F-5124
DEFM "recor",E4H 72 65 63 6F 72 E4
511FH-5124H: word 27, record; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 05H, 06H, 07H, 0DH, 1DH.
5125-5127
DEFM "en",E4H 65 6E E4
5125H-5127H: word 28, end; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 1CH.
5128-5129
DEFM "o",E6H 6F E6
5128H-5129H: word 29, of; its last character, f (66H), is stored as E6H, with bit 7 set. Used by errors 1CH, 1DH.
512A-512C
DEFM "ou",F4H 6F 75 F4
512AH-512CH: word 30, out; its last character, t (74H), is stored as F4H, with bit 7 set. Used by error 1DH.
512D-5131
DEFM "rang",E5H 72 61 6E 67 E5
512DH-5131H: word 31, range; its last character, e (65H), is stored as E5H, with bit 7 set. Used by error 1DH.
5132-513C
DEFM "encountere",E4H 65 6E 63 6F 75 6E 74 65 72 65 E4
5132H-513CH: word 32, encountered; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 1CH.
513D-5140
DEFM "cod",E5H 63 6F 64 E5
513DH-5140H: word 33, code; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 29H, 2AH, 2BH, 2DH.
5141-5143
DEFM "GA",D4H 47 41 D4
5141H-5143H: word 34, GAT; its last character, T (54H), is stored as D4H, with bit 7 set. Used by errors 14H, 15H.
5144-5146
DEFM "HI",D4H 48 49 D4
5144H-5146H: word 35, HIT; its last character, T (54H), is stored as D4H, with bit 7 set. Used by errors 16H, 17H.
5147
DEFB F9H F9
5147H: word 36, y; its only character, y (79H), is stored as F9H, with bit 7 set. No message uses it.
5148-514E
DEFM "unknow",EEH 75 6E 6B 6E 6F 77 EE
5148H-514EH: word 37, unknown; its last character, n (6EH), is stored as EEH, with bit 7 set. Used by errors 29H, 2AH, 2BH, 2DH.
514F-5152
DEFM "loa",E4H 6C 6F 61 E4
514FH-5152H: word 38, load; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 22H, 24H.
5153-5157
DEFM "spac",E5H 73 70 61 63 E5
5153H-5157H: word 39, space; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 1BH, 21H.
5158-515B
DEFM "onl",F9H 6F 6E 6C F9
5158H-515BH: word 40, only; its last character, y (79H), is stored as F9H, with bit 7 set. Used by error 24H.
515C-515F
DEFM "nam",E5H 6E 61 6D E5
515CH-515FH: word 41, name; its last character, e (65H), is stored as E5H, with bit 7 set. Used by error 13H.
5160-5165
DEFM "devic",E5H 64 65 76 69 63 E5
5160H-5165H: word 42, device; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 08H, 21H, 27H, 28H.
5166-516B
DEFM "forma",F4H 66 6F 72 6D 61 F4
5166H-516BH: word 43, format; its last character, t (74H), is stored as F4H, with bit 7 set. Used by error 22H.
516C-5170
DEFM "foun",E4H 66 6F 75 6E E4
516CH-5170H: word 44, found; its last character, d (64H), is stored as E4H, with bit 7 set. Used by errors 05H, 0DH, 1FH.
5171-5172
DEFM "i",EEH 69 EE
5171H-5172H: word 45, in; its last character, n (6EH), is stored as EEH, with bit 7 set. Used by errors 18H, 27H.
5173-5178
DEFM "acces",F3H 61 63 63 65 73 F3
5173H-5178H: word 46, access; its last character, s (73H), is stored as F3H, with bit 7 set. Used by errors 19H, 25H.
5179-517C
DEFM "ful",ECH 66 75 6C EC
5179H-517CH: word 47, full; its last character, l (6CH), is stored as ECH, with bit 7 set. Used by errors 1AH, 1BH, 1EH.
517D-5181
DEFM "driv",E5H 64 72 69 76 E5
517DH-5181H: word 48, drive; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 0EH, 20H.
5182-5187
DEFM "denie",E4H 64 65 6E 69 65 E4
5182H-5187H: word 49, denied; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 19H.
5188-518E
DEFM "progra",EDH 70 72 6F 67 72 61 ED
5188H-518EH: word 50, program; its last character, m (6DH), is stored as EDH, with bit 7 set. Used by error 1FH.
518F-5197
DEFM "availabl",E5H 61 76 61 69 6C 61 62 6C E5
518FH-5197H: word 51, available; its last character, e (65H), is stored as E5H, with bit 7 set. Used by errors 08H, 21H.
5198-51A5
DEFM "- can't exten",E4H 2D 20 63 61 6E 27 74 20 65 78 74 65 6E E4
5198H-51A5H: word 52, - can't extend; its last character, d (64H), is stored as E4H, with bit 7 set. Used by error 1EH.
51A6-51A9
DEFM "ope",EEH 6F 70 65 EE
51A6H-51A9H: word 53, open; its last character, n (6EH), is stored as EEH, with bit 7 set. Used by error 26H.
51AA-51AC
DEFM "us",E5H 75 73 E5
51AAH-51ACH: word 54, use; its last character, e (65H), is stored as E5H, with bit 7 set. Used by error 27H.
51AD-51AE
DEFM "o",F2H 6F F2
51ADH-51AEH: word 55, or; its last character, r (72H), is stored as F2H, with bit 7 set. Used by error 1AH.