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:

DescriptionROM AROM BROM C
Level IBBC4DA75407C
Level II9639407C2B91
Level II9639407C2B91
Level II9639407C2B91
Network III9639407C2764
Network III9639407C676A
Network III9639407C276A
Intermediate US (60Hz) *9639407C1591
Intermediate English (50Hz)9610407C1591
* - 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:

ChecksumPart No.Description
BBC4_______This is ROM A for every Model III Level I
96398041364This is ROM A for every Model III Level II

ROM B:

ChecksumPart No.Description
DA75_______This is ROM B for every Model III Level I
407C8040332This is ROM B for every Model III Level II

ROM C:

ChecksumPart No.Description
407C8040332This is ROM C for every Model III Level I
15918040316v1 - 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.
2EF88040316Bv2 - Rom C, Rev B - 1980. Corrects problem with control codes. Changes screen print from S + P to SHIFT + DOWN ARROW + *
2F848040316C / AMX-4642v3 - 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-7078v4 - 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!
8049006English 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:

ChecksumPart No.Description
19B98044316AFor 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