Using peripheral connector I/O SELECT or DEVICE SELECT

3 replies [Last post]
Joined: Jul 16 2006
Posts: 81

Greetings fellow nerds!

I am working on an FPGA-based peripheral card for Apple II (currently tested in a IIe). This board in its current state works as expected but I wanted to add some I/O control to turn on and off features, so I decided that the DEVICE SELECT signal was the best choice. However it seems like I cannot activate the DEVICE SELECT signal!

As I understand, the DEVICE SELECT signal is activated when referencing an address between C0n0 and C0nF, where n is the slot number + 8. My card is in slot 3, so that would mean address C0B0 to C0BF. I tried jumping into monitor (CALL -151) and then referencing C0B0, C0A0, C0C0, etc. Nothing seems to activate the DEVICE SELECT signal. I even modified the FPGA firmware to react to any falling edge on the DEVICE SELECT signal (i.e. regardless of the Apple clock signal), but that doesn't work either. Why?!

Also noted that the I/O SELECT signal has a similar behavior. The disk drive card seems to use both signals:

Any reason why? What is the difference?


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
speedyG's picture
Joined: Nov 16 2011
Posts: 2421
Re: Using peripheral connector I/O SELECT or DEVICE SELECT

Hello Jacksel,
i am to lazy to explain .... take a view to the Applesoft program in my page:

at the discussed card i switch between the modes by using the slotadressing of the
I/Oselect and determining the slot and then adding a codebyte to switch the modes of the card. To zou onle the math and peek commands with the basedefinition of the slots will be interesting...
i guess that will solve your problem....


In early days I had a lot of money but no time - now I have no money but a lot of time....
the second part includes less friends but a lot more joy on life....

resman's picture
Joined: Feb 9 2006
Posts: 214
Re: Using peripheral connector I/O SELECT or DEVICE SELECT


you are understanding the /DEVICE_SELECT line correctly - it is pulled low for access to the 16 byte slot specific address space between C0n0 and C0nF ( n = slot + 8 ). It is already qualified by the 6502 clock, so it, R/W, and A0..A3 should be all you need for decode. Double check you have the right pin on the bus interface. The /IO_SELECT goes low for the 256 slot specific address space CsXX (s = slot). That address space is usually used by a small ROM, but can also be used for I/O on ROMless designs (the signal names are confusing in this regard). Note that on a IIe, /IO_SELECT is inhibited on slot 3 if an 80 column card is in the AUX slot - use a different slot. Hope that gets you going,


Joined: Jul 16 2006
Posts: 81
Re: Using peripheral connector I/O SELECT or DEVICE SELECT

Hi Dave
Thanks for the input. Actually, I was using slot 3 initially, and didn't get DEVICE SELECT nor IO SELECT working. I then realized that slot 3 was different from the other slots and moved to slot 4, and eventually I was able to capture the IO SELECT status properly. I am running the FPGA at 50 MHz and have a process for capturing the bus signal values at different points in each Apple II bus cycle. I had to adjust the timing a little to make it work. There were probably some coding bugs involved too.

My next project should probably be an Apple II bus logic analyzer... Wink