Ignore:
Timestamp:
Apr 10, 2013, 6:27:15 PM (11 years ago)
Author:
krille_n_@…
google:author:
krille_n_@hotmail.com
Message:

Changes:

  • Added support for the Silicon Valley Computer ADP50L controller (and possibly other IDE controllers from SVC using memory mapped I/O). Please note that this has not been tested in any way since I don't have any of these cards myself (make backups before trying this on drives with important data). Also, *if* it works, make sure it works reliably (stress test the disk system). Some things you should know: 1) Autodetection for this controller has not been added to XTIDECFG, you need to manually select the "SVC ADP50L" controller (and possibly change the BIOS segment address if not using the default of C800h). 2) The memory mapped I/O window is inside the ROM address space of the controller. The XTIDE Universal BIOS currently do not support this so that means you need to use another ROM (for example, an XTIDE or XTCF card or the BOOT ROM of a NIC). This presents another problem, the original ADP50L BIOS needs to be disabled somehow to avoid conflicts. Either pull the ROM chip or disable the BIOS by removing jumper J3. Note, I have no idea if any of this will actually work. It's basically a shot in the dark.
File:
1 edited

Legend:

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

    r526 r536  
    2727    .bSectorsDone           resb    1   ; 8, Number of sectors xferred
    2828endstruc
    29 
    30 SECTOR_ACCESS_WINDOW_SIZE   EQU     512 ; 512 bytes
    3129
    3230
     
    6866    mov     dx, [di+DPT.wBasePort]
    6967    cmp     BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_JRIDE_ISA
    70     jne     SHORT .GetSectorAccessWindowForXTCF
    71 
    72     ; Get Sector Access Window for JR-IDE/ISA
     68    jb      SHORT .GetSectorAccessWindowForXTCF
     69
     70    ; Get Sector Access Window for JR-IDE/ISA and ADP50L
     71    mov     ds, dx      ; Segment for JR-IDE/ISA and ADP50L
    7372    mov     di, JRIDE_SECTOR_ACCESS_WINDOW_OFFSET
    74     mov     ds, dx      ; Segment for JR-IDE/ISA
     73    je      SHORT .SectorAccessWindowLoadedToDSDI
     74    mov     di, ADP50L_SECTOR_ACCESS_WINDOW_OFFSET
    7575    jmp     SHORT .SectorAccessWindowLoadedToDSDI
    7676
     
    231231    mov     bx, di
    232232    mov     dx, cx
    233     xor     cl, cl
     233    xor     cx, cx
    234234ALIGN JUMP_ALIGN
    235235.WriteNextSector:
    236     mov     ch, SECTOR_ACCESS_WINDOW_SIZE >> 9
     236    inc     ch
    237237    rep movsw
    238238    mov     di, bx  ; Reset for next sector
     
    258258    mov     bx, si
    259259    mov     dx, cx
    260     xor     cl, cl
     260    xor     cx, cx
    261261ALIGN JUMP_ALIGN
    262262.ReadNextSector:
    263     mov     ch, SECTOR_ACCESS_WINDOW_SIZE >> 9
     263    inc     ch
    264264    rep movsw
    265265    mov     si, bx  ; Reset for next sector
     
    289289    ret
    290290
    291 
    292 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
    293 %if SECTOR_ACCESS_WINDOW_SIZE <> 512
    294     %error "SECTOR_ACCESS_WINDOW_SIZE is no longer equal to 512. JrIdeTransfer.asm needs changes."
    295 %endif
    296 %endif
Note: See TracChangeset for help on using the changeset viewer.