diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kernel.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c index 94a5b9f..7c5f982 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -48,13 +48,84 @@ void kernel_main() } + //0xA5000 scr_put_hex((uint32_t)prober>>16); scr_put_hex((uint32_t)prober&0xffff); scr_put_string_nl(" finished!"); // + */ + uint16_t *memmap=0x7c00+0x120; + uint32_t avail_mem=0; + + //print memory map: + + while(1) + { + if(memmap[8]==0)break; + if(memmap[8]==1) + { + avail_mem+=memmap[4]+(memmap[5]<<16); + } + //bytes: 8 8 4 4// + //scr_put_hex(memmap[3]); + //scr_put_string(" "); + //scr_put_hex(memmap[2]); + //scr_put_string(" "); + scr_put_hex(memmap[1]); + scr_put_string(" "); + scr_put_hex(memmap[0]); + scr_put_string(" "); +// scr_put_hex(memmap[4]); +// scr_put_string(" "); +// scr_put_hex(memmap[5]); +// scr_put_string(" "); +// scr_put_hex(memmap[6]); +// scr_put_string(" "); +// scr_put_hex(memmap[7]); + + + scr_put_string(" - "); +// scr_put_hex(memmap[8]); +// scr_put_string(" "); +// scr_put_hex(memmap[9]); +// scr_put_string(" "); +// scr_put_hex(memmap[10]); +// scr_put_string(" "); +// scr_put_hex(memmap[11]); +// scr_put_string(" "); + //scr_put_hex(memmap[7]); + //scr_put_string(" "); + //scr_put_hex(memmap[6]); + //scr_put_string(" "); + scr_put_hex(memmap[5]); + scr_put_string(" "); + scr_put_hex(memmap[4]); + + scr_put_string(" : "); + scr_put_hex(memmap[8]); +// scr_put_string(" "); +// scr_put_hex(memmap[9]); + + + scr_put_string_nl(""); + + memmap+=12; + } + + + scr_put_string("Total Available Mem: "); + scr_put_hex(avail_mem>>16); + scr_put_string(" "); + scr_put_hex(avail_mem&0xffff); + scr_put_string_nl(" byte"); + scr_put_string_nl(""); + + + + // init and interrupt decriptor table int_init(0x08); |
