Z80BENCH program allows you to measure and manage your MSX CPU speed.
It has been created with not only Panasonic MSX with TurboPana and MSX TurboR machines in mind, but also FPGA machines OCM/MSX++, and MSX based on boards and hardware developments like Tides-Rider and Taka-Nami that allow different CPU speeds.
The measurement is approximate and is based on the number of VDP interrupts that occur during a test loop in IM1
mode.
This means that for low clock frequencies the precision is higher and as the speed increases the margin of error also increases. But in the range of 3 to 20 MHz this error is practically negligible.
With longer test loops and longer duration, the margin of error would be reduced, but a compromise between precision and usability has been chosen.
The available options vary depending on which MSX machine you run the program on.
The visual presentation and operation is based on similar programs that were developed for old PCs under MS-DOS.
- Machine: MSX generation obtained from BIOS ROM and manufacturer if available obtained from expanded I/O ports.
- CPU Type: detection is performed by checking how specific opcodes behave for each CPU.
Z80
,R800
, andZ280
(experimental) are detected. For Z80 it also detects if it's NMOS or CMOS. - CPU Speed: speed calculated by the test loop.
- VDP Type: video chip detection (TMS9918, V9938, V9958). Output frequency is also shown (NTSC/PAL).
The options are only shown if they are detected as possible.
The keys must be held down until you hear a click sound, which is when each of the tests ends and keyboard can be read again.
- F1: Toggle TurboPana CPU speed (3.57MHz, and 5.36MHz).
- F2: Cycle TurboR CPU (Z80, R800(ROM), and R800(DRAM)).
- F3: Cycle OCM Speed (3.57MHz, 5.36MHz, 4.10MHz, 4.48MHz, 4.90MHz, 5.39MHz, 6.10MHz, 9.96MHz, and 8.06MHz).
- F4: Cycle Tides-Rider Speed (3.57MHz, 6.66MHz, 10MHz, and 20MHz).
- F6: Toggle NTSC/PAL. CPU Speed may vary slightly when changing this value due to the different interrupts frequency (60/50Hz respectively).
Clock measurement is approximate, and may vary when using external RAM mappers.
The number that appears in the border indicates the number of interrupts (*10e6) that occurred during each iteration of the test loop.
Thank you very much to everyone who has been testing the program so that it could become a reality.
NataliaPC