TMS9901 programmable systems interface pinout

DIP-40. Keyboard scan, joysticks, cassette, interrupts and interval timer, over the CRU serial bus.

The PSI talks to the 9900 over the CRU (pins 2-4, enable on pin 5); S0-S4 (pins 39, 36, 35, 25, 24) are inputs that take the CRU bit address from A10-A14, they are not keyboard drivers. On the TI, P2-P4 select a keyboard column or joystick through a decoder, and the keys and joystick switches come back on the interrupt inputs INT3-INT10. P5 is ALPHA LOCK, P6 and P7 the cassette motors, P8 audio gate, P9 cassette out, P11 cassette in. INT1 is the I/O port interrupt and INT2 the VDP frame interrupt. A dead key row, no cassette or stuck interrupts point here.

Open the interactive TMS9901 pinout

Pins

PinNameTypeSignal
1/RST1ctrlPower-up reset, Schmitt-trigger input. Low clears the interrupt masks and makes every I/O pin an input.
2CRUOUTioCRU data from the CPU (9900 CRUOUT), sampled on CRUCLK when /CE is low.
3CRUCLKioCRU clock from the CPU: valid data on CRUOUT.
4CRUINioCRU data to the CPU (9900 CRUIN). High impedance when /CE is high.
5/CEctrlChip enable for CRU transfers. Does not affect the interrupt section.
6/INT6kbdInterrupt input 6. On the TI: keyboard line 0 9 8 7 6 and joystick DOWN.
7/INT5kbdInterrupt input 5. On the TI: keyboard line P O I U Y ENTER and joystick RIGHT.
8/INT4kbdInterrupt input 4. On the TI: keyboard line ; L K J H SPACE and joystick LEFT.
9/INT3kbdInterrupt input 3. On the TI: keyboard line = . , M N / and joystick FIRE.
10PHIclockSystem clock: TTL phase 3 in a 9900 system. Drives the interval timer.
11/INTREQctrlInterrupt request to the 9900 /INTREQ. Stays low until every enabled interrupt input is removed.
12IC3ctrlInterrupt code bit 3 (LSB). Not wired on the TI-99/4A: the console ties the 9900 IC0-IC3 inputs to fixed level 1 (pin 33 to +5 V, pins 34-36 to ground) and routes only INTREQ (pin 11).
13IC2ctrlInterrupt code bit 2. Not wired on the TI-99/4A (see pin 12).
14IC1ctrlInterrupt code bit 1. Not wired on the TI-99/4A (see pin 12).
15IC0ctrlInterrupt code bit 0 (MSB). Not wired on the TI-99/4A (see pin 12).
16Vssground0 V.
17/INT1ctrlInterrupt input 1, the highest priority. On the TI: EXT INT from I/O port pin 4.
18/INT2ctrlInterrupt input 2. On the TI: the VDP vertical sync interrupt (TMS9918A pin 16).
19P6ioI/O port 6. On the TI: cassette 1 motor control (CS1).
20P5ioI/O port 5. On the TI: ALPHA LOCK key.
21P4ioI/O port 4. On the TI: keyboard select bit 0 (MSB).
22P3ioI/O port 3. On the TI: keyboard select bit 1.
23/INT15/P7ioInterrupt 15 or I/O port 7. On the TI: cassette 2 motor control (CS2).
24S4addrCRU bit select, LSB of the 5-bit S0-S4 code. On the TI: from A14.
25S3addrCRU bit select. On the TI: from A13.
26P2ioI/O port 2. On the TI: keyboard select bit 2 (LSB).
27/INT14/P8ioInterrupt 14 or I/O port 8. On the TI: audio gate (cassette sound to the TV).
28/INT13/P9ioInterrupt 13 or I/O port 9. On the TI: cassette data out (MAG OUT).
29/INT12/P10ioInterrupt 12 or I/O port 10. On the TI: reserved.
30/INT11/P11ioInterrupt 11 or I/O port 11. On the TI: cassette data in (MAG IN).
31/INT10/P12kbdInterrupt 10 or I/O port 12. On the TI: keyboard line Z X C V B.
32/INT9/P13kbdInterrupt 9 or I/O port 13. On the TI: keyboard line Q W E R T.
33/INT8/P14kbdInterrupt 8 or I/O port 14. On the TI: keyboard line A S D F G SHIFT.
34/INT7/P15kbdInterrupt 7 or I/O port 15. On the TI: keyboard line 1 2 3 4 5 and joystick UP.
35S2addrCRU bit select. On the TI: from A12.
36S1addrCRU bit select. On the TI: from A11.
37P1ioI/O port 1. Not used on the TI.
38P0ioI/O port 0. Not used on the TI.
39S0addrCRU bit select, MSB of the 5-bit code. On the TI: from A10.
40Vccpower+5 V supply.

Fitted in

Sources