Changeset 601 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src


Ignore:
Timestamp:
Feb 14, 2019, 7:38:08 PM (6 years ago)
Author:
Krister Nordvall
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.
Location:
trunk/XTIDE_Universal_BIOS/Src
Files:
13 edited

Legend:

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

    r558 r601  
    5959
    6060%ifdef MODULE_8BIT_IDE_ADVANCED
    61     je      SHORT .ReverseA0andA3fromRegisterIndexInDX
     61    cmp     al, DEVICE_8BIT_XTIDE_REV2_OLIVETTI
     62    jbe     SHORT .ReverseA0andA3fromRegisterIndexInDX
    6263
    6364    eSHL_IM dx, 1   ; ADP50L and XT-CF
     
    99100IdeIO_OutputALtoIdeControlBlockRegisterInDL:
    100101    xor     dh, dh  ; IDE Register index now in DX
    101 
    102102    mov     bl, [di+DPT_ATA.bDevice]
    103103    cmp     bl, DEVICE_8BIT_XTIDE_REV2
     
    105105
    106106%ifdef MODULE_8BIT_IDE_ADVANCED
    107     je      SHORT .ReverseA0andA3fromRegisterIndexInDX
     107    cmp     bl, DEVICE_8BIT_XTIDE_REV2_OLIVETTI
     108    jbe     SHORT .ReverseA0andA3fromRegisterIndexInDX
    108109
    109110    ; At this point remaining controllers (JRIDE, XTCF and ADP50L) all have a control
     
    154155IdeIO_OutputALtoIdeRegisterInDL:
    155156    xor     dh, dh  ; IDE Register index now in DX
    156 
    157157    mov     bl, [di+DPT_ATA.bDevice]
    158158    cmp     bl, DEVICE_8BIT_XTIDE_REV2
     
    160160
    161161%ifdef MODULE_8BIT_IDE_ADVANCED
    162     je      SHORT .ReverseA0andA3fromRegisterIndexInDX
     162    cmp     bl, DEVICE_8BIT_XTIDE_REV2_OLIVETTI
     163    jbe     SHORT .ReverseA0andA3fromRegisterIndexInDX
    163164
    164165    cmp     bl, DEVICE_8BIT_JRIDE_ISA
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm

    r589 r601  
    5555
    5656;--------------------------------------------------------------------
     57; IdePioBlock_ReadFromXtideRev2_Olivetti
     58;   Parameters:
     59;       CX:     Block size in 512 byte sectors
     60;       DX:     IDE Data port address
     61;       ES:DI:  Normalized ptr to buffer to receive data
     62;   Returns:
     63;       Nothing
     64;   Corrupts registers:
     65;       AX, CX
     66;--------------------------------------------------------------------
     67ALIGN JUMP_ALIGN
     68IdePioBlock_ReadFromXtideRev2_Olivetti:
     69    UNROLL_SECTORS_IN_CX_TO_OWORDS
     70ALIGN JUMP_ALIGN
     71.InswLoop:
     72    %rep 8  ; WORDs
     73        XTIDE_MOD_OLIVETTI_INSW
     74    %endrep
     75    loop    .InswLoop
     76    ret
     77
     78
     79;--------------------------------------------------------------------
    5780; 8-bit PIO from a single data port.
    5881;
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeTransfer.asm

    r589 r601  
    328328ALIGN WORD_ALIGN
    329329g_rgfnPioRead:
    330         dw      IdePioBlock_ReadFrom16bitDataPort   ; 0, DEVICE_16BIT_ATA
     330        dw      IdePioBlock_ReadFrom16bitDataPort       ; 0, DEVICE_16BIT_ATA
    331331%ifdef MODULE_ADVANCED_ATA
    332         dw      IdePioBlock_ReadFrom32bitDataPort   ; 1, DEVICE_32BIT_ATA
     332        dw      IdePioBlock_ReadFrom32bitDataPort       ; 1, DEVICE_32BIT_ATA
    333333%elifdef MODULE_8BIT_IDE
    334334        dw      NULL
    335335%endif ; MODULE_ADVANCED_ATA
    336336%ifdef MODULE_8BIT_IDE
    337         dw      IdePioBlock_ReadFrom8bitDataPort    ; 2, DEVICE_8BIT_ATA
    338         dw      IdePioBlock_ReadFromXtideRev1       ; 3, DEVICE_8BIT_XTIDE_REV1
    339         dw      IdePioBlock_ReadFrom16bitDataPort   ; 4, DEVICE_8BIT_XTIDE_REV2
     337        dw      IdePioBlock_ReadFrom8bitDataPort        ; 2, DEVICE_8BIT_ATA
     338        dw      IdePioBlock_ReadFromXtideRev1           ; 3, DEVICE_8BIT_XTIDE_REV1
     339        dw      IdePioBlock_ReadFrom16bitDataPort       ; 4, DEVICE_8BIT_XTIDE_REV2
     340        dw      IdePioBlock_ReadFromXtideRev2_Olivetti  ; 5, DEVICE_8BIT_XTIDE_REV2_OLIVETTI
    340341%ifdef MODULE_8BIT_IDE_ADVANCED
    341         dw      IdePioBlock_ReadFrom8bitDataPort    ; 5, DEVICE_8BIT_XTCF_PIO8
    342         dw      IdePioBlock_ReadFrom16bitDataPort   ; 6, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD
    343         dw      IdePioBlock_ReadFrom16bitDataPort   ; 7, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD
    344         dw      IdeDmaBlock_ReadFromXTCF            ; 8, DEVICE_8BIT_XTCF_DMA
     342        dw      IdePioBlock_ReadFrom8bitDataPort        ; 6, DEVICE_8BIT_XTCF_PIO8
     343        dw      IdePioBlock_ReadFrom16bitDataPort       ; 7, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD
     344        dw      IdePioBlock_ReadFrom16bitDataPort       ; 8, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD
     345        dw      IdeDmaBlock_ReadFromXTCF                ; 9, DEVICE_8BIT_XTCF_DMA
    345346%endif ; MODULE_8BIT_IDE_ADVANCED
    346347%endif ; MODULE_8BIT_IDE
     
    348349
    349350g_rgfnPioWrite:
    350         dw      IdePioBlock_WriteTo16bitDataPort    ; 0, DEVICE_16BIT_ATA
     351        dw      IdePioBlock_WriteTo16bitDataPort        ; 0, DEVICE_16BIT_ATA
    351352%ifdef MODULE_ADVANCED_ATA
    352         dw      IdePioBlock_WriteTo32bitDataPort    ; 1, DEVICE_32BIT_ATA
     353        dw      IdePioBlock_WriteTo32bitDataPort        ; 1, DEVICE_32BIT_ATA
    353354%elifdef MODULE_8BIT_IDE
    354355        dw      NULL
    355356%endif ; MODULE_ADVANCED_ATA
    356357%ifdef MODULE_8BIT_IDE
    357         dw      IdePioBlock_WriteTo8bitDataPort     ; 2, DEVICE_8BIT_ATA
    358         dw      IdePioBlock_WriteToXtideRev1        ; 3, DEVICE_8BIT_XTIDE_REV1
    359         dw      IdePioBlock_WriteToXtideRev2        ; 4, DEVICE_8BIT_XTIDE_REV2
     358        dw      IdePioBlock_WriteTo8bitDataPort         ; 2, DEVICE_8BIT_ATA
     359        dw      IdePioBlock_WriteToXtideRev1            ; 3, DEVICE_8BIT_XTIDE_REV1
     360        dw      IdePioBlock_WriteToXtideRev2            ; 4, DEVICE_8BIT_XTIDE_REV2
     361        dw      IdePioBlock_WriteToXtideRev2            ; 5, DEVICE_8BIT_XTIDE_REV2_OLIVETTI
    360362%ifdef MODULE_8BIT_IDE_ADVANCED
    361         dw      IdePioBlock_WriteTo8bitDataPort     ; 5, DEVICE_8BIT_XTCF_PIO8
    362         dw      IdePioBlock_WriteTo16bitDataPort    ; 6, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD
    363         dw      IdePioBlock_WriteTo16bitDataPort    ; 7, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD
    364         dw      IdeDmaBlock_WriteToXTCF             ; 8, DEVICE_8BIT_XTCF_DMA
     363        dw      IdePioBlock_WriteTo8bitDataPort         ; 6, DEVICE_8BIT_XTCF_PIO8
     364        dw      IdePioBlock_WriteTo16bitDataPort        ; 7, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD
     365        dw      IdePioBlock_WriteTo16bitDataPort        ; 8, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD
     366        dw      IdeDmaBlock_WriteToXTCF                 ; 9, DEVICE_8BIT_XTCF_DMA
    365367%endif ; MODULE_8BIT_IDE_ADVANCED
    366368%endif ; MODULE_8BIT_IDE
  • 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
  • trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialCommand.asm

    r567 r601  
    4343ALIGN JUMP_ALIGN
    4444SerialCommand_OutputWithParameters:
     45    mov     ah, SerialServer_Command_Read
     46    mov     al, [bp+IDEPACK.bCommand]
    4547
    46         mov     ah,SerialServer_Command_Read
    47 
    48         mov     al,[bp+IDEPACK.bCommand]
    49 
    50         cmp     al,20h          ; Read Sectors IDE command
    51         jz      .readOrWrite
    52         inc     ah              ; now SerialServer_Protocol_Write
    53         cmp     al,30h          ; Write Sectors IDE command
    54         jz      .readOrWrite
     48    cmp     al, 20h                         ; Read Sectors IDE command
     49    je      SHORT .readOrWrite
     50    inc     ah                              ; now SerialServer_Protocol_Write
     51    cmp     al, 30h                         ; Write Sectors IDE command
     52    je      SHORT .readOrWrite
    5553
    5654;  all other commands return success
    5755;  including function 0ech which should return drive information, this is handled with the identify functions
    5856;
    59         xor     ah,ah           ;  also clears carry
    60         ret
     57    xor     ah, ah                          ;  also clears carry
     58    ret
    6159
    6260.readOrWrite:
    63         mov     [bp+IDEPACK.bFeatures],ah       ; store protocol command
     61    mov     [bp+IDEPACK.bFeatures], ah      ; store protocol command
    6462%ifdef USE_AT
    65         mov     dh, [bp+IDEPACK.bSectorCount]
     63    mov     dh, [bp+IDEPACK.bSectorCount]
    6664%endif
    67         call    IdeTransfer_NormalizePointerInESSI
     65    call    IdeTransfer_NormalizePointerInESSI
    6866%ifdef USE_AT
    69         jnc     SHORT .PointerNormalizationWasSuccessful
    70         xor     cx, cx          ; Nothing transferred
    71         stc
    72         ret
     67    jnc     SHORT .PointerNormalizationWasSuccessful
     68    xor     cx, cx                          ; Nothing transferred
     69    stc
     70    ret
    7371.PointerNormalizationWasSuccessful:
    7472%endif
    7573
    76         mov     dx, [di+DPT_SERIAL.wSerialPortAndBaud]
    77 
     74    mov     dx, [di+DPT_SERIAL.wSerialPortAndBaud]
    7875; fall through to SerialCommand_FallThroughToSerialServer_SendReceive
    7976
    8077ALIGN JUMP_ALIGN
    8178SerialCommand_FallThroughToSerialServer_SendReceive:
    82 
    8379; fall through to SerialServer_SendReceive
    84 
    8580%include "SerialServer.asm"
    8681
     
    9388ALIGN JUMP_ALIGN
    9489SerialCommand_ReturnError:
    95         stc
    96         ret
     90    stc
     91    ret
    9792
    9893;--------------------------------------------------------------------
     
    155150;     master scan.
    156151;
    157         mov     dx,[cs:bp+IDEVARS.wSerialPortAndBaud]
    158         xor     ax,ax
     152    mov     dx, [cs:bp+IDEVARS.wSerialPortAndBaud]
     153    xor     ax, ax
    159154
    160         push    si
    161         call    FindDPT_ToDSDIforSerialDevice
    162         pop     si
     155    push    si
     156    call    FindDPT_ToDSDIforSerialDevice
     157    pop     si
    163158%ifdef MODULE_SERIAL_FLOPPY
    164         jnc     .founddpt
     159    jnc     SHORT .founddpt
    165160;
    166161; If not found above with FindDPT_ToDSDIforSerialDevice, DI will point to the DPT after the last hard disk DPT
    167162; So, if there was a previously found floppy disk, DI will point to that DPT and we use that value for the slave.
    168163;
    169         cmp     byte [RAMVARS.xlateVars+XLATEVARS.bFlopCntAndFirst], 0
    170         jz      .notfounddpt
     164    cmp     BYTE [RAMVARS.xlateVars+XLATEVARS.bFlopCntAndFirst], 0
     165    je      SHORT .notfounddpt
    171166.founddpt:
    172167%else
    173         jc      .notfounddpt
     168    jc      SHORT .notfounddpt
    174169%endif
    175         mov     ax, [di+DPT_SERIAL.wSerialPortAndBaud]
     170    mov     ax, [di+DPT_SERIAL.wSerialPortAndBaud]
    176171.notfounddpt:
     172    test    bh, FLG_DRVNHEAD_DRV
     173    jz      SHORT .master
    177174
    178         test    bh, FLG_DRVNHEAD_DRV
    179         jz      .master
    180 
    181         test    ax,ax           ; Take care of the case that is different between master and slave.
    182         jz      SerialCommand_ReturnError
     175    test    ax, ax                          ; Take care of the case that is different between master and slave.
     176    jz      SHORT SerialCommand_ReturnError
    183177
    184178; fall-through
    185179.master:
    186         test    dx,dx
    187         jnz     .identifyDeviceInDX
     180    test    dx, dx
     181    jnz     SHORT .identifyDeviceInDX
    188182
    189         xchg    dx, ax          ;  move ax to dx (move previously found serial drive to dx, could be zero)
     183    xchg    dx, ax                          ;  move ax to dx (move previously found serial drive to dx, could be zero)
    190184
    191185.identifyDeviceInDX:
    192 
    193186; fall through to SerialCommand_FallThroughToSerialServerScan_ScanForServer
    194187
    195188ALIGN JUMP_ALIGN
    196189SerialCommand_FallThroughToSerialServerScan_ScanForServer:
    197 
    198190; fall through to SerialServerScan_ScanForServer
    199 
    200191%include "SerialServerScan.asm"
    201192
     
    206197%endif
    207198
    208 
  • trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialDPT.asm

    r567 r601  
    3333;--------------------------------------------------------------------
    3434SerialDPT_Finalize:
    35         mov     ax, [es:si+SerialServer_ATA_wPortAndBaud]
    36         mov     [di+DPT_SERIAL.wSerialPortAndBaud], ax
     35    mov     ax, [es:si+SerialServer_ATA_wPortAndBaud]
     36    mov     [di+DPT_SERIAL.wSerialPortAndBaud], ax
    3737
    3838;
     
    4141; if the floppy support is disabled.
    4242;
    43         mov     al, [es:si+SerialServer_ATA_wDriveFlags]
    44         eSHL_IM al, 1
    45         mov     byte [di+DPT.bFlagsHigh], al
    46 
    47         ret
     43    mov     al, [es:si+SerialServer_ATA_wDriveFlags]
     44    eSHL_IM al, 1
     45    mov     BYTE [di+DPT.bFlagsHigh], al
     46    ret
    4847
    4948%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm

    r599 r601  
    106106    cli
    107107    mov     ax, [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler]
    108     mov     [es:SYSTEM_TIMER_TICK*4], ax
     108    mov     [es:BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4], ax
    109109    mov     ax, [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler+2]
    110     mov     [es:SYSTEM_TIMER_TICK*4+2], ax
     110    mov     [es:BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4+2], ax
    111111    sti
    112112%endif
     
    214214; Switches back to the POST stack, clears the DS and ES registers,
    215215; and either jumps to the MBR (Master Boot Record) that was just read,
    216 ; or calls the ROM's boot routine on interrupt 18.
     216; or calls the ROM's boot routine on interrupt 18h.
    217217;
    218218;   Parameters:
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm

    r596 r601  
    3636;--------------------------------------------------------------------
    3737AdvAtaInit_DetectControllerForIdeBaseInBX:
    38     ; Detect if system has PCI bus. If it does, we can skip VLB detection. This is
     38    ; Detect if system has PCI bus. If it does, we can skip VLB detection. This is a
    3939    ; good thing since detecting Vision QD6580 is dangerous since Intel PIIX4 south bridge
    4040    ; mirrors Interrupt Controller registers from Axh to Bxh. This can lead to faulty
     
    4545    push    bx
    4646    push    di
    47     xor     edi, edi        ; Some BIOSes require this to be set to zero
    48     mov     ax, PCI_INSTALLATION_CHECK
    49     int     BIOS_TIME_PCI_PNP_1Ah
     47;   xor     edi, edi        ; Some BIOSes require this to be set to zero
     48    ; *FIXME* The above instruction is commented away since RBIL says that this
     49    ; only applies to software looking for the protected-mode entry point.
     50    mov     ax, PCI_INSTALLATION_CHECK  ; May corrupt EAX, EBX, ECX, EDX, EDI
     51    int     BIOS_TIME_PCI_PNP_INTERRUPT_1Ah
    5052    pop     di
    5153    pop     bx
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectDrives.asm

    r599 r601  
    9898; Here we might want to replace BIOS configured drives with the ones we detected.
    9999; Primary reason is to support dynamic overlay feature in the future. Second reason
    100 ; is a hack to get Windows 95 load proper IDE drivers.
     100; is a hack to get Windows 95 to load its built-in protected mode IDE driver.
    101101;
    102102; The Windows hack has two parts. First part is to try to alter CMOS address 12h as that
     
    109109
    110110%ifdef USE_AT   ; FLG_ROMVARS_IGNORE_MOTHERBOARD_DRIVES is for AT builds only
    111 
    112     %ifdef MODULE_WIN95_CMOS_HACK
    113         mov     dl, HARD_DISK_TYPES
    114         call    CMOS_ReadFromIndexInDLtoAL
    115         test    al, 0F0h
    116         jnz     SHORT .ClearBdaDriveCount       ; CMOS byte 12h is ready for Windows 95
    117         call    CMOS_Verify10hTo2Dh             ; Can we modify CMOS?
    118         jnz     SHORT .ClearBdaDriveCount       ; Unsupported BIOS, use plan B
    119 
    120         ; Now we can alter CMOS location 12h. Award BIOS locks if we set drive 0 type to Fh
    121         ; (but accept changes to drive type 1). Windows 95 requires that the drive 0 type is
    122         ; non zero and ignores drive 1 type. So if we only set drive 1, then Award BIOS
    123         ; won't give problems but Windows 95 stays in MS-DOS compatibility mode.
    124         ;
    125         ; For Award BIOSes we could set the Drive 0 type to 1 and then clear the BDA drive count.
    126         ; So essentially we could automatically do what user needs to do manually to get Windows 95
    127         ; working on Award BIOSes. However, I think that should be left to do manually since
    128         ; there may be SCSI drives on the system or FLG_ROMVARS_IGNORE_MOTHERBOARD_DRIVES could
    129         ; be intentionally cleared and forcing the dummy drive might cause only trouble.
    130 
    131         ; Try to detect Award BIOS (Seems to work on a tested 128k BIOS so hopefully
    132         ; there will be no need to scan E000h segment)
    133         mov     cx, 65536 - 4
    134         mov     eax, 'Awar'     ; Four characters should be enough
    135         mov     di, 0F000h      ; Scan 64k starting from segment F000h
    136         mov     fs, di          ; No need to preserve FS since we set it to zero soon when we boot
    137         xor     di, di
    138     .ScanNextCharacters:
    139         cmp     [fs:di], eax
    140         je      SHORT .ClearBdaDriveCount   ; Award detected, cannot modify CMOS
    141         inc     di              ; Increment offset by one character (not four)
    142         loop    .ScanNextCharacters
    143 
    144         ; Now it should be safe to write
    145         mov     dl, HARD_DISK_TYPES
    146         mov     al, 0F0h    ; Drive 0 type 16...47 (supposed to be defined elsewhere in the CMOS)
    147         call    CMOS_WriteALtoIndexInDL
    148         call    CMOS_StoreNewChecksumFor10hto2Dh
     111%ifdef MODULE_WIN95_CMOS_HACK
     112    mov     dl, HARD_DISK_TYPES
     113    call    CMOS_ReadFromIndexInDLtoAL
     114    test    al, 0F0h
     115    jnz     SHORT .ClearBdaDriveCount       ; CMOS byte 12h is ready for Windows 95
     116    call    CMOS_Verify10hTo2Dh             ; Can we modify CMOS?
     117    jnz     SHORT .ClearBdaDriveCount       ; Unsupported BIOS, use plan B
     118
     119    ; Now we can alter CMOS location 12h. Award BIOS locks if we set drive 0 type to Fh
     120    ; (but accept changes to drive type 1). Windows 95 requires that the drive 0 type is
     121    ; non zero and ignores drive 1 type. So if we only set drive 1, then Award BIOS
     122    ; won't give problems but Windows 95 stays in MS-DOS compatibility mode.
     123    ;
     124    ; For Award BIOSes we could set the Drive 0 type to 1 and then clear the BDA drive count.
     125    ; So essentially we could automatically do what user needs to do manually to get Windows 95
     126    ; working on Award BIOSes. However, I think that should be left to do manually since
     127    ; there may be SCSI drives on the system or FLG_ROMVARS_IGNORE_MOTHERBOARD_DRIVES could
     128    ; be intentionally cleared and forcing the dummy drive might cause only trouble.
     129
     130    ; Try to detect Award BIOS (Seems to work on a tested 128k BIOS so hopefully
     131    ; there will be no need to scan E000h segment)
     132    mov     cx, 65536 - 4
     133    mov     eax, 'Awar'                     ; Four characters should be enough
     134    mov     di, 0F000h                      ; Scan 64k starting from segment F000h
     135    mov     fs, di                          ; No need to preserve FS since we set it to zero soon when we boot
     136    xor     di, di
     137.ScanNextCharacters:
     138    cmp     [fs:di], eax
     139    je      SHORT .ClearBdaDriveCount       ; Award detected, cannot modify CMOS
     140    inc     di                              ; Increment offset by one character (not four)
     141    loop    .ScanNextCharacters
     142
     143    ; Now it should be safe to write
     144    mov     dl, HARD_DISK_TYPES
     145    mov     al, 0F0h                        ; Drive 0 type 16...47 (supposed to be defined elsewhere in the CMOS)
     146    call    CMOS_WriteALtoIndexInDL
     147    call    CMOS_StoreNewChecksumFor10hto2Dh
    149148.ClearBdaDriveCount:
    150     %endif  ; MODULE_WIN95_CMOS_HACK
     149%endif ; MODULE_WIN95_CMOS_HACK
    151150
    152151    test    BYTE [cs:ROMVARS.wFlags], FLG_ROMVARS_IGNORE_MOTHERBOARD_DRIVES
    153152    jz      SHORT .ContinueInitialization
    154     mov     BYTE [es:BDA.bHDCount], 0   ; Set hard disk count to zero
     153    mov     BYTE [es:BDA.bHDCount], 0       ; Set hard disk count to zero
    155154.ContinueInitialization:
    156 %endif
    157 
    158     mov     cx, [RAMVARS.wDrvCntAndFlopCnt]     ; Our count of hard disks
     155%endif ; USE_AT
     156
     157    mov     cx, [RAMVARS.wDrvCntAndFlopCnt] ; Our count of hard disks
    159158    mov     al, [es:BDA.bHDCount]
    160     add     [es:BDA.bHDCount], cl       ; Add our drives to the system count
    161     or      al, 80h                     ; Or in hard disk flag
    162     mov     [RAMVARS.bFirstDrv], al     ; Store first drive number
     159    add     [es:BDA.bHDCount], cl           ; Add our drives to the system count
     160    or      al, 80h                         ; Or in hard disk flag
     161    mov     [RAMVARS.bFirstDrv], al         ; Store first drive number
    163162
    164163.AddFloppies:
     
    170169    dec     ch
    171170    mov     al, ch
    172     js      .NoFloppies                     ; if no drives are present, we store 0ffh
     171    js      SHORT .NoFloppies               ; If no drives are present, we store 0FFh
    173172
    174173    call    FloppyDrive_GetCountFromBIOS_or_BDA
     
    242241;--------------------------------------------------------------------
    243242.ReadAtaInfoFromHardDisk:
    244     mov     si, BOOTVARS.rgbAtaInfo     ; ES:SI now points to ATA info location
     243    mov     si, BOOTVARS.rgbAtaInfo         ; ES:SI now points to ATA info location
    245244    push    es
    246245    push    si
     
    255254    ; Fall to .ReadAtapiInfoFromDrive
    256255
    257 .ReadAtapiInfoFromDrive:                ; Not yet implemented
    258     ;call   ReadAtapiInfoFromDrive      ; Assume CD-ROM
     256.ReadAtapiInfoFromDrive:                    ; Not yet implemented
     257    ;call   ReadAtapiInfoFromDrive          ; Assume CD-ROM
    259258    ;jnc    SHORT _CreateBiosTablesForCDROM
    260259
  • trunk/XTIDE_Universal_BIOS/Src/Menus/BootMenu/BootMenuPrintCfg.asm

    r592 r601  
    44;
    55; Included by BootMenuPrint.asm, this routine is to be inserted into
    6 ; BootMenuPrint_HardDiskRefreshInformation.
     6; BootMenuPrint_RefreshInformation.
    77;
    88
     
    2626SECTION .text
    2727
    28 ;;; fall-into from BootMenuPrint_HardDiskRefreshInformation.
     28;;; fall-into from BootMenuPrint_RefreshInformation.
    2929
    3030;--------------------------------------------------------------------
     
    3232; Cursor is set to configuration header string position.
    3333;
    34 ; BootMenuPrintCfg_ForOurDrive
     34; .BootMenuPrintCfg_ForOurDrive
    3535;   Parameters:
    3636;       DS:DI:      Pointer to DPT
     
    3838;       Nothing
    3939;   Corrupts registers:
    40 ;       AX, BX, CX, DX
     40;       AX, BX, DX
    4141;--------------------------------------------------------------------
    4242.BootMenuPrintCfg_ForOurDrive:
    43     eMOVZX  ax, [di+DPT.bIdevarsOffset]
    44     xchg    bx, ax                      ; CS:BX now points to IDEVARS
    4543    ; Fall to .PushAddressingMode
    4644
     
    4947;   Parameters:
    5048;       DS:DI:  Ptr to DPT
    51 ;       CS:BX:  Ptr to IDEVARS
    5249;   Returns:
    5350;       Nothing (falls to next push below)
    5451;   Corrupts registers:
    55 ;       AX, CX, DX
     52;       AX, BX, DX
    5653;--------------------------------------------------------------------
    5754.PushAddressingMode:
     
    6663    imul    ax, g_szAddressingModes_Displacement << (8-TRANSLATEMODE_FIELD_POSITION)
    6764%else
    68     mov     cx, g_szAddressingModes_Displacement << (8-TRANSLATEMODE_FIELD_POSITION)
    69     mul     cx
     65    mov     bx, g_szAddressingModes_Displacement << (8-TRANSLATEMODE_FIELD_POSITION)
     66    mul     bx
    7067%endif
    7168    xchg    al, ah      ; AL = always zero after above multiplication
     
    7875;   Parameters:
    7976;       DS:DI:  Ptr to DPT
    80 ;       CS:BX:  Ptr to IDEVARS
    8177;   Returns:
    8278;       Nothing (falls to next push below)
     
    9793;   Parameters:
    9894;       DS:DI:  Ptr to DPT
    99 ;       CS:BX:  Ptr to IDEVARS
    10095;   Returns:
    10196;       Nothing (falls to next push below)
    10297;   Corrupts registers:
    103 ;       AX
     98;       AX, BX
    10499;--------------------------------------------------------------------
    105100.PushDeviceType:
     101    call    AccessDPT_GetIdevarsToCSBX
    106102%ifndef MODULE_SERIAL
    107103    mov     al, g_szDeviceTypeValues_Displacement
     
    155151;       Nothing (falls to next push below)
    156152;   Corrupts registers:
    157 ;       AX, BX, DX, ES
     153;       AL
    158154;--------------------------------------------------------------------
    159155.PushResetStatus:
     
    161157    push    ax
    162158
    163 ;;; fall-out to BootMenuPrint_HardDiskRefreshInformation.
     159;;; fall-out to BootMenuPrint_RefreshInformation.
  • trunk/XTIDE_Universal_BIOS/Src/Menus/HotkeyBar.asm

    r600 r601  
    3333;       Nothing
    3434;   Corrupts registers:
    35 ;       AX, CX, DX, SI, DI
    36 ;--------------------------------------------------------------------
     35;       Nothing
     36;--------------------------------------------------------------------
     37ALIGN JUMP_ALIGN
    3738HotkeyBar_TimerTickHandler:
    3839    push    es
     
    5657    ; Call previous handler
    5758    pushf
    58     call far [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler]
     59    call    FAR [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler]
    5960
    6061    ; Update Hotkeybar (process key input and draw) every fourth tick
     
    9899    mov     BYTE [RAMVARS.bTimeoutTicksLeft], 0
    99100.ContinueDrawing:
    100    
    101101    ; Fall to HotkeyBar_DrawToTopOfScreen
    102102
     
    141141
    142142    ; Clear CH if floppy drive is selected for boot
     143%if 0 ; Not needed until more flags added
     144    mov     ch, FLG_HOTKEY_HD_FIRST
     145    and     ch, [es:BOOTVARS.hotkeyVars+HOTKEYVARS.bFlags]
     146%else
    143147    mov     ch, [es:BOOTVARS.hotkeyVars+HOTKEYVARS.bFlags]
    144     ;and        ch, FLG_HOTKEY_HD_FIRST; Not needed until more flags added
     148%endif
    145149    call    FormatDriveHotkeyString
    146150
     
    428432
    429433    ; Store system 1Ch Timer Tick handler and install our hotkeybar handler
    430     mov     ax, [SYSTEM_TIMER_TICK*4]
     434    mov     ax, [BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4]
    431435    mov     [BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler], ax
    432     mov     ax, [SYSTEM_TIMER_TICK*4+2]
     436    mov     ax, [BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4+2]
    433437    mov     [BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler+2], ax
    434     mov     al, SYSTEM_TIMER_TICK
     438    mov     al, BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch
    435439    mov     si, HotkeyBar_TimerTickHandler
    436440    call    Interrupts_InstallHandlerToVectorInALFromCSSI
  • trunk/XTIDE_Universal_BIOS/Src/Strings.asm

    r589 r601  
    135135
    136136g_szDeviceTypeValues:
    137 g_szDeviceTypeValues_16bit:         db  " 16",NULL
     137g_szDeviceTypeValues_16bit:             db  " 16",NULL
    138138%ifdef MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
    139 g_szDeviceTypeValues_32bit:         db  " 32",NULL
     139g_szDeviceTypeValues_32bit:             db  " 32",NULL
    140140%ifdef MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
    141 g_szDeviceTypeValues_8bit:          db  "  8",NULL
    142 g_szDeviceTypeValues_XTIDEr1:       db  "D8 ",NULL  ; Dual 8-bit
    143 g_szDeviceTypeValues_XTIDEr2:       db  "X8 ",NULL  ; A0<->A3 swapped 8-bit
     141g_szDeviceTypeValues_8bit:              db  "  8",NULL
     142g_szDeviceTypeValues_XTIDEr1:           db  "D8 ",NULL  ; Dual 8-bit
     143g_szDeviceTypeValues_XTIDEr2:           db  "X8 ",NULL  ; A0<->A3 swapped 8-bit
     144g_szDeviceTypeValues_XTIDEr2_Olivetti:  db  "X8O",NULL  ; Same as above but in Olivetti M24 and derivatives
    144145%ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
    145 g_szDeviceTypeValues_XTCFpio8:      db  "T8 ",NULL  ; True 8-bit
    146 g_szDeviceTypeValues_XTCFpio8BIU:   db  "T8B",NULL
    147 g_szDeviceTypeValues_XTCFpio16BIU:  db  "16B",NULL
    148 g_szDeviceTypeValues_XTCFdma:       db  "8MA",NULL  ; DMA 8-bit
    149 g_szDeviceTypeValues_JrIde:         db  "M8 ",NULL  ; Memory Mapped 8-bit
    150 g_szDeviceTypeValues_ADP50L:        db  "M8 ",NULL  ; Memory Mapped 8-bit
     146g_szDeviceTypeValues_XTCFpio8:          db  "T8 ",NULL  ; True 8-bit
     147g_szDeviceTypeValues_XTCFpio8BIU:       db  "T8B",NULL
     148g_szDeviceTypeValues_XTCFpio16BIU:      db  "16B",NULL
     149g_szDeviceTypeValues_XTCFdma:           db  "8MA",NULL  ; DMA 8-bit
     150g_szDeviceTypeValues_JrIde:             db  "M8 ",NULL  ; Memory Mapped 8-bit
     151g_szDeviceTypeValues_ADP50L:            db  "M8 ",NULL  ; Memory Mapped 8-bit
    151152%ifdef MODULE_SERIAL
    152 g_szDeviceTypeValues_Serial:        db  "SER",NULL
     153g_szDeviceTypeValues_Serial:            db  "SER",NULL
    153154%endif ; MODULE_SERIAL
    154155%endif ; MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
     
    183184        %error "g_szDeviceTypeValues Displacement Incorrect 5"
    184185    %endif
     186    %if g_szDeviceTypeValues_XTIDEr2_Olivetti <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement
     187        %error "g_szDeviceTypeValues Displacement Incorrect 6"
     188    %endif
    185189
    186190    %ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
    187191
    188     %if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement
    189         %error "g_szDeviceTypeValues Displacement Incorrect 6"
     192    %if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2_Olivetti + g_szDeviceTypeValues_Displacement
     193        %error "g_szDeviceTypeValues Displacement Incorrect 7"
    190194    %endif
    191195    %if g_szDeviceTypeValues_XTCFpio8BIU <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement
    192         %error "g_szDeviceTypeValues Displacement Incorrect 7"
     196        %error "g_szDeviceTypeValues Displacement Incorrect 8"
    193197    %endif
    194198    %if g_szDeviceTypeValues_XTCFpio16BIU <> g_szDeviceTypeValues_XTCFpio8BIU + g_szDeviceTypeValues_Displacement
    195         %error "g_szDeviceTypeValues Displacement Incorrect 8"
     199        %error "g_szDeviceTypeValues Displacement Incorrect 9"
    196200    %endif
    197201    %if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio16BIU + g_szDeviceTypeValues_Displacement
    198         %error "g_szDeviceTypeValues Displacement Incorrect 9"
     202        %error "g_szDeviceTypeValues Displacement Incorrect 10"
    199203    %endif
    200204    %if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement
    201         %error "g_szDeviceTypeValues Displacement Incorrect 10"
     205        %error "g_szDeviceTypeValues Displacement Incorrect 11"
    202206    %endif
    203207    %if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
    204         %error "g_szDeviceTypeValues Displacement Incorrect 11"
     208        %error "g_szDeviceTypeValues Displacement Incorrect 12"
    205209    %endif
    206210
     
    208212
    209213    %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
    210         %error "g_szDeviceTypeValues Displacement Incorrect 12"
     214        %error "g_szDeviceTypeValues Displacement Incorrect 13"
    211215    %endif
    212216
  • trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm

    r589 r601  
    253253
    254254g_szDeviceTypeValues:
    255 g_szDeviceTypeValues_16bit:         ; db    " 16",NULL
    256                                     ; db     20h,  31h,  36h,  00h    ; uncompressed
    257                                       db     20h,  2bh,  0fh          ; compressed
     255g_szDeviceTypeValues_16bit:             ; db    " 16",NULL
     256                                        ; db     20h,  31h,  36h,  00h    ; uncompressed
     257                                          db     20h,  2bh,  0fh          ; compressed
    258258
    259259%ifdef MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
    260 g_szDeviceTypeValues_32bit:         ; db    " 32",NULL
    261                                     ; db     20h,  33h,  32h,  00h    ; uncompressed
    262                                       db     20h,  2dh,  0ch          ; compressed
     260g_szDeviceTypeValues_32bit:             ; db    " 32",NULL
     261                                        ; db     20h,  33h,  32h,  00h    ; uncompressed
     262                                          db     20h,  2dh,  0ch          ; compressed
    263263
    264264%ifdef MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
    265 g_szDeviceTypeValues_8bit:          ; db    "  8",NULL
    266                                     ; db     20h,  20h,  38h,  00h    ; uncompressed
    267                                       db     20h,  20h,  10h          ; compressed
    268 
    269 g_szDeviceTypeValues_XTIDEr1:       ; db    "D8 ",NULL  ; Dual 8-bit
    270                                     ; db     44h,  38h,  20h,  00h    ; uncompressed
    271                                       db     4ah,  30h,  00h          ; compressed
    272 
    273 g_szDeviceTypeValues_XTIDEr2:       ; db    "X8 ",NULL  ; A0<->A3 swapped 8-bit
    274                                     ; db     58h,  38h,  20h,  00h    ; uncompressed
    275                                       db     5eh,  30h,  00h          ; compressed
     265g_szDeviceTypeValues_8bit:              ; db    "  8",NULL
     266                                        ; db     20h,  20h,  38h,  00h    ; uncompressed
     267                                          db     20h,  20h,  10h          ; compressed
     268
     269g_szDeviceTypeValues_XTIDEr1:           ; db    "D8 ",NULL  ; Dual 8-bit
     270                                        ; db     44h,  38h,  20h,  00h    ; uncompressed
     271                                          db     4ah,  30h,  00h          ; compressed
     272
     273g_szDeviceTypeValues_XTIDEr2:           ; db    "X8 ",NULL  ; A0<->A3 swapped 8-bit
     274                                        ; db     58h,  38h,  20h,  00h    ; uncompressed
     275                                          db     5eh,  30h,  00h          ; compressed
     276
     277g_szDeviceTypeValues_XTIDEr2_Olivetti:  ; db    "X8O",NULL  ; Same as above but in Olivetti M24 and derivatives
     278                                        ; db     58h,  38h,  4fh,  00h    ; uncompressed
     279                                          db     5eh,  30h,  95h          ; compressed
    276280
    277281%ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
    278 g_szDeviceTypeValues_XTCFpio8:      ; db    "T8 ",NULL  ; True 8-bit
    279                                     ; db     54h,  38h,  20h,  00h    ; uncompressed
    280                                       db     5ah,  30h,  00h          ; compressed
    281 
    282 g_szDeviceTypeValues_XTCFpio8BIU:   ; db    "T8B",NULL
    283                                     ; db     54h,  38h,  42h,  00h    ; uncompressed
    284                                       db     5ah,  30h,  88h          ; compressed
    285 
    286 g_szDeviceTypeValues_XTCFpio16BIU:  ; db    "16B",NULL
    287                                     ; db     31h,  36h,  42h,  00h    ; uncompressed
    288                                       db     2bh,  2fh,  88h          ; compressed
    289 
    290 g_szDeviceTypeValues_XTCFdma:       ; db    "8MA",NULL  ; DMA 8-bit
    291                                     ; db     38h,  4dh,  41h,  00h    ; uncompressed
    292                                       db     30h,  53h,  87h          ; compressed
    293 
    294 g_szDeviceTypeValues_JrIde:         ; db    "M8 ",NULL  ; Memory Mapped 8-bit
    295                                     ; db     4dh,  38h,  20h,  00h    ; uncompressed
    296                                       db     53h,  30h,  00h          ; compressed
    297 
    298 g_szDeviceTypeValues_ADP50L:        ; db    "M8 ",NULL  ; Memory Mapped 8-bit
    299                                     ; db     4dh,  38h,  20h,  00h    ; uncompressed
    300                                       db     53h,  30h,  00h          ; compressed
     282g_szDeviceTypeValues_XTCFpio8:          ; db    "T8 ",NULL  ; True 8-bit
     283                                        ; db     54h,  38h,  20h,  00h    ; uncompressed
     284                                          db     5ah,  30h,  00h          ; compressed
     285
     286g_szDeviceTypeValues_XTCFpio8BIU:       ; db    "T8B",NULL
     287                                        ; db     54h,  38h,  42h,  00h    ; uncompressed
     288                                          db     5ah,  30h,  88h          ; compressed
     289
     290g_szDeviceTypeValues_XTCFpio16BIU:      ; db    "16B",NULL
     291                                        ; db     31h,  36h,  42h,  00h    ; uncompressed
     292                                          db     2bh,  2fh,  88h          ; compressed
     293
     294g_szDeviceTypeValues_XTCFdma:           ; db    "8MA",NULL  ; DMA 8-bit
     295                                        ; db     38h,  4dh,  41h,  00h    ; uncompressed
     296                                          db     30h,  53h,  87h          ; compressed
     297
     298g_szDeviceTypeValues_JrIde:             ; db    "M8 ",NULL  ; Memory Mapped 8-bit
     299                                        ; db     4dh,  38h,  20h,  00h    ; uncompressed
     300                                          db     53h,  30h,  00h          ; compressed
     301
     302g_szDeviceTypeValues_ADP50L:            ; db    "M8 ",NULL  ; Memory Mapped 8-bit
     303                                        ; db     4dh,  38h,  20h,  00h    ; uncompressed
     304                                          db     53h,  30h,  00h          ; compressed
    301305
    302306%ifdef MODULE_SERIAL
    303 g_szDeviceTypeValues_Serial:        ; db    "SER",NULL
    304                                     ; db     53h,  45h,  52h,  00h    ; uncompressed
    305                                       db     59h,  4bh,  98h          ; compressed
     307g_szDeviceTypeValues_Serial:            ; db    "SER",NULL
     308                                        ; db     53h,  45h,  52h,  00h    ; uncompressed
     309                                          db     59h,  4bh,  98h          ; compressed
    306310
    307311%endif ; MODULE_SERIAL
     
    337341%error "g_szDeviceTypeValues Displacement Incorrect 5"
    338342%endif
     343%if g_szDeviceTypeValues_XTIDEr2_Olivetti <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement
     344%error "g_szDeviceTypeValues Displacement Incorrect 6"
     345%endif
    339346
    340347%ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
    341348
    342 %if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement
    343 %error "g_szDeviceTypeValues Displacement Incorrect 6"
     349%if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2_Olivetti + g_szDeviceTypeValues_Displacement
     350%error "g_szDeviceTypeValues Displacement Incorrect 7"
    344351%endif
    345352%if g_szDeviceTypeValues_XTCFpio8BIU <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement
    346 %error "g_szDeviceTypeValues Displacement Incorrect 7"
     353%error "g_szDeviceTypeValues Displacement Incorrect 8"
    347354%endif
    348355%if g_szDeviceTypeValues_XTCFpio16BIU <> g_szDeviceTypeValues_XTCFpio8BIU + g_szDeviceTypeValues_Displacement
    349 %error "g_szDeviceTypeValues Displacement Incorrect 8"
     356%error "g_szDeviceTypeValues Displacement Incorrect 9"
    350357%endif
    351358%if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio16BIU + g_szDeviceTypeValues_Displacement
    352 %error "g_szDeviceTypeValues Displacement Incorrect 9"
     359%error "g_szDeviceTypeValues Displacement Incorrect 10"
    353360%endif
    354361%if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement
    355 %error "g_szDeviceTypeValues Displacement Incorrect 10"
     362%error "g_szDeviceTypeValues Displacement Incorrect 11"
    356363%endif
    357364%if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
    358 %error "g_szDeviceTypeValues Displacement Incorrect 11"
     365%error "g_szDeviceTypeValues Displacement Incorrect 12"
    359366%endif
    360367
     
    362369
    363370%if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
    364 %error "g_szDeviceTypeValues Displacement Incorrect 12"
     371%error "g_szDeviceTypeValues Displacement Incorrect 13"
    365372%endif
    366373
     
    594601
    595602;; translated usage stats
    596 ;; 34:3
     603;; 54:2
     604;; 172:2
     605;; 171:2
     606;; 47:2
     607;; 53:2
     608;; 175:1
     609;; 56:9
     610;; 45:2
     611;; 50:2
     612;; 200:1
     613;; 33:1
     614;; 51:3
    597615;; 179:8
    598616;; 46:3
     617;; 48:2
     618;; 34:3
     619;; 49:2
     620;; 181:1
    599621;; 44:1
    600 ;; 200:1
    601 ;; 48:2
    602 ;; 175:1
    603 ;; 171:2
    604 ;; 51:3
    605 ;; 50:2
    606 ;; 33:1
    607 ;; 53:2
    608 ;; 45:2
    609 ;; 47:2
    610 ;; 172:2
    611 ;; 56:8
    612622;; 32:34
    613 ;; 181:1
    614 ;; 54:2
    615 ;; 49:2
    616623;; total translated: 20
    617624
    618625;; format usage stats
    619 ;; 5-x:1
     626;; 5-u:2
     627;; z:2
     628;; nl:12
     629;; x:5
     630;; A:4
    620631;; 2-u:1
    621632;; s:14
    622 ;; nl:12
    623 ;; A:4
    624 ;; 5-u:2
    625 ;; x:5
    626633;; 2-I:1
    627 ;; z:2
     634;; 5-x:1
    628635;; u:6
    629636;; c:13
     
    652659;; 77,M:7
    653660;; 78,N:2
    654 ;; 79,O:2
     661;; 79,O:3
    655662;; 80,P:1
    656663;; 81,Q:1
     
    661668;; 86,V:
    662669;; 87,W:
    663 ;; 88,X:1
     670;; 88,X:2
    664671;; 89,Y:
    665672;; 90,Z:
Note: See TracChangeset for help on using the changeset viewer.