Changeset 621 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device


Ignore:
Timestamp:
Nov 21, 2021, 2:15:32 PM (3 years ago)
Author:
Krister Nordvall
Message:

Changes:

  • Fixed three different bugs all causing the boot menu to show drives using IRQs even though the BIOS had been built without MODULE_IRQ.
  • Fixed two bugs in XTIDECFG where loading a BIOS from file and then loading the old settings from EEPROM would
    • overwrite ROMVARS.wFlags in the loaded BIOS file (in RAM). The possibly resulting mismatch of module flags could make it impossible to change settings for modules included in the BIOS or allow changing settings for modules not included in the BIOS.
    • not copy the color theme over to the loaded BIOS.
  • Also fixed two very minor bugs in XTIDECFG in BiosFile_LoadFileFromDSSItoRamBuffer and BiosFile_SaveRamBufferToFileInDSSI where the error handling in these routines would close whatever file handle that happened to match the error code returned by DOS in AX.
  • Made significant changes to the new flash ROM programming routines to reduce the size. Also fixed a minor bug that would cause the second verification to be skipped and return success when programming a 64 KB block of data.
  • Changed the custom BIOS build file names to the 8.3 format.
  • Changed some help strings in XTIDECFG to clarify things.
  • Other minor optimizations and fixes.
Location:
trunk/XTIDE_Universal_BIOS/Src/Device
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Device/Device.asm

    r617 r621  
    5252    jne     IdeDPT_Finalize
    5353    jmp     SerialDPT_Finalize
    54 %else
     54%else ; ~USE_386
    5555    je      SHORT .FinalizeDptForSerialPortDevice
    5656    jmp     IdeDPT_Finalize
     
    100100;       AL, BX, CX, DX, SI, DI, ES
    101101;--------------------------------------------------------------------
     102%ifndef NO_ATAID_CORRECTION
    102103Device_IdentifyToBufferInESSIwithDriveSelectByteInBH:
    103 %ifndef NO_ATAID_CORRECTION
    104104    cmp     cx, XUB_INT13h_SIGNATURE
    105105    je      SHORT .DoNotFixAtaInformation
     
    108108    ePUSH_T cx, AtaID_PopESSIandFixIllegalValuesFromESSI    ; Here we modify ATA information if necessary
    109109.DoNotFixAtaInformation:
    110 %endif
    111110
    112111%ifdef MODULE_SERIAL    ; IDE + Serial
     
    115114    jne     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    116115    jmp     SerialCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
    117 %else
     116%else ; ~USE_386
    118117    je      SHORT .IdentifyDriveFromSerialPort
    119118    jmp     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
     
    126125%endif
    127126
     127%else ; NO_ATAID_CORRECTION
     128%ifdef MODULE_SERIAL    ; IDE + Serial
     129    cmp     BYTE [cs:bp+IDEVARS.bDevice], DEVICE_SERIAL_PORT
     130%ifdef USE_386
     131    jne     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
     132    jmp     SerialCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
     133%else ; ~USE_386
     134    je      SHORT .IdentifyDriveFromSerialPort
     135    jmp     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
     136.IdentifyDriveFromSerialPort:
     137    jmp     SerialCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
     138%endif
     139
     140%else                   ; IDE
     141    Device_IdentifyToBufferInESSIwithDriveSelectByteInBH    EQU     IdeCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH
     142%endif
     143%endif ; NO_ATAID_CORRECTION
     144
    128145
    129146;--------------------------------------------------------------------
     
    149166    jz      IdeCommand_OutputWithParameters
    150167    jmp     SerialCommand_OutputWithParameters
    151 %else
     168%else ; ~USE_386
    152169    jnz     SHORT .OutputCommandToSerialPort
    153170    jmp     IdeCommand_OutputWithParameters
     
    182199;   jz      IdeCommand_ReadLBAlowRegisterToAL
    183200;   jmp     SerialCommand_ReadLBAlowRegisterToAL
    184 ;%else
     201;%else ; ~USE_386
    185202;   jnz     SHORT .ReadFromSerialPort
    186203;   jmp     IdeCommand_ReadLBAlowRegisterToAL
     
    214231    jnz     SHORT ReturnSuccessForSerialPort
    215232    jmp     IdeCommand_SelectDrive
    216 %else
     233%else ; USE_386
    217234    jz      IdeCommand_SelectDrive
    218235    ; Fall to ReturnSuccessForSerialPort
     
    225242
    226243%ifdef MODULE_SERIAL
    227 ALIGN JUMP_ALIGN
    228244ReturnSuccessForSerialPort:
    229245    xor     ax, ax
  • trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialCommand.asm

    r601 r621  
    154154
    155155    push    si
    156     call    FindDPT_ToDSDIforSerialDevice
     156    call    FindDPT_ToDSDIforSerialDevice   ; Preserves AX
    157157    pop     si
    158158%ifdef MODULE_SERIAL_FLOPPY
     
    162162; So, if there was a previously found floppy disk, DI will point to that DPT and we use that value for the slave.
    163163;
    164     cmp     BYTE [RAMVARS.xlateVars+XLATEVARS.bFlopCntAndFirst], 0
     164    cmp     [RAMVARS.xlateVars+XLATEVARS.bFlopCntAndFirst], al  ; Zero?
    165165    je      SHORT .notfounddpt
    166166.founddpt:
Note: See TracChangeset for help on using the changeset viewer.