PDA

View Full Version : And now for something completely different



jh1523
June 7th, 2014, 04:36 PM
... or not, depending on your point of view.

The fundamental question is: can a modern PC run DOS, and DOS-based programs natively without any emulation?

My test machine: relatively recent (less than2 years old) laptop with core i7 CPU, 8GB RAM etc Here's the manufacturer config/order page to get an idea: http://web.eurocom.com/ec/ec_model_config1%281,228,0%29x
To boot DOS I added an external USB 3.5" FDD. The DOS version I choose is MS_DOS 3.20, installed from original floppies. I won't be touching the machine's HDD in any way, everything is to be done on floppies.

Step 1: install DOS to a floppy disk, to be used for further testing. Boot from the setup disk #1: successful. The setup program runs correctly and installs a working copy of MS-DOS 6.20 to a blank floppy after much swapping of disks.

Step 2: boot from the newly created floppy: successful. everything seems to be working fine. The setup program didn't install any memory managers so decompress and add himem.sys and emm386.exe to the floppy. Also add jemmex.exe http://www.japheth.de/Jemm.html my favorite modern memory manager.

Step 3: enable UMB/XMS/EMS. First attempt using jemmex. Created autoexec.bat and config.sys with the appropriate device lines. Appears to boot fine, "mem" reports both extended and expanded memory enabled.
Step 3a: attempt to actually use the ext/exp mamory. For that test I use an old game, Frontier Elite 2 http://en.wikipedia.org/wiki/Frontier:_Elite_II that needs expanded memory to run, more precisely 768k of it. Game starts and asks as usual to select audio card, I select "none" as there is none that DOS can use in this system. Computer crashes with a register dump on the screen by jemmex. Need to pull the power cord.

Step 4: enable UMB/XMS/EMS the Microsoft way, i.e. with using himem.sys and emm386.exe. Boot successful, mem reports XMS and EMS enabled
Step 4a: same as step 3a as far as procedure goes. Sound select screen displayed, selected again no sound. System instantly freezes, no screen dump.

Step 5: abandon game, try to load a device in UMB. Chose a simple mouse driver, ctmouse.exe http://cutemouse.sourceforge.net/ in conjunction with upper memory enabled with himem.sys/emm386. Added mouse driver to config.sys (using devicehigh); system boots then crashes before prompt.

So it seems that the upper memory enabled by classic or modern DOS memory managers is bogus/doesn't work and any attempts to use it crashes the system.

Any ideas what should I try next? I still want to try my best to run that game on the bare hardware. However, I bet modern chipsets don't know what to do with the memory above 640k in real mode. Bummer.

SomeGuy
June 7th, 2014, 05:02 PM
I would expect EMM386 to work. You might try running a system checker program with no memory managers loaded to see if there are any ROMs in the upper memory area that you might need to manually exclude.

But more than likely you are running in to some other compatiblity issue besides memory. For example, it may be probing for a hardware device such as a sound card, special video, or joystick, at startup and hitting something it shouldn't. Poorly coded timing loops are another real possibility. Those kinds of games would often have compatiblity issues even on computers of their day.

jh1523
June 7th, 2014, 05:12 PM
But just loading a simple mouse driver crashes it. The driver wouldn't be looking for sound or video cards, would it?

SomeGuy
June 7th, 2014, 05:34 PM
Mouse driver is a whole different can of worms. :) Are you using a USB mouse with "Legacy" bios emulation enabled? I've never seen that work right with mice.

jh1523
June 7th, 2014, 05:46 PM
I'm actually not using any mouse at all. I just wanted to see if the driver loads. FWIW on an older 486 system, loading the driver without any mouse plugged in doesn't hang it. Also, on the modern laptop loading the driver in conventional memory doesn't cause a crash.

I'll be trying a few other tricks. For instance I want to see if UMBPCI can make sense of the upper memory. Also, perhaps something old and stupid like emm286.exe may work. :)
I wouldn't even care about upper memory so much if I didn't need to find a block to map expanded memory in.

Agent Orange
June 7th, 2014, 07:11 PM
You can boot and run DOS on a modern machine but that's about as far as it goes. I know of no modern chipset that supports DOS; i.e., video, sound, mouse, etc. Even if you were to disable your integrated mobo sound and install a PCI audio card, you would still need driver support - same for the video. Also, it would be very tricky to garner any USB mouse support for DOS on a modern mobo.

krebizfan
June 7th, 2014, 07:36 PM
Seagate has SeaTools for DOS which launches a GUI with full mouse support and will use extended memory. Okay, it is based around Freedos but did work on my I7. If you can find a troubleshooting report for SeaTools for DOS for your specific system, you might find out what adjustments to your BIOS will be needed to have a DOS run.

Caluser2000
June 7th, 2014, 09:41 PM
Anyone played around with doscore and the like at all? Lightdos looks interesting.

jh1523
June 7th, 2014, 09:45 PM
Well here's more info. I used umbchk (from umbpci) to probe the upper memory, it reports that only the range d000-dfff is usable for UMBs. However when I probe that range for availability of ISA DMA with dmachk, it reports that the range d000-d3ff is OK for ISA DMA then the computer freezes. That's useless for a EMS frame. BTW, umbpci does recognize and support the chipset on this machine.

FWIW I tried again with FreeDOS installed on a USB stick. The frame page for EMS was installed automatically at d000, but it's unusable. Any attempt to use the expanded memory results in a crash.

anormal
June 8th, 2014, 05:27 AM
i found this thread very interesting, i've been lately trying a lot of old dos apps in all the emus (pcem,dosbox,bochs,qemu,mess,pce), and any of them works perfect.
i'll be very happy when we have a vintage pc emu that works as good as many modern console emus (bsnes for example), two baseline platforms will be ok, a standard cga 8086 with no sound, and a 386/486 with vga, sb or gus and hd.

i've also tried to run old stuff in modern pc, but with lots of problems, i'll keep trying :D

njroadfan
June 9th, 2014, 03:47 AM
Well here's more info. I used umbchk (from umbpci) to probe the upper memory, it reports that only the range d000-dfff is usable for UMBs. However when I probe that range for availability of ISA DMA with dmachk, it reports that the range d000-d3ff is OK for ISA DMA then the computer freezes. That's useless for a EMS frame. BTW, umbpci does recognize and support the chipset on this machine.

ISA DMA likely isn't going to work at all on a modern machine with a LPC controller. The only thing that really used it was the floppy controller, which that machine lacks. If you can, completely disable all USB "Legacy Mode" support. You don't want the BIOS loading that stuff at all. Speaking of, does the machine still have a traditional BIOS? Something tells me that UEFI with a "Legacy Support Module" isn't going to implement every single function of the classic BIOS outside of whats needed to kickstart an OS into protected mode.

Stone
June 9th, 2014, 04:15 AM
i've also tried to run old stuff in modern pc, but with lots of problems, i'll keep trying :DYou say you've tried DOSBox, among others. Everything I've run in DOSBox has run really well, both games and apps.

jh1523
June 9th, 2014, 03:30 PM
ISA DMA likely isn't going to work at all on a modern machine with a LPC controller. The only thing that really used it was the floppy controller, which that machine lacks. If you can, completely disable all USB "Legacy Mode" support. You don't want the BIOS loading that stuff at all. Speaking of, does the machine still have a traditional BIOS? Something tells me that UEFI with a "Legacy Support Module" isn't going to implement every single function of the classic BIOS outside of whats needed to kickstart an OS into protected mode.

Actually I don't know. It looks like a regular BIOS (AMI dated 2011) but it may as well be UEFI. Come to think of it, UEFI is mentioned in one place, and one place only: USB legacy support ("disable" says "support USB devices in UEFI mode only")


You say you've tried DOSBox, among others. Everything I've run in DOSBox has run really well, both games and apps.

DOSbox is a wonderful program, but its official policy is to support games, and games only. Non-game applications happen to run too, but if one of them is broken they will not try to fix it. If a game is broken they will. That is the official devs position.

Stone
June 9th, 2014, 03:54 PM
DOSbox is a wonderful program, but its official policy is to support games, and games only. Non-game applications happen to run too, but if one of them is broken they will not try to fix it. If a game is broken they will. That is the official devs position.Maybe I run simple, low end, old DOS apps but as I said, they all work perfectly under DOSBox. Maybe the 'official devs position' is what it is because they know that the apps, unlike some games, are more well behaved and for the most part don't require much, if any special attention. :-)

njroadfan
June 9th, 2014, 07:52 PM
Actually I don't know. It looks like a regular BIOS (AMI dated 2011) but it may as well be UEFI. Come to think of it, UEFI is mentioned in one place, and one place only: USB legacy support ("disable" says "support USB devices in UEFI mode only")

If it says "Aptio" anywhere on the POST screen or setup program, its a UEFI system. Aptio is AMI's brand name for their UEFI firmware. Most companies stuck with a standard text based setup program despite the fact that UEFI can allow for fancy mouse driven interfaces. Another issue that can trip up things is booting off of a USB floppy drive. I wouldn't be surprised if the BIOS/UEFI is sticking Int 13h routines for the USB floppy support in odd areas.