Entry into os2ldr

Using Bochs I have the entry values into os2ldr when booted with BootJFS. One important note is that any of the filetable structure len fields will depend on the module version. Also, the 0x8800 segment might vary with machine types in the real world. It is calculated:

  1. uses INT 12 to find the top of low memory in continuous 1k blocks
  2. subtract 0x54
  3. AND with 0xFFF0
  4. Shift left 6

DX == 0x1480 (00010100 10000000)
DH boot mode flags == mini-FSD is present, micro-FSD is present
DL drive number for the boot disk == 0x80

DS:SI is a pointer to the BOOT Media’s BPB 8800:000B (0x8800B)

ES:DI pointer to a filetable structure 8800:124A (0x8924A), filetable structure has the following format:

; module locations

8924A ft_cfiles dw 3
8924C ft_ldrseg dw 0x1000
8924E ft_ldrlen dd 0x0000AE00
89252 ft_museg dw 0x8800
89254 ft_mulen dd 0x00005000
89258 ft_mfsseg dw 0x7C00
8925A ft_mfslen dd 0x0000EAE9
8925E ft_ripseg dw 0
89260 ft_riplen dd 0

; microFSD vector table

89264 ft_muOpen_OFF dw 0x1A9C
89266 ft_muOpen_SEG dw 0x8800
89268 ft_muRead_OFF dw 0x1BD4
8926A ft_muRead_SEG dw 0x8800
8926C ft_muClose_OFF dw 0x1DAE
8926E ft_muClose_SEG dw 0x8800
89270 ft_muTerminate_OFF dw 0x1DD4
89272 ft_muTerminate_SEG dw 0x8800

Leave a Reply