- ;***************************************************************
- ; 記憶體看上去是這樣的:
- ; ┃ ┃
- ; ┃ . ┃
- ; ┃ . ┃
- ; ┃ . ┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃■■■■■■■■■■■■■■■■■■┃
- ; ┃■■■■■■Page Tables■■■■■■┃
- ; ┃■■■■■(大小由LOADER決定)■■■■┃
- ; 00101000h ┃■■■■■■■■■■■■■■■■■■┃ PageTblBase
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃■■■■■■■■■■■■■■■■■■┃
- ; 00100000h ┃■■■■Page Directory Table■■■■┃ PageDirBase <- 1M
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃□□□□□□□□□□□□□□□□□□┃
- ; F0000h ┃□□□□□□□System ROM□□□□□□┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃□□□□□□□□□□□□□□□□□□┃
- ; E0000h ┃□□□□Expansion of system ROM □□┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃□□□□□□□□□□□□□□□□□□┃
- ; C0000h ┃□□□Reserved for ROM expansion□□┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃□□□□□□□□□□□□□□□□□□┃ B8000h ← gs
- ; A0000h ┃□□□Display adapter reserved□□□┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃□□□□□□□□□□□□□□□□□□┃
- ; 9FC00h ┃□□extended BIOS data area (EBDA)□┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃■■■■■■■■■■■■■■■■■■┃
- ; 90000h ┃■■■■■■■LOADER.BIN■■■■■■┃ somewhere in LOADER ← esp
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃■■■■■■■■■■■■■■■■■■┃
- ; 80000h ┃■■■■■■■KERNEL.BIN■■■■■■┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃■■■■■■■■■■■■■■■■■■┃
- ; 30000h ┃■■■■■■■■KERNEL■■■■■■■┃ 30400h ← KERNEL 入口 (KernelEntryPointPhyAddr)
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃ ┃
- ; 7E00h ┃ F R E E ┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃■■■■■■■■■■■■■■■■■■┃
- ; 7C00h ┃■■■■■■BOOT SECTOR■■■■■■┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃ ┃
- ; 500h ┃ F R E E ┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃□□□□□□□□□□□□□□□□□□┃
- ; 400h ┃□□□□ROM BIOS parameter area □□┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇┃
- ; 0h ┃◇◇◇◇◇◇Int Vectors◇◇◇◇◇◇┃
- ; ┗━━━━━━━━━━━━━━━━━━┛ ← cs, ds, es, fs, ss
- ;
- ;
- ; ┏━━━┓ ┏━━━┓
- ; ┃■■■┃ Tinix使用 ┃□□□┃ 不能使用的記憶體
- ; ┗━━━┛ ┗━━━┛
- ; ┏━━━┓ ┏━━━┓
- ; ┃ ┃ 未使用空間 ┃◇◇◇┃ 可以覆蓋的記憶體
- ; ┗━━━┛ ┗━━━┛
- ;
- ; 註:KERNEL 的位置實際上是很靈活的,可以通過同時改變 LOAD.INC 中的 KernelEntryPointPhyAddr 和 MAKEFILE 中參數 -Ttext 的值來改變。
- ; 比如,如果把 KernelEntryPointPhyAddr 和 -Ttext 的值都改為 0x400400,則 KERNEL 就會被載入到記憶體 0x400000(4M) 處,入口在 0x400400。
- ;
加入漢字顯示時,0x10000-0x3FFFF為kernel;0x0c000-0ffff為ASC16點陣庫;0x40000-0x7FFFF為256KB的漢字點陣;0x80000-0x8FFFF為臨時操作資料FAT表根目錄表等。0x90000-0x9FBFF為LOADER程式。