The C128 was a significantly expanded successor to the earlier C64, the new machine featuring 128KBRAM (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 6510CPU 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. 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 the CP/M 2.2) and ADM31/3A terminal emulation. 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.
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 utilized the Z80 and either 40- or 80-column text mode; 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 reset button, an improved version of the Commodore BASIC programming language with sound, graphics, and disk commands, 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.
The Commodore 128D was released in 1987; 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 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 capability. 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" 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).
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). 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.
ROM: 80KB (28K BASIC 7.0, 4K MLM, 16K C128 KERNAL and Z80 BIOS, 8K BASIC 2.0, 8K C64 KERNAL, 16K Character generator), expandable by 32KB Internal Function ROM (optional; for placement in motherboard socket)