Mike's PCjr Page Logo

PCjr Modifications

"Where everything is perfect, there can be no fulfillment" - Alexander Calder

Older machines have a certain appeal to them. The machines are mostly built from TTL logic chips with very few custom parts. The boards are simple and the wiring traces are easy to follow. Data sheets for the chips are readily available. And because the speeds are not great, you don't have to worry as much about timing issues and RFI. As a result, many of the older computers have a fairly extensive set of "mods" that you could do to them.

Modifications can make a machine more usable. Modifications either add a new function that was previously unavailable or they speed a machine up to make it more usable. It's a personal thing - some people want to build hot rods and some people want to run original stock hardware. In general I don't advocate taking rare pieces of equipment and modifying them. However, most PCjr parts are not rare or coveted, so doing a few modifications here and there isn't going to harm anything. And there is a lot of fun in pushing a computer way past its design limitations.

The PCjr is an especially good target for modifications. It was so close to the PC but so limited due to some bad marketing decisions. Adding memory, diskette drives, speedup circuits, hard drives, etc. all required modifications. Some were easy to purchase and others required a soldering iron and some finesse. In many respects modifications are a part of living with a PCjr - it's a very limited machine otherwise.

There were some great hardware hackers out there who took soldering irons to their PCjrs and created some wonderful modifications. And best of all, they shared their work. This page is an attempt to describe some of the modifications that I know about. If you know of others, please let me know.


512KB Memory sidecar modifications

IBM designed the PCjr with a maximum of 128KB of memory in mind. Yet they did something strange - the BIOS of the machine was programmed to look for up to 640KB of memory. This was inconsistent with the design goals of the machine.

Several companies released memory sidecars for the PCjr after a few months. Eventually even IBM released a memory sidecar for the PCjr. 128KB just was not enough memory for a PC clone, and IBM marketing had missed the mark with the PCjr. Companies that made these sidecars included Microsoft, Tecmar, Impluse and IBM.

Many of these sidecars used 2 banks of 64KB chips for a memory upgrade of 128KB. An interesting thing about many of these sidecars is that they could be modified to use 256KB chips instead. With 2 banks of 256KB chips the sidecar would add 512KB of memory to the system. Assuming the base system had 128KB, this would give you a full 640KB on the system - a very nice modification indeed.


The 736KB Modification

The PCjr was built with onboard CGA compatible graphics which was mapped to a range of memory addresses starting at B8000, the same address as the CGA adapter on the PC. The actual memory used was in the first 128KB on the system board - the video circuitry did the address mapping to move memory references from the B8000 address range to the correct place. The PCjr was not designed to use the TTL level monochrome display adapter, which would start at address range B0000.

A 640KB PCjr had memory in addresses 00000 to 9FFFF. At A0000 was the magic 640K barrier, which was the maximum architected for the machine. However, if nothing else was in the A0000 to B8000 address range, then why not put some more memory there? And thus another PCjr modification was born. (Some other PC clones did this as well.)

An IBM 128KB memory sidecar could be modified to provide 96KB of memory between A0000 and B8000. This extra 96KB would be contiguous with the other memory, meeting the requirements of DOS. The BIOS of the machine does not look for more than 640KB of memory so a software patch must be used to tell DOS that the extra 96KB is available. The full 128KB on the sidecar could not be used because the video address range starting at B8000 was in the way and it could not be relocated.


Diskette Controller Modifications

Relatively early somebody (name withheld to protect the innocent) figured out how to modify the PCjr diskette controller to allow two diskette drives to be attached. The modification was fairly simple; it involved piggybacking a chip or two and some other minor changes. The BIOS was designed to handle up to three diskette drives so the limitation of the design of the diskette controller seems arbitrary. The modification had the curious side-effect of spinning both drives when one was being accessed.

Later versions of the disk drive modification got rid of the side-effect. A good version of the modification was printed in Home Computer Magazine, Sept 1984.


Bi-Directional Parallel Port Modification

The standard PCjr parallel port has the same design as the PC parallel port. In this design the parallel port can write eight bits at a time and can read four control lines from the printer. It is possible to use the control lines to read data, but only four bits at a time. This is slow for devices like parallel port CD-ROMs and parallel port hard drives; it effectively makes reading from these devices half as fast as writing to them.

A common modification of the PC era was to convert the parallel port to a PS/2 compatible bi-directional parallel port. This was done by cutting a pin that was connected to ground and connecting the pin to an unused pin on another chip. The unused pin is under software control by an I/O port. Once done, you can use the I/O port to toggle the flow of data on the parallel port. The default tells it to write data out; flipping the bit on the I/O port allows the computer to read inputs on all eight bits of the parallel port. This allows for reads from the parallel port that are now twice as fast.

This modification is almost entirely transparent to the machine. BIOS initializes the port correctly, and thinks that everything is normal. Software can sense if a PS/2 bi-directional parallel port is in use and act accordingly.

Click here for the gory detals.


LPT2 Parallel Port Modification

The standard PCjr parallel port is wired for exactly one set of addresses and it is not jumperable to another address. This implies that IBM did not intend for the PCjr to have more than one parallel port.

In the day when a parallel printer was the only thing you would connect to a parallel port this probably made sense. However, in the early 1990s there was an explosion of devices that interfaced to PCs through a parallel port. Scanners, removable disks, and Ethernet adapters are some examples.

These devices can be used on a PCjr. To use more than one at a time you need to either get an expansion chassis or sidecar that has a parallel port that is jumperable to another set of addresses, or you need to hack the standard PCjr parallel port to use a different set of addresses.

Click here for yet more gory details.


NEC V20 Processor Upgrade

The Intel 8088 is the standard processor used on the PCjr. On many of the motherboards the AMD D8088 is used instead. The AMD is a clone of the Intel 8088 made under license from Intel.

It is possible to replace the Intel 8088 with an NEC V20. The NEC V20 is pin compatible and mostly instruction set compatible with the Intel 8088. However, it is not a clone - it has a different implementation which allows it to execute many instructions faster than an 8088 can execute them. This gives you better performance at the same clock speed. The NEC V20 also has some instructions to allow the CPM operating system written for Z80 processor machines to run. The NEC V20 is not entirely compatible with the Intel 8088 - the popular game 'Lode Runner' by Broderbund will not run on a machine with a NEC V20.

Doing this upgrade is relatively easy and gives you a slightly noticeable improvement when doing processor intensive tasks. If the system is using the standard clock crystal and timing, the 5Mhz part is recommended.


Thin-Font Modification

The PCjr used the 6845 CRT controller, which as a popular part in its day. It was also probably used in the PC. In alpha-numeric mods, the 6845 uses a ROM chip that holds the bitmaps of the character set to draw the characters on the screen.

A popular modification was to replace the ROM used by the 6845 with one that had a slightly different set of bitmaps. Most often the replacement set of bitmaps used a "thinner" font which was easier to read on RGB monitors. Most versions of this modification allowed you to choose between the newer font or the standard font by using a slide switch or a software command. (If a software command was used, it was to turn the output of a port on or off. The pin controlled by the software command would be connected to the new ROM, and would set the addressing of the ROM to choose one font or the other. The slide switch does that directly.)

PC Enterprises sold a nice version of this modification. The details can be found here.


PCjr to PC Bus Adapter

Have you ever wanted to try a card designed for the PC or XT on your Jr? It may be possible!

The PC and XT used what is called the PC bus. It's an 8 bit bus running at 4.77Mhz. In 1984 the PC AT introduced an extension of the PC Bus that did 16 bit data transfers at 6Mhz. The bus on the PC AT is also known as the ISA bus. Some ISA bus cards are designed to run on the PC bus as well.

The pins on the Jr's I/O expansion bus map to the pins on the PC Bus fairly well. There are some problem areas:
  • DMA lines: The PC Bus has lines for DMA, while the Jr does not.
  • IRQ lines: The Jr has IRQs 1, 2, and 7 available on the bus; the PC bus does not include IRQ 1 and IRQ2 is rarely used.
  • Miscellaneous lines: The Jr has audio lines, but is missing a -12V line. The PC has other miscellaneous lines.
In general, if you have a card that does not need DMA or IRQs, then it has a good chance of working on the PCjr using an adapter.

A relatively common card to use was the fixed disk controller from a PC XT. The BIOS would be rewritten to not use DMA or an interrupt. Done correctly, this card would let you boot your PCjr from an MFM hard drive.

I have experimented with a professionally made adapter and a homebrew adapter over the last few years. SCSI cards, Ethernet cards, and even standard parallel printer port cards designed for the PC bus can run in these adapters. Click here to read more about creating such an adapter.


Other Modifications

I'll write about these as I find out more about them:

PC-SPRINT: Upgrade to a faster 8088 or V20 processor and change a timing IC (8284A) on the motherboard to give you a 7.33Mhz system. Extra wait states are inserted when accessing the existing memory, so this modification doesn't double performance but it does show quite an improvement.

8284A Modification: The 8284A is the timing IC on the motherboard. There is a modification that gives you the same 7.33Mhz modification as the PC-Sprint, however you don't replace the microprocessor. (This is equivalent to overclocking the microprocessor, and may not be entirely successful.)
Created in January 2003, Last updated June 30th, 2008
(C)opyright Michael B. Brutman, mbbrutman at gmail.com

Return to Mike's IBM PCjr Page main page