DOS Days

Can I Get a 286 To Run Like a 386 - Part 4

25th October 2021


In Part 3, the benchmarking of my LM103S motherboard with standard 80286-12 and 80287-10 began. I tweaked the BIOS settings to run with zero wait states and shadowed both the ROM BIOS, which gave a decent uptick in performance according to synthetic tests, and showed some real-world improvements too.

In this part, I have purchased some upgrades to install ! These are:

  • Four SIMM slots
  • A selection of faster crystal oscillators

The SIMM slots were bought from RS Components (full description was 30-way vertical metal latch SIMM socket) at a cost of £2.13 each:


Really cheap and they slot in directly, though I recommend desoldering the SIPP sockets and soldering these in place for a more permanent solution

The crystal oscillators I bought are to replace the 4-pin 25 MHz crystal IC in position X2 on the board

In this pile are crystals of 32, 40, 48 and 50 MHz flavours, which should permit running a CPU at 16, 20, 24 and 25 MHz respectively (the motherboard will divide the crystal frequency by 2 to provide a clock signal to the CPU). By the way, I added the 48 MHz crystal is here on the basis that my initial findings on the web of the HT12/A chipset struggled to run faster than 23.5 MHz, so I have a feeling this may be the one where it maxes out.

The Memory Upgrade

But first things first, let's see if those SIPP sockets work, and determine what configuration will be beneficial for this motherboard. I have more 30-pin SIMMs than I do DRAMs, so my goal with this upgrade is to be able to use faster memory with the use of SIMMs that are faster than those 80ns DRAMs.

The SIPP sockets are identified on the board as Bank 0 and Bank 1, Bank 0 being the two closer to the ISA slot, and Bank 1 being the two on the very edge of the mainboard.


SIPP Sockets with SIMM Sockets plugged in!

This was so much easier than I ever anticipated - just press the SIMM socket down into the pre-existing SIPP socket after lining up the pins, and you're done! Oh, if you do this yourself, be sure you line up pin #1 of the SIMM socket with pin #1 on the underlying SIPP - you don't want to be installing RAM the wrong way around - On 30-pin SIMMs, pin 1 is the end nearest the notch.

The SIMM sockets do wobble a little bit but they're not going anywhere - just give some added support while you install the SIMMs and make sure they snap into place securely.

OK, so with some messing around I have realised that you must remove all the DRAM memory chips for the SIPP sockets to be usable at all. The 1 MB of DRAMs act as Bank 0 and Bank 1, as do the SIPP sockets, but strangely, you cannot mix and match - I tried keeping bank 0's DRAMs installed and then used SIPP bank 1 (and then vice versa), but the PC wouldn't POST. So we have to use the DRAM sockets or the SIPPs.

The working configurations for the SIPP sockets appear to be something like this:

Bank 0 Bank 1 Total Memory
Two 256Kx8 Empty 512 KB
Two 256Kx8 Two 256Kx8 1 MB
Two 1024Kx8 Empty 2 MB
Two 1024Kx8 Two 1024Kx8 4 MB

I tried 4 MB SIMMs but no configuration would work, so as I suspected the HT12/A really only supports a maximum of 4 MB RAM.

The 256x8 SIMMs I used were 80ns and the 1024x8 ones were 70ns. For the remainder of the testing I will keep these 70ns ones installed, giving me 4 MB of RAM.

The Crystal Upgrades

Before I start desoldering stuff, there are two things I will do:

1) I am going to remove the math coprocessor. Coprocessors tend to run pretty hot, don't appreciate being overclocked, and I don't want to damage it in case I have my theory wrong and assume that somehow it uses a CLK/3 signal from that 25 MHz clock - I suspect it uses a CLK/2 signal, so the poor 10 MHz 80287 copro might already be getting slightly overclocked with the stock crystal.

2) I want to test that my Harris 80286-25 actually works. It will of course only run at 12 MHz due to the crystal currently installed, but since buying it I have been unable to even check if it's a working CPU.

One important note: Do not assume all 286 chips are equal! The etched lettering on 286 chips can be the wrong way up. From what I have seen, Siemens-branded 286 CPUs have a slope along the bottom edge when looking at the logo and text the right way up, as do AMD and Intel. However, Harris-branded ones have the slope along the top edge. The top-left corner of this slope on all 286 CPUs is Pin #1, so be sure to align this to Pin #1 of the socket.

 
The sloping edge is easier to see in the 2nd picture above,
just above the dot on these two Siemens 286 chips

Good news - my Harris 80286-25 is working, in so far as it POSTs. Time will tell if it's a true 25 MHz chip or a sanded-down and re-etched one of lesser quality.

Now onto some motherboard surgery! Overclocking on a board like this is pretty simple - just swap the CPU's crystal for a faster one. There are just 3 things that will prevent the PC from working at a higher clock speed:

  • The CPU not able to run at the higher clock speed
  • The chipset not able to run at the higher clock speed
  • The RAM not being able to keep up

The stock crystal being replaced is a 4-pin type rather than the more traditional metal cans you see on older mobos. A 2-pin oscillator basically has one pin for ground and the second doubles up as +5V with a frequency output signal. With these 4-pin ones, we have pins for ground and +5V, a separate frequency output pin (CLKOUT) and a 'clock output enable' pin (CLKOE). The crystal I am removing is a Seiko SG51K which provides a 25 MHz CLKOUT signal. Just as with other ICs, a small circular detent indicates pin 1, and the replacement oscillators I bought all have the same pinouts as this so it's a simple case of orienting the new component the same as the old. To make insertion and removal as painless as possible, I soldered an IC socket to the four pins on the board - it doesn't look great but it works:

 
The Crystal tower!

16 MHz, 1 Wait State

So starting off nice and easy, I installed the 32 MHz crystal, which will run the Harris 80286-25 at just 16 MHz. With 1 wait state I got these results:

Compared to running the 12 MHz Siemens-branded 80286 with 1 wait state (WS), we see about a 28% uptick in synthetic benchmark performance with this Harris 286 running at 16 MHz (also with 1 WS), but about a 2% reduction in performance compared to the 12 MHz one running with 0 WS.

Wolfenstein 3D's timedemo produced just 9.2 fps on my fastest ISA graphics card, the Paradise/Western Digital WD90C30. This was borderline unplayable.

16 MHz, 0 Wait States

Keeping the same crystal oscillator, but changing to zero wait states, things started to really improve:

So judging by these figures we get about a 29% increase in performance over running at 12 MHz with zero wait states and 30% increase over running at 16 MHz but with 1 WS. It is noticeable even in basic DOS navigation - the system just feels more responsive. Any synthetic benchmarks that use the Dhrystone algorithm seem to really favour zero wait state conditions over 1 WS, whereas other benchmarks still show the benefits of a higher clock speed.

Wolfenstein 3D's timedemo on the Tseng Labs ET4000 card (1 MB 80ns DRAMs) came out at 11.2 fps, and on the Paradise/Western Digital WD90C30 (512 KB 70ns DRAMs) it scored 11.8 fps. At this speed, despite the number seeming very low, the game is totally playable at the largest window size - certainly much more tolerable than when running at 16 MHz with 1 WS.

20 MHz, 1 Wait State

Now to swap out the 32 Mhz crystal for the 40 MHz one (so the CPU will be run at 20 MHz), and revert the BIOS settings back to their default of 1 wait state, these were the results:

I ran several of the Commander Keen games up to 6 ("Aliens Ate My Babysitter"), as well as Jill of the Jungle - every one of them ran super smooth on the Paradise/Western Digital WDC90C30. As did Gods by the Bitmap Brothers.

Next I tried a number of flight sims, as these tend to stress a system quite well. Starting off was F-15 Strike Eagle 2 on the highest detail level using the Paradise/Western Digital WD90C30 (512 KB 70ns DRAMs) SVGA card. I get the impression this game never runs at a high frame rate (it is probably frame-rate limited in software), so it was difficult to gauge performance. What I will say is that it's very playable - I estimate 12-15 fps which doesn't sound like a lot, but like I said I don't think the game updates that fast anyway. In Red Baron, I counted 11 fps with the WD90C30 card - the game felt sluggish when in flight - much slower than F-15 SE2. Their Finest Hour: Battle of Britain has a very low minimum system requirement (it will run on an XT), and it shows on this now-speedy 286 - I counted 27 fps on the Western Digital card! Falcon 3 also played very nicely.

Formula One Grand Prix ran, but even adjusting the detail level down the processor occupancy (holding down 'O' while in-game) never dipped below 500% until I had few cars in front of me - ideally this would be below 100%. On high detail it stuck around 533%, so this doesn't make a huge difference to the frames per second. Sadly I conclude this game is really *not* playable on a 20 MHz 1 wait-state 80286.

20 MHz, 0 Wait States

... and now with the BIOS set to 0WS on RAM and shadowed both BIOS:

20 MHz and zero wait states even worked temporarily with the 80ns individual DRAM chips, though some system hangs and screen corruption were evident during benchmarking within a few minutes.

The verdict on real-world testing in Wing Commander is that I'm now getting more like 20 fps - 26 fps in-game, even on the slow Cirrus Logic card. This was determined through recording video of me playing, then playing it back frame by frame to determine the count of screen refreshes being performed by the game. I ran WC using the Paradise/Western Digital WD90C30, which just edges ahead of both my Tseng Labs ET4000 cards, and it scored 27 fps! The game is very playable indeed on a 20 MHz 286 with zero wait states!

Playing Wolfenstein 3D in timedemo mode, even on my Cirrus Logic CL-GD510/520 card which is very slow with its 256 KB 120ns video RAM scored 9.9 fps. I then switched it out for the Tseng Labs ET4000 card (1 MB 80ns DRAMs) and the score went up to 13.9 fps. With the Paradise/Western Digital WD90C30 it scored 14.4 fps. This really isn't bad and the game is very playable without the need to reduce the game window size (a feature of Wolfenstein 3D which was useful if you had a slower PC).

 

24 MHz, 1 Wait State

OK, now we're cooking... onto the next speed bump... I removed the 40 MHz crystal and put in the 48 MHz one to get the Harris 80286 up to 24 MHz. At 1WS, these were the results:

So the 1 wait state is, as expected, crippling performance. Even when the CPU runs at 4 MHz higher frequency it's not as quick as running at a slower clock speed with zero wait states.

24 MHz, 0 Wait States

Changing the BIOS to zero wait state failed to POST - I put this down to the 70ns SIMMs not being able to keep up, so to get further on 0WS I will need to find some 60ns SIMMs. I could also try different 70ns SIMMs (or individual DRAM chips) in case the tolerances of some of these ones are just over the limit. Memory can be a funny thing - two SIMMs rated at the same speed can perform differently - one will still function when overclocked slightly, another will not.

25 MHz, 1 Wait State

Installing the 50 MHz crystal oscillator worked just fine at 1WS, and I got these results that marginally improve upon the 48 MHz one:

I must say, I was expecting the chipset to feel pretty hot during these top-end test runs; the SIMMs too, but the whole thing really didn't feel anything more than slightly warm.

**UPDATE** I've managed to source some 60ns 256 KB DRAMs! These are supposedly new/old stock and not "pulls" from existing equipment. I bought 8 of them for £16. When they arrive I will retest the 24 MHz 0 WS mode and hopefully with the zippier RAM the thing will POST successfully, and who knows.. maybe 25 MHz too.

Conclusion

The 60ns DRAMs arrived, and after installing them and removing any SIMMs from the slots, I started off with the 32 MHz crystal. It booted successfully. Gradually I switched out the crystal for faster ones, but rather frustratingly it won't boot with 0 WS enabled, even on the 48 MHz crystal. There is of course a possibility that these are not true 60ns chips.

So in conclusion, the fastest I can get is 25 MHz with 1 wait state or 20 MHz with 0 wait states on this particular board. Is it actually faster than a 386, which was, after all, the purpose of this exercise?.... Yes and no - at least some 386s. If the 386 motherboard has no level 2 cache, the 286 can achieve similar performance to a 386DX-25. In real-world testing, my OPTi 386DX-20 with 0WS ran the Wolfenstein 3D timedemo at about 17 fps. Using the same video card on this 286 at the same 20 MHz clock speed and 0WS produced just under 15 fps. So it's close, but not quite there.

A 286 at these higher speeds is so much more accessible than the 10 or 12 MHz that was more commonly used. It opens up the platform to a number of the better early graphically-intensive 386 games such as Wing Commander and Wolfenstein 3D, and makes graphic adventures from LucasArts and Sierra On-Line more playable.

I may repurpose these 60ns DRAMs on an ISA video card to give an extra speed boost, as none of mine at present are faster than 70ns, but in the meantime I will give this 286 board some downtime to recover!

Thanks for following along with me, and if you have any suggestions or observations please get in touch by using the Contact Us link just below!