- ;***************************************************************
- ; 内存看上去是这样的:
- ; ┃ ┃
- ; ┃ . ┃
- ; ┃ . ┃
- ; ┃ . ┃
- ; ┣━━━━━━━━━━━━━━━━━━┫
- ; ┃■■■■■■■■■■■■■■■■■■┃
- ; ┃■■■■■■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程序。