VOGONS


First post, by ahyeadude

User metadata
Rank Newbie
Rank
Newbie

In my constant quest to create the most general DOS gaming machine I could (late 80s to late 90s), I finally purchased a Pentium 233 MMX for my Socket 7 build. PhilsComputerLab has an excellent write-up and benchmark suite using SETMUL to change various test registers that allow very precise control on the performance of the processor.

https://www.philscomputerlab.com/136-in-1-pentium-mmx.html

However, if you want more precision, you have to change the multiplier and FSB of the processor as well. Since this is a manual process on retro hardware via setting jumpers, I wanted to create a solution that didn't involve cracking open the case every time I wanted to change a jumper. My solution uses an arduino compatible board controlled via the motherboard's serial header that allows you to change CPU multipliers and FSB in software.

https://github.com/lnxsrt/multjumpctrl

It's written in standard arduino and QuickBasic 4.5 on the DOS side. In addition to an arduino, you will also need a TTL to RS232 converter.

multjumpsmall.png

The QuickBasic program will report ERRORLEVEL if a jumper change is required to aid in writing automated game .bat files.

I wrote this very quickly and am much more proficient in Python, so please feel free to contribute to the project to simplify or add features!

Reply 1 of 4, by Joakim

User metadata
Rank Oldbie
Rank
Oldbie

I stumbled upon this by accident, this is a cool idea, but doesn't setting the jumpers require a reboot? Will the Arduino remember the last jumper setting?

Reply 2 of 4, by ahyeadude

User metadata
Rank Newbie
Rank
Newbie

CPU multiplier requires a reboot, but FSB changes seem to happen instantly. The arduino is powered from the power supply, so it maintains its settings between reboots. During a shutdown/poweroff, it will start with the defaults that you place in your Arduino code. You could modify this to use SPIFF/EEPROM to keep track of the multiplier state during shutdowns if you wanted.

Reply 3 of 4, by Bancho

User metadata
Rank Oldbie
Rank
Oldbie

This is pretty cool. I came up with a cruder method to the problem. I mounted a small 3 DIP switch to the case. 1 Dip controls 60/66mhz and the other 2 combine to adjust the multi. 50mhz is also available by pressing the Turbo Button on the case. As you mention, FSB is on the fly by Multi requires Reboot. Works pretty well though.

7ySkk3Ml.jpg

Reply 4 of 4, by Joakim

User metadata
Rank Oldbie
Rank
Oldbie
Bancho wrote on 2021-11-17, 17:03:
This is pretty cool. I came up with a cruder method to the problem. I mounted a small 3 DIP switch to the case. 1 Dip controls 6 […]
Show full quote

This is pretty cool. I came up with a cruder method to the problem. I mounted a small 3 DIP switch to the case. 1 Dip controls 60/66mhz and the other 2 combine to adjust the multi. 50mhz is also available by pressing the Turbo Button on the case. As you mention, FSB is on the fly by Multi requires Reboot. Works pretty well though.

7ySkk3Ml.jpg

Kind of cute solution also with the tiny switches I think I saw it somewhere else here. 😀

ahyeadude wrote on 2021-11-16, 20:52:

You could modify this to use SPIFF/EEPROM to keep track of the multiplier state during shutdowns if you wanted.

I'm not sure how this would work but if you feel like dumbing it down I'm eager to learn. 😀