These files are used to start DOSEMU as well as hold globally called functions and global vars.
Initial program executed to run DOSEMU. Gets access to libdosemu and sets international character parms. Finally calls entry point of DOSEMU emulate() function which is loaded above the usual DOS memory area from 0 - 1meg. Emulate() is in emu.c.
These are the functions defined in dos.c.
Here is where DOSEMU gets booted. From emu.c external calls are made to the specific I/O systems (video/keyboard/serial/etc...) to initialize them. Memory is cleared/set up and the boot sector is read from the boot drive. Many SIGNALS are set so that DOSEMU can exploit things like timers, I/O signals, illegal instructions, etc... When every system gives the green light, vm86() is called to switch into vm86 mode and start executing i86 code.
The vm86() function will return to DOSEMU when certain `exceptions` occur as when some interrupt instructions occur (0xcd).
The top level function emulate() is called from dos.c by way of a dll entry point.
These are the functions defined in emu.c.
call the emulate function by way of the dll headers. Always make sure that this line is the first of emu.c and link emu.o as the first object file to the lib
The IRQ numbers to monitor are taken from config.sillyint, each bit corresponding to one IRQ. The higher 16 bit are defining the use of SIGIO
DOSEMU must not work within the 1 meg DOS limit, so start of code is loaded at a higher address, at some time this could conflict with other shared libs. If DOSEMU is compiled statically (without shared libs), and org instruction is used to provide the jump above 1 meg.
These are the functions defined in include/emu.h.
The `vm86_struct` is used to pass all the necessary status/registers to DOSEMU when running in vm86 mode.
We assume system call restarting... under linux 0.99pl8 and earlier, this was the default. SA_RESTART was defined in 0.99pl8 to explicitly request restarting (and thus does nothing). However, if this ever changes, I want to be safe
DOSEMU keeps system wide configuration status in a structure called config.
The var `fatalerr` can be given a true value at any time to have DOSEMU exit on the next return from vm86 mode.
Next Previous Contents
|The DOSEMU team|