------------------------
                     | Model 100 System Map |
                     ------------------------
                          Copyright 1985
                     Revision Date: 09/30/85
                   Compiled and Researched by:
                       Robert D. Covington
            Systems Information Management Consultants
      [Not associated with The Covington Group, N. Y., N. Y.]

      [Update: I've added decimal addresses along side the hex 
       addresses for easier reference.  -Gary Weber 3/12/96]

    This document may be duplicated and distributed free of
charge to any individuals who desire it.  Any duplications of
this document, however, must inluce all of the information
contained here-in, with no deletions or changes.
    The author and distributors of this document make no 
expressed or implied warrantees as to the validity of the 
information contained here in.


                      - Model 100 ROM Memory Map -

0000H (0) -  System Reset

0008H (8) -  Compare character following RST 8H with the character pointed 
        to by HL.
         Entry:
               HL - Points to the buffer to be used for the 
                    comparison.  The character after call is compared 
                    with the character pointed to by HL.
         Exit:
               If compare is successful a RST 10H is issued
               If compare is unsuccessful, a SYNTAX ERROR is generated

0010H (16) -  Get the next character in the buffer pointed to by HL and 
        place it in the A register.  HL is incremented prior to the 
        load.  Spaces and tabs in the buffer are skipped.
         Entry:
               HL - Points to buffer
         Exit:
               A  - Character loaded from buffer
               HL - Incremented
           C flag - Set if character is a digit
           Z flag - Set if character is a colon or null

0018H (24) -  Compare DE and HL
         Entry:
               HL - Number to compare
               DE - Number to compare
         Exit:
           C flag - Set if HLFAC1
                    1 if BCDEFAC1
34C2H (13506) -  Compare the signed integer in DE to the signed integer in HL.
         Entry:
               HL - First integer to compare
               DE - Second integer to compare
         Exit:
                A = 255 (-1) if DE>HL
                    1 if DEHL
34FAH (13562) -  Compare the double precision number in FAC1 to the double 
        precision number in FAC2.
         Entry:
             FAC1 - First double precision value to compare
             FAC2 - Second double precision value to compare
         Exit:
                A = 255 (-1) if FAC1>FAC2
                    1 if FAC1FAC2
3501H (13569) -  CINT Function.  Convert floating point number in FAC1 to an 
        integer.
         Entry:
             FAC1 - Floating point number to convert
         Exit:
               HL - Converted signed integer in FAC1
             FAC1 - Converted to an integer
3510H (13584) -  Load the signed integer in HL into FAC1
         Entry:
               HL - Signed integer to put in FAC1
         Exit:
                A = 2
352AH (13610) -  CSNG Function. Convert the number in FAC1 to a single 
        precision value.
         Entry:
             FAC1 - Number to convert
         Exit:
             FAC1 - Converted single precision number
3540H (13632) -  Convert the signed integer in FAC1 to single precision.
         Entry:
             FAC1 - Contains signed integer to convert
         Exit:
             FAC1 - Converted single precision number
3543H (13635) -  Convert the signed integer in HL to a single precision number 
        in FAC1.
         Entry:
               HL - Contains signed integer to convert
         Exit:
             FAC1 - Converted single precision number
35BAH (13754) -  CDBL function.  Convert the number in FAC1 to a double 
        precision floating point number.
         Entry:
             FAC1 - Number to convert to double precision
         Exit:
             FAC1 - Converted double precision number
3645H (13893) -  FIX Function
3654H (13908) -  INT Function.  Find the integer portion of the floating point 
        number in FAC1.
         Entry:
             FAC1 - Floating point number
         Exit:
             FAC1 - Integer portion of floating point number
36F8H (14072) -  Subtract the signed integer in HL from the signed integer in 
        DE.
         Entry:
               HL - First number to subtract
               DE - Second number to subtract
         Exit:
             FAC1 - Result of subtract
               HL - Integer result of subtract
3704H (14084) -  Add the signed integer in HL to the signed integer in DE.  If 
        the result is greater than 32767, the result is converted 
        into single precision.
         Entry:
               HL - First number to add
               DE - Second number to add
         Exit:
             FAC1 - Result of addition
               HL - Integer result of addition
3725H (14117) -  Multiply the signed integer in HL by the signed integer in 
        DE.  If the result is greater than 32767, the result is 
        converted into single precision.
         Entry:
               HL - First integer to multiply
               DE - Second integer to multiply
         Exit:
             FAC1 - Result of multiplication
               HL - Integer result of multiplication
377EH (14206) -  Divide the signed integer in DE by the signed integer in HL.
         Entry:
               HL - Integer Numerator
               DE - Integer Denominator
         Exit:
             FAC1 - Result of division
37F4H (14324) -  Add the single precision numbers in FAC1 and BCDE 
        (FAC1=FAC1+BCDE)
         Entry:
             FAC1 - First single precision number
             BCDE - Second single precision number
         Exit:
             FAC1 - Result of single precision addition
37F7H (14327) -  Add the single precision numbers in FAC1 and FAC2 
        (FAC1=FAC1+FAC2).
         Entry:
             FAC1 - First single precision number
             FAC2 - Second single precision number
         Exit:
             FAC1 - Result of single precision addition
37FDH (14333) -  Subtract the single precision numbers in FAC1 and BCDE 
        (FAC1=FAC1-BCDE)
         Entry:
             FAC1 - First single precision number
             BCDE - Second single precision number
         Exit:
             FAC1 - Result of subtract
3803H (14339) -  Multiply the single precision numbers in FAC1 and BCDE  
        (FAC1=FAC1*BCDE)
         Entry:
             FAC1 - First single precision number
             BCDE - Second single precision number
         Exit:
             FAC1 - Result of multiply
3806H (14342) -  Multiply the single precision numbers in FAC1 and FAC2  
        (FAC1=FAC1*FAC2)
         Entry:
             FAC1 - First single precision number
             FAC2 - Second single precision number
         Exit:
             FAC1 - Result of multiply
380EH (14350) -  Single precision divide (FAC1=BCDE/FAC1)
         Entry:
             BCDE - Single precision numerator
             FAC1 - Single precision denominator
         Exit:
             FAC1 - Result of divide
3827H (14375) -  Load FAC2 with the single precision number in BCDE.
         Entry:
             BCDE - Single precision number
         Exit:
             FAC2 - Copy of single precision number
               HL - Destroyed
3840H (14400) -  Convert the ASCII number pointed to by HL to its double 
        precision equivalent.
         Entry:
               HL - Points to buffer with ASCII number
         Exit:
             FAC1 - Value of ASCII number
               All registers destroyed
39D4H (14804) -  Print HL in ASCII form at the current cursor position
         Entry:
               HL - Contains 16 bit binary number to print
         Exit:
               All registers destroyed
39E8H (14824) -  Convert the binary number in FAC1 to ASCII
         Entry:
               HL - Points to the start of the buffer where the ASCII 
                    number will be stored
             FAC1 - Binary Number
         Exit:
               All registers destroyed
39ECH (14828) -  Convert the binary number in FAC1 to ASCII.  This routine 
        will format the ASCII output with the same parameters offered 
        by BASIC's PRINT USING statement.
         Entry:
                A - Bit configuration for PRINT USING options
                    Bit:
                        0 - Exponential notation
                        1 - Not used (reset)
                        2 - Sign (+ or -) follows ASCII number
                        3 - Sign (+ or -) preceeds number
                        4 - Print leading '$'
                        5 - Asterisks fill
                        6 - Print commas every third digit
                        7 - Set, allow print using formating
                            Reset, do no formating on number
                B - Number of digits to the left of the decimal 
                    point.  This value is used for placeholder filling
                C - Number of digits to the right of the decimal 
                    point.   This value is used for placeholder 
                    filling
               HL - Start of receiving buffer for ASCII number
             FAC1 - Binary number to convert
         Exit:
               All registers destroyed
3D7FH (15743) -  Single precision exponential function
3D8EH (15758) -  Double precision exponential function
3DF7H (15863) -  Integer exponential function
3FA0H (16288) -  TIME$ ON Statement

3FB2H (16306) -  TIME$ OFF Statement

3FB9H (16313) -  TIME$ STOP Statement

4009H (16393) -  Clear all COM, TIME, and KEY interrupt definitions
         Exit:
               HL, A, and B destroyed

407FH (16511) -  RESTORE Statement

409AH (16538) -  STOP Statement

409FH (16543) -  END Statement

40DAH (16602) -  CONT Statement

40F1H (16625) -  Check to see if the current character in the buffer pointed 
        to by HL is an alpha character
         Entry:
               HL - Points to character to check
         Exit:
                A - Character pointed to by HL
           C flag - Reset if character is a letter

40F2H (16626) -  Check to see if the character in A is a letter
         Entry:
                A - Character to check
         Exit:
                A - Preserved
           C flag - Reset if character is a letter

40F9H (16633) -  CLEAR Statement

4174H (16756) -  NEXT Statement

4222H (16930) -  Send CRLF to screen or printer
         Exit:
                A = 10

4225H (16933) -  Send LF to screen or printer
         Exit:
                A = 10

4229H (16937) -  BEEP Statement.  Beep computer.
         Exit:
                A = 7

422DH (16941) -  Home cursor
         Exit:
                A = 11

4231H (16945) -  CLS Statement.  Clear screen
         Exit:
                A = 12

4235H (16949) -  Protect line 8.  An ESC T is printed.
         Exit:
                A = 84

423AH (16954) -  Unprotect line 8.  An ESC U is printed.
         Exit:
                A = 85

423FH (16959) -  Stop automatic scrolling.  An ESC V is printed.
         Exit:
                A = 86

4244H (16964) -  Resume automatic scrolling.  An ESC W is printed.
         Exit:
                A = 87

4249H (16969) -  Turn the cursor on.  An ESC P is printed.
         Exit:
                A = 80

424EH (16974) -  Turn the cursor off.  An ESC Q is printed.
         Exit:
                A = 81

4253H (16979) -  Delete current line on screen.  An ESC M is
        printed.
         Exit:
                A = 77

4258H (16984) -  Insert line at current line.  An ESC L is printed.
         Exit:
                A = 76

425DH (16989) -  Erase from cursor to end of line.  An ESC K is printed.
         Exit:
                A = 75

4262H (16994) -  Send ESC X
         Exit:
                A = 88

4269H (17001) -  Start inverse character mode.  An ESC p is printed.
         Exit:
                A = 112

426EH (17006) -  Cancel inverse character mode.  An ESC q is         printed.
         Exit:
                A = 113

4270H (17008) -  Send escape sequence
         Entry:
                A - Character after escape (27)

427CH (17020) -  Set the current cursor position
         Entry:
                L - Column (1-40)
                H - Row (1-8)
         Exit:
                A - Destroyed

428AH (17034) -  Erase function key display
         Exit:
           HL & A - Destroyed

42A5H (17061) -  Set and display function keys
         Entry:
               HL - Start address of function key table (see 5A7CH 
                    for the format of the table)
         Exit:
               All registers destroyed

42A8H (17064) -  Display function key line
         Exit:
               All registers destroyed

4313H (17171) -  Print the character in the A register to the screen.  This 
        routine is used by RST 20H to print characters on the screen.
         Entry:
                A - Character to output

4373H (17267) -  Control code routine for LCD output (RST 20H)

438AH (17290) -  Start of lookup table for RST 20H control characters.  Each 
        entry starts with the ASCII value of the character followed 
        by the two byte vector address.

43A1H (17313) -  End of special ASCII character lookup table

43AFH (17327) -  ESC Y routine (Set cursor position)

43B2H (17330) -  ESCape routine (27).  This routine puts the LCD output 
        routine into ESCape mode.  The following characters processed 
        throught the video driver will be used to determine the 
        escape sequence.

43B8H (17336) -  Start of lookup table for LCD escape sequences.  Each entry 
        starts with the one byte escape letter followed by the two 
        byte vector address.

43F9H (17401) -  End of escape vector lookup table

43FAH (17402) -  ESCape sequence processor.  This routine is used after the 
        escape mode has been enabled (see 43B2H).

4431H (17457) -  Escape p routine (start inverse video)

4432H (17458) -  Escape q routine (cancel inverse video)

4437H (17463) -  Escape U routine (unprotect line 8)

4439H (17465) -  Escape T routine (protect line 8)

443FH (17471) -  Escape V routine (Stop automatic scrolling)

4440H (17472) -  Escape W routine (Resume automatic scrolling)

444AH (17482) -  Escape X routine

4453H (17491) -  Escape C routine (move cursor to the right)

445CH (17500) -  Escape D routine (move cursor to the left)

4461H (17505) -  Backspace routine (08H)

4469H (17513) -  Escape A routine (move cursor up one line)

446EH (17518) -  Escape B routine (move cursor down one line)

4480H (17536) -  Tab routine (09H)

4494H (17556) -  Linefeed routine (0AH)

44A8H (17576) -  Verticle tab (0BH) and ESC H routine (home cursor)

44AAH (17578) -  Carriage return routine (0DH)

44AFH (17583) -  Escape P routine (turn cursor on)

44BAH (17594) -  Escape Q routine (turn cursor off)

44C4H (17604) -  Escape M routine

44EAH (17642) -  Escape L routine (insert line on screen)

4535H (17717) -  Escape l routine (erase current cursor line)

4537H (17719) -  Escape K routine (erase from cursor to the end of the screen)

4548H (17736) -  Form feed (0CH), CLS, ESC E, and ESC j routine

454EH (17742) -  Escape J routine

463EH (17982) -  Input line and place at F685H.  Print characters as they are 
        entered.  Start input with a "? ".
         Exit:
            F685H - Text input from keyboard
               HL - Loaded with F685H
           C flag - Set if input aborted by a control C

4644H (17988) -  Same as 463EH but no "? " is printed.

4684H (18052) -  Input routine 463EH Control C handler

4696H (18070) -  Input routine 463EH ENTER handler

46A0H (18080) -  Input routine 463EH backspace, left arrow, control H handler

46C3H (18115) -  Input routine 463EH Control U & X handler

46CAH (18122) -  Input routine 463EH Tab handler

478BH (18315) -  DIM Statement

4790H (18320) -  Find the address of the variable in the buffer pointed to by 
        HL.  This routine returns the same result as BASIC's VARPTR 
        instruction.
         Entry:
               HL - Points to the buffer containing the variable name
         Exit:
               HL - Incremented past variable name
               DE - Address of variable descriptor table (like VARPTR)
          (FB65H) - Variable type

4991H (18833) -  USING Function

4B44H (19268) -  Vector of RST 20H.  Send the character in A to the screen or 
        printer (see RST 20H).

4B55H (19285) -  Print the character in the A register on the printer.  Expand 
        tabs into spaces if nescessary.
         Entry:
                A - Character to output

4B92H (19346) -  Reinitialize screen back to the LCD.  This routine sends a CR 
        to the printer if needed to empty the print buffer on the 
        printer.

4BABH (19371) -  LCD character output routine
         Entry:
                A - Character to output

4BB8H (19384) -  Send a CRLF to screen if needed to end the current line.  
        This routine assures that the next text printed on the screen 
        will start at the beginning of a line.
         Exit:
                A - Destroyed

4BEAH (19434) -  INKEY$ Function

4C84H (19588) -  Get information for the file number in the A register.  This 
        routine performs the same as VARPTR(#x).  If A is greater 
        than MAXFILES, a BN error is generated.
         Entry:
                A - File number (1-maxfiles)
         Entry:
               HL - Points to file number descriptor table (see 
                    VARPTR(#x).
           Z flag - Set if file is not already opened

4CCBH (19659) -  OPEN Statement

4D59H (19801) -  LCD, CRT, and LPT file close routine

4D6EH (19822) -  RUN statement with text following the RUN

4D70H (19824) -  LOAD Statement

4D71H (19825) -  MERGE Statement

4DCFH (19919) -  SAVE Statement

4E28H (20008) -  CLOSE Statement

4E8EH (20110) -  INPUT$ Function

4F0AH (20234) -  Zero the memory starting at HL for B number of bytes
         Entry:
               HL - Start of buffer to zero
                B - Number of bytes to zero
         Exit:
               HL - Incremented past last byte zeroed
                A = 0
                B = 0

4F0BH (20235) -  Fill the memory starting at HL with the byte in the A 
        register for B number of bytes
         Entry:
               HL - Start of buffer to fill
                A - Character to fill buffer with
                B - Number of bytes to fill
         Exit:
               HL - Incremented past last byte filled
                B = 0

4F2EH (20270) -  Routine called by the PRINT statement to initialize a PRINT #.

4F5BH (20315) -  LINE INPUT # statement

504EH (20558) -  Generate NM error

5051H (20561) -  Generate AO error

5054H (20564) -  Generate DS error

5057H (20567) -  Generate FF error

505AH (20570) -  Generate CF error

505DH (20573) -  Generate BN error

5060H (20576) -  Generate IE error

5063H (20579) -  Generate EF error

5066H (20582) -  Generate FL error

506BH (20587) -  LOF Function

506DH (20589) -  LOC Function

506FH (20591) -  LFILES Function

5071H (20593) -  DSKO$ Function

5073H (20595) -  DSKI$ Function

50F1H (20721) -  Start of device name table.  Each entry starts with the text 
        name of the device ending with a FFH.

5112H (20754) -  End of device name table

5113H (20755) -  Start of device control block vector addresses.  Each two 
        byte pointer corresponds to the name in the device name table 
        at 50F1H.  This pointer points to the device's DCB which 
        contains the vectors for device open, close, output, and 
        input.

5122H (20770) -  End of device control block vector addresses
5146H (20806) -  Entry to TELCOM
 
515BH (20827) -  TELCOM Ready re-entry point for TELCOM commands
 
5185H (20869) -  Start of TELCOM instruction vector table.  Each entry starts 
        with a 4 byte instruction name followed by a 2 byte routine 
        vector.
 
51A2H (20898) -  End of TELCOM instruction vector table
 
51C0H (20928) -  TELCOM STAT instruction routine
 
51C7H (20935) -  Print current STAT (RS232 settings for TELCOM) and return to 
        TELCOM ready
 
51EDH (20973) -  Set STAT (RS232 settings for TELCOM) and return to TELCOM 
        ready
 
522FH (21039) -  TELCOM CALL instruction routine
 
524DH (21069) -  TELCOM FIND instruction routine
 
52BBH (21179) -  Disconect phone line and disable modem carrier
         Exit:
                A - New contents of port 0BAH
 
52D0H (21200) -  Connect phone line and enable modem carrier
         Exit:
                A - New contents of port 0A8H
           C flag - Set
 
52E4H (21220) -  Lift telephone and wait for a carrier.   The carrier must be 
        present for more than 2 seconds to qualify a carrier detect.
         Exit:
             C flag - Set if shift break pressed
             Z flag - Set if carrier present
 
5310H (21264) -  Pause for about 2 seconds
         Exit:
          BC & AF - Destroyed
 
532DH (21293) -  Execute logon sequence pointed to by HL.  This routine is 
        used to drive the Model 100 autodialer
         Entry:
               HL - Points to logon buffer
 
540AH (21514) -  Dial the digit that is present in the A register.  The ASCII 
        equivalent of the number is printed on the screen at the 
        current cursor position as this routine is dialing.
         Entry:
                A - Digit to dial
         Exit:
               All registers destroyed
 
5455H (21589) -  TELCOM TERM instruction routine
 
550DH (21773) -  Start of function key vector table for TERM commands in 
        TELCOM.  Each 2 byte vector corresponds to each function key.
 
551BH (21787) -  End of function key vector table for TERM
 
5523H (21795) -  TELCOM PREV function routine
 
553EH (21822) -  TELCOM FULL/HALF function routine
 
5550H (21840) -  TELCOM ECHO function routine
 
559DH (21917) -  TELCOM UP function routine
 
567EH (22142) -  TELCOM DOWN function routine
 
571EH (22302) -  TELCOM BYE function routine
 
5791H (22417) -  Print the buffer pointed to by HL till a null or '"' is 
        found.  Printing begins at the start of a line.  If the 
        cursor is not at the begining of the line, a CR is sent.
         Entry:
               HL - Points to the start of the buffer to be printed
 
5797H (22423) -  MENU Statement.  Go to main menu
 
59ADH (22957) -  Convert filename from right justified extention (name padded 
        with spaces to cause extention to be last two characters) to 
        normal filename with "." delimeter for extention.
         Entry:
               DE - Points to right justified extention filename (8 
                    characters)
               HL - Points to the start of the destination buffer for 
                    the converted filename
         Exit:
               HL - Points to end of destination buffer where the 
                    filename is stored.  Filename is terminated with 
                    a null.
               DE - Points to end of source filename
                A - Destroyed
 
5A12H (23058) -  Print time, day, and date on the first line of the screen 
        (used on main menu).  The screen is cleared prior to printing
         Exit:
               All registers destroyed
 
5A15H (23061) -  Same 5A12H but screen is not cleared.  Line is still printed 
        on top line of screen.
         Exit:
               All registers destroyed
 
5A58H (23128) -  Print the buffer pointed to by HL.  Printing terminates with 
        a null.
         Entry:
               HL - Points to the buffer to be printed
         Exit:
               HL - Points to the terminating null
                A - 0
 
5A62H (23138) -  Move the memory pointed to by DE to the memory pointed to by 
        HL for A number of bytes.  HL and DE are incremented after 
        each byte moved
         Entry:
               DE - Points to start of source memory
               HL - Points to start of destination memory
                A - Number of bytes to move
         Exit:
          DE & HL - Incremented past last byte moved
                A = 0
 
5A6DH (23149) -  Compare the buffer pointed to by DE to the buffer pointed to 
        by HL for C bytes or until a null is found in the buffer 
        pointed to by DE.
         Entry:
               DE - Points to start of first buffer
               HL - Points to start of second buffer
                C - Number of bytes to compare
         Exit:
                A = 0 if the compare was ended with a null
                C - Number of bytes remaining until compare would 
                    have been successful.
          HL & DE - If compare is successful, these registers are 
                    incremented past the last byte compared.  If the 
                    compare ended with a null, DE points to the 
                    null.  If compare is unsuccessful, these 
                    registers point to the offending characters
           Z flag - Set if compare is successful
 
5A79H (23161) -  Clear function key definition table
         Exit:
               All registers destroyed
 
5A7CH (23164) -  Set new function key table.  The table contains the function 
        key definitions up to 16 characters for each of the 8 
        function keys.  The last byte of each entry should have the 
        high bit set to signify the end of the function key 
        definition.  Empty entries should contain an 80H.
         Entry:
               HL - Points to function key table
         Exit:
               All registers destroyed
 
5A9EH (23198) -  Display function keys on 8th line if enabled
         Exit:
               All registers destroyed
 
5AA9H (23209) -  Search directory for filename
         Entry:
               DE - Points to buffer containing filename.  The buffer 
                    is terminated with a null.
         Exit:
               HL - Address of file directory entry
           Z flag - Set if file was not found
               All other registers destroyed
 
5AE3H (23267) -  Get start address of file
         Entry:
               HL - Points to the file's directory entry
         Exit:
               HL - Points to start of file
               DE - Points to directory entry + 2
 
5B68H (23400) -  Entry to ADDReSS
 
5B6BH (23403) -  Enter ADDReSS using the filename pointed to by DE.
         Entry:
               DE - Points to the filename to use with ADDReSS 
                    terminated with a null
 
5B6FH (23407) -  Entry to SCHEDuLe
 
5B72H (23410) -  Enter SCHEDuLe using the filename pointed to by DE.
         Entry:
               DE - Points to the filename to use with SCHEDuLe 
                    terminated with a null
 
5BF5H (23541) -  FIND instruction for ADDRSS/SCHEDL
 
5BF7H (23543) -  LFND instruction for ADDRSS/SCHEDL
 
5C3FH (23615) -  Find the text in the buffer pointed to by HL in the text file 
        pointed to by DE.  All lowercase letters are converted to 
        uppercase prior to compare.
         Entry:
               HL - Points to string to search for.  The string must 
                    end with a null
               DE - Points to where search is to begin in the text 
                    file
         Exit:
               BC - Points to the start of the found string in the 
                    file.
               DE - Points to the start of the record where the 
                    string was found
           C flag - Set if string found
 
5C6DH (23661) -  Incremented DE past the next CRLF in the text file.
         Entry:
               DE - Points to a text file
         Exit:
               DE - Points to the byte following the next CRLF in the 
                    text file
                A - Destroyed
 
5C74H (23668) -  Check the next byte(s) in the buffer pointed to by DE for a 
        CRLF.
         Entry:
               DE - Points to buffer where CRLF check is to be made
         Exit:
               DE - Incrmented once if no CRLF is found or twice if a 
                    CRLF is found
           Z flag - Set if CRLF found
 
5CEFH (23791) -  Start of ADDRSS/SCHEDL instruction vector table.  Each entry 
        starts with a 4 byte instruction name followed by the 
        instruction's 2 byte vector address
 
5D00H (23808) -  End of ADDRSS/SCHEDL instruction vector table
 
5D64H (23908) -  Wait for character from keyboard and convert it to uppercase 
        if nescessary.  All function keys are converted into their 
        pre-programmed text.
         Exit:
                A - Uppercase character from keyboard
 
5D6AH (23914) -  Home Cursor
        Exit:
               HL - Destroyed
 
5D70H (23920) -  Print time on top line of screen until a key is pressed.  
        When a key is pressed, the cursor returns to its original 
        position prior to the call.
 
5DEEH (24046) -  Entry to TEXT
 
5E51H (24145) -  EDIT Statement
 
5F2FH (24367) -  Wait for a space to be entered on keyboard
         Exit:
                A - Space (20H)
 
6018H (24600) -  Start of TEXT control character vector table.  Each 2 byte 
        vector entry corresponds to the ASCII value of the control 
        character (ex. The address at 6018H points to the routine for 
        ^A which has an ASCII value of 1)
 
6055H (24661) -  End of TEXT control character vector table
 
6056H (24662) -  TEXT ESCape routine
 
607CH (24700) -  TEXT control P routine
 
608AH (24714) -  TEXT control I routine
 
60BEH (24766) -  TEXT control M routine
 
60DEH (24798) -  TEXT right arrow and control D routine
 
60E2H (24802) -  TEXT down arrow and control X routine
 
610BH (24843) -  TEXT control H routine
 
6151H (24913) -  TEXT left arrow and control S routine
 
6155H (24917) -  TEXT up arrow and control E routine
 
617AH (24954) -  TEXT control F routine
 
618CH (24972) -  TEXT control A routine
 
61C2H (25026) -  TEXT control T routine
 
61D7H (25047) -  TEXT control B routine
 
61FDH (25085) -  TEXT control R routine
 
620BH (25099) -  TEXT control Q routine
 
6210H (25104) -  TEXT control W routine
 
621CH (25116) -  TEXT control Z routine
 
6242H (25154) -  TEXT control L routine
 
628FH (25231) -  TEXT control C routine
 
6431H (25649) -  TEXT control O routine
 
6445H (25669) -  TEXT control U routine
 
6551H (25937) -  TEXT control N routine
 
65C3H (26051) -  Move the memory pointed to by HL to the memory pointed to by 
        DE until a null (0) is found.
         Entry:
               HL - Points to start of source buffer
               DE - Points to start of destination buffer
         Exit:
               HL - Preserved
               DE - Points to the byte following the null
                A = 0
 
6691H (26257) -  TEXT control Y routine
 
6713H (26387) -  TEXT control G routine
 
6774H (26484) -  TEXT control V routine
 
6B61H (27489) -  Insert a character into a text file
         Entry:
               HL - Points to place to insert character
                A - Character to insert
         Exit:
               HL - Incremented past inserted character
                B - Character inserted
           C flag - Set if out of memory
               All other registers destroyed
 
6B6DH (27501) -  Inset BC number of spaces in memory
         Entry:
               HL - Points to place where insertion is to begin.
               BC - Number of spaces to insert
         Exit:
               HL - Preserved
           C flag - Set if out of memory
               All other registers destroyed
 
6B9FH (27551) -  Delete BC number if characters in a text file.
         Entry:
               HL - Points to place where deletion is to begin.
               BC - Number of characters to delete
         Exit:
               HL - Preserved
               All other registers destroyed
 
6BDBH (27611) -  Move the memory poined to by HL to the memory pointed to by 
        DE for BC bytes.  HL and DE are incremented on each byte 
        transfered (same as LDIR).
         Entry:
               HL - Points to end of source memory
               DE - Points to end of destination memory
               BC - Number of bytes to move
         Exit:
          HL & DE - Incremented past last character moved
                A - Destroyed
 
6BE6H (27622) -  Move the memory pointed to by HL to the memory pointed to by 
        DE for BC bytes.  HL and DE are decremented on each byte 
        transfered (same as LDDR).
         Entry:
 
               HL - Points to end of source memory
               DE - Points to end of destination memory
               BC - Number of bytes to move
         Exit:
          HL & DE - Decremented past last character moved
                A - Destroyed
 
6BF1H (27633) -  Start of ROM program catalog entries
 
6C48H (27720) -  End of ROM programs catalog entries
 
6C49H (27721) -  Entry to BASIC
 
6CD6H (27862) -  Re-initialize system.  User files are not lost.
 
6CE0H (27872) -  Warm Start Reset Entry
 
---------------------------------------------------------------------------
                      - Model 100 RAM Memory Map -

F5F4H (62964) -  Himem (2)

F5F9H (62969) -  RST 5.5 RAM vector (3)  Used for BCR interrupt

F5FCH (62972) -  RST 6.5 RAM vector (3)  Used for UART interrupt (Called)

F5FFH (62975) -  RST 7.5 RAM vector (3)  Used for Timer interrupt (Called)

F602H (62978) -  RAM vector for TRAP interrupt (3) (1431H)

F62AH (63018) -  Option ROM flag (0-no option ROM)

F62BH (63019) -  Dial speed (1=10pps, 2=20pps)

F630H (63024) -  Start of 8 byte table for each function key status (1=on,
         0=off)

F639H (63033) -  Cursor row (1-8)

F63AH (63034) -  Cursor column (1-40)

F63BH (63035) -  Number of active rows (1-8)

F63CH (63036) -  Number of active columns on screen (1-40)

F63DH (63037) -  Label line/8th line protect status (0=off)

F63EH (63038) -  Scroll disable flag (0-allow scrolling)

F63FH (63039) -  Cursor status (0-off, 1-on)

F640H (63040) -  Cursor row (1-8)

F641H (63041) -  Cursor Column (1-40)

F646H (63046) -  ESCape mode flag for RST 20H (0-normal video, not zero-ESCape 
         mode)

F648H (63048) -  Reverse video switch (0=off)

F64EH (63054) -  X coordinate of last graphic point plotted

F64FH (63055) -  Y coordinate of last graphic point plotted

F656H (63062) -  Power off exit condition switch (0-return control back to 
        program on power up, 1-return to menu on power up)

F658H (63064) -  Full/half duplex switch (0-half duplex)

F65AH (63066) -  Auto linefeed on RS232 output switch (0-auto linefeed option 
        off, not zero-automatically send a linefeed after every 
        carriage return)

F65BH (63067) -  Start of textual RS232 parameter setting buffer.   This 
        buffer is normally used to store the STAT setting for TELCOM 
        (5)

F660H (63072) -  Self modifying address called on CALL statement

F661H (63073) -  Address last called (2)

F667H (63079) -  Called on OUT statement

F66AH (63082) -  Called on INP function

F672H (63090) -  Error code of last error

F674H (63092) -  Line printer head position

F675H (63093) -  Output device for RST 20H (0=screen, 1=printer)

F678H (63096) -  Start of string buffer for BASIC (2)

F67AH (63098) -  Current executing line number, FFFFH if no program running. 
        (2)

F67CH (63100) -  Start of BASIC program pointer (2)

F680H (63104) -  End of statement marker ':' or null

F685H (63109) -  Start of keyboard buffer used by the keyboard line input 
        routine at 4644H.

F788H (63368) -  Current horizontal position of cursor (0-39)

F789H (63369) -  Function key definition area (128)

F80AH (63498) -  Function key definition area used by BASIC (128)

F88CH (63628) -  End of used RAM for permanent storage (does not include 
        variables, paste buffer, etc.) (2)

F923H (63779) -  Seconds (ones)

F924H (63780) -  Seconds (tens)

F925H (63781) -  Minutes (ones)

F926H (63782) -  Minutes (tens)

F927H (63783) -  Hours (ones)

F928H (63784) -  Hours (tens)

F929H (63785) -  Date (ones)

F92AH (63786) -  Date (tens)

F92BH (63787) -  Day code (0=Sunday, 1=Monday, etc.)

F92CH (63788) -  Current month (1-12)

F92DH (63789) -  Year (ones)

F92EH (63790) -  Year (tens)

F933H (63795) -  Seconds (ones)

F934H (63796) -  Seconds (tens)

F935H (63797) -  Minutes (ones)

F936H (63798) -  Minutes (tens)

F937H (63799) -  Hours (ones)

F938H (63800) -  Hours (tens)

F939H (63801) -  Date (ones)

F93AH (63802) -  Date (tens)

F93BH (63803) -  Day (0=Sunday, 1=Monday, etc.)

F93DH (63805) -  Time for ON TIME interrupt (SSMMHH) (6)

F944H (63812) -  On Com flag (0=off, 255=on)

F945H (63813) -  Address of On Com routine (2)

F947H (63815) -  On time flag (0=off, 255=on)

F948H (63816) -  Address of on time routine (2)

F94AH (63818) -  Function key vector table (24)
           First byte - On/off status
         Next 2 bytes - Vector address

F962H (63842) -  Start of RAM directory
        Byte 1 - Directory flags.  A 255 specifies the end of the 
                 directory.
               Bit 7 - Set if valid entry
                   6 - Set for .DO file
                   5 - Set for .CO file
                   4 - Set for ROM file
                   3 - Set for invisible file
           2-3 - Address of file
          4-11 - Eight byte filename.  Filename must have extention 
                 right justified and filename left justified.  Any 
                 gaps should be filled with spaces (ex. "ADD.DO" 
                 should be "ADD   DO")

F99AH (63898) -  Address of current BASIC program not saved (Suzuki) (2)

F9A5H (63909) -  Start of Paste buffer (Hayashi) (2)

FAACH (64172) -  ASCII character last output to printer

FAADH (64173) -  Label line enable flag (0=not enabled)

FAAEH (64174) -  Contents of port 0A8H

FAAFH (64175) -  Start of IPL filename (8)

FABAH (64186) -  Address where last BASIC list started (2)

FABEH (64190) -  Storage for stack pointer on power up/down for continued 
        program execution after a power down (2)

FAC0H (64192) -  Lowest RAM memory address used by system (8000H for a 32k 
        system) (2)

FAC9H (64201) -  Offset of last RST 38H call

FAD0H (64208) -  Length of last program loaded or saved on tape

FADAH (64218) -  Start of RST 38H vector table (256)

FAE2H (64226) -  LCD character output RAM vector for 20H routine.  The address 
        at this location is called everytime a character is sent to 
        the LCD (note:This routine is called at 4317H). (2)

FAE4H (64228) -  Printer output RAM vector.  The 2 byte address at this 
        location is called everytime a character is output to the 
        printer via the routine at 1470H. (2)

FB00H (64256) -  EOF function RAM vector.   The 2 byte address at this 
        location is called evertime an EOF function is performed. (2)

FB0CH (64268) -  TERM F6 RAM vector (2)

FB0EH (64270) -  TERM F7 RAM vector (2)

FB14H (64276) -  WIDTH statement RAM vector.  (2)

FB1AH (64282) -  CRT open routine RAM vector (2)

FB1EH (64286) -  CRT output file routine RAM vector (2)

FB20H (64288) -  WAND Open routine RAM vector (2)

FB22H (64290) -  WAND Close routine RAM vector (2)

FB24H (64292) -  WAND Get routine RAM vector (2)

FB26H (64294) -  WAND Special I/O routine vector (2)

FB28H (64296) -  LOF function routine RAM vector (2)

FB2AH (64298) -  LOC function routine RAM vector (2)

FB2CH (64300) -  LFILES statement routine RAM vector (2)

FB2EH (64302) -  DSKI$ routine RAM vector (2)

FB30H (64304) -  DSKO$ routine RAM vector (2)

FB64H (64356) -  Create/Locate switch for variables used in the main 
        evaluation routine (Locate=0, Create>0).

FB65H (64357) -  Type of last variable used (2-Integer, 3-String, 4-Single 
        Precision, 5-Double Precision)

FB67H (64359) -  Start address for file buffer area (2)

FB94H (64404) -  Line number of current data statement

FB96H (64406) -  0 if no FOR/NEXT loop in progress

FB99H (64409) -  Address of last variable assigned via a LET instruction.  
        This address points to the variable description table as with 
        a VARPTR(variable) instruction.

FB9BH (64411) -  Pointer to most recent or currently running line (2).  This 
        address points to the actual text skipping the line number 
        and spaces.

FB9DH (64413) -  Stack pointer value used by BASIC to reinitialize the stack.  
        This memory pointer is updated after each instruction by the 
        routine at 0804H. (2)

FB9FH (64415) -  Line number of last error (2)

FBA1H (64417) -  Most recent used or entered line number (2)

FBA3H (64419) -  Pointer of where error occured (2)

FBA5H (64421) -  Address of ON ERROR routine (2)

FBAAH (64426) -  Line where last break, END, or STOP occured (2)

FBACH (64428) -  Address where program stoped on last break, END, or STOP (2)

FBAEH (64430) -  Pointer to the start of the DO files and end of the BA files. 
        (2)

FBB0H (64432) -  Pointer to the start of CO files (2)

FBB2H (64434) -  Pointer to the start of variable table (2)

FBB4H (64436) -  Pointer to the start of array table (2)

FBB6H (64438) -  Pointer to the start of the systems unused memory (2)

FBB8H (64440) -  Address where DATA search will begin on next READ statement 
        (2)

FBBAH (64442) -  26 byte table for default variable types declared by the DEF 
        statement.   Each entry corresponds to one of the letters 
        A-Z.   The contents of each entry are 2 for an integer, 3 for 
        a string, 4 for a single precision number, and 8 for a double 
        precision number. (26)

FC18H (64536) -  Start of FAC1 for single (4) and double (8) precision number 
        (8)

FC1AH (64538) -  Start of FAC1 for integers (2)

FC69H (64617) -  Start for FAC2 for single (4) and double (8) precision numbers

FC6BH (64619) -  Start of FAC2 for integers (2)

FC82H (64642) -  Maximum number of open files (Maxfiles) (1)

FC83H (64643) -  Pointer to the 30 byte file number description pointer 
        table-2.  Each entry of the table points to the actual file 
        description table (same as VARPTR(#x)).

FC8CH (64652) -  Pointer to the file description table for the last file used 
        (2)

FC93H (64659) -  Filename of current BASIC program (6)

FC9CH (64668) -  Filename of last program loaded from tape (6)

FCC0H (64704) -  Start of alternate LCD character buffer (320)

FDFFH (65023) -  End of alternate LCD character buffer

FE00H (65024) -  Start of LCD memory (320)

FF40H (65344) -  End of LCD memory

FF42H (65346) -  XON/XOFF enable flag.  If this byte is 0, XON/XOFFs are not 
        significant for RS232 operations.  If this byte is greater 
        than 0, XON/XOFFs are treated as normal.

FF43H (65347) -  RS232 initialization status (0-deactivated, >0- activated)

FF44H (65348) -  Sound flag (0=on) (1)

FF45H (65349) -  Contents of port 0E8H (1)

FF46H (65350) -  Start of 64 character RS232 buffer (64)

FF86H (65414) -  Number of characters in the RS232 buffer (FF46H).  When this 
        number reaches 40, a control S is automatically sent by the 
        system.

FF8AH (65418) -  Status of control S (1-Control S has been pressed, 0-no 
        control S is active).

FF8BH (65419) -  8155 UART baud rate generator baud rate timer value (2)

FF8EH (65422) -  High or low cassette level trigger flag for 6FDBH (1)

FF97H (65431) -  8 bits for storing space, del, tab, esc, paste, label, print, 
        and enter key recognition.


FF98H (65432) -  8 bits for storing function key recognition

FFA2H (65442) -  8 bits for storing shift, ctrl, grph, code, num, and caps 
        lock.

FFAAH (65450) -  Number of characters in keyboard buffer.

FFABH (65451) -  Start of keyboard typeahead buffer (32)

FFECH (65516) -  Start of 5 byte table describing the bit pattern currently 
        under the cursor (5)



                     --------------
                     | OTHER INFO |
                     --------------

                           - File formats -
 .BA Files:
           2 bytes -  Address of next line
           2 bytes -  Line number
           Up to 255 characters ending with a null
           EOF is 3 consecutive nulls

 .DO Files:
           Text ended with a EOF character 1AH

 .CO Files:
           2 bytes -  Address to load to
           2 bytes -  Number of bytes to load (-start 6)
           2 bytes -  Transfer address


   - File Descriptor Block (Address Given by VARPTR(#file)) Format -

Byte:
      0 - File status (0-not open, 1-open for input, 2 open for 
          output or append)
  2 & 3 - Address of file directory entry
      4 - File device (248-RAM, 249-MoDeM, 250-LinePrinTer, 
          251-WAND, 252-COM, 253-CASsette, 254-CRT, 255-LCD)
      6 - Offset from buffer start (see bytes 9) for start of next 
          record
      7 & 8 -  Relative position of next 256 byte block from
          beginning of file
      9 - Start of 256 byte buffer for data transfer

                 - Floating Point Accumulator Format -

---------------------------------------------------------------
 FAC1   |  FAC2   |     DP    |    SP    |  Integer |   SP
Address | Address |   Format  |  Format  |  Format  | Register
---------------------------------------------------------------
FC18H   | FC69H   |   S & E   |  S & E   |    -     |    C
FC19H   | FC6AH   |   BCD M   |  BCD M   |    -     |    B
FC1AH   | FC6BH   |   BCD #   |  BCD #   |   LSB    |    E
FC1BH   | FC6CH   |   BCD #   |  BCD L   |   MSB    |    D
FC1CH   | FC6DH   |   BCD #   |    -     |    -     |    -
FC1DH   | FC6EH   |   BCD #   |    -     |    -     |    -
FC1EH   | FC6FH   |   BCD #   |    -     |    -     |    -
FC1FH   | FC70H   |   BCD L   |    -     |    -     |    -
---------------------------------------------------------------

  LSB =  Least significant byte of intger
  MSB =  Most significant byte of integer.  Bit 7 contains the sign 
        of the integer
BCD L =  Least significant BCD byte
BCD H =  Most significant BCD byte
BCD # =  Middle BCD bytes.  Each digit of the number is represented 
        by one of the values in the two nibbles in each byte
S & E =  Sign and exponent of each number.  Bit 7 contains the sign 
        of the floating point number. Bit 6 must be set.  Bits 0-5 
        determine where the decimal point is to be inserted.  For 
        example, if this byte contained a 65, the sign would be 
        positive and the decimal point would be placed between the 
        first and second digits (#.###....)


                  - Option ROM Important Addresses -

40H = 54H
41H = 43H - Required for ROM to be detected on BOOT
42H - 47H - Name of file associated with ROM program

Code at 7E24H-7E43H executed on BOOT to handle option ROM.
Code at 0365H loaded at F605H on BOOT to detect option ROM.

                    - Model 100 Hardware Port Map -

A0H -  Modem control port
      Output:
        Bit:
            0 - Modem telephone relay (1-Modem connected to phone 
                line)
            1 - Modem enable (1-Modem chip enabled)

B0H -  8155 PIO Command/Status Register
      Output:
        Bit:
            0 - Direction of Port A (0-input, 1-output)
            1 - Direction of Port B (0-input, 1-output)
        2 & 3 - Port C definition (00 - All input, 11 - All output, 
                01 - Alt 3, 10 - Alt 4 (see Intel technical sheets 
                for more information))
            4 - Enable Port A interrupt (1 - enable)
            5 - Enable Port B interrupt (1 - enable)
        6 & 7 - Timer mode (00 - No effect on counter, 01 - Stop 
                counter immediately, 10 - Stop counter after TC, 11 
                - Start counter)
      Input:
        Bit:
            0 - Port A interrupt request
            1 - Port A buffer full/empty (input/output)
            2 - Port A interrupt enabled
            3 - Port B interrupt request
            4 - Port B buffer full/empty (input/output)
            5 - Port B interrupt enabled
            6 - Timer interrupt (status of TC pin)
            7 - Not used

B1H -  8155 PIO Port A
      Output:
        8 bit data port for printer output, keyboard column strobe, 
        and LCD
        In addition, the first 5 bits of this port is used to 
        control the 1990 real time clock chip.  The configuration of 
        these five bits are:
        Bit:
            0 -  C0
            1 -  C1
            2 -  C2
            3 -  Clock
            4 -  Serial data into clock chip


B2H -  8155 PIO Port B.
      Output:
        Bit:
            0 - Column 9 select line for keyboard.  This line is 
                also used for the CS-28 line of the LCD.
            1 - CS 29 line of LCD
            2 - Beep toggle (1-Data from bit 5, 0-Data from 8155 
                timer)
            3 - Serial toggle (1-Modem, 0-RS232)
            4 - Software on/off switch for computer
            5 - Data to beeper if bit 2 set.  Set if bit 2 low.
            6 - DTR (not) line for RS232
            7 - RTS (not) line for RS232

B3H -  8155 PIO Port C
      Input:
        Bits:
            0 - Serial data input from clock chip
            1 - Busy (not) signal from printer
            2 - Busy signal from printer
            3 - Data from BCR
            4 - CTS (not) line from RS232
            5 - DSR (not) line from RS232
            6-7 - Not avaiable on 8155

B4H -  8155 Timer register.  LSB of timer counter

B5H -  8155 Timer register.  MSB of timer counter

B8H -  Same as port B0H

B9H - Same as port B1H

BAH - Same as port B2H

BBH - Same as port B3H

BCH - Same as port B4H

BDH - Same as port B5H

C0H -  Bidirectional data bus for UART (6402) (C0H-CFH same)


D0H -  Status control register for UART, modem, and phone (6402) 
      (D0H-DFH same)
      Output:
        Bits:
            0 - Stop Bits (1-1.5, 0-2)
            1 - Parity (1-even, 0-odd)
            2 - Parity Enable (1-no parity, 0-parity enabled)
            3 - Data length (00-5 bits, 10-6 bits, 01-7 bits, 11-8 
                bits)
            4 - Data length (see bit 3)
      Input:
        Bits:
            0 - Data on telephone line (used to detect carrier)
            1 - Overrun error from UART
            2 - Framing error from UART
            3 - Parity error from UART
            4 - Transmit buffer empty from UART
            5 - Ring line on modem connector
            6 - Not used
            7 - Low Power signal from power supply (LPS not)

E0H -  Keyboard input and misc. device select (E0H-EFH same)
      Output:
        Bits:
            0 - ROM select (0-Standard ROM, 1-Option ROM)
            1 - STROBE (not) signal to printer
            2 - STROBE for Clock chip (1990)
            3 - Remote plug control signal
      Input:
            8 bit data row from keyboard strobe

F0H - LCD display data bus (F0H-FFH same)


                  - Model 100 Keyboard Matrix -

           ------------------------------------------------
          7 |  L    K    I    ?    *    ->   Ent  f8   Brk
Row       6 |  M    J    U    >    &    <-   Prt  f7   
In        5 |  N    H    Y    <    ^    Up   Lbl  f6   Cap
          4 |  B    G    T    "    %    Dwn  Pst  f5   Num
0E0H-     3 |  V    F    R    :    $    +    Esc  f4   Cde
0EFH      2 |  C    D    E    ]    #    -    Tab  f3   Gph
(224-     1 |  X    S    W    P    @    )    Del  f2   Ctl
239)      0 |  Z    A    Q    O    !    (    Spc  f1   Sft
           ------------------------------------------------
         bit  0    1    2    3    4    5    6    7    0
             [----------- 0B1H or 0B9H -----------] [0B2H]
             [----------- 177  or 185 ------------] [178 ]
                           Column Strobe

Note:     This table is incorrectly documented in Radio Shack's 
         "Model 100 Technical Reference Manual" (26-3810)


                     - Math Routine Summary -

-------------------------------------------------------------
Function       Single Precision    Double Precision    Integer
-------------------------------------------------------------
    +               37F4H               2B78H           3704H
    -               37FDH               2B69H           36F8H
    *               3803H               2CFFH           3725H
    /               380EH               2DC7H           0F0DH
    ^               3D7FH               3D8EH           3DF7H
 Compare            3498H               34FAH           34C2H
-------------------------------------------------------------


                     - RIM and SIM Bit Maps -

SIM Bit 0: RST 5.5 mask (set mask) RIM Bit 0: RST 5.5 mask
        1: RST 6.5 mask (set mask)          1: RST 6.5 mask
        2: RST 7.5 mask (set mask)          2: RST 7.5 mask
        3: Mask set enable                  3: Int. enable
        4: Reset RST 7.5 flip/flop          4: RST 5.5 pending
        5: Not used                         5: RST 6.5 pending
        6: SOD change enable                6: RST 7.5 pending
        7: SOD pin output                   7: SOD pin input

Note: SOD pin is used for cassette I/O on Model 100


             - Model 100 Special Control Characters -

--------------------------------------------------------------
Control Code |  Print  | Routine |                            
  Sequence   | Address | Address |        Description         
--------------------------------------------------------------
Beep (7)         4229H     7662H   Beep
Tab (9)            -       4480H   Tab cursor
LF (10)          4225H     4494H   Move down one line
Home (11)        422DH     44A8H   Home cursor
CLS (12)         4231H     4548H   Clear screen
CR (13)            -       44AAH   Move cursor to beginning of 
                                   next line
ESC A              -       4469H   Move cursor up one line
ESC B              -       446EH   Move cursor down one line
ESC C              -       4453H   Move cursor to the right
ESC D              -       445CH   Move cursor to the left
ESC E              -       4548H   Clear screen
ESC H              -       44A8H   Home cursor
ESC J              -       454EH   
ESC K            425DH     4537H   Erase from the cursor to the 
                                   end of the screen
ESC L            4258H     44EAH   Insert blank line at current 
                                   line
ESC M            4253H     44C4H   Delete current line
ESC P            4249H     44AFH   Turn cursor on
ESC Q            424EH     44BAH   Turn cursor off
ESC T            4235H     4439H   Protect line 8
ESC U            423AH     4437H   Unprotect line 8
ESC V            423FH     443FH   Stop automatic scrolling
ESC W            4244H     4440H   Resume automatic scrolling
ESC X            4262H     444AH   
ESC Y            427CH     43AFH   Set cursor position.  
                                   Coordinate for cursor (row 
                                   and column) follow ESC Y 
                                   sequence
ESC j              -       4548H   Clear screen
ESC l              -       4535H   Erase current line
ESC p              -       4431H   Start inverse video mode
ESC q              -       4432H   Cancel inverse video mode


                       References & History

    This documented was created with well over 200 hours of 
sweating over a Model 100 ROM disassembly.  I started my first 
research on the Model 100 ROM about 2 hours after purchasing it 
(Note: I had one of the first 100's off the production line.  I 
believe I purchased my 100 in June of 1983).  After I figured 
out how to use TELCOM, I downloaded a BASIC Z-80 disassembler 
that friend of mine (Mike Livorsi) wrote from my Model 3.  After 
making a few changes to the disassembler, I was able to get it 
to work on the Model 100.  Then, I tested my Model 100's 
parallel printer port by printing a disassembly of the Model 
100's ROM on my old LP8 (note:the disassembly requires a 3 inch 
note book to fit in).  A day later, I came back to my Model 100 
and found what every machine language addict loves; a complete 
dissasembly of the ROM.
    At this point, I had a big problem; where to start.  At the 
time, the only documentation for the 100 was the Instruction 
Manual.  "Hacker reliefs" like schematics, memory maps, 
debuggers, etc. could only be found in the dreams of the infant 
portable hackers.
    What did I end up doing?  Well, I decided to write a little 
BASIC program to search for specific bytes in ROM.  This program 
was used initially for finding the text string "Ok" in ROM.  
Once I found out where the message was in ROM, I then searched 
for any ML instructions that referenced the message.  Then, on a 
warm July night in St. Louis, I found what I was looking for; a 
16 bit register load that referenced the message "Ok" followed 
by a CALL instruction.  This was the key I needed to open the 
door to the Model 100's ROM.  With my experience from the Model 
1/3/Coco ROMs, I knew that the load/CALL sequence I found was 
used to print a text string on the screen.  From this little 
information, I was able to interrogate the subroutine called and 
find out how the display operated.  In addition, since "Ok" is 
only printed at BASIC ready, I was able to trace out the 
keyboard input routines and eventually, the entire BASIC 
interpreter.
    About 200 or so hours later, I documented most of the Model 
100's ROM.  At this time, I knew enough about my Model 100 to 
write just about any machine langauge program that I needed.
    When I started writing ML programs for the 100, I found one 
problem with my ROM documentation; it was too hard to find a 
particular ROM address.  What I needed was an organized 
collection of all my notes, "chicken scratches", etc.
    From this came the memory map you hold in your hand right 
now.  In this memory map, I basically included the information 
that I use the most when ML programming.  I did not include a 
lot of information on how the ROM handles certain task, but I 
did include information that can be used by external stand alone 
ML programs.
    In creating this document, I had a little help along the 
way with figuring out a few things.  Below is a list of sources 
I used to help me determine or verify what certain things in the 
Model 100 did:

Model 100 User Manual, Radio Shack

Model 100 Service Manual (26-3801), Radio Shack

Microsystem Components Handbook, Volume 1, Intel (1984)

MOS Microprocessors and Peripherals, Advanced Micro Devices
    (1983)

Microsoft BASIC Decoded & other Mysteries for the TRS-80, by
    James Lee Farvour, IJG (December 1982)

"Inside the 100", by David P. Sumner, 80 Micro (December 1983)