This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
mg_notes:iie_card:io_addresses [2017/07/18 01:09] M.G. annotate undocumented |
mg_notes:iie_card:io_addresses [2018/02/08 12:27] (current) M.G. [$C02B Bits] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== LC //e Card - I/O Addresses ====== | ====== LC //e Card - I/O Addresses ====== | ||
+ | |||
+ | ===== $C000-$C07F ===== | ||
+ | |||
+ | Locations with undefined reads in the $C000-$C07F range tend to return the last key pressed. | ||
^ Address ^ R/W ^ Use ^ | ^ Address ^ R/W ^ Use ^ | ||
- | | $C028 | W | Switch to main firmware (undocumented). | | + | | $C028 | R/W | Switch to main firmware (undocumented). | |
| $C029 | R/W | Switch to alt firmware bank (undocumented). | | | $C029 | R/W | Switch to alt firmware bank (undocumented). | | ||
- | | $C02B | R/W | Bit 2 = set CPU speed (1=fast).* \\ Bit 3 = Set Alt FW Bank D1/D2 (undocumented). | | + | | $C02B | R/W | Bits in table below.* | |
| $C05C | R | Bit 2 = speed selected in option panel (1=fast).* | | | $C05C | R | Bit 2 = speed selected in option panel (1=fast).* | | ||
+ | | $C072 | W | The firmware (Int CX ROM and PFI) write either $5A or $00 here.%%**%% | | ||
%%*%% See [[http://www.1000bit.it/support/manuali/apple/technotes/aiie/tn.aiie.10.html|TN.AIIE.10]]. | %%*%% See [[http://www.1000bit.it/support/manuali/apple/technotes/aiie/tn.aiie.10.html|TN.AIIE.10]]. | ||
+ | |||
+ | %%**%% Writes to $C072: | ||
+ | |||
+ | ^ Who ^ Where ^ Value ^ | ||
+ | | INT CX | $C4AB | $00 | | ||
+ | | INT CX | $C579 | $5A | | ||
+ | | PFI 0 | $D445 | $5A | | ||
+ | | PFI 0 | $D470 | $00 | | ||
+ | | PFI 0 | $F5EF | $00 | | ||
+ | | PFI 0 | $F60B | $5A | | ||
+ | | PFI 1 | $D4BC | $5A | | ||
+ | | PFI 1 | $D519 | $00 | | ||
+ | | PFI 1 | $F178 | $5A | | ||
+ | | PFI 1 | $F205 | $00 | | ||
+ | |||
+ | |||
+ | |||
+ | ==== $C02B Bits ==== | ||
+ | |||
+ | ^ Bit ^ Use ^ | ||
+ | | 7 | Set in IRQINTCX | | ||
+ | | 6 | Cleared at $C41C in Int. CX ROM, set at $C573 | | ||
+ | | 5 | Enable writes to some areas of the $C8xx space? | | ||
+ | | 4 | Enable a second aux RAM bank? | | ||
+ | | 3 | Set Alt FW Bank, 0=D1, 1=D2. | | ||
+ | | 2 | Set CPU speed (1=fast). Documented. | | ||
+ | | 1 | 3.5%%"%% signal: HDSEL | | ||
+ | | 0 | 3.5%%"%% signal: /3.5DISK | | ||
+ | |||
+ | The PFI code always sets bits 4 and 5 after storing $5A into $C072, and always clears bits 4 and 5 after storing a zero into $C072. This appears to enable writing to $C8-space and to a second aux bank. | ||
+ | |||
+ | |||
+ | ===== Slots ===== | ||
+ | |||
+ | ==== Clock Card ==== | ||
+ | |||
+ | The clock card has the following in it's I/O locations most times: | ||
+ | |||
+ | ^ Offset ^ Dir ^ Use ^ | ||
+ | | 00 | R/W | Firmware writes here, perhaps as a control register, the value written here is readable | | ||
+ | | 01 | R | Reading this location continuously returns the date and time in the ThunderClock format | | ||
+ | | 02 | ? | Unknown (always $FF?) | | ||
+ | | 03 | R | The firmware uses this location | | ||
+ | | 04-07 | R | Some kind of counter, seems to always be 7 more than the 08-0E value | | ||
+ | | 07 | R | A different counter value | | ||
+ | | 08-0E | R | Yet another counter value | | ||
+ | | 0F | R | And we have another counter | | ||
+ | |||
+ | Changing the date/time in the Macintosh control panel while the %%//%%e is running causes the 01 offset value to return continuous 8D (CR). The firmware is able to fix this, but I haven't figured out how, yet. | ||
+ | |||
+ | The characters out of the 01 offset are msb off, except for the CR value. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ |