Changeset 165 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers
- Timestamp:
- Aug 20, 2011, 6:37:44 PM (13 years ago)
- google:author:
- aitotat@gmail.com
- Location:
- trunk/XTIDE_Universal_BIOS/Src/Handlers
- Files:
-
- 10 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h.asm
r161 r165 33 33 34 34 ; Jump to correct BIOS function 35 cmp ah, 25h ; Valid BIOS function?36 ja SHORT Int13h_UnsupportedFunction37 35 eMOVZX bx, ah 38 36 shl bx, 1 37 cmp ah, 25h ; Possible EBIOS function? 38 ja SHORT .JumpToEbiosFunction 39 39 jmp [cs:bx+g_rgw13hFuncJump] ; Jump to BIOS function 40 41 ; Jump to correct EBIOS function 42 ALIGN JUMP_ALIGN 43 .JumpToEbiosFunction: 44 test BYTE [cs:ROMVARS.wFlags], FLG_ROMVARS_FULLMODE ; Full mode? 45 jz SHORT Int13h_UnsupportedFunction 46 test BYTE [di+DPT.bFlagsLow], FLG_DRVNHEAD_LBA ; LBA supported? 47 jz SHORT Int13h_UnsupportedFunction 48 cmp ah, 48h ; Above last valid function? 49 ja SHORT Int13h_UnsupportedFunction 50 sub bx, 41h<<1 ; BX = Offset to EBIOS jump table 51 jl SHORT Int13h_UnsupportedFunction 52 jmp [cs:bx+g_rgwEbiosFunctionJumpTable] 40 53 41 54 … … 227 240 dw AH24h_HandlerForSetMultipleBlocks ; 24h, Set Multiple Blocks (PS/1) 228 241 dw AH25h_HandlerForGetDriveInformation ; 25h, Get Drive Information (PS/1) 229 ; dw Int13h_UnsupportedFunction ; 26h, 230 ; dw Int13h_UnsupportedFunction ; 27h, 231 ; dw Int13h_UnsupportedFunction ; 28h, 232 ; dw Int13h_UnsupportedFunction ; 29h, 233 ; dw Int13h_UnsupportedFunction ; 2Ah, 234 ; dw Int13h_UnsupportedFunction ; 2Bh, 235 ; dw Int13h_UnsupportedFunction ; 2Ch, 236 ; dw Int13h_UnsupportedFunction ; 2Dh, 237 ; dw Int13h_UnsupportedFunction ; 2Eh, 238 ; dw Int13h_UnsupportedFunction ; 2Fh, 239 ; dw Int13h_UnsupportedFunction ; 30h, 240 ; dw Int13h_UnsupportedFunction ; 31h, 241 ; dw Int13h_UnsupportedFunction ; 32h, 242 ; dw Int13h_UnsupportedFunction ; 33h, 243 ; dw Int13h_UnsupportedFunction ; 34h, 244 ; dw Int13h_UnsupportedFunction ; 35h, 245 ; dw Int13h_UnsupportedFunction ; 36h, 246 ; dw Int13h_UnsupportedFunction ; 37h, 247 ; dw Int13h_UnsupportedFunction ; 38h, 248 ; dw Int13h_UnsupportedFunction ; 39h, 249 ; dw Int13h_UnsupportedFunction ; 3Ah, 250 ; dw Int13h_UnsupportedFunction ; 3Bh, 251 ; dw Int13h_UnsupportedFunction ; 3Ch, 252 ; dw Int13h_UnsupportedFunction ; 3Dh, 253 ; dw Int13h_UnsupportedFunction ; 3Eh, 254 ; dw Int13h_UnsupportedFunction ; 3Fh, 255 ; dw Int13h_UnsupportedFunction ; 40h, 256 ; dw Int13h_UnsupportedFunction ; 41h, Check if Extensions Present (EBIOS)* 257 ; dw Int13h_UnsupportedFunction ; 42h, Extended Read Sectors (EBIOS)* 258 ; dw Int13h_UnsupportedFunction ; 43h, Extended Write Sectors (EBIOS)* 259 ; dw Int13h_UnsupportedFunction ; 44h, Extended Verify Sectors (EBIOS)* 260 ; dw Int13h_UnsupportedFunction ; 45h, Lock and Unlock Drive (EBIOS)*** 261 ; dw Int13h_UnsupportedFunction ; 46h, Eject Media Request (EBIOS)*** 262 ; dw Int13h_UnsupportedFunction ; 47h, Extended Seek (EBIOS)* 263 ; dw Int13h_UnsupportedFunction ; 48h, Get Extended Drive Parameters (EBIOS)* 242 243 g_rgwEbiosFunctionJumpTable: 244 dw AH41h_HandlerForCheckIfExtensionsPresent ; 41h, Check if Extensions Present (EBIOS)* 245 dw AH42h_HandlerForExtendedReadSectors ; 42h, Extended Read Sectors (EBIOS)* 246 dw AH43h_HandlerForExtendedWriteSectors ; 43h, Extended Write Sectors (EBIOS)* 247 dw AH44h_HandlerForExtendedVerifySectors ; 44h, Extended Verify Sectors (EBIOS)* 248 dw Int13h_UnsupportedFunction ; 45h, Lock and Unlock Drive (EBIOS)*** 249 dw Int13h_UnsupportedFunction ; 46h, Eject Media Request (EBIOS)*** 250 dw AH47h_HandlerForExtendedSeek ; 47h, Extended Seek (EBIOS)* 251 dw AH48h_HandlerForGetExtendedDriveParameters ; 48h, Get Extended Drive Parameters (EBIOS)* 264 252 ; dw Int13h_UnsupportedFunction ; 49h, Get Extended Disk Change Status (EBIOS)*** 265 253 ; dw Int13h_UnsupportedFunction ; 4Ah, Initiate Disk Emulation (Bootable CD-ROM) -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH25h_HDrvID.asm
r150 r165 22 22 ALIGN JUMP_ALIGN 23 23 AH25h_HandlerForGetDriveInformation: 24 mov si, [bp+IDEPACK.intpack+INTPACK.bx] 25 %ifdef USE_186 26 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 27 ; Fall to AH25h_GetDriveInformationToBufferInESSIfromDriveInDL 28 %else 29 call AH25h_GetDriveInformationToBufferInESSIfromDriveInDL 30 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 31 %endif 32 33 34 ;-------------------------------------------------------------------- 35 ; AH25h_GetDriveInformationToBufferInESSIfromDriveInDL 36 ; Parameters: 37 ; DL: Translated Drive number 38 ; DS:DI: Ptr to DPT (in RAMVARS segment) 39 ; ES:SI: Ptr to buffer to receive 512-byte drive information 40 ; Returns with INTPACK: 41 ; AH: Int 13h return status 42 ; CF: 0 if succesfull, 1 if error 43 ; Corrupts registers: 44 ; AL, BX, CX, DX 45 ;-------------------------------------------------------------------- 46 AH25h_GetDriveInformationToBufferInESSIfromDriveInDL: 47 push es 24 48 push bp 49 push di 50 push si 25 51 26 mov si, [bp+IDEPACK.intpack+INTPACK.bx]27 52 call AccessDPT_GetDriveSelectByteToAL 28 53 mov bh, al … … 31 56 call Device_IdentifyToBufferInESSIwithDriveSelectByteInBH 32 57 58 pop si 59 pop di 33 60 pop bp 34 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 61 pop es 62 ret -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH2h_HRead.asm
r158 r165 15 15 ; SS:BP: Ptr to IDEPACK 16 16 ; Parameters on INTPACK: 17 ; AL: Number of sectors to read (1... 255)17 ; AL: Number of sectors to read (1...127) 18 18 ; CH: Cylinder number, bits 7...0 19 19 ; CL: Bits 7...6: Cylinder number bits 9 and 8 … … 29 29 AH2h_HandlerForReadDiskSectors: 30 30 cmp BYTE [bp+IDEPACK.intpack+INTPACK.al], 0 31 j e SHORT AH2h_ExitInt13hSinceSectorCountInIntpackIsZero31 jle SHORT AH2h_ExitInt13hSinceSectorCountInIntpackIsZero 32 32 33 mov ah, COMMAND_READ_SECTORS ; Load sector mode command34 test BYTE [di+DPT.bFlagsHigh], FLGH_DPT_BLOCK_MODE_SUPPORTED35 eCMOVNZ ah, COMMAND_READ_MULTIPLE ; Load block mode command33 xor bx, bx 34 call CommandLookup_OrOldInt13hIndexToBL 35 mov ah, [cs:bx+g_rgbReadCommandLookup] 36 36 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ) 37 37 mov si, [bp+IDEPACK.intpack+INTPACK.bx] … … 55 55 mov ah, RET_HD_INVALID 56 56 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 57 -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH3h_HWrite.asm
r158 r165 15 15 ; SS:BP: Ptr to IDEREGS_AND_INTPACK 16 16 ; Parameters on INTPACK: 17 ; AL: Number of sectors to write 17 ; AL: Number of sectors to write (1...127) 18 18 ; CH: Cylinder number, bits 7...0 19 19 ; CL: Bits 7...6: Cylinder number bits 9 and 8 … … 28 28 AH3h_HandlerForWriteDiskSectors: 29 29 cmp BYTE [bp+IDEPACK.intpack+INTPACK.al], 0 30 j e SHORT AH2h_ExitInt13hSinceSectorCountInIntpackIsZero30 jle SHORT AH2h_ExitInt13hSinceSectorCountInIntpackIsZero 31 31 32 mov ah, COMMAND_WRITE_SECTORS ; Load sector mode command33 test BYTE [di+DPT.bFlagsHigh], FLGH_DPT_BLOCK_MODE_SUPPORTED34 eCMOVNZ ah, COMMAND_WRITE_MULTIPLE ; Load block mode command32 xor bx, bx 33 call CommandLookup_OrOldInt13hIndexToBL 34 mov ah, [cs:bx+g_rgbWriteCommandLookup] 35 35 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ) 36 36 mov si, [bp+IDEPACK.intpack+INTPACK.bx] -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm
r158 r165 15 15 ; SS:BP: Ptr to INTPACK 16 16 ; Parameters on INTPACK in SS:BP: 17 ; AL: Number of sectors to verify 17 ; AL: Number of sectors to verify (1...127) 18 18 ; CH: Cylinder number, bits 7...0 19 19 ; CL: Bits 7...6: Cylinder number bits 9 and 8 … … 27 27 AH4h_HandlerForVerifyDiskSectors: 28 28 cmp BYTE [bp+IDEPACK.intpack+INTPACK.al], 0 29 j e SHORT AH2h_ExitInt13hSinceSectorCountInIntpackIsZero29 jle SHORT AH2h_ExitInt13hSinceSectorCountInIntpackIsZero 30 30 31 31 mov ah, COMMAND_VERIFY_SECTORS
Note:
See TracChangeset
for help on using the changeset viewer.