[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Rom for cards in slots, how to access it?
- Subject: Re: Rom for cards in slots, how to access it?
- From: David Wilson <david@uow.edu.au>
- Date: 10 Sep 2004 00:27:53 +1000
- Newsgroups: comp.sys.apple2
- Organization: University of Wollongong
- References: <clP%c.31267$Np2.15814@bignews4.bellsouth.net>
- User-agent: nn/6.6.5
- Xref: g2news1.google.com comp.sys.apple2:4098
"Jayson Smith" <nospamratguyspambegone@nospamplease.bellsouth.ihatespam.net> writes:
>I understand that a 256-byte piece of any card's rom is at addresses
>cX00-cXff where X is the slot number. But, if I understand correctly, each
>card also can have a chunk of rom from c800-cfff. How's this done?
If I recall the article in Open-Apple magazine, "It is all done with mirrors".
The way it is done is that each card that uses the C800-CFFF space is required
to have a flip-flop which is used to enable/disable the cards use of this
region. All cards clear the flip flop when address $CFFF is read or written.
The cards set their flip flop when Cx00-CxFF is read or written. This
means that before the code in the IOSEL (Cnxx) region calls the code in
the IOSTB (C800-CFFF) region it typically does a BIT $CFFF first (disabling
all slots use of the IOSTB region [including its own] but the following
instruction fetch re-enables it for this card only.
To make life more complicated, some cards need more than 2KB so they bank
select the IOSTB region (the Apple SCSI card has 32KB of ROM so uses a 4 bit
bank select to select one of 16 2KB regions.
>How do you access this rom data, E.G. to snarf rom images and whatnot?
]CALL-151
*CFFF
CFFF- 00
*1000<Cn00.CnFFM copy 256 byte IOSEL region and enable slot n IOSTB
*2000<C800.CFFFM copy 2048 byte IOSTB region and disable it
Note don't do this with 80 cols enabled or you will probably get
the 80 col ROM.
--
David Wilson School of IT & CS, Uni of Wollongong, Australia