Live data from Hacker News

EMU2: A simple text-mode x86 and DOS emulator

github.com

1–10 of 27 posts

Re: EMU2: A simple text-mode x86 and DOS emulator

#3
Nice- it would be awesome if it could emulate a 386 so that DOS extender-based programs could also work.

It could support graphics (pop up a window if a program tries it). Another emulator does this- it's pretty easy with SDL:

https://github.com/adriancable/8086tiny

You can run the CP/M Turbo PASCAL in almost the exact same way with this:

https://github.com/jhallen/cpm

Re: EMU2: A simple text-mode x86 and DOS emulator

#4
I once extracted data out of an old dos-software by controlling it with a script and walking through all possible outputs (this was for train schedules). This was surprisingly difficult. The biggest hurdle is getting the screen contents out of the emulator. Dosbox only gives you screenshots that are pixels. In the end I managed to do it by using dosemu2 inside tmux controlled by python.

I wonder whether this could´ve made that problem easier.

Re: EMU2: A simple text-mode x86 and DOS emulator

#5
post #2

Is this just for a fun or is it actually better than dosemu2, dosbox and qemu in any way?

Suppose you have an ancient program written in MASM (Microsoft Assembler) and you want your Linux Makefile to be able to compile it (I mean run MASM from within the Makefile just as you would run gcc). Which emulator will get you there with the least amount of work?

Re: EMU2: A simple text-mode x86 and DOS emulator

#6
post #2

Is this just for a fun or is it actually better than dosemu2, dosbox and qemu in any way?

Suppose you have an ancient program written in MASM (Microsoft Assembler) and you want your Linux Makefile to be able to compile it (I mean run MASM from within the Makefile just as you would run gcc). Which emulator will get you there with the least amount of work?

I have literally used this emulator to run MASM in this way. I was traveling with an ARM Chromebook and wanted to mess with a retrocomputing project.

dosemu was out because my host wasn't x86. dosbox was out because I wanted to run a process with filesystem access, not a whole system. qemu's system emulation has the same problem as dosbox, and qemu's user-mode emulation runs Linux programs, not MS-DOS programs.

Re: EMU2: A simple text-mode x86 and DOS emulator

#8
post #7

"emulator for the Linux text console" Not portable. Oh, well. Nice idea.

If you read the code [0], the author is using the phrase "Linux text console" to mean the Unix tty interface (/dev/tty, ANSI escape sequences, TIOCGWINSZ ioctl, etc). So it probably is portable to other Unix-like systems such as *BSD, macOS, Cygwin, etc, without much effort.

[0] https://github.com/dmsc/emu2/blob/master/src/video.c

Re: EMU2: A simple text-mode x86 and DOS emulator

#9
post #6

Earlier quoted context omitted.

Suppose you have an ancient program written in MASM (Microsoft Assembler) and you want your Linux Makefile to be able to compile it (I mean run MASM from within the Makefile just as you would run gcc). Which emulator will get you there with the least amount of work?

I have literally used this emulator to run MASM in this way. I was traveling with an ARM Chromebook and wanted to mess with a retrocomputing project. dosemu was out because my host wasn't x86. dosbox was out because I wanted to run a process with filesystem access, not a whole system. qemu's system emulation has the same problem as dosbox, and qemu's user-mode emulation runs Linux programs, not MS-DOS programs.

In DOSBox you can mount host directories to MS-DOS drives with the "mount" command (and of course you can use Linux bind mounts and mount namespaces along with it).

Re: EMU2: A simple text-mode x86 and DOS emulator

#10
I've been passively writing this (to be clear, an x86 and DOS emulator, not this project) for a while so it's awesome to see someone already write it.

My goal was to have a mechanism for bootstrapping a compiler, similar to the Stage0 [0] project, but with a lot more software already written for it and less focus on having it be verifiable. This was to eliminate one more external dependency for building my Linux distribution, which is already cross-compiled and double-compiled to verify that builds are reproducible, in order to ensure that a version can be maintained for a long time.

[0] https://savannah.nongnu.org/projects/stage0/

Post reply on HN