Here you will be able to download my DiagnosticRom for the Amiga.
The file is a ZIP-File and will contain 6 files:
DiagROM – To be used in an emulator like WinUAE (does not really makes a point)
16bit.bin – Files for 16 Bit roms, like A500, A2000, A600, Already byteswapped
32bit-HI.bin – Files for 32 Bit roms like A1200, A3000, A4000, HIGH Word, Byteswapped
32bit-LO.bin – Same as above but LOW Word
readme.txt – Basically the history at this page.
RomStartup.txt – Explanation of startup sequence of ROM
HI ROM is to be used at: U6A – Amiga 1200, U175 – Amiga 4000, U181 – Amiga 3000
LO ROM is to be used at: U6B – Amiga 1200, U176 – Amiga 4000, U180 – Amiga 3000
Take a 27C800 prom, either join the hi and lo files, in order first “HI” and then “LO”. Or as I have a 27C4096->27C400 adapter with jumpers for banks.
Set it to bank 0, program “HI” then put adapter in bank 1 and program “LO” and it will work.
Stable file is ONLY updated at every versionbump. (noted in History text here)
Please send ANY bugreports via email to: bugreport<at>diagrom.com
Stable (RELEASE Version currently 1.2.1): http://www.diagrom.com/files/stable/DiagROM.zip
Daily (BETA Version Currently 1.3): http://www.diagrom.com/files/daily/DiagROM.zip
Want to donate? Sure thanx use this link for that: http://paypal.me/JohnHertell
History: (remember this is mainly affected the daily version)
2023-01-26: Now default also produces a CD32 image to be burned on 27C800 Proms.
Fixed issue with ghostfastmem found on AA3000+ boards (detectes fastmem that isn’t there)
2022-11-11: Fixed Addresserrorissue while playing testmodule on 68000 machines.
Fixed issue with Autoconfig printing forever (actually 65535 times) if there was no cards detected.
2022-10-30: On RGB test. added white bars at every colorchange to make it more easy to count out what color is shown.
RTC test: added a adjustfunction telling how many frames between everytime RTC changes (second) to help adjusting RTC.
Added function to constantly monitor one memaddress. This is for dev of new hardware and not to diagnose issues.
2022-02-21: Fixed addresserror crash on audiotest using 68000/010 CPU
2022-02-19 Changed memorytestroutines to the new updated.
Fixed autoconfig so it would not end in a endless loop if no autoconfigcards was detected.
Fixed autoconfig with outside checking from github to handle boards with an illegal configuration better.
Simple Audio waveformtest now supports volumechanges and also HOPEFULLY oddbyte-bug in Sinuswaves are fixed
Some minor undocumented bugfixes.
2021-06-12: Now the new memtestroutine actually seems to work “x” is just hardcoded testareas, but the manual option “7” now lets you
select what area to test and the depth of check (how many longwords between all tests 1 being every byte checked) (higher=faster test)
2021-05-15: AGAIN Long pause.. ERASED the memtestroutine I was working on redid it TOTALLY!. available as “x” in memtest menu!
2020-11-21: New Memtestroutine now should handle when colliding with workareas.
Manualtest routine now swapped to the new testroutine. you can now enter selected area to scan AND change blocksize.
higher blocksize=more accurate addresstest check.
also if you enter wrong order of area to scan it will be handled. 0 byte scanarea will cancel.
2020-10-29: New experimental memtestroutine in the works. right now only doing a test of HARDCODED 16MB fastmem on A4k/3k
Should be much faster, ASWELL as it should handle address-error issues! TEST IT HARD PLEASE!
Also contains bug in Zorro handling asking boards to be shut down, issued via Github! (thanx!!)
2020-10-18 Noticed that CSPPC did not work on DiagROM. This as it seems the board needs time to startup (HEY P5.. handle it with RST??)
so doing some waiting and resetmagic if a CSPPC is detected. not it starts OFTEN! (not always, if not. do a reset and it will start)
2020-10-02: Fixed bug so if no chipmem available at boot, it doesnt try to do a addresserrortest of that area anyway.
Fixed scrollbug leaving traces of lowest pixelrow.
Added function in Autoconfig mode that lists a summary of detected boards.
Added About text.
Added support for handling 2 different workmem areas: Chipmem and Fastmem, showing info about it in systeminfo screen.
Systeminfo screen if detecting a 060 will show PCR registerbits.
If A3000/A4000 motherboard memory or CPU slot memory is found scanning of A1200 CPU Slot memory is disabled, This will hopefully stop
machine to crash with a 3640 installed and maprom enabled.
2020-09-05: Found a interesting behaviour on Amiga 4000. If you have no chipmem, and write something to any chipmemaddress and then
read anything from any chipmemadress (not even same as you wrote to) THAT value will be read! so on an A4000 with no chip.
the memorydetectroutine would say that it finds a shadowram. also the UDS/LDS test said “ok” even it it impossible could be.
so fixed that by doing a write to chipmem with $ffffffff so it will read that if you do not have any chipmem. making the tests more true.
A1k Version have not been working for a while due to spaceissues. removed more or less all “not important” tests tomake it fit into the
very limited 64k bootrom. so it should work again.
Fixed bugs when using a 68000 CPU (010 aswell?) that crashed IRQ/CIA tests and also Extended chipmemtest. (Addresserror etc)
Also fixed more information in crashscreen.
2020-08-23: During Startup, UDS/LDS test was done by writing $ff to diferent places, this could be wrong as no memory can also
show up as $ff changed value to $aa to be more “random” if memory is not present.
At startup, chipmem is filled with its memoryaddress, while doing this you see a checkered-pattern on screen.
After that, it verifies that the address contains that data, while doing this you see a distorded colorpattern on screen.
if fail, it will show what memaddress it fails at, memaddress as binary and also what it actually contained (should be its same address)
So no more telling ram is ok when thee was shorted/missing addresslines. Now check actually checks ALL memory and not only beginning.
2020-08-16: Doing Addresserrorchecks on Chipmem AND workarea.. if left mousebutton pressed at poweron.
fastmem is chosen ar priority ram, if no fastmem found, chipmem will be used but screen turned off.
if addresserror found in chipmem, chipmem will be discarded. will be handled different later
2020-08-01: New initcode in start. at memfail bits read will be written as green is correct, red if failed.
Also during error, a dividertext will be printed every 512k block.
2020-07-16: WOW This is a long time since I updated this. And lets be honest. I have forgot what i have changed.
BUT one thing I just been thinking. I have bumped the versionnumber in the
wrong “end”.. so as I am working on a new init-routine. I consider this is the “stable” one.
So I bump the serialnumber to 1.2.1. I have been too busy with hardware so I
must confess I haven’t coded so much on DiagROM. I have made some minor bugfixes etc.
I must still warn that if a routine is experimental you cannot really trust the tests 🙂
Anyway in hope for the best in the future. the “daily” will for a while be a little “jumpy” while I
get the new init working. This should be useful meanwhile 🙂
2019-08-13: Long time since last time. New Stable.
Now Diskdrivetest should work on most machines.
Memchecks should now detect nonworking ram better.
Experimental CIA test added that should work on NTSC machines aswell. MIGHT give false
results on TOD-B tests. It will still say that IRQ is needed, this is not true 🙂
Added RGB Test.
and usual “bugfixes” pressing left mousebutton when chipmemdetect starts skips serial
output and makes startup faster. holding down left mousebutton while doing memscan at
start skips memtests. (good if it hangs during scan. known not found bug yet!)
2019-05-04: Updated to tested values if new CIA test that should be more correct.
Also in memoryedit mode (memtest) added pageup/down functions with Q and Z keys.
(or Amigastandard shift+cursor keys) also added official support to execute code
from current locaton using the X key. (this is very much not really useful for most
2019-05-03: New experimental CIA test should be working. This I would add much more early but due to some idiots having the totally wrong way of asking for a function I just simply ignored the request of having a CIA test that works in NTSC mode aswell. Remember HOW you ask
for functions/features. Do not be a dick. Anyway. it now hopefully works. I have no
real NTSC machine to test on, so please test and report (email@example.com).
remember that result is dependent on current screenmode so OK can be on the PAL side
even on a NTSC machine.
2019-05-01: Added a new experimental CIA test. it says however IRQ is needed but it is a lie.
Will be changed when the old test is removed.
it will now show number of ticks intead. and if it is ok or not in both PAL and NTSC
modes. (still remember. pressing space in mainmenu swaps between PAL/NTSC mode on most
2019-01-26: Changed some in serial output so tests that are ok are shown in green.
and tests failing are shown in red.
also changed the screen if no mem was found at all that it now shows in rasterbars
bit 31->0 Light green is a working bit. dark green is a bad bit in memory.
Slowly going from Address $400 and up. (4 longwords up every flash).
where I now added a section of 4 parts:
This is a very fast (and not very reliable) memorytest of chipmem.
telling if it seems to have working ram in different blocks of 512k.
so 4 lines= 2MB of ram.
those tests are in realtime so poking around on databits will show you result in realtime.. This is using Raster-magic coding C64 style. So flicker is normal.
2019-01-13: Whopsi. During my tests I disabled parts of the CIA test. now working again.
also changed somewhat at the init output doing chipram detection.
Now it shows binary output aswell. This made detecting MUCH slower.
But I found out that if I write the address being tested only once.
things got much faster. Now it takes longer when there are errors.
I have added (to TEST! might be removed anyday) a function that if you press
left mousebutton, serialoutput is temporary disabled making it go much faster.
2019-01-02: Changed memtest pattern so it is different for high/low word
2019-01-01: HAPPY NEW YEAR! changed serial output at startup when there
is biterrors. now also showing binary output.
Writes address only once, this dramatically also as a bonus
improves detectionspeed when memory is good. Slight
different coloroutput now. (might be changed)
2018-11-17: Added a RGB Test showing a R G and B bar. for the moment only in OCS, AGA will come.
2018-05-20: Did some tidying in Gayletest. added Amiga 4000 IDE test aswell
2018-05-11: Modified startupcode some. added new memoryetection as default should be better at detecting fastram.
press left mousebutton at poweron, screen will be disabled. IF fastmem is present, fastmem will be used
as workmem (LAST working block found will be used).
if right mousebutton is pressed during poweron, BEGINNING of detected ram (chip or fast) will be used instead
of default END.
While fastmemdetecttion runs, in serialmode detected areas will be shown.
2018-05-06: Fixed bug that gave artifacts when text scrolled out of picture.
Adding Gayle IDE Controller-test.
Added a new memorydetectionroutine that so far is a test-option. when tested better this will be
also used to hande fastmem etc at startup.
2018-04-17: Added function, in mainmenu if you press SPACE you switch between PAL and NTSC screenmode.
Hopefully fixed issue with Autoconfigure and Z3 cards.
2018-04-06: Easter and Revision demoparty passed. Been working on some internal stuff. small bugfixes.
Added a new memorydetectionrouting that for the moment only is available as a menu-choise in memtest
menu, PLEASE report results to me, especially if it finds different amount of memory than others.
and also false reports.. (rememember that you WILL need to do a autoconfig procerdure for autoconfig
ram to be visible here)
also started to plan a new memorytestroutine that handles addresserrors etc.
2018-01-27: Added CPU detectionroutine. Sadly the MMU detectioncode I made seemed only to work in WinUAE and not
on real machines, so that one is temprary disabled. so will not be able to present exact correct CPU.
(EC, LC etc)
2018-01-05: HAPPY NEW YEAR!
Added ROM Checksumtest.
2017-10-01: Long time since last time:
Added tests for Parallel and serialporttesting using SysTest compatible loopbackadapters
2017-07-30: Added possability to run on A1000 as bootstraprom. I have removed moduletesting and gfx test-screemn to save space.
Some additional bugfixes.
2017-07-06: Fixed a bug, when setting DTR high I accidentally put Dikdrive motor on!
when no chipmem is foundand no fastmem, instead of just flashing a green screen, it now checks memaddr $400
and shows in stripes biterrors. bright color=bit working, dark=bit error. evbery 15 frame it flashes and steps +4 bytes of memaddr to check
2017-06-17: Oh! yes long time. Now DiagROM is opensource avaible at https://github.com/ChuckyGang/DiagROM
Totally rewritten Autoconfig, now handles Z2 and Z3 and should be working. if you get stuck in a loop (autoconfig not working) it
will halt after 32 “boards”.
Also in ManualEdit mode, I have inlcuded a function to turn on/off cache. to debug cacheissues on CPU Cards.
BE CAREFUL! this WILL crash if you run it on a 68000/010
Also fixed bug of garbage in menus.
2017-04-15: Added Support for OKI Chipset in RTC Test
Added (somewhat experimental) support for Autoconfig for Z2 boards.
Must say thanx to Terriblefire for autoconfig code. (with some changes by my)
Added test at startup to see if CPU can do odd/even byte read and writes
Bumped version to V0.9 – Next Stable release
Released while being at the Revision demoparty.
2017-02-25: Moved mainmenu alternatives to make space for more maintest-menus. also added some for future use.
Started on Others tests/RTC Test for the moment only showing ricoh RTC chip (A4k etc)
Removed temprary debugfunction added the 18:th.
2017-02-18: Minor changes. sometimes when exiting a testscreen you got to the mainmanu instead of the submenu. cleaned up now.
also added a fakefastmem allocation at the boot so you can run stuff in fakefast by pressing LBM at poweron if needed.
TEMPORARY DEBUGFUNCTION: while dumping serialport at beginnning, screen also flickers while doing a serial timeout.
this is to figure out if machine still runs to veryfy I can do serialstuff (and detect failures) if paula is missing.
will be removed soon as it screws up onscreen colorcodes.
2017-02-15: Added a testpicture, testscreen is moved in menu and will still bug. this will be reworked soon.
2017-02-04: Simple audiotest is now improved, it now plays different waveforms, I have checked the frequencys with my Rigol scope.
But 20.6Hz in my headphones sounds weird, maybe should remove it in the test. the only thing not working there now is setting volume.
2017-01-30: In Manual edit: added when using “goto memoryaddress” when pressing x it clears the string totally. Also hopefully fixed keyboardbug making
it more or less impossible to use keyboard on some machines.
Fixed bug showing strange flickering spritebugs random
Changed that in initial chipmemdetecting it checks more combinations of bits, this will make detect slower (due to serial output) but will detect more
TEMPORARY function: pressing fire/mousebutton in joystickport while poweron will totally disable serialoutput. this is to be able to run with broken
Paula. Will look into a better solution. so function will maybe be removed.
Added a testmodule, A groupmember will make a chipmodule for me later to have here. Now using the classic “Echoing”
2017-01-06: Long time since last update. Hollidays etc. Anyway some minor internal fixes and a basic low-res testscreen added.
2016-10-22: Fixed bugs in new Chipmemdetection that made it not detect any chipmem if there was missing/Broken chipmem in the beginning.
Added errorhandling in the startprocess, so it can show on serialport if there was a exceptionerror. also will show colorcodes on screen.
done some smaller bigfixes. Will bump versionnumber and this will be the stable version. It will take a while until next stable version is
bumped. Need to do floppy, serial, paralell tests etc before that will happen. but you always have the daily version.
2016-10-12: New Chipmem detection now handles shadowram so it should stop detecting memory instead of giving false 2MB Chip.
IF no Chipmem avaible and machine can detect fastmem (NON autoconfig. more or less only A3000/4000 motherboardmem) it will now
start using fastmem only. (screen flickers in different colors instead of printing text, nullmodem only)
Fixed addresserrorbugs at CIA and joystickport tests on machines with 68000CPU. also should have correct CIA timing on slow machines.
IF fastmemshadowram is detected during memorytests, test will exit. MANUAL test have a option to disable that test.
2016-10-07: LONG time no updates. Familystuff. Anyway. decided to do a total redo of initcode especially chipmemdetection.
Detection is slower, but progress is printed on serialport so you can see address checked and if failure (in the beginning of the detection)
you will see what it wrote and what is read to help debugging of chipmemproblems. Screen should flicker in green while detecting.
drawback is that some tests (cia and joyport tests) now generates an addresserror. Will have a look of that.
2016-08-05: Found the very VERY interesting bug making the right mousebuttin to act like it is STUCK on some machines. As you apparently should set the
port to OUTPUT before reading it. after doing that RMB now behaves correctly so hopefully no more “rainbow screens” and failing memorytests.
Anyway, time to release a new Stable version. tests are now more decent, they will be improved. YES but as it seems to work now and are getting
somewhere I decided to do this as next stable version.
2016-07-19: Vacationtime, not so much coding done. Found BIG bug making serial input not to work atall. also some more keyboardchanges even if keyboard is far from
perfect it should work better now, seems to work even better with serialoutput turned off but still VERY flaky at times. (in UAE it works perfect)
totally redesigned the inputroutine for input of hexaddresses, now not longer requiring 8 char long addresses.
at manualmemory-edit mode, system now allows scrolling up and down and added info about current memoryaddress.
lots of internal redesigns of routines.
2016-07-07: Complete new keyboardroutine. Hopefully it will work better on real machines, this time coded ON my A4000 instead of in UAE.
2016-07-05: Added a detect of working raster, if so raster will be used as a timer hopefully making keyboard and serialroutines to work better.
Serialport is now disabled if no key is pressed during boot when prompted. (or user press RMB during prompt)
Powerled now flashes during memorytests aswell, so user can see that something is happening on slow memory. like Chipmem.
2016-06-28: More Changes in timingroutines. Added a IRQ Level test. IRQ7 test REQUIRES that you have a IRQ7 button hacked to your machine.
2016-06-19: Some cosmetic changes of textoutput (added a function to center singleline-texts)
Added simple test of joystickports
2016-06-18: Made keyboardshortcuts in audiotests.
Simple keyboardtest added.
2016-06-11: Noticed that audiotestroutine was all screwed up due to my redesign of handling of inputdata.
Should now be fixed, now also keyboard can be used here.
due to the big bug, this will be also a “Stable” release even if I do not bump the versionnumber.
2016-06-03: Hopefully repaired keyboard input and maybe even serial.
Also stupid bug detected that older versions apparently sent data in 2400 BPS after a while
Big rework done in menu and inputhandling. Next “Stable” release as it is now at V0.6
2016-05-22: Keyboard and and serial INPUT may be damaged on some machines due to changes in handlinhgroutines and timings is a bitch. Will check
you can now use keyboard/serial cursor up/down to select items in menus. Mousehandling also better and do not skip bottom value in menu.
Manual memoryedit test is now operational so you can check any address in memory manually.
ANSI bugs should now also be removed in PuTTY etc.
2016-05-08: Serialhandling now improved, as there is no IRQ going on I have no means of do a interrupt at serialdata.
So now simply everytime I put out a char on the serialport I also read the serialport and puts any data in a buffer.
Now you should be able to move the cursor in manualedit mode. (that soon will be able to edit memory aswell while it reads memory
so you can see biterrors etc on that given address.)
2016-05-08: Serialhandlingroutine changed so now it actually uses a buffer. Hopefully you now can cancel memorytests etc.
2016-04-27: Hopefully keyboardroutines should work now even on physical machines – First Daily build
2016-04-22: VERSION 0.5 – First Stable
First public beta
<History before Public release not on this screen>