The goal of this project is to create a game console OS for legacy PC hardware that is capable of running Biolab Disaster and other HTML5 games by the end of 2013. I only work on V45 in my spare time and progress, whilst hopefully reasonably frequent, may appear to fluctuate; please check back periodically.
Current size of the kernel (V45.SYS) is 7,560 bytes.
Doxygen-generated documentation available at http://v45.fleetingfantasy.com/docs/html/.
The following C library functions have been flagged for inclusion.
cgets* clreol clrscr* cprintf cputs* cscanf delline getch* getche* getpass gettext gettextinfo* gotoxy* highvideo* insline kbhit* lowvideo* movetext normvideo* putch* puttext textattr* textbackground* textcolor* textmode* ungetch* wherex* wherey* window*
* - implemented
insque* remque*
* - implemented
strcmp* strlen*
* - implemented
ffffffff [top-of-memory] 00200000 <free> 00100000 (kernel_main) B000:0000 BIOS A000:0000 VGA framebuffer 000a0000 (Framebuffer) 07C0:4000 <free> 07C0:1E00 main 00009a00 (main) 07C0:0E00 init 07C0:0C00 boot (2) 07C0:0940 <free> 07C0:0700 font4x12 00008300 07C0:0400 pal 00008000 07C0:0200 fsinfo 07C0:0000 boot 01D0:0000 <free> 0190:0000 Con. I/O keyb. buf. 00001900 (Circular_buffer) 0150:0000 Con. I/O text buf. 00001500 (Textbuffer) 00D0:0000 GDT 00000d00 (Gdt) 0050:0000 IDT 00000500 (Idt) 0040:0000 BDA 0000:0000 IVT [bottom-of-memory]
Bootstrap program [IN PROGRESS] *DONE* Enable A20 address line to access >1MiB of RAM Improve error checking for BIOS calls in boot.asm Compare boot sector to backup boot sector in FAT32 *DONE* Re-enable interrupts after entering 32-bit protected mode *DONE* Create new IDT *DONE* Remap IRQs (PIC) *DONE* 4-byte align data structures Forth implementation (C kernel) Implement C IVT 64x16 terminal (conio.h implementation) [IN PROGRESS] Add vertical scrolling *DONE* Create terminal buffer (1KiB, initially) Extend term. buffer for attributes and make Unicode-ready (4KiB) *DONE* Blinking software cursor FScript word list (FSCRIPT-WORDLIST) INLINE word Command interpreter Create FScript processes in ring 3 V86 monitor JavaScript over Forth (JSoF) compiler Translate JavaScript (ECMAScript) to Forth (FScript) W3C/WHATWG APIs Device drivers [IN PROGRESS] *DONE* VGA 320x200, 256-colour framebuffer 24-bit virtual framebuffer Ordered dithering (24-bit to 8-bit) *DONE* RGB332 palette Keyboard/mouse USB flash drive FAT32 file system [IN PROGRESS] *DONE* Ensure USB flash drive is mountable under GNU/Linux Fix FAT filesystem so that USB flash drive contents is correct Phi window manager Golden rectangle window placement TCP/IP stack HTML/CSS parser(s)