System 80 / TRS-80 Model 1 ROM differences
The following text covering System 80/TRS-80 ROM differences were taken from Eddy Paay's book "Level 2 ROM Assembly Language Toolkit". This 1982(?) Australian publication from Adelaide-based Micro-80 covered the Trs-80 Model 1, the Model 3 and the System 80. It followed Eddy's earlier book, "The Level II ROM reference manual" which can be read or downloaded here. The System 80's ROM was practically identical to the TRS-80 Model 1 Level II ROM (Version 1.2), with both Tandy and EACA having licenses to use Microsoft Level II BASIC. Consequently, only two pages in "Level 2 ROM Assembly Language Toolkit" actually deal with the differences (part way down page 74 and page 75). Those page contents appear below...
<---Extract starts here --->>
--** CASSETTE INTERFACE **--
The cassette interface on both machines uses port FFH as its data port, with bits 0 and 1 being used to output data to the cassette recorder (see discussion on port FFH elsewhere in this manual). However, bit 2 is used differently. The System 80 uses this bit to enable data to reach the recorder. In other words, bit 2 must always be held high (bit 2 = 1) when reading or writing data to the cassette. This means that each time port FFH is written to, bit 2 must be 1 if the cassette has to stay enabled. It is also necessary to select which recorder is to be used, internal or external. This has to be done with port FEH, bit 4. Setting bit 4 to 0 selects cassette 1 (inbuilt) and setting bit 4 to 1 selects cassette 2 (external).
--** PRINTER INTERFACE **--
The printer port in the System 80 uses port FDH instead of memory address 37E8H. The bit usage of this port is identical to the TRS-80 usage and should not present any problems. To use the printer port, read from port FDH to see if the printer is busy (bit 7 will be high if the printer is busy). The output character to port FDH.
--** SYSTEM 80 CASSETTE PORT SUMMARY **--
PORT FFH
BIT NO.
0 & 1 DATA OUTPUT (See TRS-80 port FFH section)
2 High = cassette on, Low = cassette off
7 Cassette data in (Read)PORT FEH
Bit No.
4 Cassette select: high = No. 2, low = No.1
<---Extract ends here ---->
The assembly listing below shows exactly where the differences between the System 80 and the TRS-80 Model 1 lie. As you can see, they are minimal.
1. 'READY' (and some nulls) has replaced 'MEMORY SIZE'
Hex
105 |
Sys 80
52 |
Op
LD D,D |
ASCII
R |
TRS-80 4D |
Op LD C,L LD C,C |
ASCII
M |
2. OUT 254,A has replaced LD (37E4),A . This references a cassette I/O port.
Hex
212 |
Sys 80
D3 |
Op
OUT (FE),A |
ASCII
|
TRS-80
32 |
Op
LD (37E4),A |
ASCII |
3. OUT 253,A has replaced LD (37E8),A. This references a printer I/O port.
Hex
5AD |
Sys 80
00 |
Op
NOP |
ASCII
|
TRS-80
32 |
Op
LD (37E8),A |
ASCII |
4. OUT 253,A has replaced LD (37E8),A. This references a printer I/O port.
Hex
5BB |
Sys 80
00 |
Op
NOP |
ASCII
|
TRS-80
32 |
Op LD (37E8),A |
ASCII |
IN A,253 has replaced LD A,(37E8) . This references a printer I/O port.
Hex
5D1 |
Sys 80
00 |
Op
NOP |
ASCII
|
TRS-80
3A |
Op
LD A, (37E8) |
ASCII |
'SN' replaces the The error report 'L3'
Hex
18F5 |
Sys 80
53 |
Op
LD D,E |
ASCII
S |
TRS-80
4C |
Op
LD C,H |
ASCII
L |