Device Driver Model
To be able to configure the system without recompiling, RDOS
uses separate compiled device-drivers. The device-drivers usually
have the .rdv extension. Any number of device-drivers can be
included in the OS image.
This has several advantages
- Configuration don't need a compiler, linker or locator
- The size of the OS can be reduced / controlled by
omitting un-necesary hardware / software interfaces
- Embedded systems can be configured by replacing PC
platform drivers with embedded drivers
- Alternative kernels can be used for embedded systems with
non-standard I/O addresses for interrupt controller and
- Unpack SRC.ZIP or BIN.ZIP in the directory c:\rdos. It
contains the kernel, basic drivers and classlibrary.
System build guide
You need TASM 3.2 to build the OS from the source files. To
build the WIN32 DLLs you need TASM 5.0 or later. Pre-built OS
kernel (kernel.exe) and device drivers (*.rdv) are included binary
Running the OS
You can run the OS in four different configurations
For convenience, you could start a demo-version of the OS with
START.BAT or create a bootable floppy with FLOPPY.BAT, both
located in the TEST directory.
Switching between running applications
CTRL + Function key is used to switch between applications. In
the demo the following applications could be switched to:
- CTRL-F1 switches to thread list
- CTRL-F2 switches to FTPD.EXE program
- CTRL-F3 switches to DOS prompt
- CTRL-F8 switches to kernel debugger
Debugging kernel and other code
One of my main gools with RDOS, is that everything should be
possible to debug. Most of the code can be single-stepped in the
kernel-debugger (debugio.rdv). Things that cannot, usually can be
debugged in the Intel 486 CPU Emulator.
To debug an device-driver or application do like this
- Put a break-point (int 3 instruction) in the code.
- Build the OS
- Press CTRL-F8 to switch to kernel debugger
- Press SPACE to update debugged thread
- Press N to switch among debugged threads
- Press T to trace one instruction
- Press P to pace one instruction
- Press G to run
- Use arrows to select register / address / data to change,
and type in the new value.
- Use last row to display Real-mode memory, using
- Use next last row to display Protected-mode memory. Here
you can also display any linear address by giving
selector=20, and entering a 32-bit offset. To display app
flat memory use selector 1BB.
To map between protected mode selector:offset and source code
do like this:
- Look up the selector name either in protseg.def or
- Look up the driver file with grep on this selector name
- Look up line number using the map file for the driver.
Note that 30h is the kernel selector, and the related map file