Per Mårtensson ce79b08dc7 first commit | 1 year ago | |
---|---|---|
documentation | 1 year ago | |
inc | 1 year ago | |
LICENSE | 1 year ago | |
Makefile | 1 year ago | |
README.md | 1 year ago | |
abc80diag.asm | 1 year ago | |
abc80diag.bin | 1 year ago | |
abc80diag.hex | 1 year ago | |
make.bat | 1 year ago | |
os.mk | 1 year ago | |
spt.md | 1 year ago |
Model I with 4K:
Model III with 48K:
Model II with 128K:
Model 4P with 128K:
This project was born out of a broken TRS-80 Model III that I was working on. I could not tell if the system was even "executing code," so I used an early version of this ROM to help diagnose the problem.
Please know that the main goal of this ROM is to test the functionality of the video RAM (VRAM) and the dynamic RAM (DRAM, system memory.) It does not test any other component unrelated to those two subsystems. If a TRS-80 has good VRAM and DRAM, it should boot into basic where you can then run further tests.
You should familiarize yourself with the system schematics and design of the TRS-80 before using this ROM since problems in other areas of the system can sometimes manifest themselves of a RAM problem.
Videos:
In addition, most (all?) RAM tests contained inside the stock boot ROM and even disk/tape based tests use a very rudimentary RAM test that are inadequate to detect subtle RAM problems. While the test in this new diagnostic ROM isn't the end-all, be-all of RAM tests, we feel it is better than the typical simple bit pattern tests used elsewhere. The RAM test implemented here is a "march" test, which we have found to be much more reliable at detecting a variety of different RAM fault modes.
$4000
and unmaps the ROM from Z80 address space to test the RAM between $0000
and $3FFF
.
$0000
-$0FFF
that is hidden while the ROM is mapped. It also does not test any RAM above 32k -- so any faults in the untested parts of RAM will go undetected. This ROM tests 100% of the DRAM.76543210
).$0000
to $7FFF
) is always present, but at boot time, the ROM is mapped in and makes the RAM from $0000
to $0FFF
inaccessible.
$4000-$7FFF
.$4000
, and passes control to this copy.
$0000
to $3FFF
, which it then tests. Afterwards, it re-maps the ROM to appear at $0000
again, and hands control back to the ROM.$4000-$7FFF
fails testing, the ROM skips the test of DRAM from $0000
to $3FFF
.$0-$F
), bank-switching them in turn into the region $8000-$FFFF
.The Diagnostic ROM is less than 2K in size, so it will fit completely within a 2716.
To use this diagnostic ROM on a TRS-80 Model III, you must first make or buy an adapter to allow use of an EPROM in the U104 ROM socket. This socket is designed for a 2364 which does not have a compatible pinout with a 2764 EPROM. Adapter PCBs are widely available on the usual sources, or you can make some PCBs at this link:
PCBway Project Link for EPROM adapter
The assembled ROM, ready to be burned to EPROM or EEPROM, is trs80testrom.bin
or trs80testrom.hex
. Both contain the same ROM image, so you can use whichever is more convenient with your EPROM programmer's software.
One you have a programmed 2764 or 28B64C, insert that into the adapter and install it into U104 on the Model III. This is the boot ROM that the CPU starts to execute code from at power-up. (Address $0000
)
On a TRS-80 Model I, you can install the 2716 chip right into the motherboard in left-most socket. This is the same socket the Level II ROM expansion ribbon cable connects to and is the method we recommend you use.
You can also install the ROM into the Level II ROM upgrade board on the keyboard side, but the layout of these ROM chips can vary depending on revision of the upgrade. You must install the 2364 adapter or possibly a 2732 into the socket containing the primary boot ROM. If using the 2364 to 2764 adapter in this socket, you will need to load the ROM image into $1000
due to one address line being tied to VCC.
$8000-$BFFF
) have bits 5 and 3 bad, the following tones will play:
WARNING: You use this ROM (or really, do any troubleshooting inside a Model II or its derivatives) at your own risk!
The CRT on the Model II (and all of the "Big Tandy" machines that use a 6845 CRT Controller chip) and could be damaged if they are powered on and run without a valid signal from the video controller board. It is very important that you are careful to connect all of the video-related cables properly. Also, while we have tested this ROM to program the CRTC correctly, if your EPROM chip is not programmed successfully or not inserted into the ROM socket correctly such that no ROM code runs, the video board will not output any video signal. Even if you are sure everything has been prepared correctly, make sure you are ready to cut power if you hear strange sounds from the CRT or anything doesn't seem right. We've been warned that the technical documentation says you have roughly 3 seconds to cut power before there is risk of damage to the CRT. We don't know if that's true, but we don't want anyone to damage their machine, so if you proceed, do so with caution.
Do note: this code currently depends on proper operation of the FDC. Specifically it awaits proper responses from the FDC while it toggles the activity light and head loading solenoid on and off. In the near future this will be modified to wait appropriate time periods, but not to rely on the data read from the locations where the FDC status registers should be. During testing, even without the FDC installed, the diagnostics ran properly, likely due to the response bit being 0 when read back even with the controller removed. It may not work this way on all systems, as the data bus will be floating during this read operation and results can be erratic.
The ROM image fits into a 2716, so it is easiest to use one and install that into the single ROM socket on the CPU board. Alternatively, you can use the 2364 to 2764 adapter mentioned above, but as with the TRS-80 Model 1, you must load the ROM into $1000
when programming.
As soon as you power on the machine, you should hear the floppy drive clicking, even before the CRT warms up, so you know the diagnostic code is running.
This version of the ROM has preliminary support for booting to floppy or hard drive (incluyding FreHD48). There are known issues with booting at this time, and the symptoms vary between the Model II, 12, 16, 16B, and 6000. To ensure that this ROM loops the RAM tests indefinitely instead of attempting to boot your system, make sure there is no bootable floppy in drive 0, and make sure any hard drive (or HD emulator) is disconnected or powered off before running this ROM.
This section to be completed.
Note: The ROM has only been tested on a 4P. It should work on the 4/4D, but YMMV.
On the 4P, the stock boot ROM is just a 2332, so you can use a TMS-2532A to replace it, or use a 2732 EPROM but you have to swap around the top address line and also ground the output enable pin. (The 2332 doesn't have this pin, so the motherboard holds that pin at 5V.)
Flash the test ROM code into the EPROM and install into the motherboard. You should hear a start-up been and then, if the RAM test is running, you will hear beeps indicated the testing of each part of RAM.
You can actually run the TRS-80 Model 1/III ROM in the Model 4P, and it does work. It will only test 64 column mode and only test 48k of DRAM, but if you have problem with the system running in 80 column mode, this may be a good test to see how well the system is running.
The Model III motherboard layout is shown above. I recommend referring to the Radio Shack Technical Service Manual for help in identifying what components might be bad on your system, but the picture should give you a head-start.
The Model I motherboard has only 1 bank of DRAM, which can 4k or 16k. If the system has 16k, then an additional 32k can be installed in an attached expansion interface.
For the ROM position in the Level II PCB, you must figure out which ROM is the lower ROM. You may have to look up part numbers of the chips to figure that out.
The Model 4P motherboard has a 2332 bootrom, you need to use an adapter or a TMS2532A in this socker. If you have neither, you can use a 2732 EPROM but you must swap around a couple pins and ground hte /OE pin on the EPROM. (See pin outs of these chips to understand.)
The RAM test on the 4/4P is not complete due to the way the banking works -- but it will FULLY test the upper 64k of RAM, so you can swap the lower bank chips with the upper bank to get a full test.
This repository will contain the assembled ROM image. To assemble, you will need to use George Phillips' zmac
assembler.
Many thanks to George also for his excellent trs80gp
emulator which includes integrated debugging facilities which dramatically reduced the time necessary to develop and debug these diagnostics.