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


Ignore:
Timestamp:
Jun 16, 2013, 4:23:00 PM (11 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Removed Windows 98 fix since it broke floppy drive translation.
  • Removed very late initialization from AT builds since it slowed down Windows 98 for unknown reason.
Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers
Files:
2 edited

Legend:

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

    r555 r556  
    7979
    8080;--------------------------------------------------------------------
    81 ; Int 13h (Hard Drive) to Int 40h (Floppy Drive)
    82 ; We must not call previous INT 13h for floppy drives since it
    83 ; does not work on Windows 98 (when using HSFLOP.PDR driver) for some reason.
    84 ;
    85 ; DirectCallToFloppyHandler40h
     81; Int 13h software interrupt handler.
     82; Jumps to specific function defined in AH.
     83;
     84; Note to developers: Do not make recursive INT 13h calls!
     85;
     86; Int13h_DiskFunctionsHandler
    8687;   Parameters:
    8788;       AH:     Bios function
     
    9192;       Depends on function
    9293;--------------------------------------------------------------------
    93 DirectCallToFloppyHandler40h:
    94 ; With serial floppy support, we handle all traffic for function 08h,
    95 ; as we need to wrap both hard disk and floppy drive counts.
    96 %ifdef MODULE_SERIAL_FLOPPY
    97     cmp     ah, GET_DRIVE_PARAMETERS    ; 08h
    98     je      SHORT WeHandleTheFloppyFunction
    99 %endif
    100 
    101     int     BIOS_DISKETTE_INTERRUPT_40h
    102     retf    2           ; Skip FLAGS from stack
    103 
    104 
    105 ;--------------------------------------------------------------------
    106 ; Int 13h software interrupt handler.
    107 ; Jumps to specific function defined in AH.
    108 ;
    109 ; Note to developers: Do not make recursive INT 13h calls!
    110 ;
    111 ; Int13h_DiskFunctionsHandler
    112 ;   Parameters:
    113 ;       AH:     Bios function
    114 ;       DL:     Drive number
    115 ;       Other:  Depends on function
    116 ;   Returns:
    117 ;       Depends on function
    118 ;--------------------------------------------------------------------
    11994ALIGN JUMP_ALIGN
    12095Int13h_DiskFunctionsHandler:
    121     test    dl, dl                      ; Floppy Drive?
    122     jns     SHORT DirectCallToFloppyHandler40h
    123 WeHandleTheFloppyFunction:
    124 
    12596%ifndef RELOCATE_INT13H_STACK
    12697    sti                                 ; Enable interrupts
    127 %endif 
     98%endif
    12899    cld                                 ; String instructions to increment pointers
    129100    CREATE_FRAME_INTPACK_TO_SSBP    SIZE_OF_IDEPACK_WITHOUT_INTPACK
     
    167138    jz      SHORT .OurFunction          ; We handle all function 0h requests (resets)
    168139
    169 ; We handle all traffic for function 08h, as we need to wrap both hard disk and floppy drive counts.
    170     cmp     ah, GET_DRIVE_PARAMETERS    ; 08h
     140%ifndef MODULE_SERIAL_FLOPPY
     141; Without floppy support, we handle only hard disk traffic for function 08h.
     142    test    dl, dl
     143    jns     SHORT Int13h_DirectCallToAnotherBios
     144%endif
     145; With floppy support, we handle all traffic for function 08h, as we need to wrap both hard disk and floppy drive counts.
     146    cmp     ah, GET_DRIVE_PARAMETERS
    171147    je      SHORT .OurFunction
    172148    ; Fall to Int13h_DirectCallToAnotherBios
     
    198174    push    bp
    199175    mov     bp, [bp+IDEPACK.intpack+INTPACK.bp]
    200     int     BIOS_DISK_INTERRUPT_13h ; Can safely do as much recursion as it wants
     176
     177    test    dl, dl
     178    js      SHORT .CallHardDiskHandler
     179    int     BIOS_DISKETTE_INTERRUPT_40h ; Windows 98 requires we call INT 40h for floppy drives (reason unknown)
     180    SKIP2B  bp                          ; Skip INT 13h
     181.CallHardDiskHandler:
     182    int     BIOS_DISK_INTERRUPT_13h     ; Can safely do as much recursion as it wants
    201183
    202184    ; Store returned values to INTPACK
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm

    r555 r556  
    3131    sti                                         ; Enable interrupts
    3232    cld                                         ; String instructions to increment pointers
     33%ifndef USE_AT
    3334    call    Int13hBiosInit_RestoreSystemHandler ; Needed if initialization was started on INT 13h instead on 19h
     35%endif
    3436    LOAD_BDA_SEGMENT_TO es, ax                  ; Load BDA segment (zero) to ES
    3537    ; Fall to .PrepareBootLoaderStack
     
    114116    mov     dl, 80h     ; Reset all hard drives and floppy drives
    115117    int     BIOS_DISK_INTERRUPT_13h
    116     ;call   ResetHardDisksHandledByOurBIOS.ErrorCodeNotUsed ; Our drives only
    117118    ; Fall to SelectDriveToBootFrom
    118119
Note: See TracChangeset for help on using the changeset viewer.