Commodore 128
The Commodore 128 is a home/personal computer, also known as the C128. It was Commodore Business Machines (CBM)'s last commercially released 8-bit machine. Introduced in January of 1985 at the CES in Las Vegas, it appeared three years after its predecessor, the bestselling C64.
Description
The C128 was a significantly expanded successor to the earlier C64, the new machine featuring 128KB RAM (externally expandable to 640KB) and an 80-column RGB monitor output (driven by the 8563 VDC chip with 16KB dedicated video RAM), as well as a redesigned case/keyboard with a numeric keypad. Instead of the 6510 CPU of the C64, the C128 incorporated a two-CPU design. The primary CPU, the 8502, was a slightly improved version of the 6510; its main addition was the ability to run at a 2 MHz clock rate (but this required turning off the 40-column video output). The second CPU was the Zilog Z80, which allowed the C128 to run CP/M; the machine came with CP/M 3.0, aka CP/M Plus (backward compatible with CP/M 2.2) and ADM31/3A terminal emulation. To make a software library instantly available, the Commodore 128 CP/M was designed to run almost all Kaypro-specific CP/M software without modification. Unfortunately the C128 ran CP/M noticeably slower than most dedicated CP/M systems, as 1.) the Z80 processor ran at an effective speed of only 2 MHz instead of the more common 4 to 6 MHz and 2.) it used CP/M-Plus 3.0, whose complexity made it inherently slower than the earlier, but more widespread, CP/M 2.2 system. From the source code of the C128 CP/M implementation, it is clear that the engineers originally planned to make it possible to run CP/M in the "fast" mode as well, with the 40-column output turned off and the Z80 running at an effective 4 MHz, however this does not work on the C128 hardware as it was actually built.
To handle the relatively large amounts of installable RAM, tenfold the 8502's 64KB address space, an on-board MMU chip performed continuous bank switching concurrently with general operation of the machine. While the MMU was designed to handle more than 128K, the chips that were actually produced and used in the C128 cannot do so; thus memory expansions beyond 128K, the so-called RAM Expansion Units (REUs), contained their own memory controller which would move blocks of memory between the main and expansion RAM.
The C128 had three modes of operation: native mode, which ran at 1 or 2 MHz with the 8502 and had both 40- and 80-column text modes available; CP/M mode, which used the Z80 and either 40- or 80-column text mode (the former in a rather awkward way); and C64 mode, which was very nearly 100% compatible with the earlier computer. The C128's native mode improved upon the most criticized attributes of the C64, providing an 80-column display, a higher speed, a reset button, an improved version of the Commodore BASIC programming language with sound, graphics, and disk commands, an improved screen editor, national character sets and keyboard layouts for non-US models, more than three times as much RAM available to BASIC programs as in the C64, and much faster disk operations when used with the matching Commodore 1571 (5¼") or 1581 (3½") floppy disk drives. The C128's greater hardware capabilities, especially the increased RAM, screen display resolution, and serial bus speed, made it the preferred platform for running the GEOS graphical operating system. A disadvantage to the C64 was the fact that the more complex BASIC was noticeably slower as long as the 2-MHz, 80-column-only mode was not used; this affected especially people who used a TV as their screen, as 80-column mode was not available on the TV-out socket.
The system architecture of the C128, which in case of a C128D with memory expansion included three CPUs, five types of RAM memory, three operating modes, two system speeds, two graphics chips and two completely different low-level floppy disk encoding schemes was positively baroque and not at all orthogonal. This high complexity was probably a factor in the limited success of the C128—but of course also much of the reason for the machine's popularity among long-time CBM users and 'hackers', who enjoyed the capability of full C64 compatibility in a computer which was also fully usable as a BBS terminal and general office application platform in 80-column mode running native or CP/M programs. Another selling point for this group of users was the full-featured business keyboard, which was the first 'real' keyboard of a CBM computer beside the less flexible (and thence, less popular) CBM-II/B series.
A possibly unique feature of the C128 among CP/M systems was that some of the low-level BIOS services were executed by the 8502 chip instead of the Z80. The latter transferred control to the 8502 after having placed the pertinent parameter values in designated memory locations. The Z80 then turned itself off, being awoken by the 8502 at completion of the BIOS routine, with status value(s) available in RAM for inspection.
128D; RGB graphics
The Commodore 128D was released in the summer of 1985; it was an updated version of the C128 with a detached keyboard and a 1571 disk drive in the same box as the main system unit, providing a sleeker, more professional-looking appearance, much like that of a desktop PC. In Europe the first C128Ds came in a plastic case with a side-mounted carrying handle and were technically exactly the same as a C128 with the 1571 disk drive. Additionally these models were equipped with a somewhat noisy cooling fan. Later models of the C128D came in a metal case. These later models had some minor improvements. The internal design was more integrated to save production costs, but also improved the thermal design, so that a fan was not needed anymore.
Inside, the C128D ROMs contained several bug fixes, and the 8563 VDC chip was equipped with its maximum capacity 64K of video RAM – four times that of the original C128. This permitted the C128D to do higher-resolution graphics with more colors in RGB mode, although very little software took advantage of this. With or without the extra RAM, the VDC's high-resolution graphics modes were inaccessible from the C128's BASIC and could only be utilized through assembly language or via third-party software packages (one such package was Free Spirit Software's "BASIC 8" – a VDC graphics command extension of CBM BASIC 7.0. BASIC 8 was available on disk or as a ROM chip for installation in the C128's internal Function ROM socket).
Market performance
Because the C128 would run virtually all C64 software, and because the next-generation, 16-bit, home computers, primarily the Commodore Amiga and Atari ST, were gaining ground, relatively little software for the C128's native mode appeared (probably on the order of 100–200 titles). While the C128 sold a total number of 4 million units between 1985 and 1989, its popularity paled in comparison to that of its predecessor. This has been blamed on the lack of native software and on Commodore's less-aggressive marketing. An additional explanation may be found in the fact that the C64 sold huge numbers to people primarily interested in computer games, which the more expensive C128 didn't add much value towards improving (with the exception of a few Infocom text adventures) -- the C128 was certainly a better business machine than the C64, but not really a better gaming machine, and people who wanted business machines bought IBM PC clones almost exclusively by the time the C128 was released. The main reason that the C128 still sold fairly well was probably that it was also a much better machine for hobbyist programming than the C64.
Also, when the C128(D) was discontinued in 1989, it was reported to cost nearly as much to manufacture as the 16-bit Amiga 500, even though the C128D had to sell for several hundred dollars less to keep the Amiga's high-value marketing image intact.
Specifications
- CPUs:
- MOS Technology 8502 @ 1 or 2 MHz
- Zilog Z80 @ 4 MHz (effectively running at 2 MHz due to stopping half the time to allow VIC-II video chip access to system bus)
- RAM: 128KB system RAM, 16K or 64K dedicated video RAM (for the VDC), up to 512KB REU expansion RAM
- ROM: 80KB (28K BASIC 7.0, 4K MLM, 8K C128 KERNAL, 4K screen editor, 4K Z80 BIOS, ca. 9K C64 BASIC 2.0, ca. 7K C64 KERNAL, 16K character generator) – expandable by 32KB Internal Function ROM (optional; for placement in motherboard socket)
- Video:
- MOS 8564/8566 VIC-II E (NTSC/PAL) for 40-column composite video (a TV set can be used instead of a monitor if desired)
- Direct register access through memory-mapped I/O
- Text mode: 40×25, 16 colors
- Graphics modes: 160×200, 320×200
- 8 hardware sprites
- 2K dedicated 4-bit color RAM, otherwise uses main memory as video RAM
- MOS 8563 VDC for 80-column digital RGBI component video, compatible with PC CGA monitors, monochrome display also possible on composite video monitors, but not with TV sets
- Indirect register access (address register, data register in mapped memory)
- Text mode: 80×25, 16 colors (not the same as those of the VIC-II)
- Graphics modes: 640×200, 640×400 (interlaced)
- No hardware sprites
- 16K dedicated video RAM (64K standard in 128D, 128 was upgradable to 64K), accessible to the CPU only in a doubly indirect method (address register, data register on VDC, which in turn are adressed through address register, data register in mapped memory)
- MOS 8564/8566 VIC-II E (NTSC/PAL) for 40-column composite video (a TV set can be used instead of a monitor if desired)
- Sound:
- MOS 8580 SID synthesizer chip
- 3 voices, ADSR controllable
- White noise channel
- Cost-reduced and noise-reduced version of C64's MOS 6581; some early C128s actually have 6581s
- MOS 8580 SID synthesizer chip
- I/O Ports:
- All the ports of C64 (q.v.) —100% compatible— plus the following:
- Higher speed possible on the serial bus
- Expansion port more flexibly programmable
- RGBI video output (DB9-connector, identical to IBM PC CGA connector, but with an added monochrome composite signal)
References
- Greenley, Larry, et.al. (1986). Commodore 128 Programmer's Reference Guide. Bantam Computer Books / Commodore Publications. ISBN 0-553-34378-5.
- Gerits, K.; Schieb, J.; Thrun, F. (1986). Commodore 128 Internals. 2nd ed. Grand Rapids, Michigan: Abacus Software, Inc. ISBN 0-9164439-42-9. Original German edition (1985), Düsseldorf, West Germany: Data Becker GmbH.