256b Kernel.

Darran Kartaschew (aka Chewy509).
Released under the BSD License. 2004.

A basic OS in 512 bytes.
------------------------

The 256b kernel is a basic machine monitor, with the capabity of
taking user input, and performing basic functions on the user
input. The following functions are available:

*	Display memory
*	Write to memory
*	Copy a block of memory from on location to another
*	Begin execution from a defined memory location
*	Output a byte located in memory to an I/O Port
*	Take a byte from an I/O Port and place into memory
*	Load a sector from a disk into a disk buffer
*	Store the disk buffer into a sector of a disk

System Requirements
-------------------

Intel 386
64K RAM
Keyboard
VGA display capable of 80x50 or EGA display capable of 80x43.
For Disk access, int 13h BIOS support is required.

Usage
-----

From the base prompt "> ", enter in the command and it will be executed. 
Note: there are no safeguards regarding execution, and commands MUST be
entered correctly, or something will go wrong. All commands are processed
as entered. You will get unexpected results if you stuff the command up.

When entering memory locations, they are treated as a flat 32bit 
addresses, that becuase they are 32bit addresses. The kernel enables
the so-called Unreal mode, in that 32bit addresses can be used in real 
mode.


Commands
--------

A xxxxxxxx yy yy... 	- Write yy yy ... to Memory Location xxxxxxxx
D xxxxxxxx yyyy			- Dump Memory location xxxxxxxx to screen
							for yyyy bytes
G xxxxxxxx				- Execute Memory Location xxxx:xxxx
C xxxxxxxx yyyyyyyy zzzz - Copy from Memory Location xxxxxxxx to Memory
							Location yyyyyyyy with zzzz Bytes.
I xxxxxxxx yyyy			- Get byte from Port yyyy and place it at Memory
							Location xxxxxxxx
O xxxxxxxx yyyy			- Output byte at xxxxxxxx to Port yyyy
L xxyyzzaa 				- Load Cylinder zz : Head xx : Sector aa from
							disk yy to the Disk Buffer (0000:8000)
							Descriptor is HDCS.
W xxyyzzaa				- Write Cylinder zz : Head xx : Sector aa from
							disk yy to the Disk Buffer (0000:8000)
							Descriptor is HDCS.
R						- Reset PC

All Values are HEXIDECIMAL

Memory Map
----------

0000:7C00 - 0000:7DFF 	Kernel		(200h bytes)
0000:7E00 - 0000:7FFF	BSS			(100h bytes)
0000:8000 - 0000:81FF	Disk Buffer	(200h bytes)
0000:8200 - 0000:FFFF	Stack		(7E00h bytes)

Segment		Base		Limit		Mode
CS			0			64K			16b RM
DS			0			64K			16b RM
ES			0			64K			16b RM
FS			0			4GB			32b PM
GS			0			4GB			32b PM
SS			0			64K			16b RM

In case you hadn't noticed I'm using Unreal Mode for this. It
lets us have some real fun.
