Ignore:
Timestamp:
Feb 14, 2019, 7:38:08 PM (5 years ago)
Author:
krille_n_
Message:

Changes:

  • Building the BIOS now works again.
  • Added a new IDE device type/transfer mode for use only with XT-IDE rev 2+ (or Chuck(G)-modded rev 1) cards installed in any of the following machines: Olivetti M24, AT&T PC6300, Xerox 6060 and Logabax Persona 1600. This new transfer mode is slightly faster than the regular XT-IDE rev 1 device type and requires that the card is configured for High Speed mode (or, in case of the card being a rev 1 card, has the Chuck(G) mod done). The new device type is called "XTIDE rev 2 (Olivetti M24)" in XTIDECFG.
  • Made some minor improvements to the library code that handles 'Drive Not Ready' errors in XTIDECFG.
  • Optimizations.
File:
1 edited

Legend:

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

    r592 r601  
    100100    jc      SHORT ReturnWithMemoryIOtransferErrorInAH
    101101
    102     mov     cx, [bp+MEMPIOVARS.wSectorsInBlock] ; Clears CH
    103     cmp     [bp+MEMPIOVARS.bSectorsLeft], cl
     102    mov     dx, [bp+MEMPIOVARS.wSectorsInBlock] ; Clears DH
     103    cmp     [bp+MEMPIOVARS.bSectorsLeft], dl
    104104    jbe     SHORT .ReadLastBlockFromDrive
    105105
     
    119119    ; transferred, there will be a wait for next block but DRQ is never
    120120    ; set since all is transferred! Then we get timeout error.
    121     mov     cx, [bp+MEMPIOVARS.wSectorsInBlock]
    122     sub     [bp+MEMPIOVARS.bSectorsLeft], cl
    123     add     [bp+MEMPIOVARS.bSectorsDone], cl
    124     cmp     [bp+MEMPIOVARS.bSectorsLeft], cl
     121    mov     dx, [bp+MEMPIOVARS.wSectorsInBlock]
     122    sub     [bp+MEMPIOVARS.bSectorsLeft], dl
     123    add     [bp+MEMPIOVARS.bSectorsDone], dl
     124    cmp     [bp+MEMPIOVARS.bSectorsLeft], dl
    125125    ja      SHORT .ReadNextBlockFromDrive
    126126
    127127ALIGN JUMP_ALIGN
    128128.ReadLastBlockFromDrive:
    129     mov     cl, [bp+MEMPIOVARS.bSectorsLeft]
    130     push    cx
     129    mov     dl, [bp+MEMPIOVARS.bSectorsLeft]
     130    push    dx
    131131    call    ReadSingleBlockFromSectorAccessWindowInDSSItoESDI
    132132
     
    181181    jc      SHORT ReturnWithMemoryIOtransferErrorInAH
    182182
    183     mov     cx, [bp+MEMPIOVARS.wSectorsInBlock]
    184     cmp     [bp+MEMPIOVARS.bSectorsLeft], cl
     183    mov     dx, [bp+MEMPIOVARS.wSectorsInBlock]
     184    cmp     [bp+MEMPIOVARS.bSectorsLeft], dl
    185185    jbe     SHORT .WriteLastBlockToDrive
    186186
     
    192192
    193193    ; Increment number of successfully written WORDs
    194     mov     cx, [bp+MEMPIOVARS.wSectorsInBlock]
    195     sub     [bp+MEMPIOVARS.bSectorsLeft], cl
    196     add     [bp+MEMPIOVARS.bSectorsDone], cl
    197     cmp     [bp+MEMPIOVARS.bSectorsLeft], cl
     194    mov     dx, [bp+MEMPIOVARS.wSectorsInBlock]
     195    sub     [bp+MEMPIOVARS.bSectorsLeft], dl
     196    add     [bp+MEMPIOVARS.bSectorsDone], dl
     197    cmp     [bp+MEMPIOVARS.bSectorsLeft], dl
    198198    ja      SHORT .WriteNextBlockToDrive
    199199
    200200ALIGN JUMP_ALIGN
    201201.WriteLastBlockToDrive:
    202     mov     cl, [bp+MEMPIOVARS.bSectorsLeft]
    203     push    cx
     202    mov     dl, [bp+MEMPIOVARS.bSectorsLeft]
     203    push    dx
    204204    ePUSH_T bx, CheckErrorsAfterTransferringLastMemoryMappedBlock
    205205    ; Fall to WriteSingleBlockFromDSSIToSectorAccessWindowInESDI
     
    208208; WriteSingleBlockFromDSSIToSectorAccessWindowInESDI
    209209;   Parameters:
    210 ;       CX:     Number of sectors in block
     210;       DX:     Number of sectors in block
    211211;       DS:SI:  Normalized ptr to source buffer
    212212;       ES:DI:  Ptr to Sector Access Window
     
    220220WriteSingleBlockFromDSSIToSectorAccessWindowInESDI:
    221221    mov     bx, di
    222     mov     dx, cx
    223222    xor     cx, cx
    224223ALIGN JUMP_ALIGN
     
    235234; ReadSingleBlockFromSectorAccessWindowInDSSItoESDI
    236235;   Parameters:
    237 ;       CX      Number of sectors in full block or sectors in last partial block
    238 ;       ES:DI:  Normalized ptr to buffer to receive data (destination)
    239 ;       DS:SI:  Ptr to Sector Access Window (source)
     236;       DX:     Number of sectors in block
     237;       ES:DI:  Normalized ptr to destination buffer
     238;       DS:SI:  Ptr to Sector Access Window
    240239;   Returns:
    241240;       CX, DX: Zero
     
    247246ReadSingleBlockFromSectorAccessWindowInDSSItoESDI:
    248247    mov     bx, si
    249     mov     dx, cx
    250248    xor     cx, cx
    251249ALIGN JUMP_ALIGN
Note: See TracChangeset for help on using the changeset viewer.