In article , rdoerr@bizserve.com says... > With the help of some others it appears that some of the trouble is > that the SuperSerial card uses some ROM space at $c800 which from what > I have been reading is bank switched and may also share that space > with other I/O cards. What other cards would use this area? Does > this sound correct or might I be looking in the wrong direction? > Robert, I am not sure I have the just of your question. But keep in mind that many different cards use that space, including, for example, my CFFA card. The thing to keep in mind is that each card will have its $C800 to $CFFE address space enabled when any access to $Cn00 to $CnFF (PR#n code area) occurs, where n=slot number. That "Aux ROM" space will then stay active until either an access to $CFFF occurs or a system reset. Many card will actually decode the entire memory range, CF00 to CFFF as the Aux ROM reset area, to simplify the logic. Often you will see the instruction: bit $CFFF This disables the Aux ROM from the memory map. When you do a Pr#n the system jumps to $Cn00 and begin execution. The very first read is from Cn00, thereby enabling the Aux ROM space at $C800 if the card has one. Other example of cards with Aux ROM include: SSC, most 80 columnc cards, most HD card including CFFA, etc. I will leave it to others to speak about the emulator side of this question... Rich Dreher "Robert L. Doerr" wrote in message news:f33567e7.0405200601.6ce54ec9@posting.google.com... > Hello, > > I appreciate the explainations. All this time I have used the Apple > and I never knew that many of the cards used bank switching in that > way. These newsgroups are great! I learned something new. > > From what I understand (in the example of the SSC) is that the actual > resources of the card like the Serial UART would be memory mapped to > the address range for the slot it is in. What I am still unclear about > is that once that is accessed would that enable it's ROM starting at > address $c800 or would a portion of it also be mapped or reside in the > memory reserved for the slot? Until I can see the schematics or find > those specs I guess it could be either way. I am looking forward to > finding out for sure. > > Now, if some of the emulator experts care to jump in perhaps they can > suggest some ways the additional ROM of the SuperSerial card could be > added to an emulator so it would then be compatible with Apple programs > that require it. > > Thanks again for the help. > > Best Regards, > > Robert This is generalized as certain slots have certain restrictions. Each slot in the apple //e has the exclusive use of 256 bytes of rom address, 8 bytes of ram and 16 I/O lines. Cards that wish to use the 2K expansion rom space $C800 - $CFFF must follow the rules. They must include circuitry such that a when the address lines for $CFFF becomes active they unlatch their expansion rom from the address space. Most cards use a simple nand gate arrangement so when $CFxx is active they unlatch and thus they loose the last 255 bytes of expansion rom. When a card whishes to use its expansion rom it does a read or write to $CFFF. This causes any card using expansion rom to unlatch from the address space (including its own). When the card next address its own slot its expansion rom will be available from $C800-$CFFE. Or with the simple nand gate from $C800- $CEFF. Don Bruder wrote: >Here's where I get foggy, working from memories of long ago "intense" >Apple II hacking, but I believe this is correct: >"Main" $C800 gets switched out, and the corresponding ROM at $Cx00 gets >switched in anytime a $Cxyy (x = Slot# * 16, yy = anything) address >shows up on the address lines. "Main" $C800 gets switched back in when >$CFFF hits the adress lines. Actually, only machines later than the ][+ have $C1xx..$CFFF space on the main board, and it is controlled by a different softswitch ($C007 to switch it in and $C006 to switch it out). The proper use of $C8xx..$CFFF space is slightly different than has been suggested. Any ROM space which a card may have is enabled (on the card itself) by an access to the $Csxx slot space, but then code in the slot space must _disable_ the ROM space by making an access to $CFFF, which will switch of _all_ cards' expansion ROM (again, using the cards' own logic). Fetching of the next instruction in sequence from the slot space will then re-enable "this" card's expansion ROM, with the guarantee that it is the only card whose ROM is enabled--assuming that all the other cards play by the rules. It's actually a very simple, elegant form of ROM bank-switching, which enables much more interesting firmware than just using the 256-byte slot space. Wozniak and Baum were way ahead of the rest of the planet on "Plug 'n' Play". BTW, a card can implement its own internal bank switching to re-use the $C8xx..$CFFF space for additional ROM or RAM. The Vulcan controller maps both on-card ROM and RAM into this 2K space under control of its firmware. -michael Check out amazing quality sound for 8-bit Apples on my Home page: http://members.aol.com/MJMahon/