Index: trunk/bootcode/regular/driveio.asm
===================================================================
--- trunk/bootcode/regular/driveio.asm	(revision 109)
+++ trunk/bootcode/regular/driveio.asm	(revision 110)
@@ -475,4 +475,5 @@
 ; #########################################################################
 DriveIO_LoadSector      Proc Near  Uses ax bx cx dx ds si es di
+
         ; Is the drive not a harddrive?
         cmp     dl, 80h
@@ -504,24 +505,32 @@
         dec     di
         jnz     DIOLS_ErrorLoop
+
         ; Sector load failed...
         jmp     DriveIO_GotLoadError
 
     DIOLS_UseExtension:
-        push    cx
-        mov     cs:[INT13X_DAP_NumBlocks], 1         ; Copy ONE sector
-        mov     wptr cs:[INT13X_DAP_Transfer+0], si
-        mov     cx, ds
-        mov     wptr cs:[INT13X_DAP_Transfer+2], cx  ; Fill out Transfer Adress
-        mov     wptr cs:[INT13X_DAP_Absolute+0], ax
-        mov     wptr cs:[INT13X_DAP_Absolute+2], bx  ; Fill out Absolute Sector
-        push    cs
-        pop     ds
-        mov     si, offset [INT13X_DAP]
-        mov     ah, 42h                              ; Extended Read
-        int     13h
-        pop     cx
-        jnc     DIOLS_Success
+
+        mov     di, ds                  ; segment for transfer address
+        mov     cx, ax                  ; low word of lba
+        call    DriveIO_ReadSectorLBA   ; extended read
+        jc      DriveIO_GotLoadError    ; halt on error
+
+        ;~ push    cx
+        ;~ mov     cs:[INT13X_DAP_NumBlocks], 1         ; Copy ONE sector
+        ;~ mov     wptr cs:[INT13X_DAP_Transfer+0], si
+        ;~ mov     cx, ds
+        ;~ mov     wptr cs:[INT13X_DAP_Transfer+2], cx  ; Fill out Transfer Adress
+        ;~ mov     wptr cs:[INT13X_DAP_Absolute+0], ax
+        ;~ mov     wptr cs:[INT13X_DAP_Absolute+2], bx  ; Fill out Absolute Sector
+        ;~ push    cs
+        ;~ pop     ds
+        ;~ mov     si, offset [INT13X_DAP]
+        ;~ mov     ah, 42h                              ; Extended Read
+        ;~ int     13h
+        ;~ pop     cx
+        ;~ jnc     DIOLS_Success
+
         ; Sector load failed...
-        jmp     DriveIO_GotLoadError
+        ;~ jmp     DriveIO_GotLoadError
 
     DIOLS_Success:
@@ -893,4 +902,5 @@
         cmp     bptr cs:[LBASwitchTable+di], bl
         jbe     DIOSS_UseExtension
+
     DIOSS_UseNormal:
         mov     di, 3
@@ -907,19 +917,26 @@
 
     DIOSS_UseExtension:
-        push    cx
-        mov     cs:[INT13X_DAP_NumBlocks], 1         ; Copy ONE sector
-        mov     wptr cs:[INT13X_DAP_Transfer+0], si
-        mov     cx, ds
-        mov     wptr cs:[INT13X_DAP_Transfer+2], cx  ; Fill out Transfer Adress
-        mov     wptr cs:[INT13X_DAP_Absolute+0], ax
-        mov     wptr cs:[INT13X_DAP_Absolute+2], bx  ; Fill out Absolute Sector
-        push    cs
-        pop     ds
-        mov     si, offset [INT13X_DAP]
-        mov     ax, 4300h                            ; Extended Write (No Verify)
-        int     13h
-        pop     cx
-        jnc     DIOSS_Success
-        call    MBR_SaveError
+
+        mov     di, ds                  ; segment for transfer address
+        mov     cx, ax                  ; low word of lba
+        xor     ax, ax                  ; no verify
+        call    DriveIO_WriteSectorLBA  ; extended write
+        jc      MBR_SaveError           ; halt on error
+
+        ;~ push    cx
+        ;~ mov     cs:[INT13X_DAP_NumBlocks], 1         ; Copy ONE sector
+        ;~ mov     wptr cs:[INT13X_DAP_Transfer+0], si
+        ;~ mov     cx, ds
+        ;~ mov     wptr cs:[INT13X_DAP_Transfer+2], cx  ; Fill out Transfer Adress
+        ;~ mov     wptr cs:[INT13X_DAP_Absolute+0], ax
+        ;~ mov     wptr cs:[INT13X_DAP_Absolute+2], bx  ; Fill out Absolute Sector
+        ;~ push    cs
+        ;~ pop     ds
+        ;~ mov     si, offset [INT13X_DAP]
+        ;~ mov     ax, 4300h                            ; Extended Write (No Verify)
+        ;~ int     13h
+        ;~ pop     cx
+        ;~ jnc     DIOSS_Success
+        ;~ call    MBR_SaveError
 
     DIOSS_Success:
