Make drive table data offsets available via defines

This commit is contained in:
Nero 2019-09-19 20:12:35 +00:00
parent d23bba5bdd
commit 93a9c3d5e9

View File

@ -1,24 +1,23 @@
%define drive_struct_len 0x0C ; drive table
%define drivetab_type 0x00 ; BYTE 0=unassigned, 1=BIOS/CHS, 2=BIOS/LBA
%define drivetab_num 0x01 ; BYTE DL number
%define drivetab_heads 0x02 ; CHS heads
%define drivetab_spt 0x03 ; CHS sectors per track
%define drivetab_sectors 0x04 ; total number of sectors
%define drivetab_offset 0x08 ; partition offset
%define drivetab_size 0x0C
drive_table: drive_table:
dw 0 dw 0
.count: .count:
dw 4 dw 4
; Drive table
; 00 BYTE DL number
; 01 BYTE file system type
; 02 BYTE CHS heads (ignored if LBA)
; 03 BYTE CHS sectors per track (ignored if LBA)
; 04 DWORD total number of sectors
; 08 DWORD partition offset
; DI is incremented for the space taken ; DI is incremented for the space taken
; IN ES:DI ; IN ES:DI
drive_setup: drive_setup:
xor cx, cx xor cx, cx
mov [drive_table], di mov [drive_table], di
mov al, drive_struct_len mov al, drivetab_size
mov ah, BYTE [drive_table.count] mov ah, BYTE [drive_table.count]
mul ah mul ah
xchg cx, ax xchg cx, ax
@ -39,7 +38,7 @@ drive_load:
mov si, [drive_table] mov si, [drive_table]
push ax push ax
mov al, drive_struct_len mov al, drivetab_size
mul dl mul dl
add si, ax add si, ax
pop ax pop ax