VOGONS


MartyPC

Topic actions

Reply 540 of 543, by GloriousCow

User metadata
Rank Oldbie
Rank
Oldbie
anttir wrote on 2025-08-26, 16:51:

Hello! First time poster here. Just wanted to drop in to say that MartyPC is AWESOME!

Also, I really hope that someday MartyPC will support 286 and 386. You see, I've been doing a little assembly programming lately, and I've found that Dosbox is not accurate at all. For example, I made two versions of a the same smooth scrolling vga game "engine". On DosBox they were equally fast, but on real hardware the other one was waaay slower.

Thanks for your kind words. I have started a 286 branch, but work is very preliminary. I believe cycle-accurate emulation of the 286 is possible and it intrigues me to attempt it. I'll leave the debates about the usefulness of that to others.
If nothing else, being able to watch the progress of the prefetch and instruction queues on the 286 would be interesting.

I've been a bit distracted with the 386 lately and working on making emulator CPU tests for the 386. I hope to get back to MartyPC by the end of the year.

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 541 of 543, by superfury

User metadata
Rank l33t++
Rank
l33t++

286 already gets complicated there. Things like various recursive descriptor loads (for example IDT->GDT/LDT recursive descriptors). One the 386 it gets even more crazier, as each access includes optional paging lookups as well (multi-level memory access trees and TLBs that cache them all).
And there's the different timings of the local caches (descriptor cache references) as well.
All built on top of the normal segmentation system (and yes, all segment descriptors are always active, even in real mode).

In my emulator's case, I simply make them all instant as it gets way too complicated to cycle-accurately implement those all (due to counting and stepping becoming very complicated due to various recursiveness).
So mine is effectively only 'cycle-accurate' in real mode (using officially documented timings however).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 542 of 543, by GloriousCow

User metadata
Rank Oldbie
Rank
Oldbie

I have the benefit of having a 286 (and a 386) under Arduino control for analyzing cycle by cycle operations.

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 543 of 543, by BinaryDemon

User metadata
Rank Oldbie
Rank
Oldbie

I gave MartyPC a try today and it helped me spot that I had accidentally compiled some programs with 286 optimizations (they worked with v20 selected, but not without). I do have one question - when I pick CGA overlay from the launcher, is it supposed to still show VGA when booting the emulator? I didn’t test any CGA specific programs, but I was hoping I could still spot something like a font difference.