|
Vesp Kernel -Memory (Hard disk Extension)
Vesp's bootstrap code enables it to start up, and resets the screen. After that Vesp must be able to do things on its own and handle user
requests. Typically, the bulk of a kernel code resides in the hard disk or some other non-volatile memory, and must be loade into the
RAM memory of a computer before it can run. In the case of vesp, we must first extend the memory space of Vesp in order to allow
for the kernel to be stored in Vesp's hard disk. We do it so by extending the 12-bit address field in Vesp instructions into 16-bit by
a 4-bit extension. The 4-bit extension plus the 12-bit address form what is called a virtual address in Vesp's memory space. Hence,
Vesp can address a total of 65,536 locations in its virtual memory space. The first 4K of these locations are in its RAM memory, and
the 12 bits in Vesp's instructions willl be used to refer to RAM locations when the highest 4 bits in the VAR register are all 0. Other
4-bit combinations will point to locations in the hard disk of Vesp.
The Vesp memory is revised as follows:
/* Vesp Memory Map (Subject to Revision)
------------------------------------------------
Memory[0x0000]--A |
Memory[0x0001]--B |
Memory[0x0002]--IX |
Memory[0x0003]-VAR |
-Bootstrap code begins here | Block 0
Memory[0x0008]----cursor position -x |
Memory[0x0009]----cursor-position -y |
Memory[0x000A]----pixel color (or ASCII code) |
Memory[0x000B]----display mode |
Memory[0x000C]----pixel pattern(when not ASCII) |
Memory[0x000D]----space |
Memory[0x000E]----carriage return |
Memory[0x000F]----temp |
|
Memory[0x0020]----boot-vector begins here |
------------------------------------------------
Memory[0x0100]------Keyboard driver and ASCII |
Memory[0x0101]------tables are stored here |
|
|
Memory[0x02FF] | Blocks 1,2 (Keyboard input driver)
|
|
|
|
|
|
------------------------------------------------
Memory[0x0300]------Frame buffer (video) and |
Memory[0x0301]------video drivers are |
Memory[0x0302]------ stored here |
|
|
Memory[0x06FF]------ |
|
|
| Blocks 3,4,5,6 (Screen output)
| 16x64 screen = 2^10 (1024 locations)
|
|
|
------------------------------------------------
Memory[0x0700]------VESP Kernel Code |
Memory[0x0701]------OS routines and code |
Memory[0x08FF]------ |
|
| Blocks 7,8 Operating System (Kernel)
|
|
|
|
------------------------------------------------
Memory[0x0900]------User space -1 |
|
|
|
------------------------------------------------
|
Memory[0x0A00]------User space -2 |
|
|
------------------------------------------------
|
Memory[0x0B00]------User space -3 |
|
| Block 9 through 15 User space
------------------------------------------------
| (application and user programs)
Memory[0x0C00]------User space -4 |
|
|
------------------------------------------------
|
Memory[0x0D00]------User space -5 |
|
|
------------------------------------------------
------------------------------------------------
|
Memory[0x0E00]------User space -6 |
|
|
------------------------------------------------
------------------------------------------------
|
Memory[0x0F00]------User space -7 |
|
|
------------------------------------------------
------------------------------------------------
|
Memory[0x1000]------Hard disk begin here |
|
|
|
|
|
|
|
Memory[0xFFFF]------Hard disk ends here |
|
|
------------------------------------------------
*/
|