Page 1 of 1

Nasty 30-year Old AmigaOS Bug Discovered

Posted: Tue Nov 05, 2019 11:34 am
by intric8
This past year one of my Amiga dreams came true when I acquired my first Amiga 3000. Then I found yet another. 2019 has been a banner year.

And over the past year the first one I acquired has quickly become one of my all-time favorite Amiga machines. For the time being my glorious A2000 is taking a well-deserved break.

In the 3000 I replaced the very loud mechanical hard drive with a quiet and nearly powerless SCSI2SD card. I also recently swapped out the also very loud original cooling fan with a far quieter Noctua. It's not A1000 quiet, but it's good enough for me.

My 3000’s are both very early 16Mhz versions. These machines are quite unusual, as they came from the factory with what’s referred to as a Kickstart ROM Tower. It’s essentially a Kickstart ROM switcher straight from Commodore.

This delicate and janky piece of hardware and software - referred to as the Kickstart/Workbench 1.4, aka Superkickstart ROM - allows users to hold their mouse buttons down on boot-up to access a unique Kickstart Menu. This then allows users to choose if they’d like run AmigaOS 2.0 or 1.3 for that session, with a further choice of hard drive or floppy for either. Technically when you make your choice the machine soft-boots into the selected environment.
The dual-boot option was provided because 2.0 was still in beta. I wish they'd further refined this feature and continued it forward.

It’s an exceptional feature and one I use on every single boot up as I’m a massive fan of the 1.3 environment. I've even created my own icons for 1.3 and like to use them.

If you don’t touch anything when you boot the machine it will default to Kickstart 2.0. I wish there was a way to hard-wire (or flip) the default preference, but to my knowledge that’s not possible. But it’s not that big of a deal and I’m probably one of the last people on the planet who prefers 1.3 as it is.

In any case, the way this 3000 is wired is strange. There are some oddities and incompatibilities that appear from time to time (I’m looking at you, SCSI).

About 2 weeks ago I received a new boxed copy of Curse of the Azure Bonds. This was my 3rd copy, and 2nd boxed copy so I could replace a very badly damaged gold box. My two previous copies are actually different versions of the game software, which is cool. I decided to put this new set into my 3000's floppy drive and see if I might have discovered a third version. Unlikely, but why not see? The moment I put the disk in the drive I knew something was wrong. The disk sounded like it was rotating on sandpaper. It wouldn’t mount to the desktop and every disk I tried to read now failed.

It might be pure coincidence, but the moment I put that disk in the drive, the drive seemingly died. I cleaned the heads, lubed the parts YouTube says to lube, but to no avail. It was the first floppy drive to die on me in over 4 years. Thankfully I had a backup drive and quickly did the swap.

Next I needed to perform a few tests to ensure the new drive was fully functional.

I popped in a fresh disk and was able to format it in a matter of moments (omg so much faster than my sweet little A1000’s). I was able to read disks just fine, too. Then, using the Workbench Duplicate command, I began to read and write a copy of an entire disk as my final test.

It would read the entire source disk, then start writing all 80 tracks to the destination disk. Then, on track 79 when it would try to finish up and mount the disk to the desktop, my power LED would flash a few times and my screen would go solid blue. I sat there just staring at the screen wondering what just happened. Talk about the blue screen of death!

I used several more disks and no matter what I tried, the same result occurred every time. Duplicating a disk would crash the machine. Thinking my spare backup drive was defective, I found and bought two more.

Finally this week the new drives arrived. I quickly put one of them in the machine and restarted all of my tests.

To my shock and horror, the exact same results occurred with the one of the new drives! I couldn’t believe it and quickly shot a flare towards some of my friends for advice.

My friend Matt asked me if the disk duplication worked in OS 2.04, knowing full well I was doing everything in 1.3. I re-booted and tried to duplicate a disk... and it worked! That was a very cool moment, but also created a sense of fear and unease about what was going on with 1.3 on this machine.
2-point-oh ftw! I don't say that every day.

Next thing I did was take one of the "failed" 1.3 duplications and put it in my A1000’s drive. Guess what? The disk was OK! So when the duplication ended on the 3000 and the machine froze, the copy actually completed and the resulting disk was actually fine! And if I rebooted the A3000 and put the duplicated disk into its drive, the 3000 would also see it just fine! So the disk was definitely OK, too. This led me to believe that my floppy drive, and disks, were indeed A-OK.

Next I fired up Directory Opus 4, and performed a disk copy from there. It worked! By bypassing Workbench’s copy program, the disk copied in no time and all was well.

This sounds crazy, but I then took the “Copy” program from a good Workbench floppy and copied it on top of the same program on the hard drive, even though the KB sizes were identical. My thought was maybe there was some data corruption on my SD card. I was throwing darts in the dark - I had no idea what was going on.
It was a total longshot, but I was wanting to eliminate all possible variables.

But then my friend Matt, who also has an early A3000 with a Superkickstart ROM suggested he try to duplicate a disk on his machine as well the same way I was.

Now, his machine went one step further than mine. It actually produced a Guru Meditation!
Matt's 3000 is showing a green Guru Mediation because it has a bum VGA. Photo by Mattsoft.

Suddenly, the truth of what was going on here revealed itself: There was a massive bug in 1.4 - a beta product that shipped to market prematurely - that got through QA. Disk Duplication is utterly broken via the Workbench route in 1.4!

While the realization of that bug showing itself 30 years later completely stunned me, I was far more relieved that my machine was technically OK. And while I absolutely love the dual-boot feature, it nearly gave me a lot more white hairs these past couple of weeks.

Do you have an early A3000 with the ROM Tower still installed? If so, could you try to duplicate a disk using Workbench? It would be nice to get more than just similar 2 results to make this a bit more scientific and confirm that disk duplication is indeed broken in 1.4.

Re: Nasty 30-year Old AmigaOS Bug Discovered

Posted: Tue Nov 05, 2019 5:21 pm
by Shot97
It would be interesting for me to soft boot my 500 into 1.4 and see if it happens in that route as well.

Re: Nasty 30-year Old AmigaOS Bug Discovered

Posted: Tue Nov 05, 2019 6:53 pm
by Shot97
I'm thinking I won't have the problem, because when I say soft boot into 1.4, I mean the actual alpha/beta 1.4 rom and Workbench. The way you word it, seems like that may have just been a name for the combining of 1.3 with 2.?

Can you post the exact revision of your kickstart that Workbench reports? I think there were a few versions of the actual 1.4, the early ones had the original kickstart insert disk image, made for the blue look. The later revisions had the 2. Amiga check mark insert disk screen, and Workbench itself had the colors altered as a hybrid of 1.3 blue and the later 2. stuff.

Heck, if you use AExplorer to rip your kickstart, I may even be able to use my kicking software with your exact rom just to see what, if anything, it does.

Re: Nasty 30-year Old AmigaOS Bug Discovered

Posted: Tue Nov 05, 2019 7:28 pm
by intric8
The way you word it, seems like that may have just been a name for the combining of 1.3 with 2.?
Yes, exactly, it's highly confusing and that's how it has been explained to me. Let me boot the machine later tonight and see what I can find.

The 1.4 beta that is floating around out there - I think - is actually different. Which makes things even more confusing.
if you use AExplorer to rip your kickstart
So that's what's kind of wild. If I tell it to boot from floppy, it will ask for my "Superkickstart," and go from there. The Superkickstart has both 1.3 (a slightly janky version) and 2.0.

Re: Nasty 30-year Old AmigaOS Bug Discovered

Posted: Tue Nov 05, 2019 8:29 pm
by intric8
So from what I can tell, the ROMS are 1.4, but since they softboot 1.3 or 2.0, that's all you see reported by Workbench. FWIW my 1.3 Workbench is 34.20, which is I think the first 1.3 version made. No clue why they wouldn't have put 1.3.2 in there at that point. I am fairly certain I can upgrade the Workbench, but I'd still be stuck with the buggy KS (which is fine as I can work around it).

Re: Nasty 30-year Old AmigaOS Bug Discovered

Posted: Tue Nov 05, 2019 8:56 pm
by Shot97
Hmmm... In this case, if all that holds true... Might be best for your particular situation just to replace your ROM with a genuine 1.3 ROM, and then, for the 2.0+ stuff, to use something like what I have on my setup to get into your 2.0+ partition.

At least in your circumstances, as I imagine you're using 2.01 about as much as I am, which is to say, only when something does not work in 1.3, this might be a better solution for everyday Amiga life. It will just default to 1.3, and when you're needing 2.01, and in fact, almost any of them, you can "soft" boot from 1.3 .. and I say softboot, as its a soft reset, but there are a couple ways rom switchers deal with things. How I set mine up, quite painfully, is that ROMs that are capable of doing so, will remap themselves. For me it takes out a 512k partition from my GVP 8mb GVP RAM and remaps it so the Amiga is pointing to the EXACT locations it should be, as if you had the actual ROM in there.

This is simply 99% compatible with the ROM you're using, perhaps 100% when it comes to 2.01+ stuff. Software tended to be "nicer" on the hardware with 2+, thus having a real 1.3 ROM and switching it higher is probably better than having a 2 or 3 ROM and going backward to 1.3 or below, where software often attacked memory more directly.

Still, in my setup this should not be an issue because it remaps the addresses and functions as the real ROM would. It's almost hardware based, not software, just can't be used without software. This method does not work for all ROMs, however... I've gotten it to use the remapping for 1.2, (i assume 1.3 but I don't need that one), 2.01, 3.0, and 3.1, and maybe if I ever get a hold of the Hyperian build, the newest one as well.

Now I can use 1.4 roms, but this is indeed a fully software solution. It seems to work from what little I've used of it, which is only to mess around in the beta 1.4 workbench disks, but may have issues doing other things. I've also used a 1.1 rom with this technique, again not remapping in that instance... Never could get a 1.0 or below to work as of yet though.

Anyway, pain in the butt to setup, but once it is, could not be easier and seems to be super compatible. I'll definitely still give 1.4 a shot in several ways to see if that bug somehow shows up there, but I wonder if it's not necessary 1.4 causing your issue, but the built in software rom switcher, which is not fully compatible with 1.3 - Yours may not be fully remapping the ROM as it should, most software rom switchers do not work like mine does.

Re: Nasty 30-year Old AmigaOS Bug Discovered

Posted: Tue Nov 05, 2019 9:15 pm
by intric8
Might be best for your particular situation just to replace your ROM with a genuine 1.3 ROM
Trust me. I would if I could. But they never made a 1.3-only ROM for the 3000, which uses two chips.

What a friend of mine told me some have done is they install 3.1, then soft-kick 1.3. But frankly for this old girl, I'd rather leave her the way she is. Even though I discovered that one horrible bug, there's really one one key issue holding this early 3000 back. That has to do with the SCSI chain.

I did luck into a 2nd 3000 this year, so I might soup that one up some day with all the whistles and bells. But honestly I love this old original one the way she is. If I can ever figure out a way around the SCSI problem (which I don't think I've ever explained anywhere... I should do that) this machine would be done. I don't think I'd ever want any upgrades for it. Maaaaybe a wacky graphics card some day, or Ethernet, but I'm not dying to do that any time soon. External USB might be nice, too, but again I'm reaching for things to do there.

Re: Nasty 30-year Old AmigaOS Bug Discovered

Posted: Tue Nov 05, 2019 9:41 pm
by Shot97
I've long been working on a guide for my ROM switching technique. I mean I did the introduction and basics of showing it off on video... I booted up several of the kickstarts to show it working and telling people why they might want to do it. But as with most of the retro stuff this year, have not felt inspired to finish it up. And I know once I do show it off in this way, I'm going to get someone else using my guide to make their own which will get far more attention... These are semi larger people I'm thinking of, who have done it in the past.

I respect the desire to keep it how you have it, cause at least then it's all your technique, even if you're getting help digging things up, it's you putting it all together, much the same way I've had to put my rom switching setup together all myself. So even if I get minor help here and there, it's largely me pouring through various software packages instruction files, trying out a ton of rom revisions, tweaking names, pointing things to the right place.... Experimenting, failing, fixing, getting to work. This is all stuff that no one place is going to help you with, thus there's a need for a guide.

And if we didn't live in a world where I knew certain people would use my guide to make their own, I'd not only have already done the guide, hell I'd give people my exact program, my exact files, I'd give them the ROMs.... That last part is not legal, but that's the world I'd like to live in, and something I'd still do if I know and trust the person. But at the very least I'm going to make people work, as I had to, in order to pull it off, but they can do it.

Anyway, if and when I do get it all together, you might still want to fool around using my technique, just to have some fun and pinpoint issues in your setup, even if you don't want to change things. The other reason I've taken so long is just that same reason, I don't want to change things... I'm happy in 1.3, and only wanted to do the rom switching stuff just to show people who think otherwise that you do not need the a physical ROM switcher. I'm pretty sure it's 99+% compatible with the most used roms, it's an equally good way for people with newer machines to get real old school compatibility, and for older machines to get the newer stuff. But I need more cool things to do in 2.01, because all my fun is still had in 1.3! Meh, something I should get to doing someday though. I think it would actually be of use for a lot of the true Amiga users. If you truly have tons of need for multiple roms, a rom switcher with an actual toggle is the best thing, but that's few people. But you don't need a 1200 for the newer stuff, you don't need a 500 or the older stuff, there are solutions, and if you get the right stuff, almost as good as a real rom switcher.

Re: Nasty 30-year Old AmigaOS Bug Discovered

Posted: Tue Nov 05, 2019 9:51 pm
by Shot97
Thanks for sharing the oddity about the 3000 never having a true 1.3 ROM only rom released for it. That's something I probably had stored in the back of my mind somewhere, but one of those things that's hard to make sense of so you never register it fully. How does it know what machine it's on? Is it like a region lock, sorry, you're capable but screw off! lol.

I think, for my 3.1 ROM setup, I did have to use the 500 specific ROM to get that one to remap fully. But I have been told by someone who once used the program I'm using that he had a 4000 going back to 1.3 just fine. So maybe some part of it might be a fun weekend project to mess with.

Re: Nasty 30-year Old AmigaOS Bug Discovered

Posted: Wed Nov 06, 2019 11:43 am
by A10001986
If memory serves correctly,

1) the ROM-Tower wasn't specific to "Kickstart 1.4", but to the actual ROM chip type used in some instances. The tower just re-routes some pins that were different to the designated ROM chip type. I have a machine with a Rev 7.3 board, with the ROM-Tower, but with 2.04-ROMs. There were machines without that tower that ran "1.4". Typical for Commodore, they used what was cheap and available at any given point in time.

2) "Kickstart 1.4" is no real kickstart, but a mere boot-loader that loads a kickstart image found in DEVS: into RAM, and uses the MMU to "relocate" it to f80000 where it belongs. It only works on the 68030, not anything later.

3) the 3000 was never supposed to run 1.3, since that version wasn't really designed for anything but the 68000. I don't find it surprising that some 1.3 stuff fails on the 68030. Even less so when it is about floppy disk handling, as this is very time-critical. One delay loop that isn't properly timed, and all goes down.

Edit: Phew, brain still ok, memory check successful. See here.