Welcome, Guest. Please login or register.

Author Topic: 3.1 Kickstart 40.70 vs 40.68?  (Read 15229 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline olsen

Re: 3.1 Kickstart 40.70 vs 40.68?
« on: September 27, 2010, 08:52:51 AM »
Quote from: Ratte;581465
40.70 exists for A1200/3000/4000D&T.
The difference is only the SCSI.DEVICE.
When they started to chip the 3.1 ROMs they got feedback about deadlooks from HDDs.
The lastminute change .. they shiped ROMs with a older scsi.device which seems to be more stable.
V40.68 ....


Exactly. The same sort of problems also existed for the A600/A500/A2000 ROM version. The scsi.device V40 crashed during the interrupt handler initialization, which is why the A600HD had scsi.device V39 in ROM.

As far as I know the final ROM changes to V40, through 40.70, all came about because the unified SCSI driver required further testing, but as Commodore was approaching its final days, time and resources were getting scarce.

It may have been a risky to build this unified SCSI driver in the first place. Because of the range of hardware it supported (A590/A2091/CDTV SCSI, A3000 SCSI, A600/A4000/A1200/CD32 IDE, A4000T/A4091 SCSI), the internal dispatcher code had to work very differently, too. The SCSI variant required a handler Task and an interrupt handler, and the IDE variant needed just an interrupt handler, but a different one from the SCSI variant.

What broke the V40 scsi.device for the A600/A500/A2000 was that the driver initialization code passed an uninitialized register, which would have contained a Task pointer in the SCSI variant, to the respective setup code. Out of curiousity, I tracked down and fixed this bug, and the resulting driver worked fine.
 

Offline olsen

Re: 3.1 Kickstart 40.70 vs 40.68?
« Reply #1 on: September 27, 2010, 03:15:21 PM »
Quote from: Piru;581475
Ouch.

Still, not as bad as breaking the whole AUTOCONFIG(TM) in KS 1.2 and later selling KS 1.3 separately as an upgrade to allow booting off HDD. This problem was trivial to fix as well (make sure that correct a6 is used for AllocMem call), and it made KS 1.2 support AUTOCONFIG(TM) just fine.

If I remember correctly, autoconfig worked fine as long as your PIC didn't use a ROM. Memory expansions and I/O cards such as the A2065 worked under Kickstart 1.2, and even auto-booting hard disk as long as you set a jumper to disable the ROM.

Back in the late 1980'ies I worked on a hard disk driver for an A590-like expansion. I managed to barely get auto-booting to work through one major ugly hack (thank god the original FFS was basically one position-independent section of code). But no matter what, you couldn't attach the hardware to an A500 with Kickstart 1.2 installed unless you flipped a switch at the back of the device which disabled the ROM. If you left the ROM enabled, the A500 would crash early during system startup.

I think Ralph Babel first described the culprit in his English version of the Amiga Guru Book: the Kickstart 1.2 ROM decoding code had a LINKEXE macro invocation in place of the correct CALLSYS. That bug took more than a year to find & fix, and it was part of the last set of changes made to expansion.library V33 in May 1986.