Are there any existing best practices for expansion card address space usage, and if so, what are they?
The reason I ask is, I'm considering a card that would take 16 bytes of address space. The Apple II gave each slot the DEVSEL space ($C0nx, where n is the slot number), the IOSEL space ($Cnxx), and a bankswitched ROM area ($C800-CFFF), but the Apple-1 has no such space. Granted, Woz probably would've just slapped the card on S and called it a day - that's quite evident based on the PIA having been slapped on Z with no other logic, despite only using 4 bytes. But, I'd rather be more economical with address space than that.
We know the lines that are run to the slots for chip select are the R, S, and T lines (which are mapped to $C, $B, and $A respectively). The S line is unused, but the T line is taken (completely) by the CFFA1, and the R line is taken (partially, and the address decode logic here is smart, so $C2-CF are free) by the ACI.
I'm thinking there's a couple ways to go here, both of them using the $C2-CF space in 512-byte chunks (following the example of the ACI), still leaving S unused for something else (or adding it to this scheme as well, but having a line dedicated to 4 kiB for personal experiments would also be handy).
First option would be, hardcode certain cards to use certain addresses. This would make software easier to write, with the major downside that the scheme breaks down once there's eight cards, including the ACI. And, more than one of a card is right out.
Second option would be a 4 jumper block on each $C card past the ACI, to determine what addresses it responds to. Means that the user has to do more configuration, but given that most users who would actually stick third-party hardware in probably soldered their Apple-1s together, that's a reasonable burden. And, code has to adapt to where a card is, but that's the case on the Apple II, too.
Third option would be to find three unused pins on the bus, and make a new slot expander that repurposes them for Apple II-style chip select. Dangerous because that means it'll break compatibility with things for sure (yes, there may only be one 6800-powered clone out there, but the bus was meant to handle it), but easy to use.