EttinOS ======= EttinOS is a minimalist 16-bit DOS-like hobbyist operating system for the IBM PC and compatible computers. Its git repository can be found at https://ahti.space/git/crazyettin/EttinOS. System requirements ------------------- * An Intel 8086 or compatible CPU * BIOS, or UEFI in legacy mode * 64 KiB of RAM * A floppy disk drive Building -------- Build dependencies: * A Unix-like operating system * bash * coreutils * dosfstools * mtools * nasm Running make.sh will build EttinOS and create a bootable 360 KiB 5.25" floppy disk image named EttinOS.img. To get a 1.44 MB 3.5" one instead use the argument -1440. If you want to use another floppy disk format you will have to adjust the bootloader disk description tables and install the system manually. Hard disk drives are not supported. Input ----- The EttinOS input system is inspired by typewriters. Typing a character overwrites the cursor location and the erase (=tab) key erases it. The space and backspace keys move the cursor. Programming ----------- EttinOS has a flat address space of 64 KiB with the data, stack, and extra segments set at the beginning of the RAM. Programs are loaded at address 0x2000. System calls: * Interrupt 0x20: Return to the shell. * Interrupt 0x21: Input and output: * AH = 0x0: Print a string ending in a null from SI. * AH = 0x1: Read a string ending in a null of at most AL characters to DI until a return. * AH = 0x2: Print a string ending in a null from SI followed by a CRLF. * AH = 0x3: Read a string ending in a null of at most AL characters to DI until a return and print a CRLF. * Interrupt 0x22: Disk operations: * AH = 0x0: Load a file named in SI as a string ending in a null to the offset BX and set AL to 0x0 if the load was succesfull and 0x1 if there was an error. * AH = 0x1: Save a file (under construction).