• Please review our updated Terms and Rules here

MartyPC, IBM PC 5150 / XT 5160 emulator

fs5500

Veteran Member
Joined
Nov 5, 2008
Messages
507
Official URL


I made a thread about the MartyPC emulator. In the future, please discuss the MartyPC emulator in this thread.
 
I edited martypc.toml as follows to add IBM PC 5150 (with Rev.1 BIOS)

rom_override = [
{ path = "./roms/5700019.u29", address = 0xF6000, offset=0, org="Normal" },
{ path = "./roms/5700027.u30", address = 0xF8000, offset=0, org="Normal" },
{ path = "./roms/5700035.u31", address = 0xFA000, offset=0, org="Normal" },
{ path = "./roms/5700043.u32", address = 0xFC000, offset=0, org="Normal" },
{ path = "./roms/5700051.u33", address = 0xFE000, offset=0, org="Normal" }
]

It boots with 128KB RAM.
The problem is that 131 error posts.

screenshot001..png

*diagram showing SW2 settings for IBM PC 5150 (16KB-64KB)

*diagram showing SW2 settings for IBM PC 5150 (16KB-64KB)

Personally, I think it would be nice to refer to the following site for the option to designate RAM and insert it as if the DIP switch is working.
The amount of RAM in the PCE emulator can be specified by the user as a number.

Example : 16KB / 32KB / 48KB / 64KB / 128KB / 192KB/ 256KB / 320KB / 384KB / 448KB / 512KB / 544KB (Limited amount of RAM with Rev 0 or Rev.1 BIOS) / 576KB / 640KB

When loading in the PCE emulator, pce-ibmpc.cfg is generally read and executed in the form of loading cfg from a batch file, but when the .cfg specified by the user is loaded, it is executed according to the edited or specified content.
However, in the case of MartyPC, even if the user directly edits or puts in various options, the settings are read only through the file martypc.toml.
Of course, I made various configuration files for each model, and when running MartyPC, after copying martypc.toml to the batch (BAT) file, run martypce.exe I'm taking it as a way to get it running. Similarly, in the case of PCE, after creating various configuration files, a batch file Since it is made and executed in various ways, it seems that there is no choice but to do this if you do not want to touch this part greatly.
 
Last edited:
I confess that I do most of my development on the 5160 machine; the 5150 has been a bit neglected.

I have opened an issue for the 131 error. https://github.com/dbalsom/martypc/issues/55

I am planning a better machine configuration system; A way to specify dip switches / ram size has been requested a few times.

I will note that you can specify the config file to load on the commandline:
Code:
martypc --configfile [path_to_config_file]
 
This is an example of a batch file running in my PCE emulator.

Example:

5150064c1. BAT --> IBM PC 5150 / RAM: 64KB / CGA / 1st Rev.0 BIOS

bin\pce-ibmpc.exe -v -c ibm-pc-5150-1981-04-24-64kb.cfg -g cga -r


In the case of PCE, after creating a batch file in this way, in Windows, the batch file creates a shortcut icon and executes it.
It has the BIOS and configuration settings of the original early model of the IBM PC 5150.
Execute while loading, ibm-pc-5150-1981-04-24-128kb.cfg
Refer to the .cfg file attached to the PCE emulator and use the original as much as possible.
Load and run after editing in an environment close to the real one.

In the case of MartyPC, the current configuration file is martypc.toml.
As unique as the PCE emulation above, as a user-specified configuration file
Reading is not supported and is possible only through martypc.toml.
Considering this point, I use a batch file to create a file with a different name I am processing it by copying and executing the file as follows.
(However, in MartyPC, only 128KB of RAM is supported in the 5150 environment, and EGA / VGA is not supported for graphics, so CGA and 128KB of RAM are standard.
So, create and run the configuration file as follows.)

Example:

5150128c1.toml <-- 5150 environment file edited separately in advance 5150128c1. bat (for MartyPC)

@echo off
if exist martypc.toml goto delete
copy 5150128c1.toml martypc.toml
martypc.exe
exit
:delete
attrib martypc.toml -a -h -r -s
del martypc.toml
copy 5150128c1.toml martypc.toml
martypc.exe


In this way, the file of various environment settings for each model is martypc.toml.
I'm coping with it so that it can be executed by changing the name.
 
I confess that I do most of my development on the 5160 machine; the 5150 has been a bit neglected.

I have opened an issue for the 131 error. https://github.com/dbalsom/martypc/issues/55

I am planning a better machine configuration system; A way to specify dip switches / ram size has been requested a few times.

I will note that you can specify the config file to load on the commandline:
Code:
martypc --configfile [path_to_config_file]

Oh, that's great!

Now it works.

martypc --configfile 5150128c1.toml
 
This is screenshof of 8088MPH / PC-Tools R4.30.


*From MartyPC emulator

screenshot002..png
screenshot001..png


*From PCE IBM PC 5150 emulator

pce0005.png
pce0000.png


*From 86box emulator

Monitor_1_20230726-193539-010.png
Monitor_1_20230726-195047-324.png


It's a slight difference of 1%, but I'm looking forward to seeing the same results as actual results with a little more modification.

But the interesting thing is, if you run PC Tools R4.30 8088 (4.77 MHz) PC based on actual performance / MartyPC / PCE IBM 5150 Emulator shows 100%,
while 86box, which shows True, shows 115% speed, which is somewhat abnormal, resulting in a speed of nearly 15%.

Another thing, this may be a request, but it is the storage range of screenshots. In the case of PCE / 86box,
it is saved within the actual resolution standard range, but in the case of MartyPC
it seems to include the border there, but this part is selectively limited to the actual resolution area I wish the option to be saved was added.
 

Attachments

  • screenshot002..png
    screenshot002..png
    33.7 KB · Views: 2
See this issue: https://github.com/dbalsom/martypc/issues/42

edit: As regards to screenshots, MartyPC is a bit different in how it emulates the CGA, emulating it at a lower level in which we just have a fixed monitor resolution and the CGA draws on it; so for the most part MartyPC has no conception of 'actual resolution area' if you are talking about modes like 640x400 or 320x200. Most notably it is quite possible to draw on the screen beyond these traditional limits; Area5150 demonstrates this well. So in MartyPC a "screenshot" is very literal - it is what you would see on a CRT screen. Perhaps a bit more, due to lack of plastic bezels.

I have been thinking about a selectable "display aperture" per video device, that would crop the image as desired, and one of those apertures could exclude the normal overscan extent for BIOS CGA modes, and of course, it would make sense for the screenshot function to use that aperture as well. That might be an acceptable solution for those who do not wish to see the overscan area.
 
Last edited:
Okay. Personally, it's not because I don't like MartyPC's range of screenshots.
As I said, taking a screenshot of the entire area, including overscan, is even more welcome.

For reference, I have an IBM PC 5150 / PC XT 5160 motherboard with an 8088 (4.77MHz) CPU and an MDA / CGA / EGA / VGA original graphics card,
and even an IBM PC AT 5170, IBM PS/2 Model 30 (8530, CPU: 8086-2 8MHz) I have a main board,
and if I use a speed or performance comparison utility, I can see how much processing speed performance figures come out of each CPU, and implement it in an emulator.
If you want, I can help you as a reference. is there.

To be honest, the processing speed of 8088 (4.77MHz) is closest to the original PC.
I realize that the emulator I implemented is currently the MartyPC emulator.
In fact, scrolling through CGA also shows performance or functionality close to 100%.
What's more mysterious is that 86box passes the authenticity test of 8088 at 8088MPH, but I can't understand why PC Tools 4.30 shows 115%.

On PC Tools R4.30, the speed standard of the 8088 (4.77MHz) CPU is 100%
The speed standard of 8086-2 (8MHz) CPU is about 245% (IBM PS/2 Model 30/25)
The speed standard for 80286 (6MHz) CPU corresponds to about 275% (1 wait on IBM PC AT 5170)
This is for reference only, and in reality, it is a benchmarking test program or a program that measures the processing time or performance in calculation.
While using it a lot, how different the figures are between the actual machine and the emulator,
This issue can only be resolved step by step over a long period of time. doesn't exist.
Still encouraging, thanks to the MartyPC emulator, the 8088 (4.77MHz) It means that the implementation of the emulator has come very close to the actual CPU.

Another thing that helps to measure the processing speed is It is to utilize the TIME function in BASIC.
In the CPU Z80-based MSX model, the difference between practical and emulator.
One of the clearly revealed parts is the exact processing speed and time required of the CPU.
There is no emulator that implements 100% of the processing performance of the actual CPU.

What I want is not to look at 100% perfection, However, I hope that MartyPC will pass it someday, just as I passed it in 86box.
 
Last edited:
What's more mysterious is that 86box passes the authenticity test of 8088 at 8088MPH, but I can't understand why PC Tools 4.30 shows 115%.

Not to throw shade at 86Box, but from what I can tell, it passes the 8088MPH CPU test by accident, not because it's more accurate.

I have an instrumented version of the CPU test from 8088MPH that prints the timer count at 8 checkpoints during the CPU test; if we observe that on a real IBM 5150, then on 86box, we can see that 86box reaches the checkpoints at different times. But, the deltas happily cancel out, and thus it ends up reaching the the correct final counter value to pass. It doesn't have to be cycle-perfect, 8088MPH allows for some variance.

What I want is not to look at 100% perfection, However, I hope that MartyPC will pass it someday, just as I passed it in 86box.

It is already fixed. The issue I linked goes into detail about it. But I have some minor refactoring of the CPU to do before the next release will come out.
 
It figured out that MartyPC (8088) emulator doesn't run on Windows 11.
 
It figured out that MartyPC (8088) emulator doesn't run on Windows 11.
martypc_win11.jpg

Sure it does.

If you are having issues running MartyPC a proper bug report including specifications, details and output of the console log would be appreciated.
 
Back
Top