DOSPLUS 3.5 for the Model I - SYS5/SYS Disassembled

Page Customization

Introduction/Summary

DOSPLUS 3.5 SYS5/SYS Disassembly - ERROR@ and the Error Messages (Model I)

SYS5/SYS is the low overlay of ERROR@ (4409H, request code 43H): it displays the message of an error code and then returns to the caller or leaves through ABORT@. The file is a load module of 3 blocks, 753 bytes, from 4E00H to 50F0H, with the transfer address 4E00H; most of it is the text of the messages, kept as a table of 64 words and, for each of the 64 error numbers, a list of word numbers.

The Parts of SYS5/SYS

AddressContents
4E00H-4E05HThe routine table (routines 2 and 3) and routine 2 (4E00H, 4E04H).
4E06H-4E54HERROR@: the stack, the frame, the last error, the return or ABORT@ (4E06H).
4E55H-4E92HThe message display (4E55H).
4E93H-5023HThe word table, 64 words (4E93H).
5024H-50F0HThe message list, errors 00H-3FH (5024H).

ERROR@

Register A brings the error number in bits 5-0, bit 6 clear for a message framed in asterisks and bit 7 set to return to the caller, as the manual says. ERROR@ pushes Register Pair AF before its RST 28H, so the routine finds on the stack the overlay handler's return (49DDH), the word the handler saved from 4307HH-4308HH, that AF and the caller's return. It drops the handler's return, keeps the saved word at 4E53H, takes AF off and puts the word back above the caller's return (4E06H-4E12H). After the message and a carriage return the error code, bits 7 and 6 included, is stored to 4304HH, the last error, which the ERROR library command (SYS12/SYS) reads. With bit 7 set, 4307HH-4308HH are restored and the routine returns straight to the caller of ERROR@ with Register A = the code; with bit 7 clear it puts 402DH (EXIT@) on the stack and jumps to ABORT@ (4030H), which is a jump to EXIT@, or to DEBUG@ when DEBUG is on (4E3FH).

The Messages

The message of error n is found by counting the marked bytes (bit 7 set) of the message list (4E55H); each byte of the message is a word number, and the word is found by counting the marked bytes of the word table. The first word of a message is displayed with its first letter as stored (upper case) and every other character is ORed with 20H, so the messages come out as "Crc error during header read"; a space follows each word. The emphasized frame displayed before and after the message is the text at 4E4EH, an asterisk, a space, an asterisk and a space. Errors 33H-3FH all have the one word Unknown error code.

Differences from the Manual

The manual shows the emphasized frame as two asterisks; the bytes have an asterisk, a space and an asterisk, and every message ends with a space before the closing frame or the carriage return. The texts of errors 00H-32H agree with the manual's table (T/56-T/57) word for word.

Variables

Memory Outside SYS5/SYS

Address
Size
Contents
4304HH
1 byte
Last Error
The error code with bits 7 and 6 (4E38H).
4307HH-4308HH
2 bytes
Request Save Word
Restored when ERROR@ returns (4E49H).

In SYS5/SYS

Address
Size
Contents
4E4EH-4E52H
5 bytes
Frame
The asterisk frame and 03H (4E4EH).
4E53H-4E54H
2 bytes
Saved Word
The handler's saved word (4E53H).
4E93H-5023H
401 bytes
Word Table
4E93H
5024H-50F0H
205 bytes
Message List
5024H

Registers

RegisterContents
AEntry: the error (bits 5-0 the number, bit 6 normal, bit 7 return). Return: the same.
BThe error with its bits, tested for bit 6 (4E19H).
CThe error number, then 00H or 20H, the case of the next word (4E1CH, 4E8BH).

Outside Routines

AddressContents
4467HSYS0/SYS: DSPLY@ (4E22H).
4030HSYS0/SYS: ABORT@ (4E45H).
0033HROM: display the character in Register A (4E2FH, 4E79H).

Disassembly

4E00H - The Routine Table

Data: SYS5/SYS's table of routines 2 and 3, one word each, used by SYS0/SYS's overlay request handler (its 49C9H-49DCH) for the request codes 42H and 43H. ERROR@ (4409H) requests 43H; no file of the diskette requests 42H.

4E00-4E01
DEFW 4E04H 04 4E
Routine 2: 4E04H, XOR A and RET, which SYS0/SYS's record locator requests when it loads SYS5/SYS back (its 4D55H-4D62H).
4E02-4E03
DEFW 4E06H 06 4E
Routine 3: 4E06H, the error routine of ERROR@.

4E04H - Routine 2

Nothing to do when SYS0/SYS's record locator brings SYS5/SYS back.

4E04
XOR A AF
Set Register A to 00H by XORing it with itself, and set the Z FLAG: routine 2 has no work to do.
4E05
RET C9
RETurn to SYS0/SYS's overlay request handler (49DDH) with Register A = 00H.

4E06H - ERROR@ - Posting an Error

Routine 3, requested by ERROR@ (4409H, PUSH AF / LD A,43H / RST 28H) with the error in Register A: bits 5-0 the error code, bit 6 clear for the message framed in asterisks, bit 7 set to return to the caller (clear to leave through ABORT@). The stack holds the overlay handler's return 49DDH, the word it saved from 4307H-4308H, the AF that ERROR@ pushed and the caller's return. The routine takes them apart itself, displays the message, stores the error to 4304H and either restores 4307H-4308H and returns to the caller of ERROR@, or jumps to ABORT@ (4030H).

4E06
INC SP 33
INCrement the Stack Pointer by 1, the first of two.
4E07
INC SP 33
INCrement the Stack Pointer by 1 again: the overlay handler's return 49DDH is dropped, so the top of the stack is the word it saved from 4307H-4308H.
4E08
EX (SP),HL E3
Exchange the top of the Stack Pointer with Register Pair HL: Register Pair HL = the saved word, and the caller's Register Pair HL goes to the stack.
4E09
LD (4E53H),HL 22 53 4E
Store Register Pair HL, the saved 4307H-4308H word, to 4E53H-4E54H.
4E0C
POP HL E1
Restore Register Pair HL from the top of the stack, the caller's.
4E0D
POP AF F1
Restore Register Pair AF from the top of the stack: the error code and flags ERROR@ pushed at 4409H.
4E0E
PUSH HL E5
Save Register Pair HL, the caller's, to the top of the stack.
4E0F
LD HL,(4E53H) 2A 53 4E
Load Register Pair HL with the saved 4307H-4308H word from 4E53H-4E54H.
4E12
EX (SP),HL E3
Exchange the top of the Stack Pointer with Register Pair HL: the saved word is on the stack above the caller's return, and Register Pair HL is the caller's.
4E13
PUSH IX DD E5
Save Index Register IX to the top of the stack.
4E15
PUSH HL E5
Save Register Pair HL to the top of the stack.
4E16
PUSH DE D5
Save Register Pair DE to the top of the stack.
4E17
PUSH BC C5
Save Register Pair BC to the top of the stack.
4E18
PUSH AF F5
Save Register Pair AF, the error code, to the top of the stack.
4E19
LD B,A 47
Load Register B with Register A, the error code with its bits 7 and 6.
4E1A
AND 3FH E6 3F
AND Register A with 3FH to keep bits 5-0, the error number.
4E1C
LD C,A 4F
Load Register C with Register A, the error number, 00H-3FH.
4E1D
LD HL,4E4EH 21 4E 4E
Point Register Pair HL to 4E4EH, the asterisks that frame an emphasized message.
4E20
BIT 6,B CB 70
Test bit 6 of Register B: clear for an emphasized message.
4E22
If the Z FLAG is set (bit 6 clear), GOSUB to 4467H (DSPLY@) in SYS0/SYS to display the text at Register Pair HL, the asterisk frame up to its 03H.
4E25
GOSUB to 4E55H to display the message of error number Register C.
4E28
BIT 6,B CB 70
Test bit 6 of Register B again: clear for an emphasized message.
4E2A
If the Z FLAG is set (bit 6 clear), GOSUB to 4467H (DSPLY@) to display the asterisk frame at Register Pair HL (4E4EH, kept by 4E55H) after the message.
4E2D
LD A,0DH 3E 0D
Load Register A with 0DH, a carriage return to end the message line.
4E2F
GOSUB to 0033H in the ROM to display the character in Register A: the message line ends.
4E32
POP AF F1
Restore Register Pair AF from the top of the stack: the error code with its bits 7 and 6.
4E33
POP BC C1
Restore Register Pair BC from the top of the stack, as the caller had it.
4E34
POP DE D1
Restore Register Pair DE from the top of the stack, as the caller had it.
4E35
POP HL E1
Restore Register Pair HL from the top of the stack, as the caller had it.
4E36
POP IX DD E1
Restore Index Register IX from the top of the stack, as the caller had it.
4E38
LD (4304H),A 32 04 43
Store Register A, the error code with its bits, to 4304H in SYS0/SYS, the last error code.
4E3B
OR A B7
OR Register A with itself to set the flags: the M FLAG when bit 7 is set (return to the caller).
4E3C
If the M FLAG is set (bit 7 set), JUMP to 4E48H to return to the caller of ERROR@.
4E3F
POP AF F1
Restore Register Pair AF from the top of the stack: it drops the saved 4307H-4308H word, which stays as the routine left it.
4E40
PUSH HL E5
Save Register Pair HL to the top of the stack, above the caller's return.
4E41
LD HL,402DH 21 2D 40
Load Register Pair HL with 402DH, the address of EXIT@ in SYS0/SYS.
4E44
EX (SP),HL E3
Exchange the top of the Stack Pointer with Register Pair HL: 402DH is on the stack and Register Pair HL is the caller's again.
4E45
JUMP to 4030H, ABORT@ in SYS0/SYS: a JP to EXIT@ (402DH), or to DEBUG@ (440DH) when DEBUG is on (SYS1/SYS sets it).
4E48
EX (SP),HL E3
Exchange the top of the Stack Pointer with Register Pair HL: Register Pair HL = the saved word and the caller's Register Pair HL goes to the stack.
4E49
LD (4307H),HL 22 07 43
Store Register Pair HL, the saved word, back to 4307H-4308H, as the overlay handler would at its 49DEH.
4E4C
POP HL E1
Restore Register Pair HL from the top of the stack, the caller's.
4E4D
RET C9
RETurn to the caller of ERROR@ with Register A = the error code (bit 7 set) and the NZ FLAG and the M FLAG set.
4E4E-4E52
DEFM "* * " / DEFB 03H 2A 20 2A 20 03
The frame of an emphasized message: an asterisk, a space, an asterisk, a space and the 03H that ends DSPLY@'s text. The manual (T/40) shows the frame as two asterisks without a space between.
4E53-4E54
DEFW 0000H 00 00
The word the overlay handler saved from 4307H-4308H, kept here by 4E09H and read at 4E0FH.

4E55H - Displaying a Message

Displays the message of error number Register C (00H-3FH) from the message list at 5024H: each message is a list of word numbers, the first with bit 7 set; each word number picks a word from the word table at 4E93H, where each word begins with a character with bit 7 set. The first word is displayed with a capital letter and the rest in lower case (OR 20H on every other character); each word is followed by a space. Register Pair HL is kept.

4E55
PUSH HL E5
Save Register Pair HL to the top of the stack.
4E56
INC C 0C
INCrement Register C by 1: the message wanted is the next one after the count of Register C bytes with bit 7.
4E57
LD HL,5024H 21 24 50
Point Register Pair HL to 5024H, the start of the message list.
4E5A
BIT 7,(HL) CB 7E
Test bit 7 of the byte at Register Pair HL, the mark of a message's first word.
4E5C
If the Z FLAG is set (not the start of a message), JUMP to 4E61H.
4E5E
DEC C 0D
DECrement Register C by 1, the message starts still to pass.
4E5F
If the Z FLAG is set (this is the message of the error), JUMP to 4E64H.
4E61
INC HL 23
INCrement Register Pair HL by 1 to the next byte of the message list.
4E62
JUMP back to 4E5AH to test the byte at Register Pair HL.
4E64
PUSH HL E5
Save Register Pair HL, the word of the message, to the top of the stack.
4E65
LD A,(HL) 7E
Load Register A with the word number at Register Pair HL.
4E66
AND 7FH E6 7F
AND Register A with 7FH to clear the mark: the word number, 1-64.
4E68
LD HL,4E93H 21 93 4E
Point Register Pair HL to 4E93H, the start of the word table.
4E6B
BIT 7,(HL) CB 7E
Test bit 7 of the byte at Register Pair HL, the mark of a word's first character.
4E6D
If the Z FLAG is set (not the start of a word), JUMP to 4E72H.
4E6F
DEC A 3D
DECrement Register A by 1, the word starts still to pass.
4E70
If the Z FLAG is set (this is the word), JUMP to 4E75H.
4E72
INC HL 23
INCrement Register Pair HL by 1 to the next byte of the word table.
4E73
JUMP back to 4E6BH to test the byte at Register Pair HL.
4E75
LD A,(HL) 7E
Load Register A with the word's first character at Register Pair HL.
4E76
OR C B1
OR Register A with Register C: 00H for the message's first word (a capital letter), 20H for the others (lower case).
4E77
AND 7FH E6 7F
AND Register A with 7FH to clear the mark bit.
4E79
GOSUB to 0033H in the ROM to display the character in Register A.
4E7C
INC HL 23
INCrement Register Pair HL by 1 to the word's next character.
4E7D
LD A,(HL) 7E
Load Register A with the next character at Register Pair HL.
4E7E
OR 20H F6 20
OR Register A with 20H: lower case for a letter (the space, / and ' stay as they are).
4E80
BIT 7,A CB 7F
Test bit 7 of Register A, set when the byte starts the next word.
4E82
If the Z FLAG is set (the same word), JUMP back to 4E79H to display the character.
4E84
LD A,20H 3E 20
Load Register A with 20H, a space after the word.
4E86
GOSUB to 0033H in the ROM to display the space in Register A.
4E89
POP HL E1
Restore Register Pair HL from the top of the stack: the word of the message.
4E8A
INC HL 23
INCrement Register Pair HL by 1 to the message's next word number.
4E8B
LD C,20H 0E 20
Load Register C with 20H, which makes the next words lower case.
4E8D
BIT 7,(HL) CB 7E
Test bit 7 of the byte at Register Pair HL, set when the next message starts.
4E8F
If the Z FLAG is set (the message goes on), JUMP back to 4E64H for the next word.
4E91
POP HL E1
Restore Register Pair HL from the top of the stack, as it came in.
4E92
RET C9
RETurn with the message displayed, a space after its last word.

4E93H - The Word Table

Data: the 64 words of the error messages, each with bit 7 set on its first character; 4E6BH counts the marked bytes to find word n. The byte at 5023H (A0H, a marked space) ends the last word.

4E93-4E94
DEFB CEH / DEFM "O" CE 4F
Word 1 of the table: NO, with bit 7 set on its first character, the N (CEH).
4E95-4E99
DEFB C5H / DEFM "RROR" C5 52 52 4F 52
Word 2 of the table: ERROR, with bit 7 set on its first character, the E (C5H).
4E9A-4E9E
DEFB C6H / DEFM "OUND" C6 4F 55 4E 44
Word 3 of the table: FOUND, with bit 7 set on its first character, the F (C6H).
4E9F-4EA1
DEFB C3H / DEFM "RC" C3 52 43
Word 4 of the table: CRC, with bit 7 set on its first character, the C (C3H).
4EA2-4EA7
DEFB C4H / DEFM "URING" C4 55 52 49 4E 47
Word 5 of the table: DURING, with bit 7 set on its first character, the D (C4H).
4EA8-4EAD
DEFB C8H / DEFM "EADER" C8 45 41 44 45 52
Word 6 of the table: HEADER, with bit 7 set on its first character, the H (C8H).
4EAE-4EB1
DEFB D2H / DEFM "EAD" D2 45 41 44
Word 7 of the table: READ, with bit 7 set on its first character, the R (D2H).
4EB2-4EB5
DEFB D3H / DEFM "EEK" D3 45 45 4B
Word 8 of the table: SEEK, with bit 7 set on its first character, the S (D3H).
4EB6-4EB9
DEFB CCH / DEFM "OST" CC 4F 53 54
Word 9 of the table: LOST, with bit 7 set on its first character, the L (CCH).
4EBA-4EBD
DEFB C4H / DEFM "ATA" C4 41 54 41
Word 10 of the table: DATA, with bit 7 set on its first character, the D (C4H).
4EBE-4EC3
DEFB D2H / DEFM "ECORD" D2 45 43 4F 52 44
Word 11 of the table: RECORD, with bit 7 set on its first character, the R (D2H).
4EC4-4EC6
DEFB CEH / DEFM "OT" CE 4F 54
Word 12 of the table: NOT, with bit 7 set on its first character, the N (CEH).
4EC7-4ED2
DEFB C1H / DEFM "TTEMPTED TO" C1 54 54 45 4D 50 54 45 44 20 54 4F
Word 13 of the table: ATTEMPTED TO, with bit 7 set on its first character, the A (C1H).
4ED3-4EE0
DEFB CCH / DEFM "OCKED/DELETED" CC 4F 43 4B 45 44 2F 44 45 4C 45 54 45 44
Word 14 of the table: LOCKED/DELETED, with bit 7 set on its first character, the L (CCH).
4EE1-4EE6
DEFB D3H / DEFM "YSTEM" D3 59 53 54 45 4D
Word 15 of the table: SYSTEM, with bit 7 set on its first character, the S (D3H).
4EE7-4EEA
DEFB C4H / DEFM "ISK" C4 49 53 4B
Word 16 of the table: DISK, with bit 7 set on its first character, the D (C4H).
4EEB-4EEF
DEFB C4H / DEFM "RIVE" C4 52 49 56 45
Word 17 of the table: DRIVE, with bit 7 set on its first character, the D (C4H).
4EF0-4EF4
DEFB D2H / DEFM "EADY" D2 45 41 44 59
Word 18 of the table: READY, with bit 7 set on its first character, the R (D2H).
4EF5-4EF9
DEFB D7H / DEFM "RITE" D7 52 49 54 45
Word 19 of the table: WRITE, with bit 7 set on its first character, the W (D7H).
4EFA-4EFE
DEFB C6H / DEFM "AULT" C6 41 55 4C 54
Word 20 of the table: FAULT, with bit 7 set on its first character, the F (C6H).
4EFF-4F00
DEFB CFH / DEFM "N" CF 4E
Word 21 of the table: ON, with bit 7 set on its first character, the O (CFH).
4F01-4F09
DEFB D0H / DEFM "ROTECTED" D0 52 4F 54 45 43 54 45 44
Word 22 of the table: PROTECTED, with bit 7 set on its first character, the P (D0H).
4F0A-4F10
DEFB C9H / DEFM "LLEGAL" C9 4C 4C 45 47 41 4C
Word 23 of the table: ILLEGAL, with bit 7 set on its first character, the I (C9H).
4F11-4F17
DEFB CCH / DEFM "OGICAL" CC 4F 47 49 43 41 4C
Word 24 of the table: LOGICAL, with bit 7 set on its first character, the L (CCH).
4F18-4F1B
DEFB C6H / DEFM "ILE" C6 49 4C 45
Word 25 of the table: FILE, with bit 7 set on its first character, the F (C6H).
4F1C-4F21
DEFB CEH / DEFM "UMBER" CE 55 4D 42 45 52
Word 26 of the table: NUMBER, with bit 7 set on its first character, the N (CEH).
4F22-4F2A
DEFB C4H / DEFM "IRECTORY" C4 49 52 45 43 54 4F 52 59
Word 27 of the table: DIRECTORY, with bit 7 set on its first character, the D (C4H).
4F2B-4F32
DEFB C9H / DEFM "MPROPER" C9 4D 50 52 4F 50 45 52
Word 28 of the table: IMPROPER, with bit 7 set on its first character, the I (C9H).
4F33-4F36
DEFB CEH / DEFM "AME" CE 41 4D 45
Word 29 of the table: NAME, with bit 7 set on its first character, the N (CEH).
4F37-4F39
DEFB C7H / DEFM "AT" C7 41 54
Word 30 of the table: GAT, with bit 7 set on its first character, the G (C7H).
4F3A-4F3C
DEFB C8H / DEFM "IT" C8 49 54
Word 31 of the table: HIT, with bit 7 set on its first character, the H (C8H).
4F3D-4F3E
DEFB C9H / DEFM "N" C9 4E
Word 32 of the table: IN, with bit 7 set on its first character, the I (C9H).
4F3F-4F44
DEFB C1H / DEFM "CCESS" C1 43 43 45 53 53
Word 33 of the table: ACCESS, with bit 7 set on its first character, the A (C1H).
4F45-4F4A
DEFB C4H / DEFM "ENIED" C4 45 4E 49 45 44
Word 34 of the table: DENIED, with bit 7 set on its first character, the D (C4H).
4F4B-4F50
DEFB C4H / DEFM "UE TO" C4 55 45 20 54 4F
Word 35 of the table: DUE TO, with bit 7 set on its first character, the D (C4H).
4F51-4F58
DEFB D0H / DEFM "ASSWORD" D0 41 53 53 57 4F 52 44
Word 36 of the table: PASSWORD, with bit 7 set on its first character, the P (D0H).
4F59-4F62
DEFB D0H / DEFM "ROTECTION" D0 52 4F 54 45 43 54 49 4F 4E
Word 37 of the table: PROTECTION, with bit 7 set on its first character, the P (D0H).
4F63-4F67
DEFB D3H / DEFM "PACE" D3 50 41 43 45
Word 38 of the table: SPACE, with bit 7 set on its first character, the S (D3H).
4F68-4F6B
DEFB C6H / DEFM "ULL" C6 55 4C 4C
Word 39 of the table: FULL, with bit 7 set on its first character, the F (C6H).
4F6C-4F73
DEFB D0H / DEFM "AST EOF" D0 41 53 54 20 45 4F 46
Word 40 of the table: PAST EOF, with bit 7 set on its first character, the P (D0H).
4F74-4F7D
DEFB CFH / DEFM "UTSIDE OF" CF 55 54 53 49 44 45 20 4F 46
Word 41 of the table: OUTSIDE OF, with bit 7 set on its first character, the O (CFH).
4F7E-4F83
DEFB CCH / DEFM "IMITS" CC 49 4D 49 54 53
Word 42 of the table: LIMITS, with bit 7 set on its first character, the L (CCH).
4F84-4F8F
DEFB C3H / DEFM "AN'T EXTEND" C3 41 4E 27 54 20 45 58 54 45 4E 44
Word 43 of the table: CAN'T EXTEND, with bit 7 set on its first character, the C (C3H).
4F90-4F96
DEFB D0H / DEFM "ROGRAM" D0 52 4F 47 52 41 4D
Word 44 of the table: PROGRAM, with bit 7 set on its first character, the P (D0H).
4F97-4F9F
DEFB C1H / DEFM "VAILABLE" C1 56 41 49 4C 41 42 4C 45
Word 45 of the table: AVAILABLE, with bit 7 set on its first character, the A (C1H).
4FA0-4FA6
DEFB D5H / DEFM "SE NON" D5 53 45 20 4E 4F 4E
Word 46 of the table: USE NON, with bit 7 set on its first character, the U (D5H).
4FA7-4FAA
DEFB C1H / DEFM "S A" C1 53 20 41
Word 47 of the table: AS A, with bit 7 set on its first character, the A (C1H).
4FAB-4FB0
DEFB CDH / DEFM "EMORY" CD 45 4D 4F 52 59
Word 48 of the table: MEMORY, with bit 7 set on its first character, the M (CDH).
4FB1-4FB4
DEFB CCH / DEFM "OAD" CC 4F 41 44
Word 49 of the table: LOAD, with bit 7 set on its first character, the L (CCH).
4FB5-4FB8
DEFB CFH / DEFM "NLY" CF 4E 4C 59
Word 50 of the table: ONLY, with bit 7 set on its first character, the O (CFH).
4FB9-4FBB
DEFB C9H / DEFM "/O" C9 2F 4F
Word 51 of the table: I/O, with bit 7 set on its first character, the I (C9H).
4FBC-4FC1
DEFB D5H / DEFM "NOPEN" D5 4E 4F 50 45 4E
Word 52 of the table: UNOPEN, with bit 7 set on its first character, the U (D5H).
4FC2-4FC8
DEFB C9H / DEFM "NVALID" C9 4E 56 41 4C 49 44
Word 53 of the table: INVALID, with bit 7 set on its first character, the I (C9H).
4FC9-4FCE
DEFB C4H / DEFM "EVICE" C4 45 56 49 43 45
Word 54 of the table: DEVICE, with bit 7 set on its first character, the D (C4H).
4FCF-4FD1
DEFB D5H / DEFM "SE" D5 53 45
Word 55 of the table: USE, with bit 7 set on its first character, the U (D5H).
4FD2-4FD9
DEFB C6H / DEFM "ILESPEC" C6 49 4C 45 53 50 45 43
Word 56 of the table: FILESPEC, with bit 7 set on its first character, the F (C6H).
4FDA-4FE3
DEFB C4H / DEFM "EVICESPEC" C4 45 56 49 43 45 53 50 45 43
Word 57 of the table: DEVICESPEC, with bit 7 set on its first character, the D (C4H).
4FE4-4FEB
DEFB D0H / DEFM "ROVIDED" D0 52 4F 56 49 44 45 44
Word 58 of the table: PROVIDED, with bit 7 set on its first character, the P (D0H).
4FEC-4FF4
DEFB D0H / DEFM "ARAMETER" D0 41 52 41 4D 45 54 45 52
Word 59 of the table: PARAMETER, with bit 7 set on its first character, the P (D0H).
4FF5-4FFE
DEFB D4H / DEFM "ERMINATED" D4 45 52 4D 49 4E 41 54 45 44
Word 60 of the table: TERMINATED, with bit 7 set on its first character, the T (D4H).
4FFF-5005
DEFB C1H / DEFM "LREADY" C1 4C 52 45 41 44 59
Word 61 of the table: ALREADY, with bit 7 set on its first character, the A (C1H).
5006-500B
DEFB C5H / DEFM "XISTS" C5 58 49 53 54 53
Word 62 of the table: EXISTS, with bit 7 set on its first character, the E (C5H).
500C-5010
DEFB C6H / DEFM "IELD" C6 49 45 4C 44
Word 63 of the table: FIELD, with bit 7 set on its first character, the F (C6H).
5011-5022
DEFB D5H / DEFM "NKNOWN ERROR CODE" D5 4E 4B 4E 4F 57 4E 20 45 52 52 4F 52 20 43 4F 44 45
Word 64 of the table: UNKNOWN ERROR CODE, with bit 7 set on its first character, the U (D5H).
5023
DEFB 80H 80
The end of the word table: a byte with only bit 7 set, which ends word 64 for the character loop at 4E7DH-4E82H. It is never displayed.

5024H - The Message List

Data: the messages of the errors 00H-3FH, each a list of word numbers with bit 7 set on the first; 4E5AH counts the marked bytes to find message n. Errors 33H-3FH all give word 64, Unknown error code. The byte at 50F0H (80H) ends the last message.

5024-5026
DEFB 81H,02H,03H 81 02 03
Error 00H (0): No error found. Words 1, 2, 3; bit 7 is set on the first (81H).
5027-502B
DEFB 84H,02H,05H,06H,07H 84 02 05 06 07
Error 01H (1): Crc error during header read. Words 4, 2, 5, 6, 7; bit 7 is set on the first (84H).
502C-502F
DEFB 88H,02H,05H,07H 88 02 05 07
Error 02H (2): Seek error during read. Words 8, 2, 5, 7; bit 7 is set on the first (88H).
5030-5033
DEFB 89H,0AH,05H,07H 89 0A 05 07
Error 03H (3): Lost data during read. Words 9, 10, 5, 7; bit 7 is set on the first (89H).
5034-5037
DEFB 84H,02H,05H,07H 84 02 05 07
Error 04H (4): Crc error during read. Words 4, 2, 5, 7; bit 7 is set on the first (84H).
5038-503D
DEFB 8AH,0BH,0CH,03H,05H,07H 8A 0B 0C 03 05 07
Error 05H (5): Data record not found during read. Words 10, 11, 12, 3, 5, 7; bit 7 is set on the first (8AH).
503E-5042
DEFB 8DH,07H,0EH,0AH,0BH 8D 07 0E 0A 0B
Error 06H (6): Attempted to read locked/deleted data record. Words 13, 7, 14, 10, 11; bit 7 is set on the first (8DH).
5043-5047
DEFB 8DH,07H,0FH,0AH,0BH 8D 07 0F 0A 0B
Error 07H (7): Attempted to read system data record. Words 13, 7, 15, 10, 11; bit 7 is set on the first (8DH).
5048-504A
DEFB 91H,0CH,2DH 91 0C 2D
Error 08H (8): Drive not available. Words 17, 12, 45; bit 7 is set on the first (91H).
504B-504F
DEFB 84H,02H,05H,06H,13H 84 02 05 06 13
Error 09H (9): Crc error during header write. Words 4, 2, 5, 6, 19; bit 7 is set on the first (84H).
5050-5053
DEFB 88H,02H,05H,13H 88 02 05 13
Error 0AH (10): Seek error during write. Words 8, 2, 5, 19; bit 7 is set on the first (88H).
5054-5057
DEFB 89H,0AH,05H,13H 89 0A 05 13
Error 0BH (11): Lost data during write. Words 9, 10, 5, 19; bit 7 is set on the first (89H).
5058-505B
DEFB 84H,02H,05H,13H 84 02 05 13
Error 0CH (12): Crc error during write. Words 4, 2, 5, 19; bit 7 is set on the first (84H).
505C-5061
DEFB 8AH,0BH,0CH,03H,05H,13H 8A 0B 0C 03 05 13
Error 0DH (13): Data record not found during write. Words 10, 11, 12, 3, 5, 19; bit 7 is set on the first (8AH).
5062-5066
DEFB 93H,14H,15H,10H,11H 93 14 15 10 11
Error 0EH (14): Write fault on disk drive. Words 19, 20, 21, 16, 17; bit 7 is set on the first (93H).
5067-5069
DEFB 93H,16H,10H 93 16 10
Error 0FH (15): Write protected disk. Words 19, 22, 16; bit 7 is set on the first (93H).
506A-506D
DEFB 97H,18H,19H,1AH 97 18 19 1A
Error 10H (16): Illegal logical file number. Words 23, 24, 25, 26; bit 7 is set on the first (97H).
506E-5070
DEFB 9BH,07H,02H 9B 07 02
Error 11H (17): Directory read error. Words 27, 7, 2; bit 7 is set on the first (9BH).
5071-5073
DEFB 9BH,13H,02H 9B 13 02
Error 12H (18): Directory write error. Words 27, 19, 2; bit 7 is set on the first (9BH).
5074-5076
DEFB 9CH,19H,1DH 9C 19 1D
Error 13H (19): Improper file name. Words 28, 25, 29; bit 7 is set on the first (9CH).
5077-5079
DEFB 9EH,07H,02H 9E 07 02
Error 14H (20): Gat read error. Words 30, 7, 2; bit 7 is set on the first (9EH).
507A-507C
DEFB 9EH,13H,02H 9E 13 02
Error 15H (21): Gat write error. Words 30, 19, 2; bit 7 is set on the first (9EH).
507D-507F
DEFB 9FH,07H,02H 9F 07 02
Error 16H (22): Hit read error. Words 31, 7, 2; bit 7 is set on the first (9FH).
5080-5082
DEFB 9FH,13H,02H 9F 13 02
Error 17H (23): Hit write error. Words 31, 19, 2; bit 7 is set on the first (9FH).
5083-5086
DEFB 99H,0CH,20H,1BH 99 0C 20 1B
Error 18H (24): File not in directory. Words 25, 12, 32, 27; bit 7 is set on the first (99H).
5087-508C
DEFB 99H,21H,22H,23H,24H,25H 99 21 22 23 24 25
Error 19H (25): File access denied due to password protection. Words 25, 33, 34, 35, 36, 37; bit 7 is set on the first (99H).
508D-508F
DEFB 9BH,26H,27H 9B 26 27
Error 1AH (26): Directory space full. Words 27, 38, 39; bit 7 is set on the first (9BH).
5090-5092
DEFB 90H,26H,27H 90 26 27
Error 1BH (27): Disk space full. Words 16, 38, 39; bit 7 is set on the first (90H).
5093-5095
DEFB 8DH,07H,28H 8D 07 28
Error 1CH (28): Attempted to read past eof. Words 13, 7, 40; bit 7 is set on the first (8DH).
5096-509A
DEFB 8DH,07H,29H,19H,2AH 8D 07 29 19 2A
Error 1DH (29): Attempted to read outside of file limits. Words 13, 7, 41, 25, 42; bit 7 is set on the first (8DH).
509B-509E
DEFB 9BH,27H,2BH,19H 9B 27 2B 19
Error 1EH (30): Directory full can't extend file. Words 27, 39, 43, 25; bit 7 is set on the first (9BH).
509F-50A1
DEFB ACH,0CH,03H AC 0C 03
Error 1FH (31): Program not found. Words 44, 12, 3; bit 7 is set on the first (ACH).
50A2-50A4
DEFB 9CH,11H,1AH 9C 11 1A
Error 20H (32): Improper drive number. Words 28, 17, 26; bit 7 is set on the first (9CH).
50A5-50A8
DEFB 81H,30H,26H,2DH 81 30 26 2D
Error 21H (33): No memory space available. Words 1, 48, 38, 45; bit 7 is set on the first (81H).
50A9-50AE
DEFB 8DH,2EH,2CH,19H,2FH,2CH 8D 2E 2C 19 2F 2C
Error 22H (34): Attempted to use non program file as a program. Words 13, 46, 44, 25, 47, 44; bit 7 is set on the first (8DH).
50AF-50B3
DEFB B0H,14H,05H,2CH,31H B0 14 05 2C 31
Error 23H (35): Memory fault during program load. Words 48, 20, 5, 44, 49; bit 7 is set on the first (B0H).
50B4-50B8
DEFB 8DH,31H,07H,32H,30H 8D 31 07 32 30
Error 24H (36): Attempted to load read only memory. Words 13, 49, 7, 50, 48; bit 7 is set on the first (8DH).
50B9-50BD
DEFB 97H,21H,0DH,16H,19H 97 21 0D 16 19
Error 25H (37): Illegal access attempted to protected file. Words 23, 33, 13, 22, 25; bit 7 is set on the first (97H).
50BE-50C1
DEFB B3H,0DH,34H,19H B3 0D 34 19
Error 26H (38): I/o attempted to unopen file. Words 51, 13, 52, 25; bit 7 is set on the first (B3H).
50C2-50C4
DEFB B6H,20H,37H B6 20 37
Error 27H (39): Device in use. Words 54, 32, 55; bit 7 is set on the first (B6H).
50C5-50C7
DEFB 96H,0FH,36H 96 0F 36
Error 28H (40): Protected system device. Words 22, 15, 54; bit 7 is set on the first (96H).
50C8-50CA
DEFB B6H,0CH,2DH B6 0C 2D
Error 29H (41): Device not available. Words 54, 12, 45; bit 7 is set on the first (B6H).
50CB-50CE
DEFB 81H,36H,26H,2DH 81 36 26 2D
Error 2AH (42): No device space available. Words 1, 54, 38, 45; bit 7 is set on the first (81H).
50CF-50D0
DEFB 97H,39H 97 39
Error 2BH (43): Illegal devicespec. Words 23, 57; bit 7 is set on the first (97H).
50D1-50D2
DEFB 97H,38H 97 38
Error 2CH (44): Illegal filespec. Words 23, 56; bit 7 is set on the first (97H).
50D3-50D5
DEFB B5H,0AH,3AH B5 0A 3A
Error 2DH (45): Invalid data provided. Words 53, 10, 58; bit 7 is set on the first (B5H).
50D6-50D7
DEFB B5H,3BH B5 3B
Error 2EH (46): Invalid parameter. Words 53, 59; bit 7 is set on the first (B5H).
50D8-50DB
DEFB B3H,3FH,0CH,03H B3 3F 0C 03
Error 2FH (47): I/o field not found. Words 51, 63, 12, 3; bit 7 is set on the first (B3H).
50DC
DEFB BCH BC
Error 30H (48): Terminated. Words 60; bit 7 is set on the first (BCH).
50DD-50DF
DEFB 99H,3DH,3EH 99 3D 3E
Error 31H (49): File already exists. Words 25, 61, 62; bit 7 is set on the first (99H).
50E0-50E2
DEFB B6H,3DH,3EH B6 3D 3E
Error 32H (50): Device already exists. Words 54, 61, 62; bit 7 is set on the first (B6H).
50E3
DEFB C0H C0
Error 33H (51): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50E4
DEFB C0H C0
Error 34H (52): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50E5
DEFB C0H C0
Error 35H (53): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50E6
DEFB C0H C0
Error 36H (54): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50E7
DEFB C0H C0
Error 37H (55): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50E8
DEFB C0H C0
Error 38H (56): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50E9
DEFB C0H C0
Error 39H (57): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50EA
DEFB C0H C0
Error 3AH (58): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50EB
DEFB C0H C0
Error 3BH (59): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50EC
DEFB C0H C0
Error 3CH (60): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50ED
DEFB C0H C0
Error 3DH (61): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50EE
DEFB C0H C0
Error 3EH (62): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50EF
DEFB C0H C0
Error 3FH (63): Unknown error code. Words 64; bit 7 is set on the first (C0H).
50F0
DEFB 80H 80
The end of the message list: a marked byte after error 3FH, which ends its message for 4E8DH. 50F0H is the last byte of SYS5/SYS.