The amount of old PC hardware that this thing emulates is nothing short of absolutely amazing... old VGA cards, old network cards, old sound cards, the list goes on and on. You'll find old favorites like SoundBlaster and NE2000, but also some very esoteric things, like PC-BIOSes for PC's that you never knew existed...
So, there is an MS-DOS game jam going on these days (started last month, finishes in ~25 days or so), so i was trying to make a simple 3D platformer for it. I used Free Pascal and it turns out the only platform where i can actually profile Free Pascal code without issues is Linux, meaning i somehow had to make Linux run on an old PC.
86box (PCem fork) with Slackware to the rescue and here is my game running under Slackware 14.2 (the latest version) with Window Maker under an emulated 300MHz mobile MMX (my computer isn't fast enough to run this at 100% all the time sadly, but it was good enough to do some profiling):
The goal was to run on an emulated system that matched the hardware of an old PC, not to run a VM with Linux - i'd use VirtualBox for that. PCem/86box is much more accurate than Qemu when it comes to emulating older hardware, including performance differences between graphics cards.
Generally speaking if you want to run dos games, dosbox tend to be a better choice for most games, is simpler to use and there is a bigger community around it.
however, Pcem really shine in the amount of hardware supported and better support for windows. Also it seem to be more accurate, but i, personally, never found a game that needed it, but if you have some games that don't work with dosbox it may be worth a shot.
IME it tends to run very old games written for the original PC better out of the box. With Dosbox you have to fiddle a bit with the cycles so they don't run too fast or too slow.
Yes, but its x86 emulator is unfortunately very slow. I wanted to re-experience the little click game "The Green Mouse Disaster" and barely got it running, with only a few frames per second - practically unusable. This game is built on Shockwave and contains some Qt-based movies as animations.
Note that i've mainly tried 86box, which is a PCem fork (but AFAIK it is kept in sync with PCem and the main difference is a nicer GUI for Windows and that it provides nightly builds optimized for various CPUs).
For DOS games, DOSBox is generally the better and -especially- faster choice with the main exception being mid80s games that assumed a 4.77MHz CPU (you can still play them on DOSBox but you need to fiddle around with the cycles and even then it assumes 1 cycle = 1 instruction, whereas PCem counts cycles correctly and also it takes into consideration the graphics card performance whereas DOSBox draws things as fast as it can).
For Windows games, assuming you cannot run them in modern Windows, it is basically the best choice - assuming you have a really fast PC, otherwise you'll get sound stuttering and slowdowns (with my AMD Ryzen 7 3700X i can emulate a Pentium 75Hz -mostly- fine but anything above that starts to cause sound to stutter).
Though in my experience 99% of the Windows games out there will work in modern Windows with something like dgVoodoo2, a framecapping tool like RTSS and perhaps adjusting the compatibility options. It might take some fiddling here and there. Notable exception being mid-2000s games with DRM.
A new option if you have a spare raspberry Pi and want to skip all the linux and just have a DOS prompt is dosbian: https://cmaiolino.wordpress.com/dosbian/ He's adding a lot of user friendly features to help with setup and loading. Looks really promising so far!
Was reading the PCem forums to figure out how to share files with the host. It seems disk images or getting networking up is necessary (which is not uncommon for similar emulating programs).
One thing I really like about DOSBOX, is how ordinary folders in the host can be mapped to drives in the guest OS. I wish pcem has something similar. This can make creating files with ancient software more convenient (e.g. new retro games).
My approach is to transfer files to the emulated machine by creating an ISO with WinCDEmu (which integrates with Explorer and file managers that can use shell extensions like Total Commander) and mounting that ISO and then transfer files out of the emulated machine by opening the disk image with 7zip (with the machine turned off, of course).
For older machines and some other emulators i've written a tool to create floppy disk images from a list of files:
As far as i can tell bximage can only create empty images, which isn't what i was after (86box, the fork of PCem i am using, has a command to generate empty images too). What i wrote about was creating floppy image files with files inside them.
PCem shines for emulating all the old hardware required to run old operating systems that were not DOS. VirtualBox and VMWare do not work will for this since they usually since they don't have guest extensions and working drivers for things like OS/2 2.1 and Slackware 3.0.
For PC with any graphics card (except possibly MDA) there isn't any sane definition as to what cycle-accurate means at least if meant for the whole system.
I'd just like something that's reasonably close to XT with the original IBM 8-bit VGA adapter. Or whatever card would be the most common VGA expansion card for XT.
I'm sure that PCem is a capable emulator, but when it comes to Lemmings or Monkey Island, I'd still rather play them in an Amiga emulator ;) - or, in the case of Monkey Island (I/II), using ScummVM or the "special editions" with updated graphics published some years ago (https://store.steampowered.com/app/32360/The_Secret_of_Monke...)
This emulator enables a masochistic nostalgia meta-game - pick a grimy EGA port of a popular 1980s Amiga title. Pick an hateful, underpowered & obscure hardware combo that is the box claims to support. The game is just to work out the CONFIG.SYS, HIMEM & drivers to make it launch without graphical glitches & sound crackles. Enjoy!
I can't honestly say I enjoyed it, but it felt like a win, when something that did not want to work started working after you squeezed everything you could.
I was very impressed when I first saw QEMM's quickboot feature working on a friend's computer (it skips POST and boots straight back to DOS when pressing Ctrl+Alt+Del).
I remember the pain of trying to get just that last few bits of LMA necessary to get "Frontier Elite II" working. IIRC it needed something like 600k out of the 640k to be available, something that was nigh on impossible with the standard MS-DOS mouse drivers available at the time. They'd take up some 20k or so of the LMA, leaving my system at about 590k of free LMA, no matter how you tried to get them to use UMA.
I got given a mouse driver by a cousin who'd bought a new mouse that came with a driver that put most of itself in HMA and only a couple of k of LMA. That finally made it easy to have sufficient RAM left over.
I had a few minor issues with that driver, so I'd keep two copies of autoexec.bat around, one for when I wanted to play Frontier, and one for when I wanted to do anything else.
I really wish I would have realized how Moore's law diminished the relevance of electronic knowledge back in the late 80s. Would have made life so much easier and happy.
I got the "Sierra Space Quest" bundle in a Humble Bundle or something. So I fired up Space Quest 4 like we had on my old Mac and was assaulted by the crappy DOS era color palate. Since I originally played the game on a Mac the graphics were really disappointing. On the other hand, the game played smoothly and quickly, very much unlike my old Mac LC. I know there are some quicktime[1] events in the game that were hilariously easy on the old Mac because it ran so slowly.
[1] The "Press X to not die" kind, not the Mac video format.
Ah nice, I was actually looking for something like this for a retrocomputing project I had a while back, but developing directly on the hardware was just too much of a pain. This particular project was on an IBM 5155, which I imagine could be safely emulated with this using the PC-XT emulator.
I'll have to see though, as my project depends on the BIOS and ROM on the machine, which I why DOSBox doesnt work for me.
Oddly, it doesn't emulate the serial port. This is despite emulating 3d accelerators.
I wish they focused on making emulation of older models (like the original PC) as good as possible, instead of catering to people who just want to play DOS games.
What would the other side of an emulated serial port look like? A socket you need to write a daemon to manage? A TCP/IP port to some other emulated device with emulated serial port? Maybe write a daemon that emulates a Hayes AT modem and lets you "call" other daemons through a mapping of the phone number to a remote IP address/port?
Does anybody know if this can emulate composite output from a CGA card? Or are all CGA graphics going to be trapped with the horrendous eye-searing Cyan/Magenta combo everybody remembers?
This is really neat.
There's been a huge amount of work done in preserving old software, but much much less in preserving the hardware environment it ran under. Dosbox and qemu are great projects, but something specifically designed to preserve the functionality of the pc hardware, much in the same spirit of MAME, is just wonderful news, I wish them the best.
I have a lot of old hardware laying around, I will look into contributing with ROM dumps and other things.
52 comments
[ 3.7 ms ] story [ 120 ms ] threadAlso, apparently can run Windows NT and XP...
86box (PCem fork) with Slackware to the rescue and here is my game running under Slackware 14.2 (the latest version) with Window Maker under an emulated 300MHz mobile MMX (my computer isn't fast enough to run this at 100% all the time sadly, but it was good enough to do some profiling):
https://i.imgur.com/4X7lvZ7.png
In fact i wrote the Linux port under the emulated machine :-P
[0] http://ysflight.in.coocan.jp/game/towns/townse.html
[1] https://github.com/captainys/TOWNSEMU
however, Pcem really shine in the amount of hardware supported and better support for windows. Also it seem to be more accurate, but i, personally, never found a game that needed it, but if you have some games that don't work with dosbox it may be worth a shot.
For DOS games, DOSBox is generally the better and -especially- faster choice with the main exception being mid80s games that assumed a 4.77MHz CPU (you can still play them on DOSBox but you need to fiddle around with the cycles and even then it assumes 1 cycle = 1 instruction, whereas PCem counts cycles correctly and also it takes into consideration the graphics card performance whereas DOSBox draws things as fast as it can).
For Windows games, assuming you cannot run them in modern Windows, it is basically the best choice - assuming you have a really fast PC, otherwise you'll get sound stuttering and slowdowns (with my AMD Ryzen 7 3700X i can emulate a Pentium 75Hz -mostly- fine but anything above that starts to cause sound to stutter).
Though in my experience 99% of the Windows games out there will work in modern Windows with something like dgVoodoo2, a framecapping tool like RTSS and perhaps adjusting the compatibility options. It might take some fiddling here and there. Notable exception being mid-2000s games with DRM.
It's the fastest and most secure way to run DOS except the native one. No, I tried Qemu+KVM+FreeDOS, and is not as good.
PCem and the like do have some advantages, such as emulating specific hardware, or not being limited to running in x86/amd64.
One thing I really like about DOSBOX, is how ordinary folders in the host can be mapped to drives in the guest OS. I wish pcem has something similar. This can make creating files with ancient software more convenient (e.g. new retro games).
For older machines and some other emulators i've written a tool to create floppy disk images from a list of files:
http://runtimeterror.com/tools/fat12img/
(though that can only do 1.44MB floppies, meaning that it only works with an emulated 286 and above)
Or in a Unix platform, with just dd and vnconfig under OpenBSD or kpartx under Linux.
a.img: x86 boot sectorThat's under OpenBSD, under Linux is similar.
Also i'm using Windows and wanted a GUI tool.
People has been running really old Slackware releases under Bochs/Qemu since forever.
It means every chip is accurately emulated down to individual clock cycle access times.
I got given a mouse driver by a cousin who'd bought a new mouse that came with a driver that put most of itself in HMA and only a couple of k of LMA. That finally made it easy to have sufficient RAM left over.
I had a few minor issues with that driver, so I'd keep two copies of autoexec.bat around, one for when I wanted to play Frontier, and one for when I wanted to do anything else.
[1] The "Press X to not die" kind, not the Mac video format.
I'll have to see though, as my project depends on the BIOS and ROM on the machine, which I why DOSBox doesnt work for me.
I wish they focused on making emulation of older models (like the original PC) as good as possible, instead of catering to people who just want to play DOS games.