The Commodore 128 (C128, CBM 128, C=128) home/personal computer 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.
The C128 had three modes of operation: C128 Mode (native mode), which ran at 1 or 2 MHz with the 8502 CPU and had both 40- and 80-column text modes available; CP/M Mode, which used the Z80 second CPU in either 40- or 80-column text mode; and C64 Mode, which was very nearly 100% compatible with the earlier computer. It should be noted that none of these modes would have been possible as implemented on the C128 without the Z80 chip. The Z80 controls the bus on initial boot-up and checks to see if there is a CP/M boot disk, if there are any C64/C128 cartridges present, and if the Commodore key (C64-mode selector) is active on boot-up. Based on what it finds, it will switch to the appropriate mode of operation.
PEEK and POKE commands. Some programmers also criticized the lack of a hardware reset button. Finally, the C64's 1541 disk drive was almost universally condemned as slow and unreliable.
The designers of the C128 succeeded in rectifying most of these concerns. A new chip, the VDC, provided the C128 with an 80-column color RGB display. The new 8502 CPU was completely backward-compatible with the C64's 6510, but could run at double the speed if desired. A numeric keypad was added to the keyboard, as were various other keys. The C64's rudimentary BASIC 2.0 was replaced with the far more flexible and powerful BASIC 7.0, which included keywords designed specifically to take advantage of the machine's capabilities, and also incorporated a sprite editor and machine language monitor. The screen editor was further improved. A reset button was added to the system. Two new disk drives - the single-sided 1570 and double-sided 1571 - were introduced in conjunction with the C128, promising far faster transfer speeds via a new "burst mode". The C128 also had far more RAM than the C64, and a far higher proportion was available for BASIC programming, due to the new MMU bankswitching chip.
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.
Unfortunately, the C128 ran CP/M noticeably slower than most dedicated CP/M systems, as the Z80 processor ran at an effective speed of only 2 MHz (instead of the more common 4–6 MHz) and because it used CP/M 3.0, whose complexity made it inherently slower than the earlier, 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 did not work on the released C128 hardware.
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.
GO 64 command in BASIC 7.0 immediate mode
Some of the few C64 programs that fail on a C128 run correctly when the CAPS LOCK key is pressed down (or the ASCII/National key on international C128 models). This has to do with the larger built-in I/O port of the C128's CPU. Whereas the C64's CAPS LOCK key was simply a mechanical latch for the left SHIFT key, the corresponding key on the C128 can be read via the 8502's built-in I/O port. A few C64 programs are confused by this extra I/O bit; keeping the CAPS LOCK key in the down position will force the I/O line low, matching the C64's configuration and resolving the issue.
A handful of C64 programs wrote to *]D030" target="_blank" >(53296), often as part of a loop initializing the VIC-II chip registers. This memory-mapped register, unused in the C64, operated as a selector for 2 MHz mode in the C128. Since it was not disabled in C64 mode, an inadvertent write could blank the 40-column display by putting the CPU into fast mode. Fortunately, very few programs suffered from this flaw. In July 1986, COMPUTE!'s Gazette published a type-in program that exploited this minor incompatibility, by using a raster interrupt to enable fast mode when the bottom of the visible screen was reached, and then disable it when screen rendering began again at the top. By using fast mode during the vertical blank period, standard video display was maintained while increasing overall execution speed by about 20%. *
An easy way to tell the C128's C64 mode and a real C64 apart, typically used from within a running program, is to write a value different from 0xFF (255) to memory address 0xD02F (53295), which is used to decode the extra keys of the C128 (the numerical keypad and some other keys). On the 64 this memory location will always contain the value 0xFF no matter what was written to it, but on a C128 in 64 mode the value of the location—a memory-mapped register—can be changed. Thus, checking the location's value after writing to it will reveal the actual hardware platform.
Inside, the C128D ROMs contained several bug fixes, and the 8563 VDC chip (in the C128DCR, the 8568) was equipped with the maximum capacity 64 kB 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. They could only be utilized through low-level PEEK and POKE commands (or their assembly language equivalents), or via third-party BASIC language extensions. The most popular such toolkit was Free Spirit Software's "BASIC 8", which added several high-resolution VDC graphics commands to CBM BASIC. 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)—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/DCR) 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.
Bil Herd commented on the Wikipedia C128 article himself, stating: "We considered the C128 to be a holding action until the next generation computers arrived, we were trying to up the game as far as expectations for new machines and buy a year, two at the max in the process. In that we exceeded our intial goals but probably due in part to Commodore's lackluster followthrough on marketing and selling the Amiga."
SYS 32800,123,45,6" in native mode would reveal the 40-column screen shown to the right:
PRINT""+-X (where X is any integer), depending on the number entered for X.
Home computers | Personal computers | CBM hardware | Commodore 64
Commodore 128 | Commodore 128 | Commodore 128 | Commodore 128 | Commodore 128 | Commodore 128 | Commodore 128 | Commodore 128 | Commodore 128
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Commodore 128".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world