IBM PCjr


The IBM PCjr was a home computer produced and marketed by IBM from March 1984 to May 1985, intended as a lower-cost variant of the IBM PC with hardware capabilities better suited for video games, in order to compete more directly with other home computers such as the Apple II and Commodore 64.
It retained the IBM PC's 8088 CPU and BIOS interface, but provided enhanced graphics and sound, ROM cartridge slots, built-in joystick ports, and an infrared wireless keyboard. The PCjr supported expansion via "sidecar" modules, which could be attached to the side of the unit.
Despite widespread anticipation, the PCjr was ultimately unsuccessful in the market. It was only partially IBM PC compatible, limiting support for IBM's software library. Its chiclet keyboard was widely criticized for its poor quality. The PCjr also suffered from limited expandability; it was initially offered with a maximum of of RAM, insufficient for many PC programs.

Models

The PCjr came in two models:
  • 4860-004 - 64 KB of memory, priced at US$669
  • 4860-067 - 128 KB of memory and a 360 KB, 5.25-inch floppy disk drive, priced at US$1,269
The PCjr was manufactured for IBM in Lewisburg, Tennessee by Teledyne.
A related machine, the IBM JX, was sold in the Japan, Australia and New Zealand markets.

Hardware

The PCjr chassis is made entirely of plastic, unlike the all-steel chassis of the IBM PC. A 180/360K floppy disk drive can be installed in a 5.25" front bay. The internal floppy drive was a half-height Qume 5.25" unit; IBM also used these drives in the PC Portable, but the PCjr units were specially equipped with a small fan to prevent overheating since the computer did not have a case fan.

Cartridges

The front of the PCjr exposes a pair of cartridge slots in which the user can insert software on ROM cartridges, as was common with other home computers. Each cartridge can contain up to 64 KB of ROM. When a ROM cartridge is inserted, the machine can automatically restart and boot off of the ROM, without requiring the user to manually reboot. This auto-restart function is an optional feature of each cartridge; a cartridge can either restart the machine or not when it is inserted, depending on the construction of the cartridge. PCjr cartridges are strictly read-only, unlike the software cartridges of some other contemporary computers and game consoles which can also be equipped with read/write memory or I/O hardware in a straightforward way.
Cartridges can also replace the system BIOS and other firmware. A number of patches from various vendors are included on a single "combo-cartridge", licensed and sold by PC Enterprises, to support add-on hardware, bypass certain limitations of design, and keep up with changing OS requirements.

Processor

Like the IBM PC, the PCjr uses an Intel 8088 clocked at 4.77 MHz.
Despite using the same CPU and clock speed, performance is often inferior to the PC, because access to system RAM is delayed by wait states added by the Video Gate Array to synchronize shared access to RAM between the CPU and the video hardware. IBM claimed that an average of two wait states are added, but the designers of the Tandy 1000, a clone of the PCjr, claimed that six was a more accurate figure.
This delay only applies to software resident in the first 64 KB or 128 KB of RAM inside the system unit itself, and not to programs or data located in ROM - including software on ROM cartridges plugged into the front of the PCjr - or in additional RAM in a sidecar attachment. Under these circumstances the PCjr should run at full speed. The most common instances in which this maximum speed would be achieved are when running games or productivity applications from ROM cartridges. In fact, because the PCjr video subsystem continuously refreshes the system internal DRAM transparently, without disturbing the CPU, programs running from ROM on the PCjr may actually run slightly faster on the PCjr than on an IBM PC or XT.

Video

Unlike the IBM PC, which required a separate video card, the PCjr display hardware was built in to the system board. At the time, the only cards available from IBM for the PC were the monochrome MDA and color CGA boards. PCjr graphics were similar to CGA, with several new video modes:
  • 160 × 200 at 16 colors
  • 320 × 200 at 16 colors
  • 640 × 200 at 4 colors
The primary improvement over CGA is the greater color depth. CGA could only display 4 colors in its medium-resolution mode, and 2 colors in high-resolution. The PCjr increases these to 16 and 4 colors.
Video modes on the PCjr use varying amounts of system memory: 40 x 25 text mode uses 1 KB, for instance, while 320 x 200 x 16 and 640 x 200 x 4 use 32 KB. These latter two modes, as well as 80 x 25 text mode, are referred to in documentation as "high bandwidth modes" and are unsupported on base models with only 64 KB of memory.
Multiple text or graphics pages can be used for page-flipping as long as there is enough memory, a feature missing from the CGA. The CGA also did not provide a VBLANK interrupt, making it hard to detect when the screen was beginning to be drawn, but the PCjr provides this on IRQ 5, an important feature for smooth page-flipping.
The video system also has a "blink" feature which toggles the palette between the first and second groups of eight palette registers at the same rate used for the PCs blinking text attribute, and a palette bit-masking feature that can be used to switch between palette subsets without reprogramming palette registers.
Unlike CGA, PCjr has palette registers which can be used to choose colors from the full 16-color RGBI palette. When the BIOS is used to set a video mode, it sets up the palette table to emulate the CGA color palette for that mode. Programs specifically written to use PCjr graphics can subsequently reprogram the palette table to use any colors desired. Palette changes must be made during horizontal or vertical blanking periods of a video frame in order to avoid disrupting the display.
The monitor included with the PCjr is a 12" TTL RGBI display like those supported by the CGA, but including an internal amplified speaker. Also like CGA, the PCjr supported composite video out for use with a TV or composite monitor.
A Motorola 6845 CRTC like the one used in the MDA and CGA adapters, and a custom IBM chip called the Video Gate Array constitute the bulk of the PCjr video hardware. Several discrete standard logic devices complete the video subsystem. The 6845 is responsible for the basic raster timing and video data address sequencing, and the Video Gate Array contains all the additional timing logic, video data demultiplexing logic, color processing logic, and programmable palette table logic, as well as the logic for multiplexing RAM access between the 8088 CPU and the video generation circuitry. For programming, the CRTC is generally compatible with the CGA at the hardware register level. Some other CGA programming details, in particular the Mode Control Register and the Color Select Register, are not compatible, as the PCjr provides the equivalent functionality through different registers inside the Video Gate Array which are accessed in a completely different manner through a single I/O address.
The 6845 CRTC and the VGA together are responsible for refreshing the internal DRAM of the PCjr, which complicates the process of switching video modes on the PCjr. Resetting the VGA, which must be done during certain video mode switches, must be done by code not running from the system RAM controlled by the VGA, and if the CRTC or the VGA is disabled for too long, the contents of the internal RAM can be lost. Additional external DRAM is refreshed independently and never affected by a video mode switch.
Of the three new modes, 160 x 200 x 16 mode has the same layout as CGA graphics modes; the odd and even scanlines are stored in the first and second half of the video buffer, each half being 8k in size, and every four bits represents one pixel. The 320 x 200 x 16 and 640 x 200 x 4 modes have four blocks of scanlines; every four or two bits respectively represents a pixel.
Since the PCjr uses the main system RAM for the video buffer, less memory is available for software than on a standard PC, which has separate dedicated video memory in the A000h-BFFFh segments, above conventional memory.

Sound

The PCjr's sound is provided by a Texas Instruments SN76496 which can produce three square waves of varying amplitude and frequency along with a noise channel powered by a shift register. It is similar to the programmable sound generator chips used in game consoles such as the Master System. The PCjr design also allows for an analog sound source in an expansion-bus "sidecar" module, and a software-controlled internal analog switch can select the source for the sound output from among the PC speaker, the SN76489, the cassette port, or the expansion-bus sound source. Only one sound source can be selected at a time; the sources cannot be mixed.

Keyboard / Lightpen

The original keyboard included with the PCjr was a wireless design using infrared line-of-sight communication, which IBM initially marketed as the "Freeboard." This is a chiclet keyboard with small, flat, calculator style plastic keycaps. The keycaps are blank, with the labels printed between keys so that overlays can be used. The PCjr keyboard has 62 keys rather than the 83 of the PC keyboard, and the remaining keys must be entered by holding a modifier key.
For infrared wireless operation, the keyboard is powered by four AA cells. Certain types of room lighting can cause interference with the infrared keyboard sensor, and multiple keyboards cannot be used wirelessly in the same room without problems.
IBM sold a cable which could be plugged in between the keyboard and computer if the user wanted a more reliable connection, which also eliminated the need for batteries, since the keyboard IR receiver is automatically disabled when the cord is attached to the computer.
The chiclet design was not well received, and in 1984 IBM began shipping a new design, still wireless, but using more conventionally shaped keycaps.
The PCjr also has a light pen port. Besides being used for a light pen, this port can be used in combination with the serial port to supply voltage to a Mouse Systems optical mouse of the same design as those for Sun workstations.