Changeset 150 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/AccessDPT.asm
- Timestamp:
- Apr 29, 2011, 7:04:13 PM (14 years ago)
- google:author:
- aitotat
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/AccessDPT.asm
r99 r150 6 6 7 7 ;-------------------------------------------------------------------- 8 ; Returns L-CHS values from DPT. 9 ; 8 ; AccessDPT_GetDriveSelectByteToAL 9 ; Parameters: 10 ; DS:DI: Ptr to Disk Parameter Table 11 ; Returns: 12 ; AL: Drive Select Byte 13 ; Corrupts registers: 14 ; Nothing 15 ;-------------------------------------------------------------------- 16 ALIGN JUMP_ALIGN 17 AccessDPT_GetDriveSelectByteToAL: 18 mov al, [di+DPT.wFlags] 19 and al, FLG_DRVNHEAD_LBA | FLG_DRVNHEAD_DRV 20 or al, MASK_DRVNHEAD_SET ; Bits set to 1 for old drives 21 ret 22 23 24 ;-------------------------------------------------------------------- 25 ; AccessDPT_GetDeviceControlByteToAL 26 ; Parameters: 27 ; DS:DI: Ptr to Disk Parameter Table 28 ; Returns: 29 ; AL: Device Control Byte 30 ; Corrupts registers: 31 ; Nothing 32 ;-------------------------------------------------------------------- 33 ALIGN JUMP_ALIGN 34 AccessDPT_GetDeviceControlByteToAL: 35 xor al, al 36 test BYTE [di+DPT.wFlags], FLG_DPT_ENABLE_IRQ 37 jnz SHORT .EnableDeviceIrq 38 or al, FLG_DEVCONTROL_nIEN ; Disable IRQ 39 .EnableDeviceIrq: 40 ret 41 42 43 ;-------------------------------------------------------------------- 44 ; AccessDPT_GetAddressingModeForWordLookToBX 45 ; Parameters: 46 ; DS:DI: Ptr to Disk Parameter Table 47 ; Returns: 48 ; BX: Addressing Mode (L-CHS, P-CHS, LBA28, LBA48) shifted for WORD lookup 49 ; Corrupts registers: 50 ; Nothing 51 ;-------------------------------------------------------------------- 52 ALIGN JUMP_ALIGN 53 AccessDPT_GetAddressingModeForWordLookToBX: 54 mov bl, [di+DPT.wFlags] 55 and bx, BYTE MASK_DPT_ADDRESSING_MODE 56 eSHR_IM bx, ADDRESSING_MODE_FIELD_POSITION-1 57 ret 58 59 60 ;-------------------------------------------------------------------- 10 61 ; AccessDPT_GetLCHSfromPCHS 11 62 ; Parameters: … … 21 72 AccessDPT_GetLCHSfromPCHS: 22 73 xchg ax, cx 23 mov cl, [di+DPT.bShLtoP] ; Load shift count 24 mov bx, [di+DPT.wPCyls] ; Load P-CHS cylinders 25 shr bx, cl ; Shift to L-CHS cylinders 74 mov cl, [di+DPT.wFlags] 75 and cl, MASK_DPT_CHS_SHIFT_COUNT ; Load shift count 76 mov bx, [di+DPT.wPchsCylinders] ; Load P-CHS cylinders 77 shr bx, cl ; Shift to L-CHS cylinders 26 78 xchg cx, ax 27 mov dx, [di+DPT.wLHeads]; Load L-CHS heads28 eMOVZX ax, BYTE [di+DPT.bP Sect] ; Load Sectors per track79 eMOVZX dx, BYTE [di+DPT.bLchsHeads] ; Load L-CHS heads 80 eMOVZX ax, BYTE [di+DPT.bPchsSectors] ; Load Sectors per track 29 81 ret 30 82 31 83 32 84 ;-------------------------------------------------------------------- 33 ; Tests IDEVARS flags for master or slave drive.34 ;35 85 ; AccessDPT_TestIdeVarsFlagsForMasterOrSlaveDrive 36 86 ; Parameters: … … 63 113 ALIGN JUMP_ALIGN 64 114 AccessDPT_GetPointerToDRVPARAMStoCSBX: 65 eMOVZX bx, [di+DPT.bIdeOff] ; CS:BX points to IDEVARS 66 test BYTE [di+DPT.bDrvSel], FLG_IDE_DRVHD_DRV 67 jnz SHORT .ReturnPointerToSlaveDRVPARAMS 68 add bx, BYTE IDEVARS.drvParamsMaster 115 eMOVZX bx, [di+DPT.bIdevarsOffset] ; CS:BX points to IDEVARS 116 add bx, BYTE IDEVARS.drvParamsMaster ; CS:BX points to Master Drive DRVPARAMS 117 test BYTE [di+DPT.wFlags], FLG_DPT_SLAVE 118 jz SHORT .ReturnPointerToDRVPARAMS 119 add bx, BYTE DRVPARAMS_size ; CS:BX points to Slave Drive DRVPARAMS 120 .ReturnPointerToDRVPARAMS: 69 121 ret 70 ALIGN JUMP_ALIGN71 .ReturnPointerToSlaveDRVPARAMS:72 add bx, BYTE IDEVARS.drvParamsSlave73 ret
Note:
See TracChangeset
for help on using the changeset viewer.