Changeset 491 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src


Ignore:
Timestamp:
Dec 15, 2012, 2:46:29 PM (12 years ago)
Author:
krille_n_@…
google:author:
krille_n_@hotmail.com
Message:

Changes:

  • Added a new define (USE_UNDOC_INTEL) that enables optimizations possible by using undocumented instructions available on all Intel processors and truly compatible clones. AFAIK the only exceptions are the NEC V-series and the Sony CXQ70108 processors so this option should be safe for use on the AT builds.
  • Building BIOSDRVS or the BIOS without MODULE_STRINGS_COMPRESSED would fail due to the recent code exclusions so I changed them a bit. Also fixed the mistaken change to Main.asm
  • Changed the Tandy specific info in Configuration_FullMode.txt so it matches the info in the Wiki.
  • Optimizations and fixes in general.
Location:
trunk/XTIDE_Universal_BIOS/Src
Files:
19 edited

Legend:

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

    r486 r491  
    7474;--------------------------------------------------------------------
    7575TransferBlockToOrFromXTCF:
    76     ; 8-bit DMA transfers must be done withing 64k physical page.
     76    ; 8-bit DMA transfers must be done within 64k physical page.
    7777    ; XT-CF support maximum of 64 sector (32768 bytes) blocks in DMA mode
    7878    ; so we never need to separate transfer to more than 2 separate DMA operations.
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIO.asm

    r473 r491  
    5353IdeIO_InputToALfromIdeRegisterInDL:
    5454    xor     dh, dh  ; IDE Register index now in DX
    55 
     55    mov     bx, dx  ; and BX
    5656    mov     al, [di+DPT_ATA.bDevice]
    5757    cmp     al, DEVICE_8BIT_XTIDE_REV2
     
    6363
    6464.InputToALfromMemoryMappedRegisterInDX:
    65     mov     bx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET
    66     add     bx, dx
    6765    push    ds
    6866    mov     ds, [di+DPT.wBasePort]  ; Segment for JR-IDE/ISA
    69     mov     al, [bx]
     67    mov     al, [bx+JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET]
    7068    pop     ds
    7169    ret
    7270
    7371.ReverseA0andA3fromRegisterIndexInDX:
    74     mov     bx, dx
    7572    mov     dl, [cs:bx+g_rgbSwapA0andA3fromIdeRegisterIndex]
    7673    SKIP2B  bx  ; Skip shl dx, 1
    7774
    7875.ShlRegisterIndexInDX:
    79     shl     dx, 1
     76    eSHL_IM dx, 1
    8077    ; Fall to .InputToALfromRegisterInDX
    8178
     
    116113.ShlRegisterIndexInDX:
    117114    add     dl, OFFSET_TO_CONTROL_BLOCK_REGISTERS
    118     shl     dx, 1
     115    eSHL_IM dx, 1
    119116    jmp     SHORT OutputALtoRegisterInDX
    120117
     
    164161
    165162.ShlRegisterIndexInDX:
    166     shl     dx, 1
     163    eSHL_IM dx, 1
    167164    ; Fall to OutputALtoRegisterInDX
    168165
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeTransfer.asm

    r480 r491  
    231231
    232232    ; Convert ES:SI to physical address
    233     xor     dx, dx
    234     mov     ax, es
     233%ifdef USE_186          ; Bytes EU Cycles(286)
     234    mov     ax, es      ; 2     2
     235    rol     ax, 4       ; 3     9
     236    mov     dx, ax      ; 2     2
     237    and     ax, BYTE 0Fh; 3     3
     238    xor     dx, ax      ; 2     2
     239    add     si, dx      ; 2     2
     240    adc     al, ah      ; 2     2
     241    mov     es, ax      ; 2     2
     242    ;------------------------------------
     243                        ; 18    24
     244%else ; 808x
     245
     246%if 0
     247                        ; Bytes EU Cycles(808x)
     248    mov     al, 4       ; 2     4
     249    mov     dx, es      ; 2     2
     250    xchg    cx, ax      ; 1     3
     251    rol     dx, cl      ; 2     24
     252    mov     cx, dx      ; 2     2
     253    xchg    cx, ax      ; 1     3
     254    and     ax, BYTE 0Fh; 3     4
     255    xor     dx, ax      ; 2     3
     256    add     si, dx      ; 2     3
     257    adc     al, ah      ; 2     3
     258    mov     es, ax      ; 2     2
     259    ;------------------------------------
     260                        ; 21    53
     261;
     262; Judging by the Execution Unit cycle count the above block of code is
     263; apparently slower. However, the shifts and rotates in the block below
     264; execute faster than the Bus Interface Unit on an 8088 can fetch them,
     265; thus causing the EU to starve. The difference in true execution speed
     266; (if any) might not be worth the extra 5 bytes.
     267; In other words, we could use a real world test here.
     268;
     269%endif ; 0
     270                        ; Bytes EU Cycles(808x/286)
     271    xor     dx, dx      ; 2     3/2
     272    mov     ax, es      ; 2     2/2
    235273%rep 4
    236     shl     ax, 1
    237     rcl     dx, 1
     274    shl     ax, 1       ; 8     8/8
     275    rcl     dx, 1       ; 8     8/8
    238276%endrep
    239     add     si, ax
    240     adc     dl, dh
    241     mov     es, dx
     277    add     si, ax      ; 2     3/2
     278    adc     dl, dh      ; 2     3/2
     279    mov     es, dx      ; 2     2/2
     280    ;------------------------------------
     281%endif                  ; 26    29/26
    242282    ret
    243283%endif ; MODULE_8BIT_IDE
     
    266306%ifdef MODULE_8BIT_IDE
    267307        dw      IdePioBlock_ReadFrom8bitDataPort    ; 2, DEVICE_8BIT_ATA
    268         dw      IdePioBlock_ReadFromXtideRev1       ; 3, DEVICE_8BIT_XTIDE_REV1     
     308        dw      IdePioBlock_ReadFromXtideRev1       ; 3, DEVICE_8BIT_XTIDE_REV1
    269309        dw      IdePioBlock_ReadFromXtideRev2       ; 4, DEVICE_8BIT_XTIDE_REV2
    270310        dw      IdePioBlock_ReadFrom8bitDataPort    ; 5, DEVICE_8BIT_XTCF_PIO8
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeWait.asm

    r489 r491  
    33
    44;
    5 ; XTIDE Universal BIOS and Associated Tools 
     5; XTIDE Universal BIOS and Associated Tools
    66; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    77;
     
    1010; the Free Software Foundation; either version 2 of the License, or
    1111; (at your option) any later version.
    12 ; 
     12;
    1313; This program is distributed in the hope that it will be useful,
    1414; but WITHOUT ANY WARRANTY; without even the implied warranty of
    1515; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16 ; GNU General Public License for more details.     
     16; GNU General Public License for more details.
    1717; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    18 ;       
     18;
    1919
    2020; Section containing code
     
    9393;       AL, BX, CX, DX
    9494;--------------------------------------------------------------------
    95 .IdePollBsyAndFlgInAH:
     95PollBsyAndFlgInAH:
    9696    call    IdeIO_InputStatusRegisterToAL       ; Discard contents of first read
    9797
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH0h_HReset.asm

    r489 r491  
    33
    44;
    5 ; XTIDE Universal BIOS and Associated Tools 
     5; XTIDE Universal BIOS and Associated Tools
    66; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    77;
     
    1010; the Free Software Foundation; either version 2 of the License, or
    1111; (at your option) any later version.
    12 ; 
     12;
    1313; This program is distributed in the hope that it will be useful,
    1414; but WITHOUT ANY WARRANTY; without even the implied warranty of
    1515; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16 ; GNU General Public License for more details.     
     16; GNU General Public License for more details.
    1717; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    18 ;       
     18;
    1919
    2020; Section containing code
     
    155155    mov     dl, ROMVARS.ideVars0                        ; starting Idevars offset
    156156
    157     ; Get count of ALL Idevars structures, not just the ones that are configured.  This may seem odd, 
     157    ; Get count of ALL Idevars structures, not just the ones that are configured.  This may seem odd,
    158158    ; but it catches the .ideVarsSerialAuto structure, which would not be scanned if the count from
    159159    ; RamVars_GetIdeControllerCountToCX was used.  Unused controllers won't make a difference, since no DPT
     
    174174
    175175.done:
    176 .NoForeignDrivesToReset:
    177176    ret
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH1Eh_XTCF.asm

    r477 r491  
    33
    44;
    5 ; XTIDE Universal BIOS and Associated Tools 
     5; XTIDE Universal BIOS and Associated Tools
    66; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    77;
     
    1010; the Free Software Foundation; either version 2 of the License, or
    1111; (at your option) any later version.
    12 ; 
     12;
    1313; This program is distributed in the hope that it will be useful,
    1414; but WITHOUT ANY WARRANTY; without even the implied warranty of
    1515; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16 ; GNU General Public License for more details.     
     16; GNU General Public License for more details.
    1717; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    18 ;       
     18;
    1919
    2020; Section containing code
     
    6363    call    AccessDPT_IsThisDeviceXTCF
    6464    jne     SHORT XTCFnotFound
    65     and     ax, BYTE 7Fh                ; Subcommand now in AX
     65    and     ax, BYTE 7Fh                ; Subcommand now in AX (clears AH and CF)
    6666    jz      SHORT .ReturnWithSuccess    ; IS_THIS_DRIVE_XTCF
    6767
     
    7070    jnz     SHORT .SkipReadXtcfControlRegisterToDH
    7171    mov     dx, [di+DPT.wBasePort]
    72     add     dl, XTCF_CONTROL_REGISTER
     72    add     dl, XTCF_CONTROL_REGISTER   ; Will never overflow (keeps CF cleared)
    7373    in      al, dx
    7474    mov     [bp+IDEPACK.intpack+INTPACK.dh], al
    7575.ReturnWithSuccess:
    76     xor     ah, ah
    77     ret
     76    ret     ; With AH and CF cleared
     77
    7878.SkipReadXtcfControlRegisterToDH:
    79 
    8079    ; WRITE_DH_TO_XTCF_CONTROL_REGISTER
    8180    dec     ax                          ; Subcommand
     
    122121    mov     BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_XTCF_PIO8
    123122    ; Fall to .Enable8bitPioMode
    124    
     123
    125124    ; We always need to enable 8-bit mode since 16-bit mode is restored
    126     ; when controller is reset (AH=0h or Dh)
    127 .Enable8bitPioMode: 
     125    ; when controller is reset (AH=00h or 0Dh)
     126.Enable8bitPioMode:
    128127    jmp     AH23h_Enable8bitPioMode
    129128
     
    143142AH1Eh_DetectXTCFwithBasePortInDX:
    144143    push    dx
    145     add     dl, XTCT_CONTROL_REGISTER_INVERTED_in   ; set DX to XT-CF config register (inverted)
     144    add     dl, XTCF_CONTROL_REGISTER_INVERTED_in   ; set DX to XT-CF config register (inverted)
    146145    in      al, dx      ; get value
    147146    mov     ah, al      ; save in ah
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH24h_HSetBlocks.asm

    r473 r491  
    33
    44;
    5 ; XTIDE Universal BIOS and Associated Tools 
     5; XTIDE Universal BIOS and Associated Tools
    66; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    77;
     
    1010; the Free Software Foundation; either version 2 of the License, or
    1111; (at your option) any later version.
    12 ; 
     12;
    1313; This program is distributed in the hope that it will be useful,
    1414; but WITHOUT ANY WARRANTY; without even the implied warranty of
    1515; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16 ; GNU General Public License for more details.     
     16; GNU General Public License for more details.
    1717; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    18 ;       
     18;
    1919
    2020; Section containing code
     
    5959;--------------------------------------------------------------------
    6060AH24h_SetBlockSize:
     61%ifdef MODULE_8BIT_IDE
    6162    ; XT-CF does not support largest block size in DMA mode.
    62 %ifdef MODULE_8BIT_IDE
    63     call    AccessDPT_IsThisDeviceXTCF
    64     cmp     ah, DEVICE_8BIT_XTCF_DMA
    65     jne     SHORT .NoNeedToLimitBlockSize
    6663    cmp     al, XTCF_DMA_MODE_MAX_BLOCK_SIZE
    67     ja      SHORT AH1Eh_LoadInvalidCommandToAHandSetCF
     64    jbe     SHORT .NoNeedToLimitBlockSize
     65    cmp     BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_XTCF_DMA
     66    je      SHORT AH1Eh_LoadInvalidCommandToAHandSetCF
    6867.NoNeedToLimitBlockSize:
    6968%endif ; MODULE_8BIT_IDE
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/AtaID.asm

    r487 r491  
    3636    ; corrupted. We start by making sure P-CHS values are valid.
    3737    ; If they are, we assume the ATA ID to be valid. Fortunately we can do
    38     ; futher checking for ATA-5 and later since they contain signature and
     38    ; further checking for ATA-5 and later since they contain signature and
    3939    ; checksum bytes. Those are not available for ATA-4 and older.
    4040
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectDrives.asm

    r474 r491  
    33
    44;
    5 ; XTIDE Universal BIOS and Associated Tools 
     5; XTIDE Universal BIOS and Associated Tools
    66; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    77;
     
    1010; the Free Software Foundation; either version 2 of the License, or
    1111; (at your option) any later version.
    12 ; 
     12;
    1313; This program is distributed in the hope that it will be useful,
    1414; but WITHOUT ANY WARRANTY; without even the implied warranty of
    1515; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16 ; GNU General Public License for more details.     
     16; GNU General Public License for more details.
    1717; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    18 ;       
     18;
    1919
    2020; Section containing code
     
    153153;--------------------------------------------------------------------
    154154StartDetectionWithDriveSelectByteInBHandStringInCX:
     155%ifdef MODULE_8BIT_IDE
    155156    ; Autodetect port for XT-CF
    156 %ifdef MODULE_8BIT_IDE
    157157    call    DetectDrives_DoesIdevarsInCSBPbelongToXTCF
    158158    jne     SHORT .SkipXTCFportDetection
     
    165165    ; for next drive (another XT-CF card on same system)
    166166.DetectNextPort:
    167     call    BootVars_GetNextXTCFportToDetectToDX
    168     cmp     dx, XTCF_BASE_PORT_4
     167    mov     dx, [es:BOOTVARS.wNextXTCFportToScan]
     168    xor     dl, 40h
     169    jnz     SHORT .StoreNextXTCFportToScan
     170    inc     dh
     171    cmp     dh, XTCF_BASE_PORT_4 >> 8
    169172    ja      SHORT .SkipXTCFportDetection        ; XT-CF not found from any port
     173.StoreNextXTCFportToScan:
     174    mov     [es:BOOTVARS.wNextXTCFportToScan], dx
    170175
    171176    call    AH1Eh_DetectXTCFwithBasePortInDX
     
    178183    jmp     SHORT .DriveDetectionStringPrintedOnScreen
    179184
    180     ; Print detect string for devices that do not support autodetection     
     185    ; Print detect string for devices that do not support autodetection
    181186.SkipXTCFportDetection:
    182187    push    dx
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/Interrupts.asm

    r489 r491  
    33
    44;
    5 ; XTIDE Universal BIOS and Associated Tools 
     5; XTIDE Universal BIOS and Associated Tools
    66; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    77;
     
    1010; the Free Software Foundation; either version 2 of the License, or
    1111; (at your option) any later version.
    12 ; 
     12;
    1313; This program is distributed in the hope that it will be useful,
    1414; but WITHOUT ANY WARRANTY; without even the implied warranty of
    1515; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16 ; GNU General Public License for more details.     
     16; GNU General Public License for more details.
    1717; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    18 ;       
     18;
    1919
    2020; Section containing code
     
    9797.InitializeHardwareIrqHandlers:
    9898    call    RamVars_GetIdeControllerCountToCX
    99     mov     di, ROMVARS.ideVars0            ; CS:SI points to first IDEVARS
     99    mov     di, ROMVARS.ideVars0+IDEVARS.bIRQ   ; CS:SI points to first IDEVARS
    100100.IdeControllerLoop:
    101     mov     al, [cs:di+IDEVARS.bIRQ]
     101    mov     al, [cs:di]
    102102    add     di, BYTE IDEVARS_size           ; Increment to next controller
    103103    call    .InstallLowOrHighIrqHandler
  • trunk/XTIDE_Universal_BIOS/Src/Main.asm

    r489 r491  
    8080    at  ROMVARS.wDisplayMode,   dw  DEFAULT_TEXT_MODE
    8181%ifdef MODULE_BOOT_MENU
    82         at  ROMVARS.wBootTimeout,   dw  BOOT_MENU_DEFAULT_TIMEOUT
     82    at  ROMVARS.wBootTimeout,   dw  BOOT_MENU_DEFAULT_TIMEOUT
    8383%endif
    8484    at  ROMVARS.bIdeCnt,        db  2                       ; Number of supported controllers
     
    8888    at  ROMVARS.bIdleTimeout,   db  0                       ; Standby timer disabled by default
    8989
    90     at  ROMVARS.ideVars0+IDEVARS.wBasePort,         dw  300h        ; Controller Command Block base port
    91     at  ROMVARS.ideVars0+IDEVARS.wControlBlockPort, dw  310h    ; Controller Control Block base port
     90    at  ROMVARS.ideVars0+IDEVARS.wBasePort,         dw  DEVICE_ATA_PRIMARY_PORT         ; Controller Command Block base port
     91    at  ROMVARS.ideVars0+IDEVARS.wControlBlockPort, dw  DEVICE_ATA_PRIMARY_PORTCTRL     ; Controller Control Block base port
    9292    at  ROMVARS.ideVars0+IDEVARS.bDevice,           db  DEVICE_16BIT_ATA
    9393    at  ROMVARS.ideVars0+IDEVARS.bIRQ,              db  0
     
    126126    at  ROMVARS.wDisplayMode,   dw  DEFAULT_TEXT_MODE
    127127%ifdef MODULE_BOOT_MENU
    128         at  ROMVARS.wBootTimeout,   dw  BOOT_MENU_DEFAULT_TIMEOUT
     128    at  ROMVARS.wBootTimeout,   dw  BOOT_MENU_DEFAULT_TIMEOUT
    129129%endif
    130130    at  ROMVARS.bIdeCnt,        db  2                       ; Number of supported controllers
  • trunk/XTIDE_Universal_BIOS/Src/Menus/BootMenu/BootMenuPrint.asm

    r489 r491  
    7676;--------------------------------------------------------------------
    7777BootMenuPrint_TitleStrings:
    78     xor     di,di                       ; Null character will be eaten 
     78    xor     di,di                       ; Null character will be eaten
    7979    mov     si, g_szBootMenuTitle
    8080    jmp     DetectPrint_RomFoundAtSegment.BootMenuEntry
    8181
    82        
     82
    8383;--------------------------------------------------------------------
    8484; BootMenuPrint_RefreshInformation
     
    203203    jz      SHORT BootMenuPrint_RefreshInformation.FormatRelay
    204204
    205 %include "BootMenuPrintCfg.asm"         ; inline of code to fill out remainder of information string
     205%include "BootMenuPrintCfg.asm"     ; Inline of code to fill out remainder of information string
    206206    jmp     DetectPrint_FormatCSSIfromParamsInSSBP
    207207
    208208
    209209FloppyTypes:
    210 .rgbCapacityMultiplier equ 20           ; Multiplier to reduce word sized values to byte size
     210.rgbCapacityMultiplier equ 120      ; Multiplier to reduce word sized values to byte size
    211211.rgbCapacity:
    212212    db      360   / FloppyTypes.rgbCapacityMultiplier    ;  type 1
  • trunk/XTIDE_Universal_BIOS/Src/Menus/BootMenu/BootMenuPrintCfg.asm

    r473 r491  
    5151;       CS:BX:  Ptr to IDEVARS
    5252;   Returns:
    53 ;       Nothing (jumps to next push below)
     53;       Nothing (falls to next push below)
    5454;   Corrupts registers:
    5555;       AX, CX, DX
     
    8686.PushBlockSizeFromAX:
    8787    push    ax
     88    ; Fall to .PushDeviceType
    8889
    8990;--------------------------------------------------------------------
    90 ; PushDeviceType
    91 ;   Parameters:
    92 ;       DS:DI:  Ptr to DPT
    93 ;       CS:BX:  Ptr to IDEVARS
    94 ;   Returns:
    95 ;       Nothing (jumps to next push below)
    96 ;   Corrupts registers:
    97 ;       AX, DX
    98 ;--------------------------------------------------------------------
    99 .PushDeviceType:
    100     mov     al,g_szDeviceTypeValues_Displacement
    101 %ifdef MODULE_SERIAL
    102     mov     ah, [cs:bx+IDEVARS.bDevice]
    103     test    BYTE [di+DPT.bFlagsHigh], FLGH_DPT_SERIAL_DEVICE
    104     eCMOVZ  ah, [di+DPT_ATA.bDevice]    ; DPT_ATA contains up to date device information for IDE drives
    105     mul     ah
    106 %else   
    107     mul     BYTE [di+DPT_ATA.bDevice]
    108 %endif
    109 
    110     shr     ax,1            ; divide by 2 since IDEVARS.bDevice is multiplied by 2
    111 
    112     add     ax, g_szDeviceTypeValues
    113     push    ax
    114 
    115 ;--------------------------------------------------------------------
    116 ; PushIRQ
     91; .PushDeviceType
    11792;   Parameters:
    11893;       DS:DI:  Ptr to DPT
     
    12196;       Nothing (falls to next push below)
    12297;   Corrupts registers:
    123 ;       AX, DX
     98;       AX
     99;--------------------------------------------------------------------
     100.PushDeviceType:
     101%ifndef MODULE_SERIAL
     102    mov     al, g_szDeviceTypeValues_Displacement
     103    mul     BYTE [di+DPT_ATA.bDevice]
     104%else
     105    mov     ah, [cs:bx+IDEVARS.bDevice]
     106    test    BYTE [di+DPT.bFlagsHigh], FLGH_DPT_SERIAL_DEVICE    ; Clears CF
     107    eCMOVZ  ah, [di+DPT_ATA.bDevice]    ; DPT_ATA contains up to date device information for IDE drives
     108%ifdef USE_UNDOC_INTEL
     109    eSALC   ; Clear AL using CF (from TEST above)
     110    eAAD    g_szDeviceTypeValues_Displacement
     111%else
     112    mov     al, g_szDeviceTypeValues_Displacement
     113    mul     ah
     114%endif ; USE_UNDOC_INTEL
     115%endif ; MODULE_SERIAL
     116
     117%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
     118    %if (COUNT_OF_ALL_IDE_DEVICES * 2 * g_szDeviceTypeValues_Displacement) > 255
     119        %error "The USE_UNDOC_INTEL block in .PushDeviceType needs to be removed (would cause an overflow)!"
     120    %endif
     121%endif
     122
     123    shr     ax, 1   ; Divide by 2 since IDEVARS.bDevice is multiplied by 2
     124    add     ax, g_szDeviceTypeValues
     125    push    ax
     126    ; Fall to .PushIRQ
     127
     128;--------------------------------------------------------------------
     129; .PushIRQ
     130;   Parameters:
     131;       DS:DI:  Ptr to DPT
     132;       CS:BX:  Ptr to IDEVARS
     133;   Returns:
     134;       Nothing (falls to next push below)
     135;   Corrupts registers:
     136;       AX
    124137;--------------------------------------------------------------------
    125138.PushIRQ:
     
    127140    cbw
    128141    push    ax
     142    ; Fall to .PushResetStatus
    129143
    130144;--------------------------------------------------------------------
    131 ; PushResetStatus
     145; .PushResetStatus
    132146;   Parameters:
    133147;       DS:DI:  Ptr to DPT
  • trunk/XTIDE_Universal_BIOS/Src/Menus/HotkeyBar.asm

    r410 r491  
    327327HotkeyBar_StoreHotkeyToBootvarsForDriveLetterInDL:
    328328    eMOVZX  ax, dl
    329     call    Char_ChangeCaseInAL ; Upper case drive letter to lower case keystroke
     329    xor     al, 32  ; Upper case drive letter to lower case keystroke
    330330    jmp     SHORT HotkeyBar_StoreHotkeyToBootvarsIfValidKeystrokeInAX
    331331
     
    376376    call    Char_IsLowerCaseLetterInAL
    377377    jnc     SHORT .KeystrokeIsNotValidHotkey
    378     call    Char_ChangeCaseInAL     ; We want to print upper case letters
     378    xor     al, 32                  ; We want to print upper case letters
    379379
    380380    ; Clear HD First flag to assume Floppy Drive hotkey
  • trunk/XTIDE_Universal_BIOS/Src/Strings.asm

    r489 r491  
    33
    44;
    5 ; XTIDE Universal BIOS and Associated Tools 
     5; XTIDE Universal BIOS and Associated Tools
    66; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    77;
     
    1010; the Free Software Foundation; either version 2 of the License, or
    1111; (at your option) any later version.
    12 ; 
     12;
    1313; This program is distributed in the hope that it will be useful,
    1414; but WITHOUT ANY WARRANTY; without even the implied warranty of
    1515; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1616; GNU General Public License for more details.
    17 ; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html       
    18 ;       
     17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
     18;
    1919
    2020%ifdef MODULE_STRINGS_COMPRESSED_PRECOMPRESS
     
    2424; Section containing code
    2525SECTION .text
    26 
    27 ; POST drive detection strings
    28 g_szDashForZero:    db  "- ",NULL   ; Required by Display Library
    29 g_szRomAt:          db  LF,CR
    30                     db  "%s @ %x",LF,CR                     ; -=XTIDE ... =- @ Segment
    31                     db  "%s",LF,CR                          ; version string
    32                     db  "Released under GNU GPL v2",LF,CR   
    33                     db  LF,CR,NULL
    34 %ifdef MODULE_BOOT_MENU
    35 g_szBootMenuTitle:  db  "%s%c",LF,CR                        ; -=XTIDE ... =- and null (eaten)
    36                     db  "%s",NULL                           ; version string
    37 %endif
    38 g_szDriveName:      db  "%z",LF,CR,NULL
    3926
    4027; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP
     
    4734g_szDetectOuter:        db  "%s at %s: ",NULL
    4835%ifdef MODULE_SERIAL
    49 g_szDetectCOM:          db  "COM%c%s",NULL
     36g_szDetectCOM:          db  "COM%c%s",NULL
    5037g_szDetectCOMAuto:      db  " Detect",NULL
    5138g_szDetectCOMSmall:     db  "/%u%u00",NULL                  ; IDE Master at COM1/9600:
     
    5340%endif
    5441g_szDetectEnd:
    55 g_szDetectPort:         db  "%x",NULL                       ; IDE Master at 1F0h:
     42g_szDetectPort:         db  "%x",NULL                       ; IDE Master at 1F0h:
    5643
    5744%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
    5845    %if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00)
    59         %error "g_szDetect* strings must start on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP.  Please move this block up or down within strings.asm"
    60     %endif
    61 %endif
     46        %error "g_szDetect* strings must start on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP.  Please move this block up or down within Strings.asm"
     47    %endif
     48%endif
     49
     50
     51; POST drive detection strings
     52g_szDashForZero:    db  "- ",NULL   ; Required by Display Library
     53g_szRomAt:          db  LF,CR
     54                    db  "%s @ %x",LF,CR                     ; -=XTIDE ... =- @ Segment
     55                    db  "%s",LF,CR                          ; version string
     56                    db  "Released under GNU GPL v2",LF,CR
     57                    db  LF,CR,NULL
     58%ifdef MODULE_BOOT_MENU
     59g_szBootMenuTitle:  db  "%s%c",LF,CR                        ; -=XTIDE ... =- and null (eaten)
     60                    db  "%s",NULL                           ; version string
     61%endif
     62g_szDriveName:      db  "%z",LF,CR,NULL
    6263
    6364
     
    7071
    7172%ifdef MODULE_HOTKEYS
    72 
    7373; Hotkey Bar strings
    7474g_szFDD:        db  "FDD [%c]",NULL         ; "FDD [A]"
     
    8181
    8282%ifdef MODULE_BOOT_MENU
    83 
    8483; Boot Menu Floppy Disk strings
    8584;
     
    8988;
    9089g_szFddStart:
    91 g_szFddUnknown: db  "Unknown",NULL
    92 g_szFddSizeOr:  db  "5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
    93 g_szFddSize:    db  "%s",QUOTATION_MARK,", %u kiB",NULL ; 3½", 1440 kiB
    94 g_szFddThreeHalf:       db  "3",ONE_HALF,NULL
     90g_szFddUnknown:     db  "Unknown",NULL
     91g_szFddSizeOr:      db  "5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
     92g_szFddSize:        db  "%s",QUOTATION_MARK,", %u kiB",NULL ; 3½", 1440 kiB
     93g_szFddThreeHalf:   db  "3",ONE_HALF,NULL
    9594g_szFddEnd:
    96 g_szFddFiveQuarter:     db  "5",ONE_QUARTER,NULL
     95g_szFddFiveQuarter: db  "5",ONE_QUARTER,NULL
    9796
    9897%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
    9998    %if ((g_szFddStart-$$) & 0xff00) <> ((g_szFddEnd-$$) & 0xff00)
    100         %error "g_szFdd* strings must start on the same 256 byte page, required by the BootMenuPrint_RefreshInformation routines for floppy drives.  Please move this block up or down within strings.asm"
     99        %error "g_szFdd* strings must start on the same 256 byte page, required by the BootMenuPrint_RefreshInformation routines for floppy drives.  Please move this block up or down within Strings.asm"
    101100    %endif
    102101%endif
     
    123122%endif
    124123
     124
    125125g_szDeviceTypeValues:
    126 g_szDeviceTypeValues_16bit:     db      " 16",NULL
    127 g_szDeviceTypeValues_32bit:     db      " 32",NULL
    128 g_szDeviceTypeValues_8bit:      db      "  8",NULL
    129 g_szDeviceTypeValues_XTIDEr1:   db      "D8 ",NULL  ; Dual 8-bit
    130 g_szDeviceTypeValues_XTIDEr2:   db      "X8 ",NULL  ; A0<->A3 swapped 8-bit
    131 g_szDeviceTypeValues_XTCFpio8:  db      "T8 ",NULL  ; True 8-bit
    132 g_szDeviceTypeValues_XTCFdma:   db      "8MA",NULL  ; DMA 8-bit
    133 g_szDeviceTypeValues_XTCFmem:   db      "M8 ",NULL  ; Memory Mapped 8-bit
    134 g_szDeviceTypeValues_JrIde:     db      "M8 ",NULL
    135 g_szDeviceTypeValues_Serial:    db      "SER",NULL
     126g_szDeviceTypeValues_16bit:     db  " 16",NULL
     127g_szDeviceTypeValues_32bit:     db  " 32",NULL
     128g_szDeviceTypeValues_8bit:      db  "  8",NULL
     129g_szDeviceTypeValues_XTIDEr1:   db  "D8 ",NULL  ; Dual 8-bit
     130g_szDeviceTypeValues_XTIDEr2:   db  "X8 ",NULL  ; A0<->A3 swapped 8-bit
     131g_szDeviceTypeValues_XTCFpio8:  db  "T8 ",NULL  ; True 8-bit
     132g_szDeviceTypeValues_XTCFdma:   db  "8MA",NULL  ; DMA 8-bit
     133g_szDeviceTypeValues_XTCFmem:   db  "M8 ",NULL  ; Memory Mapped 8-bit
     134g_szDeviceTypeValues_JrIde:     db  "M8 ",NULL
     135g_szDeviceTypeValues_Serial:    db  "SER",NULL
    136136
    137137g_szDeviceTypeValues_Displacement equ (g_szDeviceTypeValues_32bit - g_szDeviceTypeValues)
     
    172172%endif
    173173
    174 g_szSelectionTimeout:   db      DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL
    175 
     174
     175g_szSelectionTimeout:   db  DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL
    176176
    177177
     
    180180g_szCapacityNum:        db  "%5-u.%u %ciB",NULL
    181181g_szInformation:        db  "%s",LF,CR
    182     db  "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,  "IRQ",SINGLE_VERTICAL,"Reset",LF,CR
    183     db     "%s",SINGLE_VERTICAL, "%5-u",SINGLE_VERTICAL, "%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x" ,NULL
     182    db  "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
     183    db  "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL
    184184
    185185
     
    199199%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
    200200    %if ((g_szBootMenuPrintStart-$$) & 0xff00) <> ((g_szBootMenuPrintEnd-$$) & 0xff00)
    201         %error "g_szBootMenuPrint* strings must start on the same 256 byte page, required by the BootMenuPrint_* routines.  Please move this block up or down within strings.asm"
     201        %error "g_szBootMenuPrint* strings must start on the same 256 byte page, required by the BootMenuPrint_* routines.  Please move this block up or down within Strings.asm"
    202202    %endif
    203203%endif
     
    221221;  * There can only be 32 of these (0-31).
    222222;  * Keeping the list short is good - this translates to a table in the compressed version.
    223 ;    An error will be reported if a character or format is no longer being used by any 
     223;    An error will be reported if a character or format is no longer being used by any
    224224;    strings above.
    225225;  * Please keep items sequential for ease of further editing.
  • trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm

    r489 r491  
    1313
    1414;
    15 ; XTIDE Universal BIOS and Associated Tools 
     15; XTIDE Universal BIOS and Associated Tools
    1616; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    1717;
     
    2020; the Free Software Foundation; either version 2 of the License, or
    2121; (at your option) any later version.
    22 ; 
     22;
    2323; This program is distributed in the hope that it will be useful,
    2424; but WITHOUT ANY WARRANTY; without even the implied warranty of
    2525; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    2626; GNU General Public License for more details.
    27 ; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html       
    28 ;       
     27; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
     28;
    2929
    3030%ifdef MODULE_STRINGS_COMPRESSED_PRECOMPRESS
     
    3434; Section containing code
    3535SECTION .text
     36
     37; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP
     38; To support an optimization in that code, these strings must start on the same 256 byte page,
     39; which is checked at assembly time below.
     40;
     41g_szDetectStart:
     42g_szDetectMaster:       ; db    "Master",NULL
     43                        ; db     4dh,  61h,  73h,  74h,  65h,  72h,  00h    ; uncompressed
     44                          db     53h,  67h,  79h,  7ah,  6bh, 0b8h          ; compressed
     45
     46g_szDetectSlave:        ; db    "Slave ",NULL
     47                        ; db     53h,  6ch,  61h,  76h,  65h,  20h,  00h    ; uncompressed
     48                          db     59h,  72h,  67h,  7ch,  6bh,  00h          ; compressed
     49
     50g_szDetectOuter:        ; db    "%s at %s: ",NULL
     51                        ; db     25h,  73h,  20h,  61h,  74h,  20h,  25h,  73h,  3ah,  20h,  00h    ; uncompressed
     52                          db     3dh,  20h,  67h, 0fah,  3dh,  40h,  00h                            ; compressed
     53
     54%ifdef MODULE_SERIAL
     55g_szDetectCOM:          ; db    "COM%c%s",NULL
     56                        ; db     43h,  4fh,  4dh,  25h,  63h,  25h,  73h,  00h    ; uncompressed
     57                          db     49h,  55h,  53h,  3ch,  1dh                      ; compressed
     58
     59g_szDetectCOMAuto:      ; db    " Detect",NULL
     60                        ; db     20h,  44h,  65h,  74h,  65h,  63h,  74h,  00h    ; uncompressed
     61                          db     20h,  4ah,  6bh,  7ah,  6bh,  69h, 0bah          ; compressed
     62
     63g_szDetectCOMSmall:     ; db    "/%u%u00",NULL                  ; IDE Master at COM1/9600:
     64                        ; db     2fh,  25h,  75h,  25h,  75h,  30h,  30h,  00h    ; uncompressed
     65                          db     2ah,  35h,  35h,  33h,  13h                      ; compressed
     66
     67g_szDetectCOMLarge:     ; db    "/%u.%uK",NULL                  ; IDE Master at COM1/19.2K:
     68                        ; db     2fh,  25h,  75h,  2eh,  25h,  75h,  4bh,  00h    ; uncompressed
     69                          db     2ah,  35h,  29h,  35h,  91h                      ; compressed
     70
     71%endif
     72g_szDetectEnd:
     73g_szDetectPort:         ; db    "%x",NULL                       ; IDE Master at 1F0h:
     74                        ; db     25h,  78h,  00h    ; uncompressed
     75                          db     17h                ; compressed
     76
     77
     78%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
     79%if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00)
     80%error "g_szDetect* strings must start on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP.  Please move this block up or down within Strings.asm"
     81%endif
     82%endif
     83
    3684
    3785; POST drive detection strings
     
    4896      db     3dh,  20h, 0c6h,  37h,  39h                            ; compressed
    4997
    50     ; db    "%s",LF,CR                          ; version string 
     98    ; db    "%s",LF,CR                          ; version string
    5199    ; db     25h,  73h,  0ah,  0dh    ; uncompressed
    52100      db     3dh,  39h                ; compressed
    53101
    54     ; db  "Released under GNU GPL v2",LF,CR
    55     ; db  52h,  65h,  6ch,  65h,  61h,  73h,  65h,  64h,  20h,  75h,  6eh,  64h,  65h,  72h,  20h,  47h,  4eh,  55h,  20h,  47h,  50h,  4ch,  20h,  76h,  32h,  0ah,  0dh    ; uncompressed
    56       db  58h,  6bh,  72h,  6bh,  67h,  79h,  6bh, 0eah,  7bh,  74h,  6ah,  6bh, 0f8h,  4dh,  54h, 0dbh,  4dh,  56h, 0d2h,  7ch,  2ch,  39h                                  ; compressed
     102    ; db    "Released under GNU GPL v2",LF,CR
     103    ; db    52h,  65h,  6ch,  65h,  61h,  73h,  65h,  64h,  20h,  75h,  6eh,  64h,  65h,  72h,  20h,  47h,  4eh,  55h,  20h,  47h,  50h,  4ch,  20h,  76h,  32h,  0ah,  0dh    ; uncompressed
     104      db    58h,  6bh,  72h,  6bh,  67h,  79h,  6bh, 0eah,  7bh,  74h,  6ah,  6bh, 0f8h,  4dh,  54h, 0dbh,  4dh,  56h, 0d2h,  7ch,  2ch,  39h                                  ; compressed
    57105
    58106    ; db    LF,CR,NULL
     
    75123
    76124
    77 ; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP
    78 ; To support an optimization in that code, these strings must start on the same 256 byte page,
    79 ; which is checked at assembly time below.
    80 ;
    81 g_szDetectStart:
    82 g_szDetectMaster:       ; db    "Master",NULL
    83                         ; db     4dh,  61h,  73h,  74h,  65h,  72h,  00h    ; uncompressed
    84                           db     53h,  67h,  79h,  7ah,  6bh, 0b8h          ; compressed
    85 
    86 g_szDetectSlave:        ; db    "Slave ",NULL
    87                         ; db     53h,  6ch,  61h,  76h,  65h,  20h,  00h    ; uncompressed
    88                           db     59h,  72h,  67h,  7ch,  6bh,  00h          ; compressed
    89 
    90 g_szDetectOuter:        ; db    "%s at %s: ",NULL
    91                         ; db     25h,  73h,  20h,  61h,  74h,  20h,  25h,  73h,  3ah,  20h,  00h    ; uncompressed
    92                           db     3dh,  20h,  67h, 0fah,  3dh,  40h,  00h                            ; compressed
    93 
    94 %ifdef MODULE_SERIAL
    95 g_szDetectCOM:          ; db  "COM%c%s",NULL
    96                         ; db   43h,  4fh,  4dh,  25h,  63h,  25h,  73h,  00h    ; uncompressed
    97                           db   49h,  55h,  53h,  3ch,  1dh                      ; compressed
    98 
    99 g_szDetectCOMAuto:      ; db    " Detect",NULL
    100                         ; db     20h,  44h,  65h,  74h,  65h,  63h,  74h,  00h    ; uncompressed
    101                           db     20h,  4ah,  6bh,  7ah,  6bh,  69h, 0bah          ; compressed
    102 
    103 g_szDetectCOMSmall:     ; db    "/%u%u00",NULL                  ; IDE Master at COM1/9600:
    104                         ; db     2fh,  25h,  75h,  25h,  75h,  30h,  30h,  00h    ; uncompressed
    105                           db     2ah,  35h,  35h,  33h,  13h                      ; compressed
    106 
    107 g_szDetectCOMLarge:     ; db    "/%u.%uK",NULL                  ; IDE Master at COM1/19.2K:
    108                         ; db     2fh,  25h,  75h,  2eh,  25h,  75h,  4bh,  00h    ; uncompressed
    109                           db     2ah,  35h,  29h,  35h,  91h                      ; compressed
    110 
    111 %endif
    112 g_szDetectEnd:
    113 g_szDetectPort:         ; db    "%x",NULL                       ; IDE Master at 1F0h:
    114                         ; db     25h,  78h,  00h    ; uncompressed
    115                           db     17h                ; compressed
    116 
    117 
    118 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
    119 %if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00)
    120 %error "g_szDetect* strings must start on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP.  Please move this block up or down within strings.asm"
    121 %endif
    122 %endif
    123 
    124125
    125126; Boot loader strings
     
    143144
    144145%ifdef MODULE_HOTKEYS
    145 
    146146; Hotkey Bar strings
    147147g_szFDD:        ; db    "FDD [%c]",NULL         ; "FDD [A]"
     
    172172
    173173%ifdef MODULE_BOOT_MENU
    174 
    175174; Boot Menu Floppy Disk strings
    176175;
     
    180179;
    181180g_szFddStart:
    182 g_szFddUnknown: ; db    "Unknown",NULL
    183                 ; db     55h,  6eh,  6bh,  6eh,  6fh,  77h,  6eh,  00h    ; uncompressed
    184                   db     5bh,  74h,  71h,  74h,  75h,  7dh, 0b4h          ; compressed
    185 
    186 g_szFddSizeOr:  ; db    "5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
    187                 ; db     35h, 0ach,  22h,  20h,  6fh,  72h,  20h,  33h, 0abh,  22h,  20h,  44h,  44h,  00h    ; uncompressed
    188                   db     2eh,  21h,  26h,  20h,  75h, 0f8h,  2dh,  22h,  26h,  20h,  4ah,  8ah                ; compressed
    189 
    190 g_szFddSize:    ; db    "%s",QUOTATION_MARK,", %u kiB",NULL ; 3½", 1440 kiB
    191                 ; db     25h,  73h,  22h,  2ch,  20h,  25h,  75h,  20h,  6bh,  69h,  42h,  00h    ; uncompressed
    192                   db     3dh,  26h,  27h,  20h,  35h,  20h,  71h,  6fh,  88h                      ; compressed
    193 
    194 g_szFddThreeHalf:       ; db  "3",ONE_HALF,NULL
    195                         ; db  33h, 0abh,  00h    ; uncompressed
    196                           db  2dh,  02h          ; compressed
     181g_szFddUnknown:     ; db    "Unknown",NULL
     182                    ; db     55h,  6eh,  6bh,  6eh,  6fh,  77h,  6eh,  00h    ; uncompressed
     183                      db     5bh,  74h,  71h,  74h,  75h,  7dh, 0b4h          ; compressed
     184
     185g_szFddSizeOr:      ; db    "5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
     186                    ; db     35h, 0ach,  22h,  20h,  6fh,  72h,  20h,  33h, 0abh,  22h,  20h,  44h,  44h,  00h    ; uncompressed
     187                      db     2eh,  21h,  26h,  20h,  75h, 0f8h,  2dh,  22h,  26h,  20h,  4ah,  8ah                ; compressed
     188
     189g_szFddSize:        ; db    "%s",QUOTATION_MARK,", %u kiB",NULL ; 3½", 1440 kiB
     190                    ; db     25h,  73h,  22h,  2ch,  20h,  25h,  75h,  20h,  6bh,  69h,  42h,  00h    ; uncompressed
     191                      db     3dh,  26h,  27h,  20h,  35h,  20h,  71h,  6fh,  88h                      ; compressed
     192
     193g_szFddThreeHalf:   ; db    "3",ONE_HALF,NULL
     194                    ; db    33h, 0abh,  00h    ; uncompressed
     195                      db    2dh,  02h          ; compressed
    197196
    198197g_szFddEnd:
    199 g_szFddFiveQuarter:     ; db  "5",ONE_QUARTER,NULL
    200                         ; db  35h, 0ach,  00h    ; uncompressed
    201                           db  2eh,  01h          ; compressed
     198g_szFddFiveQuarter: ; db    "5",ONE_QUARTER,NULL
     199                    ; db    35h, 0ach,  00h    ; uncompressed
     200                      db    2eh,  01h          ; compressed
    202201
    203202
    204203%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
    205204%if ((g_szFddStart-$$) & 0xff00) <> ((g_szFddEnd-$$) & 0xff00)
    206 %error "g_szFdd* strings must start on the same 256 byte page, required by the BootMenuPrint_RefreshInformation routines for floppy drives.  Please move this block up or down within strings.asm"
     205%error "g_szFdd* strings must start on the same 256 byte page, required by the BootMenuPrint_RefreshInformation routines for floppy drives.  Please move this block up or down within Strings.asm"
    207206%endif
    208207%endif
     
    238237%endif
    239238
     239
    240240g_szDeviceTypeValues:
    241 g_szDeviceTypeValues_16bit:     ; db        " 16",NULL
    242                                 ; db        20h,  31h,  36h,  00h    ; uncompressed
    243                                   db        20h,  2bh,  0fh          ; compressed
    244 
    245 g_szDeviceTypeValues_32bit:     ; db        " 32",NULL
    246                                 ; db        20h,  33h,  32h,  00h    ; uncompressed
    247                                   db        20h,  2dh,  0ch          ; compressed
    248 
    249 g_szDeviceTypeValues_8bit:      ; db        "  8",NULL
    250                                 ; db        20h,  20h,  38h,  00h    ; uncompressed
    251                                   db        20h,  20h,  10h          ; compressed
    252 
    253 g_szDeviceTypeValues_XTIDEr1:   ; db        "D8 ",NULL  ; Dual 8-bit
    254                                 ; db        44h,  38h,  20h,  00h    ; uncompressed
    255                                   db        4ah,  30h,  00h          ; compressed
    256 
    257 g_szDeviceTypeValues_XTIDEr2:   ; db        "X8 ",NULL  ; A0<->A3 swapped 8-bit
    258                                 ; db        58h,  38h,  20h,  00h    ; uncompressed
    259                                   db        5eh,  30h,  00h          ; compressed
    260 
    261 g_szDeviceTypeValues_XTCFpio8:  ; db        "T8 ",NULL  ; True 8-bit
    262                                 ; db        54h,  38h,  20h,  00h    ; uncompressed
    263                                   db        5ah,  30h,  00h          ; compressed
    264 
    265 g_szDeviceTypeValues_XTCFdma:   ; db        "8MA",NULL  ; DMA 8-bit
    266                                 ; db        38h,  4dh,  41h,  00h    ; uncompressed
    267                                   db        30h,  53h,  87h          ; compressed
    268 
    269 g_szDeviceTypeValues_XTCFmem:   ; db        "M8 ",NULL  ; Memory Mapped 8-bit
    270                                 ; db        4dh,  38h,  20h,  00h    ; uncompressed
    271                                   db        53h,  30h,  00h          ; compressed
    272 
    273 g_szDeviceTypeValues_JrIde:     ; db        "M8 ",NULL
    274                                 ; db        4dh,  38h,  20h,  00h    ; uncompressed
    275                                   db        53h,  30h,  00h          ; compressed
    276 
    277 g_szDeviceTypeValues_Serial:    ; db        "SER",NULL
    278                                 ; db        53h,  45h,  52h,  00h    ; uncompressed
    279                                   db        59h,  4bh,  98h          ; compressed
     241g_szDeviceTypeValues_16bit:     ; db    " 16",NULL
     242                                ; db    20h,  31h,  36h,  00h    ; uncompressed
     243                                  db    20h,  2bh,  0fh          ; compressed
     244
     245g_szDeviceTypeValues_32bit:     ; db    " 32",NULL
     246                                ; db    20h,  33h,  32h,  00h    ; uncompressed
     247                                  db    20h,  2dh,  0ch          ; compressed
     248
     249g_szDeviceTypeValues_8bit:      ; db    "  8",NULL
     250                                ; db    20h,  20h,  38h,  00h    ; uncompressed
     251                                  db    20h,  20h,  10h          ; compressed
     252
     253g_szDeviceTypeValues_XTIDEr1:   ; db    "D8 ",NULL  ; Dual 8-bit
     254                                ; db    44h,  38h,  20h,  00h    ; uncompressed
     255                                  db    4ah,  30h,  00h          ; compressed
     256
     257g_szDeviceTypeValues_XTIDEr2:   ; db    "X8 ",NULL  ; A0<->A3 swapped 8-bit
     258                                ; db    58h,  38h,  20h,  00h    ; uncompressed
     259                                  db    5eh,  30h,  00h          ; compressed
     260
     261g_szDeviceTypeValues_XTCFpio8:  ; db    "T8 ",NULL  ; True 8-bit
     262                                ; db    54h,  38h,  20h,  00h    ; uncompressed
     263                                  db    5ah,  30h,  00h          ; compressed
     264
     265g_szDeviceTypeValues_XTCFdma:   ; db    "8MA",NULL  ; DMA 8-bit
     266                                ; db    38h,  4dh,  41h,  00h    ; uncompressed
     267                                  db    30h,  53h,  87h          ; compressed
     268
     269g_szDeviceTypeValues_XTCFmem:   ; db    "M8 ",NULL  ; Memory Mapped 8-bit
     270                                ; db    4dh,  38h,  20h,  00h    ; uncompressed
     271                                  db    53h,  30h,  00h          ; compressed
     272
     273g_szDeviceTypeValues_JrIde:     ; db    "M8 ",NULL
     274                                ; db    4dh,  38h,  20h,  00h    ; uncompressed
     275                                  db    53h,  30h,  00h          ; compressed
     276
     277g_szDeviceTypeValues_Serial:    ; db    "SER",NULL
     278                                ; db    53h,  45h,  52h,  00h    ; uncompressed
     279                                  db    59h,  4bh,  98h          ; compressed
    280280
    281281
     
    317317%endif
    318318
    319 g_szSelectionTimeout:   ; db        DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL
    320                         ; db        0c8h, 0b5h,  25h,  41h,  53h,  65h,  6ch,  65h,  63h,  74h,  69h,  6fh,  6eh,  20h,  69h,  6eh,  20h,  25h,  32h,  2dh,  75h,  20h,  73h,  00h    ; uncompressed
    321                           db         31h,  32h,  3bh,  59h,  6bh,  72h,  6bh,  69h,  7ah,  6fh,  75h, 0f4h,  6fh, 0f4h,  3ah,  20h, 0b9h                                              ; compressed
    322 
     319
     320g_szSelectionTimeout:   ; db    DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL
     321                        ; db    0c8h, 0b5h,  25h,  41h,  53h,  65h,  6ch,  65h,  63h,  74h,  69h,  6fh,  6eh,  20h,  69h,  6eh,  20h,  25h,  32h,  2dh,  75h,  20h,  73h,  00h    ; uncompressed
     322                          db     31h,  32h,  3bh,  59h,  6bh,  72h,  6bh,  69h,  7ah,  6fh,  75h, 0f4h,  6fh, 0f4h,  3ah,  20h, 0b9h                                              ; compressed
    323323
    324324
     
    337337                          db     3dh,  39h                ; compressed
    338338
    339     ; db    "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,  "IRQ",SINGLE_VERTICAL,"Reset",LF,CR
     339    ; db    "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
    340340    ; db     41h,  64h,  64h,  72h,  2eh,  20h, 0b3h,  42h,  6ch,  6fh,  63h,  6bh, 0b3h,  42h,  75h,  73h, 0b3h,  49h,  52h,  51h, 0b3h,  52h,  65h,  73h,  65h,  74h,  0ah,  0dh    ; uncompressed
    341341      db     47h,  6ah,  6ah,  78h,  29h,  20h,  23h,  48h,  72h,  75h,  69h,  71h,  23h,  48h,  7bh,  79h,  23h,  4fh,  58h,  57h,  23h,  58h,  6bh,  79h,  6bh,  7ah,  39h          ; compressed
    342342
    343     ; db       "%s",SINGLE_VERTICAL, "%5-u",SINGLE_VERTICAL, "%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x" ,NULL
    344     ; db        25h,  73h, 0b3h,  25h,  35h,  2dh,  75h, 0b3h,  25h,  73h, 0b3h,  20h,  25h,  32h,  2dh,  49h, 0b3h,  25h,  35h,  2dh,  78h,  00h    ; uncompressed
    345       db        3dh,  23h,  36h,  23h,  3dh,  23h,  20h,  34h,  23h,  18h                                                                            ; compressed
     343    ; db    "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL
     344    ; db     25h,  73h, 0b3h,  25h,  35h,  2dh,  75h, 0b3h,  25h,  73h, 0b3h,  20h,  25h,  32h,  2dh,  49h, 0b3h,  25h,  35h,  2dh,  78h,  00h    ; uncompressed
     345      db     3dh,  23h,  36h,  23h,  3dh,  23h,  20h,  34h,  23h,  18h                                                                            ; compressed
    346346
    347347
     
    374374%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
    375375%if ((g_szBootMenuPrintStart-$$) & 0xff00) <> ((g_szBootMenuPrintEnd-$$) & 0xff00)
    376 %error "g_szBootMenuPrint* strings must start on the same 256 byte page, required by the BootMenuPrint_* routines.  Please move this block up or down within strings.asm"
     376%error "g_szBootMenuPrint* strings must start on the same 256 byte page, required by the BootMenuPrint_* routines.  Please move this block up or down within Strings.asm"
    377377%endif
    378378%endif
     
    396396;  * There can only be 32 of these (0-31).
    397397;  * Keeping the list short is good - this translates to a table in the compressed version.
    398 ;    An error will be reported if a character or format is no longer being used by any 
     398;    An error will be reported if a character or format is no longer being used by any
    399399;    strings above.
    400400;  * Please keep items sequential for ease of further editing.
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/AccessDPT.asm

    r473 r491  
    33
    44;
    5 ; XTIDE Universal BIOS and Associated Tools 
     5; XTIDE Universal BIOS and Associated Tools
    66; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    77;
     
    1010; the Free Software Foundation; either version 2 of the License, or
    1111; (at your option) any later version.
    12 ; 
     12;
    1313; This program is distributed in the hope that it will be useful,
    1414; but WITHOUT ANY WARRANTY; without even the implied warranty of
    1515; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16 ; GNU General Public License for more details.     
     16; GNU General Public License for more details.
    1717; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    18 ;       
     18;
    1919
    2020; Section containing code
     
    6767AccessDPT_GetDeviceControlByteToAL:
    6868%ifdef MODULE_IRQ
     69
     70%ifndef USE_UNDOC_INTEL
    6971    xor     al, al
    70     test    BYTE [di+DPT.bFlagsLow], FLGL_DPT_ENABLE_IRQ
     72%endif
     73
     74    test    BYTE [di+DPT.bFlagsLow], FLGL_DPT_ENABLE_IRQ    ; Clears CF
     75
     76%ifdef USE_UNDOC_INTEL
     77    eSALC   ; Clears AL using CF while preserving flags
     78%endif
     79
    7180    jnz     SHORT .EnableDeviceIrq
    7281    or      al, FLG_DEVCONTROL_nIEN ; Disable IRQ
     
    7483%else
    7584    mov     al, FLG_DEVCONTROL_nIEN ; Disable IRQ
    76 %endif
     85%endif ; MODULE_IRQ
    7786    ret
    7887
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/AtaGeometry.asm

    r445 r491  
    8181AtaGeometry_GetLCHStoAXBLBHfromAtaInfoInESSIandTranslateModeInDX:
    8282    call    AtaGeometry_GetPCHStoAXBLBHfromAtaInfoInESSI
    83     ; Fall to AtaGeometry_GetLCHStoAXBLBHfromPCHSinAXBLBH
     83    ; Fall to AtaGeometry_GetLCHStoAXBLBHfromPCHSinAXBLBHandTranslateModeInDX
    8484
    8585AtaGeometry_GetLCHStoAXBLBHfromPCHSinAXBLBHandTranslateModeInDX:
    8686    ; Check if user defined translate mode
    87     test    dx, dx
    88     jnz     SHORT .CheckIfLargeTranslationWanted
     87    dec     dx                      ; Set ZF if TRANSLATEMODE_LARGE, SF if TRANSLATEMODE_NORMAL
     88    jns     SHORT .CheckIfLargeTranslationWanted
    8989    MIN_U   ax, MAX_LCHS_CYLINDERS  ; TRANSLATEMODE_NORMAL maximum cylinders
    9090    inc     dx
    9191.CheckIfLargeTranslationWanted:
    92     dec     dx                      ; Set ZF if TRANSLATEMODE_LARGE
    9392    jz      SHORT ConvertPCHfromAXBLtoRevisedEnhancedCHinAXBL
    9493    dec     dx                      ; Set ZF if TRANSLATEMODE_ASSISTED_LBA
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/BootVars.asm

    r489 r491  
    33
    44;
    5 ; XTIDE Universal BIOS and Associated Tools 
     5; XTIDE Universal BIOS and Associated Tools
    66; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
    77;
     
    1010; the Free Software Foundation; either version 2 of the License, or
    1111; (at your option) any later version.
    12 ; 
     12;
    1313; This program is distributed in the hope that it will be useful,
    1414; but WITHOUT ANY WARRANTY; without even the implied warranty of
    1515; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    16 ; GNU General Public License for more details.     
     16; GNU General Public License for more details.
    1717; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
    18 ;       
     18;
    1919
    2020; Section containing code
     
    3333BootVars_Initialize:
    3434%ifdef MODULE_8BIT_IDE
    35     mov     WORD [es:BOOTVARS.wNextXTCFportToScan], XTCF_BASE_PORT_1
     35    mov     WORD [es:BOOTVARS.wNextXTCFportToScan], XTCF_BASE_PORT_DETECTION_SEED
    3636%endif
    3737
     
    7272
    7373%endif ; MODULE_HOTKEYS
    74 
    75 
    76 %ifdef MODULE_8BIT_IDE
    77 ;--------------------------------------------------------------------
    78 ; BootVars_GetNextXTCFportToDetectToDX
    79 ;   Parameters:
    80 ;       ES:     BDA Segment
    81 ;   Returns:
    82 ;       DX:     Next XT-CF port to detect
    83 ;   Corrupts registers:
    84 ;       AX
    85 ;--------------------------------------------------------------------
    86 BootVars_GetNextXTCFportToDetectToDX:
    87     mov     dx, [es:BOOTVARS.wNextXTCFportToScan]
    88     test    dl, dl
    89     jz      SHORT .NextOneIs240hor340h
    90     add     WORD [es:BOOTVARS.wNextXTCFportToScan], XTCF_BASE_PORT_3 - XTCF_BASE_PORT_2
    91     ret
    92 .NextOneIs240hor340h:
    93     mov     BYTE [es:BOOTVARS.wNextXTCFportToScan], XTCF_BASE_PORT_2 & 0FFh ; 40h
    94     ret     
    95 %endif ; MODULE_8BIT_IDE
Note: See TracChangeset for help on using the changeset viewer.