Changeset 536 in xtideuniversalbios


Ignore:
Timestamp:
Apr 10, 2013, 6:27:15 PM (12 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.
Location:
trunk
Files:
1 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Inc/CustomDPT.inc

    r526 r536  
    3030    .bIdevarsOffset         resb    1   ; Offset to IDEVARS for this drive
    3131    .bInitError             resb    1   ; Flags for AH=09h initialization errors
    32     .wBasePort              resb    2   ; Segment for JR-IDE/ISA
     32    .wBasePort              resb    2   ; Segment for JR-IDE/ISA and ADP50L
    3333
    3434    ; CHS variables
  • trunk/XTIDE_Universal_BIOS/Inc/EBIOS.inc

    r535 r536  
    7474
    7575; Flags for DPTE.wFlags
    76 FLG_FAST_PIO_ENABLED        EQU (1<<0)  ; Set is using PIO mode 1 or above (DPTE.bPioMode is valid when set)
     76FLG_FAST_PIO_ENABLED        EQU (1<<0)  ; Set if using PIO mode 1 or above (DPTE.bPioMode is valid when set)
    7777FLG_DMA_ENABLED             EQU (1<<1)  ; Set if DMA enabled (DPTE.bDmaChannelAndType is valid when set)
    7878FLG_BLOCK_MODE_ENABLED      EQU (1<<2)  ; Set if Block Mode transfers are enabled (DPTE.bBlockSize is valid when set)
    7979FLG_CHS_TRANSLATION_ENABLED EQU (1<<3)  ; Set for drives with more than 1024 cylinders
    80 FLG_LBA_TRANSLATION_ENABLED EQU (1<<4)  ; Set when LBA addersses from DAP are passed directly to the drive
     80FLG_LBA_TRANSLATION_ENABLED EQU (1<<4)  ; Set when LBA addresses from DAP are passed directly to the drive
    8181FLG_REMOVABLE_MEDIA         EQU (1<<5)
    8282FLG_ATAPI_DEVICE            EQU (1<<6)
  • trunk/XTIDE_Universal_BIOS/Inc/ModuleDependency.inc

    r526 r536  
    3838    %include "XTCF.inc"             ; For Lo-tech XT-CF
    3939    %include "JRIDE_ISA.inc"        ; For JR-IDE/ISA
     40    %include "ADP50L.inc"           ; For SVC ADP50L
    4041%endif
    4142
  • trunk/XTIDE_Universal_BIOS/Inc/RomVars.inc

    r535 r536  
    122122STANDARD_CONTROL_BLOCK_OFFSET           EQU     200h
    123123XTIDE_CONTROL_BLOCK_OFFSET              EQU     8h
    124 XTCF_CONTROL_BLOCK_OFFSET               EQU     (XTIDE_CONTROL_BLOCK_OFFSET << 1)
     124XTCF_CONTROL_BLOCK_OFFSET               EQU     10h
     125ADP50L_CONTROL_BLOCK_OFFSET             EQU     10h
    125126
    126127; Default values for Port and PortCtrl, shared with the configurator
     
    146147;
    147148COUNT_OF_STANDARD_IDE_DEVICES           EQU 2   ; 16- and 32-bit controllers
    148 COUNT_OF_8BIT_IDE_DEVICES               EQU 7
     149COUNT_OF_8BIT_IDE_DEVICES               EQU 8
    149150COUNT_OF_ALL_IDE_DEVICES                EQU (COUNT_OF_8BIT_IDE_DEVICES + COUNT_OF_STANDARD_IDE_DEVICES)
    150151; Standard port mapped I/O
     
    161162; Memory Mapped I/O
    162163DEVICE_8BIT_JRIDE_ISA                   EQU ((COUNT_OF_STANDARD_IDE_DEVICES+6)<<1)  ; JR-IDE/ISA (Memory Mapped I/O)
     164DEVICE_8BIT_ADP50L                      EQU ((COUNT_OF_STANDARD_IDE_DEVICES+7)<<1)  ; SVC ADP50L (Memory Mapped I/O)
    163165; Virtual devices
    164166DEVICE_SERIAL_PORT                      EQU (COUNT_OF_ALL_IDE_DEVICES<<1)
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeCommand.asm

    r526 r536  
    175175%ifdef MODULE_8BIT_IDE_ADVANCED
    176176    cmp     BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_XTCF_MEMMAP
    177     jae     SHORT JrIdeTransfer_StartWithCommandInAL    ; DEVICE_8BIT_XTCF_MEMMAP or DEVICE_8BIT_JRIDE_ISA
     177    jae     SHORT JrIdeTransfer_StartWithCommandInAL    ; DEVICE_8BIT_XTCF_MEMMAP, DEVICE_8BIT_JRIDE_ISA or DEVICE_8BIT_ADP50L
    178178%endif
    179179    jmp     IdeTransfer_StartWithCommandInAL
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIO.asm

    r526 r536  
    6161    je      SHORT .ReverseA0andA3fromRegisterIndexInDX
    6262
     63    eSHL_IM dx, 1   ; ADP50L and XT-CF
    6364    cmp     al, DEVICE_8BIT_JRIDE_ISA
    64     jne     SHORT .ShlRegisterIndexInDX         ; All XT-CF modes
    65     ; Fall to .InputToALfromMemoryMappedRegisterInDX
    66 
    67 .InputToALfromMemoryMappedRegisterInDX:
     65    jb      SHORT .InputToALfromRegisterInDX    ; All XT-CF modes
     66    mov     bh, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8
     67    je      SHORT .InputToALfromMemoryMappedRegisterInBX
     68    mov     bl, dl
     69    mov     bh, ADP50L_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8
     70
     71.InputToALfromMemoryMappedRegisterInBX:
    6872    push    ds
    69     mov     ds, [di+DPT.wBasePort]  ; Segment for JR-IDE/ISA
    70     mov     al, [bx+JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET]
     73    mov     ds, [di+DPT.wBasePort]  ; Segment for JR-IDE/ISA and ADP50L
     74    mov     al, [bx]
    7175    pop     ds
    7276    ret
     
    7579.ReverseA0andA3fromRegisterIndexInDX:
    7680    mov     dl, [cs:bx+g_rgbSwapA0andA3fromIdeRegisterIndex]
    77     SKIP2B  bx  ; Skip shl dx, 1
    78 
    79 .ShlRegisterIndexInDX:
    80     eSHL_IM dx, 1
    81     ; Fall to .InputToALfromRegisterInDX
    8281
    8382.InputToALfromRegisterInDX:
     
    108107    je      SHORT .ReverseA0andA3fromRegisterIndexInDX
    109108
     109    ; At this point remaining controllers (JRIDE, XTCF and ADP50L) all have a control
     110    ; block offset of 8 or (8<<1) so we add 8 here and do the SHL 1 later if needed.
     111    add     dx, 8
    110112    cmp     bl, DEVICE_8BIT_JRIDE_ISA
    111     jne     SHORT .ShlRegisterIndexInDX     ; All XT-CF modes
    112     ; Fall to .OutputALtoMemoryMappedRegisterInDX
    113 
    114 .OutputALtoMemoryMappedRegisterInDX:
    115     mov     bx, JRIDE_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET
    116     jmp     SHORT IdeIO_OutputALtoIdeRegisterInDL.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX
     113    jb      SHORT IdeIO_OutputALtoIdeRegisterInDL.ShlRegisterIndexInDXandOutputAL   ; All XT-CF modes
     114    mov     bx, JRIDE_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET - 8          ; Zeroes BL. -8 compensates for the ADD
     115    je      SHORT IdeIO_OutputALtoIdeRegisterInDL.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX
     116    ; The commented instructions below shows what happens next (saved for clarity) but as an optimization
     117    ; we can accomplish the same thing with this jump.
     118    jmp     SHORT IdeIO_OutputALtoIdeRegisterInDL.ShlDXandMovHighByteOfADP50LoffsetsToBH
     119;   eSHL_IM dx, 1
     120;   mov     bh, (ADP50L_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET - 16) >> 8 ; -16 compensates for the ADD and SHL
     121;   jmp     SHORT IdeIO_OutputALtoIdeRegisterInDL.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX
    117122%endif
    118123
     
    122127    ; a small trick since we only access Device Control Register at
    123128    ; offset 6h: Always clear A3 and set A0.
     129    mov     bh, dh  ; Zero BH
    124130    add     dx, [cs:bx+IDEVARS.wControlBlockPort]
    125131    xor     dl, 1001b                       ; Clear A3, Set A0
    126     jmp     SHORT OutputALtoPortInDX
    127 
    128 .ShlRegisterIndexInDX:
    129     eSHL_IM dx, 1
    130     add     dx, BYTE XTCF_CONTROL_BLOCK_OFFSET
    131     jmp     SHORT OutputALtoRegisterInDX
     132    out     dx, al
     133    ret
    132134
    133135.OutputALtoControlBlockRegisterInDX:
    134     call    AccessDPT_GetIdevarsToCSBX
     136    call    AccessDPT_GetIdevarsToCSBX      ; *FIXME* Why is this call here but not in the above block?
    135137    add     dx, [cs:bx+IDEVARS.wControlBlockPort]
    136     jmp     SHORT OutputALtoPortInDX
     138    out     dx, al
     139    ret
    137140
    138141
     
    160163
    161164    cmp     bl, DEVICE_8BIT_JRIDE_ISA
    162     jne     SHORT .ShlRegisterIndexInDX     ; All XT-CF modes
    163     ; Fall to .OutputALtoMemoryMappedRegisterInDX
    164 
    165 .OutputALtoMemoryMappedRegisterInDX:
    166     mov     bx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET
     165    jb      SHORT .ShlRegisterIndexInDXandOutputAL  ; All XT-CF modes
     166    mov     bx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET  ; Zeroes BL
     167    je      SHORT .OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX
     168.ShlDXandMovHighByteOfADP50LoffsetsToBH:
     169    eSHL_IM dx, 1
     170    mov     bh, ADP50L_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8    ; BL is zero so we only need to change BH
     171
    167172.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX:
    168173    add     bx, dx
    169174    push    ds
    170     mov     ds, [di+DPT.wBasePort]  ; Segment for JR-IDE/ISA
     175    mov     ds, [di+DPT.wBasePort]  ; Segment for JR-IDE/ISA and ADP50L
    171176    mov     [bx], al
    172177    pop     ds
     
    177182    mov     bx, dx
    178183    mov     dl, [cs:bx+g_rgbSwapA0andA3fromIdeRegisterIndex]
    179     SKIP2B  bx  ; Skip shl dx, 1
    180 
    181 .ShlRegisterIndexInDX:
     184    SKIP2B  bx  ; Skip eSHL_IM dx, 1
     185
     186.ShlRegisterIndexInDXandOutputAL:
    182187    eSHL_IM dx, 1
    183188    ; Fall to OutputALtoRegisterInDX
     
    186191OutputALtoRegisterInDX:
    187192    add     dx, [di+DPT.wBasePort]
    188 OutputALtoPortInDX:
    189193    out     dx, al
    190194    ret
  • 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
  • trunk/XTIDE_Universal_BIOS/Src/Main.asm

    r529 r536  
    147147    at  ROMVARS.ideVars1+IDEVARS.bXTCFcontrolRegister,  db  XTCF_8BIT_PIO_MODE
    148148    at  ROMVARS.ideVars1+IDEVARS.bDevice,               db  DEVICE_8BIT_XTCF_PIO8
     149%endif
     150
    149151    at  ROMVARS.ideVars1+IDEVARS.drvParamsMaster+DRVPARAMS.wFlags,  db  DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
    150152    at  ROMVARS.ideVars1+IDEVARS.drvParamsSlave+DRVPARAMS.wFlags,   db  DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
    151 %else
    152     at  ROMVARS.ideVars1+IDEVARS.drvParamsMaster+DRVPARAMS.wFlags,  db  DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
    153     at  ROMVARS.ideVars1+IDEVARS.drvParamsSlave+DRVPARAMS.wFlags,   db  DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
    154 %endif
    155153
    156154    at  ROMVARS.ideVars2+IDEVARS.drvParamsMaster+DRVPARAMS.wFlags,  db  DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)
  • trunk/XTIDE_Universal_BIOS/Src/Strings.asm

    r526 r536  
    144144g_szDeviceTypeValues_XTCFmem:   db  "M8 ",NULL  ; Memory Mapped 8-bit
    145145g_szDeviceTypeValues_JrIde:     db  "M8 ",NULL
     146g_szDeviceTypeValues_ADP50L:    db  "M8 ",NULL
    146147g_szDeviceTypeValues_Serial:    db  "SER",NULL
    147148
     
    178179        %error "g_szDeviceTypeValues Displacement Incorrect 8"
    179180    %endif
    180     %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
     181    %if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
    181182        %error "g_szDeviceTypeValues Displacement Incorrect 9"
    182183    %endif
     184    %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
     185        %error "g_szDeviceTypeValues Displacement Incorrect 10"
     186    %endif
    183187%endif
    184188
    185189
    186190g_szSelectionTimeout:   db  DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL
    187 
    188 
    189 ; Boot Menu information strings
    190 g_szCapacity:           db  "Capacity : %s",NULL
    191 g_szCapacityNum:        db  "%5-u.%u %ciB",NULL
    192 g_szInformation:        db  "%s",LF,CR
    193     db  "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
    194     db  "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL
    195191
    196192
     
    220216    %endif
    221217%endif
     218
     219
     220; Boot Menu information strings
     221g_szCapacity:           db  "Capacity : %s",NULL
     222g_szCapacityNum:        db  "%5-u.%u %ciB",NULL
     223g_szInformation:        db  "%s",LF,CR
     224                        db  "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
     225                        db  "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL
    222226
    223227%endif ; MODULE_BOOT_MENU
  • trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm

    r526 r536  
    289289                                  db     53h,  30h,  00h          ; compressed
    290290
     291g_szDeviceTypeValues_ADP50L:    ; db    "M8 ",NULL
     292                                ; db     4dh,  38h,  20h,  00h    ; uncompressed
     293                                  db     53h,  30h,  00h          ; compressed
     294
    291295g_szDeviceTypeValues_Serial:    ; db    "SER",NULL
    292296                                ; db     53h,  45h,  52h,  00h    ; uncompressed
     
    326330%error "g_szDeviceTypeValues Displacement Incorrect 8"
    327331%endif
    328 %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
     332%if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
    329333%error "g_szDeviceTypeValues Displacement Incorrect 9"
     334%endif
     335%if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
     336%error "g_szDeviceTypeValues Displacement Incorrect 10"
    330337%endif
    331338%endif
     
    335342                        ; 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
    336343                          db     31h,  32h,  3bh,  59h,  6bh,  72h,  6bh,  69h,  7ah,  6fh,  75h, 0f4h,  6fh, 0f4h,  3ah,  20h, 0b9h                                              ; compressed
    337 
    338 
    339 
    340 ; Boot Menu information strings
    341 g_szCapacity:           ; db    "Capacity : %s",NULL
    342                         ; db     43h,  61h,  70h,  61h,  63h,  69h,  74h,  79h,  20h,  3ah,  20h,  25h,  73h,  00h    ; uncompressed
    343                           db     49h,  67h,  76h,  67h,  69h,  6fh,  7ah, 0ffh, 0c0h,  1dh                            ; compressed
    344 
    345 g_szCapacityNum:        ; db    "%5-u.%u %ciB",NULL
    346                         ; db     25h,  35h,  2dh,  75h,  2eh,  25h,  75h,  20h,  25h,  63h,  69h,  42h,  00h    ; uncompressed
    347                           db     36h,  29h,  35h,  20h,  3ch,  6fh,  88h                                        ; compressed
    348 
    349 g_szInformation:        ; db    "%s",LF,CR
    350                         ; db     25h,  73h,  0ah,  0dh    ; uncompressed
    351                           db     3dh,  39h                ; compressed
    352 
    353     ; db    "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
    354     ; 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
    355       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
    356 
    357     ; db    "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL
    358     ; db     25h,  73h, 0b3h,  25h,  35h,  2dh,  75h, 0b3h,  25h,  73h, 0b3h,  20h,  25h,  32h,  2dh,  49h, 0b3h,  25h,  35h,  2dh,  78h,  00h    ; uncompressed
    359       db     3dh,  23h,  36h,  23h,  3dh,  23h,  20h,  34h,  23h,  18h                                                                            ; compressed
    360344
    361345
     
    404388%endif
    405389%endif
     390
     391
     392; Boot Menu information strings
     393g_szCapacity:           ; db    "Capacity : %s",NULL
     394                        ; db     43h,  61h,  70h,  61h,  63h,  69h,  74h,  79h,  20h,  3ah,  20h,  25h,  73h,  00h    ; uncompressed
     395                          db     49h,  67h,  76h,  67h,  69h,  6fh,  7ah, 0ffh, 0c0h,  1dh                            ; compressed
     396
     397g_szCapacityNum:        ; db    "%5-u.%u %ciB",NULL
     398                        ; db     25h,  35h,  2dh,  75h,  2eh,  25h,  75h,  20h,  25h,  63h,  69h,  42h,  00h    ; uncompressed
     399                          db     36h,  29h,  35h,  20h,  3ch,  6fh,  88h                                        ; compressed
     400
     401g_szInformation:        ; db    "%s",LF,CR
     402                        ; db     25h,  73h,  0ah,  0dh    ; uncompressed
     403                          db     3dh,  39h                ; compressed
     404
     405    ; db    "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
     406    ; 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
     407      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
     408
     409    ; db    "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL
     410    ; db     25h,  73h, 0b3h,  25h,  35h,  2dh,  75h, 0b3h,  25h,  73h, 0b3h,  20h,  25h,  32h,  2dh,  49h, 0b3h,  25h,  35h,  2dh,  78h,  00h    ; uncompressed
     411      db     3dh,  23h,  36h,  23h,  3dh,  23h,  20h,  34h,  23h,  18h                                                                            ; compressed
     412
    406413
    407414%endif ; MODULE_BOOT_MENU
     
    554561;; translated usage stats
    555562;; 33:1
    556 ;; 32:34
     563;; 32:35
    557564;; 181:1
    558565;; 53:2
     
    568575;; 34:3
    569576;; 49:1
    570 ;; 56:7
     577;; 56:8
    571578;; 45:2
    572579;; 175:1
     
    609616;; 75,K:1
    610617;; 76,L:4
    611 ;; 77,M:7
     618;; 77,M:8
    612619;; 78,N:2
    613620;; 79,O:2
  • trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Main.asm

    r526 r536  
    2727%include "IdeRegisters.inc"     ; Needed for port and device autodetection
    2828%include "JRIDE_ISA.inc"        ; For JR-IDE/ISA default segment
     29%include "ADP50L.inc"           ; For ADP50L default segment
    2930%include "XTCF.inc"             ; For XT-CF modes
    3031
  • trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm

    r526 r536  
    214214    dw  DEVICE_8BIT_XTCF_MEMMAP
    215215    dw  DEVICE_8BIT_JRIDE_ISA
     216    dw  DEVICE_8BIT_ADP50L
    216217    dw  DEVICE_SERIAL_PORT
    217218g_rgszValueToStringLookupForDevice:
     
    225226    dw  g_szValueCfgDeviceMemXTCF
    226227    dw  g_szValueCfgDeviceJrIdeIsa
     228    dw  g_szValueCfgDeviceADP50L
    227229    dw  g_szValueCfgDeviceSerial
    228230
     
    381383    mov     bx, g_MenuitemIdeControllerControlBlockAddress
    382384    cmp     al, DEVICE_8BIT_XTCF_PIO8
    383     jb      SHORT .EnableMenuitemFromCSBX   ; Not needed for XT-CF and JR-IDE/ISA
     385    jb      SHORT .EnableMenuitemFromCSBX   ; Not needed for XT-CF, JR-IDE/ISA and ADP50L
    384386    jmp     SHORT .DisableMenuitemFromCSBX
    385387
     
    603605        cmp     al, DEVICE_8BIT_JRIDE_ISA
    604606        je      SHORT .ChangingToJrIdeIsa
     607        cmp     al, DEVICE_8BIT_ADP50L
     608        je      SHORT .ChangingToADP50L
    605609
    606610        ; Restore ports to default values
     
    620624
    621625.ChangingToJrIdeIsa:
    622         mov     ax, JRIDE_DEFAULT_SEGMENT_ADDRESS
     626        mov     ah, JRIDE_DEFAULT_SEGMENT_ADDRESS >> 8
     627        SKIP2B  bx
     628
     629.ChangingToADP50L:
     630        mov     ah, ADP50L_DEFAULT_BIOS_SEGMENT_ADDRESS >> 8
     631        xor     al, al
    623632        xor     bx, bx
    624633        jmp     SHORT .writeNonSerial
  • trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm

    r532 r536  
    228228g_szNfoIdeSlave:            db  "Settings for Slave Drive.",NULL
    229229g_szNfoIdeDevice:           db  "Select controller device type.",NULL
    230 g_szNfoIdeCmdPort:          db  "IDE Controller Command Block (base port) address or segment address for JR-IDE/ISA.",NULL
     230g_szNfoIdeCmdPort:          db  "IDE Controller Command Block (base port) address or segment address for JR-IDE/ISA and SVC ADP50L.",NULL
    231231g_szNfoIdeCtrlPort:         db  "IDE Controller Control Block address. Usually Cmd Block + 8 for XTIDE, and Cmd Block + 200h for ATA.",NULL
    232232g_szNfoIdeEnIRQ:            db  "Interrupt or polling mode.",NULL
     
    241241                            db  " By default the primary IDE controller uses port 1F0h and secondary controller uses port 170h."
    242242                            db  " XTIDE card uses port 300h by default."
    243                             db  " JR-IDE/ISA do not use ports but you need to set ROM space segment address for JR-IDE/ISA.",NULL
     243                            db  " JR-IDE/ISA and SVC ADP50L do not use ports but needs the ROM segment address set here instead.",NULL
    244244
    245245g_szHelpIdeCtrlPort:        db  "IDE controller Control Block address is normally Command Block address + 200h."
     
    282282                            db  "XT-CF v2 in memory mode",LF
    283283                            db  "JR-IDE/ISA",LF
     284                            db  "SVC ADP50L",LF
    284285                            db  "Serial port virtual device",NULL
    285286
     
    293294g_szValueCfgDeviceMemXTCF:  db  "XTCF MEM",NULL
    294295g_szValueCfgDeviceJrIdeIsa: db  "JR-ISA",NULL
     296g_szValueCfgDeviceADP50L:   db  "ADP50L",NULL
    295297g_szValueCfgDeviceSerial:   db  "Serial",NULL
    296298
Note: See TracChangeset for help on using the changeset viewer.