Commodore 64 and 128 terminal software
Commodore 64 and 128 terminal software is the class of client programs that let a Commodore 64 or Commodore 128 work as a terminal on a dial-up telephone connection, exchanging typed text and files with an information service, another personal computer or a bulletin board.[1] Commodore's modem manuals state that the modem alone is not enough and that the computer must run such a program to control the modem and carry on the session.[2][1] In the typical arrangement documented by Commodore, the modem plugs into the computer's user port, where the computer's own software serial routines handle the data, and the modem in turn joins the household telephone line through modular jacks.[1][3] This article describes that hardware arrangement, compares a small, source-bounded set of client programs and outlines the file-transfer protocols that the cited documentation attributes to them; it is not a complete catalogue of the many programs written for these machines.[4][5]
Hardware arrangement
[edit | edit source]The user port as a serial interface
[edit | edit source]The Commodore 64 has no dedicated serial-communications chip. A 2019 technical article on the C64 OS site explains that the KERNAL instead carries a software imitation of the MOS 6551 UART and drives RS-232-style traffic through the user port, whose lines are connected chiefly to the second CIA chip.[3] The same article locates transmitted data on user-port pin M and received data on pins B and C, where pin B also feeds the CIA's /FLAG input so that the start bit of an incoming character raises a non-maskable interrupt.[3] Further detail on that connector is given in C64 external interface architecture.
The electrical levels on these pins are logic levels between 0 and +5 volts, not the bipolar voltages of a conventional RS-232 port. The C64 OS article therefore notes, citing the Commodore 64 Programmer's Reference Guide, that equipment which only understands true RS-232 levels needs a TTL-to-RS-232 converter between it and the computer.[3] One such converter is drawn in an ASCII-art schematic hosted by Zimmers.NET, which marks itself as version 2 of a user-port adaptor dated 3 November 1983. Its parts list pairs a 1488 driver and a 1489 receiver with a 7404 hex inverter, its notes put the resulting line voltages at about ±10 volts, and the drawing shows both a standard DTE wiring and an optional DCE wiring on DB-25 connectors.[6]
Commodore's own modems avoided that converter. Each of the Commodore modem manuals consulted here describes a unit that is inserted directly into the user port, and none of their installation steps calls for a level converter; the AUTOMODEM and Modem/300 specifications also take supply voltages from the computer's connector.[7][2][1] The specifications for the Modem/300 describe its data connection as the Commodore user port carrying inverted TTL-level RS-232 signals, and the VICMODEM specification likewise gives a TTL data interface.[1][7]
Commodore modem families
[edit | edit source]The earliest unit in this group, the VICMODEM (product 1600), was documented for the VIC 20. Its 1982 manual dates the first units offered to buyers to March of that year and specifies a direct-connect, Bell 103-compatible device that works at up to 300 bits per second, with manual dialling and a switch for originate or answer operation.[7] Its telephone hookup relied on a modular handset cord, which the owner detached from the phone and inserted into a socket on the VICMODEM; for sets lacking that detachable RJ11C plug, the manual points to an add-on adapter.[7]
The 1650 AUTOMODEM, whose manual carries a 1983 copyright, was intended for owners of either a C64 or a VIC 20.[2] It keeps the 300-bit-per-second Bell 103 signalling but adds automatic answering and computer-controlled pulse dialling, together with built-in telephone and Y adapters.[2] Its installation places the modem in the user port with the power off, then routes the wall line into a LINE socket and the telephone into a PHONE socket, so that the handset remains usable; three switches select originate or answer, full or half duplex, and telephone or data use of the line.[2] Its technical appendix lists the alternating-current supply as coming through the interface connector and gives logic-level voltages for the data signals.[2]
The Modem/300 (1660), documented in a 1985 manual for the Commodore 128, Commodore 64, SX-64 and VIC 20, is again a 300-baud Bell 103 unit, but it can dial by touch tone or pulse.[1] The manual cautions that the user port resembles the cartridge port (see Commodore 64 cartridge) but that the modem does not fit the latter, and it connects the unit to the line through two RJ11C jacks.[1] So that the progress of a call can be heard, a lead goes into the modem's AUDIO IN socket: with a Commodore monitor it comes from a Y-adapter on the monitor's audio cable, and with a television it comes from the computer's VIDEO port; for the VIC 20 the manual describes no audio connection at all.[1] An appendix states that it is used with a C128 in 64 mode exactly as with a C64.[1]
The 1670 Modem/1200 is the only unit in this group documented as accepting Hayes-style commands: its text documentation describes an "intelligent" modem with its own microprocessor that takes such commands and supports both Bell 212A at 1200 bits per second and Bell 103 at 300.[8] The same file lists the user-port pin assignment: ground on pins 1, 12, A and N, +5 volts on pin 2, AC supply on pins 10 and 11, received data on B and C, transmitted data on M, ring indication on F and carrier detect with clear-to-send on H and K.[8] Owners expecting a perfect Hayes clone are warned of three gaps: typing the +++ escape hangs up the line, the configuration switches number just three, and the S-register set is incomplete.[8]
Speed constraints
[edit | edit source]Because the serial port is implemented in software, its timing limits shaped how terminal programs had to be configured. The 1670 text file warns that the C64 and C128 software UART tolerates little speed error, and that a Bell 212A modem returns data to the computer at about 1219 bits per second, so that a terminal set to exactly 1200 can transmit successfully but receive only garbled characters; it recommends adjusting the user-definable rate described in the Programmer's Reference Guide.[8] It adds that, when dialling out, the modem adapts by itself to the speed and parity of the AT command it receives, whereas the terminal program does not adapt, so the user has to select the expected rate before placing the call.[8] An addendum to the file, written by an unnamed system operator, says that in native C128 mode the RS-232 buffers are reserved at power-up, so opening the port from Commodore BASIC does not wipe out program variables as it does on a C64 or a C128 in 64 mode.[8]
The C64 OS article gives 1200 baud as the highest rate the stock KERNAL supports, describes a 256-byte receive buffer that overwrites old data when it fills, and reports that a simple BASIC read-and-print loop cannot keep pace with a continuous stream at that rate.[3] The same article turns to cartridges with a real hardware UART, noting that CMD's SwiftLink and Turbo232 sold widely during the 1990s.[3] A readme for a do-it-yourself UART cartridge of this kind names Novaterm 9.4, Terminal 1.820, Kermit 2.2 SL, Desterm and Dialogue among the term programs it was meant to serve on either a C64 or a C128.[5]
Representative terminal programs
[edit | edit source]The programs below are those for which a retrieved source documents a publisher or bundle, a date or version and particular features. Many other clients existed; their omission here reflects only the limits of the evidence used, and inclusion here does not imply that a program was the most widely used.[4][5]
| Program | Machine and mode | Source and date | Documented distinctions |
|---|---|---|---|
| TERM 64 | Commodore 64 | Cassette supplied with the 1650 AUTOMODEM; manual dated 1983 | Automatic dialling of up to ten stored numbers on the C64 and automatic answering; ASCII or Commodore character mode; preset to CompuServe parameters[2] |
| Common Sense | Commodore 64; Commodore 128 in 64 mode | Disk supplied with the Modem/300 (1985) and Modem/1200 (1985, 1987) | 700-line scrollable buffer, split-screen typing, disk commands, XMODEM and CompuServe "B" transfers[1][4] |
| VT100-128 | Commodore 128, 80-column mode | Disk supplied with the Modem/300 and Modem/1200 | VT100 escape-sequence emulation; buffer or XMODEM transfers[1][4] |
| VT52-64 | Commodore 64; Commodore 128 in 64 mode | Disk supplied with the Modem/1200 | VT52 emulation; 40- or 80-column display with no added hardware; fixed line settings with XON/XOFF flow control[4] |
Commodore bundled programs
[edit | edit source]The 1650 manual describes TERM 64 as a cassette program, loaded from the Commodore Datasette like its VIC 20 counterpart VICTERM I, that keeps telephone numbers in BASIC PRINT lines for later automatic dialling and can also be used to receive an incoming call.[2] Its special functions are split between a Communications Format Menu and a Control Menu, which together set speed, duplex, word length, stop bits and parity, choose between ASCII translation and Commodore-to-Commodore operation with full graphics, and offer a two-colour mode; the manual also warns that the program misbehaves if any cartridge is fitted.[2] For owners who wished to write their own client, the same manual prints two BASIC terminal listings and example BASIC code for automatic dialling and answering.[2]
Common Sense was the general-purpose client on the Modem/300 and Modem/1200 disks; both manuals carry copyright notices for Commodore and for Microtechnic Solutions, Inc., and the Modem/1200 manual lists Common Sense as a CompuServe trademark.[1][4] The Modem/300 manual's list of supported equipment begins with the Commodore 128 in 64 mode and the Commodore 64, followed by disk drives including the Commodore 1541 and 1571.[1] Its modem list names the 1600, 1650, 1660 and 1670 modems, all RS-232 smart modems and the VIC 1011A RS-232 terminal adapter.[1] Listed functions include a scrollable and searchable 700-line virtual screen, switchable translation between PETSCII and standard ASCII, text uploads with adjustable delays, programmable function keys, a 24-hour clock and fine adjustment of the computer's internal baud rate, which the manual says matters most at 1200 baud.[1] The two manuals differ on dialling: the Modem/300 edition describes automodem dialling commands within the program, whereas the Modem/1200 edition says Common Sense cannot dial that modem and that the user must type Hayes commands instead.[1][4]
Terminal emulators for the C128 and C64
[edit | edit source]The bundled disks also carried terminal emulators. The Modem/300 manual describes an emulator as a program that lets the computer carry out the screen-editing escape sequences recognised by many large computers and by some information services, and it states that VT100-128 runs only in the C128's 80-column mode and requires a 1902 monitor.[1] Its functions are reached with the C128's ALT key, it shows buffer and clock information on a status line, and the keypad sends VT100 sequences only while ALT is held, unless the host reverses that arrangement; the manual gives example commands for declaring the terminal type on several host systems and on CompuServe.[1] The Modem/1200 manual adds VT52-64, which it says runs on a Commodore 64 or on a C128 in 64 mode (see Commodore 128 operating modes) and can draw 40 or 80 columns without extra hardware, although a high-resolution monitor is recommended; its 8-bit, no-parity, full-duplex settings cannot be changed.[4]
Later programs
[edit | edit source]Third-party and later clients are less well covered by the sources retrieved for this article. The UART-cartridge readme mentioned above is undated and names five programs, with version numbers for three of them, but it gives no publisher, author or feature information, so it supports only their existence and their association with that hardware.[5] The Modem/300 manual also supplied software for the QuantumLink online service, which is outside the scope of this article.[1]
File-transfer protocols
[edit | edit source]Text capture and uploads
[edit | edit source]The simplest way to move information was to capture incoming text into memory and save it, or to send a prepared file as if it had been typed. Common Sense can send buffer contents or disk files to a printer, and its text uploads let the user add delays between characters or after each line when a remote system cannot accept text at full speed.[1] This method carries no error checking, and the manual draws a contrast with formal transfer protocols, which follow a fixed exchange between the two computers so that files arrive intact.[1]
XMODEM
[edit | edit source]In the sources cited here, XMODEM is documented for more of these clients than any other protocol.[1][4] In the Modem/300 manual it appears as a cross-platform method, offered in Common Sense and also in VT100-128.[1] Because the manual treats it as only partly automatic, the user starts it on cue: a board or mainframe service usually signals the moment, two home users need to arrange it in advance, and pressing RUN/STOP abandons the transfer.[1] The 1670 text documentation gives an XMODEM block size of 131 bytes, and its addendum explains that this figure includes three header bytes around the familiar 128 data bytes in the checksum form of the protocol.[8]
Common Sense applies its character translation during XMODEM transfers of sequential files, so the user must switch translation off when sending to or receiving from another Commodore system and leave it on for text exchanged with other computers.[1] Where the other computer has no XMODEM, the manual offers a different route for programs: disk utilities that turn them into text files and back again.[1]
CompuServe "B" and other protocols
[edit | edit source]Common Sense also implements CompuServe's proprietary "B" protocol, which the Modem/300 manual describes as fully automatic once started and limited to transfers with CompuServe; the user must clear an inhibit setting before it will work, and the program sets that inhibit again after an aborted transfer.[1]
Outside Commodore's manuals, protocol documentation is represented here by one undated text file, attributed to Steve Punter, that sets out a scheme its author calls "C1".[9] Punter writes that he began C1 in the summer of 1984, aiming for a protocol "both fast, and extremely reliable, even under the worst of line conditions".[9] He sets it against a simpler scheme for moving programs to and from a BBS that he had started three years earlier, in the summer of 1981; in his assessment, poor lines defeated both that scheme and XMODEM.[9] Each C1 block carries a seven-byte header: an additive checksum and a cyclic-redundancy checksum, each of 16 bits and computed from the "CBMASCII" values of the data plus the other header bytes, then the size of the block that follows and a block number whose high byte flags the final one.[9] By Punter's own estimate C1 runs about 3% slower than XMODEM.[9] He attributes this to its handshake: after each block the receiving computer answers with the three-byte code "GOO" or "BAD", the sender confirms with "ACK", and only then does the receiver request the next or repeated block with "S/B".[9] His implementation lets the user pick a block size from 40 to 255 bytes; a terminal program calling one of his boards was to send the file type (program, SEQ or WordPro) in a short opening transfer, and he notes that the terminal program he distributed in the public domain, unlike his BBS program, had no code for abandoning a transfer once the other computer stopped answering.[9] The file closes with a short note, signed from a C-64 bulletin board that lists itself as PunterNet node 26, stating that Punter had released the source code to the public domain.[9] The protocol description itself names no computer beyond its use of the term "CBMASCII", and nothing in the file records which C64 or C128 clients adopted C1.[9] Taken together, the cited material supports only the protocols named in individual manuals and in Punter's description; it does not show that any single protocol worked with every C64 or C128 client or board.[1][8][9]
See also
[edit | edit source]- Commodore C64 and C128 input and output peripherals
- C64 external interface architecture
- Commodore 128 operating modes
- C64 and C128 manuals as documentary sources
- Commodore 64 and 128 periodicals
- Commodore user groups, member clubs whose services included newsletters, meetings and, in some groups, bulletin board systems
References
[edit | edit source]- ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 “Modem/300 User's Manual”. Commodore Electronics Limited and Microtechnic Solutions, Inc.; hosted by Internet Archive(1985). Section 1, "Introduction", p. 1; Section 2, "Connecting Your Modem/300", pp. 5–7; Section 4, "Using the Common Sense Terminal Program", p. 13, and "File Transfer Protocols", p. 34; Section 5, "Using the VT100 Terminal Emulator Program", pp. 47–48 and 56; Section 6, "Technical Information", p. 59; Appendix, "Using the Modem/300 with the Commodore 128", p. 69. Accessed 2026-10-15.
- ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 “AUTOMODEM Users Manual, Model 1650”. Commodore Electronics Limited; hosted by Zimmers.NET(1983). Introduction, p. 3; "Software You Can Use with the AUTOMODEM", p. 8; Appendix B, "Technical Information", pp. 24–25. Accessed 2026-10-15.
- ↑ 3.0 3.1 3.2 3.3 3.4 3.5 “C64 OS Networking and Chess”. C64 OS(2019-09-20). "C64 User Port and Built-in RS-232"; "Timing"; "Dial-up Modems and UART Cartridges". Accessed 2026-10-15.
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 “Modem/1200 User's Manual”. Commodore Electronics Limited and Microtechnic Solutions, Inc.; hosted by Internet Archive(1985, 1987). Contents; Section 4, "Using the Common Sense Terminal Program", p. 15; Section 5, "Using the VT52-64 and VT100-128 Terminal Emulators", pp. 47–48. Accessed 2026-10-15.
- ↑ 5.0 5.1 5.2 5.3 “datapump.readme”. Zimmers.NET. whole file (undated). Accessed 2026-10-15.
- ↑ “Commodore User Port to RS-232 Adaptor (rs232-userport.txt)”. Zimmers.NET(1983-11-03). schematic and annotation boxes. Accessed 2026-10-15.
- ↑ 7.0 7.1 7.2 7.3 “VICMODEM manual (Commodore product number 1600)”. Commodore Business Machines, Inc.; hosted by Internet Archive(1982). copyright page; "A Pioneering Achievement in Modem Technology"; "Installing the VICMODEM"; "Connecting the Telephone"; "Technical Information" and "Modem Specifications", pp. 10–11. Accessed 2026-10-15.
- ↑ 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 “1670modm.txt”. Zimmers.NET. "Introduction"; "Understanding Terminal Mode"; "Technical Specifications"; "High Speed/Low Speed Protocol"; "Comparison with Hayes Smartmodem 1200"; "Addendum Number One" (undated). Accessed 2026-10-15.
- ↑ 9.00 9.01 9.02 9.03 9.04 9.05 9.06 9.07 9.08 9.09 Steve Punter. “C1 Protool Specifications”. Internet Archive (item "C1 Protocol Description for BBS"). heading as printed; "Inception"; "Communication Codes"; "Block Structure"; "Varying Block Size"; "Communication Syntax"; "Syntax Description"; "Transferring File Type"; closing note (undated text file). Accessed 2026-10-15.
Automation and sourcing note
[edit | edit source]This article was independently synthesized from the cited sources under c64.wiki publication policy. Historical manuals and source archives were used as citation-only factual evidence; no source prose, code, images, scans, or screenshots were copied into the candidate.