2018-02-09 16:04:15 UTC
I would like to see if I understand some concepts correctly so please pardon my ignorance in advance :
DeviceSelect - when an access occurs to C0XN (where X is the slot number and N is anything) the MMU sets the DeviceSelect signal for that particular slot which the card detects, at which point custom logic on the card will read some of the lower address lines to decode N and triggers whatever internal circuitry is designed to handle command N.
Is this how it works? If so, when I write a value to one of these DeviceSelect addresses, is the card able to decode the value on the databus as well? Say I create a serial card and want to send a byte, if I write $66 to one of these addresses and the card interprets the address as a SendChar command, will it be able to decode $66 from the databus and do it’s thing?
IOSelect : when an access occurs to somewhere between CX00-CXFF (where X is the slot number) then the peripheral cards firmware will be mapped to this 256 byte range.
Is this right? It so, does this mean that if I do a JSR C100 then as soon as C100 is placed on the address bus the mapping will occur just in time for the 65X02 to be able to execute the firmware located at that address? Also, this must be tied to the PC I would imagine, because if the instruction at C100 does a LDA $FFFF or any absolute address command then at some point $FFFF will appear on the address bus and the IOSelect signal will no longer be active and the firmware will be pulled out from under its feet... unless the firmware stays until an IOSelect from another slot occurs? I’m confused here lol!