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.
| Pin | Name | RS232 | Description |
|---|---|---|---|
| A | GND | GND | Protective Ground |
| B+C | FLAG2+PB0 | RxD | Receive Data (Must be applied to both pins!) |
| D | PB1 | RTS | Ready To Send |
| E | PB2 | DTR | Data Terminal Ready |
| F | PB3 | RI | Ring Indicator |
| H | PB4 | DCD | Data Carrier Detect |
| K | PB6 | CTS | Clear To Send |
| L | PB7 | DSR | Data Set Ready |
| M | PA2 | TxD | Transmit Data |
| N | GND | GND | Signal 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
- Commodore 64 Programmer’s Reference Guide — Commodore Business Machines, 1983