Commodore C64 RS232 User Port

Commodore C64/C128 RS-232 interface via the 24-pin user port edge connector, software bit-banged through CIA #2 at TTL levels with inverted RXD/TXD.

24 PIN EDGE DZM 12 DREH Male Connector 24 PIN EDGE DZM 12 DREH Male Connector at the computer.

The Commodore C64 (and C128) does not have a dedicated hardware RS-232 port. Instead, RS-232 communication is achieved through the machine’s 24-pin edge connector user port, with all timing and framing handled in software by bit-banging CIA #2’s Port B lines. The signals operate at TTL voltage levels rather than true RS-232 levels (±12 V), and the RXD and TXD lines are logically inverted relative to standard RS-232 convention. The Commodore 64 Programmer’s Reference Guide (1983) documents this arrangement in Chapter 6 and Appendix I.

PinNameRS232Description
AGNDGNDProtective Ground
B+CFLAG2+PB0RxDReceive Data (Must be applied to both pins!)
DPB1RTSReady To Send
EPB2DTRData Terminal Ready
FPB3RIRing Indicator
HPB4DCDData Carrier Detect
KPB6CTSClear To Send
LPB7DSRData Set Ready
MPA2TxDTransmit Data
NGNDGNDSignal Ground

Notes

  • The connector is a 24-pin edge connector on the rear of the C64/C128; only the pins listed above are used for RS-232 — other user port pins carry +5 V, +9 V AC, RESET, and additional CIA signals.
  • This is a software-emulated (bit-banged) interface; baud rate and framing are controlled entirely by software timing loops, not dedicated UART hardware.
  • Signal levels are TTL (approximately 0 V / 5 V), not true RS-232 (±12 V). External level-converter circuitry is required when connecting to genuine RS-232 devices.
  • RXD and TXD are logically inverted: a high TTL level represents a RS-232 mark (logical 1), contrary to the usual RS-232 polarity.
  • Received data must be applied simultaneously to both pin B (FLAG2) and pin C (PB0) for correct operation; the C64 Programmer’s Reference Guide explicitly requires this dual connection.
  • The user port also provides +5 V (100 mA max) and two 9 V AC rails, which third-party RS-232 adaptor cartridges used to generate the ±12 V supply needed for true RS-232 swing.

Signals

  • GND (A, N) — Protective ground (pin A) and signal ground (pin N); both must be connected.
  • FLAG2 + PB0 (B+C) — Receive Data input; the incoming serial bit stream must be wired to both the CIA #2 FLAG2 line (pin B) and Port B bit 0 (pin C) simultaneously to trigger the flag interrupt and allow software to sample the data.
  • PB1 (D) — Request To Send output; driven by CIA #2 Port B bit 1.
  • PB2 (E) — Data Terminal Ready output; driven by CIA #2 Port B bit 2.
  • PB3 (F) — Ring Indicator input; read via CIA #2 Port B bit 3.
  • PB4 (H) — Data Carrier Detect input; read via CIA #2 Port B bit 4.
  • PB6 (K) — Clear To Send input; read via CIA #2 Port B bit 6.
  • PB7 (L) — Data Set Ready input; read via CIA #2 Port B bit 7.
  • PA2 (M) — Transmit Data output; driven by CIA #2 Port A bit 2 (a separate port from the other RS-232 signals).

References

Category:Serial Connectors