V45

An HTML5 game console OS for legacy PC hardware

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/.

Work Completed Since the Beginning of 2013

Libraries

The following C library functions have been flagged for inclusion.

conio.h

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

search.h

insque*		remque*

* - implemented

string.h

strcmp*		strlen*

* - implemented

Screenshots

Memory Map

					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]

TODO

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)