Changeset 285 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers


Ignore:
Timestamp:
Feb 29, 2012, 7:20:36 PM (13 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Some minor optimizations.
  • Boot menu now displays JR-IDE/ISA bus type (M8).
  • Drive detection now displays ROM segment as JR-IDE/ISA Device address.
Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH15h_HSize.asm

    r283 r285  
    7777ConvertAH08hReturnValuesToSectorCount:
    7878    call    Address_ExtractLCHSparametersFromOldInt13hAddress
    79 
    80     mov     al, bl      ; Get sector value
    81     mul     bh          ; Multiply by heads-1 (since bh is zero based, and could be 255 and overflow)
    82     xor     bh, bh      ; Clear upper byte for following addition...
    83     add     ax, bx      ; Add in one more sector value, since heads was off by one
    84     inc     cx          ; Max cylinder number to cylinder count (again, zero based)
    85     mul     cx          ; Multiply in cylinders
    86     xor     bx, bx      ; Zero upper 16-bits, sector count will not be that large
    87        
     79    mov     al, bh      ; AL = Max head number
     80    inc     cx          ; Max cylinder number to cylinder count
     81    inc     ax          ; Max head number to head count (AH=8h returns max 254 so no overflow to AH)
     82    mul     bl          ; AX = Head count * Sectors per track
     83    mul     cx          ; DX:AX = Total sector count for AH=0xh transfer functions
     84    xor     bx, bx
    8885    ret
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH8h_HParams.asm

    r262 r285  
    1818;       CL:     Bits 7...6: Cylinder number bits 9...8
    1919;               Bits 5...0: Maximum sector number (1...63)
    20 ;       DH:     Maximum head number (0...255)
     20;       DH:     Maximum head number (0...254)
    2121;       DL:     Number of drives
    2222;       ES:DI:  Floppy DPT (for floppies only)
     
    7979;       CL:     Bits 7...6: Cylinder number bits 9...8
    8080;               Bits 5...0: Maximum sector number (1...63)
    81 ;       DH:     Maximum head number (0...255)
     81;       DH:     Maximum head number (0...254)
    8282;   Corrupts registers:
    8383;       AX, BX
     
    9393;   Parameters:
    9494;       AX:     Number of L-CHS cylinders available (1...1024)
    95 ;       BL:     Number of L-CHS heads (1...256)
     95;       BL:     Number of L-CHS heads (1...255)
    9696;       BH:     Number of L-CHS sectors per track (1...63)
    9797;       DS:     RAMVARS segment
     
    100100;       CL:     Bits 7...6: Cylinder number bits 9...8
    101101;               Bits 5...0: Maximum sector number (1...63)
    102 ;       DH:     Maximum head number (0...255)
     102;       DH:     Maximum head number (0...254)
    103103;   Corrupts registers:
    104104;       AX, BX
     
    112112    or      cl, bh                  ; CL bits 0...5 = Sectors per track
    113113    mov     dh, bl                  ; DH = Maximum head number
    114        
     114
    115115%ifdef MODULE_SERIAL_FLOPPY
    116116    mov     bl,[di+DPT.bFlagsHigh]
Note: See TracChangeset for help on using the changeset viewer.