Changeset 167 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS
- Timestamp:
- Aug 21, 2011, 3:42:15 PM (13 years ago)
- google:author:
- aitotat@gmail.com
- Location:
- trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH41h_CheckIfExtensionsPresent.asm
r165 r167 17 17 ; Returns with INTPACK: 18 18 ; AH: Major version of EBIOS extensions 19 ; BX: 55AAh19 ; BX: AA55h 20 20 ; CX: Support bits 21 21 ; CF: 0 if succesfull, 1 if error … … 26 26 jne SHORT .EbiosNotSupported 27 27 28 mov BYTE [bp+IDEPACK.intpack+INTPACK.ah], EBIOS_VERSION 29 mov WORD [bp+IDEPACK.intpack+INTPACK.bx], 0AA55h 28 30 mov WORD [bp+IDEPACK.intpack+INTPACK.cx], ENHANCED_DRIVE_ACCESS_SUPPORT 29 mov ah, EBIOS_VERSION30 31 and BYTE [bp+IDEPACK.intpack+INTPACK.flags], ~FLG_FLAGS_CF ; Return with CF cleared 31 32 jmp Int13h_ReturnFromHandlerWithoutStoringErrorCode -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH42h_ExtendedReadSectors.asm
r165 r167 55 55 cmp BYTE [es:si+DAP.bSize], MINIMUM_DAP_SIZE 56 56 jb SHORT .DapContentsNotValid 57 cmp BYTE [es:si+DAP.bSectorCount],057 cmp WORD [es:si+DAP.wSectorCount], BYTE 0 58 58 jle SHORT .DapContentsNotValid ; Must be 1...127 59 59 ret -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH48h_GetExtendedDriveParameters.asm
r165 r167 23 23 ALIGN JUMP_ALIGN 24 24 AH48h_HandlerForGetExtendedDriveParameters: 25 ; Get ATA Drive Information and total sector count from it 25 ; Get our buffer to ES:SI 26 push di 27 call FindDPT_ForNewDriveToDSDI 28 lea si, [di+LARGEST_DPT_SIZE] ; IdeCommand.asm required fake DPT 29 pop di 26 30 push ds 27 pop es ; ES now points RAMVARS segment 28 mov si, [cs:ROMVARS.bStealSize] 29 and si, BYTE 7Fh 30 eSHL_IM si, 10 ; Kilobytes to bytes 31 sub si, 512 ; Subtract buffer size for offset in RAMVARS 32 call AH25h_GetDriveInformationToBufferInESSIfromDriveInDL 31 pop es 32 33 ; Get Drive ID and total sector count from it 34 call AH25h_GetDriveInformationToBufferInESSI 35 jc SHORT .ReturnWithError 33 36 call AtaID_GetTotalSectorCountToBXDXAXfromAtaInfoInESSI 34 xchg cx, ax 37 xchg cx, ax ; Sector count now in BX:DX:CX 35 38 36 39 ; Point ES:DI to Destination buffer 37 40 mov di, [bp+IDEPACK.intpack+INTPACK.si] 38 41 mov es, [bp+IDEPACK.intpack+INTPACK.ds] 39 cmp WORD [es:di+EDRIVE_INFO.wSize], MINIMUM_EDRIVEINFO_SIZE 42 mov ax, MINIMUM_EDRIVEINFO_SIZE 43 cmp WORD [es:di+EDRIVE_INFO.wSize], ax 40 44 jb SHORT .BufferTooSmall 45 je SHORT .SkipEddConfigurationParameters 46 47 ; We do not support EDD Configuration Parameters so set to FFFF:FFFFh 48 xor ax, ax 49 dec ax ; AX = FFFFh 50 mov [es:di+EDRIVE_INFO.fpEDDparams], ax 51 mov [es:di+EDRIVE_INFO.fpEDDparams+2], ax 52 mov ax, EDRIVE_INFO_size 41 53 42 54 ; Fill Extended Drive Information Table in ES:DI 43 mov ax, MINIMUM_EDRIVEINFO_SIZE 44 stosw 55 .SkipEddConfigurationParameters: 56 stosw ; Store Extended Drive Information Table size 45 57 mov al, FLG_DMA_BOUNDARY_ERRORS_HANDLED_BY_BIOS 46 58 stosw … … 63 75 .BufferTooSmall: 64 76 mov ah, RET_HD_INVALID 77 .ReturnWithError: 65 78 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
Note:
See TracChangeset
for help on using the changeset viewer.