Mike's PCjr Page Logo

PCjr Hardware Notes

Overview:

The base model of the PCjr had the following characteristics:
  • Intel 8088 (or AMD D8088) processor running at 4.77Mhz (similar to the IBM PC and IBM XT of the time).
  • 64 kilobytes of RAM, included on the motherboard .
  • Enhanced version of CGA graphics. It was almost entirely CGA compatible, with a few extra graphics modes.
  • Access to an expansion bus on the right side of the machine. Expansion was done via "sidecars."
  • 62 key keyboard, known unoffically as the "Chiclet" keyboard
  • 3 voice Sound, including a white noise generator.
  • 2 cartridge slots on the front of the machine.
  • The enhanced model added the following features:
  • 128 kilobytes of RAM
  • 5 1/4 inch diskette drive , storing 360 kilobytes of data

  • This was clearly an entry level machine:

    • Memory was not expandable past 128 kilobytes. (This was later circumvented.)
    • Only one diskette drive could be installed. (This was also circumvented.)
    • No hard drive was available. (Circumvented, yet again.)
    • It had limited expansion potential because it couldn't use cards designed for the PC and XT.
    • The case was relatively flimsy compared to the PC and XT.

    The Intel 8088 Processor:

    The Intel 8088 is the same processor used in the IBM PC and IBM XT, which preceded the PCjr. It is generally considered a 16 bit microprocessor with an 8 bit path to memory and I/O, unlike the 8086 processor which has a full 16 bit path to memory and I/O. The 8 bit path limits performance but provides a cost savings; a lot of the support chips and peripherals designed for previous 8 bit processors could be reused.

    A common upgrade for the PCjr (and PC and XT as well) was the NEC V20 chip, which was an 8088 compatible processor. It was not a clone though; the implementation was slightly better, allowing it to eke out slightly better performance. Although it was a rare occurrence, some software was incompatible with it. (Broderbund's Lode Runner will not work with a NEC V20.)

    For those of you not versed in microprocessor lore, the Intel 8088 is fairly primitive. It can address a megabyte of memory using a segmented address scheme. It was superceded architecturally by the 80286, 80386, 80486, Pentium, etc. 8088s did not incorporate caches on chip, and they did minimal pipelining. (One stage was for fetch, and the other was for execute.) This processor did not have a problem with self modifying code. ;-)

    Early PCjrs have their Intel 8088 socketed to the motherboard, which allows for easy replacement. Later PCjrs have the microprocessor soldered directly to the motherboard. This the decreases part count and should increase reliability, at the expense of being able to change the microprocessor. Later PCjrs may also use an AMD D8088, which is a licensed Intel 8088 clone. (It is an 8088 manufactured by AMD, unlike the NEC V20 which is compatible but not implemented the same way.)


    The Memory Subsystem: RAM:

    Memory for an 8088 processor running at 4.77Mhz doesn't have to be fast. A machine running at 4.77Mhz has a cycle time of approximately 210ns.

    According to the PCjr Technical Reference, a bus cycle normally takes four clock cycles. This means that reads from ROM take 840ns. Reads to RAM have to share with the video subsystem, adding an average of two clock cycles onto the four required. This means that RAM reads and writes take approximately 1.2 microseconds, which is horrendous. The cycle time of the memory used in the PCjr was 150ns. Clearly the memory subsystem is not a high performer. However, continue reading - memory added via a sidecar runs faster !

    The PCjr's base 64 kilobytes of memory were located on the system board. An additional 64 kilobytes could be added via a dedicated expansion slot within the machine. (On other machines of the day, memory was added via expansion cards on the I/O bus.) When the expansion card was in place, references to even locations of memory went to the expansion card and references to odd locations of memory went to the memory on the motherboard. This primitive form of bank switching helped to improve performance.

    At announce time, IBM stated that the maximum available memory for the PCjr was 128 kilobytes. That was it; nothing else would be available. This made it a fairly crippled machine compared to the PC and XT, which had a limit of 640 kilobytes.

    Not too long after the announce, third party vendors figured out how to stuff more memory onto the PCjr. Popular products of the day were the Microsoft Booster (an additional 128 kilobytes plus a bus mouse) and the Tecmar Jr Captain. Eventually IBM got into the market too. It was not uncommon to find PCjrs with 640 kilobytes on them. Most memory expansion was done via a sidecar . Many of the sidecars could be upgraded by simply replacing the 64Kb (kilobit) chips on them with 256Kb chips and doing some soldering; a stock 128KB sidecar expansion could be modified to 512KB! With the 128KB in the system, this gave you a reasonable 640KB system. The extra memory had to be configured with a device driver , or it would not be recognized.

    Another wonderful thing about memory on sidecar expansion units is that they don't get interference from the video hardware. This allows four cycle memory reads, instead of six. This is a noticeable speed bump for software using this memory. To take advantage of it though, your memory configuration software has to reserved the low 128 kilobytes of memory, or put low use things in there such as a RAM disk. With the low memory reserved for a RAM disk and video, the machine was as fast as a PC or a PC XT.

    An interesting note about the PCjr: it did not use parity memory, which was another cost cutting measure. Parity memory allows the hardware to detect single bit errors in the memory. The PC and the XT had this capability; the PCjr was one on the first machines not to have this capability. In later years non-parity memory became the standard as other vendors also cut costs.


    The Memory Subsystem: Memory Map:

    The memory map of the PCjr is similar to other members of the PC family. The first 640 kilobytes are reserved for RAM. The next 96 kilobytes are reserved; with a software patch to use this area it is possible to have a PCjr recognize up to 736 kilobytes of RAM, assuming that nothing else on the system tried to use it. The next 32 kilobytes are reserved for video RAM. The next 64 kilobytes are reserved for I/O device ROMs. The next 128 kilobytes are reserved for cartridge ROMs. The last 64 kilobytes are reserved for the system ROM, which included the BIOS, the built-in diagnostic routine, and Cassette BASIC.

    It is important to remember that even though 32 kilobytes of the memory map are reserved for video (apart from system RAM), the PCjr doesn't actually have memory at that address range. The PCjr "steals" memory from RAM and maps it to this address range.

    When more than 32 kilobytes of video storage is allocated, the video hardware can dip further into the RAM. The video hardware can address up to 128 kilobytes of RAM. In reality only 96KB can be allocated - DOS and BIOS require some storage in the first few pages of memory to set up interrupt vectors.


    The Graphics Subsystem:

    The graphics on the PCjr were revolutionary in several ways.

    First, this was the first IBM machine in the PC family to build the graphics capability into the machine. The PC and the XT used cards on the I/O bus to provide graphics capability. This reduced configuration complexity (no jumpers or switches), improved integration with the rest of the system, and probably reduced the part count. On the other hand, it limited what you could do - you could not add a high quality monochrome card to the system or hope to add a better graphics card in the future. In contrast, the PC and the XT allowed you to have both a monochrome graphics card and a color graphics card in the system at the same time, each driving a different monitor.

    The most common graphics card of the day was compatible with IBM's Color Graphics Adapter, or the CGA standard. The PCjr did not have a perfect CGA clone built in, but it had all of the function of CGA. It also had a few additional graphics modes, which provided more colors at higher resolutions. To do this required more memory than a standard CGA card had, which was 16 kilobytes.

    The downside of this enhanced graphics support was the way it was implemented. IBM cut corners, and wired the graphics subsystem to use memory from the main system. Video cards for the PC and XT did not do this; they had their own memory built into them. This had several ramifications:

  • Compared to a PC with a CGA card and a given amount of memory, a PCjr was always short some memory, depending on the video mode. Using standard CGA, a 128 kilobyte PCjr would only have 112 kilobyte available to the processor. Using the high color modes, it was further reduced to 96 kilobyte!
  • Processor accesses to the memory were often blocked by the video circuitry, which also needed to access the memory. This memory was not dual ported, so only one device could access it at a time. Because of this, a PCjr with a 4.77Mhz processor was actually slower than a PC or an XT with the same speed processor.
  • In short, thanks for the extra capabilities IBM, but why did you cut corners on this! Incompatibilities with the CGA card were a continual problem.

    The graphics subsystem centered around the Motolora 6845 CRT Controller. The 6845 was also used on the IBM Monochrome Display Adapter and the IBM Color Graphics Adapter (CGA). The bitmaps for the letters in the text modes come from a ROM chips. The graphics circuitry provides RGB output (for the IBM PCjr Color Monitor) and composite output. A television may be connected with an optional RF modulator.

    Graphics Modes of the PCjr:

    Mode Name: Horiztonal Pixels Vertical Pixels Colors Notes:
    Low resolution 16 color 160 200 16
    Medium resolution 4 color 320 200 4 from a palette of 16
    Medium resolution 16 color 320 200 16 Not available on standard CGA
    High resolution 2 color 640 200 2 from a palette of 16
    High resolution 4 color 640 200 4 from a palette of 16 Not available on standard CGA


    Expansion:

    IBM tried to build in all of the input/output ports a home user could ever want, which should have reduced complexity for the home user. Here is what the PCjr came with:

    External ports:

  • Two cartridge slots at the front of the machine
  • A keyboard connector (wired)
  • An infra-red keyboard port
  • Two joystick connectors
  • A lightpen connector
  • A serial device connector
  • An RGB video connector, for connection to the PCjr Color Monitor or an RGB monitor
  • A composite video output, for connection to a television
  • An I/O bus expansion port on the right side of the machine. ("Sidecar bus")
  • A cassette port. (Interested in how data looks when it's recorded? Click here )
  • An audio port (RCA jack, monophonic)
  • Internal ports:
  • A memory slot for the 64 kilobyte memory option
  • A dedicated slot for a modem (300bps)
  • A dedicated slot for a floppy disk controller
  • IBM targeted the home user, and built in almost anything a home user would want. However, IBM made two serious blunders:
  • It did not include an expansion slot compatible with cards for the PC or XT. (8 bit ISA) The PCjr could not use any of the pre-existing cards, which limited its potential.
  • It did not include a parallel printer port. This was a major oversight. Almost every PCjr that I have ever seen has added this port as an option via the sidecar bus. Serial printers did exist, but the most popular printers were parallel.
  • Among the minor blunders IBM committed were providing a dedicated modem slot instead of another standard serial port, and including the lightpen connector. (I've never seen a lightpen .. it probably was never a popular option.)

    The only positive things that I can think of are that the composite video output spared people from having to purchase the relatively expensive PCjr Color Monitor, and that PC and XT users needed yet another expansion card for joystick support. Personally, I'd rather have the expansion slots.


    The Beloved Chiclet Keyboard:

    Once again, this machine was targeted at the home user. The home environment can be rough at times, so instead of providing the wonderful keyboards that people had grown accustomed too, IBM provided a "hardened" keyboard designed for peanut butter fingers.

    The experience of typing on the Chiclet keyboard was horrific, but having just come from a Timex Sinclair 1000 it was wonderful. The reaction to the original keyboard was so negative that IBM offered a more professional replacement within about a year.

    IBM PCjr 'Chiclet' keyboard

         IBM PCjr revised keyboard
    Original "Chiclet" keyboard      Revised keyboard
    (Click on a thumbnail for a larger image)

    Both the original and the replacement keyboards had a novel feature; an infra-red connection to the system unit. Instead of being tied to the system unit, the keyboard was truly portable. The feature had limitations; the keyboard had to have a clear line of sight to the front of the system unit, it couldn't be too far off center, and bright light confused it. If these were problems, IBM was more than happy to sell an optional keyboard cable to you which also eliminated the need for batteries.

    The keyboards had a serious annoyance - there were not enough keys! Instead of providing an 83 key keyboard like on the PC and XT, IBM provided a 62 key keyboard. Gone were the function keys and the numeric keypad. However, the function those keys provided still had to be available. The solution was to add an "Fn" key (short for "Function"), which was pressed first in a sequence with another key to emulate the missing keys. This alternate keyboard layout made some programs awkward to use, but it was tolerable. Replacement keyboards featuring the missing keys were available from third party vendors.

    For a detailed discussion on how the keyboard was implemented in hardware and how the PCjr maintained software compatibility with the existing keyboard see "PCjr Keyboard Handling."

    Click here to see a picture of the PCjr keyboard layout . Click here for a reproduction of IBM's "Keyboard Differences Chart" from the Guide To Operations.


    The Sound Subsystem:

    The PC and the XT had primitive sound generators, capable of playing one tone at a time. The PCjr was enhanced with a Texas Instruments chip (TI 76496) that provided three voice sound and a white noise generator. While crude by today's standards, the PCjr could sing in comparison to the PC and XT, which chirped at best.

    The PCjr built in speaker was only capable of chirping. To experience the TI sound generator, you had to use the PCjr Color Monitor (which provided an external speaker), or connect the PCjr to an external speaker. The PCjr provided an RCA jack on the back for this purpose.

    Games that ran on the PCjr were often enhanced to take advantage of the sound chip on the PCjr. Good sound did not come to other members of the PC family until add-on sound cards became popular.


    The Cartridge Slots:

    The cartridge slots allow a user to add an additional 128 kilobytes of ROM memory to the system without taking the covers off. Each cartridge can hold two 32 kilobyte ROMs for a total of 64 kilobytes per cartridge.

    Cartridges were hard-wired at the factory with the memory segment that they would load in. There were four memory regions reserved for cartridges - D000:0000, D800:0000, E000:0000, and E800:0000. A cartridge could be in one region only - they were not relocatable. Two additional regions mapped to the 64KB reserved for the BIOS, making BIOS replacement by cartridge possible. Having two cartridges inserted that tried to use the same memory regions usually caused the machine to lock-up - ColorPaint and Cartridge BASIC were famous for this.

    Each cartridge has 15 address lines, 8 data lines, and some chip select lines. The 15 address lines limited cartridges ROMs to 32 kilobytes. To get a 64 kilobyte cartridge you used two ROMs and two chip select lines. Cartridges were read only devices - you could not write to them. (Not using conventional means at least - there are tricks that use the addressing lines to simulate a write.)

    Cartridges were designed to be hot swapped, if you didn't mind the machine going through a reset cycle. Cartridge slots caused the machine to reset when they were inserted or removed. The reset cycle was needed to allow the BIOS to scan the ROM area for newly inserted cartridges. A cheap solution for a reset switch on the PCjr was to wire a momentary switch to the particular landing pads of a cartridge slot which caused this behavior. I had one of these on my personal machine, and I used it often - poorly written PC software often locked the machine up.

    This program (pcjrcart.exe) will search your PCjr system for cartridges and write their contents to disk. For more on dumping cartridges, see this page: PCjr Cartridge and ROM Dumping Project


    The Serial Port:

    The PCjr only has one general purpose serial port built in. An internal modem is logically another serial port, if you have it. (Although it is tied to the modem, and not for general use.) Some people have built serial port cards that used the modem slot; it isn't supposed to be too hard. The serial port is controlled by the standard National Semiconductor 8250 UART which was "the" UART chip on older PCs. The port is located on the back of the machine using a non-standard "Berg" connector. IBM sold an adapter cable to breakout the Berg connector into the standard D25 connector.

    The UART chip can generate baud rates from 50 to 4800. Baud means signalling units. On very slow modems (or serial devices in general), baud and bits-per-second (bps) were interchangeable because one bit was transferred per signalling unit. Above 2400bps though, there are probably multiple bits encoded per signalling unit.

    Although the PCjr can generate a baud rate as high as 4800, communications above 1200bps are not recommended. The PCjr can certainly handle 1200bps; the problem is the keyboard. The keyboard deserialization hardware on the PCjr (used to decode keys) is dreadfully slow, and it blocks other interrupts because it uses the NMI (Non-Maskable Interrupt). If you are typing and receiving data at 2400bps, chances are good that a keystroke will cause you to lose incoming data. The answer? Either speed your Jr up, or don't type while receiving data at full blast.

    The diskette drive is another problem for serial communications. The diskette interface doesn't use DMA because the PCjr doesn't have a DMA controller. Therefore, if the processor is servicing the diskette drive and data comes in on the serial port, the data on the serial port will be lost. The answer? Don't run the diskette drive while using the serial port. If you have to download a file, download it to a RAM disk.

    The COM port setup on the PCjr was a small source of confusion. When the internal modem was not installed, the external serial I/O port was known as COM1. However, it used the port address and IRQ normally associated with COM2. (Port address 0x2F8 and IRQ 3.) When the internal modem was installed, it became COM1 and the external serial I/O port became COM2. Port addresses and IRQs stayed constant however.

    PCjr owners who used external modems sometimes had to trick the machine to rename the external serial I/O port as COM2, so that software would not get confused about the ports and IRQs it was supposed to use. (If the software didn't strictly use BIOS calls to control the serial port, it would be confused.) This was done with a small utility called "COMSWAP ."


    The Diskette Drive:

    The PCjr used the standard diskette drive of the day, a 5.25 inch floppy diskette that stored 360 kilobytes of data. It was a double sided diskette drive, and the media was known as "double density." The drive came in a special mounting tray with a fan on it to keep the diskettes from overheating. (The PCjr would not have a fan otherwise.) The PCjr was one of the first IBM machines to use half-height diskette drives . This also required a new version of DOS (DOS 2.1) to accomodate the different seek and head settling times.

    Double density media can by identified by a "hub ring" where the drive spindle clamps the diskette. The hub ring was intended to help seat the diskette correctly on the spindle, without tearing the media. Double density media can be read by newer high-density diskette drives, but it should not be written by them. This is because the newer high-density diskette drives have narrower heads which can't physically completely cover the magnetic imprint left by the lower density diskette drive. High density media can not be used in a double density drive at all.

    The diskette drive connected via a standard floppy drive cable to the drive controller card. The drive controller differed from other drive controllers in a few respects:

  • It only supported one diskette drive.
  • It did not use DMA to transfer data to the system. This caused problems with the keyboard and serial communications. If you ever hated the beeping that ocurrs when you try to type while the diskette drive is active, this is the cause.
  • It was custom designed for a custom slot on the PCjr motherboard.
  • It is possible to use a 720 kilobyte 3.5 inch diskette drive on this controller card, with no modifications. The two different drives use the same data transfer rate and the same connector. The only problem is in the BIOS, which doesn't know about a diskette drive with more than 40 tracks on it. The DRIVER.SYS device driver in DOS 3.3 can be used to tell the PCjr about the extra tracks on the drive; otherwise the 3.5 inch drive will look exactly like a 5.25 inch drive to the PCjr. (With only 360 kilobytes of available storage on it!) I have done this, and the new drive passed the diagnostic routine.

    It is also possible to hack the controller card into thinking that it can support two diskette drives. The modification truly is a hack, and it causes both diskette drives to spin in unison whenever one is activated, but for a few dollars in parts you can't go wrong. ;-) I have not made this modification to my PCjr, although I own a PCjr that has had this done.


    The Power Supply:

    The PCjr used a unique split power supply. An external "brick" steps the incoming AC power down to a lower voltage. An internal power card converts the low voltage AC power to the various DC voltage levels needed for the machine. The internal power card connects directly to the motherboard. Power for the diskette drive is provided via a normal device style power cable. Power for the fan on the back of the diskette drive is provided by a smaller power cable. No other power cables/wires/takeoff points are present.

    The power supply is a whopping 33 watts. This is about half of what a PC had (65 watts), and far less than the 200 to 300 watt power supplies that are used in modern desktop machines. A fully configured PCjr (internal modem, 64KB memory expansion, and diskette drive, but no sidecars) has 400 milli amps of +5 volt dc power left over, which can be used by sidecars. This is not a lot.

    A PCjr had sufficient capacity to support one or two sidecars, depending on their circuitry. Beefy sidecars or numerous sidecars stretched the power supply too thin, causing flaky operation. A special "power" sidecar could be added to provide the extra power needed by numerous sidecars. Power sidecars used the same external brick transformer as the main power supply.

    (I have a PCjr with a parallel printer sidecar, a 512KB memory expansion sidecar, and a speech attachment. All work fine without additional power. IBM was always very conservative with their specifications, so there probably was enough power to spare.)

    The power supply does not have a cooling fan, and neither does the system. A system with a diskette drive has a cooling fan on the diskette drive, but it is to keep the diskette from getting cooked. That fan is not intended to cool the system, and it is not ducted properly to do so. Unlike the PC and the XT, the PCjr was not designed to run hours on end - it was a home machine. It could do it, but I'm sure that the lack of adequate cooling was not healthy.

    The power supply card varied in length during the production of the PCjr. I've seen a short version of the card and a long version. The short version puts out 33 watts, while the long version puts out 45 watts.

    Created in October 2000, Last updated February 16th, 2010
    (C)opyright Michael B. Brutman, mbbrutman at gmail.com

    Return to Mike's IBM PCjr Page main page