• Please review our updated Terms and Rules here

Any interest in a PCjr CPU upgrade board?

Aries makes a series of coined (flat stamped) pin headers in a variety of sizes. I also recently purchased a full reel (50,000 pins) of Batten & Allen pins (the same ones Alan linked, I'd originally gotten my smaller quantity for Matt D'Asaro :) ). Henry Courbis (ReActive Micro also recently bought a reel of Batten & Allen pins, though his are bare copper with no plated finish, last time I talked to him he was potentially interested in supporting other hobbyist open source projects with his stock of them, too.
 
if you can make this work in others 8088 computers i could go for it any day of the week :D.
I suppose if it works on the JR it should work on a tandy ?.
 
> A 8086 version of this would be AMAZING.

The MCL86 core's Execution Unit (EU) actually is an 8086; just like the real Intel device. It is only the Bus Interface Unit (BIU) that makes it an 8088 or 8086. So it can easily be ported to an 8086 design.

What system did you have in mind?
 
if you can make this work in others 8088 computers i could go for it any day of the week :D.
I suppose if it works on the JR it should work on a tandy ?.

A Tandy 1000 runs its 8088 in max mode, not min mode, and the memory map is different, so presumably it would need some modifications.
 
As someone who thinks this project is cool, I cheer you on from the sidelines. However, I'm not sure I could pony up $200+ for a board.

Is there anything that limits it to the PCjr? Asking because it might be interesting to see if your replacement could be made generic enough to replace any 4.77 MHz 8088 in any system.


My sentiments exactly. And I don't even have a PCjr (yet).
I feel cpu upgrades for old systems are AWESOME, but as my collection has grown to fill a 4-car garage, the ROI just isn't there for me. If I want to run something that benefits from a 286, I pull out my model 60 or 5170. And I own a good number of accelerator cards for these machines. (my model 80 is a 486/25 right now).

I just feel 2020 hardware in a 1984(ish) machine just defeats the spirit of the machine. If I wanted to play pcjr games at 100fps, i'd just fire up an emulator. Its the reason I have the huge PEB box for my ti-99/4a and not that little credit card that does everything.

That said, I want you to continue. I want to see this a finished project. I will be sad if this doesn't pan out.
 
PS/2 model 25 owners like me have to wait long periods of time for very rare CPU upgrades. I got a 33Mhz 386SX upgrade for my model 25/286 after two years of waiting for one to pop up - and it wasn't cheap. I think due to other bottlenecks in the system it will still feel "vintage", but for people with certain computers they really like this kind of thing is really cool.
 
How about an Olivetti M24 or an AT&T 6300?

How about an Olivetti M24 or an AT&T 6300?

> A 8086 version of this would be AMAZING.

The MCL86 core's Execution Unit (EU) actually is an 8086; just like the real Intel device. It is only the Bus Interface Unit (BIU) that makes it an 8088 or 8086. So it can easily be ported to an 8086 design.

What system did you have in mind?

The PS/2 model 25. Other model 25 and 30 owners would probably really like this also. It would have to be like your dirst design probably to clear everything though: http://ibmmuseum.com/Planars/Model2...YD6f5R47EykYdP67G8jvCRPKr2tqT9paYWeytO9TT2Gnk

I would be very interested in trying such an upgrade on an Olivetti M24. Really curious to see what performance that old beast would be capable of with any CPU bottlenecks removed. :)

Does this FPGA core also support the additional V20/V30 instructions, by the way?
 
Hi,

I have another update on the project: https://microcorelabs.wordpress.com/2020/11/10/mcl86jr-worlds-fastest-pcjr/

When the board is running with the CPU in "unlocked" mode (not slowed to be cycle accurate) and using the fast SRAM controller, it appears to allow the PCjr to run 4X faster than an IBM PC/XT and as fast as an IBM PC/AT.

There are a few PCjr related issues which I am trying to understand, but the MCL86jr board seems to work great! I don't have a lot of mileage on it yet, but the results so far look good.

Some of the quirks are that Cartridge BASiC does not work, nor do some of the ctrl-alt-ins PCjr build-in tests. I also noticed that Norton's SI sometimes says it is an Intel 8088, and sometimes a NEC V20; so my initial guess is that there are loops in the software timing which rely on the exact PCjr hardware and CPU. Aside from this all of the other software I have tried works great. Things like King's Quest, Archon, Flight Simulator, multiple DOS versions, and more. I have more stuff to try, but so far most professional software seems to run fine.

Currently I am entering "unlocked" mode as soon as a key is pressed (Im looking at an NMI), but need to add some snoop registers to enable/disable things like cycle accuracy and the fast SRAM controller. I will probably use write accesses to the BIOS ROM at F0000.

I tried changing the computer-ID from 0xFD to 0xFF but DOS 3.2 doesn't like it! DOS 2.1 works fine and when running SI.EXE it shows up as an IBM PC. As soon as DOS 3.2 gets to the A> prompt and I press a key a bell sounds and the system locks up! I can make the computer-ID changeable under register contriol, but if some DOS's refuse to work then it might not be worth it...

Thanks,
-Ted
 
I'm biased, but Norton SI is hot garbage. You should try testing with TOPBENCH instead, which will give you more effective relative speed comparisons.

Very interesting and exciting project :) Hopefully it can be adapted to non-PCjr 8088 systems as well, as a homebrew accelerator for those systems.
 
If you recall you helped me run TOPBENCH on this a few years ago. The score of 11 is around the performance of a x286.

Below is the entry in your latest database. Not sure why the submitter field is blank...

[UID44F21E0]
MemoryTest=1098
OpcodeTest=607
VidramTest=1818
MemEATest=600
3DGameTest=532
Score=11
CPU=MCL86 (FPGA)
CPUspeed=100 MHz
BIOSinfo=COPR. IBM 1981,1983 (06/01/83, rev. 0)
BIOSdate=19830601
BIOSCRC16=44F2
VideoSystem=CGA
VideoAdapter=IBM PCjr
Machine=IBM PCjr (FPGA)
Description=PCjr whose processor is replaced with an FPGA containing the MCL86 core that runs faster than the stock 8088 as well as an additional 128KB of on-FPGA memory that is accessed at the CPU core speed of 100Mhz.
Submitter=
 
Last edited:
The MCL86jr achieves the most gains from the on-board system RAM which can be accessed at a fraction of the 8088's bus speed. Running the core with cycle accuracy disabled only provided minor gains. This shows that the performance is mainly limited by the processor's bus access to the system.

This works on the PCjr because there is no DMA, so most/all of the system's RAM can be held on the FPGA board. On systems which utilize DMA like the IBM XT the CPU cannot see what the DMA has written to physical memory so it cannot have local copies of this memory on-board. This is why I chose to target the MCL86 to the PCjr... If the DMA could be disabled in the BIOS so that all disk accesses were handled by the CPU then it could work for IBM PC's as well.

-Ted
 
If you recall

I did not, hence my garbage post.

Below is the entry in your latest database. Not sure why the submitter field is blank...

I'll correct that in the next release.

Thanks for the explanation. This still threatens to be the fastest way to accelerate a PCjr; the previous record was an 8 MHz NEC V20. A 9.54 MHz speed CPU modification exists, but I don't have any entries in the topbench database for it. Despite being memory-limited, if your non-cycle-accurate mode can handle MUL/IMUL/DIV/IDIV in effectively 4 cycles, that is massive.

Some of the quirks are that Cartridge BASiC does not work, nor do some of the ctrl-alt-ins PCjr build-in tests.

It's surprising Cartridge BASIC doesn't work; I guess it has speed-sensitive tests in it? As for the built-in diags, it is completely understandable why those would fail when accelerated.

I tried changing the computer-ID from 0xFD to 0xFF but DOS 3.2 doesn't like it! DOS 2.1 works fine and when running SI.EXE it shows up as an IBM PC. As soon as DOS 3.2 gets to the A> prompt and I press a key a bell sounds and the system locks up! I can make the computer-ID changeable under register contriol, but if some DOS's refuse to work then it might not be worth it...

I would strongly advise against changing the model ID byte. Some software only produces 3-voice sound and 16-color graphics if the model ID byte is set to PCjr. The whole point of keeping a PCjr around is to run said software on said hardware. I understand that an accelerated system is no longer a true PCjr, but if all I need to run something is slightly faster speed, I can run it on some other system. The FDh is part of the PCjr experience.
 
Last edited:
My very vague third-hand understanding of why you'd want to change the Model ID byte is so a rare expansion that added an 8087 to the PCjr can convince programs to check for the presence of a math coprocessor, which they otherwise wouldn't do on a Jr. Lacking that I don't think there's much to be gained.

This works on the PCjr because there is no DMA, so most/all of the system's RAM can be held on the FPGA board. On systems which utilize DMA like the IBM XT the CPU cannot see what the DMA has written to physical memory so it cannot have local copies of this memory on-board. This is why I chose to target the MCL86 to the PCjr... If the DMA could be disabled in the BIOS so that all disk accesses were handled by the CPU then it could work for IBM PC's as well.

There are several models of Tandy 1000 that don't have DMA onboard that you could take a look at targeting if you want to try something that run the CPU in "Maximum Mode" but doesn't have the DMA complication. (The original 1000/1000A/1000EX/1000HX all don't have DMA unless you add the original Tandy memory board, and I know from building my own replacement for it that the 1000EX and HX work fine with simple SRAM expansions. Their ROM checks for DMA at startup and if it's not there they use PIO for the floppy controller.)

Have you considered doubling the RAM on the board to 1MB instead of 512k? I assume the way you have it connected to the FPGA doing that would let you selectively replace the entire 8088 memory map. If you can do that and, potentially, remap reads and writes to the underlying hardware I wonder if a really radical but potentially feasible way to "fix" the PCjr would be to heavily patch its BIOS to more closely resemble the Tandy 1000's, and then re-wire the memory map as seen by the CPU so the Jr's built-in 128k of RAM would appear at the *end* of expansion memory instead of ahead of it, again, like the Tandy 1000 does it.

(In other words, instead of having the Jr's 128k at 00000-1FFFF and requiring the awkward memory hole for video in low memory you move it up to either 80000-9FFFF [with 512k on the expander] or to A0000-BFFFF [if you had 1MB available to create a contiguous 640k] so DOS no longer has to deal with those eccentricities. Downside of this is it would break compatibility with any games/programs that can't understand the video memory buffer window moving above the 128k mark, IE, the same programs that get broken by a Tandy 1000. The modified BIOS that enables this would be loaded into a section of RAM overlaying the built-in ROM and write-protected at power-on/reset; this is of course contingent on there being enough storage available to the FPGA to do this.)
 
Downside of this is it would break compatibility with any games/programs that can't understand the video memory buffer window moving above the 128k mark, IE, the same programs that get broken by a Tandy 1000. The modified BIOS that enables this would be loaded into a section of RAM overlaying the built-in ROM and write-protected at power-on/reset; this is of course contingent on there being enough storage available to the FPGA to do this.)

I own a PCjr to run PCjr software. If the basic structure of the system were altered such that PCjr-only software (that relies on 0-128K video behavior) no longer runs, I would not be interested.
 
Back
Top