Frank Townsend wrote: >Michael: > > >Thanks for your advice! > > >The SVA card is in Slot 7, and so far, a C700L lists what looks like valid >assembler code. > >So I tried to save this to disk with the following (which I'm not quite sure >is correct). > >Assuming that a 2708 EPROM contains 1024 bytes: > >CALL-151 >C007:0 >1100C006:0 >BSAVE ROM,A$1100,L$1500 > >I modeled this on a code snippet used to copy a IIe ROM, and admit I'm not >quite sure why C007 and C006 are zeroed. > >Does this look right? There is a problem, and it is with exactly what you were wondering about. Contrary to what the Apple //e Reference Manual says, as reported by Jim Sather in "Understanding the Apple //e", the softswitch at C006,C007 turns slot ROMs _on_ after a write to C006, and turns internal //e ROM in the slot space on after a write to C007. So the code you used was correct for capturing the internal //e ROM, but doesn't get the slot ROM. For that, you need to reverse the two addresses, writing first to C006, then, after saving the ROM, writing to C007. Another problem you will need to deal with is that only the first 256 bytes of the ROM can be captured in this way--from C700.C7FF, and the remaining 768 bytes will not be visible unless the slot 7 ROM has been switched into the C800.CFFF space. Typically, a card will enable its ROM in the C800.CFFF space when a DEVICE SELECT address is referenced--that is, an address in the C0sX space, where s = slot + 8. For slot 7, the "0" DEVICE SELECT address is C0F0. Generally a read is sufficient, and harmless (in terms of changing the state of the device). After this read, the entire slot ROM, in this case 1KB, is mapped into C800.CBFF, and can be moved to RAM before writing it to disk. So, the sequence that should capture it is: CALL-151 C006:0 C0F0 1800Typically, a card will enable its ROM in the C800.CFFF space when >a DEVICE SELECT address is referenced--that is, an address in the >C0sX space, where s = slot + 8. For slot 7, the "0" DEVICE SELECT >address is C0F0. Generally a read is sufficient, and harmless (in terms >of changing the state of the device). That is actually atypical. Most cards enable the IOSTB space (C800..CFFE) when they receive an IOSEL access (CnXX). Furthermore, you have to turn off any other cards access by touching address CFFF. I would use: ]CALL -151 *CFFF turn off all cards IOSTB space *1000