Fact-checked by Grok 2 weeks ago

Commodore 128

The Commodore 128 is an 8-bit developed and announced by in January 1985 at the , as the successor to the highly successful Commodore 64, with release later that year. It featured 128 KB of RAM divided into two 64 KB banks, dual processors including the MOS 8502 running at 2 MHz for native operations and the at up to 4 MHz for compatibility, and three distinct operating modes: the full C128 mode with advanced 7.0, a near-100% compatible Commodore 64 mode, and a dedicated mode for running . Developed under the leadership of engineer Bil Herd starting in 1984, the Commodore 128 was designed to address limitations in the C64 by incorporating enhanced graphics via the MOS 8563 video chip supporting 80-column (×200) color display alongside the original 40-column mode, a MOS 6581 SID , and an extended 92-key with function keys and numeric keypad. It debuted at the (CES) in 1985 amid challenges like chip stability issues during production, and was available in models such as the original integrated unit and the C128D with a detachable and built-in 1571 disk . The system supported peripherals like the single-sided 1570 (170 KB) and double-sided 1571 (340 KB) floppy drives using 3.0, and RAM expansion up to 512 KB, making it versatile for gaming, productivity, and programming. Despite its technical innovations as the first mass-market multi-processor , the Commodore 128 sold approximately 4 million units by its discontinuation in 1989, underperforming relative to the C64 due to factors including poor and competition from 16-bit systems. Its legacy endures in retro computing communities for bridging 8-bit entertainment with professional applications.

Development History

Origins and Design Goals

In the mid-1980s, sought to capitalize on the immense success of the Commodore 64 (C64), which had sold millions of units since its 1982 debut but was constrained by hardware limitations such as its 64 KB RAM ceiling and 40-column display, hindering advanced applications like word processing and business software. The company aimed to develop a successor that would extend the C64's market dominance while addressing these shortcomings, particularly as competition intensified from PC compatibles and other 8-bit systems. This strategy emphasized maintaining the vast C64 software library to avoid alienating users, a lesson learned from the commercial failure of the incompatible Plus/4 in 1984. The Commodore 128 project originated in 1984, shortly after the Plus/4's release, when engineer Bil Herd, who had led the Plus/4's development, advocated for a new machine fully compatible with the C64 to prevent repeating past mistakes. Herd's team, including engineers Dave Haynie, Frank Palaia, and others, began prototyping in secrecy, initially exploring concepts like a 6509-based design before shifting to a multi-processor architecture. Herd's vision for a "compatible something" drove the project's direction, prioritizing as a core tenet to ensure seamless adoption by C64 owners. Key design goals included doubling the RAM to 128 for expanded multitasking and program capacity, introducing an 80-column color display to support professional productivity tasks, and integrating a Z80 microprocessor for native operating system support, appealing to business users. While the sound chip remained largely unchanged, the allowed for enhanced audio capabilities in native mode through better memory access. The project progressed rapidly under tight deadlines, with silicon testing occurring by September 1984 and the system announced on January 6, 1985, at the Winter (CES) in . This multi-mode design, championed by , positioned the C128 as a versatile upgrade without abandoning the C64 ecosystem.

Engineering Challenges

One of the primary engineering hurdles in developing the Commodore 128 was integrating the MOS Technology 8563 Video Display Controller (VDC) to enable 80-column color display while preserving full compatibility with Commodore 64 software, which relied on the 40-column MOS 8562 VIC-II chip. The 8563, originally designed for the unreleased Commodore 900 business computer rather than the C128, introduced significant timing discrepancies due to its 16 MHz oscillator conflicting with the VIC-II's 14.31818 MHz crystal, leading to synchronization failures and erratic pixel clock behavior. Early production runs of the 8563 exhibited frequent memory access errors, failing every few seconds, and lacked interrupt request (IRQ) support, forcing software to poll the chip constantly for video tasks—a design flaw that Bil Herd, the project's lead engineer, described as inefficient and problematic during R&D testing. To mitigate these issues, the team implemented phase-locked loop (PLL) adjustments and separate video pipelines, retaining the original VIC-II for C64 mode and dedicating the 8563 exclusively to 80-column operations, which added hardware complexity but ensured backward compatibility. Low chip yields compounded the problem, with only 3-4 functional units per expensive batch, necessitating rapid fixes like improvised cooling (e.g., ice cubes in metal caps) during prototyping. Integrating the Zilog Z80 microprocessor for CP/M mode presented further challenges, particularly speed mismatches with the primary 8502 CPU (a 6502 variant) and shared bus architecture. The Z80 operated at 4 MHz but suffered from effective slowdowns due to arbitration delays when accessing the common memory bus, contrasting with the 8502's 1-2 MHz cycle in standard and fast modes, respectively; this required careful synchronization to avoid contention during mode switches. A late addition to the design—discovered after initial PCB layout to resolve C64 compatibility glitches—the Z80 caused boot failures in about 80% of early prototypes due to signal reflections and a glitch on the A10 address line when the Z80 drove the bus, unlike the 6502's cleaner signaling. Engineers, including Herd and Dave Haynie, resolved this by soldering a wire jumper on every production board to dampen standing waves, a $1-per-unit fix that added $5.7 million to costs but achieved 100% reliability without a full redesign. These issues stemmed from the Z80's higher drive strength overwhelming the bus, highlighting the trade-offs in supporting CP/M's existing software ecosystem alongside native 6502 operations. Memory banking for the C128's 128 RAM introduced intricate complexities to accommodate dual 64 banks without interfering with C64 software, which expected a fixed 64 address space. The custom MOS 8722 (MMU) enabled transparent switching between banks via configurable blocks, a novel feature for consumer hardware that allowed shared regions (e.g., 4 of I/O space) while isolating C64-mode access to Bank 0; however, delayed custom MMU chips forced the use of wire-wrap boards and logic hacks during development. This setup ensured C64 programs ran undisturbed by hiding the upper 64 (Bank 1), but required precise configuration registers to prevent address overlaps, adding programming overhead for native C128 applications. Herd noted that the MMU's design prioritized expandability up to 512 or more, but initial testing revealed contention issues during bank switches, resolved through iterative prototyping. Several compromises were made to balance ambition with practicality, notably the omission of a built-in disk drive to control costs and simplify the core design, relying instead on external peripherals like the Commodore 1571 for storage. This decision deferred the integrated C128D variant by years, as the team focused on core compatibility and multi-mode functionality within budget constraints set by Commodore's management. Development timeline delays arose from rigorous testing of multi-mode switching—between C128 native, C64, and operations—which involved overnight fixes for custom IC shortages and power supply instabilities ahead of the January 1985 (CES) demo. The project, condensed into a five-month sprint under Herd's , relied on rapid revisions (one prototyped in 12 hours) and ad-hoc solutions like adjusted voltages (5.3V hacks) to meet deadlines, underscoring the rushed nature of integrating diverse subsystems.

Hardware Architecture

Processors and Memory

The Commodore 128 features a dual-processor architecture designed to support multiple operating modes. The primary processor is the MOS 8502, an enhanced variant of the 6502 family used in earlier systems, which operates at 2 MHz in native C128 mode and reduces to 1 MHz in C64 to ensure peripheral . This CPU handles the bulk of tasks in C128 and C64 modes, leveraging its 16-bit address bus and 8-bit data bus for efficient access to the system's memory. Complementing the 8502 is the Zilog Z80A, a secondary processor clocked at 4 MHz specifically for mode, enabling execution of software while the 8502 remains idle during that time. The system's memory configuration centers on 128 KB of , organized into two 64 KB banks that can be internally divided into 16 banks of 16 KB each through banking mechanisms. This is expandable up to 512 KB using the optional 1750 , which integrates seamlessly via the cartridge port to provide additional addressable space for advanced applications. The addressing scheme spans $0000 to FFFF (64 KB), but the [Memory Management Unit (MMU)](/page/Memory_management_unit) enables transparent [bank switching](/page/Bank_switching), allowing the full 128 KB to be accessed without software reconfiguration in most cases. The MMU, implemented as a custom gate array (MOS 8722), controls bank selection through registers such as D500–D50B and FF00–$FF04, facilitating dynamic mapping of , , and I/O regions to support the system's multitasking capabilities. Read-only memory (ROM) in the Commodore 128 totals 64 KB across multiple banks for system functions, with an additional 8 KB character generator . Of the system , 28 KB is dedicated to C128 7.0, including the extended interpreter and routines for native mode operations. An additional 16 KB holds the C64 2.0 and for compatibility mode, while 4 KB is allocated for the Z80 in support of 3.0, with the full kernel loaded from external media. These segments are banked via the MMU, with the character generator providing display fonts shared across modes. The overall memory map prioritizes flexibility, with common low-memory regions ($0000–$0FFF for and stack) remaining stable, while upper regions ($8000–BFFF and C000–$FFFF) switch between and banks as needed for mode-specific execution.

Input/Output Ports

The Commodore 128 featured a comprehensive set of input/output ports designed to support a wide range of peripherals, maintaining full compatibility with 64 accessories while adding enhancements for expanded functionality. These included two 9-pin joystick ports located on the right side of the unit, supporting digital Atari-style , paddles, or light pens as directed by software. The serial I/O port, a 6-pin at the rear, facilitated communication with peripherals such as the 1541 disk drive, operating at levels and supporting higher "burst mode" speeds compared to the C64. Additionally, a 24-pin user port provided I/O capabilities for custom expansions and interfaces, with pins including , +5V (limited to 100mA), and programmable I/O lines from the system's CIAs. The served as the primary , comprising a full-size 92-key layout with a 14-key , eight programmable function keys, six dedicated cursor keys, and specialized keys such as Help, , , Line Feed, , and . A dedicated 40/80 column mode switch key allowed seamless toggling between display modes without software intervention. For storage peripherals, a 12-pin edge cassette port connected to the Datasette, enabling tape-based data input and output. Video and audio outputs were versatile, with a built-in connected via a F-type connector at the rear, outputting and audio to standard televisions in 40-column mode on channels 2 or 3. An 8-pin DIN audio/ connector provided /sync, , and audio signals for external monitors or VCRs. For higher-quality display, a 9-pin DE-9 RGBI delivered a 15 kHz digital RGB signal with intensity, supporting 80-column monochrome or color modes via the VDC chip, compatible with CGA-style monitors. Audio output was handled through the SID chip, routed to the port or . Expansion was supported via a 44-pin at the rear, serving as the cartridge port for add-ons like the 1750 RAM Expansion Unit (), which plugged directly into this slot to extend up to 512 KB beyond the base 128 KB. This port provided full access to the 8502 processor's address and data buses, enabling memory banking and peripheral integration. Overall, these ports emphasized the C128's role as a bridge between hobbyist and professional , with built-in RF simplifying TV connectivity without external adapters.

Operating Modes

Native Mode Features

The Commodore 128's native mode, also known as C128 mode, serves as the system's proprietary , providing enhanced capabilities beyond its predecessor through the use of the 8502 CPU and expanded hardware resources. This mode activates by default upon powering on the system or after a , displaying the 7.0 prompt, and can be entered via software commands or the dedicated [40/80 Disp] key to toggle display options. The 8502 processor operates at approximately 1 MHz in standard 40-column configurations but doubles to 2 MHz when utilizing 80-column modes, enabling faster execution for demanding tasks. A key feature of native mode is the 80x25 color text display, facilitated by the VIC-III video chip (8563), which supports up to 2,000 characters on screen in a bit-mapped format suitable for RGBI monitors. This chip also enables advanced graphics modes, including a high-resolution 640x200 RGB display with 16 simultaneous colors, though the 80-column lacks hardware scrolling, requiring software-based alternatives for smooth movement. Sprites remain supported for overlay graphics, maintaining compatibility with bit-mapped operations while expanding creative possibilities in native applications. BASIC 7.0 in native mode introduces significant extensions over prior versions, including commands such as LOCATE for precise cursor positioning (e.g., LOCATE 1,1) and for managing text windows and screen movement. Disk utilities are integrated directly into the , with commands like for file concatenation, for data duplication, BSAVE and BLOAD for binary handling, for directory listings, for executing DOS wedges, for disk preparation, and HEADER for labeling volumes, streamlining file management without external tools. These enhancements, combined with native support for 80-column output and sprite manipulation, allow programmers to leverage the full 128 KB through memory banking mechanisms. Audio capabilities in native mode utilize the same SID chip (6581 or 8580 variants) as earlier models, offering three voices with waveforms including triangle, sawtooth, pulse, and noise, plus programmable filters and envelope controls for attack, decay, sustain, and release. BASIC 7.0 provides direct access via commands like SOUND for tone generation, ENVELOPE and FILTER for waveform shaping, PLAY and TEMPO for sequenced music, and VOL for volume adjustment, enabling more sophisticated without machine language intervention.

C64 Compatibility Mode

The C64 Compatibility Mode on the Commodore 128 enables the system to fully emulate the hardware and software environment of the original Commodore 64, ensuring near-perfect for existing programs and peripherals. Native mode activates by default upon power-on and after a . C64 Compatibility Mode can be entered by holding the C= key while powering on, or it can be manually invoked from Native Mode by entering the command GO 64 followed by confirming with Y when prompted. Switching to or from this mode requires a system reset to take effect fully. In C64 Compatibility Mode, the Commodore 128 reconfigures its hardware to match the Commodore 64 precisely: the MOS 8502 CPU operates at 1 MHz in a manner compatible with the original MOS 6510 processor, the MOS 8562 VIC-II chip handles 40-column video output, and only a 64 KB segment of is addressable, mimicking the C64's . This setup delivers identical color palette rendering with 16 colors, sound generation through the MOS 8580 chip (designed for electrical and functional compatibility despite minor analog differences), and I/O behavior via the same CIA and other ports, all without any speed or performance degradation relative to the original hardware. A key limitation of this mode is the isolation from the Commodore 128's advanced features: the additional 64 KB of RAM and the Z80A processor are inaccessible, preventing any hybrid operation or expansion beyond C64 standards. To utilize Native or modes, a reset is necessary after completing C64 operations. Despite these constraints, the mode supports automatic booting of Commodore 64 cartridges plugged into the expansion port and compatible disk images or floppies in drives like the 1541 or 1571 (which emulate 1541 behavior), allowing programs to load and run directly without manual intervention.

CP/M Mode

The CP/M mode of the Commodore 128 utilizes the integrated Z80 microprocessor, operating at an effective speed of approximately 2 MHz due to bus sharing with the 8502 CPU, to run the 3.0 operating system (also known as CP/M Plus), providing a text-based environment optimized for productivity applications. This mode grants access to the full 128 KB of , though the Transient Program Area (TPA) available for user programs is limited to about 59 KB in a single 64 KB memory bank. To enter CP/M mode, users boot from a CP/M system disk inserted in a compatible drive such as the Commodore 1571, which supports both MFM and GCR formats, or via the BOOT command from C128 ; alternatively, pressing the reset button with the disk present initiates the process directly. The Z80's built-in , located in at addresses $0000–$0FFF, handles initial system initialization before loading the full CP/M from disk. File system operations in CP/M mode are managed through the Console Command Processor (CCP) and built-in utilities, supporting standard file specifications with up to eight-character filenames, three-character extensions (e.g., .COM for executable programs, .ASM for assembly source), and up to 16 user areas for organization. The system recognizes up to four drives (labeled A: through D:), with the floppy drive compatible when formatted in single-sided GCR volumes for CP/M use, though it operates more slowly than the 1571 due to its single-sided design and lack of native MFM support. Utilities such as PIP for file copying, ED for text editing, and DIR for directory listings facilitate basic file management, while wildcards like * and ? allow batch operations on multiple files. The software ecosystem in CP/M mode draws from the extensive CP/M library, with notable ports including for word processing, for database management, and (Microsoft BASIC) as an interpreter or compiler, all leveraging the 80-column text mode produced by the 8563 video controller for clear business-oriented displays on compatible monitors. This 80-column capability, offering 640x200 resolution in monochrome or 16-color text, makes it particularly suitable for professional applications like spreadsheets (e.g., or SuperCalc2) and financial tools. However, CP/M mode imposes significant limitations, including no access to graphics or sound hardware from the VIC-II or chips, restricting it to a purely text-based , and slower disk I/O performance—especially with the 1541—compared to the native C128 mode due to serial bus constraints and format conversions. Additionally, compatibility is limited to 8-bit Z80 software, excluding programs designed for 16-bit processors.

Memory Management

The Memory Management Unit (MMU) of the Commodore 128 is a custom MOS Technology 8722 chip that divides the system's addressable memory into 16 distinct 16KB pages, enabling flexible banking across its 128KB of RAM. It employs eight configuration registers, located at addresses D500 through D507, to control these pages and facilitate seamless operation in multiple modes without hardware conflicts. The primary Configuration Register (CR) at D500 (or FF00) uses its eight bits to select RAM banks, map ROM or I/O regions, and define memory types in key address ranges such as $4000–$7FFF and C000–FFFF. Additional registers, including the Preconfiguration Registers A–D (D501–D504), Mode Configuration Register (MCR) at D505, RAM Configuration Register (RCR) at D506, and Page 0 Low register (P0L) at $D507, allow programmers to preset mappings, select modes, and adjust shared RAM sizes from 1KB to 16KB. Central to the C128's design is its banking scheme, which designates a common memory area at $0000–$0FFF (configurable up to 16KB via the RCR) shared across all modes to maintain consistent access to essential system elements like and the stack. In native C128 mode, mode-specific banks occupy C000–FFFF for the 8502 CPU, supporting full access to the second 64KB bank and BASIC ROM. C64 compatibility mode restricts access to a single 64KB bank, mapping A000–BFFF for color and screen memory while isolating the upper banks to emulate the original Commodore 64 layout. CP/M mode, driven by the Z80 processor, utilizes $0000–$3FFF for dedicated banks, with the MMU's secondary s at FF00–FF04 ensuring Z80-exclusive control over mappings to prevent overlap with 8502 operations. This segmented approach allows mode transitions via simple pokes, such as setting bit 6 of the MCR for C64 mode. BASIC 7.0 integrates MMU control through dedicated commands for configuration, particularly for expansions like the 1700/1750 Expansion Unit (), which adds up to 512KB. The command (0–15) selects active banks for program execution, while FETCH, STASH, and SWAP enable direct block transfers between internal and banks, specifying byte count, addresses, and bank numbers without manual register manipulation. These commands operate in both 1MHz and 2MHz modes, optimizing data movement for larger programs. Protection mechanisms in the MMU safeguard data during mode switches by isolating banks and requiring explicit reconfiguration; for instance, entering C64 or mode via the MCR bits disables access to C128-specific upper RAM, and returns to native mode often necessitate a hardware reset or routine like SETBNK ($FF68) to restore mappings without corruption. The common area's fixed sharing further prevents inadvertent overwrites, as mode changes do not alter its contents unless explicitly reprogrammed.

Physical Variants

Original C128 Model

The original Commodore 128 model was released in January 1985 as an all-in-one keyboard unit that combined the and input device in a single case, marking Commodore's effort to provide a more professional-looking successor to the C64. Most units were designed to pair with external RGBI-compatible displays for 80-column operation. This design emphasized compatibility with both home and office environments, featuring dedicated ports for video output to enable the advanced display modes. The physical specifications of the unit measured approximately 17 inches wide by 12.75 inches deep by 2.2 inches high, with a weight of approximately 5.4 pounds, making it a compact system suitable for typical home setups. The integrated keyboard utilized chiclet-style keys, which received criticism for their flat, membrane-like feel that lacked the tactile of alternatives, potentially hindering extended typing sessions. Despite this, the included 92 keys in a full typewriter layout, with dedicated , function keys, and dedicated toggles for 40/80-column display selection. Internally, the original C128 featured a single main integrating the CPU, memory, and I/O functions, facilitating repairs and upgrades while keeping the overall footprint slim. Cooling was handled passively through aluminum heatsinks attached to key chips like the 8502 processor and VIC-II video controller, avoiding the need for active fans to maintain quiet operation during use. Production focused primarily on markets in the United States and , with variants tailored to NTSC video standards for and PAL for European regions to ensure compatibility with local television and monitor systems.

C128D and C128CR Models

The Commodore 128D, released in 1986 as the primary desktop variant for the North American market, adopted a separate and main unit design reminiscent of the Commodore 64, enclosed in a sturdy metal that provided enhanced durability and cooling via an internal . It featured a full-travel detachable for improved during extended use, along with a modular switching that facilitated easier and serviceability compared to earlier models. The C128DCR sub-variant, introduced in 1987, included a built-in 1571 drive, integrating directly into the for a more compact desktop setup without compromising expandability. In 1986, Commodore introduced the C128CR exclusively for markets as a cost-reduced , utilizing a lighter case to lower expenses while omitting the integrated floppy to appeal to budget-conscious consumers. This model incorporated a PAL-specific VIC-II video chip to ensure compatibility with regional broadcast standards and television outputs, maintaining the detachable but forgoing the metal construction and fan of the C128D for simplified production. The C128CR's design emphasized affordability in competitive segments, where external peripherals could be paired as needed. These variants preserved the core compatibility of the original C128 with software and peripherals. Overall, the C128D became the dominant production model for professional and environments, while the C128CR targeted cost-sensitive buyers seeking an entry-level 128-series system.

Software Ecosystem

Built-in BASIC and Utilities

The Commodore 128 features BASIC 7.0 as its primary programming language in native mode, an enhanced version of the interpreter that expands significantly on the capabilities of BASIC 2.0 found in the . BASIC 7.0 includes over 140 commands and functions, compared to 71 in BASIC 2.0, enabling more advanced programming for graphics, file management, and system control. Among the new graphics commands are , which allows definition and manipulation of up to 64 sprites including enabling, coloring, and positioning; GRAPHIC, which selects display modes from text to multicolor and clears the screen; and supporting commands like for filling areas and LOCATE for positioning the cursor on the bitmap. For file operations, DSAVE and DLOAD provide direct saving and loading of BASIC programs or binary files to disk without requiring OPEN statements, streamlining disk-based development; for example, DSAVE "PROGRAM",8 saves the current program to device 8. Mode control is facilitated by the GO64 command, which immediately switches the system to compatibility mode upon execution. In addition to BASIC 7.0, the Commodore 128 incorporates several built-in utilities stored in ROM for programming and maintenance tasks. The machine language monitor, accessible via the command in or by holding the STOP key during reset, provides an interactive environment for entering, assembling, disassembling, and debugging 6502 or Z80 , with features like editing and memory dumps to support low-level development. One notable limitation of 7.0 is the absence of direct inline support; programmers must invoke the machine language monitor using the command to enter code, as there are no dedicated POKE-based inline instructions for embedding machine language within programs. A disk editor functionality is integrated through 7.0's extended disk commands, such as HEADER for modifying disk headers, POSITION for seeking to specific sectors, and U0 for unscratching files, allowing users to inspect and alter disk contents directly from the command line without external software. For CP/M interoperability, built-in transfer tools include the command, which loads and executes CP/M-compatible binary files from disk into the Z80 mode, facilitating data and program migration between native and environments. ROM-based diagnostics are embedded in the routines and activate automatically during power-on initialization to verify core hardware integrity. This self-test clears and examines using the RAMTAS routine to identify available memory banks, scans the matrix via the routine for responsiveness, and initializes ports through the IOINIT routine to ensure , user port, and . If faults are detected, the system may halt or display error indicators, such as a solid blue screen for severe issues.

Third-Party Software Support

The Commodore 128 benefited from a modest but dedicated library of third-party software developed specifically for its native mode, leveraging the system's 128 KB RAM, 80-column display, and enhanced BASIC 7.0 capabilities. Notable examples include , a operating system from Softworks that provided and productivity tools optimized for the C128's hardware. Other key titles encompassed , an advanced by Charles Brannon supporting 80-column output and extensive formatting options, and The Print Shop, a graphics and program from that allowed users to create custom banners, cards, and signs using the C128's improved video modes. Approximately 200 commercial programs were created exclusively for native C128 mode, focusing on productivity, education, and utilities rather than games, which often remained in C64 compatibility. In addition to native titles, the C128's near-perfect backward compatibility with the Commodore 64 granted access to a vast existing software ecosystem, including over 10,000 commercial games, educational programs, and applications developed for the C64. This library encompassed popular titles across genres, with many running seamlessly in the C128's C64 mode, though some enhanced versions exploited the additional RAM for improved performance. The mode expanded business software options by supporting ports of CP/M applications via the integrated processor, though adoption was constrained by the slower effective disk access speeds of Commodore's 5.25-inch drives like the 1571. A limited number of such ports were available, primarily tools; examples included , a program from Sorcim that handled complex calculations and in a text-based interface. Development tools for the C128 further supported hobbyist and professional programmers in native mode, including assemblers such as the Freedom Assembler and Merlin 128 for 6502/8502 , as well as compilers like the Microsoft BASIC Compiler (BASCOM) for optimizing 7.0 programs into faster executables. These tools enabled efficient creation of custom applications, bridging the gap between the system's advanced hardware and the relatively sparse commercial native library.

Market and Reception

Launch and Sales Performance

The Commodore 128 was unveiled in January 1985 at the in , positioning itself as an advanced successor to the Commodore 64 with enhanced features for both home and business users. The initial retail price for the base system stood at $299, though complete bundles including peripherals were offered to appeal to new buyers seeking a ready-to-use setup. This launch timing coincided with Commodore's broader strategy to extend the life of its 8-bit lineup amid shifting industry trends toward . Pricing evolved rapidly to stimulate demand, dropping to approximately $260 by December 1985 at major discount outlets as production efficiencies improved. By 1986, the C128D variant debuted at $499.95, and promotional bundles pairing the system with the 1571 double-sided drive were introduced to provide better value and compete with integrated all-in-one systems from rivals. These adjustments reflected Commodore's efforts to address initial slow uptake, with the bundled packages often retailing under $500 in some markets to encourage upgrades from existing C64 owners. Commercial performance saw the C128 achieve peak sales of approximately 4 million units worldwide by 1989, a respectable but modest figure compared to the Commodore 64's dominance. Key market factors hindering stronger growth included direct competition from the —Commodore's own 16-bit offering launched the same year with superior multimedia capabilities—and the expanding PC ecosystem, which drew business users with standardized software and expandability. Internal cannibalization by the cheaper, fully compatible C64 further dampened demand, as many consumers opted to stick with the established platform rather than invest in the upgrade. Sales were robust in the United States and , where Commodore maintained strong distribution networks, but notably weaker in owing to the prevalence of domestic systems like the NEC PC-88 series. Production ended in 1989 as Commodore pivoted resources toward its line and faced mounting financial pressures.

Critical Reviews and Competition

Contemporary reviews of the Commodore 128 largely praised its seamless compatibility with the Commodore 64, enabling access to an extensive library of over 10,000 software titles, and its inclusion of a dedicated mode powered by a Z80 , which supported thousands of and applications. In a June 1985 hands-on report, Compute! magazine described the system as a versatile machine wrapping "three computers in one box," highlighting BASIC 7.0 as the most powerful BASIC interpreter of its time for simplifying graphics, sprites, and sound programming without relying on commands. The publication went further, calling it a versatile machine with one of the most powerful languages ever offered in a due to its expanded 128 KB RAM, 80-column display, and enhanced I/O capabilities. Critics, however, pointed to several shortcomings that tempered enthusiasm. The $299 launch price was viewed as high relative to the still-popular $200 Commodore 64, positioning the 128 as an expensive upgrade rather than a mass-market replacement. Its multi-mode architecture—encompassing C64, native C128, and operations—was often described as confusing, with mode switches frequently requiring a system and lacking intuitive navigation. The 92-key was an improvement over the C64's chiclet design with a good tactile feel, though some noted it did not fully match the quality of PC standards. Many saw the machine as over-engineered, packing dual CPUs and multiple video chips into a single unit without a compelling native software ecosystem to justify the added complexity. In the competitive landscape of 1985, the C128 faced stiff rivalry from the , which dominated the education sector through its robust software support and Apple's targeted marketing to schools, despite the C128's superior , , and lower price point of under $300 compared to the IIe's price of around $995 by late 1985. The 130XE offered a similar 128 KB upgrade path for existing Atari 8-bit users at a more affordable $150, with simpler operation and strong , appealing to budget-conscious gamers and hobbyists. Ultimately, the rise of 16-bit systems like Commodore's own and the ST eclipsed the C128, as these machines provided advanced multitasking, higher resolutions, and video capabilities that rendered 8-bit architectures obsolete for emerging creative and professional applications. Over the long term, the C128 has been regarded as underrated among power users for its technical prowess, including RGB video output and expandable memory up to 512 KB, making it a favorite for programming and CP/M enthusiasts, though it ultimately failed to challenge the C64's market dominance due to limited native software development.

Technical Specifications

Core Components

The Commodore 128 features two central processing units to support its multiple operating modes. The primary CPU is the MOS Technology 8502, a variant of the 6502 processor compatible with the Commodore 64, operating at 1.023 MHz in NTSC regions or 0.985 MHz in PAL regions during standard 40-column modes; this clock speed doubles to 2.045 MHz (NTSC) or 1.970 MHz (PAL) when using 80-column display modes to accommodate the increased processing demands. A secondary Zilog Z80A CPU runs at 4 MHz specifically for CP/M mode, though its effective speed averages around 2 MHz due to synchronization with the system clock cycle, enabling compatibility with CP/M software while sharing system resources. Memory in the Commodore 128 consists of 128 KB of dynamic RAM organized into two 64 KB banks, managed by the to allow flexible addressing beyond the 64 KB limit of the 8502's native space; this includes 16 KB dedicated as video RAM for the 80-column display and 2 KB of color RAM. ROM totals 64 KB, comprising 32 KB for , 16 KB for the C128 , 16 KB for C64 compatibility ROM ( and ), including the editor and character sets. For video output, the system employs two dedicated chips: the MOS 8564 VIC-III (also known as VIC-IIe), an enhanced version of the Commodore 64's VIC-II, which handles 40-column color graphics, text, and sprites in resolutions up to 320x200 pixels with a 16-color palette; and the MOS 8563 , which provides 80-column RGBI output supporting text modes at 640x200 or 640x400 pixels and high-resolution monochrome graphics, with its own 16 KB of dedicated VRAM. Audio capabilities are provided by the SID (Sound Interface Device) chip, either the 6581 or 8580 revision depending on production variant, featuring three independent waveform oscillators (square, , and sawtooth) plus a noise generator for versatile , filtering, and envelope control. The Commodore 128 lacks built-in storage but interfaces with external Commodore disk drives via its serial bus, including the 1541 (single-sided, 170 KB capacity per 5.25-inch disk at approximately 250-300 baud effective transfer rate), 1570 (similar to 1541 but optimized for C128 with 3.0), and 1571 (double-sided, up to 340 KB capacity supporting faster burst-mode transfers up to 400 baud or higher in C128 mode).

Expansion Capabilities

The Commodore 128 offered several options for memory expansion beyond its base 128 KB configuration, primarily through external and internal RAM Expansion Units (REUs). The official Commodore REUs, models 1700 (128 KB), 1764 (256 KB), and 1750 (512 KB), connected via the computer's expansion port and utilized direct memory access (DMA) for high-speed data transfers between the system's RAM and the expansion unit. These units were compatible with both C128 native mode and C64 compatibility mode, enabling applications like GEOS to leverage additional memory for faster performance and larger workspaces, though access required specific software commands or Kernal routines. Internal memory expansions were also possible using the 1750 expansion card or compatible daughterboards, which piggybacked on the to increase total to 256 , 512 , or up to 1 MB through via the 8722 MMU and MC6821 PIA chips. These upgrades divided into 16 or 256 banks selectable through I/O ports, allowing seamless integration in native mode while maintaining C64 , though video chip limitations restricted direct addressing in certain configurations. Unofficial modifications could push capacities to 2 MB, but stability issues often arose beyond 512 due to timing constraints. Peripheral expansions enhanced storage and connectivity. The Commodore 1571 floppy drive, a double-sided 5.25-inch unit with 340 kB capacity per disk, connected via the serial bus and supported faster data rates in C128 mode compared to the single-sided 1541. The 1581, a 3.5-inch double-density drive offering 800 KB formatted capacity, also used the serial interface and included features like track buffering and partitioning for improved efficiency on the C128. Third-party options from Creative Micro Designs (CMD) included SCSI-based hard drives like the HD series (20 MB to 2 GB capacities), which emulated 1541/1571/1581 drives via partitions and connected through a adapter, supporting up to 255 partitions for flexible storage management. For networking, the Commodore 1650 Automodem provided 300 dial-up connectivity via the user port, enabling terminal access and systems in C64 mode. Software-defined expansions were limited, with rare third-party units attempting PC compatibility by emulating an 8088 processor and environment, though these were uncommon and required custom interfaces not officially supported by . capabilities had inherent limits: the C128 lacked a dedicated slot in native mode, restricting plug-and-play software additions to C64 , and total was capped at approximately 1 MB even with hacks, due to the 14-bit address bus on key chips like the VIC-III.

References

  1. [1]
    A History of Commodore's 8-bit Computers - Low End Mac
    Dec 6, 2015 · Commodore introduced two new floppy drives for the C-128, both running CBM DOS 3.0. The single-sided 1570 floppy drive uses the same 170 KB ...
  2. [2]
    Commodore 128 - The Most Versatile 8-Bit Computer Ever Made
    The Commodore 128 was to be the worlds first mass market multi-processor computer. It would also have two video subsystems, one of which would allow it to ...
  3. [3]
    A History of Gaming Platforms: The Commodore 64
    Oct 23, 2007 · In 1985, Commodore followed up with the lesser known Commodore 128 (C128), a technically superior machine that failed to win over the massive ...<|control11|><|separator|>
  4. [4]
    Deutsche Version der C128-Story
    The C128 inside story. This funny story tells about the development of the C128. It was written by Bil Herd, leader of the design- and hardware-developing-team!
  5. [5]
    Guest Post: The Real Story Of Hacking Together The Commodore ...
    Dec 9, 2013 · Commodore C-128, the last mass production 8 bit computer and first home computer with 40 and 80 column displays, dual processors, three ...
  6. [6]
    Commodore 128 - The Centre for Computing History
    The Commodore 128 was Commodore's last 8-bit computer, a successor to the C64 with 128KB RAM, 80-column video, and a dual CPU design.Missing: specifications sources
  7. [7]
    40 years of the C128: Commodore's last 8-bit attempt | heise online
    Jan 7, 2025 · Forty years ago, on January 6, 1985, the then home computer king Commodore announced the Commodore 128 at the “Winter CES 1985”. In the ...
  8. [8]
    Secret Weapons of Commodore: The D128 - Floodgap
    The development history of the 128 is particularly fascinating -- this story comes very courtesy of the original engineer, Bil Herd (read his original post in ...<|control11|><|separator|>
  9. [9]
    Commodore 128 Principal Engineer, Bil Herd on Best Practices for ...
    Jun 19, 2018 · Bil Herd shares stories and design wisdom from years of experience as a hardware engineer, most famously at Commodore.Missing: origins | Show results with:origins
  10. [10]
    222 – An Interview With Bil Herd – Zany Z80 Zygology
    Oct 30, 2014 · Bil Herd joins to talk about designing the C128, building with fresh silicon, fixing clocks on the fly and the crazy days of the 8 bit ...<|separator|>
  11. [11]
    [PDF] commodore 128
    The Commodore 128 system is designed as an upgrade to the Commodore 64. Accord ingly, one of the major features of the Commodore 128 design is hardware and ...
  12. [12]
  13. [13]
    [PDF] The Official Book
    128 THE OFFICIAL BOOK FOR THE COMMODORE 128 PERSONAL COMPUTER. Page 141. Soul ... • The history of Commodore 128 graphics. • How to use the new Commodore ...
  14. [14]
    C128 System Guide - Appendix C - Commodore.ca
    4. Controller Ports - There are two Controller ports, numbered 1 and 2. Each Controller port can accept a joystick or game controller paddle. The light pen can ...Missing: specifications | Show results with:specifications
  15. [15]
    [PDF] PERSONAL COMPUTER
    COMMODORE 128. GENERAL FEATURES. 64MODE. 128 MODE. CP/M MODE. KEYBOARD. INPUTS/OUTPUTS ... • 2 Game Ports. • RF/TV Port. • Cartridge Port. • Audio Input. • Audio ...<|control11|><|separator|>
  16. [16]
    Commodore 64/128 Technical Details & Trivia - Retro Isle
    The C128's RGB output port outputs a digital 15 kHz RGBI (Red,Green,Blue and Intensity) signal, quite similar to CGA used by older IBM PCs and compatibles ...Missing: specifications | Show results with:specifications
  17. [17]
    Commodore 128 - C64-Wiki
    Oct 27, 2019 · 0 (48 KByte in 2×16 KByte Chips), KERNAL (16 KByte) and C128 BIOS (16 KByte); CP/M BIOS (4 KByte); Special character set NMOS-ROM (8 KByte) ...Construction · Right side · Rear · Main board
  18. [18]
    C128 System Guide - Section 2 - Commodore.ca
    C128 Mode also provides both 40 and 80 column output and full use of the 92-key keyboard. A built-in machine language monitor allows you to create and debug ...
  19. [19]
    The VIC-II Chip - Retro Isle
    Mar 15, 2014 · The 8564/8566 VIC-II E in the Commodore 128 used 48 pins and had two ... MOS Technology 8562 – HMOS-II version; MOS Technology 8564 ...
  20. [20]
    COmmodore 64 vs 128 - AtariAge Forums
    Sep 3, 2006 · The Commodore 128 in C64 mode is very nearly identical to the Commodore 64. There is a small change to the Kernel ROM which affects compatibility with a few ...
  21. [21]
    Is possible to reach Z80 CPU from 64 mode? - Commodore 128
    Sep 6, 2014 · Commodore 128 · Home. Welcome Guest. Please Login or Register ... The MMU disappears in C64 mode, so you can't access Z80 in practice. In ...Z80 and addresing RAM in C128 | Commodore 128 - ProBoardsCommodore 128 with two Z80 CPUs - ProBoardsMore results from c-128.freeforums.netMissing: extra | Show results with:extra
  22. [22]
    Commodore 1571 - C64-Wiki
    Oct 27, 2019 · The 1571 is completely backwards compatible with the C64. When attached to a 64, or a 128 in C64 mode, it will boot into 1541 emulation mode.Missing: details | Show results with:details
  23. [23]
    C128 System Guide - Section 11 - Commodore.ca
    In CP/M 3.0 on the Commodore 128, the user has a 59K TPA (Transient Program Area), which is, in effect, user RAM.Missing: ROM | Show results with:ROM
  24. [24]
    C128 System Guide - Section 12 - Commodore.ca
    Files in CP/M are fundamentally the same as in C128 or C64 modes - that is, they are collections of information. However, CP/M handles files somewhat ...
  25. [25]
    Commodore 128 : programmer's reference guide - Internet Archive
    May 23, 2013 · This is a programmer's reference guide for the Commodore 128, covering topics like memory, address, sprite, data, color, screen, and machine ...
  26. [26]
    MMU reference - oxyron.de
    The registers at $FF00 to $FF04 are always mapped in, independent from the ROM/RAM/IO settings. Changing the memory mapping of the C128 usually is done by ...
  27. [27]
    REU - Commodore 128 Tips & Tricks
    Basic V7 · In Commodore 128 BASIC are these commands for working with REU: FETCH · FETCH bytes,destination address, REU address, REU bank · (works in 1MHz mode ...Missing: setup | Show results with:setup
  28. [28]
    Readers' Feedback: Overseas Computing
    The Commodore 64 and 128 handle scan-line differences by providing two different versions of the VIC-II video chip—one for NTSC and one for PAL. The drawing ...Missing: variants | Show results with:variants
  29. [29]
    Commodore 128D Computer : The Height of the Height of 8-bit ...
    Thus the unit in this collection is actually an American NTSC prototype C128D, as opposed to the production PAL models found in Europe. It even appears to ...
  30. [30]
    Commodore 128D / C128DCR Computer Rev 5 - The Liberator.net
    It featured a modular, switching power supply and an integrated 1571 floppy drive. To save on production costs the cooling fan present on the C128D was removed ...<|separator|>
  31. [31]
    Commodore 128D - The Centre for Computing History
    The Commodore 128 personal computer was the last 8-bit machine commercially released by Commodore Business Machines (CBM). Introduced in January of 1985.
  32. [32]
    The 128 Remixes: Commodore 256, 128D/81, 128DL, 128CR
    Commodore 128CR​​ Hardware Identical to the 128DCR, but without the integrated disk drive and with the fully HMOS chip set. Graphics and Sound Identical to the ...
  33. [33]
  34. [34]
    List of Commodore 128 commercial software
    Zelch 128 (Elite Software). Disk Utility A-Copier Ack! 128 (PHD Software), 80-col disk editor & disk shell 1541/1571 Drive Alignment (Free Spirit Software) ...
  35. [35]
    The Commodore GEOS FAQ v1.4.1 - Lyon Labs
    This FAQ covers the Commodore version of an operating system called "GEOS" by Berkeley Softworks. In particular, this FAQ focuses on the Commodore 64 and 128 ...
  36. [36]
    SpeedScript - C64-Wiki
    Apr 21, 2024 · Basic Features[edit] · Open and Adaptable. · "English Cursor Controls." · Overwrite and Insert Modes. · Large Text Buffer. · Search. · Disk, Tape, and ...
  37. [37]
    The Commodore 128: A Hands-On Report
    A Z80-based 128K computer designed to run existing software written for the CP/M (Control Program for Microcomputers) operating system—at least 10,000 programs, ...
  38. [38]
    Supercalc and Dbase CP/M C128 - 102790145 - CHM
    Disks include SuperCalc CP/M (C128) and DBASE II CP/M bank files. Item Details. Date: ca. 1987 (Made); Type: Software; Catalogue number: 102790145; Category ...Missing: applications | Show results with:applications
  39. [39]
    Commodore 64/128 - Retro Isle
    30-day returnsWeight: ? ... Graphics: VIC-II chip produces 320x200 (2 colours per 8x8 block), 160x200 (3 colours + bkgnd per 4x8 block), 40x25 text mode, 80x25 text mode (C128 ...
  40. [40]
    PERIPHERALS; Popular Products For Holidays - The New York Times
    Dec 3, 1985 · One Manhattan dealer said the Commodore 128 ($260 at many discount houses) is selling well. But what about the Amiga, Commodore's technically ...
  41. [41]
    Commodore 128 - BinaryValue.com
    Plastic case with carrying handle and keyboard dock · Built-in cooling fan · 16 KB VDC video RAM (8563 VDC chip) · Built-in 5.25" 1571 floppy drive (360 KB, reads ...
  42. [42]
    CES 2025 is the 40th anniversary of the Commodore 128
    Jan 8, 2025 · Fortunately, the existence of 16-bit PCs didn't completely nullify the meaning of the Commodore 128 when it was unveiled in January 1985 at CES.
  43. [43]
    1985 Computer Comparison: Commodore vs. Competitors
    Analyze the 1985 computer comparison chart featuring Commodore, Apple, Atari, and more to see how they stacked up.
  44. [44]
    Commodore Hardware Information - C64 OS
    Nov 21, 2018 · This post is divided into three sections. The first gives the CPU, memory, video and audio specifications for all models of C64 and C128.
  45. [45]
    Commodore 128 System Info - The Video Game Museum
    CPU Speed: 1.02 MHz NTSC, 0.985 MHz PAL. The clock speed doubles when 80-column display modes are in use (2.02 MHz for NTSC, 1.97 MHz for PAL) ; ROM: 44 kbytes.
  46. [46]
    Why does the Commodore C128 perform poorly when running CP/M?
    Feb 26, 2017 · The C128 has a Z80A microprocessor clocked at 4MHz for running CP/M. This is the same processor and clock speed found in, for example, the TRS-80 Model 4.Are there games for the C128 that run (mainly) on the Z80 rather ...Did the Commodore 128's Z80 CPU also have full access to the ...More results from retrocomputing.stackexchange.com
  47. [47]
    Commodore 128 Computer : The Height of 8-bit Wonderousness
    1 or 2 Mhz clock speed with 8502. Z-80 running at ~3 Mhz. RAM: 128 kilobytes. ROM: MANY kilobytes. C128 Basic 7.0. Download ...<|control11|><|separator|>
  48. [48]
    Data Transfers with Commodore Computers - Zimmers.net
    The 1570, 1571 and the 1581 disk drives contain an MFM controller chip that can easily be programmed to read MS-DOS (and CP/M ) diskette formats. There are ...
  49. [49]
    Commodore 1571 - Wikipedia
    The Commodore 1571 is Commodore's high-end 5¼" floppy disk drive, announced in the summer of 1985. With its double-sided drive mechanism, it has the ability ...
  50. [50]
    Commodore REU - C64-Wiki
    These cartridge-based REUs increased the RAM available to the C128 and C64 by an additional 128 kByte, 256 kByte or 512 kByte. However, unofficial modifications ...Missing: 512KB | Show results with:512KB
  51. [51]
    CBM: Expansion - C128 to 256kB, 512kB or 1024kB - Commodore.ca
    Dec 22, 1999 · The processor of Commodore 128, MOS 8502, has an 8-bit data bus, and its address bus is 16 bits wide. Like other 8-bit processors, it can ...Missing: specifications | Show results with:specifications
  52. [52]
    Commodore 1571 disk drive - The Silicon Underground
    Apr 7, 2021 · The Commodore 1571 was the primary disk drive for the C-128 computer. It was a double sided, 5.25-inch floppy, and faster than the 1541.
  53. [53]
    Commodore 1581 - C64-Wiki
    Nov 6, 2023 · It utilizes a 3.5" disk, which when formatted provides 800k of storage (vs. 169984 bytes available on the 1541 and 349696 bytes for the 1571).
  54. [54]
    CMD-HD - C64-Wiki
    Apr 6, 2021 · Native partitions can also be created, the size of which can be freely defined by the user in 256 - block steps. A native partition can have a ...
  55. [55]
    The Commodore AUTOMODEM (Model 1650) - pagetable.com
    Dec 22, 2022 · The Commodore 1650, also known as the “AUTOMODEM”, is Commodore's first full modem directly connected to the phone line.
  56. [56]
    [PDF] 41111111111Mat711 ..&=.—. - Commodore.ca
    to run most popular IBM software.•. • with optional Sidecar accessory.