Model 100 Memory Map Material in 'single quotes' represents ASCII text. A "+" after a location indicates a 2-byte pointer. 0 (RST 0) JMP 32051 3 'Menu' 8 (RST 1) Test for special character and fall into RST 2. 16 (RST 2) Set pointer to next character of BASIC text. (JMP 2136) 24 (RST 3) Compare registers HL,DE directly. 32 (RST 4) PRINT ASCII contents of accumulator. 36 (TRAP) Handles power-down. User interface at 62978. 40 (RST 5) JMP 4201 Checks variable type. 44 (RST 5.5) JMP 62969 48 (RST 6) Returns sign of FAC1. (JMP 13276) 52 (RST 6.5) JMP 28076 (62972 RAM vector interface) 56 (RST 7) Executes routine indicated by next byte. (JMP 32767) 60 (RST 7.5) Updates timer, adjusts power-down values etc. (JMP 6962) User can interface at 62975. 64 BASIC function addresses. 128 BASIC Keywords with high bit set in the first character of each word. 610 BASIC command addresses. 750 Table of BASIC addresses. 796 2-Byte error codes. 858 Initial values for pointers 62960-63103. 1003 'Error' 1010 'in' 1014 'ok' 1019 'Break' 1094 Syntax error. Entry points at 1100, 1103 .. 1115 for other errors 1117 Error message based on contents of E register. 1245 PRINTs error messages (accumulator holds a value from 28 to 58). 1520 Builds BASIC line pointers. 1576 Enter with DE containing a line number. Exit with BC containing the location of the line, and HL the location of the next line. The cary flag is used to indicate if the line already exists. 1606 Tokenize BASIC text. 1830 FOR 1899 TO 2112 BASIC command dispatcher; accumulator holds token. 2136 Set pointer to BASIC text. 2162 DEF (general) 2177 DEFDBL 2182 DEFINT 2198 DEFSNG 2207 DEFSTR 2267 FC error. 2283 Used by GOTO, GOSUB, and RUN to determine the 2-byte value of the line (in ASCII) to branch to. The HL register points to the string of digits, the 16-bit integer is returned in DE. 2319 RUN 2334 GOSUB 2358 GOTO 2381 Jump here if UL error. 2406 RETURN 2462 DATA 2464 REM,ELSE 2499 LET 2607 ON (general) 2812 ON ERROR 2736 RESUME 2831 ERROR 2842 IF 2894 LPRINT 2902 PRINT 3073 TAB( 3141 LINE (general) 3152 LINE INPUT 3188 '?Redo from start' 3225 INPUT # 3235 INPUT 3289 READ 3442 'Extra ignored' 3625 >,=,< 3926 ERL 3966 VARPTR 4072 If character in M is lowercase, the upper-case equivalent is returned in the accumulator. 4236 OR 4247 AND 4258 XOR 4269 EQV 4277 IMP 4296 LPOS 4302 POS 4305 Store accumulator as low byte of 16-bit integer. 4352 INP 4364 OUT 4398 ASCII text (string/variable) converted to integer. 4411 LLIST 4416 LIST 4514 PRINTs from buffer until 0 byte is encountered. 4522 Put data into buffer until a 0 byte is reached. 4740 PEEK 4747 POKE 4811 Saves registers, waits for character of input, and restores registers. 4848 PASTE. 5029 Toggles the label line. 5138 Break routine. 5145 POWER 5169 Power off /Returns to program on power-up. 5201 Power off. 5209 POWER CONT 5225 Sets power-down values. 5288 Preliminary tape I/O routine. 5290 Called at the end of tape I/O. 5296 Returns byte from tape in the accumulator. 5313 Sends byte in the accumulator to tape. 6281 EOF 6404 TIME$ 6436 DATE$ 6485 DAY$ 6520 ASCII of days stored here. 6553 Converts byte pointed to by DE to an ASCII digit. Result placed in memory. 6571 TIME$ (as command assignment) 6589 DATE$ (as command assignment) 6641 DAY$ (as command assignment) 6647 MAXRAM 6776 IPL 6814 COM,MDM 6851 KEY ON/OFF/STOP 7096 KEY (general) 7101 KEY LIST 7136 PRINTs B; PRINTable-characters starting at address in HL. 7182 Defines function key. 7255 PSET 7270 PRESET 7277 LINE drawing routine. 7519 Subroutine for PRINT @ 7568 CSRLIN 7579 MAX (general) 7602 MAXFILES 7609 HIMEM 7619 WIDTH 7621 SOUND (general) 7653 SOUND OFF 7654 SOUND ON 7660 MOTOR 7667 Turns motor on. 7669 Turns motor off. 7674 CALL 7714 SCREEN 7774 LCOPY 7994 FILES 8081 KILL 8247 NAME 8446 NEW 8832 CSAVE (general) 8856 CSAVEs current BASIC program. 8889 Sends the DE bytes starting at location in HL to tape. 8908 SAVEM 8925 CSAVEM 9079 CLOAD (general) 9235 Gets DE bytes from tape and stores them at the location pointed to by HL. 9302 CLOAD? 9345 'Verify failed' 9361 LOADM, RUNM 9383 CLOADM 9538 Moves B bytes from address in HL to address in DE in a increasing manner. 9587 CLOADM? 9685 'Top End Exe' 9697 'Exe:' 9982 'Found' 9989 'Skip' 10042 STR$ 10161 PRINTs message pointed to by HL. Message ends in quote or zero byte. 10444 String addition 10508 Moves L bytes from address in BC to address in DE (increasing). 10563 LEN 10575 ASC 10597 CHR$ 10605 STRING$ 10638 SPACE$ 10667 LEFT$ 10716 RIGHT$ 10726 MID$ 10759 VAL 10807 INSTR 11084 FRE 11113 FAC1 FAC1-FAC2. 11128 FAC1 FAC1+FAC2. 11519 FAC1 FAC1*FAC2. 11719 FAC1 FAC1/FAC2. 12006 Moves C bytes starting from address in HL to address in DE, in a decreasing manner. 12015 COS 12041 SIN 12120 TAN 12145 ATN 12239 LOG 12378 SQR 12452 EXP 12606 RND 12686 MOVE FAC1 to 64633-64640. 12692 Adds memory to FAC1. 12698 Subtracts memory from FAC1. 12704 FAC1 FAC1*FAC1 (squares FAC1). 12707 Multiplies memory and FAC1. 12725 Moves FAC1 to FAC2. 12728 Moves number at address HL to FAC2. 12737 Moves FAC2 to FAC1. 12740 Moves number at address HL to FAC1. 12746 Moves FAC1 to address in HL. 12852 Saves FAC1 on the stack. 12892 Floating point constants. 12942 .25 12974 pi/2 12990 Square root of 3. 13015 1 13203 2*pi. 13289 ABS 13309 Negate FAC1. 13319 SGN 13417 Moves B bytes of memory from address in DE to address in HL in a increasing manner. 13426 Moves B bytes of memory from address in DE to address in HL in a decreasing manner. 13569 CINT 13610 CSNG 13754 CDBL 13893 FIX 13908 INT 14804 PRINTs the 16-bit integer stored in the register pair HL. 15743 MOD 15758 ^ 16288 TIME$ ON 16306 TIME$ OFF 16313 TIME$ STOP 16393 Clears COM and TIME$ locations. Clears KEY definitions and sets 63060 to 0. 16511 RESTORE 16538 STOP 16543 END 16602 CONT 16625 Determines if HL points to an alphabetic character letter. 16626 Determines if the accumulator contains an alphabetic character. 16633 CLEAR 16756 NEXT 16930 PRINTs CHR$(13)+CHR$(10) 16937 BEEP 16941 PRINTs CHR$(11) 16945 CLS 17001 Turns on reverse video. 17006 Turns off reverse video. 17008 PRINTs CHR$(27)+CHR$ of accumulator. 17034 Clears the label line. 17064 PRINTs label line. 17994 Puts input data into input buffer. 18315 DIM 18320 Get variable name and type. 18833 USING 19268 PRINTs ASCII character in accumulator. 19322 Sends byte in accumulaor to the printer. 19360 Sends carriage return to the printer. 19434 INKEY$ 19659 OPEN 19824 LOAD 19825 MERGE 19919 SAVE 20008 CLOSE 20110 INPUT$ 20558 Enter here or one of 20561, 20563...20579 in case of file errors 20591 LFILES 20593 DSKO$ 20595 DSKI$ 20725 'CRT CAS COM WAND LPT MDM RAM' 20806 TELCOM program. 20860 'Telcom' 20869 'STAT' 20874 'TERM CALL RFIND MENU' 20900 'Find Call Stat Term Menu' 20906 'x pps' 21060 'Calling' 21891 'Full Half Echo' 21909 'Wait' 22353 'File to Upload' 22368 'File to Download' 22385 'aborted' 22396 'No file' 22406 'Disconnect' 22417 PRINTs message. Sends a carriage return if not at start of line. 22423 MENU 22574 PRINTs number of free bytes. 22580 PRINTs 'Select:' and responds appropriately to input. 23128 PRINTs starting at address in HL until a zero byte is reached. 23164 Sets up function keys. 23273 Months stored in ASCII. 23312 'Microsoft' 23332 'Select:' 23366 Original key definitions stored here. FILES LOAD " SAVE " RUN LIST MENU 23400 ADDRSS (program) 23407 SCHEDL (program) 23450 PRINTs 'Not found press space bar for menu' 23758 ADRS.DO 23767 'Not found' 23852 'Call' 23920 PRINTs date and time at top of screen and updates it until a key is pressed. 24046 TEXT (program) 24051 Requests a file to edit. 24085 'File to edit' 24106 'FIND LOAD SAVE COPY CUT SEL MENU' 24145 EDIT (program) 24367 Waits for a space keypress and then returns. 24376 'Text ill-formed' 24395 'Press space bar for TEXT' 24753 'Memory full' 26051 Moves memory starting at address in HL to address in DE until a 0 byte is reached. 26062 'No Match' 26071 'String' 26380 'Width' 26421 'Save to:' 26579 'Load from:' 27611 Moves BC bytes from address in HL to address in DE increasing. 27636 'BASIC TEXT TELCOM ADDRSS SCHEDL Suzuki Hayashi' 27721 BASIC (as called from MENU) 27795 Temporarily saves the function keys. 27804 Restores the function keys. 29156 Adds a character to the keyboard buffer. 29250 Returns ASCII of keypress in the accumulator. Does not wait, returns 0 if no keypress. 29381 SOUND routine. DE contains pitch and B contains duration. 29772 Turns on the pixel (x,y) where D contains x and E contains y. 29773 Turns off the pixel (x,y) where D contains x, and E contains y. 30326 Toggles the speaker. 30306 Equivalent to BEEP. 30481 Character set 5-bytes each. 31729 Keyboard matrix. 32051 Initialization. 32231 Initialize pointers (cold start). 32422 PRINTs TRS-80 logo. 32428 PRINTs number of free bytes. 32523 MAXFILES= 32664 ' bytes free' 32676 TRS-80 logo stored in ASCII. 32677 User RAM begins here. 62959 User RAM ends here. 62964+ HIMEM value. 62966 Code called at 32145 and 32197. 62969 RAM vector for RST 5.5. 62972 RAM vector for RST 6.5. 62975 RAM vector for RST 7.5. 62978 JMP 5169 62981 Code called at 32108 and 32292. 62991 Code called at 896. 63012 Code for optional ROM. 63024 8-bytes KEY ON/OFF flags; ON=1 OFF=0 63033 Vertical Print position 0 to 7. 63034 Next horizontal print position 0-39. 63035 Number of active lines 0-8. 63036 Number of active columns 0-40. 63037 Label line flag; 0=unused, 255=used. 63038 Inhibits return to first line if not zero. 63040 Cursor line. 63041 Horizontal print position. 63048 Reverse video if not zero. 63054 x-pixel set. 63055 y-pixel set. 63063 Power-down value (constant). 63070 Code to 63078 63079 OUT/IN self-modifying code. 63090 Error code 63092 Value of LPOS 63093 Output flag; 0=display, 1=printer. 63096+ Top of available RAM. 63098+ Current BASIC line number; 65535 stored here if no program is running. 63100+ Start of current BASIC program text. 63104 End of statement marker (: OR 0). 63105 Multi-purpose buffer area. Tokenized text starts at 63105. Input buffer tarts at 63109 and extends to 63362. 63368 Value of POS 63369 Function key definitions currently being used. (extends to 63497) 63498 Function key defintions used by BASIC. (extends to 63626) 63628+ Pointer to start of PASTE text. 63639 Work area/temporary storage. 63785 Day of month low digit, high digit in 63786 63787 Current day of the week, e.g. 3=Wed. 63788 Current Month - decimal 1-12 63789 Current year stored with low decimal value here and high decimal value in 63790 63791 Timer; decreases from 125 to 0. 63792 Timer; decreases from 12 to 0. 63793 Power-down countdown value (varies). 63795 The computer stores the current time starting here with the low digit of the number of seconds. A numerical value - not ACSII. 63796 The high digit of number of seconds. 63797 The low digit of number of minutes. 63798 Time and date continue here with one decimal value per location 63805 6-byte value of TIME$ for ON TIME$ statement (in reverse order) 63812 COM ON/OFF flag. 63813+ Address of COM ON routine. 63815 TIME$ ON/OFF flag. 63816+ Address of TIME$ ON routine. 63818 ON/OFF flag and routine address of function keys; 3 bytes per key (extends to 63841). 63842 Files in the format: address, 6-character name, 2-byte extension. 63898+ Address of BASIC program that has not been saved to RAM. (Suzuki) 63909+ Address of the end of documents. (Hayashi) 64173 Label line enable flag; enabled if not zero. 64175 Name of IPL program. 64190+ Used for temporary storage of stack pointer. 64208+ Length of CLOADed/CSAVEd program. 64357 BASIC variable type. 64404+ Line number of active DATA statement. 64409+ Location of BASIC variable for assignment statement. 64411+ Start of current BASIC statemen 64413+ 2 less than value in 63096-63097 64415+ Line where error occured. 64417+ Most recently entered/listed line. 64419+ Location of statement where error occured. 64421+ Location of ON ERROR GOTO line 64423 Error status flag 64424+ End of BASIC expression. 64426+ Line where Break occured. 64428+ Location after error (contains 0 or 58). 64430+ Start of documents. 64434+ Start of Variables. The region from 64536 to 64640 is used for floating point computations. 64536 FAC1 (floating point accumulator) 8-bytes. 64617 FAC2 (floating point accumulator) 8-bytes. 64642 Maxfiles. 64659 Name of current BASIC program, 6-bytes. 64668 Name of program loaded from tape, 6-bytes. 64904 Start of DATE$ and TIME$ stored in ASCII. Used for MENU Display. Not used for TIME$. 65024 Start of screen memory. 65348 Sound Flag 0=on, 175=off 65349 Cassette on/off flag. 65424 Holds the value 2 as long as a noncontrol key is held down. 65429 Devoted to the number keys. Also uses location 65430 65431 Bits are set here according to which of the following keys are pressed: SPACE,DEL,TAB,ESC,PASTE,LABEL,PRINT,ENTER. 65432 Pressing a function key sets the corresponding bit in this location. 65441 Behaves like 65432. 65442 The following keys set bits in this location: SHIFT,CTRL,GRPH,CODE,NUM,CAPS LOCK. 65446 Code (not ASCII) for most recently pressed key. 65450 Number of characters in keyboard buffer. 65451 Keyboard buffer (32 byte maximum). Odd bytes contain ASCII values. A 255 in an even byte indicates a function key. 65515 Used to store 5-byte character code.