VIM the Virtual Machine debugger

I stumbled across this site a while back, but could never get it to run.  From the description VIM is:

..(vim) is a debugger, I can’t let a bad program take out the interrupt vectors, DOS, or whatever. Hence the “Virtual” in the name — VIM takes whatever memory it can get, and sets up the interpreter to use a “virtual” processor. So, when the interpreter uses Interrupts, DOS, etc, it’s using the virtual copy, so that a bad program destroying them won’t hurt VIM, the real DOS, real interrupt vectors, etc.

Which is very cool, unlike traditional debuggers which try to hide in memory, VIM executes outside of memory and is then invisible.  Unfortunately it is rather tied to ANCIENT hardware.  And executes better on an 8088/8086/80286 processor.  I thought I could run it on Qemu, but it’ll trap on the BIOS as it’ll have instructions outside of VIM’s understanding.  However using PCem’s 80286 emulation it’ll run fine.

VIM running MS-DOS

VIM running MS-DOS

Another interesting thing about VIM, is that it includes the full source code, which is built with Aztec/C, however it doesn’t build cleanly as you have to finagle some of the assembly.

Running this on PCem is quite nice, as you can set it for a FAST 80286 computer, so it won’t take 10 minutes to boot a virtual copy of MS-DOS.

Is this useful? Well maybe if you feel the need to write an MS-DOS device driver, VIM can debug it.. but otherwise, it is an interesting fossil.

Leave a Reply