ROM Checksums for TRS-80 Model 4
Page Index
About This Page
Information from Tandy memos and technical bulletins were combined to form this list. Four 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
- Tandy preferred to provide two checksums for ROM A, which were checksums of the first 4K and the second 4K. Thanks to George Philips who figured it out, you can convert from a xxxx/yyyy checksum by adding the two together and dropping the extraneous 1 which appears before it (so, for example: BBC4/DA75 would be BBC4 + DA75, which is 19639. Drop the 1, and you get 9639).
- 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 ROM Combinations:
Non-Gate Array (1st Generation Hardware).
This was set up to have 3 ROM chips - An 8K ROM A, 4K ROM B and 2K ROM C.
| Description | ROM A (8K) | ROM B (4K) | ROM C (2K) |
|---|---|---|---|
| Standard (v1) * | BBC4/DA75 aka 9639 | 407C | 1591 |
| Version A (v2) | B504/DA42 aka 8F46 | 407C | 48BC |
| Network III Student v1 | B523/DA42 aka 8F65 | 407C | 48BC |
| Network III Student v2 | B504/DA42 aka 8F46 | 407C | 48BC |
| Network 4 Student Station | B504/DA42 aka 8F46 | 407C | 33CB |
| England (50Hz) | B523/DA42 aka 8F65 | 407C | 48AA |
| French | B523/DA42 aka 8F65 | 407C | 43AD |
| German | B523/DA42 aka 8F65 | 407C | 3080 |
*: 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.
Gate Array (2nd Generation Hardware + Model 4D).
This was set up to have 2 8K ROM chips.
| Description | ROM A (8K) | ROM B (4K) |
|---|---|---|
| Standard | B504/DA42 aka 8F46 | 407C/48BC aka 8938 |
| Network 4 Student Station | B504/DA42 aka 8F46 | 407C/33CB aka 7447 |
ROM A (8K In All Instances):
| Checksum | Alt CRC | Part No. | Description |
|---|---|---|---|
| 9639 | BBC4/DA75 | 8041364 | v1.0 - First production run of US and English Model 4 |
| 8F65 | B523/DA42 | 8048364 | Model 4 and Model 4 International (Required on French, German, and Educational), and Network III Student Station v1 |
| 8F46 | B504/DA42 | 8048364A 8075364 | v2.0 (a/k/a Model 4 Version A) - Subsequent Model 4 runs (including Model 4D, German, French, Gate Array, and Network III Student Station v2) |
ROM B:
| Checksum | Part No. | Description |
|---|---|---|
| 407C | 8040332 | This is ROM B for every Model III and Model 4 |
ROM C:
| Checksum | Part No. | Description |
|---|---|---|
| 1591 | 8048316 | Generation 1, 60Hz - 1983 |
| 48BC | 8042316 | Generation 2, 60Hz - 1983 (can include Education and Network III Student Station v1 and v2) |
| 33CB | 8075317 | Network 4 Student Station |
| 38BC | 8042316 | U.S. 60Hz including Education MISSING |
| 48AA | 8049005 | English (50hz) MISSING |
| 3080 | 8049004 | German (Must be used with 8049007 character generator) |
| 43AD | 8049003 | French AZERTY (Must be used with 8049007 character generator) |
| 1587 | ??????? | Unsure - Possibly v1 Australia 50Hz |
| 48B2 | ??????? | Unsure - Possibly v2 Australia 50Hz |
ROM D:
| Checksum A | Checksum B and C | Part No. for D ROM | Description |
|---|---|---|---|
| 8F46 | B:407C C:48BC | 8075369 | Gate Array Model 4 and Model 4D (B and C are merged) |
| 8F46 | B:407C C:33CB | 8075370 | Gate Array Model 4 and Model 4D Network 4 (B and C are merged) |
ROM C/D by FRANK DURDA IV:
| Checksum | Description |
| 5C1D | Frank Durda NGA XROM v3.33 90-05-15. This is a C ROM. Requires A:8F46 B:407C |
| B:407C and C:5C1A | Frank Durda GA XDROM v3.33 89-04-01. This is a D ROM. Requires A:8F46 and most likely uses the extra 2K for a Diagnostic ROM (TBD) |
| 500C | Frank Durda ROM C v1.24 86-01-04. This ROM was written by Frank and submitted to Radio Shack on May 5, 1985 for consideration as a catch-all ROM C that could include all other U.S. ROM C's (and replace 1591, 48BC, 33CB, 38BC) plus additional fixes. This eventually became his XROM and XDROM. This ROM had the following changes/updates:
|
Character Generators:
| Checksum | Part No. | Code Name | Description |
| 19B9 | 8044316A | M3/4 | For U.S. and Kana |
| 4A0E | 8049007 | M4I | For U.S. and Europe (All Model 4's) |
German Keyboard:

How to Get Your CRC's
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
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
Quick Check for ROM v1 vs ROM v2
Model III
Model 4 Version 1 (Stored at 3132H; has extra space before the 03H EOL character)
Model 4 Version 2 (Stored at 05D1H; no space before the 03H EOL character)