@ -1,9 +1,9 @@
EttinOS
=======
EttinOS is a minimalist 16-bit DOS-like hobbyist operating system for
the IBM Personal Computer and compatible machines. Its git repository
can be found at https://ahti.space/git/crazyettin/EttinOS and that of
EttinOS is a minimalist 16-bit hobbyist disk operating system for the
IBM Personal Computer and compatible machines. Its git repository can be
found at https://ahti.space/git/crazyettin/EttinOS and that of
EttinOS-extra, a collection of programs for the system, at
https://ahti.space/git/crazyettin/EttinOS-extra.
@ -39,13 +39,11 @@ The 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.
EttinOS assigns the drives letters from A to D and uses the FAT12 file
system. The hidden and total sectors entries of the BIOS parameter
block, the entire extended BIOS parameter block, file attributes, and
the file access date are not supported and are ignored if present: as a
result disk labels and subdirectories are not supported. Drive letters
and file names are case-insensitive and the latter follow the 8.3
format. Text files use CRLF line endings.
EttinOS assigns the drives letters from A to D and uses a version of the
MS-DOS 3.0 FAT12 file system (in actual use since 2.1) without support
for file attributes and thus disk labels and subdirectories. Drive
letters and file names are case-insensitive and the latter follow the
8.3 format. Text files use CRLF line endings.
Drives and files are specified as ([A-D]:) and ([A-D]:)FILENAME.EXT
respectively. Specifying the current drive, indicated in the prompt, is
@ -53,11 +51,11 @@ optional.
A command can be followed by arguments separated from eachother and the
command with spaces. Extra spaces are ignored. Commands other than
changing the drive are stored as external programs: the command for a
program is its file specification without the extension.
changing the current drive are stored as external programs: the command
for a program is its file specification without the extension.
Commands included in EttinOS:
* [A-D]:: Change the drive.
* [A-D]:: Change the current drive.
* ECHO: Print a message. Syntax: ECHO Message to be printed
* HELLO: Print "Hello world!".
* LIST: Print a list of the files on a drive. Syntax: LIST DRIVE
@ -80,7 +78,7 @@ has finished running.
System calls:
* Interrupt 0x20: Return to the shell.
* Interrupt 0x21: Input and output :
* Interrupt 0x21: String operations :
* 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.
@ -88,8 +86,25 @@ System calls:
CRLF.
* AH = 0x3: Read a string ending in a null of at most AL
characters to DI until a return and print a CRLF.
* AH = 0x4: (Under construction) Convert a decimal string ending
in a null at SI to a value in AL.
* AH = 0x5: (Under construction) Convert a value in AL to a
decimal string ending in a null at DI.
* AH = 0x6: (Under construction) Convert a hexadecimal string
ending in a null at SI to a value in AL.
* AH = 0x7: (Under construction) Convert a value in AL to a
hexadecimal string ending in a null at DI.
* Interrupt 0x22: Disk operations:
* AH = 0x0: Load a file named at SI as a string ending in a null
* AH = 0x0: (Under construction) Load the directory of a drive
named at SI as a string ending in a null to the offset
BX and store the error codes in AL:
* AL = 0x0: Succesful load
* AL = 0x1: Drive not found
* AL = 0x2: Unable to read disk
* AH = 0x1: (Under construction) Store a directory at the offset
BX to a drive named at SI as a string ending in a
null.
* AH = 0x2: Load a file named at SI as a string ending in a null
to the offset BX and store the file size in CX and the
error codes in AL:
* AL = 0x0: Succesful load
@ -97,7 +112,7 @@ System calls:
* AL = 0x2: Unable to read disk
* AL = 0x4: File or command not found
* AL = 0x8: Not enough memory
* AH = 0x1: Save a file (under construction) .
* AH = 0x3: (Under construction) Save a file .
Known bugs
----------