Page 1 of 1
PCjr running with MCL86
Posted: Sun Jan 01, 2017 5:00 pm
by MicroCoreLabs
Hello everyone!
Mike Brutman suggested I post a link to my blog entry describing a project where I ported the MCL86, a cycle-accurate - microsequencer-based 8086 core, to an IBM PCjr.
Here's the link:
https://microcorelabs.wordpress.com/
The IBM PCjr was actually one of my first computers which I was very fond of, so I thought it would be a fun project to port the MCL86 to this hardware. Hopefully some folks in this forum will also find this project interesting.
The next step will probably be to integrate a block of RAM into the FPGA, perhaps 128K or so, and run it at the processor's core speed of 100Mhz and 16-bit width. It might be amusing to see a PCjr run from memory which is accessed at potentially 10X faster than the 4.77Mhz, 8-bit local bus!
Thanks,
-Edward
Re: PCjr running with MCL86
Posted: Sun Jan 01, 2017 6:13 pm
by alanh
Nice. I've had the same thought for a while, except all the opensource x86 cores all have quirks that make such a project more than trivial.
What is the maximum clock for your core on say an XO2 speed 4, 5, or 6?
I assume you are in the engineering consulting business. Hence the commercial marketing of your cores. However, is there anyway to integrate your core in bit-file form into a real project like this done by myself or others?
World's fastst PCjr?
Posted: Mon Jan 02, 2017 12:34 pm
by MicroCoreLabs
I added 128KB of RAM to the FPGA and removed the cycle compatibility to the original 4.77Mhz processor and got some interestinig results:
https://microcorelabs.wordpress.com/
Is this the world's fastest IBM PCjr?
alanh: You can contact me through my website to discuss potential projects using the MCL86 core.
-Edward
Re: PCjr running with MCL86
Posted: Mon Jan 02, 2017 12:35 pm
by Brutman
I knew I had to get you two together. ;-0
Re: PCjr running with MCL86
Posted: Mon Jan 02, 2017 2:05 pm
by KenG
Any chance that this could be developed into a plug and play upgrade? My first PC compatible was a Commodore Colt. It had an 8088-1 processor that could be run at 9.16 MHz. It would be great to get a PCjr that fast, especially if you could control the speed with a program or TSR.
Re: PCjr running with MCL86
Posted: Mon Jan 02, 2017 8:44 pm
by MicroCoreLabs
My first machine was a TI 99/4A which I programmed until it ran out of memory! My second was the IBM PCjr which I programmed BASIC and Turbo Pascal in high school, and in college I used it as a 1200 baud dumb terminal to log into the school's VAX machines. Lots of history with the Jr, so it was a pleasure to target the MCL86 to this machine. Tricking it out to be as fast as an IBM PC AT was the icing on the cake.
Creating an IBM PCjr upgrade board is probably not in the cards anytime soon as it would be hard to justify the expense and time to develop. (At least right now)
But if I had the time... What would really be cool is to integrate ALL of the RAM an EPROMs into a single FPGA which would of course be accessed at the core's clock rate. A mirror of the video RAM in the lower 128KB could also be on-chip and would be "write-through" so writes make it to the physical RAM and reads would be from the on-chip RAM. The FPGA would probably need to snoop writes to the VGA register that sets which video page B8000 maps to. There would probably be some other details that need to be considered as well, but it would probably result in an extremely fast Jr!
Maybe someday...
Thanks!
-Edward
Re: PCjr running with MCL86
Posted: Tue Jan 03, 2017 4:08 am
by KenG
I was thinking more like the Jr-IDE project where members of this board would help with prototyping and testing. I know it could never sell enough units to justify the effort for a company. I had been thinging along the lines of creating a modern version of the jrExcellerator using a 16 MHz V20 chip, some static ram, and a cache controller. You seem to have gone way beyond that. Great work! Thanks for sharing.
Re: PCjr running with MCL86
Posted: Tue Jan 03, 2017 11:16 am
by MicroCoreLabs
The only quirk I encountered was that some test in the PCjr's POST has a speed dependancy and would always fail if I sped up the processor before it finished. After powerup it would just beep twice with no IBM splash screen and the processor was running the HALT instruction. Maybe thats a hint to which part of the POST failed. My guess would be some kind of a timer test...
To get around this, I keept the MCL86 core cycle accurate until after the POST finished, then disabled it so it could run at top speed.
Just something to consider if you use a 16Mhz V20 as a replacement for the 8088. You may need to dig into the BIOS to have it skip over this speed-dependent code, or run slower during POST.
Re: PCjr running with MCL86
Posted: Tue Jan 03, 2017 12:09 pm
by Brutman
I can't remember where I saw it but it would not surprise me at all if the POST process was timing sensitive. There are devices (floppy controller, 6845, serial ports, interrupt controllers, etc.) that might not respond correctly to a machine that is too fast. The device might be fine, but if it doesn't look like the initialization completed then the POST will fail.
There is a manufacturing mode you can trigger by using a plug that connects to the joystick ports that will send out more detailed POST status than usual. If you are interested in trying that out I'll dig out the plugs and get a pinout for them to see what trips the manufacturing mode test.
Mike
Re: PCjr running with MCL86
Posted: Tue Jan 03, 2017 1:21 pm
by geoffdaddy
If you have a couple joysticks, you can enter the mode with the appropriate button presses (although I didn't bother to document what those were!). It will spit post codes out the serial port at 9600bps, 7O2. You have to use a terminal program or something else suitable to display the codes as they are hex codes rather than ASCII printable.
I used it to diagnose a problem with the RAS/CAS delay line on my PCjr. You have to peruse the Hardware reference manual in the BIOS listing for specific details about which code means what. I didn't find it documented anywhere else online what they meant.