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.
Non-Gate Array (1st Generation Hardware)
Gate Array (2nd Generation Hardware + Model 4D)
Gate Array Model 4s and Model 4Ds contain only two ROM chips, an 8K ROM A, and then a 8K ROM D which is just ROM B and ROM C in one ROM (with 2K wasted space). The actual code in the D ROM remains the same, only the ROM size has been changed:
ROM C/D by FRANK DURDA IV:
- Ability to boot TRSDOS 6 from a hard disk drive without the use of a start-up diskette on WD1000 or WD1010-xx hard disk controllers.
- Ability to boot from the Network 3 or Network 4 by pressing
- New Model III mode keyboard driver handles rollover correctly.
- New keyboard driver can produce all ASCII characters. (Current version does not allow brackets, braces and other special symbols.) All keys are now repeatable.
- Ability for a Model III mode operating system or user program to adjust the keyboard repeat rate. Previously this value was not adjustable.
- Real-Time-Clock and Cursor Blink run properly at 2Mhz or 4Mhz. (Previously both ran twice as fast at 4Mhz, making the clock useless in Model III mode.)
- The floppy drives timeout after a several seconds on boot-up to prevent drive and media wear. Floppy booting speed has also been increased and the noise level reduced, by using the correct step rate.
- Screen print in Model III mode can now be initiated by
*. Previously you had to press
:is compatable with TRSDOS 6
- Improved interrupt handler that reduces the chance of lost RS-232 traffic at all speeds has been added. This change will also allow external I/O bus interrupts to be used while RS-232 traffic is present. (Previously this was not possible in Model III mode.)
ROMs which are not US/UK carry not only different character generators but different keyboards, making using them in an emulator somewhat difficult.
Thanks to Volker Kruckemeyer, this is the German keyboard
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