TRS-80 DOS – TRSDOS v1.3 – SYS08/SYS Disassembled

General:

SYS08/SYS handles the HELP command.


Disassembly:

 
ORG 4E00H
“START”
4E00
PUSH HL
Save the command line (pointed to by Register Pair HL) to the top of the stack.
4E01
LD HL,OVLFLG
LET Register Pair HL = 442BH which is OVERLAY FLAG.
4E04
RES 4,(HL)
RESet (i.e., set as 0) BIT 4 of the overlay flag to signify that SYS06/SYS is not resident in RAM.
4E06
POP HL
Restore the command line from top of the STACK into Register Pair HL, and then remove the entry from the stack.
“HELP”
4E07
CALL SKIPSP
     [4E97H]
GOSUB to the routine at 4E97H to fetch the current character of the command line, skipping spaces. Register HL is updated to point to that first non-space character.
4E0A
CP 0DH
Compare the value held in Register A against 0DH (ASCII: CARRIAGE RETURN). Results: If Register A equals CARRIAGE RETURN, the Z FLAG is set; otherwise the NZ FLAG is set.
4E0C
JR NZ,HELP6
      [4E45H]
If the NZ FLAG (Not Zero) has been set that means that there was a parameter given, since the routine at 4E97 returns non-space characters and it wasn’t a CARRIAGE RETURN. JUMP to 4E45H.

4E0EH – Routine if HELP is entered with No Parameters.

“HLPFLT”
4E0E
LD HL,HLPMSG
LET Register Pair HL = 4F90H to point to the message “HELP is available for the following:“.
4E11
CALL 021BH
     [021BH]
GOSUB to 021BH.
NOTE: 021BH is the Model III ROM routine to display the character at (HL) until a 03H is found.
4E14
LD HL,HLPTAB
LET Register Pair HL = 4EB6H, which is a pointer to ASCII Help Command Lookup Table (which is a length byte followed by the library command).
“HELP1”
4E17
LD A,(HL)
Fetch the length byte (stored at memory location pointed to by Register Pair HL) and put it into Register A.
4E18
OR A
Since a LD command does not set any FLAGS, Set FLAGS based on the contents of Register A (and, in all events, clear the CARRY FLAG).
4E19
RET Z
If we ran out of table then the Z FLAG (Zero) has been set; we are done, so RETurn to the caller to exit to DOS.

4E1AH – Help Table Lookup – If we didn’t run out of table, continue here.

4E1A
PUSH HL
Save the pointer to ASCII Help Command Lookup Table (pointed to by Register Pair HL) to the top of the stack.
4E1B
LD B,(HL)
Fetch the length of the parameter (stored at memory location pointed to by Register Pair HL) and put it into Register B.
4E1C
INC HL
Point Register Pair HL to first ASCII character of the library command by INCrementing the value stored in Register Pair HL by 1.
4E1D
CALL DSPLY
     [4E7EH]
Output the parameter pointed to by Register Pair HL to the screen via a GOSUB to 4E7EH. That routine requires B to be set to the number of characters to display, and HL to point to the message to be displayed.
4E20
LD A,(4020H)
Fetch the value stored at memory location 4020H and put it into Register A.
NOTE: 4020H is the storage location for the CURSOR POSITION ON SCREEN.
4E23
AND 3FH
MASK the value of Register A against 3FH (0011 1111). This has the effect of turning leaving only the row bits (5, 4, 3, 2, 1, 0) active.
4E25
CP 38H
Check to see if we are at column 56 or beyond the screen by comparing the value held in Register A against 38H (Decimal: 56). Results:
  • If Register A equals 56, the Z FLAG is set.
  • If A < 56, the CARRY FLAG will be set.
  • if A >= 56, the NO CARRY FLAG will be set.
4E27
JR C,HELP3
     [4E30H]
If we are < column 56, the C FLAG (Carry) will have been set, and we do not need to start a new line; so bypass the code to start a new line by JUMPing to 4E30H.

4E29H – Help Table Display – Position the cursor to the start of a new line and continue at 4E3DH.

4E29
LD A,0DH
LET Register A = 0DH (0000 1101) / (Decimal: 13)(ASCII: CARRIAGE RETURN).
4E2B
CALL 0033H
     [0033H]
GOSUB to 0033H.
NOTE: 0033H is the Model III ROM character print routine; displays the character held in Register A at the current cursor position.
4E2E
JR HELP5
   [4E3DH]
JUMP to 4E3DH.

4E30H – Help Table Message Display – Jumped here if we didn’t need to start a new line on screen. On entry Register A holds the current screen column position.

“HELP3”
4E30
NEG
We need to see how many spaces are needed to get to the next tab stop. First, negate the contents of Register A (which is the same as -A).
4E32
AND 07H
MASK the value of Register A against 07H (0000 0111) to leave only bits 2, 1, 0 active, making 8 (which is the TAB length) the highest number.
4E34
INC A
INCrement the value stored in Register A by 1, which is now the number of spaces we need to get to the next tab stop.
4E35
LD B,A
To space to the next tab stop we will be using a DJNZ loop, which requires Register B to be the loop counter; so LET Register B = the number of spaces to move (held in Register A).
“HELP4”
4E36
LD A,20H
LET Register A = 20H (ASCII: SPACE).
4E38
CALL 0033H
     [0033H]
GOSUB to 0033H.
NOTE: 0033H is the Model III ROM character print routine; displays the character held in Register A at the current cursor position.
4E3B
DJNZ HELP4
     [4E36H]
LOOP back to 4E36H, reducing Register B each time, and continue to LOOP until Register B has been reduced to ZERO, in which case, continue with the next instruction.

At this point we are now positioned on the screen at the appropriate tab stop.

“HELP5”
4E3D
POP HL
Restore the pointer to ASCII Help Command Lookup Table from the top of the stack back into Register Pair HL.
4E3E
4E3F
LD C,(HL)
LD B,00H
Let Register Pair BC = the length of the parameter (which is in the memory location pointed to by Register Pair HL).

We now want to point HL to the next entry in the table.

4E41
INC HL
INCrement the value stored in Register Pair HL by 1.
4E42
ADD HL,BC
Point to the next entry in the ASCII Help Command Lookup Table by adding Register BC to Register Pair HL (i.e., the pointer in the table).
4E43
JR HELP1
   [4E17H]
LOOP back to 4E17H to process the next entry in the table.

4E45H – Process the Command Line.

“HELP6”
4E45
EX DE,HL
EXchange the value stored in Register Pair HL (i.e., the command line) with the value stored in Register Pair DE (i.e, irrelevant).
4E46
LD HL,HLPTAB
LET Register Pair HL = 4EB6H, which is a pointer to ASCII Help Command Lookup Table (which is a length byte followed by the library command).
4E49
LD B,01H
LET Register B = 01H for a loop counter.
“HELP7”
4E4B
LD A,(HL)
Fetch the length byte (stored at memory location pointed to by Register Pair HL) and put it into Register A.
4E4C
OR A
Since a LD command does not set any FLAGS, Set FLAGS based on the contents of Register A (and, in all events, clear the CARRY FLAG).
4E4D
JR Z,HLPFLT
     [4E0EH]
If the Z FLAG (Zero) has been set, then we are at the end of the table; so JUMP to 4E0EH to display the entire HELP table.
4E4F
PUSH BC
Save the counter to the current entry number (held in Register B) to the top of the stack.
4E50
4E51
LD C,(HL)
LD B,00H
Fetch the length of the parameter (i.e., the value stored at memory location pointed to by Register Pair HL) and put it into Register Pair BC.
4E53
INC HL
INCrement the pointer in the ASCII Help Command Lookup Table to the first character by bumping HL by 1.
4E54
CALL COMPAR
     [4E86H]
Compare the first characters by GOSUBing to 4E86H.
4E57
JR Z,HELP8
     [4E5EH]
If we have a match then that routine will have set the Z FLAG (Zero); JUMP to 4E5EH.
4E59
ADD HL,BC
If we are here then we had a mismatch, so move to the next entry in the ASCII Help Command Lookup Table by adding BC to the pointer in the help table (i.e. HL).
4E5A
POP BC
Restore the counter/entry number we just checked from the top of the STACK into Register Pair BC, and then remove the entry from the stack.
4E5B
INC B
INCrement the counter/entry number (stored in Register B) by 1.
4E5C
JR HELP7
   [4E4BH]
LOOP back to 4E4BH to process the next entry.

4E5EH – We have a match between the HELP command wanted and the HELP command found in the lookup table.

“HELP8”
4E5E
POP BC
Restore the current counter/entry number from the top of the STACK into Register Pair BC, and then remove the entry from the stack.
4E5F
LD A,B
LET Register A = the current counter/entry number (held in Register B).
4E60
LD HL,COMTAB
LET Register Pair HL = 4FB5H, which is the pointer table to the message to display on screen based on the counter byte. This table is set up in 3 byte segments, the first is the counter and the second is the LSB/MSB byte combination to the table entry with the help messages to display.
4E63
CALL GETTAB
     [4E9EH]
Get the text pointer by GOSUBing to 4E9EH.
4E66
JR C,HLPFLT
     [4E0EH]
If the C FLAG (Carry) has been set then that GOSUB exited with an error; so JUMP to 4E0EH to treat it as if no parameters was given, and display the entire HELP table.

4E68H – Display the HELP entry. The associated table is 1 byte comprising the number of lines to display, followed by that number of DEFT’s of the text to display.

“HELP9”
4E68
LD A,0DH
Move to a new line by setting Register A = 0DH (ASCII: CARRIAGE RETURN).
4E6A
CALL 0033H
     [0033H]
GOSUB to 0033H.
NOTE: 0033H is the Model III ROM character print routine; displays the character held in Register A at the current cursor position.
4E6D
LD B,(HL)
Fetch the number of lines to display (stored at memory location pointed to by Register Pair HL) and put it into Register B.
4E6E
INC HL
Bump Register Pair HL by 1 to now point to the first line of help text to display.
“HELP10”
4E6F
PUSH BC
Save the number of lines to display (held in Register B) to the top of the stack.
4E70
LD B,(HL)
Fetch the length of the current text line (stored at memory location pointed to by Register Pair HL) and put it into Register B.
4E71
INC HL
Bump Register Pair HL by 1 to point to the first line of text to display.
4E72
CALL DSPLY
     [4E7EH]
Display the current text line via a GOSUB to 4E7EH. That routine requires B to be set to the number of characters to display, and HL to point to the message to be displayed.
4E75
LD A,0DH
LET Register A = 0DH (ASCII: CARRIAGE RETURN).
4E77
CALL 0033H
     [0033H]
GOSUB to 0033H.
NOTE: 0033H is the Model III ROM character print routine; displays the character held in Register A at the current cursor position.
4E7A
POP BC
Restore the number of lines left from the top of the STACK into Register Pair BC, and then remove the entry from the stack.
4E7B
DJNZ HELP10
     [4E6FH]
LOOP back to 4E6FH, reducing Register B each time, and continue to LOOP until Register B has been reduced to ZERO, in which case, continue with the next instruction.
4E7D
RET
We are done! RETurn to the caller.

4E7EH – Subroutine – Display Register B number of characters of the message pointed to by Register Pair HL.

“DSPLY”
4E7E
LD A,(HL)
Fetch a character from the line to display (stored at memory location pointed to by Register Pair HL) and put it into Register A.
4E7F
CALL 0033H
     [0033H]
GOSUB to 0033H.
NOTE: 0033H is the Model III ROM character print routine; displays the character held in Register A at the current cursor position.
4E82
INC HL
INCrement the value stored in Register Pair HL by 1.
4E83
DJNZ 4E7EH
     [4E7EH]
LOOP back to 4E7EH, reducing Register B each time, and continue to LOOP until Register B has been reduced to ZERO, in which case, continue with the next instruction.
4E85
RET
RETurn to the caller.

4E86H – Subroutine – Check to if the parameter entry in the table (pointed to by Register Pair HL) matches the command line.

“COMPAR”
4E86
PUSH BC
Save Register Pair BC to the top of the stack.
4E87
PUSH DE
Save Register Pair DE to the top of the stack.
4E88
PUSH HL
Save Register Pair HL to the top of the stack.
“COMPA1”
4E89
LD A,(DE)
Fetch the requested parameter (stored at memory location pointed to by Register Pair DE) and put it into Register A.
4E8A
CP (HL)
Compare the table entry (held in the memory location (HL)) against the requested parameter (held in Register A). Results: If they match, the Z FLAG is set; otherwise the NZ FLAG is set.
4E8B
JR NZ,COMPA2
      [4E93H]
If they didn’t match, the NZ FLAG (Not Zero) would have been set and we are just going to exit via a JUMP to 4E93H.

4E8DH – Continuation of 4E86H Subroutine – Fall through if there is a match between the nth character of the requested parameter and the the nth character of the found one.

4E8D
LDI
Move to the 2nd character of both HL and DE via LDI command; which copies BC number of characters from (HL) to (DE), dropping BC each time. When BC hits 0, the PE flag is reset.
4E8F
JP PE,COMPA1
      [4E89H]
If the PE flag is set, then continue to loop through the entire entry via a JUMP to 4E89H.

4E92H – Continuation of 4E86H Subroutine – Fall through if the match has been found and processed.

4E92
XOR A
Set Register A to ZERO and clear all flags. This will set the Z FLAG to indicate success
“COMPA2”
4E93
POP HL
Put the value held at the top of the STACK into Register Pair HL, and then remove the entry from the stack.
4E94
POP DE
Put the value held at the top of the STACK into Register Pair DE, and then remove the entry from the stack.
4E95
POP BC
Put the value held at the top of the STACK into Register Pair BC, and then remove the entry from the stack.
4E96
RET
RETurn to the caller.

4E97H – Subroutine to fetch the current character of the command line which is NOT a space into Register A. Register HL is updated to point to that first non-space character.

“SKIPSP”
4E97
LD A,(HL)
Fetch the value stored at memory location pointed to by Register Pair HL and put it into Register A.
4E98
CP 20H
Compare the value held in Register A against 20H (ASCII: SPACE). If Register A equals SPACE, the Z FLAG is set; otherwise the NZ FLAG is set.
4E9A
RET NZ
If we had a NON-SPACE, the NZ FLAG (Not Zero) will have been set, RETurn to the caller.
4E9B
INC HL
Point to the next character by INCrementing the value stored in Register Pair HL by 1.
4E9C
JR SKIPSP
   [4E97H]
LOOP back to 4E97H.

4E9EH – Subroutine, when we have found the entry we are looking for (in A), so we need to look up the location of the text to display.

“GETTAB”
4E9E
LD C,A
LET Register C = the current counter/entry number (held in Register A).
“GETTA1”
4E9F
LD A,(HL)
Fetch the character of the pointer table to the message to display on screen (Register Pair HL) and put it into Register A.
4EA0
OR A
Since a LD command does not set any FLAGS, Set FLAGS based on the contents of Register A (and, in all events, clear the CARRY FLAG).
4EA1
JR NZ,GETTA2
      [4EA6H]
If Register A is not 0, then we have not hit the end of the parameter table and the NZ FLAG (Not Zero) has been set, JUMP to 4EA6H.
4EA3
LD A,C
Restore the current counter/entry number (held in Register C) into Register A.
4EA4
SCF
Turn the CARRY FLAG on to indicate an error.
4EA5
RET
RETurn to the caller.

4EA6H – Continuation of the Subroutine at 4E9EH, jumped if we have not hit the end of the parameter table.

“GETTA2”
4EA6
CP C
Check to see if the first byte of the Pointer table to the message to display on screen (held in Register A) matches the counter byte (held in Register C). Results: If Register they match, the Z FLAG is set; otherwise the NZ FLAG is set.
4EA7
JR Z,GETTA3
     [4EAEH]
If they match, then the Z FLAG (Zero) will have been set, JUMP to 4EAEH.
4EA9
4EAA
4EAB
INC HL
INC HL
INC HL
Bump Register Pair HL by 3 to point to the next entry, since each entry in that table is 3 bytes long – counter byte, LSB, and MSB.
4EAC
JR GETTA1
   [4E9FH]
Loop back to 4E9FH to process the next entry.

4EAEH – Continuation of the Subroutine at 4E9EH, jumped if we have a match to get the address based on the match.

“GETTA3”
4EAE
INC HL
INCrement the value stored in Register Pair HL by 1 to now point to the next byte which is the LSB of the location for the applicable HELP message to display.
4EAF
LD A,(HL)
Fetch the value stored (which would be the LSB of the pointer to the text) at memory location pointed to by Register Pair HL and put it into Register A.
4EB0
INC HL
INCrement the value stored in Register Pair HL by 1 to point to the next character in the applicable text.
4EB1
LD H,(HL)
Fetch the value stored (which would be the MSB of the pointer to the text) at memory location pointed to by Register Pair HL and put it into Register H.
4EB2
LD L,A
LET Register L = Register A so that Register Pair HL now points to the applicable text.
4EB3
OR A
Set FLAGS based on the contents of Register A (and, in all events, clear the CARRY FLAG).
4EB4
LD A,C
LET Register A = the actual/final parameter number (held in Register C).
4EB5
RET
RETurn to the caller with the CARRY FLAG set.

4EB6H – ASCII Lookup Table.

“HLPTAB”
4EB6
DEFB 06
The length of the APPEND command
4EB7
DEFM ‘APPEND’
 
4EBD
DEFB 06
The length of the ATTRIB command.
4EBE
DEFM ‘ATTRIB’
 
4EC4
DEFB 04
The length of the AUTO command.
4EC5
DEFM ‘AUTO’
 
4EC9
DEFB 06
The length of the BACKUP command.
4ECA
DEFM ‘BACKUP’
 
4ED0
DEFB 05
The length of the BUILD command.
4ED1
DEFM ‘BUILD’
 
4ED6
DEFB 5
The length of the CLEAR command.
4ED7
DEFM ‘CLEAR’
 
4EDC
DEFB 05
The length of the CLOCK command.
4EDD
DEFM ‘CLOCK’
 
4EE2
DEFB 03
The length of the CLS command.
4EE3
DEFM ‘CLS’
 
4EE6
DEFB 04
The length of the COPY command.
4EE7
DEFM ‘COPY’
 
4EEB
DEFB 06
The length of the CREATE command.
4EEC
DEFM ‘CREATE’
 
4EF2
DEFB 04
The length of the DATE command.
4EF3
DEFM ‘DATE’
 
4EF7
DEFB 05
The length of the DEBUG command.
4EF8
DEFM ‘DEBUG’
 
4EFD
DEFB 03
The length of the DIR command.
4EFE
DEFM ‘DIR’
 
4F01
DEFB 02
The length of the DO command.
4F02
DEFM ‘DO’
 
4F04
DEFB 04
The length of the DUAL command.
4F05
DEFM ‘DUAL’
 
4F09
DEFB 04
The length of the DUMP command.
4F0A
DEFM ‘DUMP’
 
4F0E
DEFB 05
The length of the ERROR command.
4F0F
DEFM ‘ERROR’
 
4F14
DEFB 05
The length of the FSPEC command.
4F15
DEFM ‘FSPEC’
 
4F1A
DEFB 05
The length of the FORMS command.
4F1B
DEFM ‘FORMS’
 
4F20
DEFB 06
The length of the FORMAT command.
4F21
DEFM ‘FORMAT’
 
4F27
DEFB 04
The length of the FREE command.
4F28
DEFM ‘FREE’
 
4F2C
DEFB 04
The length of the HELP command.
4F2D
DEFM ‘HELP’
 
4F31
DEFB 04
The length of the KILL command.
4F32
DEFM ‘KILL’
 
4F36
DEFB 03
The length of the LIB command.
4F37
DEFM ‘LIB’
 
4F3A
DEFB 04
The length of the LIST command.
4F3B
DEFM ‘LIST’
 
4F3F
DEFB 04
The length of the LOAD command.
4F40
DEFM ‘LOAD’
 
4F44
DEFB 06
The length of the MASTER command.
4F45
DEFM ‘MASTER’
 
4F4B
DEFB 05
The length of the PATCH command.
4F4C
DEFM ‘PATCH’
 
4F51
DEFB 05
The length of the PAUSE command.
4F52
DEFM ‘PAUSE’
 
4F57
DEFB 04
The length of the PROT command.
4F58
DEFM ‘PROT’
 
4F5C
DEFB 05
The length of the PURGE command.
4F5D
DEFM ‘PURGE’
 
4F62
DEFB 04
The length of the RELO command.
4F63
DEFM ‘RELO’
 
4F67
DEFB 06
The length of the RENAME command.
4F68
DEFM ‘RENAME’
 
4F6E
DEFB 05
The length of the ROUTE command.
4F6F
DEFM ‘ROUTE’
 
4F74
DEFB 06
The length of the SETCOM command.
4F75
DEFM ‘SETCOM’
 
4F7B
DEFB 06
The length of the SYNTAX command.
4F7C
DEFM ‘SYNTAX’
 
4F82
DEFB 04
The length of the TAPE command.
4F83
DEFM ‘TAPE’
 
4F87
DEFB 04
The length of the TIME command.
4F88
DEFM ‘TIME’
 
4F8C
DEFB 02
The length of the WP command.
4F8D
DEFM ‘WP’
 
4F8F
DEFB 00H
This is the table terminator.

4F90H – MESSAGE STORAGE AREA.

“HLPMSG”
4F90
DEFM …
‘Help is available for the following:’ + 0DH“.

4FB5H – Command Address Table.

“COMTAB”
4FB5
DEFB 01H
Jump Table Entry 01 …

4FB6
DEFB 2AH 50H
… = “APPEND” at 502AH.
4FB8
DEFB 02H
Jump Table Entry 02 …
4FB9
DEFB 69H 50H
… = “ATTRIB” at 5069H.
4FBB
DEFB 03H
Jump Table Entry 03 …
4FBC
DEFB 41H 51H
… = “AUTO” at 5141H.
4FBE
DEFB 04H
Jump Table Entry 04 …
4FBF
DEFB BDH 51H
… = “BACKUP” at 51BDH.
4FC1
DEFB 05H
Jump Table Entry 05 …
4FC2
DEFB F9H 51H
… = “BUILD” at 51F9H.
4FC4
DEFB 06H
Jump Table Entry 06 …
4FC5
DEFB 30H 52H
… = “CLEAR” at 5230H.
4FC7
DEFB 07H
Jump Table Entry 07 …
4FC8
DEFB EFH 52H
… = “CLOCK” at 52EFH.
4FCA
DEFB 08H
Jump Table Entry 08 …
4FCB
DEFB 1EH 53H
… = “CLS” at 531EH.
4FCD
DEFB 09H
Jump Table Entry 09 …
4FCE
DEFB 43H 53H
… = “COPY” at 5343H.
4FD0
DEFB 0AH
Jump Table Entry 0A …
4FD1
DEFB 89H 53H
… = “CREATE” at 5389H.
4FD3
DEFB 0BH
Jump Table Entry 0B …
4FD4
DEFB F8H 53H
… = “DATE” at 53F8H.
4FD6
DEFB 0CH
Jump Table Entry 0C …
4FD7
DEFB 2FH 54H
… = “DEBUG” at 542FH.
4FD9
DEFB 0DH
Jump Table Entry 0D …
4FDA
DEFB 5AH 54H
… = “DIR” at 545AH.
4FDC
DEFB 0EH
Jump Table Entry 0E …
4FDD
DEFB B7H 54H
… = “DO” at 54B7H.
4FDF
DEFB 0FH
Jump Table Entry 0F …
4FE0
DEFB ECH 54H
… = “DUAL” at 54ECH.
4FE2
DEFB 10H
Jump Table Entry 10 …
4FE3
DEFB 21H 55H
… = “DUMP” at 5521H.
4FE5
DEFB 11H
Jump Table Entry 11 …
4FE6
DEFB CFH 55H
… = “ERROR” at 55CFH.
4FE8
DEFB 12H
Jump Table Entry 12 …
4FE9
DEFB FBH 55H
… = “FSPEC” at 55FBH.
4FEB
DEFB 13H
Jump Table Entry 13 …
4FEc
DEFB 1CH 56H
… = “FORMS” at 561CH.
4FEE
DEFB 14H
Jump Table Entry 14 …
4FEf
DEFB AAH 56H
… = “FORMAT” at 56AAH.
4FF1
DEFB 15H
Jump Table Entry 15 …
4FF2
DEFB D9H 56H
… = “FREE” at 56D9H.
4FF4
DEFB 16H
Jump Table Entry 16 …
4FF5
DEFB 26H 57H
… = “HELP” at 5726H.
4FF7
DEFB 17H
Jump Table Entry 17 …
4FF8
DEFB 36H 57H
… = “KILL” at 5736H.
4FFA
DEFB 18H
Jump Table Entry 18H…
4FFb
DEFB 6BH 57H
… = “LIB” at 576BH.
4FFD
DEFB 19H
Jump Table Entry 19H…
4FFe
DEFB 9AH 57H
… = “LIST” at 579AH.
5000
DEFB 1AH
Jump Table Entry 1AH…
5001
DEFB 16H 58H
… = “LOAD” at 5816H.
5003
DEFB 1BH
Jump Table Entry 1BH…
5004
DEFB 47H 58H
… = “MASTER” at 5847H.
5006
DEFB 1CH
Jump Table Entry 1CH…
5007
DEFB B6H 58H
… = “PATCH” at 58B6H.
5009
DEFB 1DH
Jump Table Entry 1DH…
500a
DEFB 73H 59H
… = “PAUSE” at 5973H.
500C
DEFB 1EH
Jump Table Entry 1EH…
500d
DEFB B0H 59H
… = “PROT” at 59B0H.
500F
DEFB 1FH
Jump Table Entry 1FH…
5010
DEFB 50H 5AH
… = “PURGE” at 5A50H.
5012
DEFB 20H
Jump Table Entry 20H…
5013
DEFB F4H 5AH
… = “RELO” at 5AF4H.
5015
DEFB 21H
Jump Table Entry 21H…
5016
DEFB 83H 5BH
… = “RENAME” at 5B83H.
5018
DEFB 22H
Jump Table Entry 22H…
5019
DEFB BEH 5BH
… = “ROUTE” at 5BBEH.
501B
DEFB 23H
Jump Table Entry 23H…
501c
DEFB 70H 5CH
… = “SETCOM” at 5C70H.
501E
DEFB 24H
Jump Table Entry 24H…
501F
DEFB D1H 5DH
… = “SYNTAX” at 5DD1H.
5021
DEFB 25H
Jump Table Entry 25H…
5022
DEFB 27H 5EH
… = “TAPE” at 5E27H.
5024
DEFB 26H
Jump Table Entry 26H…
5025
DEFB B0H 5EH
… = “TIME” at 5EB0H.
5027
DEFB 27H
Jump Table Entry 27H…
5028
DEFB E7H 5EH
… = “WP” at 5EE7H.

502AH – Jump Table Destination for APPEND Command.

“APPEND”
502AH
DEFB 02H
Number of lines of text to display
 
DEFT →
‘APPEND FSPEC [TO] FSPEC’
 
DEFT →
‘Append one file to the end of another’
“ATTRIB”
5069H
DEFB 05H
Number of lines of text to display
 
DEFT →
‘ATTRIB FSPEC ([I][N],[ACC=name],[UPD=name],[PROT=level])’
 
DEFT →
‘Assign Passwords and level of Protection’ + 0DH
 
DEFT →
‘I = Make Invisible, N = Make Non-Invisible’
 
DEFT →
‘ACC = Access Password, UPD = Update Password’
 
DEFT →
‘PROT = Level of Protection’
“AUTO”
5141H
DEFB 03H
Number of lines of text to display
 
DEFT →
‘AUTO [:D] <CR> or Command’ + 0DH
 
DEFT →
‘If <CR> then AUTOed function is removed’
 
DEFT →
‘If Command, then Command will execute on RESET/POWER UP’
“BACKUP”
51BDH
DEFB 02H
Number of lines of text to display
 
DEFT →
‘BACKUP [:D] [:D]’
 
DEFT →
‘Duplicate a diskette. :D = Drive numbers’
“BUILD”
51F9H
DEFB 02H
Number of lines of text to display
 
DEFT →
‘BUILD FSPEC’
 
DEFT →
‘Create a Command file to execute using DO’
“CLEAR”
5230H
DEFB 04H
Number of lines of text to display
 
DEFT →
‘CLEAR [([START=aaaa,END=bbbb],[MEM=cccc])]’ + 0DH
 
DEFT →
‘Clear <CR> will clear all user memory, reset end of memory’
 
DEFT →
‘-else- Clear, starting at “aaaa”, ending at “bbbb”‘
 
DEFT →
‘-else- MEM = desired memory protect’
“CLOCK
52EFH
DEFB 02H
Number of lines of text to display
 
DEFT →
‘CLOCK [([ON][OFF])]’
 
DEFT →
‘Turn clock display on/off’
“CLS”
531EH
DEFB 01H
Number of lines of text to display
 
DEFT →
‘CLS <CR> (Clear screen)’
“COPY
5343H
DEFB 02H
Number of lines of text to display
 
DEFT →
‘COPY FSPEC [TO] FSPEC or FSPEC :D or /EXT:D :D’
 
DEFT →
‘Make a copy of a file’
“CREATE”
5389H
DEFB 03H
Number of lines of text to display
 
DEFT →
‘CREATE FSPEC [([LRL=aaa],[REC=xxx])]’ + 0DH
 
DEFT →
‘Create a file. LRL=Logical Record Length’
 
DEFT →
‘REC=Number of records desired’
“DATE”
53F8H
DEFB 02H
Number of lines of text to display
 
DEFT →
‘DATE [MM/DD/YY]’
 
DEFT →
‘Display current date, or set new date’
“DEBUG”
542FH
DEFB 01H
Number of lines of text to display
 
DEFT →
‘DEBUG <CR> (Enable Debugger)’
“DIR”
545AH
DEFB 03H
Number of lines of text to display
 
DEFT →
‘DIR [([SYS],[INV],[PRT])]’ + 0DH
 
DEFT →
‘SYS=System files, INV=Invisible files’
 
DEFT →
‘PRT=Output to Line Printer’
“DO”
54B7H
DEFB 02H
Number of lines of text to display
 
DEFT →
‘DO FSPEC’
 
DEFT →
‘Execute a Command File created using BUILD’
“DUAL”
54ECH
DEFB 02H
Number of lines of text to display
 
DEFT →
‘DUAL [([ON][OFF])]’
 
DEFT →
‘Output to BOTH video and printer’
“DUMP”
5521H
DEFB 04H
Number of lines of text to display
 
DEFT →
‘DUMP FSPEC (START=aaaa,END=bbbb,[RELO=cccc],[TRA=dddd])’
 
DEFT →
‘Save contents of memory to disk’ + 0DH
 
DEFT →
‘START=starting address, END=ending address’
 
DEFT →
‘RELO=relocate address, TRA=entry address’
“ERROR”
55CFH
DEFB 01H
Number of lines of text to display
 
DEFT →
‘ERROR XX (Display error message)’
“FSPEC”
55FBH
DEFB 01H
Number of lines of text to display
 
DEFT →
‘FSPEC = FILENAME/EXT.PASSWORD:D’
“FORMS”
561CH
DEFB 04H
Number of lines of text to display
 
DEFT →
‘FORMS [([WIDTH=xxx],[LINES=xxx])]’ + 0DH
 
DEFT →
‘<CR> = execute Top or Form’
 
DEFT →
‘WIDTH = number of characters per line’
 
DEFT →
‘LINES = desired number of lines per page’
“FORMAT”
56AAH
DEFB 01H
Number of lines of text to display
 
DEFT →
‘FORMAT [:D] (Initialize a diskette)’
“FREE”
56D9H
DEFB 02
Number of lines of text to display
 
DEFT →
‘FREE [:D] [(PRT)] (Display free space map)’
 
DEFT →
‘PRT = Output to Line Printer’
“HELP”
5726H
DEFB 01H
Number of lines of text to display
 
DEFT →
‘HELP [COMMAND]’
“KILL”
5736H
DEFB 02H
Number of lines of text to display
 
DEFT →
‘KILL FSPEC or /EXT:D’
 
DEFT →
‘Delete files from a diskette’
“LIB”
576BH
DEFB 01H
Number of lines of text to display
 
DEFT →
‘LIB <CR> (Display library commands)’
“LIST”
579AH
DEFB 03H
Number of lines of text to display
 
DEFT →
‘LIST FSPEC [([ASCII],[SLOW],[PRT])]’
 
DEFT →
‘Display a file. PRT = Output to Line Printer’
 
DEFT →
‘ASCII = Ascii Text, SLOW = Slower output’
“LOAD”
5816H
DEFB 01H
Number of lines of text to display
 
DEFT →
‘LOAD FSPEC (Load a program into memory)’
“MASTER”
5847H
DEFB 03H
Number of lines of text to display
 
DEFT →
‘MASTER [(DRIVE=x)]’ + 0DH
 
DEFT →
‘Force a drive to be the Master Read/Write drive’
 
DEFT →
‘<CR> Releases any drive defined as Master’
“PATCH”
58B6H
DEFB 05H
Number of lines of text to display
 
DEFT →
‘PATCH FSPEC (ADD=xxxx,FIND=xx,CHG=xx)’
 
DEFT →
‘Make a change to a program file’ + 0DH
 
DEFT →
‘ADD = address at which data is found’
 
DEFT →
‘FIND = byte(s) to find (or compare to)’
 
DEFT →
‘CHG = byte(s) to change found byte(s) to’
“PAUSE”
5973H
DEFB 02H
Number of lines of text to display
 
DEFT →
‘PAUSE [TEXT]’
 
DEFT →
‘Normally used in BUILD file to pause execution’
“PROT”
59B0H
DEFB 04H
Number of lines of text to display
 
DEFT →
‘PROT [:D] [([PW],[LOCK])]’
 
DEFT →
‘Change the Master Password and protection of user files’ + 0DH
 
DEFT →
‘PW = Change Master Password’
 
DEFT →
‘LOCK = assign the Master Password to user files’
“PURGE”
5A50H
DEFB 06H
Number of lines of text to display
 
DEFT →
‘PURGE [:D] [([SYS],[INV],[ALL])]’
 
DEFT →
‘Delete files from Diskette’ + 0DH
 
DEFT →
‘<CR> Defaults to user Files only’
 
DEFT →
‘SYS = System Files’
 
DEFT →
‘INV = Invisible Files’
 
DEFT →
‘ALL = All files on Diskette’
“RELO”
5AF4H
DEFB 04H
Number of lines of text to display
 
DEFT →
‘RELO FSPEC (ADD=aaaa)’
 
DEFT →
‘Ability to change where program loads into memory’ + 0DH
 
DEFT →
‘Will NOT change addresses inside of program’
 
DEFT →
‘ADD = Relocation address’
“RENAME”
5B83H
DEFB 02H
Number of lines of text to display
 
DEFT →
‘RENAME FSPEC [TO] FSPEC’
 
DEFT →
‘Change the name of a file/program’
“ROUTE”
5BBEH
DEFB 05H
Number of lines of text to display
 
DEFT →
‘ROUTE [(SOURCE=xx,DESTIN=yy)]’
 
DEFT →
‘Ability to route I/O devices’ + 0DH
 
DEFT →
‘<CR> = Reset I/O Drivers to Original’
 
DEFT →
‘DO = display, PR = printer, KB = keyboard’
 
DEFT →
‘RI = RS-232 Input, RO = RS-232 Output’
“SETCOM”
5C70H
DEFB 0AH
Number of lines of text to display
 
DEFT →
‘SETCOM [([OFF][WORD=x],[BAUD=xxx],[STOP=x],[PARITY=x],[MODE])]’
 
DEFT →
‘Initialize the RS-232 drivers’ + 0DH
 
DEFT →
‘<CR> = display present values’
 
DEFT →
‘WORD = number of bits per byte (5, 6, 7, or 8)’
 
DEFT →
‘BAUD = desired baud rate’
 
DEFT →
‘STOP = number of stop bits (1 or 2)’
 
DEFT →
‘PARITY = [1 = ODD], [2 = EVEN], [3 = NONE]’
 
DEFT →
‘MODE = [WAIT] [NOWAIT]’
 
DEFT →
‘OFF = Turn RS-232 drivers off’
 
DEFT →
‘() = Set default values’
“SYNTAX”
5DD1H
DEFB 03H
Number of lines of text to display
 
DEFT →
‘FSPEC = filespec, /EXT = extension’
 
DEFT →
‘[] = optional, :D = Drive number’
 
DEFT →
‘<CR> = Enter key’
“TAPE”
5E27H
DEFB 04H
Number of lines of text to display
 
DEFT →
‘TAPE (S=x,D=y)’
 
DEFT →
‘Execute Tape Transfer Operation’ + 0DH
 
DEFT →
‘S stands for SOURCE, D stands for DESTINATION’
 
DEFT →
‘x or y: T=Tape, D=Disk, R=Ram (Memory)’
“TIME”
5EB0H
DEFB 02H
Number of lines of text to display
 
DEFT →
‘TIME [HH:MM:SS]’
 
DEFT →
‘Display current time, or set new time’
“WP”
5EE7H
DEFB 04H
Number of lines of text to display
 
DEFT →
‘WP [(DRIVE=x)]’
 
DEFT →
‘Write Protect a Disk Drive’ + 0DH
 
DEFT →
‘(Will NOT override Write Protect tab on diskette)’
 
DEFT →
‘<CR> = Unprotect all drives’
 
DEFT →
‘-else- Write Protect Disk Drive “x”‘
5F84
DEFB 00H 00H
End of Table
 
END 4E00H