Changeset 556 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers
- Timestamp:
- Jun 16, 2013, 4:23:00 PM (11 years ago)
- google:author:
- aitotat@gmail.com
- Location:
- trunk/XTIDE_Universal_BIOS/Src/Handlers
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h.asm
r555 r556 79 79 80 80 ;-------------------------------------------------------------------- 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 86 87 ; Parameters: 87 88 ; AH: Bios function … … 91 92 ; Depends on function 92 93 ;-------------------------------------------------------------------- 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_FLOPPY97 cmp ah, GET_DRIVE_PARAMETERS ; 08h98 je SHORT WeHandleTheFloppyFunction99 %endif100 101 int BIOS_DISKETTE_INTERRUPT_40h102 retf 2 ; Skip FLAGS from stack103 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_DiskFunctionsHandler112 ; Parameters:113 ; AH: Bios function114 ; DL: Drive number115 ; Other: Depends on function116 ; Returns:117 ; Depends on function118 ;--------------------------------------------------------------------119 94 ALIGN JUMP_ALIGN 120 95 Int13h_DiskFunctionsHandler: 121 test dl, dl ; Floppy Drive?122 jns SHORT DirectCallToFloppyHandler40h123 WeHandleTheFloppyFunction:124 125 96 %ifndef RELOCATE_INT13H_STACK 126 97 sti ; Enable interrupts 127 %endif 98 %endif 128 99 cld ; String instructions to increment pointers 129 100 CREATE_FRAME_INTPACK_TO_SSBP SIZE_OF_IDEPACK_WITHOUT_INTPACK … … 167 138 jz SHORT .OurFunction ; We handle all function 0h requests (resets) 168 139 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 171 147 je SHORT .OurFunction 172 148 ; Fall to Int13h_DirectCallToAnotherBios … … 198 174 push bp 199 175 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 201 183 202 184 ; Store returned values to INTPACK -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm
r555 r556 31 31 sti ; Enable interrupts 32 32 cld ; String instructions to increment pointers 33 %ifndef USE_AT 33 34 call Int13hBiosInit_RestoreSystemHandler ; Needed if initialization was started on INT 13h instead on 19h 35 %endif 34 36 LOAD_BDA_SEGMENT_TO es, ax ; Load BDA segment (zero) to ES 35 37 ; Fall to .PrepareBootLoaderStack … … 114 116 mov dl, 80h ; Reset all hard drives and floppy drives 115 117 int BIOS_DISK_INTERRUPT_13h 116 ;call ResetHardDisksHandledByOurBIOS.ErrorCodeNotUsed ; Our drives only117 118 ; Fall to SelectDriveToBootFrom 118 119
Note:
See TracChangeset
for help on using the changeset viewer.