Locations with undefined reads in the $C000-$C07F range tend to return the last key pressed.
| Address | R/W | Use |
|---|---|---|
| $C028 | R/W | Switch to main firmware (undocumented). |
| $C029 | R/W | Switch to alt firmware bank (undocumented). |
| $C02B | R/W | Bits in table below.* |
| $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 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 |
| 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.
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.