- Timestamp:
- Oct 2, 2012, 6:28:46 PM (12 years ago)
- google:author:
- aitotat@gmail.com
- Location:
- trunk/XTIDE_Universal_BIOS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Inc/Controllers/XTCF.inc
r471 r472 58 58 59 59 ;-------------------------------------------------------------------- 60 ; IS_XTCF_IN_PORT_CX61 ; Parameters:62 ; CX: Port to search XT-CF from (can be anything)63 ; Returns:64 ; AH: RET_HD_SUCCESS if XT-CF is found from port65 ; RET_HD_INVALID if XT-CF is not found66 ;--------------------------------------------------------------------67 IS_XTCF_IN_PORT_CX EQU 168 69 ;--------------------------------------------------------------------70 60 ; READ_XTCF_CONTROL_REGISTER_TO_DH 71 61 ; Parameters: … … 74 64 ; DH: XT-CF Control Register contents 75 65 ;-------------------------------------------------------------------- 76 READ_XTCF_CONTROL_REGISTER_TO_DH EQU 266 READ_XTCF_CONTROL_REGISTER_TO_DH EQU 1 77 67 78 68 ;-------------------------------------------------------------------- … … 82 72 ; DL: Drive Number 83 73 ;-------------------------------------------------------------------- 84 WRITE_DH_TO_XTCF_CONTROL_REGISTER EQU 374 WRITE_DH_TO_XTCF_CONTROL_REGISTER EQU 2 85 75 86 76 -
trunk/XTIDE_Universal_BIOS/Inc/CustomDPT.inc
r437 r472 23 23 24 24 ; Base DPT for all device types 25 struc DPT ; 10 or 18 bytes26 ; General Disk Parameter Table related 25 struc DPT 26 ; General Disk Parameter Table related (Bytes 0...3) 27 27 .wFlags: 28 28 .bFlagsLow resb 1 … … 31 31 .bInitError resb 1 ; Flags for AH=09h initialization errors 32 32 33 ; CHS variables 33 ; CHS variables (Bytes 4...8) 34 34 .wLchsCylinders resb 2 ; (1...1027, yes 1027) 35 35 .wLchsHeadsAndSectors: … … 43 43 .wPchsCylinders resb 2 44 44 .twLbaSectors resb 6 ; 48-bit sector count for LBA addressing 45 %else46 resb 1 ; Alignment47 45 %endif 46 47 %ifdef MODULE_8BIT_IDE 48 .wXTCFport resb 2 ; Autodetected XT-CF port 49 %endif 50 alignb 2 ; WORD alignent for DPT_SERIAL or DPT_ATA 48 51 endstruc 49 52 … … 115 118 .wMinPioCycleTime resb 2 ; Minimum PIO Cycle Time in ns 116 119 .bPioMode resb 1 ; Best supported PIO mode 117 resb 1120 alignb 2 118 121 endstruc 119 122 %endif -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH1Eh_XTCF.asm
r471 r472 38 38 ;-------------------------------------------------------------------- 39 39 AH1Eh_HandlerForXTCFfeatures: 40 eMOVZX bx, al ; Subcommand to BX40 xor ah, ah ; Subcommand now in AX 41 41 %ifndef USE_186 42 call AH1Eh_ProcessXTCFsubcommandFrom BX42 call AH1Eh_ProcessXTCFsubcommandFromAX 43 43 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 44 44 %else 45 45 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 46 ; Fall to AH1Eh_ProcessXTCFsubcommandFrom BX46 ; Fall to AH1Eh_ProcessXTCFsubcommandFromAX 47 47 %endif 48 48 49 49 50 50 ;-------------------------------------------------------------------- 51 ; AH1Eh_ProcessXTCFsubcommandFrom BX51 ; AH1Eh_ProcessXTCFsubcommandFromAX 52 52 ; Parameters: 53 ; BX: XT-CF subcommand (see XTCF.inc for more info)53 ; AX: XT-CF subcommand (see XTCF.inc for more info) 54 54 ; DS:DI: Ptr to DPT (in RAMVARS segment) 55 55 ; SS:BP: Ptr to IDEPACK … … 60 60 ; AL, BX, CX, DX 61 61 ;-------------------------------------------------------------------- 62 AH1Eh_ProcessXTCFsubcommandFromBX: 62 AH1Eh_ProcessXTCFsubcommandFromAX: 63 ; IS_THIS_DRIVE_XTCF. We check this for all commands. 64 dec ax ; Subcommand 65 mov dx, [di+DPT.wXTCFport] 66 test dx, dx ; Never zero for XT-CF, Always zero for other devices 67 jz SHORT XTCFnotFound 68 69 ; READ_XTCF_CONTROL_REGISTER_TO_DH 70 add dl, XTCF_CONTROL_REGISTER ; DX to Control Register 71 dec ax ; Subcommand 72 jnz SHORT .SkipReadXtcfControlRegisterToDH 73 in al, dx 74 mov [bp+IDEPACK.intpack+INTPACK.dh], al 75 jmp SHORT .ReturnWithSuccess 76 .SkipReadXtcfControlRegisterToDH: 77 78 ; WRITE_DH_TO_XTCF_CONTROL_REGISTER 79 dec ax ; Subcommand 80 jnz SHORT XTCFnotFound ; Invalid subcommand 81 mov al, [bp+IDEPACK.intpack+INTPACK.dh] 82 out dx, al 83 .ReturnWithSuccess: 84 xor ah, ah 85 ret 86 87 88 ;-------------------------------------------------------------------- 89 ; AH1Eh_DetectXTCFwithBasePortInDX 90 ; Parameters: 91 ; DX: Base I/O port address to check 92 ; Returns: 93 ; AH: RET_HD_SUCCESS if XT-CF is found from port 94 ; RET_HD_INVALID if XT-CF is not found 95 ; CF: Cleared if XT-CF found 96 ; Set if XT-CF not found 97 ; Corrupts registers: 98 ; AL, DX 99 ;-------------------------------------------------------------------- 100 AH1Eh_DetectXTCFwithBasePortInDX: 101 add dl, XTCT_CONTROL_REGISTER_INVERTED_in ; set DX to XT-CF config register (inverted) 102 in al, dx ; get value 103 mov ah, al ; save in ah 104 inc dx ; set DX to XT-CF config register (non-inverted) 105 in al, dx ; get value 106 not al ; invert it 107 sub ah, al ; do they match? (clear AH if they do) 108 jz SHORT XTCFfound 109 110 XTCFnotFound: 111 stc ; set carry flag since XT-CF not found 112 mov ah, RET_HD_INVALID 113 XTCFfound: 114 ret ; and return
Note:
See TracChangeset
for help on using the changeset viewer.