ROM Checksums for TRS-80 Model III

About This Page

Information from Tandy memos and technical bulletins were combined to form this list. Three things to note:

  • Analyzing the ROMs and researching for possible mistakes took a lot of the TRS-80 community out there, and I thank them all. Special thanks to George Philips and Ken Brookner for tackling the hardest issue of them … ROM A Checksum 1591
  • ROM C uses locations $37E8 and $37E9 as a pass-through for printer information. PEEKing a ROM to dump it will not work unless the printer is off because those 2 locations will contain whatever data they contain otherwise. When MEMTEST does its CRC checks, it skips those 2 locations. Thanks also to George Philips for that info.
  • If you have any ROMs which are shown as missing, please contact me.

Official Combinations:

Description
ROM A
ROM B
ROM C
Level I
BBC4
DA75
407C
Level II
9639
407C
2B91
Level II
9639
407C
2B91
Level II
9639
407C
2B91
Network III
9639
407C
2764
Network III
9639
407C
676A
Network III
9639
407C
276A
Intermediate US (60Hz) *
9639
407C
1591
Intermediate English (50Hz)
9610
407C
1591

* – Both the Model III and Model 4 list 9639 407C 1591 as a valid ROM combination, which is somewhat baffling. That combination will run on both a Model III and a Model 4. It contains some code calling the Model 4 CRTC which runs fine on a Model 4 and is ignored on a Model III.


ROM A:

Checksum
Part No.
Description
BBC4
_______
This is ROM A for every Model III Level I
9639
8041364
This is ROM A for every Model III Level II

ROM B:

Checksum
Part No.
Description
DA75
_______
This is ROM B for every Model III Level I
407C
8040332
This is ROM B for every Model III Level II

ROM C:

Checksum
Part No.
Description
407C
8040332
This is ROM C for every Model III Level I
1591
8040316
v1 – First released version. U.S. Version (60Hz). Did not allow control codes to be entered from the keyboard although those codes were documented in the owners manual.
2EF8
8040316B
v2 – Rom C, Rev B – 1980. Corrects problem with control codes. Changes screen print from S + P to SHIFT + DOWN ARROW + *
2F84
8040316C / AMX-4642
v3 – Rom C, Rev C – 1981. Corrects “garbage on screen” power up problem discussed in Technical Bulletin III:10. The differences between v2 and v3 are very small. First, a byte in the printer character lookup table which was wrong in both v1 and v2 has been fixed (3185H had 40H where it should have been 60H). Second, the instruction at 3468 (FDC Bootup routine) previously had a CALL (17 cycles) to a routine containing PUSH BC (11 cycles), POP BC (10 cycles), NOP (4 cycles), and RET (10 cycles) to stall for processing of the OUT command which preceded it. This was changed to PUSH BC (11 cycles), POP BC (10 cycles), NOP (4 cycles), which reduced the stall by 27 clock cycles.
2B91
________
Model III Level II – This is one of the 3 ROM’s shown on a TRSDOS v1.3 disk as valid
2F64
MISSING!
________
Model III Level II – This is one of the 3 ROM’s shown on a TRSDOS v1.3 disk as valid
____
MISSING!
AXX-7078
v4 – This is the Network III ROM C used for Network III Student Stations. This part is found ONLY in the 26-1059 Model III Student Station, or Network III Student Station upgrade kits.
2764
MISSING!
________
Network III ROM
676A
MISSING!
________
Network III ROM
276A
MISSING!
________
Network III ROM
158C
MISSING!
8049006
English Version (50Hz)
1E04
________
German
3BE7
MISSING!
________
TRSDOS v1.3I (International) Reports this as a valid CRC
10A6
MISSING!
________
TRSDOS v1.3I (International) Reports this as a valid CRC

Character Generator:

Checksum
Part No.
Description
19B9
8044316A
For U.S. and Kana

How to Get Your CRC’s

If you do not have a DOS system, you can type in this program and get your CRC’s. These programs were written by Dean Bear.

Longer Version (Runs Fast):

1 FOR I = 0 TO 38 : READ P : POKE 28656+I,P : NEXT I
2 DATA 17, 0, 0, 62, 16, 237, 71, 33, 0, 0
3 DATA 69, 26, 79, 9, 19, 237, 87, 186, 32, 247
4 DATA 24, 13, 58, 232, 55, 79, 168, 55, 63, 237
5 DATA 66, 55, 63, 237, 66, 195, 154, 10, 201
6 POKE 16526, 240 : POKE 16527, 111
7 DIM B(3): B(0)=0: B(1)=32: B(2)=48
8 DIM C(3): C(0)=32: C(1)=48: C(2)=56
9 PRINT "M3/M4 ROM CRCS FOR 3 CHIP SET"
10 FOR I = 0 TO 2
11 POKE 28658,B(I)
12 POKE 28660,C(I)
13 IF I = 2 THEN POKE 28677,0
14 D = USR(0)
15 IF D < 0 THEN D=D+65536
16 A$ = "ROM "+CHR$(65+I)+" = "
17 GOSUB 20
18 NEXT I
19 END
20 S=16:X=2
21 IF S<D THEN X=X+1:S=S*16:GOTO 21
22 PRINT A$;
23 T=D
24 FOR L=X TO 1 STEP -1
25 N=INT(T/S)
26 A=0
27 IF N>9 THEN A=1
28 IF L < 5 THEN PRINT CHR$(48+N+7*A);
29 T=T-N*S:S=S/16
30 NEXT L
31 PRINT
32 RETURN

Shorter Version (Runs MUCH Slower):

1 FOR I = 0 TO 8191 : D=D+PEEK(I) : NEXT
2 A$ = "ROM A = "
3 GOSUB 12 : D = 0
4 FOR I = 8192 TO 12287 : D=D+PEEK(I) :NEXT
5 A$ = "ROM B = "
6 GOSUB 12 : D =0
7 FOR I = 12288 TO 14335: D=D+PEEK(I) :NEXT
8 A$ = "ROM C = "
9 X = PEEK(14312): D = D - X - X
10 GOSUB 12
11 END
12 S=16 : X=2
13 IF S<D THEN X=X+1 : S=S*16 : GOTO 13
14 PRINT A$;
15 FOR L=X TO 1 STEP -1
16 N=INT(D/S)
17 A=0
18 IF N>9 THEN A=1
19 IF L < 5 THEN PRINT CHR$(48+N+7*A);
20 D=D-N*S : S=S/16
21 NEXT L
22 PRINT
23 RETURN