Changeset 596 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Initialization
- Timestamp:
- Jul 10, 2018, 1:20:11 AM (6 years ago)
- Location:
- trunk/XTIDE_Universal_BIOS/Src/Initialization
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm
r593 r596 37 37 AdvAtaInit_DetectControllerForIdeBaseInBX: 38 38 ; Detect if system has PCI bus. If it does, we can skip VLB detection. This is 39 ; good thing since detecting Vision QD6 850 is dangerous since Intel PIIX4 south bridge39 ; good thing since detecting Vision QD6580 is dangerous since Intel PIIX4 south bridge 40 40 ; mirrors Interrupt Controller registers from Axh to Bxh. This can lead to faulty 41 ; detection of QD6 850 that will eventually crash the system when ports are written.41 ; detection of QD6580 that will eventually crash the system when ports are written. 42 42 43 43 ; We should save the 32-bit registers but we don't since system BIOS has stored -
trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/Vision.asm
r593 r596 194 194 ; Calculate Recovery Time value for QD65xx IDE Timing Register 195 195 xchg ax, cx 196 eMOVZX cx, BYTE[cs:bx+.rgbToSubtractFromCycleTimeBasedOnPIOmode]197 sub ax, cx196 mov bl, [cs:bx+.rgbToSubtractFromCycleTimeBasedOnPIOmode] 197 sub ax, bx 198 198 mov bx, bp ; Active Time value now in BL 199 199 mov bp, QD65xx_MAX_RECOVERY_TIME_CLOCKS | (QD65xx_MIN_RECOVERY_TIME_CLOCKS << 8) -
trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectDrives.asm
r594 r596 99 99 ; Primary reason is to support dynamic overlay feature in the future. Second reason 100 100 ; is a hack to get Windows 95 load proper IDE drivers. 101 ; 101 ; 102 102 ; The Windows hack has two parts. First part is to try to alter CMOS address 12h as that 103 103 ; is what Windows 95 driver reads to detect IDE drives. Altering is not possible on all 104 ; systems since CMOS has a checksum but it 's location is not standardized. We will first104 ; systems since CMOS has a checksum but its location is not standardized. We will first 105 105 ; try to detect valid checksum. If it succeeds, then it is safe to assume this system 106 106 ; has compatible CMOS and we can alter it. … … 117 117 call CMOS_Verify10hTo2Dh ; Can we modify CMOS? 118 118 jnz SHORT .ClearBdaDriveCount ; Unsupported BIOS, use plan B 119 119 120 120 ; Now we can alter CMOS location 12h 121 121 mov dl, HARD_DISK_TYPES -
trunk/XTIDE_Universal_BIOS/Src/Initialization/Interrupts.asm
r594 r596 65 65 mov ax, [es:BIOS_DISK_INTERRUPT_13h*4] ; Load old INT 13h offset 66 66 mov [RAMVARS.fpMFMint13h], ax ; Store old INT 13h offset 67 67 68 68 mov [RAMVARS.fpOldI13h+2], cs 69 mov WORD [RAMVARS.fpOldI13h], Int13hMFMcompatibilityHandler 69 mov WORD [RAMVARS.fpOldI13h], Int13hMFMcompatibilityHandler 70 70 %else 71 71 mov ax, [es:BIOS_DISK_INTERRUPT_13h*4+2]; Load old INT 13h segment … … 252 252 xchg cx, ax ; IRQ index to CL 253 253 in al, dx ; Read Interrupt Mask Register 254 %ifdef USE_NEC_V 255 eCLR1 al, cl ; Clear wanted bit 256 %else 254 257 mov ch, ~1 ; Load bit mask to be rotated 255 258 rol ch, cl ; Rotate mask to correct position for clearing 256 259 and al, ch ; Clear wanted bit 260 %endif 257 261 out dx, al ; Write modified Interrupt Mask Register 258 262 pop cx
Note:
See TracChangeset
for help on using the changeset viewer.