Changeset 568 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers
- Timestamp:
- Dec 21, 2014, 5:37:53 PM (10 years ago)
- google:author:
- krille_n_@hotmail.com
- Location:
- trunk/XTIDE_Universal_BIOS/Src/Handlers
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h.asm
r567 r568 322 322 323 323 ;-------------------------------------------------------------------- 324 ; Int13h_SetErrorCodeToBdaAndToIntpackInSSBPfromAH_ALHasDriveNumber 324 325 ; Int13h_SetErrorCodeToBdaAndToIntpackInSSBPfromAH 325 326 ; Int13h_SetErrorCodeToIntpackInSSBPfromAH … … 330 331 ; SS:BP: Ptr to IDEPACK with error condition set 331 332 ; Corrupts registers: 332 ; DS, DI333 ; DS, BX, DI 333 334 ;-------------------------------------------------------------------- 334 335 ALIGN JUMP_ALIGN -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm
r526 r568 38 38 ; Returns with INTPACK in SS:BP: 39 39 ; AH: Int 13h/40h floppy return status 40 ; AL: Number of sectors actually verified (only valid if CF set for some BIOSes)40 ; AL: Number of sectors actually verified (only valid if CF set for some BIOSes) 41 41 ; CF: 0 if successful, 1 if error 42 42 ;-------------------------------------------------------------------- -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH43h_ExtendedWriteSectors.asm
r526 r568 48 48 mov ah, [cs:bx+g_rgbWriteCommandLookup] 49 49 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ) 50 %ifdef USE_18651 push AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX52 jmp Idepack_ConvertDapToIdepackAndIssueCommandFromAH53 %else54 50 call Idepack_ConvertDapToIdepackAndIssueCommandFromAH 55 51 jmp SHORT AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX 56 %endif -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH44h_ExtendedVerifySectors.asm
r526 r568 43 43 mov ah, [cs:bx+g_rgbVerifyCommandLookup] 44 44 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRDY) 45 %ifdef USE_18646 push AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX47 jmp Idepack_ConvertDapToIdepackAndIssueCommandFromAH48 %else49 45 call Idepack_ConvertDapToIdepackAndIssueCommandFromAH 50 46 jmp SHORT AH42h_ReturnFromInt13hAfterStoringErrorCodeFromAHandTransferredSectorsFromCX 51 %endif -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH48h_GetExtendedDriveParameters.asm
r550 r568 147 147 ; from previously scanned drive. 148 148 .DoNotSetChsFlag: 149 eMOVZX dx, BYTE[es:si+DPT.bPchsHeads]149 eMOVZX dx, [es:si+DPT.bPchsHeads] 150 150 mov [di+EDRIVE_INFO.dwHeads], dx 151 151 mov [di+EDRIVE_INFO.dwHeads+2], cx … … 159 159 mov [di+EDRIVE_INFO.dwCylinders+2], cx 160 160 161 .ReturnWithSuccess: 162 xor ax, ax 163 .ReturnWithError: 161 xor ax, ax ; Success 164 162 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Tools/Address.asm
r542 r568 37 37 ALIGN JUMP_ALIGN 38 38 Address_ExtractLCHSparametersFromOldInt13hAddress: 39 mov bl, cl ; Copy sector number...40 and bl, 3Fh ; ...and limit to 1...6339 mov bl, 3Fh ; Load sector number mask 40 and bl, cl ; Sector number now in BL 41 41 sub cl, bl ; Remove from cylinder number high 42 42 eROL_IM cl, 2 ; High bits to beginning … … 75 75 ; (LCylinder << n) + (LHead / PHeadCount) 76 76 mov dx, cx ; Copy L-CHS Cylinder number to DX 77 mov cl, [di+DPT.bFlagsLow] ; Load shift count78 and cl, MASKL_DPT_CHS_SHIFT_COUNT77 mov cl, MASKL_DPT_CHS_SHIFT_COUNT ; Load shift count mask 78 and cl, [di+DPT.bFlagsLow] ; Shift count now in CL 79 79 shl dx, cl ; DX = LCylinder << n 80 80 add ax, dx ; AX = P-CHS Cylinder number … … 83 83 ret 84 84 85 ; *FIXME* The above function description doesn't match the code. 86 ; If CX has a maximum value of 1023 on entry then there is no way CX can be 16382 on return. 87 ; 1023 SHL 3 (MASKL_DPT_CHS_SHIFT_COUNT) is 8184. With the addition of AX (at most 255?) 88 ; the result is 8439. 85 89 86 90 ;-------------------------------------------------------------------- … … 102 106 ALIGN JUMP_ALIGN 103 107 Address_OldInt13hAddressToIdeAddress: 104 call Address_ExtractLCHSparametersFromOldInt13hAddress 105 ACCESSDPT__GET_UNSHIFTED_TRANSLATE_MODE_TO_AXZF 108 call Address_ExtractLCHSparametersFromOldInt13hAddress 109 mov al, [di+DPT.bFlagsLow] 110 and al, MASKL_DPT_TRANSLATEMODE 106 111 107 112 ;;; 0: ADDRESSING_MODE_NORMAL 108 113 jz SHORT DoNotConvertLCHS 109 114 110 115 ;;; 1: ADDRESSING_MODE_LARGE 111 112 116 test al, FLGL_DPT_ASSISTED_LBA 117 jz SHORT ConvertLargeModeLCHStoPCHS 113 118 114 119 ;;; 2: ADDRESSING_MODE_ASSISTED_LBA 115 ; Fall throughto ConvertAssistedLBAModeLCHStoLBARegisterValues120 ; Fall to ConvertAssistedLBAModeLCHStoLBARegisterValues 116 121 117 122 -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Tools/Prepare.asm
r567 r568 46 46 ; Make sure that sector count is valid 47 47 %ifdef USE_UNDOC_INTEL 48 eSALC; Clear AL using CF (CF is cleared since JB above fell through)48 salc ; Clear AL using CF (CF is cleared since JB above fell through) 49 49 or al, [es:si+DAP.wSectorCount] 50 50 %else -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h/BootSector.asm
r528 r568 42 42 ; display error code every time user intends to boot from hard disk 43 43 ; when A then C boot order is used. 44 test dl, dl 44 45 js SHORT .PrintFailedToLoadErrorCode ; Hard Drive 45 46 cmp ah, RET_HD_TIMEOUT … … 48 49 je SHORT .ReturnWithCFclearSinceFailedToLoadBootSector 49 50 .PrintFailedToLoadErrorCode: 50 %ifdef USE_18651 push .ReturnWithCFclearSinceFailedToLoadBootSector52 jmp DetectPrint_FailedToLoadFirstSector53 %else54 51 call DetectPrint_FailedToLoadFirstSector 55 jmp .ReturnWithCFclearSinceFailedToLoadBootSector 56 %endif 52 jmp SHORT .ReturnWithCFclearSinceFailedToLoadBootSector 57 53 58 54 … … 63 59 jne SHORT .FirstHardDiskSectorNotBootable 64 60 .AlwaysBootFromFloppyDriveForBooterGames: 65 stc ; Boot Sector loaded succes fully61 stc ; Boot Sector loaded successfully 66 62 jmp SHORT Int19_JumpToBootSectorOrRomBoot 67 63
Note:
See TracChangeset
for help on using the changeset viewer.