Changeset 155 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers
- Timestamp:
- May 1, 2011, 6:44:29 PM (14 years ago)
- google:author:
- aitotat
- Location:
- trunk/XTIDE_Universal_BIOS/Src/Handlers
- Files:
-
- 5 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h.asm
r150 r155 23 23 sti ; Enable interrupts 24 24 cld ; String instructions to increment pointers 25 SAVE_AND_GET_INTPACK_WITH_EXTRA_WORDS_TO_SSBP EXTRA_WORDS_TO_RESERVE_FOR_INTPACK25 CREATE_FRAME_INTPACK_TO_SSBP EXTRA_BYTES_FOR_INTPACK 26 26 27 27 call RamVars_GetSegmentToDS … … 33 33 34 34 ; Jump to correct BIOS function 35 JumpToBiosFunctionInAH:36 35 cmp ah, 25h ; Valid BIOS function? 37 36 ja SHORT Int13h_UnsupportedFunction … … 109 108 or WORD [bp+IDEPACK.intpack+INTPACK.flags], FLG_FLAGS_IF ; Return with interrupts enabled 110 109 mov sp, bp ; Now we can exit anytime 111 RESTORE_ INTPACK_WITH_EXTRA_WORDS_FROM_SSBP EXTRA_WORDS_TO_RESERVE_FOR_INTPACK110 RESTORE_FRAME_INTPACK_FROM_SSBP EXTRA_BYTES_FOR_INTPACK 112 111 113 112 -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH15h_HSize.asm
r150 r155 59 59 60 60 ConvertAH08hReturnValuesToSectorCount: 61 call HAddress_ExtractLCHSparametersFromOldInt13hAddress61 call Address_ExtractLCHSparametersFromOldInt13hAddress 62 62 xor ax, ax ; Zero AX 63 63 inc cx ; Max cylinder number to cylinder count -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH2h_HRead.asm
r150 r155 15 15 ; SS:BP: Ptr to IDEPACK 16 16 ; Parameters on INTPACK: 17 ; AL: Number of sectors to read (1...255 , 0=256)17 ; AL: Number of sectors to read (1...255) 18 18 ; CH: Cylinder number, bits 7...0 19 19 ; CL: Bits 7...6: Cylinder number bits 9 and 8 … … 28 28 ALIGN JUMP_ALIGN 29 29 AH2h_HandlerForReadDiskSectors: 30 call AH2h_ExitInt13hIfSectorCountInIntpackIsZero 30 31 mov ah, COMMAND_READ_SECTORS ; Load sector mode command 31 32 test WORD [di+DPT.wFlags], FLG_DPT_BLOCK_MODE_SUPPORTED … … 40 41 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 41 42 %endif 43 44 45 ;-------------------------------------------------------------------- 46 ; AH2h_ExitInt13hIfSectorCountInIntpackIsZero 47 ; Parameters: 48 ; SS:BP: Ptr to IDEPACK 49 ; Parameters on INTPACK: 50 ; AL: Number of sectors to transfer (1...255) 51 ; Returns: 52 ; Nothing (does not return if error) 53 ; Corrupts registers: 54 ; Nothing 55 ;-------------------------------------------------------------------- 56 ALIGN JUMP_ALIGN 57 AH2h_ExitInt13hIfSectorCountInIntpackIsZero: 58 cmp BYTE [bp+IDEPACK.intpack+INTPACK.al], 0 59 je SHORT .InvalidSectorCount 60 ret 61 .InvalidSectorCount: 62 mov ah, RET_HD_INVALID 63 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH3h_HWrite.asm
r150 r155 27 27 ALIGN JUMP_ALIGN 28 28 AH3h_HandlerForWriteDiskSectors: 29 ; Prepare parameters29 call AH2h_ExitInt13hIfSectorCountInIntpackIsZero 30 30 mov ah, COMMAND_WRITE_SECTORS ; Load sector mode command 31 31 test WORD [di+DPT.wFlags], FLG_DPT_BLOCK_MODE_SUPPORTED -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm
r150 r155 26 26 ALIGN JUMP_ALIGN 27 27 AH4h_HandlerForVerifyDiskSectors: 28 mov ah, COMMAND_WRITE_SECTORS 28 call AH2h_ExitInt13hIfSectorCountInIntpackIsZero 29 mov ah, COMMAND_VERIFY_SECTORS 29 30 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRDY) 30 31 %ifdef USE_186 -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Address.asm
r150 r155 15 15 16 16 ;-------------------------------------------------------------------- 17 ; HAddress_OldInt13hAddressToIdeAddress17 ; Address_OldInt13hAddressToIdeAddress 18 18 ; Parameters: 19 19 ; CH: Cylinder number, bits 7...0 … … 31 31 ;-------------------------------------------------------------------- 32 32 ALIGN JUMP_ALIGN 33 HAddress_OldInt13hAddressToIdeAddress:33 Address_OldInt13hAddressToIdeAddress: 34 34 call AccessDPT_GetAddressingModeForWordLookToBX 35 35 push WORD [cs:bx+g_rgfnAddressTranslation] ; Push return address 36 ; Fall to HAddress_ExtractLCHSparametersFromOldInt13hAddress36 ; Fall to Address_ExtractLCHSparametersFromOldInt13hAddress 37 37 38 38 ;--------------------------------------------------------------------- 39 ; HAddress_ExtractLCHSparametersFromOldInt13hAddress39 ; Address_ExtractLCHSparametersFromOldInt13hAddress 40 40 ; Parameters: 41 41 ; CH: Cylinder number, bits 7...0 … … 50 50 ; Nothing 51 51 ;-------------------------------------------------------------------- 52 HAddress_ExtractLCHSparametersFromOldInt13hAddress:52 Address_ExtractLCHSparametersFromOldInt13hAddress: 53 53 mov bl, cl ; Copy sector number... 54 54 and bl, 3Fh ; ...and limit to 1...63 … … 66 66 ; PSector = LSector 67 67 ; 68 ; HAddress_ConvertLCHStoPCHS:68 ; Address_ConvertLCHStoPCHS: 69 69 ; Parameters: 70 70 ; BL: Sector number (1...63) … … 104 104 ; 105 105 ; Returned address is in same registers that 106 ; HAddress_DoNotConvertLCHS and HAddress_ConvertLCHStoPCHS returns.106 ; Address_DoNotConvertLCHS and Address_ConvertLCHStoPCHS returns. 107 107 ; 108 108 ; ConvertLCHStoLBARegisterValues:
Note:
See TracChangeset
for help on using the changeset viewer.