[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Is it possible...



<aiiadict@gmail.com> wrote:

> Simon D. Williams wrote:
> >How does one go about doing a ROM dump?
> 
> Boot a disk operating system,
> 
> get to the ] prompt
> 
> type BSAVE DUMP1, A$0000,L 8192
> type BSAVE DUMP2, A$2000,L 8192
> type BSAVE DUMP3, A$4000,L 8192
> type BSAVE DUMP4, A$6000,L 8192
> type BSAVE DUMP5, A$8000,L 8192
> type BSAVE DUMP6, A$A000,L 8192
> type BSAVE DUMP7, A$C800,L 8192
> type BSAVE DUMP8, A$E000,L 8192
> 
> That will copy the whole memory map to disk...
> 
> The ROM is probably going to be in DUMP7 and 8

That's not going to work very well.

For starters, you've missed all of the ROM in the $C100-$C7FF area.

For a slot-based Apple II, that area (plus $C800-$CFFF) contains
firmware from the cards in the slots.

In the IIe, there is also internal firmware in $C100-$CFFF.  The portion
from $C300-$C3FF and $C800-$CFFF behaves like an 80-column card in slot
3, assuming slot 3 is set to operate with internal firmware. (You can
put a card in slot 3, which will be used instead of the built-in
firmware if ProDOS likes the look of it, but this is extremely rare
because so much software expects the built-in IIe 80-column firmware.)

The portion from $C100-$C2FF and $C400-$C7FF is bank-switched with the
firmware from cards in slots 1, 2, 4, 5, 6 and 7.

The IIc has no slots, so it always has internal firmware in these areas.
The original IIc firmware is similar to a IIe with all slots occupied.
The first revision of the IIc firwmare ("UniDisk") doubled its size, and
there is a second complete bank of firmware from $C100-$FFFF, which is
bank-switched as a single unit, giving almost 32K in total.

The IIc+ maintains this two bank arrangement.

In order to save an image of the firmware in a IIc or IIc+, you would
need to write an assembly language program which copied the second bank
of firmware into RAM, then saved all of that copy together with the
$C100-$FFFF area of the main bank.

The IIgs is similar to a IIe if you look at the firmware in bank 0,
except that each slot can be individual switched between internal and
slot-based firwmare. If you look at the firmware in its native
environment (banks $FE and $FF for a ROM 00 or 01, $FC through $FF for
ROM 3) then there is no complex bank switching and you just need to save
an image of either 128K or 256K from other banks (also tricky in 8-bit
software, but it can be done in 32K chunks with a series of monitor
memory move and BSAVE commands).

-- 
David Empson
dempson@actrix.gen.nz