TIX is very small, fully
functional operating system I am writing.
I'm trying to touch the Zen of
Operating Systems.
Look out Microsoft?
I will be posting full source code here as
the OS develops. If you have any
comments, code, etc. please
send
email. You may also want to take
a look at another site I maintain about a
very small language called
MOUSE.
I'm giving away the source for a free compiler, interpreter, and debugger
for the language there. And, of course, I will eventually
port the MOUSE language to TIX.
Goals
- Entire operational system fits on 1 3.5" DD diskette
- Runs on any x86, from an old 8086 to a Pentium II and beyond.
- Self supporting OS where you can rebuild the OS and tools
from within the TIX environment
- The OS does NOT run on an emulation
- as little assembly language as possible
Small Steps
Develop a tiny assembler (ta)
- No macros
- Only support 8086 operations
- BIN (COM) output initially
- Maybe just the following instructions
- ADD, AND, CALL, CLC, CLD,
- CLI, CMP, DB, DD, DEC,
- DIV, DQ, DT, DW, EQU,
- HLT, IDIV, IMUL, IN, INC,
- INT, INT01, INT1, INT3, IRET,
- JCXZ, JMP, LDS, LEA, LODSB,
- LODSW, MOV, MUL, NEG, NOP,
- NOT, OR, OUT, POP, PUSH,
- SHL, SHR, STI, SUB, TEST,
- WAIT, XOR, Jcc
I started looking at NASM, it looks too difficult
to chop down as lean as I need to go. Does
anybody else have any seed code I could use?
Write a disk writer
- Like linux rawread, but smaller
- Initially a DOS executable
- Initially written using Watcom probably
Develop a bootstrap for floppies
- written using tiny assembler
- just boot up and print a message to the screen at first
then later load a kernel
Develop a tiny C compiler (tc)
- Allow for inline tiny assembler code
- Compiler must compile its own code
- Based on original 1 file small C?
- Integer only, no structures
Port tiny assembler to tiny C
Develop a very simple kernel
- Fixed number of tasks
- auto load first task which is user interface
Develop a very simple file system
- 256 Entry directory
- No subdirectories
- uses FAT
Develop user interface task
- Command to load and run a new task
- Command to delete a file
- Command to copy a file
Add OBJ output to assembler
Develop a standard C library
Develop a tiny editor in Tiny C
Port MOUSE
to TIX.
Email: seanfuller@yahoo.com
|