Skip to content

Latest commit

 

History

History
59 lines (41 loc) · 2.01 KB

File metadata and controls

59 lines (41 loc) · 2.01 KB

Code: ConsoleShell.[h, c]

Explanation

What does the code do?

I added three more commands

  1. memorymap command reads memorymap which was stored at 0x20000

    • There are three columns starting from base, limit, and type

    • type 1 means free memory and type 2 to 4 are unavailable memory

  2. access command tries to write and read memory at specific address

    • first parameter memory address in hex or decimal

    • address in hex starts with 0x and its unit is byte

    • address in decimal starts with just number and its unit is MB

  3. banner command print MINT64OS text string like ascii art

Note

  1. Mint64OS's page tree allows to access up to 64GB linear address. If you try to access above 64GB, then you will see page fault exception

  2. accessing reserved memory region is not predictable. Sometimes, page fault exception cones up or in worst case, it causes reboot

MINT64OS Characteristics

  1. Memory Layout up to CH15

    • start(inclusive) ~ end(exclusive)
    • 0x00000 ~ 0x00400 (Interrupt Vector Table for real mode)
    • 0x07C00 ~ 0x07E00 (Bootloader)
    • 0x07E00 ~ 0x10000 (Stack for real mode and protected mode)
    • 0x10000 ~ ... (32 bit code of OS; EntryPoint.S + Main.c + ...)
    • 0x20000 ~ 0x20004 (number of memory map entries)
    • 0x20004 ~ ... (memory map entires)
    • 0xA0000 ~ ... (video memory for graphic mode)
    • 0xB8000 ~ ... (video memory for text mode)
    • 0x100000(1MB) ~ 0x142000 (IA-32 mode page table tree structure, 264KB)
    • 0x142000 ~ 0x142010 (GDTR, 16 bytes)
    • 0x142010 ~ 0x142038 (GDT, 40 bytes = 3 * 8 bytes + 1 * 16 bytes)
    • 0x142038 ~ 0x1420A0 (TSS, 104 bytes = 1 * 104 bytes)
    • 0x1420A0 ~ 0x1420B0 (IDTR, 16 bytes)
    • 0x1420B0 ~ 0x1426F0 (IDT, 1600 bytes = 100 * 16 bytes)
    • 0x200000(2MB) ~ ... (64 bit code of OS; EntryPoint.S + Main.c + ...)
    • 0x600000(6MB) ~ 0x700000(7MB) (Stack for long mode)
    • 0x700000(7MB) ~ 0x800000(8MB) (IST1 stack area)