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

Program Overview

SYS08/SYS implements the HELP command for TRSDOS 1.3 on the TRS-80 Model III. It is a SYSLOW overlay that loads into the standard SYSLOW overlay area beginning at 4E00H. The overlay is invoked when the user types HELP at the DOS Ready prompt, optionally followed by a command name.

On entry the DOS passes a pointer to the command-line text in Register Pair HL. The overlay's first act is to clear bit 4 of the OVLFLG byte at 442BH, marking SYS06 as no longer resident, before scanning the command line. If HELP was entered without parameters the overlay displays a formatted multi-column list of all 39 supported command names. If a specific command name was supplied the overlay looks it up in the 39-entry ASCII lookup table (HLPTAB), maps the result to a text address through the address dispatch table (COMTAB), and displays between one and ten lines of descriptive help text for that command.

The overlay does not invoke any SVC vectors. All screen output is performed via direct calls to two Model III ROM routines: the character-print routine at 0033H (RST 30H / OUTCH) and the string-display routine at 021BH (PRINT). Cursor position is read directly from the Model III hardware cursor register at 4020H to compute tab-stop alignment when listing command names in columns.

Memory Map

The overlay occupies the SYSLOW area from 4E00H to the end of the help-text data. The code routines are entirely contained within the first page (4E00H–4EB5H), followed by two data tables and then the help-text blocks for all 39 commands.

AddressesLabelContents
4E00H-4E06HSTARTOverlay entry point; clears OVLFLG bit 4, then falls through to HELP
4E07H-4E0DHHELPMain HELP dispatcher; calls SKIPSP, tests for bare CR, branches to HELP6
4E0EH-4E16HHLPFLTNo-parameter path; prints HLPMSG banner then walks HLPTAB displaying all command names in tabbed columns
4E17H-4E28HHELP1–HELP3 entryInner loop: fetch entry length, call DSPLY, check column position
4E29H-4E2FH(CR path)Output CR when cursor is past column 56, then jump to HELP5
4E30H-4E3CHHELP3Tab-pad path; NEG+AND+INC to compute spaces to next 8-column tab stop
4E36H-4E3BHHELP4Space-output loop (DJNZ)
4E3DH-4E44HHELP5Advance HLPTAB pointer to next entry, loop back to HELP1
4E45H-4E5DHHELP6Parameter path; searches HLPTAB for the typed command name
4E4BH-4E5DHHELP7HLPTAB search loop; calls COMPAR, advances on mismatch
4E5EH-4E67HHELP8Match found; calls GETTAB to resolve command index to text address
4E68H-4E7DHHELP9Text-display driver; outputs CR, then loops calling DSPLY for each line
4E6FH-4E7DHHELP10Per-line display loop (DJNZ on line count)
4E7EH-4E85HDSPLYSubroutine: output B characters from (HL) to screen, advancing HL
4E86H-4E96HCOMPARSubroutine: compare BC bytes at (HL) against (DE); returns Z on match
4E97H-4E9DHSKIPSPSubroutine: skip spaces in (HL), return first non-space char in A
4E9EH-4EB5HGETTABSubroutine: walk COMTAB to convert 1-based command index (A) to text address in HL
4EB6H-4F8FHHLPTABASCII lookup table: 39 entries of (length byte + command name string), terminated by 00H
4F90H-4FB4HHLPMSGBanner message: "Help is available for the following:" + 0DH (terminated by 03H for ROM PRINT routine)
4FB5H-502AHCOMTABAddress dispatch table: 39 × 3-byte entries (index byte + LSB + MSB), terminated by 00H 00H
502AH-5F84HAPPEND–WP help textHelp text blocks for all 39 commands; each block begins with a line-count byte followed by length-prefixed text strings
5F85H(end marker)00H 00H — end-of-table / end of emitted load-file data

Variable List

SYS08 contains no self-modifying code and defines no workspace variables within its own code space. It references two external locations in the SYS0 resident area and one Model III hardware register.

AddressLabelR/WDescription
442BHOVLFLGR/WSYS0 overlay-presence flag byte. SYS08 clears bit 4 at entry to record that SYS06 is no longer resident in RAM.
4020HCURSORRModel III hardware cursor position register (screen memory address of cursor). The low 6 bits give the column position within the current row (0–63). SYS08 reads this to decide whether to emit a CR or pad with spaces to reach the next 8-column tab stop when displaying the command-name list.

Major Routine List

AddressLabelDescription
4E00HSTARTOverlay entry point. Saves HL, clears OVLFLG bit 4, restores HL, then falls through to HELP.

Entry: HL = command-line pointer. Exit: falls to HELP.
4E07HHELPMain HELP dispatcher. Calls SKIPSP to advance past leading spaces, then tests for a bare carriage return to choose between the full-list path (HLPFLT) and the single-command lookup path (HELP6).

Entry: HL = command-line pointer. Exit: RET to DOS (Z path) or JR to HELP6 (NZ path).
4E0EHHLPFLTNo-parameter (or unrecognised-command) handler. Prints the "Help is available for the following:" banner via ROM PRINT (021BH), then iterates through every entry in HLPTAB, outputting command names separated by tab-padded columns.

Entry: no register preconditions. Exit: RET Z when HLPTAB end marker (00H) is reached.
4E17HHELP1Top of the HLPTAB walk loop. Fetches the next entry's length byte; if zero, returns to DOS.

Entry: HL = current HLPTAB pointer. Exit: RET Z at end, or continues loop.
4E30HHELP3Tab-stop padding. Negates the cursor column value, masks to 3 bits, increments, and outputs that many spaces to align to the next 8-column boundary.

Entry: A = current column (mod 64). Exit: HL unchanged; falls to HELP5.
4E36HHELP4Space-output loop. Outputs one space character via ROM OUTCH (0033H) and loops via DJNZ.

Entry: B = space count. Exit: B = 0; falls to HELP5.
4E3DHHELP5Advance HLPTAB pointer past the current entry (length byte + name bytes) and jump back to HELP1.

Entry: HL = HLPTAB entry start. Exit: JR to HELP1 with HL updated.
4E45HHELP6Single-command lookup entry. Moves HL (command-line) to DE, loads HLPTAB base into HL, sets B = 1 as a 1-based entry counter, then enters the HELP7 search loop.

Entry: HL = command-line pointer. Exit: falls through to HELP7.
4E4BHHELP7HLPTAB search loop. Reads entry length; if zero (end of table), jumps to HLPFLT. Otherwise calls COMPAR. On mismatch, advances HL past entry, increments B, loops.

Entry: HL = HLPTAB pointer, DE = command-line, B = current entry index. Exit: JR Z to HELP8 on match.
4E5EHHELP8Match found. Loads COMTAB base into HL and calls GETTAB to convert the 1-based entry index (in B, then A) to a pointer to the help-text block. On failure jumps to HLPFLT.

Entry: B = matched entry index. Exit: HL = pointer to help-text block, or JR C to HLPFLT.
4E68HHELP9Help-text display driver. Outputs a leading CR, loads the line count from (HL), increments HL, then loops calling DSPLY followed by a CR for each line.

Entry: HL = help-text block pointer. Exit: RET when all lines displayed.
4E6FHHELP10Per-line display loop. Saves B (remaining lines), fetches the length byte, increments HL, calls DSPLY, outputs CR, restores B, and loops via DJNZ.

Entry: B = line count, HL = pointer to first length byte. Exit: RET when B reaches zero.
4E7EHDSPLYCharacter-string output subroutine. Fetches (HL), calls ROM OUTCH (0033H), increments HL, and loops via DJNZ. Used by both the command-name list and the help-text display paths.

Entry: B = character count, HL = string pointer. Exit: HL advanced by B; B = 0. RET.
4E86HCOMPARString-comparison subroutine (expands SAV3 / EXI3 macros). Compares BC bytes at (HL) against the command line at (DE) using LDI/JP PE. Returns Z if all bytes matched, NZ on first mismatch.

Entry: BC = byte count, HL = HLPTAB entry text, DE = command-line. Exit: Z set on full match; BC, DE, HL preserved (SAV3/EXI3 macros). RET.
4E97HSKIPSPSpace-skipping subroutine. Reads (HL); if space (20H), increments HL and loops. Returns on first non-space character.

Entry: HL = string pointer. Exit: A = first non-space character; HL points to it. RET NZ.
4E9EHGETTABTable-lookup subroutine. Scans COMTAB for an entry whose index byte equals A (the 1-based command number). On a match, loads the 16-bit address from the following two bytes into HL and returns with carry clear. If the end marker (00H) is reached first, sets carry and returns.

Entry: A = 1-based command index, HL = COMTAB base. Exit: Z path — HL = help-text address, carry clear, A restored; C path — carry set, A restored. RET.
4E9FHGETTA1Inner loop of GETTAB. Tests the current COMTAB byte; if 00H branches to end-of-table exit, else falls to GETTA2.

Internal to GETTAB.
4EA6HGETTA2COMTAB entry comparison. Compares current byte against target index C. On mismatch advances HL by 3 (skips counter + LSB + MSB) and loops to GETTA1.

Internal to GETTAB.
4EAEHGETTA3COMTAB address retrieval. On a match, increments HL to the LSB, loads it into A, increments HL again, loads MSB into H, and sets L = A, giving HL the 16-bit text address.

Internal to GETTAB; exits via GETTAB's RET.

Jump Table Mapping (COMTAB)

COMTAB at 4FB5H is a linear table of 3-byte entries, each consisting of a 1-based command index byte followed by the little-endian address of that command's help-text block. GETTAB scans it sequentially. The table is terminated by a 00H 00H pair at 5F84H. The 39 entries are as follows.

COMTAB AddrIndex (hex)CommandText Block AddrHelp Lines
4FB5H01HAPPEND502AH2
4FB8H02HATTRIB5069H5
4FBBH03HAUTO5141H3
4FBEH04HBACKUP51BDH2
4FC1H05HBUILD51F9H2
4FC4H06HCLEAR5230H4
4FC7H07HCLOCK52EFH2
4FCAH08HCLS531EH1
4FCDH09HCOPY5343H2
4FD0H0AHCREATE5389H3
4FD3H0BHDATE53F8H2
4FD6H0CHDEBUG542FH1
4FD9H0DHDIR545AH3
4FDCH0EHDO54B7H2
4FDFH0FHDUAL54ECH2
4FE2H10HDUMP5521H4
4FE5H11HERROR55CFH1
4FE8H12HFSPEC55FBH1
4FEBH13HFORMS561CH4
4FEEH14HFORMAT56AAH1
4FF1H15HFREE56D9H2
4FF4H16HHELP5726H1
4FF7H17HKILL5736H2
4FFAH18HLIB576BH1
4FFDH19HLIST579AH3
5000H1AHLOAD5816H1
5003H1BHMASTER5847H3
5006H1CHPATCH58B6H5
5009H1DHPAUSE5973H2
500CH1EHPROT59B0H4
500FH1FHPURGE5A50H6
5012H20HRELO5AF4H4
5015H21HRENAME5B83H2
5018H22HROUTE5BBEH5
501BH23HSETCOM5C70H10
501EH24HSYNTAX5DD1H3
5021H25HTAPE5E27H4
5024H26HTIME5EB0H2
5027H27HWP5EE7H4

Cross-References and Analysis Notes

No SVC vectors. SYS08 is unusual among TRSDOS 1.3 overlays in that it does not use the DO macro (RST 28H) to call any DOS services. All output is via direct ROM calls at 0033H and 021BH.

OVLFLG bit 4 cleared on entry. The first three instructions after START clear bit 4 of the OVLFLG byte at 442BH. This marks SYS06 as no longer resident, not SYS08 itself. This is intentional: the HELP command is typically invoked after command processing in other overlays, and the clearing ensures SYS06's overlay slot is correctly marked as vacated when HELP runs.

HLPTAB vs. COMTAB relationship. The overlay uses two parallel tables. HLPTAB (4EB6H) contains the human-readable command names as length-prefixed strings, used only for text comparison and display. COMTAB (4FB5H) maps 1-based sequential indices to the help-text block addresses. GETTAB bridges them: the HELP7 loop counts which HLPTAB entry matched (keeping a running index in B), then GETTAB searches COMTAB for that index number to retrieve the text address. The two tables must remain in the same order.

WP entry has 5 DEFT strings but DEFB 04H line count. In the source, the WP help block (WPJ label in SYS8.SRC) declares DEFB 4 but contains five DEFT strings. HELP10's DJNZ loop will therefore display only four of the five lines; the fifth string ("-else- Write Protect Disk Drive "x"") is present in memory at 5F62H but will never be shown. This appears to be an intentional editorial decision in the original source — the fifth line was written but excluded from the displayed count.

Tab-stop algorithm. The column-spacing logic in HELP3/HELP4 reads the 16-bit cursor address from 4020H, masks to the low 6 bits (giving a value 0–63 representing the column within the Model III's 64-column display), negates it, masks to 3 bits (giving 0–7), adds 1 (giving 1–8), and outputs that many spaces. This computes the distance to the next 8-column tab stop, ensuring command names always begin at column 0, 8, 16, 24, 32, 40, or 48. If the name would push the cursor to column 56 or beyond, a CR is substituted instead.

COMPAR uses SAV3/EXI3 macros. The COMPAR routine expands the SAV3 macro (PUSH BC + PUSH DE + PUSH HL, 3 bytes) at entry and EXI3 (POP HL + POP DE + POP BC + RET, 4 bytes) at both exit points. This means BC, DE, and HL are fully preserved across the call. The comparison itself uses LDI + JP PE to walk both strings simultaneously — LDI copies one byte from (HL) to (DE), decrements BC, and sets/clears the parity/overflow flag based on whether BC reached zero. COMPA1 pre-checks each byte for equality before the LDI so that a mismatch exits immediately via COMPA2 without consuming the LDI's side-effects.

Disassembly

4E00H - Start

 
ORG 4E00H
4E00START
PUSH HL
Save the command line (pointed to by Register Pair HL) to the top of the stack.
Original Source Code Comment: SAVE COMMAND LINE POINTER
4E01
LD HL,OVLFLG
LET Register Pair HL = 442BH which is OVERLAY FLAG.
Original Source Code Comment: HL => 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.
Original Source Code Comment: SYS 6 NOT 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.
Original Source Code Comment: GET COMMMAND LINE POINTER BACK
4E07HELP
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.
Original Source Code Comment: SKIP ANY SPACES
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.
Original Source Code Comment: HELP BY ITSELF?
4E0C
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.
Original Source Code Comment: NO, PROCESS COMMAND

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

4E0EHLPFLT
LD HL,HLPMSG
LET Register Pair HL = 4F90H to point to the message "HELP is available for the following:".
Original Source Code Comment: HL => 'HELP IS AVAILABLE' MESSAGE
4E11
GOSUB to 021BH.
NOTE: 021BH is the Model III ROM routine to display the character at (HL) until a 03H is found.
Original Source Code Comment: DISPLAY IT
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).
Original Source Code Comment: HL => ASCII HELP COMMANDS
4E17HELP1
LD A,(HL)
Fetch the length byte (stored at memory location pointed to by Register Pair HL) and put it into Register A.
Original Source Code Comment: GET THE BYTE COUNT
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).
Original Source Code Comment: IS THIS THE END OF THE LIST?
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.
Original Source Code Comment: YES, EXIT BACK 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.
Original Source Code Comment: SAVE POINTER
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.
Original Source Code Comment: NO, GET THE COUNT
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.
Original Source Code Comment: HL => 1ST CHAR OF TEXT
4E1D
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.
Original Source Code Comment: OUTPUT IT
4E20
LD A,(4020H)LD A,(CURSOR)
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.
Original Source Code Comment: GET THE LSB OF THE CURSOR POSITION
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.
Original Source Code Comment: MASK FOR 1 ROW
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.

Original Source Code Comment: SEE IF TOO FAR TO RIGHT OF SCREEN
4E27
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.
Original Source Code Comment: NO, DO A TAB

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).
Original Source Code Comment: OUTPUT A CR INSTEAD
4E2B
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
JUMP to 4E3DH.
Original Source Code Comment: AND CONTINUE

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.

4E30HELP3
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).
Original Source Code Comment: FLIP FOR DIFFERENCE
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.
Original Source Code Comment: MASK FOR COLUMNS OF 8
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.
Original Source Code Comment: NO 0'S ALLOWED
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).
Original Source Code Comment: INTO B FOR COUNTER
4E36HELP4
LD A,20H
LET Register A = 20H (ASCII: SPACE).
Original Source Code Comment: OUTPUT A TAB
4E38
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.
Original Source Code Comment: TO THE DISPLAY
4E3B
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.
Original Source Code Comment: LOOP FOR COUNT

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

4E3DHELP5
POP HL
Restore the pointer to ASCII Help Command Lookup Table from the top of the stack back into Register Pair HL.
Original Source Code Comment: GET TABLE POINTER BACK
4E3E
LD C,(HL)
We want Register Pair BC = the length of the parameter (which is in the memory location pointed to by Register Pair HL). First, load Register C with the length of the parameter.
Original Source Code Comment: GET THE DEFT COUNT
4E3F
LD B,00H
Then, load Register B with 00H, turning an 8 bit value into a 16 bit value held in BC

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).
Original Source Code Comment: HL => NEXT ENTRY
4E43
LOOP back to 4E17H to process the next entry in the table.
Original Source Code Comment: AND CONTINUE

4E45H - Process the Command Line.

4E45HELP6
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).
Original Source Code Comment: DE => COMMAND LINE
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).
Original Source Code Comment: HL => LOOKUP TABLE
4E49
LD B,01H
LET Register B = 01H for a loop counter.
Original Source Code Comment: SET A COUNTER
4E4BHELP7
LD A,(HL)
Fetch the length byte (stored at memory location pointed to by Register Pair HL) and put it into Register A.
Original Source Code Comment: GET THE DEFT COUNT
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).
Original Source Code Comment: WE AT END OF TABLE?
4E4D
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.
Original Source Code Comment: YES, UNSUPPORTED COMMAND
4E4F
PUSH BC
Save the counter to the current entry number (held in Register B) to the top of the stack.
Original Source Code Comment: SAVE THE COUNT
4E50
LD C,(HL)
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. This will take two steps. First, load up register C
Original Source Code Comment: GET THE DEFT COUNT
4E51
LD B,00H
Then set B=00H so that the 16 bit register of BC holds the value of C.
Original Source Code Comment: CLEAR B
4E53
INC HL
INCrement the pointer in the ASCII Help Command Lookup Table to the first character by bumping HL by 1.
Original Source Code Comment: BUMP TO 1ST CHAR
4E54
Compare the first characters by GOSUBing to 4E86H.
Original Source Code Comment: DO THE COMPARISON
4E57
If we have a match then that routine will have set the Z FLAG (Zero); JUMP to 4E5EH.
Original Source Code Comment: YES, FOUND THE COMMAND
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).
Original Source Code Comment: HL => NEXT COMMAND
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.
Original Source Code Comment: GET THE COUNT BACK
4E5B
INC B
INCrement the counter/entry number (stored in Register B) by 1.
Original Source Code Comment: INC THE COUNTER
4E5C
LOOP back to 4E4BH to process the next entry.
Original Source Code Comment: LOOP TILL FOUND

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

4E5EHELP8
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.
Original Source Code Comment: GET THE COUNT BACK
4E5F
LD A,B
LET Register A = the current counter/entry number (held in Register B).
Original Source Code Comment: INTO A
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.
Original Source Code Comment: HL => COMMAND TABLE
4E63
Get the text pointer by GOSUBing to 4E9EH.
Original Source Code Comment: DO THE LOOP UP ON IT
4E66
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.
Original Source Code Comment: SOMEHOW WASN'T FOUND

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.

4E68HELP9
LD A,0DH
Move to a new line by setting Register A = 0DH (ASCII: CARRIAGE RETURN).
Original Source Code Comment: OUTPUT A LINE FEED
4E6A
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.
Original Source Code Comment: GET THE NUMBER OF LINES
4E6E
INC HL
Bump Register Pair HL by 1 to now point to the first line of help text to display.
Original Source Code Comment: BUMP TO 1ST 'DEFT'
4E6FHELP10
PUSH BC
Save the number of lines to display (held in Register B) to the top of the stack.
Original Source Code Comment: SAVE NUMBER OF LINES
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.
Original Source Code Comment: GET THE DEFT COUNT
4E71
INC HL
Bump Register Pair HL by 1 to point to the first line of text to display.
Original Source Code Comment: HL => 1ST TEXT CHAR
4E72
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.
Original Source Code Comment: OUTPUT IT TO SCREEN
4E75
LD A,0DH
LET Register A = 0DH (ASCII: CARRIAGE RETURN).
Original Source Code Comment: FOLLOWED BY A CR
4E77
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.
Original Source Code Comment: GET THE COUNT BACK
4E7B
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.
Original Source Code Comment: LOOP FOR COUNT
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.

4E7EDSPLY
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.
Original Source Code Comment: GET A CHARACTER
4E7F
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.
Original Source Code Comment: OUTPUT TO DISPLAY
4E82
INC HL
INCrement the value stored in Register Pair HL by 1.
Original Source Code Comment: BUMP TO NEXT CHAR
4E83
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.
Original Source Code Comment: LOOP FOR COUNT
4E85
RET
RETurn to the caller.
Original Source Code Comment: EXIT

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

4E86COMPAR
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.
4E89COMPA1
LD A,(DE)
Fetch the requested parameter (stored at memory location pointed to by Register Pair DE) and put it into Register A.
Original Source Code Comment: GET A CHAR
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.
Original Source Code Comment: SEE IF MATCH
4E8B
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.
Original Source Code Comment: NO, EXIT

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.
Original Source Code Comment: YES, TRY FOR NEXT
4E8F
If the PE flag is set, then continue to loop through the entire entry via a JUMP to 4E89H.
Original Source Code Comment: LOOP FOR COUNT

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
Original Source Code Comment: SET Z
4E93COMPA2
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.

4E97SKIPSP
LD A,(HL)
Fetch the value stored at memory location pointed to by Register Pair HL and put it into Register A.
Original Source Code Comment: GET A CHARACTER
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.
Original Source Code Comment: SPACE?
4E9A
RET NZ
If we had a NON-SPACE, the NZ FLAG (Not Zero) will have been set, RETurn to the caller.
Original Source Code Comment: NO, EXIT
4E9B
INC HL
Point to the next character by INCrementing the value stored in Register Pair HL by 1.
Original Source Code Comment: YES, SKIP IT
4E9C
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.

4E9EGETTAB
LD C,A
LET Register C = the current counter/entry number (held in Register A).
Original Source Code Comment: PUT THE CHAR INTO C
4E9FGETTA1
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.
Original Source Code Comment: GET THE CHECK BYTE
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).
Original Source Code Comment: END OF TABLE?
4EA1
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.
Original Source Code Comment: NO, CONTINUE
4EA3
LD A,C
Restore the current counter/entry number (held in Register C) into Register A.
Original Source Code Comment: GET THE ORIGINAL VALUE BACK
4EA4
SCF
Turn the CARRY FLAG on to indicate an error.
Original Source Code Comment: YES, SET CARRY
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.

4EA6GETTA2
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.
Original Source Code Comment: MATCH?
4EA7
If they match, then the Z FLAG (Zero) will have been set, JUMP to 4EAEH.
Original Source Code Comment: YES, GET THE ADDRESS
4EA9
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.
Original Source Code Comment: HL => LSB
4EAA
INC HL
And again.
Original Source Code Comment: HL => MSB
4EAB
INC HL
And again.
Original Source Code Comment: HL => NEXT CHECK CHAR
4EAC
Loop back to 4E9FH to process the next entry.
Original Source Code Comment: AND TRY AGAIN

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

4EAEGETTA3
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.
Original Source Code Comment: HL => LSB
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.
Original Source Code Comment: GET IT
4EB0
INC HL
INCrement the value stored in Register Pair HL by 1 to point to the next character in the applicable text.
Original Source Code Comment: HL => MSB
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.
Original Source Code Comment: GET IT
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).
Original Source Code Comment: INSURE CARRY OFF
4EB4
LD A,C
LET Register A = the actual/final parameter number (held in Register C).
Original Source Code Comment: GET THE ORIGINAL VALUE BACK
4EB5
RET
RETurn to the caller with the CARRY FLAG set.

4EB6H - ASCII Lookup Table.

4EB6HLPTAB
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.
Original Source Code Comment: END OF TABLE

4F90H - MESSAGE STORAGE AREA.

4F90HLPMSG
DEFM 'Help is available for the following:' + 0DH

4FB5H - Command Address Table.

4FB5COMTAB
DEFB 01HDEFB AP
Jump Table Entry 01 ...
4FB6
DEFW 502AHDEFW APPEND
... = "APPEND" at 502AH.
4FB8
DEFB 02HDEFB AT
Jump Table Entry 02 ...
4FB9
DEFW 5069HDEFW ATTRIB
... = "ATTRIB" at 5069H.
4FBB
DEFB 03HDEFB AU
Jump Table Entry 03 ...
4FBC
DEFW 5141HDEFW AUTO
... = "AUTO" at 5141H.
4FBE
DEFB 04HDEFB BA
Jump Table Entry 04 ...
4FBF
DEFW 51BDHDEFW BACKU
... = "BACKUP" at 51BDH.
4FC1
DEFB 05HDEFB BU
Jump Table Entry 05 ...
4FC2
DEFW 51F9HDEFW BUILD
... = "BUILD" at 51F9H.
4FC4
DEFB 06HDEFB CE
Jump Table Entry 06 ...
4FC5
DEFW 5230HDEFW CLEAR
... = "CLEAR" at 5230H.
4FC7
DEFB 07HDEFB CC
Jump Table Entry 07 ...
4FC8
DEFW 52EFHDEFW CLOCK
... = "CLOCK" at 52EFH.
4FCA
DEFB 08HDEFB CS
Jump Table Entry 08 ...
4FCB
DEFW 531EHDEFW CLSE
... = "CLS" at 531EH.
4FCD
DEFB 09HDEFB CP
Jump Table Entry 09 ...
4FCE
DEFW 5343HDEFW COPY
... = "COPY" at 5343H.
4FD0
DEFB 0AHDEFB CT
Jump Table Entry 0A ...
4FD1
DEFW 5389HDEFW CREATE
... = "CREATE" at 5389H.
4FD3
DEFB 0BHDEFB DT
Jump Table Entry 0B ...
4FD4
DEFW 53F8HDEFW DATEE
... = "DATE" at 53F8H.
4FD6
DEFB 0CHDEFB DB
Jump Table Entry 0C ...
4FD7
DEFW 542FHDEFW DBUG
... = "DEBUG" at 542FH.
4FD9
DEFB 0DHDEFB DI
Jump Table Entry 0D ...
4FDA
DEFW 545AHDEFW DIR
... = "DIR" at 545AH.
4FDC
DEFB 0EHDEFB DOD
Jump Table Entry 0E ...
4FDD
DEFW 54B7HDEFW DO
... = "DO" at 54B7H.
4FDF
DEFB 0FHDEFB DU
Jump Table Entry 0F ...
4FE0
DEFW 54ECHDEFW DUAL
... = "DUAL" at 54ECH.
4FE2
DEFB 10HDEFB DP
Jump Table Entry 10 ...
4FE3
DEFW 5521HDEFW DUMP
... = "DUMP" at 5521H.
4FE5
DEFB 11HDEFB ER
Jump Table Entry 11 ...
4FE6
DEFW 55CFHDEFW ERR
... = "ERROR" at 55CFH.
4FE8
DEFB 12HDEFB FI
Jump Table Entry 12 ...
4FE9
DEFW 55FBHDEFW FSPEC
... = "FSPEC" at 55FBH.
4FEB
DEFB 13HDEFB FM
Jump Table Entry 13 ...
4FEC
DEFW 561CHDEFW FORMS
... = "FORMS" at 561CH.
4FEE
DEFB 14HDEFB FO
Jump Table Entry 14 ...
4FEF
DEFW 56AAHDEFW FORMA
... = "FORMAT" at 56AAH.
4FF1
DEFB 15HDEFB FR
Jump Table Entry 15 ...
4FF2
DEFW 56D9HDEFW FRE
... = "FREE" at 56D9H.
4FF4
DEFB 16HDEFB HE
Jump Table Entry 16 ...
4FF5
DEFW 5726HDEFW HELLP
... = "HELP" at 5726H.
4FF7
DEFB 17HDEFB KI
Jump Table Entry 17 ...
4FF8
DEFW 5736HDEFW KIL
... = "KILL" at 5736H.
4FFA
DEFB 18HDEFB LB
Jump Table Entry 18H...
4FFB
DEFW 576BHDEFW LIB
... = "LIB" at 576BH.
4FFD
DEFB 19HDEFB LS
Jump Table Entry 19H...
4FFE
DEFW 579AHDEFW LST
... = "LIST" at 579AH.
5000
DEFB 1AHDEFB LD
Jump Table Entry 1AH...
5001
DEFW 5816HDEFW LOAD
... = "LOAD" at 5816H.
5003
DEFB 1BHDEFB MA
Jump Table Entry 1BH...
5004
DEFW 5847HDEFW MASTER
... = "MASTER" at 5847H.
5006
DEFB 1CHDEFB PA
Jump Table Entry 1CH...
5007
DEFW 58B6HDEFW PATCH
... = "PATCH" at 58B6H.
5009
DEFB 1DHDEFB PU
Jump Table Entry 1DH...
500A
DEFW 5973HDEFW PAUS
... = "PAUSE" at 5973H.
500C
DEFB 1EHDEFB PR
Jump Table Entry 1EH...
500D
DEFW 59B0HDEFW PROTV
... = "PROT" at 59B0H.
500F
DEFB 1FHDEFB PG
Jump Table Entry 1FH...
5010
DEFW 5A50HDEFW PURGG
... = "PURGE" at 5A50H.
5012
DEFB 20HDEFB RL
Jump Table Entry 20H...
5013
DEFW 5AF4HDEFW RELO
... = "RELO" at 5AF4H.
5015
DEFB 21HDEFB RN
Jump Table Entry 21H...
5016
DEFW 5B83HDEFW RENAME
... = "RENAME" at 5B83H.
5018
DEFB 22HDEFB RU
Jump Table Entry 22H...
5019
DEFW 5BBEHDEFW ROUTE
... = "ROUTE" at 5BBEH.
501B
DEFB 23HDEFB SC
Jump Table Entry 23H...
501C
DEFW 5C70HDEFW SETCOM
... = "SETCOM" at 5C70H.
501E
DEFB 24HDEFB SN
Jump Table Entry 24H...
501F
DEFW 5DD1HDEFW SYNTA
... = "SYNTAX" at 5DD1H.
5021
DEFB 25HDEFB SY
Jump Table Entry 25H...
5022
DEFW 5E27HDEFW SYSTE
... = "TAPE" at 5E27H.
5024
DEFB 26HDEFB TI
Jump Table Entry 26H...
5025
DEFW 5EB0HDEFW TIM
... = "TIME" at 5EB0H.
5027
DEFB 27HDEFB WP
Jump Table Entry 27H...
5028
DEFW 5EE7HDEFW WPJ
... = "WP" at 5EE7H.

502AH - Jump Table Destination for APPEND Command.

502AHAPPEND
DEFB 02H
Number of lines of text to display
502BH
DEFB 17H
Length of following string (23 bytes)
502CH
DEFM 'APPEND FSPEC [TO] FSPEC'
5043H
DEFB 25H
Length of following string (37 bytes)
5044H
DEFM 'Append one file to the end of another'
5069HATTRIB
DEFB 05H
Number of lines of text to display
506AH
DEFB 38H
Length of following string (56 bytes)
506BH
DEFM 'ATTRIB FSPEC ([I][N],[ACC=name],[UPD=name],[PROT=level])'
50A3H
DEFB 29H
Length of following string (41 bytes)
50A4H
DEFM 'Assign Passwords and level of Protection' + 0DH
50CDH
DEFB 2BH
Length of following string (43 bytes)
50CEH
DEFM 'I = Make Invisible, N = Make Non-Invisible'
50F9H
DEFB 2CH
Length of following string (44 bytes)
50FAH
DEFM 'ACC = Access Password, UPD = Update Password'
5126H
DEFB 1AH
Length of following string (26 bytes)
5127H
DEFM 'PROT = Level of Protection'
5141HAUTO
DEFB 03H
Number of lines of text to display
5142H
DEFB 1AH
Length of following string (26 bytes)
5143H
DEFM 'AUTO [:D] <CR> or Command' + 0DH
515DH
DEFB 27H
Length of following string (39 bytes)
515EH
DEFM 'If <CR> then AUTOed function is removed'
5185H
DEFB 37H
Length of following string (55 bytes)
5186H
DEFM 'If Command, then Command will execute on RESET/POWER UP'
51BDHBACKU
DEFB 02H
Number of lines of text to display
51BEH
DEFB 10H
Length of following string (16 bytes)
51BFH
DEFM 'BACKUP [:D] [:D]'
51CFH
DEFB 29H
Length of following string (41 bytes)
51D0H
DEFM 'Duplicate a diskette. :D = Drive numbers'
51F9HBUILD
DEFB 02H
Number of lines of text to display
51FAH
DEFB 0BH
Length of following string (11 bytes)
51FBH
DEFM 'BUILD FSPEC'
5206H
DEFB 29H
Length of following string (41 bytes)
5207H
DEFM 'Create a Command file to execute using DO'
5230HCLEAR
DEFB 04H
Number of lines of text to display
5231H
DEFB 2BH
Length of following string (43 bytes)
5232H
DEFM 'CLEAR [([START=aaaa,END=bbbb],[MEM=cccc])]' + 0DH
525DH
DEFB 3AH
Length of following string (58 bytes)
525EH
DEFM 'Clear <CR> will clear all user memory, reset end of memory'
5298H
DEFB 32H
Length of following string (50 bytes)
5299H
DEFM '-else- Clear, starting at "aaaa", ending at "bbbb"'
52CBH
DEFB 23H
Length of following string (35 bytes)
52CCH
DEFM '-else- MEM = desired memory protect'
52EFHCLOCK
DEFB 02H
Number of lines of text to display
52F0H
DEFB 13H
Length of following string (19 bytes)
52F1H
DEFM 'CLOCK [([ON][OFF])]'
5304H
DEFB 19H
Length of following string (25 bytes)
5305H
DEFM 'Turn clock display on/off'
531EHCLSE
DEFB 01H
Number of lines of text to display
531FH
DEFB 23H
Length of following string (35 bytes)
5320H
DEFM 'CLS <CR> (Clear screen)'
5343HCOPY
DEFB 02H
Number of lines of text to display
5344H
DEFB 2EH
Length of following string (46 bytes)
5345H
DEFM 'COPY FSPEC [TO] FSPEC or FSPEC :D or /EXT:D :D'
5373H
DEFB 15H
Length of following string (21 bytes)
5374H
DEFM 'Make a copy of a file'
5389HCREATE
DEFB 03H
Number of lines of text to display
538AH
DEFB 25H
Length of following string (37 bytes)
538BH
DEFM 'CREATE FSPEC [([LRL=aaa],[REC=xxx])]' + 0DH
53B0H
DEFB 29H
Length of following string (41 bytes)
53B1H
DEFM 'Create a file. LRL=Logical Record Length'
53DAH
DEFB 1DH
Length of following string (29 bytes)
53DBH
DEFM 'REC=Number of records desired'
53F8HDATEE
DEFB 02H
Number of lines of text to display
53F9H
DEFB 0FH
Length of following string (15 bytes)
53FAH
DEFM 'DATE [MM/DD/YY]'
5409H
DEFB 25H
Length of following string (37 bytes)
540AH
DEFM 'Display current date, or set new date'
542FHDBUG
DEFB 01H
Number of lines of text to display
5430H
DEFB 29H
Length of following string (41 bytes)
5431H
DEFM 'DEBUG <CR> (Enable Debugger)'
545AHDIR
DEFB 03H
Number of lines of text to display
545BH
DEFB 1AH
Length of following string (26 bytes)
545CH
DEFM 'DIR [([SYS],[INV],[PRT])]' + 0DH
5476H
DEFB 25H
Length of following string (37 bytes)
5477H
DEFM 'SYS=System files, INV=Invisible files'
549CH
DEFB 1AH
Length of following string (26 bytes)
549DH
DEFM 'PRT=Output to Line Printer'
54B7HDO
DEFB 02H
Number of lines of text to display
54B8H
DEFB 08H
Length of following string (8 bytes)
54B9H
DEFM 'DO FSPEC'
54C1H
DEFB 2AH
Length of following string (42 bytes)
54C2H
DEFM 'Execute a Command File created using BUILD'
54ECHDUAL
DEFB 02H
Number of lines of text to display
54EDH
DEFB 12H
Length of following string (18 bytes)
54EEH
DEFM 'DUAL [([ON][OFF])]'
5500H
DEFB 20H
Length of following string (32 bytes)
5501H
DEFM 'Output to BOTH video and printer'
5521HDUMP
DEFB 04H
Number of lines of text to display
5522H
DEFB 37H
Length of following string (55 bytes)
5523H
DEFM 'DUMP FSPEC (START=aaaa,END=bbbb,[RELO=cccc],[TRA=dddd])'
555AH
DEFB 20H
Length of following string (32 bytes)
555BH
DEFM 'Save contents of memory to disk' + 0DH
557BH
DEFB 2AH
Length of following string (42 bytes)
557CH
DEFM 'START=starting address, END=ending address'
55A6H
DEFB 28H
Length of following string (40 bytes)
55A7H
DEFM 'RELO=relocate address, TRA=entry address'
55CFHERR
DEFB 01H
Number of lines of text to display
55D0H
DEFB 2AH
Length of following string (42 bytes)
55D1H
DEFM 'ERROR XX (Display error message)'
55FBHFSPEC
DEFB 01H
Number of lines of text to display
55FCH
DEFB 1FH
Length of following string (31 bytes)
55FDH
DEFM 'FSPEC = FILENAME/EXT.PASSWORD:D'
561CHFORMS
DEFB 04H
Number of lines of text to display
561DH
DEFB 22H
Length of following string (34 bytes)
561EH
DEFM 'FORMS [([WIDTH=xxx],[LINES=xxx])]' + 0DH
5640H
DEFB 1AH
Length of following string (26 bytes)
5641H
DEFM '<CR> = execute Top or Form'
565BH
DEFB 25H
Length of following string (37 bytes)
565CH
DEFM 'WIDTH = number of characters per line'
5681H
DEFB 28H
Length of following string (40 bytes)
5682H
DEFM 'LINES = desired number of lines per page'
56AAHFORMA
DEFB 01H
Number of lines of text to display
56ABH
DEFB 2DH
Length of following string (45 bytes)
56ACH
DEFM 'FORMAT [:D] (Initialize a diskette)'
56D9HFRE
DEFB 02H
Number of lines of text to display
56DAH
DEFB 2EH
Length of following string (46 bytes)
56DBH
DEFM 'FREE [:D] [(PRT)] (Display free space map)'
5709H
DEFB 1CH
Length of following string (28 bytes)
570AH
DEFM 'PRT = Output to Line Printer'
5726HHELLP
DEFB 01H
Number of lines of text to display
5727H
DEFB 0EH
Length of following string (14 bytes)
5728H
DEFM 'HELP [COMMAND]'
5736HKIL
DEFB 02H
Number of lines of text to display
5737H
DEFB 16H
Length of following string (22 bytes)
5738H
DEFM 'KILL FSPEC or /EXT:D'
574EH
DEFB 1CH
Length of following string (28 bytes)
574FH
DEFM 'Delete files from a diskette'
576BHLIB
DEFB 01H
Number of lines of text to display
576CH
DEFB 2DH
Length of following string (45 bytes)
576DH
DEFM 'LIB <CR> (Display library commands)'
579AHLST
DEFB 03H
Number of lines of text to display
579BH
DEFB 23H
Length of following string (35 bytes)
579CH
DEFM 'LIST FSPEC [([ASCII],[SLOW],[PRT])]'
57BFH
DEFB 2DH
Length of following string (45 bytes)
57C0H
DEFM 'Display a file. PRT = Output to Line Printer'
57EDH
DEFB 28H
Length of following string (40 bytes)
57EEH
DEFM 'ASCII = Ascii Text, SLOW = Slower output'
5816HLOAD
DEFB 01H
Number of lines of text to display
5817H
DEFB 2FH
Length of following string (47 bytes)
5818H
DEFM 'LOAD FSPEC (Load a program into memory)'
5847HMASTER
DEFB 03H
Number of lines of text to display
5848H
DEFB 13H
Length of following string (19 bytes)
5849H
DEFM 'MASTER [(DRIVE=x)]' + 0DH
585CH
DEFB 2FH
Length of following string (47 bytes)
585DH
DEFM 'Force a drive to be the Master Read/Write drive'
588CH
DEFB 29H
Length of following string (41 bytes)
588DH
DEFM '<CR> Releases any drive defined as Master'
58B6HPATCH
DEFB 05H
Number of lines of text to display
58B7H
DEFB 25H
Length of following string (37 bytes)
58B8H
DEFM 'PATCH FSPEC (ADD=xxxx,FIND=xx,CHG=xx)'
58DDH
DEFB 20H
Length of following string (32 bytes)
58DEH
DEFM 'Make a change to a program file' + 0DH
58FEH
DEFB 24H
Length of following string (36 bytes)
58FFH
DEFM 'ADD = address at which data is found'
5923H
DEFB 26H
Length of following string (38 bytes)
5924H
DEFM 'FIND = byte(s) to find (or compare to)'
594AH
DEFB 28H
Length of following string (40 bytes)
594BH
DEFM 'CHG = byte(s) to change found byte(s) to'
5973HPAUS
DEFB 02H
Number of lines of text to display
5974H
DEFB 0CH
Length of following string (12 bytes)
5975H
DEFM 'PAUSE [TEXT]'
5981H
DEFB 2EH
Length of following string (46 bytes)
5982H
DEFM 'Normally used in BUILD file to pause execution'
59B0HPROTV
DEFB 04H
Number of lines of text to display
59B1H
DEFB 19H
Length of following string (25 bytes)
59B2H
DEFM 'PROT [:D] [([PW],[LOCK])]'
59CBH
DEFB 38H
Length of following string (56 bytes)
59CCH
DEFM 'Change the Master Password and protection of user files' + 0DH
5A04H
DEFB 1BH
Length of following string (27 bytes)
5A05H
DEFM 'PW = Change Master Password'
5A20H
DEFB 2FH
Length of following string (47 bytes)
5A21H
DEFM 'LOCK = assign the Master Password to user files'
5A50HPURGG
DEFB 06H
Number of lines of text to display
5A51H
DEFB 20H
Length of following string (32 bytes)
5A52H
DEFM 'PURGE [:D] [([SYS],[INV],[ALL])]'
5A72H
DEFB 1BH
Length of following string (27 bytes)
5A73H
DEFM 'Delete files from Diskette' + 0DH
5A8EH
DEFB 20H
Length of following string (32 bytes)
5A8FH
DEFM '<CR> Defaults to user Files only'
5AAFH
DEFB 12H
Length of following string (18 bytes)
5AB0H
DEFM 'SYS = System Files'
5AC2H
DEFB 15H
Length of following string (21 bytes)
5AC3H
DEFM 'INV = Invisible Files'
5AD8H
DEFB 1BH
Length of following string (27 bytes)
5AD9H
DEFM 'ALL = All files on Diskette'
5AF4HRELO
DEFB 04H
Number of lines of text to display
5AF5H
DEFB 15H
Length of following string (21 bytes)
5AF6H
DEFM 'RELO FSPEC (ADD=aaaa)'
5B0BH
DEFB 32H
Length of following string (50 bytes)
5B0CH
DEFM 'Ability to change where program loads into memory' + 0DH
5B3EH
DEFB 2BH
Length of following string (43 bytes)
5B3FH
DEFM 'Will NOT change addresses inside of program'
5B6AH
DEFB 18H
Length of following string (24 bytes)
5B6BH
DEFM 'ADD = Relocation address'
5B83HRENAME
DEFB 02H
Number of lines of text to display
5B84H
DEFB 17H
Length of following string (23 bytes)
5B85H
DEFM 'RENAME FSPEC [TO] FSPEC'
5B9CH
DEFB 21H
Length of following string (33 bytes)
5B9DH
DEFM 'Change the name of a file/program'
5BBEHROUTE
DEFB 05H
Number of lines of text to display
5BBFH
DEFB 1DH
Length of following string (29 bytes)
5BC0H
DEFM 'ROUTE [(SOURCE=xx,DESTIN=yy)]'
5BDDH
DEFB 1DH
Length of following string (29 bytes)
5BDEH
DEFM 'Ability to route I/O devices' + 0DH
5BFBH
DEFB 24H
Length of following string (36 bytes)
5BFCH
DEFM '<CR> = Reset I/O Drivers to Original'
5C20H
DEFB 29H
Length of following string (41 bytes)
5C21H
DEFM 'DO = display, PR = printer, KB = keyboard'
5C4AH
DEFB 25H
Length of following string (37 bytes)
5C4BH
DEFM 'RI = RS-232 Input, RO = RS-232 Output'
5C70HSETCOM
DEFB 0AH
Number of lines of text to display
5C71H
DEFB 3EH
Length of following string (62 bytes)
5C72H
DEFM 'SETCOM [([OFF][WORD=x],[BAUD=xxx],[STOP=x],[PARITY=x],[MODE])]'
5CB0H
DEFB 1EH
Length of following string (30 bytes)
5CB1H
DEFM 'Initialize the RS-232 drivers' + 0DH
5CCFH
DEFB 1DH
Length of following string (29 bytes)
5CD0H
DEFM '<CR> = display present values'
5CEDH
DEFB 2EH
Length of following string (46 bytes)
5CEEH
DEFM 'WORD = number of bits per byte (5, 6, 7, or 8)'
5D1CH
DEFB 18H
Length of following string (24 bytes)
5D1DH
DEFM 'BAUD = desired baud rate'
5D35H
DEFB 23H
Length of following string (35 bytes)
5D36H
DEFM 'STOP = number of stop bits (1 or 2)'
5D59H
DEFB 2AH
Length of following string (42 bytes)
5D5AH
DEFM 'PARITY = [1 = ODD], [2 = EVEN], [3 = NONE]'
5D84H
DEFB 16H
Length of following string (22 bytes)
5D85H
DEFM 'MODE = [WAIT] [NOWAIT]'
5D9BH
DEFB 1DH
Length of following string (29 bytes)
5D9CH
DEFM 'OFF = Turn RS-232 drivers off'
5DB9H
DEFB 17H
Length of following string (23 bytes)
5DBAH
DEFM '() = Set default values'
5DD1HSYNTA
DEFB 03H
Number of lines of text to display
5DD2H
DEFB 22H
Length of following string (34 bytes)
5DD3H
DEFM 'FSPEC = filespec, /EXT = extension'
5DF5H
DEFB 20H
Length of following string (32 bytes)
5DF6H
DEFM '[] = optional, :D = Drive number'
5E16H
DEFB 10H
Length of following string (16 bytes)
5E17H
DEFM '<CR> = Enter key'
5E27HSYSTE
DEFB 04H
Number of lines of text to display
5E28H
DEFB 0EH
Length of following string (14 bytes)
5E29H
DEFM 'TAPE (S=x,D=y)'
5E37H
DEFB 20H
Length of following string (32 bytes)
5E38H
DEFM 'Execute Tape Transfer Operation' + 0DH
5E58H
DEFB 2DH
Length of following string (45 bytes)
5E59H
DEFM 'S stands for SOURCE, D stands for DESTINATION'
5E86H
DEFB 29H
Length of following string (41 bytes)
5E87H
DEFM 'x or y: T=Tape, D=Disk, R=Ram (Memory)'
5EB0HTIM
DEFB 02H
Number of lines of text to display
5EB1H
DEFB 0FH
Length of following string (15 bytes)
5EB2H
DEFM 'TIME [HH:MM:SS]'
5EC1H
DEFB 25H
Length of following string (37 bytes)
5EC2H
DEFM 'Display current time, or set new time'
5EE7HWPJ
DEFB 04H
Number of lines of text to display
5EE8H
DEFB 0EH
Length of following string (14 bytes)
5EE9H
DEFM 'WP [(DRIVE=x)]'
5EF7H
DEFB 1BH
Length of following string (27 bytes)
5EF8H
DEFM 'Write Protect a Disk Drive' + 0DH
5F13H
DEFB 31H
Length of following string (49 bytes)
5F14H
DEFM '(Will NOT override Write Protect tab on diskette)'
5F45H
DEFB 1BH
Length of following string (27 bytes)
5F46H
DEFM '<CR> = Unprotect all drives'
5F61H
DEFB 23H
Length of following string (35 bytes)
5F62H
DEFM '-else- Write Protect Disk Drive "x"'
5F85H
DEFB 00H 00H
End of Table (COMTAB terminator)
 
END 4E00H