TRS80 model 100 and T102 related archive
Radio Shack Catalog# 700-2245
This section provide essential information for using ROM functions
LCD Function
Funciton Name |
Description |
Entry condition |
Exit condition |
Entry Address (Hex.) |
LCD |
Displays a character on the LCD at current cursor position (Also RST 4)
| A= Character to be displayed |
none |
4B44 |
SETCUR |
Move cursor to specified location.
| D = column number ( 1-40 ) E = row number |
none |
7440 |
PLOT |
Turn on pixecl at specified location. |
D= x coordinate (0-239)
E = y coordinate (0-63)
|
none |
744C |
UNPLOT |
Turn off pixecl at specified location |
D = x coordinate (0-239)
E = y coordinate (0-63)
|
none |
744D |
POSIT |
Set cursor position. |
H = column number (1-40)
L = Low Number
|
none |
427C |
ESCA |
Send Specified Escape Code Sequence |
A = escape code |
none |
4270 |
Routines for Generating Common LCD Functions and Escape code
Function Name |
Description |
Entry Address (Hex.) |
Equiv. ESC |
CRLF |
Generate a Carriage Return and Line Feed |
4222 |
-- |
HOME |
Move cursot to Home position (1,1) |
422D |
-- |
CLS |
Clear display |
4231 |
-- |
SETSYS |
Set system Line (lock line 8, Label) |
4235 |
T |
RSTSYS |
Reset system line (unlock line 8, Label |
423A |
U |
LOCK |
Lock Display (no scrolling) |
423F |
Y |
UNLOCK |
Unlock display (scrolling) |
4244 |
W |
CURSON |
Turn on cursor |
4249 |
P |
CUROFF |
Turn off cursor |
424E |
Q |
DELLIN |
Delete line at cursor position |
4253 |
M |
INSLIN |
Insert a blank line at cursor position |
4258 |
L |
ERAEOL |
Erase from cursor to end of line |
425D |
K |
ENTREV |
Set Reverse chracter mode |
4269 |
P |
EXREV |
Turn off Reverse character mode |
426E |
q |
Variable and Status Locations
Name |
Contents |
Address |
CSRY |
Cursor Position (ROW) |
F639 |
CSRX |
Cursor Position (Column) |
F63A |
BEGLCD |
Start of LCD memory |
FE00 |
ENDLCD |
End of LCD memory |
FF40 |
Keyboard Functions
Function Name |
Description |
Entry Conditions |
Exit conditions |
Entry Address (Hex) |
KEYREAD |
Scan keyboard for a key. Return with or without one. |
none |
A = character, if any
Flag |
Set |
Reset |
Z |
No key found |
Key found |
Carry |
Character in code table below |
Normal character set code |
When Carry is set, Register A will contain one of the following:
Register A value |
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 |
|
7242 |
CHGET |
Wait and get character from Keyboard |
none |
A = character code
Carry --set if special character
Carry --reset if normal character
(<F1>-<F8> return preprogrrammed strings) |
12CB |
CHSNS |
Check keyboard queue for characters |
none |
Z flag set if queue empty, rest if keys pending |
13DB |
KEYX |
Check keyboard queue for chracters or BREAK |
none |
Z flag set if queue empty, reset if keys pending
Carry flag set when BREAK entered, reset with any other key
|
7270 |
BRKCHK |
Check for BREAK characters only (CTRL-C or -S) |
none |
Carry flat is set if BREAK or PAUSE entered, reset if not BREAK characters |
7283 |
INLIN |
Get line from keyboard (terminated by <ENTER>) |
none |
Data stored at location F685 |
4644 |
Using Function Keys Routines
The function table consists of character strings to be used by the
keyboard driver when processing
<F1> - <F8> keys. The strings have
maximum length of 16 characters and are terminated by a "80" ( Hex.)
code. If the last character of the string is OR'ed with 80, the
character will also serve as a terminator. The entire string will be
placed in the keyboard buffer when the appropriate strings for all 8
key is pressed. You must specify character strings for all 8 function
keys (use the terminator byte for any you wish to ignore).
Example of Function table
FCTAB DEFM 'Files' ; F1
DEFW 0D80
DEFM 'Load' ; F2
DEFB 80
DEFM 'Save' ; F3
DEFB 80
DEFM 'Run' ; F4
DEFW 0D80
DEFM 'List' ; F5
DEFW 0D80
DEFB 80 ; Ignore F6
DEFB 80 ; Ignore F7
DEFM 'Menu' ; F8
DEFW 0D80
Function Name |
Description |
Entry onditions |
Exit conditions |
Entry Address (HEX) |
STFNK |
Set Function key definitions |
HL = Address of function table (above) |
none |
5A7C |
CLRFLK |
Clear function key definition table (fills with 80's) |
none |
none |
5A79 |
DSPNFK |
Display function keys |
none |
none |
42A8 |
STDSPF |
Set and display function keys |
HL = Start address of function table |
none |
42A5 |
ERAFNK |
Erase function key display |
none |
none |
428A |
FNKSB |
Display function table (if enabled |
none |
none |
5A9E |
Printing Routines
Function Name |
Description |
Entry conditions |
Exit conditions |
Entry Address (Hex) |
PRINTR |
Send a character tothe line printer |
A = Character to be printed |
Carry is set if cancelled by BREAK, reset if normal return |
6D3F |
PNOTAB |
Print character without exanding tab characters |
A = character to be printed |
|
1470 |
PRTTAB |
Print a character expandign tabs to spaces |
A = character to be printed |
|
4B55 |
PRTLCD |
Print contents of LCD |
none |
none |
1E5E |
RS232-C and Modem Routines
Function Name |
Description |
Entry conditions |
Exit conditions |
Entry address (Hex) |
DISC |
Disconnect Phone line |
none |
none |
52BB |
CONN |
Connect phone line |
none |
none |
52D0 |
DIAL |
Dial a specified phone number |
HL = Ph. number address |
none |
532D |
RCVX |
Check RS232 queue for characters |
none |
A = number of characters in queue
Z flas is set if no data, reset if characters pending |
6D6D |
RV232C |
Get a character from Rs232 received queue |
none |
A = character received
Z flag set if O.K., reset if error (PE, FF, or OF)
Carry set if Break pressed, else reset |
|
SENSCQ |
Send an XON resume character (CTL-Q) |
none |
none |
6E0B |
SENDCS |
Send an XOFF pause character (CTL-S) |
none |
none |
6E1E |
SD232C |
Send a character to the RS-232 or Modem (with XON/XOFF) |
A = character to be sent |
|
6E32 |
CARDET |
Detect carrier |
none |
A = 0 if carrier
Z flag is set if carrier, else reset |
6EEF |
SNDCOM |
Send a character to RS232-C or modem (wihtout XON?XOFF flow control) |
C = characer to be sent |
|
6E3A |
BAUDST |
Set Baud rate for RS232-C |
H = Baud rate (1-9,M) |
none |
6E75 |
INZCOM |
Initiailize RS232-C and Modem |
H = Baud rate (1-9,M)
L = UART configuratin code (see UART byte description below)
Bit 0: specifies number of Stop Bits 0=1, 1=2
Bit 1-2: Parity Setting. 00=None, 01 = Even, 10 = Odd
Bit 3-4: Word Length: 00=6, 01=7, 10=8
The byte is ANDed wit 1FH to ignore Bits 5-7. The text string containign hte current STAT settings is located at F65BH(5 bytes): Baud, Length, Parity, Stop Bits and XON/XOFF switch.
|
none |
6EA6 |
SETSER |
Set serial interface parameters and acivate RS232-C/Modem |
HL = Start address of ASCII string containing parameters terminated by a binary zero ('78E1E',0). Syntax same as in Telcom's STAT
Carry set for RS232-C, reset for Modem |
none |
17E6 |
CLSCOM |
Deactivate RS232-C/Modem |
none |
none |
6ECB |
Cassette Recorder Routines
Function Name |
Description |
Entry Conditions |
Exit Conditions |
Entry Address (HEX) |
DATAR |
Read character from cassette (no checksum) |
none |
D = character from cassette |
702A |
CTON |
Turn motor on |
none |
none |
14A8 |
CTOFF |
Turn motor off |
none |
none |
14AA |
CASIN |
Read a character from cassette and update checksum |
C = current checksum |
A = character
C = contains the updated checksum |
14B0 |
CSOUT |
Send character to cassette and update checksum |
A = character to be sent
C = current checksum |
C = updated checksum |
14C1 |
SYNCW |
Write cassette header and sync byte only |
none |
none |
6F46 |
SYNCR |
Read cassette header and sync byte only |
none |
none |
6F85 |
DATAW |
Write a character to cassette (no checksum) |
A = character to be sent |
none |
6F5B |
RAM Files Routines
The Directory Table (located at F962) contains all file location, type and status information.
Each file is managed by an 11-byte directory entry in the format:
Byte 1: Directory Flag (for file type and status)
Bytes 2-3: Address of file
Bytes 4-11: 8 Byte filename
The Directory Flag contains the following information:
Bit 7 MSB 1 if a valid entry
Bit 6 1 for ASCII text file (DO)
Bit 5 1 for Machine lnguage (CO)
Bit 4 1 for ROM file
Bit 3 1 for invisibile file
Bit 2 reserved for future use
Bit 1 reserved for future use
Bit 0 internal use only
Function Name |
Description |
Entry conditions |
Exit conditions |
Entry Address (Hex) |
MAKTXT |
Create a text file |
filename (max. 8 bytes) must be stored in FILNAM (0FC93). 'DO' extension not required |
HL = TOP address of new file
DE = address of Directory entry (Flag)
Carry set if file already exits, reset if new file |
220F |
CHKDC |
Search for file in directory |
DE = address of filename to find (ASCII filename + 0 byte terminator |
HL = start address (TOP) of file
Z Flag -- 0 (file found), 1 file not found |
5AA9 |
GTXTTB |
Get top address of file |
HL = address of directory entry for file |
HL = Top start address of file |
5AE3 |
KILASC |
Kill a text (DO) file |
DE = file TOP start address
HL = address of directory entry (flag) |
none |
1FBE |
INSCHR |
Insert a character in a file |
A = character to insert
HL = address to insert character |
HL = +1
Carry -- set if out of memory |
6B61 |
MAKHOL |
Insert a specified number of spaces in a file |
BC = number of spaces to insert
HL = address to insert spaces |
HL & BC are preserved
Carry -- set if out of memory |
6B6D |
MASDEL |
Delete specified number of characters |
BC = number of characters to delete
HL = address of deletion |
HL & BC are preserved |
6B9F |
Other Routines
Function Name |
Description |
Entry conditions |
Exit conditions |
Entry address (HEX) |
INITIO |
Cold start reset |
none |
none |
6CD6 |
IOINIT |
Warm start reset |
none |
none |
6CE0 |
MENU |
Go to Main Menu |
none |
none |
5797 |
MUSIC |
Make tone (See owner's manual for frequency and duration information) |
DE = frequency
B = duration |
none |
72C5 |
TIME |
Read system TIME |
HL = address of 8 byte area for TIME |
HL => TIME (hh:mm:ss) |
190F |
DATE |
Read system DATE |
HL = address of 8-byte area for DATE |
HL => DATE (mm/dd/yy) |
192F |
DAY |
READ system DAY of the week |
HL = address of 3 byte area for DAY |
HL => DAY (ddd) |
1962 |