===================================
Virtual Device Programming
===================================
In this version, the location of files: "emu8086.io" and "emu8086.hw" is the same as "emulite.exe"
===================================
Input / Output ports
===================================
Available input / output addresses for custom devices are from 0 to 65535 (0 to 0FFFFh)
Port 100 corresponds to byte 100 in "emu8086.io", port 101 to the byte 101, port 0 to byte 0
For example:
IN AL, 7 ; read byte at position 7 from "emu8086.io" into AL
MOV AL, 5
OUT 7, AL ; write byte in AL to position 7 in "emu8086.io"
===================================
Emulation of Hardware Interrupts
===================================
External hardware interrupts can be triggered by external peripheral devices.
Hardware interrupts are disabled when interrupt flag (IF) is set to 0. When interrupt flag is set to 1, the emulator continually checks first 256 bytes of "emu8086.hw" and if any of the bytes is none-zero the microprocessor transfers control to an interrupt handler that matches the triggering byte offset in "emu8086.hw file" (0 to 255) according to the interrupt vector table (memory 0000-0400h) and resets the byte in "emu8086.hw" back to 00.
Hardware interrupts are enabled and disabled when software or hardware interrupt is running.