Changeset 588 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src


Ignore:
Timestamp:
Jun 3, 2015, 12:30:54 PM (9 years ago)
Author:
krille_n_@…
google:author:
krille_n_@hotmail.com
Message:

Changes:

  • Fixed a bug in AH24h_HSetBlocks.asm from r550. Trying to set a too large block size with an XT-CF card in DMA transfer mode would corrupt the stack.
  • Fixed a bug from r545 where the list of devices under g_szDeviceTypeValues in Strings.asm was no longer up to date causing the boot menu to display the wrong string for devices numbered higher than DEVICE_8BIT_XTCF_PIO8.
  • Made some fairly significant changes to the XT-CF code to reduce size. Two changes in functionality; 1) Added a simple check to validate the request for a change of the XT-CF transfer mode. 2) Changing transfer mode to use DMA no longer calls AH24h_SetBlockSize if the block size already is within the limits of DMA transfers. UNTESTED
  • XTIDECFG now clears IDEVARS.bIRQ when changing IDE controller to a serial device to keep the boot menu from displaying it since the serial device doesn't use IRQs at all.
  • Other minor optimizations.
Location:
trunk/XTIDE_Universal_BIOS/Src
Files:
9 edited

Legend:

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

    r567 r588  
    9797.PollLoop:
    9898    call    IdeIO_InputStatusRegisterToAL
    99     test    al, FLG_STATUS_BSY                  ; Controller busy?
    100     jnz     SHORT .UpdateTimeout                ;  If so, jump to timeout update
     99    test    al, al                              ; Controller busy? (Check for FLG_STATUS_BSY)
     100    js      SHORT .UpdateTimeout                ;  If so, jump to timeout update
    101101    test    al, ah                              ; Test secondary flag
    102102    jnz     SHORT IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
     
    126126.PollLoop:
    127127    call    IdeIO_InputStatusRegisterToAL
    128     test    al, FLG_STATUS_BSY                  ; Controller busy?
    129     jz      SHORT IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
     128    test    al, al                              ; Controller busy? (Check for FLG_STATUS_BSY)
     129    jns     SHORT IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
    130130    call    Timer_SetCFifTimeout                ; Update timeout counter
    131131    jnc     SHORT .PollLoop                     ; Loop if time left (sets CF on timeout)
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH1Eh_XTCF.asm

    r584 r588  
    6565    ; IS_THIS_DRIVE_XTCF. We check this for all commands.
    6666    call    AccessDPT_IsThisDeviceXTCF
    67     jne     SHORT .XTCFnotFound
     67    jc      SHORT .XTCFnotFound
    6868    and     ax, 0FFh                    ; Subcommand now in AX (clears AH and CF)
    6969    jz      SHORT .XTCFfound            ; Sub-function IS_THIS_DRIVE_XTCF (=0)
     
    111111    ;       Selected transfer mode is stored in BIOS variable (DPT_ATA.bDevice).
    112112
    113     ; Note that when selecting 'DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD' mode,
     113    ; Note that when selecting 'XTCF_8BIT_PIO_MODE_WITH_BIU_OFFLOAD' mode,
    114114    ; the ATA device (i.e. CompactFlash card) will operate in 8-bit mode, but
    115115    ; data will be transferred from its data register using 16-bit CPU instructions
     
    122122    ; Also note that some machines, noteably the Olivetti M24 (also known as
    123123    ; the AT&T PC6300 and Xerox 6060), have hardware errors in the BIU logic,
    124     ; resulting in reversed byte ordering.  Therefore, mode DEVICE_8BIT_PIO is
     124    ; resulting in reversed byte ordering.  Therefore, XTCF_8BIT_PIO_MODE is
    125125    ; the default transfer mode for best system compatibility.
    126126
     127
     128    ; Is requested mode valid?
     129    cmp     al, 3                       ; Valid modes are 0...3
     130    ja      SHORT ProcessXTCFsubcommandFromAL.AH1Eh_LoadInvalidCommandToAHandSetCF
     131
     132    ; Convert mode to XT-CF device type (see RomVars.inc and XTCF.inc for full details)
     133    eSHL_IM al, 1                       ; Shift requested mode
     134    add     al, XTCF_DEVICE_OFFSET      ; Add the device offset (already shifted)
     135    mov     [di+DPT_ATA.bDevice], al    ; Set the new mode (or device actually)
     136
     137    cmp     al, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD
     138    je      SHORT AH23h_Disable8bitPioMode
     139
     140    ; We always need to enable 8-bit mode since 16-bit mode is restored
     141    ; when controller is reset (AH=00h or 0Dh)
     142
     143    cmp     al, DEVICE_8BIT_XTCF_DMA
     144    jne     SHORT AH23h_Enable8bitPioMode
     145
     146    ; DMA transfers have limited block size
     147    mov     al, XTCF_DMA_MODE_MAX_BLOCK_SIZE
     148    cmp     [di+DPT_ATA.bBlockSize], al
     149    jbe     SHORT AH23h_Enable8bitPioMode   ; No need to limit block size
     150    call    AH24h_SetBlockSize
     151    jmp     SHORT AH23h_Enable8bitPioMode
     152
     153
     154%if 0
    127155    ; We always need to enable 8-bit mode since 16-bit mode is restored
    128156    ; when controller is reset (AH=00h or 0Dh)
     
    134162    dec     ax                      ; XTCF_8BIT_PIO_MODE_WITH_BIU_OFFLOAD = 1
    135163    jz      SHORT .Set8bitPioModeWithBIUOffload
    136     dec     ax
     164    dec     ax                      ; XTCF_16BIT_PIO_WITH_BIU_OFFLOAD = 2
    137165    jz      SHORT .Set16bitPioModeWithBIUOffload
    138166
    139     ; XTCF_DMA_MODE = 2 (allow 3 as well for more optimized code)
     167    ; XTCF_DMA_MODE = 3
    140168    mov     BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_XTCF_DMA
    141169
     
    161189    mov     [di+DPT_ATA.bDevice], al
    162190    ret
     191%endif ; 0
    163192
    164193
     
    168197;       DS:DI:  Ptr to DPT (in RAMVARS segment)
    169198;   Returns:
    170 ;       AX:     XT-CF mode (XTCF_8BIT_PIO_MODE, XTCF_8BIT_PIO_MODE_WITH_BIU_OFFLOAD or XTCF_DMA_MODE)
     199;       AX:     XT-CF mode (XTCF_8BIT_PIO_MODE, XTCF_8BIT_PIO_MODE_WITH_BIU_OFFLOAD, XTCF_16BIT_PIO_WITH_BIU_OFFLOAD or XTCF_DMA_MODE)
    171200;       CF:     Clear
    172201;   Corrupts registers:
     
    174203;--------------------------------------------------------------------
    175204AH1Eh_GetCurrentXTCFmodeToAX:
     205    mov     ax, -XTCF_DEVICE_OFFSET & 0FFh
     206    add     al, [di+DPT_ATA.bDevice]
     207    shr     al, 1
     208    ret
     209
     210%if 0
    176211    mov     al, [di+DPT_ATA.bDevice]
    177212    shr     al, 1
    178213    cbw
    179     sub     al, DEVICE_8BIT_XTCF_PIO8 >> 1
    180     ret
     214    sub     al, XTCF_DEVICE_OFFSET >> 1
     215    ret
     216%endif ; 0
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH24h_HSetBlocks.asm

    r558 r588  
    6868    ; must know what the actual block size is.
    6969    cmp     BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_XTCF_DMA
    70     je      SHORT .DisableBlockMode
     70    je      SHORT ProcessXTCFsubcommandFromAL.AH1Eh_LoadInvalidCommandToAHandSetCF
    7171.NoNeedToLimitBlockSize:
    7272%endif ; MODULE_8BIT_IDE_ADVANCED
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH9h_HInit.asm

    r567 r588  
    234234
    235235
     236%ifdef MODULE_8BIT_IDE
     237;--------------------------------------------------------------------
     238; AH9h_Enable8bitModeForDevice8bitAta
     239;   Parameters:
     240;       DS:DI:  Ptr to DPT (in RAMVARS segment)
     241;       SS:BP:  Ptr to IDEPACK
     242;   Returns:
     243;       AH:     Int 13h return status
     244;       CF:     Clear if successful or device is not DEVICE_8BIT_ATA
     245;               Set if failed to set 8-bit mode for DEVICE_8BIT_ATA
     246;   Corrupts registers:
     247;       AL, BX, CX, DX, SI
     248;--------------------------------------------------------------------
     249AH9h_Enable8bitModeForDevice8bitAta:
     250    cmp     BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_ATA
     251%ifdef MODULE_8BIT_IDE_ADVANCED
     252    jne     SHORT IgnoreInvalidCommandError
     253    jmp     AH23h_Enable8bitPioMode
     254%else ; ~MODULE_8BIT_IDE_ADVANCED
     255    je      AH23h_Enable8bitPioMode
     256    ; Fall to IgnoreInvalidCommandError
     257%endif ; MODULE_8BIT_IDE_ADVANCED
     258%endif ; MODULE_8BIT_IDE
     259
     260
     261%ifdef MODULE_8BIT_IDE_ADVANCED
     262;--------------------------------------------------------------------
     263; AH9h_SetModeFromALtoXTCF
     264;   Parameters:
     265;       AL:     XT-CF Mode to set
     266;       DS:DI:  Ptr to DPT (in RAMVARS segment)
     267;       SS:BP:  Ptr to IDEPACK
     268;   Returns:
     269;       AH:     Int 13h return status
     270;       CF:     Clear if successful or device is not XT-CF
     271;               Set if failed to set mode for XT-CF
     272;   Corrupts registers:
     273;       AL, BX, CX, DX, SI
     274;--------------------------------------------------------------------
     275AH9h_SetModeFromALtoXTCF:
     276    call    AccessDPT_IsThisDeviceXTCF
     277    jnc     AH1Eh_ChangeXTCFmodeBasedOnModeInAL
     278    ; Fall to IgnoreInvalidCommandError
     279%endif ; MODULE_8BIT_IDE_ADVANCED
     280
     281
    236282;--------------------------------------------------------------------
    237283; SetErrorFlagFromALwithErrorCodeInAH
     
    259305.NoErrorFlagToSet:
    260306    ret
    261 
    262 
    263 %ifdef MODULE_8BIT_IDE_ADVANCED
    264 ;--------------------------------------------------------------------
    265 ; AH9h_SetModeFromALtoXTCF
    266 ;   Parameters:
    267 ;       AL:     XT-CF Mode to set
    268 ;       DS:DI:  Ptr to DPT (in RAMVARS segment)
    269 ;       SS:BP:  Ptr to IDEPACK
    270 ;   Returns:
    271 ;       AH:     Int 13h return status
    272 ;       CF:     Clear if successful or device is not XT-CF
    273 ;               Set if failed to set mode for XT-CF
    274 ;   Corrupts registers:
    275 ;       AL, BX, CX, DX, SI
    276 ;--------------------------------------------------------------------
    277 AH9h_SetModeFromALtoXTCF:
    278     call    AccessDPT_IsThisDeviceXTCF
    279     jne     SHORT IgnoreInvalidCommandError
    280     jmp     AH1Eh_ChangeXTCFmodeBasedOnModeInAL
    281 %endif ; MODULE_8BIT_IDE_ADVANCED
    282 
    283 
    284 %ifdef MODULE_8BIT_IDE
    285 ;--------------------------------------------------------------------
    286 ; AH9h_Enable8bitModeForDevice8bitAta
    287 ;   Parameters:
    288 ;       DS:DI:  Ptr to DPT (in RAMVARS segment)
    289 ;       SS:BP:  Ptr to IDEPACK
    290 ;   Returns:
    291 ;       AH:     Int 13h return status
    292 ;       CF:     Clear if successful or device is not DEVICE_8BIT_ATA
    293 ;               Set if failed to set 8-bit mode for DEVICE_8BIT_ATA
    294 ;   Corrupts registers:
    295 ;       AL, BX, CX, DX, SI
    296 ;--------------------------------------------------------------------
    297 AH9h_Enable8bitModeForDevice8bitAta:
    298     cmp     BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_ATA
    299     jne     SHORT IgnoreInvalidCommandError
    300     jmp     AH23h_Enable8bitPioMode
    301 %endif ; MODULE_8BIT_IDE
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/PDC20x30.asm

    r587 r588  
    200200    add     dx, BYTE SECTOR_NUMBER_REGISTER
    201201    mov     bh, ~MASK_PDCSCR_DEV1SPEED  ; Assume slave
    202     test    cx, cx
    203     jnz     .setSpeed
     202    inc     cx
     203    loop    .setSpeed
    204204    eSHL_IM bl, POS_PDCSCR_DEV0SPEED
    205205    mov     bh, ~MASK_PDCSCR_DEV0SPEED
  • trunk/XTIDE_Universal_BIOS/Src/Main.asm

    r587 r588  
    136136%ifdef MODULE_8BIT_IDE_ADVANCED
    137137    at  ROMVARS.ideVars0+IDEVARS.wBasePort,             dw  DEVICE_XTIDE_DEFAULT_PORT       ; Controller Command Block base port
    138     at  ROMVARS.ideVars0+IDEVARS.bDevice,               db  XTCF_8BIT_PIO_MODE_WITH_BIU_OFFLOAD
     138    at  ROMVARS.ideVars0+IDEVARS.bDevice,               db  DEVICE_8BIT_XTCF_PIO8
    139139%else
    140140    at  ROMVARS.ideVars0+IDEVARS.wBasePort,             dw  DEVICE_XTIDE_DEFAULT_PORT       ; Controller Command Block base port
  • trunk/XTIDE_Universal_BIOS/Src/Strings.asm

    r536 r588  
    135135
    136136g_szDeviceTypeValues:
    137 g_szDeviceTypeValues_16bit:     db  " 16",NULL
    138 g_szDeviceTypeValues_32bit:     db  " 32",NULL
    139 g_szDeviceTypeValues_8bit:      db  "  8",NULL
    140 g_szDeviceTypeValues_XTIDEr1:   db  "D8 ",NULL  ; Dual 8-bit
    141 g_szDeviceTypeValues_XTIDEr2:   db  "X8 ",NULL  ; A0<->A3 swapped 8-bit
    142 g_szDeviceTypeValues_XTCFpio8:  db  "T8 ",NULL  ; True 8-bit
    143 g_szDeviceTypeValues_XTCFdma:   db  "8MA",NULL  ; DMA 8-bit
    144 g_szDeviceTypeValues_XTCFmem:   db  "M8 ",NULL  ; Memory Mapped 8-bit
    145 g_szDeviceTypeValues_JrIde:     db  "M8 ",NULL
    146 g_szDeviceTypeValues_ADP50L:    db  "M8 ",NULL
    147 g_szDeviceTypeValues_Serial:    db  "SER",NULL
     137g_szDeviceTypeValues_16bit:         db  " 16",NULL
     138g_szDeviceTypeValues_32bit:         db  " 32",NULL
     139g_szDeviceTypeValues_8bit:          db  "  8",NULL
     140g_szDeviceTypeValues_XTIDEr1:       db  "D8 ",NULL  ; Dual 8-bit
     141g_szDeviceTypeValues_XTIDEr2:       db  "X8 ",NULL  ; A0<->A3 swapped 8-bit
     142g_szDeviceTypeValues_XTCFpio8:      db  "T8 ",NULL  ; True 8-bit
     143g_szDeviceTypeValues_XTCFpio8BIU:   db  "T8B",NULL
     144g_szDeviceTypeValues_XTCFpio16BIU:  db  "16B",NULL
     145g_szDeviceTypeValues_XTCFdma:       db  "8MA",NULL  ; DMA 8-bit
     146g_szDeviceTypeValues_JrIde:         db  "M8 ",NULL  ; Memory Mapped 8-bit
     147g_szDeviceTypeValues_ADP50L:        db  "M8 ",NULL  ; Memory Mapped 8-bit
     148g_szDeviceTypeValues_Serial:        db  "SER",NULL
    148149
    149150g_szDeviceTypeValues_Displacement equ (g_szDeviceTypeValues_32bit - g_szDeviceTypeValues)
     
    159160    %endif
    160161    %if g_szDeviceTypeValues_8bit <> g_szDeviceTypeValues_32bit + g_szDeviceTypeValues_Displacement
    161         %error "g_szDeviceTypeValues Displacement Incorrect 2"
     162        %error "g_szDeviceTypeValues Displacement Incorrect 3"
    162163    %endif
    163164    %if g_szDeviceTypeValues_XTIDEr1 <> g_szDeviceTypeValues_8bit + g_szDeviceTypeValues_Displacement
    164         %error "g_szDeviceTypeValues Displacement Incorrect 3"
     165        %error "g_szDeviceTypeValues Displacement Incorrect 4"
    165166    %endif
    166167    %if g_szDeviceTypeValues_XTIDEr2 <> g_szDeviceTypeValues_XTIDEr1 + g_szDeviceTypeValues_Displacement
    167         %error "g_szDeviceTypeValues Displacement Incorrect 4"
     168        %error "g_szDeviceTypeValues Displacement Incorrect 5"
    168169    %endif
    169170    %if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement
    170         %error "g_szDeviceTypeValues Displacement Incorrect 5"
    171     %endif
    172     %if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement
    173171        %error "g_szDeviceTypeValues Displacement Incorrect 6"
    174172    %endif
    175     %if g_szDeviceTypeValues_XTCFmem <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement
     173    %if g_szDeviceTypeValues_XTCFpio8BIU <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement
    176174        %error "g_szDeviceTypeValues Displacement Incorrect 7"
    177175    %endif
    178     %if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFmem + g_szDeviceTypeValues_Displacement
     176    %if g_szDeviceTypeValues_XTCFpio16BIU <> g_szDeviceTypeValues_XTCFpio8BIU + g_szDeviceTypeValues_Displacement
    179177        %error "g_szDeviceTypeValues Displacement Incorrect 8"
    180178    %endif
     179    %if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio16BIU + g_szDeviceTypeValues_Displacement
     180        %error "g_szDeviceTypeValues Displacement Incorrect 9"
     181    %endif
     182    %if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement
     183        %error "g_szDeviceTypeValues Displacement Incorrect 10"
     184    %endif
    181185    %if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
    182         %error "g_szDeviceTypeValues Displacement Incorrect 9"
     186        %error "g_szDeviceTypeValues Displacement Incorrect 11"
    183187    %endif
    184188    %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
    185         %error "g_szDeviceTypeValues Displacement Incorrect 10"
     189        %error "g_szDeviceTypeValues Displacement Incorrect 12"
    186190    %endif
    187191%endif
  • trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm

    r568 r588  
    253253
    254254g_szDeviceTypeValues:
    255 g_szDeviceTypeValues_16bit:     ; db    " 16",NULL
    256                                 ; db     20h,  31h,  36h,  00h    ; uncompressed
    257                                   db     20h,  2bh,  0fh          ; compressed
    258 
    259 g_szDeviceTypeValues_32bit:     ; db    " 32",NULL
    260                                 ; db     20h,  33h,  32h,  00h    ; uncompressed
    261                                   db     20h,  2dh,  0ch          ; compressed
    262 
    263 g_szDeviceTypeValues_8bit:      ; db    "  8",NULL
    264                                 ; db     20h,  20h,  38h,  00h    ; uncompressed
    265                                   db     20h,  20h,  10h          ; compressed
    266 
    267 g_szDeviceTypeValues_XTIDEr1:   ; db    "D8 ",NULL  ; Dual 8-bit
    268                                 ; db     44h,  38h,  20h,  00h    ; uncompressed
    269                                   db     4ah,  30h,  00h          ; compressed
    270 
    271 g_szDeviceTypeValues_XTIDEr2:   ; db    "X8 ",NULL  ; A0<->A3 swapped 8-bit
    272                                 ; db     58h,  38h,  20h,  00h    ; uncompressed
    273                                   db     5eh,  30h,  00h          ; compressed
    274 
    275 g_szDeviceTypeValues_XTCFpio8:  ; db    "T8 ",NULL  ; True 8-bit
    276                                 ; db     54h,  38h,  20h,  00h    ; uncompressed
    277                                   db     5ah,  30h,  00h          ; compressed
    278 
    279 g_szDeviceTypeValues_XTCFdma:   ; db    "8MA",NULL  ; DMA 8-bit
    280                                 ; db     38h,  4dh,  41h,  00h    ; uncompressed
    281                                   db     30h,  53h,  87h          ; compressed
    282 
    283 g_szDeviceTypeValues_XTCFmem:   ; db    "M8 ",NULL  ; Memory Mapped 8-bit
    284                                 ; db     4dh,  38h,  20h,  00h    ; uncompressed
    285                                   db     53h,  30h,  00h          ; compressed
    286 
    287 g_szDeviceTypeValues_JrIde:     ; db    "M8 ",NULL
    288                                 ; db     4dh,  38h,  20h,  00h    ; uncompressed
    289                                   db     53h,  30h,  00h          ; compressed
    290 
    291 g_szDeviceTypeValues_ADP50L:    ; db    "M8 ",NULL
    292                                 ; db     4dh,  38h,  20h,  00h    ; uncompressed
    293                                   db     53h,  30h,  00h          ; compressed
    294 
    295 g_szDeviceTypeValues_Serial:    ; db    "SER",NULL
    296                                 ; db     53h,  45h,  52h,  00h    ; uncompressed
    297                                   db     59h,  4bh,  98h          ; compressed
     255g_szDeviceTypeValues_16bit:         ; db    " 16",NULL
     256                                    ; db     20h,  31h,  36h,  00h    ; uncompressed
     257                                      db     20h,  2bh,  0fh          ; compressed
     258
     259g_szDeviceTypeValues_32bit:         ; db    " 32",NULL
     260                                    ; db     20h,  33h,  32h,  00h    ; uncompressed
     261                                      db     20h,  2dh,  0ch          ; compressed
     262
     263g_szDeviceTypeValues_8bit:          ; db    "  8",NULL
     264                                    ; db     20h,  20h,  38h,  00h    ; uncompressed
     265                                      db     20h,  20h,  10h          ; compressed
     266
     267g_szDeviceTypeValues_XTIDEr1:       ; db    "D8 ",NULL  ; Dual 8-bit
     268                                    ; db     44h,  38h,  20h,  00h    ; uncompressed
     269                                      db     4ah,  30h,  00h          ; compressed
     270
     271g_szDeviceTypeValues_XTIDEr2:       ; db    "X8 ",NULL  ; A0<->A3 swapped 8-bit
     272                                    ; db     58h,  38h,  20h,  00h    ; uncompressed
     273                                      db     5eh,  30h,  00h          ; compressed
     274
     275g_szDeviceTypeValues_XTCFpio8:      ; db    "T8 ",NULL  ; True 8-bit
     276                                    ; db     54h,  38h,  20h,  00h    ; uncompressed
     277                                      db     5ah,  30h,  00h          ; compressed
     278
     279g_szDeviceTypeValues_XTCFpio8BIU:   ; db    "T8B",NULL
     280                                    ; db     54h,  38h,  42h,  00h    ; uncompressed
     281                                      db     5ah,  30h,  88h          ; compressed
     282
     283g_szDeviceTypeValues_XTCFpio16BIU:  ; db    "16B",NULL
     284                                    ; db     31h,  36h,  42h,  00h    ; uncompressed
     285                                      db     2bh,  2fh,  88h          ; compressed
     286
     287g_szDeviceTypeValues_XTCFdma:       ; db    "8MA",NULL  ; DMA 8-bit
     288                                    ; db     38h,  4dh,  41h,  00h    ; uncompressed
     289                                      db     30h,  53h,  87h          ; compressed
     290
     291g_szDeviceTypeValues_JrIde:         ; db    "M8 ",NULL  ; Memory Mapped 8-bit
     292                                    ; db     4dh,  38h,  20h,  00h    ; uncompressed
     293                                      db     53h,  30h,  00h          ; compressed
     294
     295g_szDeviceTypeValues_ADP50L:        ; db    "M8 ",NULL  ; Memory Mapped 8-bit
     296                                    ; db     4dh,  38h,  20h,  00h    ; uncompressed
     297                                      db     53h,  30h,  00h          ; compressed
     298
     299g_szDeviceTypeValues_Serial:        ; db    "SER",NULL
     300                                    ; db     53h,  45h,  52h,  00h    ; uncompressed
     301                                      db     59h,  4bh,  98h          ; compressed
    298302
    299303
     
    310314%endif
    311315%if g_szDeviceTypeValues_8bit <> g_szDeviceTypeValues_32bit + g_szDeviceTypeValues_Displacement
    312 %error "g_szDeviceTypeValues Displacement Incorrect 2"
     316%error "g_szDeviceTypeValues Displacement Incorrect 3"
    313317%endif
    314318%if g_szDeviceTypeValues_XTIDEr1 <> g_szDeviceTypeValues_8bit + g_szDeviceTypeValues_Displacement
    315 %error "g_szDeviceTypeValues Displacement Incorrect 3"
     319%error "g_szDeviceTypeValues Displacement Incorrect 4"
    316320%endif
    317321%if g_szDeviceTypeValues_XTIDEr2 <> g_szDeviceTypeValues_XTIDEr1 + g_szDeviceTypeValues_Displacement
    318 %error "g_szDeviceTypeValues Displacement Incorrect 4"
     322%error "g_szDeviceTypeValues Displacement Incorrect 5"
    319323%endif
    320324%if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement
    321 %error "g_szDeviceTypeValues Displacement Incorrect 5"
    322 %endif
    323 %if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement
    324325%error "g_szDeviceTypeValues Displacement Incorrect 6"
    325326%endif
    326 %if g_szDeviceTypeValues_XTCFmem <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement
     327%if g_szDeviceTypeValues_XTCFpio8BIU <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement
    327328%error "g_szDeviceTypeValues Displacement Incorrect 7"
    328329%endif
    329 %if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFmem + g_szDeviceTypeValues_Displacement
     330%if g_szDeviceTypeValues_XTCFpio16BIU <> g_szDeviceTypeValues_XTCFpio8BIU + g_szDeviceTypeValues_Displacement
    330331%error "g_szDeviceTypeValues Displacement Incorrect 8"
    331332%endif
     333%if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio16BIU + g_szDeviceTypeValues_Displacement
     334%error "g_szDeviceTypeValues Displacement Incorrect 9"
     335%endif
     336%if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement
     337%error "g_szDeviceTypeValues Displacement Incorrect 10"
     338%endif
    332339%if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
    333 %error "g_szDeviceTypeValues Displacement Incorrect 9"
     340%error "g_szDeviceTypeValues Displacement Incorrect 11"
    334341%endif
    335342%if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
    336 %error "g_szDeviceTypeValues Displacement Incorrect 10"
     343%error "g_szDeviceTypeValues Displacement Incorrect 12"
    337344%endif
    338345%endif
     
    560567
    561568;; translated usage stats
    562 ;; 54:1
     569;; 172:2
    563570;; 47:2
    564 ;; 175:1
    565 ;; 49:1
    566 ;; 44:1
    567 ;; 50:2
     571;; 171:2
     572;; 46:3
     573;; 48:2
     574;; 181:1
    568575;; 200:1
    569 ;; 181:1
    570 ;; 172:2
     576;; 54:2
    571577;; 45:2
     578;; 49:2
     579;; 34:3
     580;; 179:8
    572581;; 56:8
    573582;; 33:1
    574583;; 53:2
    575 ;; 179:8
    576 ;; 171:2
     584;; 32:34
     585;; 175:1
     586;; 44:1
     587;; 50:2
    577588;; 51:3
    578 ;; 34:3
    579 ;; 48:2
    580 ;; 46:3
    581 ;; 32:35
    582589;; total translated: 20
    583590
    584591;; format usage stats
     592;; z:2
    585593;; nl:12
     594;; u:6
     595;; 5-x:1
     596;; c:13
     597;; A:4
     598;; s:14
     599;; 5-u:2
    586600;; x:5
    587 ;; A:4
    588 ;; 5-x:1
    589601;; 2-u:1
    590 ;; z:2
    591 ;; 5-u:2
    592 ;; s:14
    593602;; 2-I:1
    594 ;; u:6
    595 ;; c:13
    596603;; total format: 11
    597604
     
    605612;; 64,@:1
    606613;; 65,A:5
    607 ;; 66,B:9
     614;; 66,B:11
    608615;; 67,C:3
    609616;; 68,D:11
     
    616623;; 75,K:1
    617624;; 76,L:4
    618 ;; 77,M:8
     625;; 77,M:7
    619626;; 78,N:2
    620627;; 79,O:2
     
    623630;; 82,R:7
    624631;; 83,S:3
    625 ;; 84,T:1
     632;; 84,T:2
    626633;; 85,U:2
    627634;; 86,V:
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/AccessDPT.asm

    r568 r588  
    9494;   Returns:
    9595;       AH:     Device Type
    96 ;       ZF:     Set if XTCF
    97 ;               Cleared if some other device
     96;       CF:     Cleared if XTCF
     97;               Set if some other device
    9898;   Corrupts registers:
    9999;       Nothing
     
    101101AccessDPT_IsThisDeviceXTCF:
    102102    mov     ah, [di+DPT_ATA.bDevice]
    103     cmp     ah, DEVICE_8BIT_XTCF_PIO8
    104     je      SHORT .DeviceIsXTCF
    105     cmp     ah, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD
    106     je      SHORT .DeviceIsXTCF
    107     cmp     ah, DEVICE_8BIT_XTCF_DMA
    108 .DeviceIsXTCF:
     103    cmp     ah, FIRST_XTCF_DEVICE
     104    jb      SHORT .DeviceIsNotXTCF
     105    cmp     ah, LAST_XTCF_DEVICE+1
     106    cmc
     107.DeviceIsNotXTCF:
    109108    ret
    110109%endif ; MODULE_8BIT_IDE_ADVANCED
Note: See TracChangeset for help on using the changeset viewer.