TRS-80 DOS - TRSDOS v2.3 for the Model I - SYS4/SYS Disassembled

Page Customization

Introduction/Summary

TRSDOS v2.3 SYS4/SYS Disassembly - Error Messages (Model I)

SYS4/SYS is the TRSDOS 2.3 system overlay that turns an error number into the message the person sees. SYS0/SYS loads it into the overlay area at 4E00H whenever an RST 28H code with 6 in bits 0-3 is executed. The error code is passed on the stack: bits 0-5 are the error number, bit 6 asks for the message text with no framing, and bit 7 makes SYS4/SYS return to the program that raised the error instead of going to DOS READY. The message itself is built from a dictionary of words, so the 62 messages fit in about 400 bytes.

The file holds 1,011 bytes in four load records covering 4E00H-51F2H, after a name record and a 169-byte copyright comment record; its transfer address is 4E00H. The code is 4E00H-4F35H and the rest is message data. Every byte is shown once on this page, in address order, checked against S:\1\SYS4.SYS and its listing.

Memory Map

Address RangeUse
4E00H-4E72H
115 bytes
Build and display a message, then return to the caller or to 4030H.
4E73H-4F1AH
168 bytes
The DEVICE or FILE line and the REFERENCED AT line.
4F1BH-4F35H
27 bytes
Display a word or a byte as hexadecimal digits.
4F36H-4F83H
78 bytes
The fixed parts of the display: ERRCOD, DEVICE, FILE and REFERENCED AT.
4F84H-4FC1H
62 bytes
One message offset per error number 00H-3DH.
4FC2H-502FH
110 bytes
The address of each word in the dictionary.
5030H-515AH
299 bytes
The words the messages are built from.
515BH-51F2H
152 bytes
The word list for each message.

How a Message Is Shown

SYS4/SYS first shows *** ERRCOD=nn, with the error number in decimal, unless bit 6 of the error code asked for the text only. It then looks the error number up in the offset table at 4F84H, which points into the word lists at 5100H. Each byte of a word list is a word number; the word's text is found through the address table at 4FC2H and sent to the display with a space after it, until the byte whose bit 7 marks the last word. For a full message it then shows a second and third line naming the file or device involved and the address that made the call, and finally an ENTER.

The DEVICE, FILE and REFERENCED AT Lines

When bit 6 of a message's last word byte is set, the error names a file or a device: SYS4/SYS reads the file control block SYS0/SYS recorded at 430AH and shows <FILE=name/ext:d> for an open file (building the name from its directory entry) or the filespec text the block already holds, or <DEVICE=*xx> for a device name. Otherwise it shows <DEVICE=> with the drive and locator from the block. The REFERENCED AT line shows the address at 430CH, less three, as four hexadecimal digits: the instruction that made the file call.

Notes from the Code

  • The error number in the ERRCOD line is shown in decimal (4E14H divides by ten), while the REFERENCED AT address is shown in hexadecimal.
  • The messages are stored as lists of word numbers into a 53-word dictionary, so a word such as ERROR or DURING is held once and shared by many messages.
  • Error numbers 27H and above all share one word list, UNKNOWN ERROR CODE, at 51F0H.
  • Bit 7 of the error code makes SYS4/SYS return to the caller; the return address is saved into the JP M at 4E6DH as the overlay starts.
  • The error lines are indented with Model I video space compression bytes (C6H, C5H and C3H display six, five and three spaces).

Variables

Self-Modified Operands

AddressPurpose
4E6EH-4E6FH
2 bytes
Operand of JP M at 4E6DH: the caller's return address, saved at 4E01H.
4F42H-4F43H
2 bytes
The two decimal digits of the error number in the ERRCOD line (set at 4E20H).
4F55H-4F56H
2 bytes
The two characters of the device code in the DEVICE line (set at 4E94H).

Addresses Outside SYS4/SYS

Address RangeUse
430AH-430BH
2 bytes
The file control block address SYS0/SYS's file call set-up recorded (4E7DH).
430CH-430DH
2 bytes
The return address of the file call, shown less three on the REFERENCED AT line (4F0CH).
4200H-42FFH
256 bytes
Directory sector read by SYS0/SYS's 4AC1H to name an open file.
4030H
3 bytes
The exit after an error, taken when bit 7 of the error code is clear (4E70H).
0033H
ROM
Display one character, used for every character of the message.
4467H, 4AC1H
SYS0/SYS
Display a message, read a directory sector.

Disassembly

4E00H - Display an Error Message (code 86H)

SYS0/SYS's overlay call enters SYS4/SYS here. The error code is on the stack above the overlay call's return address; Register A is the RST 28H code. Bits 0-5 of the error code are the error number, bit 6 asks for the message text only (no *** ERRCOD= prefix and no DEVICE, FILE or REFERENCED AT lines), and bit 7 makes SYS4/SYS return to the caller instead of jumping to 4030H. The message is built from a dictionary of words and sent to the display.

4E00
EX (SP),HL E3
Exchange Register Pair HL with the top of the stack (the Stack Pointer points at the overlay call's return address): Register Pair HL = that return address, and the caller's Register Pair HL is on the stack.
4E01
LD (4E6EH),HL 22 6E 4E
Store Register Pair HL (the return address) into 4E6EH, the operand of JP M at 4E6DH, where SYS4/SYS goes when the error code asks to return to the caller. Self-Modifying Code
4E04
POP HL E1
Restore Register Pair HL (the caller's) from the stack.
4E05
POP AF F1
POP Register Pair AF from the stack: Register A = the error code the caller pushed.
4E06
PUSH HL E5
Save Register Pair HL (the caller's) onto the stack.
4E07
PUSH DE D5
Save Register Pair DE (the caller's) onto the stack.
4E08
PUSH BC C5
Save Register Pair BC (the caller's) onto the stack.
4E09
PUSH AF F5
Save Register Pair AF (Register A = the error code) onto the stack.
4E0A
LD B,A 47
Copy the error code from Register A into Register B.
4E0B
AND 3FH E6 3F
AND Register A with 3FH, keeping bits 0-5, the error number.
4E0D
LD C,A 4F
Copy the error number from Register A into Register C.
4E0E
BIT 6,B CB 70
Test bit 6 of Register B (the error code): set to ask for the message text only.
4E10
LD B,00H 06 00
Load Register B with 00H: Register Pair BC = the error number, for indexing.
4E12
If the NZ FLAG is set (text only), JUMP to 4E2AH to skip the prefix.
4E14
LD E,30H 1E 30
Build the Prefix
Load Register E with 30H, the digit 0, the tens digit so far.
4E16
SUB 0AH D6 0A
Tens Loop
SUBtract 0AH (ten) from Register A (the error number). 4E1BH loops back here.
4E18
If the CARRY FLAG is set (below zero), JUMP to 4E1DH: the tens are counted.
4E1A
INC E 1C
INCrement Register E (the tens digit character) by 1.
4E1B
Tens Loop End
LOOP BACK to 4E16H to subtract another ten.
4E1D
ADD A,3AH C6 3A
ADD 3AH to Register A (the negative remainder): the units digit as a character. 4E18H comes here.
4E1F
LD D,A 57
Copy the units digit from Register A into Register D.
4E20
LD (4F42H),DE ED 53 42 4F
Store Register Pair DE (Register E = the tens digit, Register D = the units digit) into 4F42H, the two digit positions of the ERRCOD prefix template. Self-Modifying Code
4E24
LD HL,4F36H 21 36 4F
Point Register Pair HL to 4F36H, the ERRCOD prefix template: a line feed, the heading, the two digits, a comma and a space.
4E27
GOSUB to SYS0/SYS's 4467H to display the prefix at Register Pair HL.
4E2A
LD HL,4F84H 21 84 4F
Find the Message
Point Register Pair HL to 4F84H, the table of one offset byte per error number. 4E12H comes here.
4E2D
ADD HL,BC 09
ADD Register Pair BC (the error number) to Register Pair HL: the error's offset byte.
4E2E
LD L,(HL) 6E
Fetch the offset from (HL) (Register Pair HL = the offset byte) into Register L.
4E2F
LD H,51H 26 51
Load Register H with 51H: Register Pair HL = 5100H plus the offset, the message's word list.
4E31
LD A,(HL) 7E
Word Loop
Fetch a word byte from (HL) (Register Pair HL = the word list) into Register A. 4E5AH loops back here.
4E32
AND 3FH E6 3F
AND Register A with 3FH, keeping bits 0-5, the word number.
4E34
ADD A,A 87
ADD Register A to itself: the word number times two, a table offset.
4E35
PUSH HL E5
Save Register Pair HL (the word list pointer) onto the stack.
4E36
LD C,A 4F
Copy the offset from Register A into Register C.
4E37
LD B,00H 06 00
Load Register B with 00H: Register Pair BC = the word number times two.
4E39
LD HL,4FC2H 21 C2 4F
Point Register Pair HL to 4FC2H, the table of word addresses.
4E3C
ADD HL,BC 09
ADD Register Pair BC to Register Pair HL: the word's address entry.
4E3D
LD E,(HL) 5E
Fetch the low byte of the word's address from (HL) (Register Pair HL = the address entry) into Register E.
4E3E
INC HL 23
INCrement Register Pair HL by 1, to the high byte of the word's address.
4E3F
LD D,(HL) 56
Fetch the high byte of the word's address from (HL) (Register Pair HL = the address entry plus 1) into Register D: Register Pair DE = the word's text.
4E40
INC HL 23
INCrement Register Pair HL by 1, to the next word's address entry.
4E41
LD A,(HL) 7E
Fetch the low byte of the next word's address from (HL) (Register Pair HL = the next entry) into Register A.
4E42
INC HL 23
INCrement Register Pair HL by 1, to the high byte of the next word's address.
4E43
LD H,(HL) 66
Fetch the high byte of the next word's address from (HL) (Register Pair HL = the next entry plus 1) into Register H.
4E44
LD L,A 6F
Copy the low byte from Register A into Register L: Register Pair HL = the next word's text.
4E45
OR A B7
OR Register A with itself to clear the CARRY FLAG.
4E46
SBC HL,DE ED 52
SUBtract Register Pair DE (this word's text) and the CARRY FLAG from Register Pair HL (the next word's text): the length of this word.
4E48
LD B,L 45
Copy the length from Register L into Register B.
4E49
EX DE,HL EB
Exchange Register Pairs DE and HL: Register Pair HL = this word's text.
4E4A
LD A,(HL) 7E
Print Loop
Fetch a character of the word from (HL) (Register Pair HL = the word's text) into Register A. 4E4FH loops back here.
4E4B
INC HL 23
INCrement Register Pair HL (the word pointer) by 1.
4E4C
GOSUB to ROM routine at 0033H to display the character in Register A.
4E4F
Print Loop End
DECrement Register B and LOOP BACK to 4E4AH until the word is printed.
4E51
LD A,20H 3E 20
Load Register A with 20H, a space, to separate the words.
4E53
GOSUB to ROM routine at 0033H to display the space in Register A.
4E56
POP HL E1
Restore Register Pair HL (the word list pointer) from the stack.
4E57
LD A,(HL) 7E
Fetch the word byte from (HL) (Register Pair HL = the word list) into Register A again.
4E58
INC HL 23
INCrement Register Pair HL (the word list pointer) by 1, to the next word byte.
4E59
RLCA 07
Rotate Register A left, circularly: bit 7, the last-word flag, goes into the CARRY FLAG.
4E5A
Word Loop End
If the NO CARRY FLAG is set (not the last word), LOOP BACK to 4E31H.
4E5C
POP AF F1
Restore Register Pair AF (Register A = the error code) from the stack.
4E5D
PUSH AF F5
Save Register Pair AF (the error code) onto the stack again.
4E5E
BIT 6,A CB 77
Test bit 6 of Register A (the error code): set for the message text only.
4E60
When the Z FLAG is set (the full message), GOSUB to 4E73H to show the DEVICE or FILE and REFERENCED AT lines.
4E63
LD A,0DH 3E 0D
Load Register A with 0DH, ENTER, to end the line.
4E65
GOSUB to ROM routine at 0033H to display the ENTER in Register A.
4E68
POP AF F1
Restore Register Pair AF (Register A = the error code) from the stack.
4E69
POP BC C1
Restore Register Pair BC (the caller's) from the stack.
4E6A
POP DE D1
Restore Register Pair DE (the caller's) from the stack.
4E6B
POP HL E1
Restore Register Pair HL (the caller's) from the stack.
4E6C
OR A B7
OR Register A (the error code) with itself: the sign flag follows bit 7.
4E6D
If the M FLAG is set (bit 7 set), JUMP to the caller's return address (the operand set at 4E01H), returning to the program that raised the error. Self-Modifying Code
0000H in the file.
4E70
JUMP to 4030H, the exit after an error, which returns to DOS READY or enters DEBUG.
4E73
PUSH HL E5
Show the DEVICE or FILE and REFERENCED AT Lines
Save Register Pair HL (the word list pointer past the message) onto the stack. 4E60H calls here.
4E74
LD HL,4F47H 21 47 4F
Point Register Pair HL to 4F47H, the three asterisks and an ENTER.
4E77
GOSUB to SYS0/SYS's 4467H to display the asterisks at Register Pair HL.
4E7A
POP HL E1
Restore Register Pair HL (the word list pointer) from the stack.
4E7B
PUSH IX DD E5
Save Index Register IX (the caller's) onto the stack.
4E7D
LD IX,(430AH) DD 2A 0A 43
Fetch the file control block address from 430AH into Index Register IX: the FCB SYS0/SYS's file call set-up recorded.
4E81
DEC HL 2B
DECrement Register Pair HL by 1, to the last word byte of the message.
4E82
BIT 6,(HL) CB 76
Test bit 6 of the last word byte at (HL) (Register Pair HL = the last word byte): set when the error names a file or device the FCB holds.
4E84
If the NZ FLAG is set (a named file or device), JUMP to 4EA0H.
4E86
LD C,(IX+06H) DD 4E 06
Fetch the drive from byte 06H of the FCB at (IX+06H) (Index Register IX = the FCB) into Register C.
4E89
LD B,(IX+07H) DD 46 07
Fetch the entry locator from byte 07H of the FCB at (IX+07H) (Index Register IX = the FCB) into Register B.
4E8C
BIT 7,(IX+00H) DD CB 00 7E
Test bit 7 of byte 00H of the FCB at (IX+00H) (Index Register IX = the FCB): set while a file is open.
4E90
If the NZ FLAG is set (an open file), JUMP to 4EC4H to name it from its directory entry.
4E92
POP IX DD E1
Restore Index Register IX (the caller's) from the stack. 4EADH comes here.
4E94
LD (4F55H),BC ED 43 55 4F
Store Register Pair BC (Register C = drive, Register B = locator) into 4F55H, the XX of the DEVICE template. Self-Modifying Code
4E98
LD HL,4F4BH 21 4B 4F
Point Register Pair HL to 4F4BH, the DEVICE template holding the device code and an ENTER.
4E9B
GOSUB to SYS0/SYS's 4467H to display the DEVICE line at Register Pair HL.
4E9E
JUMP to 4F06H to display the REFERENCED AT line.
4EA0
LD A,(IX+00H) DD 7E 00
A Named File or Device
Fetch byte 00H of the FCB from (IX+00H) (Index Register IX = the FCB) into Register A. 4E84H comes here.
4EA3
CP 2AH FE 2A
Compare Register A (byte 0) against 2AH, the asterisk that marks a device name.
4EA5
If the NZ FLAG is set (not a device name), JUMP to 4EAFH.
4EA7
LD C,(IX+01H) DD 4E 01
Fetch the device code low byte from byte 01H of the FCB at (IX+01H) (Index Register IX = the FCB) into Register C.
4EAA
LD B,(IX+02H) DD 46 02
Fetch the device code high byte from byte 02H of the FCB at (IX+02H) (Index Register IX = the FCB) into Register B.
4EAD
JUMP to 4E92H to show the DEVICE line with the device code.
4EAF
PUSH IX DD E5
Copy the Filespec Text
PUSH Index Register IX (the FCB) onto the stack. 4EA5H comes here.
4EB1
POP HL E1
POP Register Pair HL from the stack: Register Pair HL = the FCB.
4EB2
LD DE,4F60H 11 60 4F
Point Register Pair DE to 4F60H, the name field of the FILE template.
4EB5
LD BC,0018H 01 18 00
Load Register Pair BC with 0018H, at most 24 characters.
4EB8
LD A,(HL) 7E
Copy Loop
Fetch a character of the filespec from (HL) (Register Pair HL = the FCB) into Register A. 4EC0H loops back here.
4EB9
CP 03H FE 03
Compare Register A against 03H, the end of the filespec.
4EBB
If the Z FLAG is set (the end), JUMP to 4EF9H.
4EBD
INC HL 23
INCrement Register Pair HL (the FCB pointer) by 1.
4EBE
LD (DE),A 12
Store the character (Register A) into the template at (DE) (Register Pair DE = the name field).
4EBF
INC DE 13
INCrement Register Pair DE (the name field pointer) by 1.
4EC0
Copy Loop End
DECrement Register B and LOOP BACK to 4EB8H until 24 characters or the end.
4EC2
JUMP to 4EF9H to close the FILE line after the filespec text.
4EC4
Name from the Directory Entry
GOSUB to SYS0/SYS's 4AC1H to read the directory entry with locator Register B of drive Register C into 4200H; Register Pair HL = the entry. 4E90H comes here.
4EC7
LD BC,0005H 01 05 00
Load Register Pair BC with 0005H, the offset of the name in the entry.
4ECA
ADD HL,BC 09
ADD Register Pair BC to Register Pair HL: the entry's name field.
4ECB
LD DE,4F60H 11 60 4F
Point Register Pair DE to 4F60H, the name field of the FILE template.
4ECE
LD B,08H 06 08
Load Register B with 08H, the eight characters of the name.
4ED0
LD A,(HL) 7E
Name Loop
Fetch a name character from (HL) (Register Pair HL = the entry's name) into Register A. 4ED8H loops back here.
4ED1
CP 20H FE 20
Compare Register A against 20H, a space, the padding after the name.
4ED3
If the Z FLAG is set (a space), JUMP to 4EDAH: the name has ended.
4ED5
INC L 2C
INCrement Register L (the entry pointer) by 1.
4ED6
LD (DE),A 12
Store the character (Register A) into the template at (DE) (Register Pair DE = the name field).
4ED7
INC DE 13
INCrement Register Pair DE (the name field pointer) by 1.
4ED8
Name Loop End
DECrement Register B and LOOP BACK to 4ED0H until eight characters.
4EDA
LD A,2FH 3E 2F
Load Register A with 2FH, the slash before an extension. 4ED3H comes here.
4EDC
LD (DE),A 12
Store the slash (Register A) into the template at (DE) (Register Pair DE = the name field).
4EDD
INC DE 13
INCrement Register Pair DE (the name field pointer) by 1.
4EDE
LD C,B 48
Copy the characters left from Register B into Register C.
4EDF
LD B,00H 06 00
Load Register B with 00H: Register Pair BC = the characters of the name not used.
4EE1
ADD HL,BC 09
ADD Register Pair BC to Register Pair HL: Register Pair HL = the entry's extension field.
4EE2
LD B,03H 06 03
Load Register B with 03H, the three characters of the extension.
4EE4
LD A,(HL) 7E
Extension Loop
Fetch an extension character from (HL) (Register Pair HL = the extension field) into Register A. 4EECH loops back here.
4EE5
INC L 2C
INCrement Register L (the entry pointer) by 1.
4EE6
CP 20H FE 20
Compare Register A against 20H, a space, the padding after the extension.
4EE8
If the Z FLAG is set (a space), JUMP to 4EEEH.
4EEA
LD (DE),A 12
Store the character (Register A) into the template at (DE) (Register Pair DE = the name field).
4EEB
INC DE 13
INCrement Register Pair DE (the name field pointer) by 1.
4EEC
Extension Loop End
DECrement Register B and LOOP BACK to 4EE4H until three characters.
4EEE
EX DE,HL EB
Exchange Register Pairs DE and HL: Register Pair HL = the name field pointer. 4EE8H comes here.
4EEF
LD (HL),3AH 36 3A
Store 3AH, the colon before a drive, into the template at (HL) (Register Pair HL = the name field).
4EF1
INC HL 23
INCrement Register Pair HL (the name field pointer) by 1.
4EF2
LD A,(IX+06H) DD 7E 06
Fetch the drive from byte 06H of the FCB at (IX+06H) (Index Register IX = the FCB) into Register A.
4EF5
ADD A,30H C6 30
ADD 30H to Register A: the drive as a character.
4EF7
LD (HL),A 77
Store the drive character (Register A) into the template at (HL) (Register Pair HL = the name field).
4EF8
INC HL 23
INCrement Register Pair HL (the name field pointer) by 1.
4EF9
LD (HL),3EH 36 3E
Finish the FILE Line
Store 3EH, the closing angle bracket, into the template at (HL) (Register Pair HL = the name field). 4EBBH and 4EC2H come here.
4EFB
INC HL 23
INCrement Register Pair HL (the name field pointer) by 1.
4EFC
LD (HL),0DH 36 0D
Store 0DH, ENTER, into the template at (HL) (Register Pair HL = the name field).
4EFE
POP IX DD E1
Restore Index Register IX (the caller's) from the stack.
4F00
LD HL,4F59H 21 59 4F
Point Register Pair HL to 4F59H, the template FILE= followed by the name field.
4F03
GOSUB to SYS0/SYS's 4467H to display the FILE line at Register Pair HL.
4F06
LD HL,4F70H 21 70 4F
REFERENCED AT Line
Point Register Pair HL to 4F70H, the template REFERENCED AT X' up to its 03H. 4E9EH comes here.
4F09
GOSUB to SYS0/SYS's 4467H to display the start of the line at Register Pair HL.
4F0C
LD HL,(430CH) 2A 0C 43
Fetch the reference address from 430CH into Register Pair HL: the return address SYS0/SYS's file call set-up recorded.
4F0F
DEC HL 2B
DECrement Register Pair HL (the reference address) by 1.
4F10
DEC HL 2B
DECrement Register Pair HL (the reference address) by 1, two below the recorded address.
4F11
DEC HL 2B
DECrement Register Pair HL by 1: back to the instruction that made the file call.
4F12
GOSUB to 4F1BH to display Register Pair HL as four hexadecimal digits.
4F15
LD HL,4F82H 21 82 4F
Point Register Pair HL to 4F82H, the closing quote and an ENTER.
4F18
JUMP to SYS0/SYS's 4467H to display them and return to the caller of 4E73H.
4F1B
LD A,H 7C
Display a Word as Hexadecimal
Copy Register H (the high byte) into Register A. 4F12H calls here.
4F1C
GOSUB to 4F20H to display Register A as two hexadecimal digits.
4F1F
LD A,L 7D
Copy Register L (the low byte) into Register A.
4F20
PUSH AF F5
Display a Byte as Hexadecimal
Save Register Pair AF (Register A = the byte) onto the stack. 4F1CH calls here.
4F21
RRA 1F
Rotate Register A right (no carry in): the high nibble moves down.
4F22
RRA 1F
Rotate Register A right, moving the high nibble down.
4F23
RRA 1F
Rotate Register A right, moving the high nibble further down.
4F24
RRA 1F
Rotate Register A right: the high nibble is now in bits 0-3.
4F25
GOSUB to 4F29H to display the high nibble in Register A.
4F28
POP AF F1
Restore Register Pair AF (Register A = the byte) from the stack.
4F29
AND 0FH E6 0F
Display a Nibble
AND Register A with 0FH, keeping the low four bits. 4F25H calls here.
4F2B
ADD A,30H C6 30
ADD 30H to Register A, giving the character for a digit 0 to 9.
4F2D
CP 3AH FE 3A
Compare Register A against 3AH, one past the digit 9.
4F2F
If the CARRY FLAG is set (a digit 0-9), JUMP to 4F33H.
4F31
ADD A,07H C6 07
ADD 07H to Register A, turning 3AH-3FH into the letters A-F.
4F33
JUMP to ROM routine at 0033H to display the character in Register A and return.

4F36H - Message Text

The fixed parts of the error display, the table of word addresses, the table of one message offset per error number, the words and the per-error word lists. The error lines are indented with Model I video space compression bytes (a byte of C0H plus n displays n spaces). Nothing here is executed.

4F36-4F46
DEFB 0AH / DEFM "*** ERRCOD=XX, " / DEFB 03H 0A 2A 2A 2A 20 45 52 52 43 4F 44 3D 58 58 2C 20 03
ERRCOD Prefix
A line feed, the heading with two digit places, a comma and a space; 4E24H displays it and 4E20H stores the two decimal digits at 4F42H.
4F47-4F4A
DEFM "***" / DEFB 0DH 2A 2A 2A 0D
Three Asterisks
An ENTER ends it; 4E74H displays this short heading before the DEVICE or FILE line.
4F4B-4F58
DEFB C6H / DEFM "<DEVICE=*XX>" / DEFB 0DH C6 3C 44 45 56 49 43 45 3D 2A 58 58 3E 0D
DEVICE Line
The C6H byte displays six spaces; the device code is stored in the two characters at 4F55H by 4E94H, and an ENTER ends the line.
4F59-4F5F
DEFB C5H / DEFM "<FILE=" C5 3C 46 49 4C 45 3D
FILE Line Heading
The C5H byte displays five spaces; the name field at 4F60H follows this heading with no separator between them.
4F60-4F6F
DEFM "NNNNNNNN/EEE:D>" / DEFB 0DH 4E 4E 4E 4E 4E 4E 4E 4E 2F 45 45 45 3A 44 3E 0D
FILE Name Field
Filled in by 4EAFH to 4EFCH with the file name, a closing bracket and an ENTER; the bytes here are whatever a previous error left behind.
4F70-4F83
DEFB C3H / DEFM "REFERENCED AT X'" / DEFB 03H / DEFM "'" / DEFB 0DH C3 52 45 46 45 52 45 4E 43 45 44 20 41 54 20 58 27 03 27 0D
REFERENCED AT Line
The C3H byte displays three spaces; 4F09H displays up to the 03H, the address follows as four hexadecimal digits, and 4F82H adds the closing quote and an ENTER.

4F84H - Message Offset Table

One byte for each error number from 00H to 3DH: the low byte of that error word list, which starts at 5100H plus the byte. 4E2AH reads it with the error number in Register Pair BC. Every error number from 22H upward points at 51F0H, the UNKNOWN ERROR CODE list.

4F84-4F8B
DEFB 5BH, 5DH, 62H, 66H, 6AH, 6EH, 74H, 79H 5B 5D 62 66 6A 6E 74 79
Offsets for errors 00H to 07H
The low byte into 5100H of the word list for each of these error numbers.
4F8C-4F93
DEFB 7EH, 81H, 86H, 8AH, 8EH, 92H, 98H, 9DH 7E 81 86 8A 8E 92 98 9D
Offsets for errors 08H to 0FH
The low byte into 5100H of the word list for each of these error numbers.
4F94-4F9B
DEFB A0H, A4H, A7H, AAH, ADH, B0H, B3H, B6H A0 A4 A7 AA AD B0 B3 B6
Offsets for errors 10H to 17H
The low byte into 5100H of the word list for each of these error numbers.
4F9C-4FA3
DEFB B9H, BDH, C0H, C3H, C6H, CAH, CFH, D3H B9 BD C0 C3 C6 CA CF D3
Offsets for errors 18H to 1FH
The low byte into 5100H of the word list for each of these error numbers.
4FA4-4FAB
DEFB D6H, D9H, DDH, E1H, E3H, E8H, EDH, F0H D6 D9 DD E1 E3 E8 ED F0
Offsets for errors 20H to 27H
The low byte into 5100H of the word list for each of these error numbers.
4FAC-4FB3
DEFB F0H, F0H, F0H, F0H, F0H, F0H, F0H, F0H F0 F0 F0 F0 F0 F0 F0 F0
Offsets for errors 28H to 2FH
The low byte into 5100H of the word list for each of these error numbers.
4FB4-4FBB
DEFB F0H, F0H, F0H, F0H, F0H, F0H, F0H, F0H F0 F0 F0 F0 F0 F0 F0 F0
Offsets for errors 30H to 37H
The low byte into 5100H of the word list for each of these error numbers.
4FBC-4FC1
DEFB F0H, F0H, F0H, F0H, F0H, F0H F0 F0 F0 F0 F0 F0
Offsets for errors 38H to 3DH
The low byte into 5100H of the word list for each of these error numbers.

4FC2H - Word Address Table

Two bytes for each word: the address of its text at 5030H and beyond. 4E39H reads the entry for a word and the following entry to work out the word length, so the words need no separators.

4FC2-4FC3
DEFW F0F0H F0 F0
Word 0 is unused
A placeholder entry; no error message refers to word number 0 in its word list.
4FC4-4FC5
DEFW 5030H 30 50
Word 1 is at 5030H
One of the words the error messages are built from, used in the messages for errors 00H, 21H.
4FC6-4FC7
DEFW 5032H 32 50
Word 2 is at 5032H
One of the words the error messages are built from, used in the messages for errors 00H, 01H, 02H, 04H, 09H, 0AH and more.
4FC8-4FC9
DEFW 5037H 37 50
Word 3 is at 5037H
One of the words in the dictionary, not referenced by any current error message.
4FCA-4FCB
DEFW 503DH 3D 50
Word 4 is at 503DH
One of the words the error messages are built from, used in the messages for errors 01H, 04H, 09H, 0CH.
4FCC-4FCD
DEFW 5043H 43 50
Word 5 is at 5043H
One of the words the error messages are built from, used in the messages for errors 01H, 02H, 03H, 04H, 05H, 09H and more.
4FCE-4FCF
DEFW 5049H 49 50
Word 6 is at 5049H
One of the words the error messages are built from, used in the messages for errors 01H, 09H.
4FD0-4FD1
DEFW 504FH 4F 50
Word 7 is at 504FH
One of the words the error messages are built from, used in the messages for errors 03H, 05H, 06H, 07H, 0BH, 0DH.
4FD2-4FD3
DEFW 5053H 53 50
Word 8 is at 5053H
One of the words the error messages are built from, used in the messages for errors 02H, 0AH.
4FD4-4FD5
DEFW 5057H 57 50
Word 9 is at 5057H
One of the words the error messages are built from, used in the messages for errors 01H, 02H, 03H, 04H, 05H, 06H and more.
4FD6-4FD7
DEFW 505BH 5B 50
Word 10 is at 505BH
One of the words the error messages are built from, used in the messages for errors 09H, 0AH, 0BH, 0CH, 0DH, 0EH and more.
4FD8-4FD9
DEFW 5060H 60 50
Word 11 is at 5060H
One of the words the error messages are built from, used in the messages for errors 03H, 0BH.
4FDA-4FDB
DEFW 5064H 64 50
Word 12 is at 5064H
One of the words the error messages are built from, used in the messages for errors 05H, 08H, 0DH, 18H, 1FH, 26H.
4FDC-4FDD
DEFW 5067H 67 50
Word 13 is at 5067H
One of the words the error messages are built from, used in the messages for errors 06H, 07H, 24H, 25H.
4FDE-4FDF
DEFW 5073H 73 50
Word 14 is at 5073H
One of the words the error messages are built from, used in the messages for errors 06H.
4FE0-4FE1
DEFW 5081H 81 50
Word 15 is at 5081H
One of the words the error messages are built from, used in the messages for errors 07H.
4FE2-4FE3
DEFW 5087H 87 50
Word 16 is at 5087H
One of the words the error messages are built from, used in the messages for errors 11H, 12H, 18H, 1AH, 1EH.
4FE4-4FE5
DEFW 5090H 90 50
Word 17 is at 5090H
One of the words the error messages are built from, used in the messages for errors 23H, 24H.
4FE6-4FE7
DEFW 5096H 96 50
Word 18 is at 5096H
One of the words the error messages are built from, used in the messages for errors 0EH.
4FE8-4FE9
DEFW 5098H 98 50
Word 19 is at 5098H
One of the words the error messages are built from, used in the messages for errors 0EH, 1BH.
4FEA-4FEB
DEFW 509CH 9C 50
Word 20 is at 509CH
One of the words the error messages are built from, used in the messages for errors 0FH.
4FEC-4FED
DEFW 50A4H A4 50
Word 21 is at 50A4H
One of the words the error messages are built from, used in the messages for errors 0EH, 23H.
4FEE-4FEF
DEFW 50A9H A9 50
Word 22 is at 50A9H
One of the words the error messages are built from, used in the messages for errors 0FH, 25H.
4FF0-4FF1
DEFW 50B2H B2 50
Word 23 is at 50B2H
One of the words the error messages are built from, used in the messages for errors 10H, 13H, 20H, 25H.
4FF2-4FF3
DEFW 50B9H B9 50
Word 24 is at 50B9H
One of the words the error messages are built from, used in the messages for errors 10H.
4FF4-4FF5
DEFW 50C0H C0 50
Word 25 is at 50C0H
One of the words the error messages are built from, used in the messages for errors 10H, 1DH, 20H.
4FF6-4FF7
DEFW 50C6H C6 50
Word 26 is at 50C6H
One of the words the error messages are built from, used in the messages for errors 10H, 13H, 18H, 19H, 1CH, 1EH and more.
4FF8-4FF9
DEFW 50CAH CA 50
Word 27 is at 50CAH
One of the words the error messages are built from, used in the messages for errors 05H, 06H, 07H, 0DH, 1DH.
4FFA-4FFB
DEFW 50D0H D0 50
Word 28 is at 50D0H
One of the words the error messages are built from, used in the messages for errors 1CH.
4FFC-4FFD
DEFW 50D3H D3 50
Word 29 is at 50D3H
One of the words the error messages are built from, used in the messages for errors 1CH, 1DH.
4FFE-4FFF
DEFW 50D5H D5 50
Word 30 is at 50D5H
One of the words the error messages are built from, used in the messages for errors 1DH.
5000-5001
DEFW 50D8H D8 50
Word 31 is at 50D8H
One of the words the error messages are built from, used in the messages for errors 1DH.
5002-5003
DEFW 50DDH DD 50
Word 32 is at 50DDH
One of the words the error messages are built from, used in the messages for errors 1CH.
5004-5005
DEFW 50E8H E8 50
Word 33 is at 50E8H
One of the words the error messages are built from, used in the messages for errors 27H, 28H, 29H, 2AH, 2BH, 2CH and more.
5006-5007
DEFW 50ECH EC 50
Word 34 is at 50ECH
One of the words the error messages are built from, used in the messages for errors 14H, 15H.
5008-5009
DEFW 50EFH EF 50
Word 35 is at 50EFH
One of the words the error messages are built from, used in the messages for errors 16H, 17H.
500A-500B
DEFW 50F2H F2 50
Word 36 is at 50F2H
One of the words in the dictionary, not referenced by any current error message.
500C-500D
DEFW 50F9H F9 50
Word 37 is at 50F9H
One of the words the error messages are built from, used in the messages for errors 27H, 28H, 29H, 2AH, 2BH, 2CH and more.
500E-500F
DEFW 5100H 00 51
Word 38 is at 5100H
One of the words the error messages are built from, used in the messages for errors 22H, 24H.
5010-5011
DEFW 5104H 04 51
Word 39 is at 5104H
One of the words the error messages are built from, used in the messages for errors 1AH, 1BH, 21H.
5012-5013
DEFW 5109H 09 51
Word 40 is at 5109H
One of the words the error messages are built from, used in the messages for errors 24H.
5014-5015
DEFW 510DH 0D 51
Word 41 is at 510DH
One of the words the error messages are built from, used in the messages for errors 13H.
5016-5017
DEFW 5111H 11 51
Word 42 is at 5111H
One of the words the error messages are built from, used in the messages for errors 08H, 21H.
5018-5019
DEFW 5117H 17 51
Word 43 is at 5117H
One of the words the error messages are built from, used in the messages for errors 22H.
501A-501B
DEFW 511DH 1D 51
Word 44 is at 511DH
One of the words the error messages are built from, used in the messages for errors 05H, 0DH, 1FH.
501C-501D
DEFW 5122H 22 51
Word 45 is at 5122H
One of the words the error messages are built from, used in the messages for errors 18H.
501E-501F
DEFW 5124H 24 51
Word 46 is at 5124H
One of the words the error messages are built from, used in the messages for errors 19H, 25H.
5020-5021
DEFW 512AH 2A 51
Word 47 is at 512AH
One of the words the error messages are built from, used in the messages for errors 1AH, 1BH, 1EH.
5022-5023
DEFW 512EH 2E 51
Word 48 is at 512EH
One of the words the error messages are built from, used in the messages for errors 0EH, 20H.
5024-5025
DEFW 5133H 33 51
Word 49 is at 5133H
One of the words the error messages are built from, used in the messages for errors 19H.
5026-5027
DEFW 5139H 39 51
Word 50 is at 5139H
One of the words the error messages are built from, used in the messages for errors 1FH.
5028-5029
DEFW 5140H 40 51
Word 51 is at 5140H
One of the words the error messages are built from, used in the messages for errors 08H, 21H.
502A-502B
DEFW 5149H 49 51
Word 52 is at 5149H
One of the words the error messages are built from, used in the messages for errors 1EH.
502C-502D
DEFW 5157H 57 51
Word 53 is at 5157H
One of the words the error messages are built from, used in the messages for errors 26H.
502E-502F
DEFW 515BH 5B 51
End of the word addresses
515BH, one past the last word, so the last word length can be found the same way.

5030H - The Words

The text of every word the error messages are built from, run together with no separators between them; the word address table at 4FC2H marks where each word begins and ends.

5030-5031
DEFM "NO" 4E 4F
Word 1
One of the words the error messages are built from, used in the messages for errors 00H, 21H.
5032-5036
DEFM "ERROR" 45 52 52 4F 52
Word 2
One of the words the error messages are built from, used in the messages for errors 00H, 01H, 02H, 04H, 09H, 0AH and more.
5037-503C
DEFM "FORMAT" 46 4F 52 4D 41 54
Word 3
One of the words in the dictionary, not referenced by any current error message.
503D-5042
DEFM "PARITY" 50 41 52 49 54 59
Word 4
One of the words the error messages are built from, used in the messages for errors 01H, 04H, 09H, 0CH.
5043-5048
DEFM "DURING" 44 55 52 49 4E 47
Word 5
One of the words the error messages are built from, used in the messages for errors 01H, 02H, 03H, 04H, 05H, 09H and more.
5049-504E
DEFM "HEADER" 48 45 41 44 45 52
Word 6
One of the words the error messages are built from, used in the messages for errors 01H, 09H.
504F-5052
DEFM "DATA" 44 41 54 41
Word 7
One of the words the error messages are built from, used in the messages for errors 03H, 05H, 06H, 07H, 0BH, 0DH.
5053-5056
DEFM "SEEK" 53 45 45 4B
Word 8
One of the words the error messages are built from, used in the messages for errors 02H, 0AH.
5057-505A
DEFM "READ" 52 45 41 44
Word 9
One of the words the error messages are built from, used in the messages for errors 01H, 02H, 03H, 04H, 05H, 06H and more.
505B-505F
DEFM "WRITE" 57 52 49 54 45
Word 10
One of the words the error messages are built from, used in the messages for errors 09H, 0AH, 0BH, 0CH, 0DH, 0EH and more.
5060-5063
DEFM "LOST" 4C 4F 53 54
Word 11
One of the words the error messages are built from, used in the messages for errors 03H, 0BH.
5064-5066
DEFM "NOT" 4E 4F 54
Word 12
One of the words the error messages are built from, used in the messages for errors 05H, 08H, 0DH, 18H, 1FH, 26H.
5067-5072
DEFM "ATTEMPTED TO" 41 54 54 45 4D 50 54 45 44 20 54 4F
Word 13
One of the words the error messages are built from, used in the messages for errors 06H, 07H, 24H, 25H.
5073-5080
DEFM "LOCKED/DELETED" 4C 4F 43 4B 45 44 2F 44 45 4C 45 54 45 44
Word 14
One of the words the error messages are built from, used in the messages for errors 06H.
5081-5086
DEFM "SYSTEM" 53 59 53 54 45 4D
Word 15
One of the words the error messages are built from, used in the messages for errors 07H.
5087-508F
DEFM "DIRECTORY" 44 49 52 45 43 54 4F 52 59
Word 16
One of the words the error messages are built from, used in the messages for errors 11H, 12H, 18H, 1AH, 1EH.
5090-5095
DEFM "MEMORY" 4D 45 4D 4F 52 59
Word 17
One of the words the error messages are built from, used in the messages for errors 23H, 24H.
5096-5097
DEFM "ON" 4F 4E
Word 18
One of the words the error messages are built from, used in the messages for errors 0EH.
5098-509B
DEFM "DISK" 44 49 53 4B
Word 19
One of the words the error messages are built from, used in the messages for errors 0EH, 1BH.
509C-50A3
DEFM "DISKETTE" 44 49 53 4B 45 54 54 45
Word 20
One of the words the error messages are built from, used in the messages for errors 0FH.
50A4-50A8
DEFM "FAULT" 46 41 55 4C 54
Word 21
One of the words the error messages are built from, used in the messages for errors 0EH, 23H.
50A9-50B1
DEFM "PROTECTED" 50 52 4F 54 45 43 54 45 44
Word 22
One of the words the error messages are built from, used in the messages for errors 0FH, 25H.
50B2-50B8
DEFM "ILLEGAL" 49 4C 4C 45 47 41 4C
Word 23
One of the words the error messages are built from, used in the messages for errors 10H, 13H, 20H, 25H.
50B9-50BF
DEFM "LOGICAL" 4C 4F 47 49 43 41 4C
Word 24
One of the words the error messages are built from, used in the messages for errors 10H.
50C0-50C5
DEFM "NUMBER" 4E 55 4D 42 45 52
Word 25
One of the words the error messages are built from, used in the messages for errors 10H, 1DH, 20H.
50C6-50C9
DEFM "FILE" 46 49 4C 45
Word 26
One of the words the error messages are built from, used in the messages for errors 10H, 13H, 18H, 19H, 1CH, 1EH and more.
50CA-50CF
DEFM "RECORD" 52 45 43 4F 52 44
Word 27
One of the words the error messages are built from, used in the messages for errors 05H, 06H, 07H, 0DH, 1DH.
50D0-50D2
DEFM "END" 45 4E 44
Word 28
One of the words the error messages are built from, used in the messages for errors 1CH.
50D3-50D4
DEFM "OF" 4F 46
Word 29
One of the words the error messages are built from, used in the messages for errors 1CH, 1DH.
50D5-50D7
DEFM "OUT" 4F 55 54
Word 30
One of the words the error messages are built from, used in the messages for errors 1DH.
50D8-50DC
DEFM "RANGE" 52 41 4E 47 45
Word 31
One of the words the error messages are built from, used in the messages for errors 1DH.
50DD-50E7
DEFM "ENCOUNTERED" 45 4E 43 4F 55 4E 54 45 52 45 44
Word 32
One of the words the error messages are built from, used in the messages for errors 1CH.
50E8-50EB
DEFM "CODE" 43 4F 44 45
Word 33
One of the words the error messages are built from, used in the messages for errors 27H, 28H, 29H, 2AH, 2BH, 2CH and more.
50EC-50EE
DEFM "GAT" 47 41 54
Word 34
One of the words the error messages are built from, used in the messages for errors 14H, 15H.
50EF-50F1
DEFM "HIT" 48 49 54
Word 35
One of the words the error messages are built from, used in the messages for errors 16H, 17H.
50F2-50F8
DEFM "OVERLAY" 4F 56 45 52 4C 41 59
Word 36
One of the words in the dictionary, not referenced by any current error message.
50F9-50FF
DEFM "UNKNOWN" 55 4E 4B 4E 4F 57 4E
Word 37
One of the words the error messages are built from, used in the messages for errors 27H, 28H, 29H, 2AH, 2BH, 2CH and more.
5100-5103
DEFM "LOAD" 4C 4F 41 44
Word 38
One of the words the error messages are built from, used in the messages for errors 22H, 24H.
5104-5108
DEFM "SPACE" 53 50 41 43 45
Word 39
One of the words the error messages are built from, used in the messages for errors 1AH, 1BH, 21H.
5109-510C
DEFM "ONLY" 4F 4E 4C 59
Word 40
One of the words the error messages are built from, used in the messages for errors 24H.
510D-5110
DEFM "NAME" 4E 41 4D 45
Word 41
One of the words the error messages are built from, used in the messages for errors 13H.
5111-5116
DEFM "DEVICE" 44 45 56 49 43 45
Word 42
One of the words the error messages are built from, used in the messages for errors 08H, 21H.
5117-511C
DEFM "FORMAT" 46 4F 52 4D 41 54
Word 43
One of the words the error messages are built from, used in the messages for errors 22H.
511D-5121
DEFM "FOUND" 46 4F 55 4E 44
Word 44
One of the words the error messages are built from, used in the messages for errors 05H, 0DH, 1FH.
5122-5123
DEFM "IN" 49 4E
Word 45
One of the words the error messages are built from, used in the messages for errors 18H.
5124-5129
DEFM "ACCESS" 41 43 43 45 53 53
Word 46
One of the words the error messages are built from, used in the messages for errors 19H, 25H.
512A-512D
DEFM "FULL" 46 55 4C 4C
Word 47
One of the words the error messages are built from, used in the messages for errors 1AH, 1BH, 1EH.
512E-5132
DEFM "DRIVE" 44 52 49 56 45
Word 48
One of the words the error messages are built from, used in the messages for errors 0EH, 20H.
5133-5138
DEFM "DENIED" 44 45 4E 49 45 44
Word 49
One of the words the error messages are built from, used in the messages for errors 19H.
5139-513F
DEFM "PROGRAM" 50 52 4F 47 52 41 4D
Word 50
One of the words the error messages are built from, used in the messages for errors 1FH.
5140-5148
DEFM "AVAILABLE" 41 56 41 49 4C 41 42 4C 45
Word 51
One of the words the error messages are built from, used in the messages for errors 08H, 21H.
5149-5156
DEFM "- CAN'T EXTEND" 2D 20 43 41 4E 27 54 20 45 58 54 45 4E 44
Word 52
One of the words the error messages are built from, used in the messages for errors 1EH.
5157-515A
DEFM "OPEN" 4F 50 45 4E
Word 53
One of the words the error messages are built from, used in the messages for errors 26H.

515BH - Message Word Lists

One list for each distinct message: the word numbers that make it up, in order. In each byte bits 0-5 are the word number, bit 6 is set when the error names a file or device the FCB holds, and bit 7 is set on the last word. 4E31H walks the list and the offset table at 4F84H points into it.

515B-515C
DEFB 01H, 82H 01 82
Error 00H
NO ERROR, from word numbers in these bytes.
515D-5161
DEFB 04H, 02H, 05H, 06H, 89H 04 02 05 06 89
Error 01H
PARITY ERROR DURING HEADER READ, from word numbers in these bytes.
5162-5165
DEFB 08H, 02H, 05H, 89H 08 02 05 89
Error 02H
SEEK ERROR DURING READ, from word numbers in these bytes.
5166-5169
DEFB 0BH, 07H, 05H, 89H 0B 07 05 89
Error 03H
LOST DATA DURING READ, from word numbers in these bytes.
516A-516D
DEFB 04H, 02H, 05H, 89H 04 02 05 89
Error 04H
PARITY ERROR DURING READ, from word numbers in these bytes.
516E-5173
DEFB 07H, 1BH, 0CH, 2CH, 05H, 89H 07 1B 0C 2C 05 89
Error 05H
DATA RECORD NOT FOUND DURING READ, from word numbers in these bytes.
5174-5178
DEFB 0DH, 09H, 0EH, 07H, 9BH 0D 09 0E 07 9B
Error 06H
ATTEMPTED TO READ LOCKED/DELETED DATA RECORD, from word numbers in these bytes.
5179-517D
DEFB 0DH, 09H, 0FH, 07H, 9BH 0D 09 0F 07 9B
Error 07H
ATTEMPTED TO READ SYSTEM DATA RECORD, from word numbers in these bytes.
517E-5180
DEFB 2AH, 0CH, F3H 2A 0C F3
Error 08H
DEVICE NOT AVAILABLE, from word numbers in these bytes.
5181-5185
DEFB 04H, 02H, 05H, 06H, 8AH 04 02 05 06 8A
Error 09H
PARITY ERROR DURING HEADER WRITE, from word numbers in these bytes.
5186-5189
DEFB 08H, 02H, 05H, 8AH 08 02 05 8A
Error 0AH
SEEK ERROR DURING WRITE, from word numbers in these bytes.
518A-518D
DEFB 0BH, 07H, 05H, 8AH 0B 07 05 8A
Error 0BH
LOST DATA DURING WRITE, from word numbers in these bytes.
518E-5191
DEFB 04H, 02H, 05H, 8AH 04 02 05 8A
Error 0CH
PARITY ERROR DURING WRITE, from word numbers in these bytes.
5192-5197
DEFB 07H, 1BH, 0CH, 2CH, 05H, 8AH 07 1B 0C 2C 05 8A
Error 0DH
DATA RECORD NOT FOUND DURING WRITE, from word numbers in these bytes.
5198-519C
DEFB 0AH, 15H, 12H, 13H, B0H 0A 15 12 13 B0
Error 0EH
WRITE FAULT ON DISK DRIVE, from word numbers in these bytes.
519D-519F
DEFB 0AH, 16H, 94H 0A 16 94
Error 0FH
WRITE PROTECTED DISKETTE, from word numbers in these bytes.
51A0-51A3
DEFB 17H, 18H, 1AH, 99H 17 18 1A 99
Error 10H
ILLEGAL LOGICAL FILE NUMBER, from word numbers in these bytes.
51A4-51A6
DEFB 10H, 09H, 82H 10 09 82
Error 11H
DIRECTORY READ ERROR, from word numbers in these bytes.
51A7-51A9
DEFB 10H, 0AH, 82H 10 0A 82
Error 12H
DIRECTORY WRITE ERROR, from word numbers in these bytes.
51AA-51AC
DEFB 17H, 1AH, E9H 17 1A E9
Error 13H
ILLEGAL FILE NAME, from word numbers in these bytes.
51AD-51AF
DEFB 22H, 09H, 82H 22 09 82
Error 14H
GAT READ ERROR, from word numbers in these bytes.
51B0-51B2
DEFB 22H, 0AH, 82H 22 0A 82
Error 15H
GAT WRITE ERROR, from word numbers in these bytes.
51B3-51B5
DEFB 23H, 09H, 82H 23 09 82
Error 16H
HIT READ ERROR, from word numbers in these bytes.
51B6-51B8
DEFB 23H, 0AH, 82H 23 0A 82
Error 17H
HIT WRITE ERROR, from word numbers in these bytes.
51B9-51BC
DEFB 1AH, 0CH, 2DH, D0H 1A 0C 2D D0
Error 18H
FILE NOT IN DIRECTORY, from word numbers in these bytes.
51BD-51BF
DEFB 1AH, 2EH, F1H 1A 2E F1
Error 19H
FILE ACCESS DENIED, from word numbers in these bytes.
51C0-51C2
DEFB 10H, 27H, EFH 10 27 EF
Error 1AH
DIRECTORY SPACE FULL, from word numbers in these bytes.
51C3-51C5
DEFB 13H, 27H, AFH 13 27 AF
Error 1BH
DISK SPACE FULL, from word numbers in these bytes.
51C6-51C9
DEFB 1CH, 1DH, 1AH, A0H 1C 1D 1A A0
Error 1CH
END OF FILE ENCOUNTERED, from word numbers in these bytes.
51CA-51CE
DEFB 1BH, 19H, 1EH, 1DH, 9FH 1B 19 1E 1D 9F
Error 1DH
RECORD NUMBER OUT OF RANGE, from word numbers in these bytes.
51CF-51D2
DEFB 10H, 2FH, 34H, 9AH 10 2F 34 9A
Error 1EH
DIRECTORY FULL CAN'T EXTEND FILE, from word numbers in these bytes.
51D3-51D5
DEFB 32H, 0CH, ACH 32 0C AC
Error 1FH
PROGRAM NOT FOUND, from word numbers in these bytes.
51D6-51D8
DEFB 17H, 30H, D9H 17 30 D9
Error 20H
ILLEGAL DRIVE NUMBER, from word numbers in these bytes.
51D9-51DC
DEFB 01H, 2AH, 27H, F3H 01 2A 27 F3
Error 21H
NO DEVICE SPACE AVAILABLE, from word numbers in these bytes.
51DD-51E0
DEFB 26H, 1AH, 2BH, 82H 26 1A 2B 82
Error 22H
LOAD FILE FORMAT ERROR, from word numbers in these bytes.
51E1-51E2
DEFB 11H, 95H 11 95
Error 23H
MEMORY FAULT, from word numbers in these bytes.
51E3-51E7
DEFB 0DH, 26H, 09H, 28H, 91H 0D 26 09 28 91
Error 24H
ATTEMPTED TO LOAD READ ONLY MEMORY, from word numbers in these bytes.
51E8-51EC
DEFB 17H, 2EH, 0DH, 16H, 9AH 17 2E 0D 16 9A
Error 25H
ILLEGAL ACCESS ATTEMPTED TO PROTECTED FILE, from word numbers in these bytes.
51ED-51EF
DEFB 1AH, 0CH, F5H 1A 0C F5
Error 26H
FILE NOT OPEN, from word numbers in these bytes.
51F0-51F2
DEFB 25H, 02H, A1H 25 02 A1
Errors 27H to 3DH
UNKNOWN ERROR CODE, the list every error number from 27H upward uses.