[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: monitor on IIgs
"Bill Garber" <willy46pa@comcast.net> writes:
>Yes, for example, I placed a superdrive controller in slot 5 of my IIe,
>then attached the 800k drive. Leaving the 5.25 empty of disk, it sat
>there waiting for one, never scanning down to slot 5 for the 800k.
>Why? Whine to me please. ;-)
This is standard behavior for an Apple ][ ][+ or //e. The //c //c+ and
//gs are smarter. Why is this so? It is the Disk ][ controller card and
the measly 256 bytes of PROM it has for the boot code (plus the fact
that when it was written 3.5" drives were not even a gleam in the eye
of their designers).
The //c //c+ and //gs have newer code (and the ability to use code space
outside the range $C600..$C6FF for this task) and detect the absence of
a 5.25" diskette and scan down to the next lower slot (as do cards like
Apple SCSI card or Apple 1MB RAMdisk card).
Unlike the MFM <-> GCR problem, this problem can (and has been) solved
in software (well, firmware anyway). I have a //e in which I have installed
a modified set of CD & EF EPROMs. I made a small change to the code near
monitor label SLOOP ($FABA) which originally starts at slot 7 and scans
down to slot 1. My //e starts at slot 1 and scans up to slot 7. This was
done so that I could use my SCSI card in slot 4 (where Pascal 1.3 could
find it) and leave the Disk ][ controller in slot 6.
Here is the original code:
LDA #$C8
STX LOC0 ; X known to be zero at this point
STA LOC1
SLOOP LDY #7
DEC LOC1
LDA LOC1
CMP #$C0
BEQ FIXSEV ; no bootable disk controllers
STA MSLOT
NXTBYT LDA (LOC0),Y
CMP DISKID-1,Y
BNE SLOOP ; try next slot
DEY
DEY
BPL NXTBYT
JMP (LOC0) ; go boot
As you can see, it is up to the disk controller firmware to return
to SLOOP if it cannot boot and the Disk ][ PROM doesn't.
My mods were to make the code look like:
LDA #$C0 <== start at slot 1
STX LOC0 ; X known to be zero at this point
STA LOC1
SLOOP LDY #7
INC LOC1 <== move up the slots
LDA LOC1
CMP #$C8 <== stop at slot 7
BEQ FIXSEV ; no bootable disk controllers
STA MSLOT
NXTBYT LDA (LOC0),Y
CMP DISKID-1,Y
BNE SLOOP ; try next slot
DEY
DEY
BPL NXTBYT
JMP (LOC0) ; go boot
You also have to fix the ROM checksum byte otherwise the
self test fails.
--
David Wilson School of IT & CS, Uni of Wollongong, Australia