Changeset 637 in xtideuniversalbios
- Timestamp:
- May 5, 2026, 10:41:31 AM (9 days ago)
- Location:
- trunk/XTIDE_Universal_BIOS
- Files:
-
- 5 edited
-
Inc/Revision.inc (modified) (1 diff)
-
Src/Device/IDE/IdeIO.asm (modified) (2 diffs)
-
Src/Handlers/Int19h.asm (modified) (3 diffs)
-
Src/Handlers/Int19h/BootSector.asm (modified) (5 diffs)
-
Src/Initialization/Interrupts.asm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Inc/Revision.inc
r636 r637 1 63 61 637 -
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIO.asm
r636 r637 96 96 test dl, 1 97 97 jz SHORT .InputToALfromRegisterInDX 98 xor dl, 1001b ; Clear A3, SetA098 xor dl, 1001b ; Set A3, Clear A0 99 99 %endif 100 100 … … 208 208 test dl, 1 209 209 jz SHORT OutputALtoRegisterInDX 210 xor dl, 1001b ; Clear A3, SetA0210 xor dl, 1001b ; Set A3, Clear A0 211 211 SKIP2B bx ; Skip eSHL_IM dx, 1 212 212 %else -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm
r631 r637 4 4 ; 5 5 ; XTIDE Universal BIOS and Associated Tools 6 ; Copyright (C) 2009-2010 by Tomi Tilli, 2011-202 5by XTIDE Universal BIOS Team.6 ; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2026 by XTIDE Universal BIOS Team. 7 7 ; 8 8 ; This program is free software; you can redistribute it and/or modify … … 108 108 109 109 ; Restore system timer tick handler since hotkeys are no longer needed 110 %ifdef USE_386 111 push eax ; Save the high WORD of EAX 112 mov eax, [BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler] 113 mov [BIOS_SYSTEM_TIMER_TICK_INTERRUPT_08h*4], eax 114 pop eax ; Restore the high WORD of EAX 115 %else 110 116 cli 111 117 mov ax, [BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler] … … 114 120 mov [BIOS_SYSTEM_TIMER_TICK_INTERRUPT_08h*4+2], ax 115 121 sti 122 %endif 116 123 117 124 pop ds -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h/BootSector.asm
r630 r637 4 4 ; 5 5 ; XTIDE Universal BIOS and Associated Tools 6 ; Copyright (C) 2009-2010 by Tomi Tilli, 2011-202 4by XTIDE Universal BIOS Team.6 ; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2026 by XTIDE Universal BIOS Team. 7 7 ; 8 8 ; This program is free software; you can redistribute it and/or modify … … 37 37 call DetectPrint_TryToBootFromDL 38 38 call BootSector_LoadFirstSectorFromDriveDL 39 inc dx ; Determine if hard drive or floppy drive without changing the CF40 dec dl41 39 jnc SHORT .FirstSectorLoadedToESBX 42 40 … … 45 43 ; display error code every time user intends to boot from hard disk 46 44 ; when A then C boot order is used. 47 js SHORT .PrintFailedToLoadErrorCode ; Hard Drive 48 cmp ah, RET_HD_TIMEOUT 49 je SHORT BootSector_LoadFirstSectorFromDriveDL.Return 50 cmp ah, RET_HD_NOMEDIA 51 je SHORT BootSector_LoadFirstSectorFromDriveDL.Return 45 call BootSector_DriveDLIsEmptyFloppydrive 46 jz SHORT BootSector_LoadFirstSectorFromDriveDL.Return 52 47 .PrintFailedToLoadErrorCode: 53 48 jmp DetectPrint_FailedToLoadFirstSector 54 49 55 50 .FirstSectorLoadedToESBX: 51 test dl, dl 56 52 jns SHORT Int19h_JumpToBootSectorInESBXOrRomBoot ; Don't check for boot sector signature for floppy booter games 57 53 cmp WORD [es:bx+510], 0AA55h ; Valid boot sector? … … 91 87 jz SHORT .Return ; Loop while retries left 92 88 89 ; If the boot drive is a floppy drive and it is deemed to be empty then 90 ; we give up immediately to avoid unnecessarily long delays when booting. 91 ; This is particularly aggravating when using builds with first-A-then-C 92 ; boot order (i.e. non-interactive builds such as the Tiny build). 93 call BootSector_DriveDLIsEmptyFloppydrive 94 jz SHORT .Return ; With CF set 95 93 96 ; Reset drive and retry 94 97 xor ax, ax ; AH=00h, Disk Controller Reset … … 98 101 jmp SHORT .ReadRetryLoop 99 102 103 104 ;-------------------------------------------------------------------- 105 ; BootSector_DriveDLIsEmptyFloppydrive 106 ; Parameters: 107 ; AH: INT 13h error code 108 ; DL: Drive to boot from (translated, 00h or 80h) 109 ; Returns: 110 ; CF: Set 111 ; ZF: Set if DL is a floppy drive with no diskette inserted 112 ; Cleared if not 113 ; Corrupts registers: 114 ; Nothing 115 ;-------------------------------------------------------------------- 116 BootSector_DriveDLIsEmptyFloppydrive: 117 test dl, dl 118 jnz SHORT .Return ; Hard Drive 119 cmp ah, RET_HD_TIMEOUT 120 je SHORT .Return 121 cmp ah, RET_HD_NOMEDIA 122 .Return: 123 stc 124 ret 125 -
trunk/XTIDE_Universal_BIOS/Src/Initialization/Interrupts.asm
r636 r637 59 59 ;-------------------------------------------------------------------- 60 60 .InitializeInt13hAnd40h: 61 %ifdef USE_386 62 push eax ; Save the high WORD of EAX 63 %endif 64 61 65 %ifdef MODULE_MFM_COMPATIBILITY 66 %ifdef USE_386 67 mov eax, [es:BIOS_DISK_INTERRUPT_13h*4] ; Load old INT 13h vector 68 mov [RAMVARS.fpMFMint13h], eax ; Store old INT 13h vector 69 %else 62 70 mov ax, [es:BIOS_DISK_INTERRUPT_13h*4+2]; Load old INT 13h segment 63 71 mov [RAMVARS.fpMFMint13h+2], ax ; Store old INT 13h segment … … 65 73 mov ax, [es:BIOS_DISK_INTERRUPT_13h*4] ; Load old INT 13h offset 66 74 mov [RAMVARS.fpMFMint13h], ax ; Store old INT 13h offset 75 %endif ; USE_386 67 76 68 77 mov [RAMVARS.fpOldI13h+2], cs 69 78 mov WORD [RAMVARS.fpOldI13h], Int13hMFMcompatibilityHandler 79 %else ; ~MODULE_MFM_COMPATIBILITY 80 %ifdef USE_386 81 mov eax, [es:BIOS_DISK_INTERRUPT_13h*4] ; Load old INT 13h vector 82 mov [RAMVARS.fpOldI13h], eax ; Store old INT 13h vector 70 83 %else 71 84 mov ax, [es:BIOS_DISK_INTERRUPT_13h*4+2]; Load old INT 13h segment … … 74 87 mov ax, [es:BIOS_DISK_INTERRUPT_13h*4] ; Load old INT 13h offset 75 88 mov [RAMVARS.fpOldI13h], ax ; Store old INT 13h offset 89 %endif ; USE_386 76 90 %endif 77 91 … … 81 95 call FloppyDrive_IsInt40hInstalled 82 96 jc SHORT .Int40hAlreadyInstalled 97 %ifdef USE_386 98 mov [es:BIOS_DISKETTE_INTERRUPT_40h*4], eax ; Store old INT 13h vector 99 %else 83 100 mov [es:BIOS_DISKETTE_INTERRUPT_40h*4], ax ; Store old INT 13h offset 84 101 mov [es:BIOS_DISKETTE_INTERRUPT_40h*4+2], dx ; Store old INT 13h segment 102 %endif 85 103 .Int40hAlreadyInstalled: 104 105 %ifdef USE_386 106 pop eax ; Restore the high WORD of EAX 107 %endif 86 108 87 109 mov al, BIOS_DISK_INTERRUPT_13h ; INT 13h interrupt vector offset
Note:
See TracChangeset
for help on using the changeset viewer.
