Page 1 of 1

SPEEDSYS Benchmark

Posted: Wed May 22, 2024 9:45 pm
by Lukage

Hello, just for curiosity and for its widespread use, I managed to finally ran through SPEEDSYS v4.78 on MiSTer using various speed settings. Enjoy !

MiSTer30MHz.png
MiSTer30MHz.png (9.24 KiB) Viewed 2821 times

30 MHz, L2 cache ON

MiSTer56MHz.png
MiSTer56MHz.png (9.4 KiB) Viewed 2821 times

56 MHz, L2 cache ON

MiSTer56MHzL2OFF.png
MiSTer56MHzL2OFF.png (6.28 KiB) Viewed 2821 times

56 MHz, L2 cache OFF

MiSTer90MHz.png
MiSTer90MHz.png (9.8 KiB) Viewed 2821 times

90 MHz, L2 cache ON

This was a tough one to find out why exactly this program does not run. It was in plain sight all the time, but I went through all the trouble to find out that one simple thing. To replicate running speedsys, you just need to find file sw/sysbios/rombios.c in ao486 repository, and inside that file find BIOS_COPYRIGHT_STRING:

Code: Select all

#define BIOS_COPYRIGHT_STRING "(c) 2001-2017  The Bochs Project"

Replace it with anything Speedsys understands (it needs to be null terminated string for known BIOS), for example:

Code: Select all

#define BIOS_COPYRIGHT_STRING "Award Modular BIOS v4.51G\00"

Recompile BIOS, and place your new boot0.rom on your MiSTer.


Re: SPEEDSYS Benchmark

Posted: Thu May 23, 2024 10:27 am
by rubberduck

Is adding \00 to the String enough?


Re: SPEEDSYS Benchmark

Posted: Thu May 23, 2024 2:27 pm
by Lukage

There are several detection routines for different BIOS vendors, for example you have this hardcoded test for Award BIOS:

speedsys.png
speedsys.png (21.57 KiB) Viewed 2608 times

Code: Select all

cs:0B6E                 cmp     dword ptr [si], 72617741h
cs:0B75                 jnz     short not_award
cs:0B77                 cmp     dword ptr [si+0Bh], 42207261h
cs:0B7F                 jnz     short not_award
cs:0B81                 cmp     dword ptr [si+10h], 7620534Fh
cs:0B89                 jnz     short not_award
cs:0B8B                 mov     cx, 1Ah

                         Award Modular BIOS v4.51G
Offset  0, 0x72617741 = "Awar"
Offset 11, 0x42207261 =            "ar B"
Offset 16, 0x7620534F =                 "OS v"

There are three hardcoded 32-bit values, which translated to ASCII yields parts of "Award Modular BIOS" string. This differs for different vendor BIOSes. Also, you can see this only after letting speedsys to unpack into memory, because the .exe is compressed. You cannot disassemble it as it is. So no, terminating it with null at the end will yield non-functional speedsys. It needs to be compatible with one of the detection routines.


Re: SPEEDSYS Benchmark

Posted: Thu May 23, 2024 2:40 pm
by rubberduck

Is it possible that you provide a binary patch to patch the default bios to a working one?


Re: SPEEDSYS Benchmark

Posted: Thu May 23, 2024 2:54 pm
by breiztiger

and can't we take last rombios.c build ?