---------------------------- | Model 100/200 System Map | ---------------------------- ROM: Part V 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.] Revised to add Tandy 200 by Chris De Herrera, 9/89 This document may be duplicated and distributed free of charge to any individuals who desire it. Any duplications of this document, however, must include 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. Hex Address M100 M200 Description --------------------------------------------------------------- 5146H 5FFDH - Entry to TELCOM 515BH - TELCOM Ready re-entry point for TELCOM commands 5185H - Start of TELCOM instruction vector table. Each entry starts with a 4 byte instruction name followed by a 2 byte routine vector. 51A2H - End of TELCOM instruction vector table 51A4H 605BH - ? 51C0H 6077H - TELCOM STAT instruction routine 51C7H - Print current STAT (RS232 settings for TELCOM) and return to TELCOM ready 51EDH - Set STAT (RS232 settings for TELCOM) and return to TELCOM ready 522FH - TELCOM CALL instruction routine 5244H 6142H - CALMSG 524DH - TELCOM FIND instruction routine 52BBH 61BAH - Disconect phone line and disable modem carrier Exit: A - New contents of port 0BAH 52D0H 61D0H - Connect phone line and enable modem carrier Exit: A - New contents of port 0A8H C flag - Set 52E4H 61E7H - 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 620EH - Pause for about 2 seconds Exit: BC & AF - Destroyed 5316H 6214H - TMDELA 532DH 622BH - Execute logon sequence pointed to by HL. This routine is used to drive the Model 100 autodialer Entry: HL - Points to logon buffer 540AH 632AH - 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 6378H - TELCOM TERM instruction routine 5468H 638BH - ? 550DH 648AH - Start of function key vector table for TERM commands in TELCOM. Each 2 byte vector corresponds to each function key. 551BH - End of function key vector table for TERM 551DH 6608H - ? 5520H 66C2H - ? 5523H 649AH - TELCOM PREV function routine 553EH 64CAH - TELCOM FULL/HALF function routine 5544H 64BEH - DUPDSP 5550H 6517H - TELCOM ECHO function routine 5556H 64D0H - ECHDSP 5562H 64DCH - WATDSP 556BH 64E5H - CHGDSP 55A0H 651AH - UPLDR 5562H 64DCH - WATDSP 556BH 64E5H - CHGDSP 55A0H 651AH - UPLDR 559DH 64B8H - TELCOM UP function routine 567EH 649DH - TELCOM DOWN function routine 568FH 6619H - DWNLDR 56C5H 6662H - ? 571EH 66DBH - TELCOM BYE function routine 5759H 6766H - UPLMSG 5768H 6775H - DWNMSG 5771H 677EH - ABTMSG 577CH 6789H - FNTFND 5786H 6793H - DISMSG 5790H 6C1BH - ? 5791H 679EH - 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 67A4H - MENU Statement. Go to main menu 58B6H 6A4FH - ? 58C3H 6A5CH - ? 58DBH 6A6CH - ? 58E2H 6A73H - ? 58EBH 6A7CH - ? N/A 6ACCH - PRINT 'Length=' 5970H 6CB1H - ? 59ADH - 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 59C9H 6D51H - ? 59E5H 6D6DH - ? 5A12H 6D97H - 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 - Same 5A12H but screen is not cleared. Line is still printed on top line of screen. Exit: All registers destroyed 5A58H 6DF6H - 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 6E06H - 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 6E11H - 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 6E1DH - Clear function key definition table Exit: All registers destroyed 5A7CH 6E20H - 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 6E42H - Display function keys on 8th line if enabled Exit: All registers destroyed 5AA6H 6E4AH - FNDFLO 5AA9H 6E4DH - 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 5AABH 6E4FH - CHKF 5AD6H 6E76H - INRC 5AE3H 6E8CH - 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 5AE4H 6E8DH - ? 5AE9H 6E92H - ? 5B1AH 6845H - ? 5B1EH 6EB6H - ? 5B3FH 71D4H - ? 5B68H 6EE7H - Entry to ADDReSS 5B6BH - Enter ADDReSS using the filename pointed to by DE. Entry: DE - Points to the filename to use with ADDReSS terminated with a null 5B6FH 6EEDH - Entry to SCHEDuLe 5B72H - Enter SCHEDuLe using the filename pointed to by DE. Entry: DE - Points to the filename to use with SCHEDuLe terminated with a null 5BF5H - FIND instruction for ADDRSS/SCHEDL 5BF7H - LFND instruction for ADDRSS/SCHEDL 5CAEH 70B7H - ? 5C3FH 7042H - 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 7076H - 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 707DH - 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 5CAEH 70B7H - ? 5CEFH - 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 - End of ADDRSS/SCHEDL instruction vector table 5D0AH 710EH - ? 5D1EH 7128H - ? 5D2BH 7133H - FNDTBL 5D53H 714BH - STKINI 5D5DH 7155H - RESTAK 5D64H - 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 - Home Cursor Exit: HL - Destroyed 5D70H - 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. 5DB1H 715CH - ? 5DBCH 716BH - ? 5DC5H 7174H - ? 5DEEH 719DH - Entry to TEXT 5E2AH 71DCH - ? 5E51H - EDIT Statement 5F24H 72DAH - ? 5F2FH 725EH - Wait for a space to be entered on keyboard Exit: A - Space (20H) 5F4BH 7301H - ? 6018H - 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 - End of TEXT control character vector table 6056H - TEXT ESCape routine 607CH - TEXT control P routine 608AH - TEXT control I routine 60B1H 7492H - 'Memory Full' 60BEH - TEXT control M routine 60DEH - TEXT right arrow and control D routine 60E2H - TEXT down arrow and control X routine 610BH - TEXT control H routine 6151H - TEXT left arrow and control S routine 6155H - TEXT up arrow and control E routine 617AH - TEXT control F routine 618CH - TEXT control A routine 61C2H - TEXT control T routine 61D7H - TEXT control B routine 61FDH - TEXT control R routine 620BH - TEXT control Q routine 6210H - TEXT control W routine 621CH - TEXT control Z routine 6242H - TEXT control L routine 628FH - TEXT control C routine 6366H 7747H - MCLEAR 6370H 7751H - ? 6383H 7764H - ? 6431H - TEXT control O routine 6445H - TEXT control U routine 6551H - TEXT control N routine 65C3H - 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 - TEXT control Y routine 6713H - TEXT control G routine 6774H - TEXT control V routine 6B2DH 8268H - GETEND - Point HL to chr$(26) 6B61H 829CH - 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 82A8H - 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 82DAH - 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 8316H - 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 8321H - 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 832CH - Start of ROM program catalog entries 6C48H - End of ROM programs catalog entries 6C49H 838FH - Entry to BASIC 6C93H 83D3H - ? 6C9CH 83DCH - LOAD BA LABEL 6CA7H 83EDH - ? 6CD6H 841CH - Re-initialize system. User files are not lost. 6CE0H 8439H - Warm Start Reset Entry 6D3FH 84C9H - Send a Character to the printer Entry: A - Character to be printed Exit: Carry - Set if cancelled by BREAK - Reset if normal return 6D6DH 8508H - Check RS-232 queue for characters Entry: None Exit: A - Number of characters in queue Z flag - set if no data - reset if characters pending 6D7EH 8519H - Get a character from the RS-232 recieve queue Entry: None Exit: A - Character Recieved Z flag - Set if O.K. - Reset if error (PE, FF or OF) Carry - Set if BREAK pressed, else reset 6DACH - RST 6.5 (RS232 Interrupt on received character) routine 6E0BH 8608H - Send an XON resume character (Ctrl-Q) Entry: None Exit: None 6E1EH 8617H - Send an XOFF pause character (Ctrl-S) Entry: None Exit: None 6E32H 8643H - Send a character to the RS-232 or Modem (with XON/XOFF) Entry: A - Character to be sent Exit: Carry - set if BREAK pressed, else reset 6E39H 8629H - ? 6E3AH 8629H - Send a character to the RS-232 or modem (without XON/XOFF) Entry: C - Character to be sent Exit: Carry - Set if BREAK pressed, else reset 6E75H 86ADH - Set baud rate for RS-232 Entry: H - Baud Rate (1-9, M) Exit: None 6E94H - Start of 18 byte RS232 baud rate timer values. Each 2 byte entry corresponds to the baud rates 0-9. These values are loaded into the 8155's timer to generate the baud rate for the UART. 6EA6H 86DEH - Initialize Rs-232 and Modem Entry: H - Baud rate (1-9) L - USART configuration code see below Carry - Set if RS-232 - Reset if modem Exit: None USART Configuration Code For M100: Bit Description ------------------------------------------------- 0 Stop bits: 0=1, 1=2 1-2 Parity Setting: 00=None, 01=Even, 10=Odd 3-4 Word Length: 00=6, 01=7, 10=8 For M200: Bit Description ------------------------------------------------- 0-1 Baud Rate:00=none, 10=x1,01=x16(fix),11=x64 2-3 Word length: 00=5, 10=6, 01=7, 11=8 4 Parity: 0=Disable, 1=Enable 5 Parity Set: 0=Odd, 1=Even 6-7 Stop Bits: 00=None, 10=1, 01=1.5, 11=2 Text string containing current STAT located at EF3C (7 bytes) 6ECBH 87B5H - Deactivate RS-232/Modem Entry: None Exit: None 6EE5H - Click sound port if sound is enabled 6EEFH 874AH - Detect Carrier Entry: None Exit: A - 0 if Carrier Z flag - set if carrier, else reset 6F31H - Enable XON/XOFFs when control Ss and Qs are sent. Exit: A - Destroyed 6F46H 87D1H - Write Cassette header and sync byte only Entry: None Exit: Carry - Set if BREAK pressed, else reset 6F85H 8810H - Read Cassette header and sync byte only Entry: None Exit: Carry - Set if BREAK pressed, else reset 6F5BH 87E6H - Write a character to Cassette (no checksum) Entry: A - Character to be sent Exit: Carry - Set if BREAK pressed, else reset 6F85H 8810H - ? 6FDBH - Find the frequency of the cassette port. This routine measures the duration from the start to the stop of half of the wave presented on the cassette port. The result is the number of 29 t-state cycles required to find the end of the wave. The byte at FF8EH determines if the count will trigger on a high or low pulse. For example, a 1200 hz signal, which would take 416 ms to go through half of the wave, would cause this routine to exit with a value around 35. If the sound option is turned on (see FF44H), this routine will click the beeper on each call. Note: Although this routine analyses the cassette port in 29 T-state intervals, the actual routine requires much more time to execute. Exit: C - Number of 29 T-state cycles A - Destroyed C flag - Set if the routine was canceled by a shift break 702AH 88B3H - Read a character from Cassette (no checksum) Entry: None Exit: D - Character from Cassette 70C5H 897BH - ? 7122H 89D8H - ? 71C4H 8A85H - ? 71F3H 8AB4H - ? 71F4H 8AB5H - ? 71F7H - POP AF, BC, DE, and HL off stack, enable interrupts and return. This routine should only be used with a jump to assure stack integrety. This routine makes a good interrupt routine exit vector. 71FDH 8ABEH - ? 7242H 8B03H - Scan keyboard fir a key, return with or without one Entry: None Exit: A - Character if any Z flag - set if no key found - reset if key found Carry - set (character in table below) - reset (normal character set) Register A Key Pressed -------------------------- 0 F1 1 F2 2 F3 3 F4 4 F5 5 F6 6 F7 7 F8 8 LABEL 9 PRINT 0A SHIFT-PRINT 0B PASTE 726AH - Enable interrupts as normal (nothing destroyed) 7270H 8B31H - Check keyboard queue for character or BREAK Entry: None Exit: Z flag - set if queue is empty - reset if keys are pending Carry - Set when BREAK entered - Reset for any other key 7283H 8B4DH - Check for BREAK characters only (CTRL-C or CTRL-S) Entry: None Exit: Carry - Set if BREAK or PAUSE entered - reset if no BREAK characters 729FH 8B69H - BREAK 72B1H 8B7BH - Scan BREAK, CAPS, NUM, CODE, GRAPH, CONTROL, and SHIFT key column of keyboard. Reset the bit in the A register that corresponds the key being pressed Exit: A - Each reset bit coresponds to a key being pressed (BREAK=bit 7, CAPS=bit 5, etc.) 72C5H 8BC0H - Produce a tone through the internal transducer. The RS232 cannot be used along with this routine. Entry: DE - Frequency B - Duration Exit: A - Destroyed 7329H - Load the contents of the clock chip registers into the address pointed to by HL. Entry: HL - Start of receiving buffer for the contents of the hardware clock chip 732AH - Update the clock chip internal registers with the time in the buffer pointed to by HL Entry: HL - Start of the buffer containing the new values for the clock chip 7398H 8CE4H - ? 743CH 8D66H - ? 7440H 8D6AH - Move cursor to specified position Entry: D - x coordinate (1-40) E - y coordinate (M100 1-8, M200 1-16) Exit: None: 744CH 8D76H - Plot point on screen Entry: D - X coordinate (0-239) E - Y coordinate (M100 0-63, M200 0-127) Exit: All registers destroyed 744DH 8D77H - Reset point on screen Entry: D - X coordinate (0-239) E - Y coordinate (M100 0-63, M200 0-127) Exit: All registers destroyed 744EH 8D78H - ?