mov ah,8 ; ah = 8 - Get Drive Parameters Function\r
mov byte ptr [bp+PhysicalDrive],dl ; BBS defines that BIOS would pass the booting driver number to the loader through DL\r
int 13h ; Get Drive Parameters\r
- xor ax,ax ; ax = 0\r
- mov al,dh ; al = dh\r
- inc al ; MaxHead = al + 1\r
- push ax ; 0000:7bfe = MaxHead\r
- mov al,cl ; al = cl\r
- and al,03fh ; MaxSector = al & 0x3f\r
- push ax ; 0000:7bfc = MaxSector\r
+ xor ax,ax ; ax = 0\r
+ mov al,dh ; al = dh (number of sides (0 based))\r
+ inc al ; MaxHead = al + 1\r
+ push ax ; 0000:7bfe = MaxHead\r
+ mov al,cl ; al = cl (CL = sectors per track)\r
+ and al,03fh ; MaxSector = al & 0x3f\r
+ push ax ; 0000:7bfc = MaxSector\r
\r
cmp word ptr [bp+SectorSignature],0aa55h ; Verify Boot Sector Signature\r
jne BadBootSector\r
jmp NotFoundAll\r
\r
FoundAll:\r
-FoundEFILDR:\r
+FoundEFILDR: ; 0x7cfe\r
mov cx,bx ; cx = Start Cluster for EFILDR <----------------------------------\r
mov ax,cs ; Destination = 2000:0000\r
add ax,2000h\r
call ReadBlocks\r
pop ax\r
JumpIntoFirstSectorOfEFILDR:\r
- mov word ptr [bp+JumpSegment],ax\r
-JumpFarInstruction:\r
+ mov word ptr [bp+JumpSegment],ax ; 0x7d26\r
+JumpFarInstruction: ; 0x7d2a\r
db 0eah\r
JumpOffset:\r
dw 0000h\r
; ****************************************************************************\r
; ERROR Condition:\r
; ****************************************************************************\r
-NotFoundAll:\r
+NotFoundAll: ; 0x7da6\r
; if we found EFILDR, continue\r
test bx,bx\r
jne FoundEFILDR\r