I am working to get FreeDOS running on my 286 system. As part of this, I am
trying to improve my BIOS code. As I look at the stack setup when the system
initializes, I am using the following.

        ; org 0x0000
        xor             ax,     ax
        mov             ds,     ax
        mov             bp,     0x8000
        mov             ss,     ax
        mov             sp,     bp
        mov             ax,     0xf000                          ; ROM data
        mov             es,     ax

Based on https://en.wikibooks.org/wiki/X86_Assembly/Bootloaders and
https://github.com/kaneton/appendix-bios (and as I understand it), 0x8000 is
used for bp and sp upon system initialization. I expect FreeDOS changes the
location of the stack multiple times during boot as the boot sector is
loaded/moved and as the kernel is loaded.

Am I OK with the stack setup I am using prior to loading FreeDOS, or should
I consider a different/better approach?

Thanks!

Rich


; *286 system physical memory map*
; -------------------------------
; -       ROM  (256 KB)         -
; -      0xC0000-0xFFFFF                -
; -------------------------------
; -   I/O & Expansion  (64 KB)  -
; -      0xB0000-0xBFFFF                -
; -------------------------------
; -       VIDEO  (64 KB)                -
; -      0xA0000-0xAFFFF                -
; -------------------------------
; -       RAM  (640 KB)         -
; -      0x00000-0x9FFFF                -
; -------------------------------
;
; **************************************
; from boot32lb.asm (fat32 lba):
;       ...
;       |-------|               1FE0:7E00
;       |BOOTSEC|
;       |RELOC.|
;       |-------|               1FE0:7C00
;       ...
;       |-------|               2000:0200
;       |  FAT  |               (only 1 sector buffered)
;       |-------|               2000:0000
;       ...
;       |-------|               0000:7E00
;       |BOOTSEC|               overwritten by the kernel, so the
;       |ORIGIN |               bootsector relocates itself up...
;       |-------|               0000:7C00
;       ...
;       |-------|
;       |KERNEL|                maximum size 134k (overwrites bootsec
origin)
;       |LOADED|                (holds 1 sector directory buffer before
kernel load)
;       |-------|               0060:0000
;       ...



_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to