| Bits | Description |
|---|---|
| 7 | 1 to enable i/o mode |
| 6 | Reserved, must be 0 |
| 5:4 | I/O Mode 00 = bit bang 01 = clock 10 = uart on left joystick port 11 = uart on right joystick port |
| 3:1 | Reserved, must be 0 |
| 0 | Parameter bit bang : copied to pin 7 clock : 0 = hold high when clock becomes high, 1 = run * uart : 0 = redirect esp uart0 to joystick, 1 = redirect pi uart1 to joystick (Tx out on pin 7, Rx in from pin 9, CTS_n in from pin 6 **) |
* CTC channel 3 is currently used to drive pin 7 in clock mode. Freq = Fctc3 / 2.
** CTS_n is only active if the seleced uart is in hw flow control mode.
The state of output pin 7 is stored internally in a register and is retained across changing modes and while i/o mode is disabled. While in i/o mode, keyboard joystick types (Sinclair, Cursor, etc) produce no readings but the current state of pins can still be read via the Kempston ports. When leaving i/o mode, joystick operation resumes after ~64 scan lines have passed.