IBM PCjr Accelerator – MCL86jr

I have finished tweaking the performance of this card and Im happy to say that it increases the PCjr’s speed by nearly 6X, over 4X faster than an IBM PC/XT, and about as fast as the 8Mhz IBM PC AT! I took some screenshots below of the latest performance numbers.

I uploaded the FPGA and board files to Github:

The FPGA is a Xilinx Spartan-6 which contains the MCL86 microsequencer-based 8088 core and two SRAM controllers for the 512KB of SRAM on the board. The slow controller runs at the bus speed of the PCJr so that when using the cycle accurate mode it will perform the same as the regular physical DRAM on the PCjr’s motherboard or side-card. When the MCL86jr is put into “unlocked” or non-cycle accurate mode, it then uses a fast SRAM controller which accesses the SRAM the fastest possible speed of around 50ns! It is the combination of this fast controller and the CPU running in non-cycle accurate mode that allows the MCL86jr to boost the PCjr’s speed by more than almost 6X!

The schematics and layout was done using KiCad and the board was manufactured and assembled by PCBWay with a total total cost per board of around $50.

I was able to successfully test a number software packages and tools which will be listed at the bottom. There are a few issues that arose when using the MCL86jr Accelerator board in the PCjr. One is that the PCjr’s internal diagnostics, which are started by pressing Ctrl-Ins-Del do not all work. Another is that the PCjr’s BASIC cartridge does not work, but the BASIC included with any DOS version does work. So does the PCjr’s internal cassette BASIC. I believe both of these issues are due to speed differences which IBM is checking. Perhaps it is a way to ensure this version of BASIC will only run on a PCjr and not any other machine…

The MCL86jr will boot into cycle-accurate mode with an additional 512KB of RAM which brings the total memory to the maximum of 640KB. To run in accelerated mode the user can run a small DOS program called MCL_FAST.COM. The program MCL_SLOW.COM will bring the CPU back into cycle-accurate mode.

Software verified to work:

DOS 1.0
DOS 2.0
DOS 2.1
DOS 3.1
DOS 3.2
ITT DOS 2.11
BASIC ** Disk version with PCjr cartridge BASIC not installed

IBM PCjr Sampler
PrintMaster Plus
Exploring the IBM PCjr

IBM Macro Assembler 1.0
Turbo Pascal 2.08 — Runs obviously faster in “unlocked” mode
Norton Utilities 3.0

Lode Runner
Space Invaders
King’s Quest I
Microsoft Flight Simulator II
Congo Bongo

IBM PCjr Accelerator – MCL86jr

MCL86jr – World’s Fastest PCjr

I made some feature and speed improvements to the MCL86jr board which set a new speed record for the World’s Fastest PCjr!

The MCL86jr board brings the PCjr’s total memory to 640KB and supports 8088 cycle-accurate mode as well as an “unlocked” mode which makes it around 4X faster than the IBM PC and about as fast as an IBM PC-AT!

I added two controllers to access the 512KB of SRAM. One of them runs at the 8088 bus speed which is just as fast as the memory you would plug into the side of the PCjr and runs about 1uS per access. The other controller, when selected, runs at the speed of the SRAM which is 50ns. The slower controller is used in 8088 cycle accurate mode and performs identically to the PCjr’s physical memory. The fast controller is used in “unlocked” mode and runs many times faster than the original hardware.

I also reduced some register pipeline delays in the FPGA which increased the performance to a new record.

MCL86jr – World’s Fastest PCjr

MCL86jr initial results

I just received the MCL86jr board in the mail today and it seems to be working great! I was able to program the FPGA and the attached SPI flash, and then use it to boot the PCjr! I added a DIP adapter so that the pins on this board would not bend and it all fits perfectly under the disk drive carrier!

The initial FPGA code contains the MCL86 CPU core and an 8088 BIU so that it can be used on the PCjr. The next step is to add an SRAM controller so that the additional 512KB can be available to the computer which brings system memory to 640KB. After that I will add registers to provide the ability to run the CPU core as cycle accurate or unlocked mode which allows the PCjr to run significantly faster. I will also add a “fast” SRAM controller which can access the 512KB of memory within 50ns rather than at nearly 1uS as as it would for cycle accurate bus mode.

There is also 32KB of block SRAM in the FPGA which I may use to store PCjr cartridges or the XT-IDE boot image. I will also add the ability to change the computer type-ID to a PC,XT, or AT. This will all be under register control so no jumpers or switches will be needed!

PS: Those red LEDs blink back and forth like KITT from Night-Rider!

Here are a few pictures:

MCL86jr initial results