Changeset 601 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src
- Timestamp:
- Feb 14, 2019, 7:38:08 PM (6 years ago)
- Location:
- trunk/XTIDE_Universal_BIOS/Src
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIO.asm
r558 r601 59 59 60 60 %ifdef MODULE_8BIT_IDE_ADVANCED 61 je SHORT .ReverseA0andA3fromRegisterIndexInDX 61 cmp al, DEVICE_8BIT_XTIDE_REV2_OLIVETTI 62 jbe SHORT .ReverseA0andA3fromRegisterIndexInDX 62 63 63 64 eSHL_IM dx, 1 ; ADP50L and XT-CF … … 99 100 IdeIO_OutputALtoIdeControlBlockRegisterInDL: 100 101 xor dh, dh ; IDE Register index now in DX 101 102 102 mov bl, [di+DPT_ATA.bDevice] 103 103 cmp bl, DEVICE_8BIT_XTIDE_REV2 … … 105 105 106 106 %ifdef MODULE_8BIT_IDE_ADVANCED 107 je SHORT .ReverseA0andA3fromRegisterIndexInDX 107 cmp bl, DEVICE_8BIT_XTIDE_REV2_OLIVETTI 108 jbe SHORT .ReverseA0andA3fromRegisterIndexInDX 108 109 109 110 ; At this point remaining controllers (JRIDE, XTCF and ADP50L) all have a control … … 154 155 IdeIO_OutputALtoIdeRegisterInDL: 155 156 xor dh, dh ; IDE Register index now in DX 156 157 157 mov bl, [di+DPT_ATA.bDevice] 158 158 cmp bl, DEVICE_8BIT_XTIDE_REV2 … … 160 160 161 161 %ifdef MODULE_8BIT_IDE_ADVANCED 162 je SHORT .ReverseA0andA3fromRegisterIndexInDX 162 cmp bl, DEVICE_8BIT_XTIDE_REV2_OLIVETTI 163 jbe SHORT .ReverseA0andA3fromRegisterIndexInDX 163 164 164 165 cmp bl, DEVICE_8BIT_JRIDE_ISA -
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm
r589 r601 55 55 56 56 ;-------------------------------------------------------------------- 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 ;-------------------------------------------------------------------- 67 ALIGN JUMP_ALIGN 68 IdePioBlock_ReadFromXtideRev2_Olivetti: 69 UNROLL_SECTORS_IN_CX_TO_OWORDS 70 ALIGN JUMP_ALIGN 71 .InswLoop: 72 %rep 8 ; WORDs 73 XTIDE_MOD_OLIVETTI_INSW 74 %endrep 75 loop .InswLoop 76 ret 77 78 79 ;-------------------------------------------------------------------- 57 80 ; 8-bit PIO from a single data port. 58 81 ; -
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeTransfer.asm
r589 r601 328 328 ALIGN WORD_ALIGN 329 329 g_rgfnPioRead: 330 dw IdePioBlock_ReadFrom16bitDataPort ; 0, DEVICE_16BIT_ATA330 dw IdePioBlock_ReadFrom16bitDataPort ; 0, DEVICE_16BIT_ATA 331 331 %ifdef MODULE_ADVANCED_ATA 332 dw IdePioBlock_ReadFrom32bitDataPort ; 1, DEVICE_32BIT_ATA332 dw IdePioBlock_ReadFrom32bitDataPort ; 1, DEVICE_32BIT_ATA 333 333 %elifdef MODULE_8BIT_IDE 334 334 dw NULL 335 335 %endif ; MODULE_ADVANCED_ATA 336 336 %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 340 341 %ifdef MODULE_8BIT_IDE_ADVANCED 341 dw IdePioBlock_ReadFrom8bitDataPort ; 5, DEVICE_8BIT_XTCF_PIO8342 dw IdePioBlock_ReadFrom16bitDataPort ; 6, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD343 dw IdePioBlock_ReadFrom16bitDataPort ; 7, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD344 dw IdeDmaBlock_ReadFromXTCF ; 8, DEVICE_8BIT_XTCF_DMA342 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 345 346 %endif ; MODULE_8BIT_IDE_ADVANCED 346 347 %endif ; MODULE_8BIT_IDE … … 348 349 349 350 g_rgfnPioWrite: 350 dw IdePioBlock_WriteTo16bitDataPort ; 0, DEVICE_16BIT_ATA351 dw IdePioBlock_WriteTo16bitDataPort ; 0, DEVICE_16BIT_ATA 351 352 %ifdef MODULE_ADVANCED_ATA 352 dw IdePioBlock_WriteTo32bitDataPort ; 1, DEVICE_32BIT_ATA353 dw IdePioBlock_WriteTo32bitDataPort ; 1, DEVICE_32BIT_ATA 353 354 %elifdef MODULE_8BIT_IDE 354 355 dw NULL 355 356 %endif ; MODULE_ADVANCED_ATA 356 357 %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 360 362 %ifdef MODULE_8BIT_IDE_ADVANCED 361 dw IdePioBlock_WriteTo8bitDataPort ; 5, DEVICE_8BIT_XTCF_PIO8362 dw IdePioBlock_WriteTo16bitDataPort ; 6, DEVICE_8BIT_XTCF_PIO8_WITH_BIU_OFFLOAD363 dw IdePioBlock_WriteTo16bitDataPort ; 7, DEVICE_8BIT_XTCF_PIO16_WITH_BIU_OFFLOAD364 dw IdeDmaBlock_WriteToXTCF ; 8, DEVICE_8BIT_XTCF_DMA363 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 365 367 %endif ; MODULE_8BIT_IDE_ADVANCED 366 368 %endif ; MODULE_8BIT_IDE -
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/JrIdeTransfer.asm
r592 r601 100 100 jc SHORT ReturnWithMemoryIOtransferErrorInAH 101 101 102 mov cx, [bp+MEMPIOVARS.wSectorsInBlock] ; Clears CH103 cmp [bp+MEMPIOVARS.bSectorsLeft], cl102 mov dx, [bp+MEMPIOVARS.wSectorsInBlock] ; Clears DH 103 cmp [bp+MEMPIOVARS.bSectorsLeft], dl 104 104 jbe SHORT .ReadLastBlockFromDrive 105 105 … … 119 119 ; transferred, there will be a wait for next block but DRQ is never 120 120 ; set since all is transferred! Then we get timeout error. 121 mov cx, [bp+MEMPIOVARS.wSectorsInBlock]122 sub [bp+MEMPIOVARS.bSectorsLeft], cl123 add [bp+MEMPIOVARS.bSectorsDone], cl124 cmp [bp+MEMPIOVARS.bSectorsLeft], cl121 mov dx, [bp+MEMPIOVARS.wSectorsInBlock] 122 sub [bp+MEMPIOVARS.bSectorsLeft], dl 123 add [bp+MEMPIOVARS.bSectorsDone], dl 124 cmp [bp+MEMPIOVARS.bSectorsLeft], dl 125 125 ja SHORT .ReadNextBlockFromDrive 126 126 127 127 ALIGN JUMP_ALIGN 128 128 .ReadLastBlockFromDrive: 129 mov cl, [bp+MEMPIOVARS.bSectorsLeft]130 push cx129 mov dl, [bp+MEMPIOVARS.bSectorsLeft] 130 push dx 131 131 call ReadSingleBlockFromSectorAccessWindowInDSSItoESDI 132 132 … … 181 181 jc SHORT ReturnWithMemoryIOtransferErrorInAH 182 182 183 mov cx, [bp+MEMPIOVARS.wSectorsInBlock]184 cmp [bp+MEMPIOVARS.bSectorsLeft], cl183 mov dx, [bp+MEMPIOVARS.wSectorsInBlock] 184 cmp [bp+MEMPIOVARS.bSectorsLeft], dl 185 185 jbe SHORT .WriteLastBlockToDrive 186 186 … … 192 192 193 193 ; Increment number of successfully written WORDs 194 mov cx, [bp+MEMPIOVARS.wSectorsInBlock]195 sub [bp+MEMPIOVARS.bSectorsLeft], cl196 add [bp+MEMPIOVARS.bSectorsDone], cl197 cmp [bp+MEMPIOVARS.bSectorsLeft], cl194 mov dx, [bp+MEMPIOVARS.wSectorsInBlock] 195 sub [bp+MEMPIOVARS.bSectorsLeft], dl 196 add [bp+MEMPIOVARS.bSectorsDone], dl 197 cmp [bp+MEMPIOVARS.bSectorsLeft], dl 198 198 ja SHORT .WriteNextBlockToDrive 199 199 200 200 ALIGN JUMP_ALIGN 201 201 .WriteLastBlockToDrive: 202 mov cl, [bp+MEMPIOVARS.bSectorsLeft]203 push cx202 mov dl, [bp+MEMPIOVARS.bSectorsLeft] 203 push dx 204 204 ePUSH_T bx, CheckErrorsAfterTransferringLastMemoryMappedBlock 205 205 ; Fall to WriteSingleBlockFromDSSIToSectorAccessWindowInESDI … … 208 208 ; WriteSingleBlockFromDSSIToSectorAccessWindowInESDI 209 209 ; Parameters: 210 ; CX: Number of sectors in block210 ; DX: Number of sectors in block 211 211 ; DS:SI: Normalized ptr to source buffer 212 212 ; ES:DI: Ptr to Sector Access Window … … 220 220 WriteSingleBlockFromDSSIToSectorAccessWindowInESDI: 221 221 mov bx, di 222 mov dx, cx223 222 xor cx, cx 224 223 ALIGN JUMP_ALIGN … … 235 234 ; ReadSingleBlockFromSectorAccessWindowInDSSItoESDI 236 235 ; Parameters: 237 ; CX Number of sectors in full block or sectors in last partialblock238 ; 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 240 239 ; Returns: 241 240 ; CX, DX: Zero … … 247 246 ReadSingleBlockFromSectorAccessWindowInDSSItoESDI: 248 247 mov bx, si 249 mov dx, cx250 248 xor cx, cx 251 249 ALIGN JUMP_ALIGN -
trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialCommand.asm
r567 r601 43 43 ALIGN JUMP_ALIGN 44 44 SerialCommand_OutputWithParameters: 45 mov ah, SerialServer_Command_Read 46 mov al, [bp+IDEPACK.bCommand] 45 47 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 55 53 56 54 ; all other commands return success 57 55 ; including function 0ech which should return drive information, this is handled with the identify functions 58 56 ; 59 xor ah,ah; also clears carry60 57 xor ah, ah ; also clears carry 58 ret 61 59 62 60 .readOrWrite: 63 mov [bp+IDEPACK.bFeatures],ah ; store protocol command61 mov [bp+IDEPACK.bFeatures], ah ; store protocol command 64 62 %ifdef USE_AT 65 63 mov dh, [bp+IDEPACK.bSectorCount] 66 64 %endif 67 65 call IdeTransfer_NormalizePointerInESSI 68 66 %ifdef USE_AT 69 70 xor cx, cx; Nothing transferred71 72 67 jnc SHORT .PointerNormalizationWasSuccessful 68 xor cx, cx ; Nothing transferred 69 stc 70 ret 73 71 .PointerNormalizationWasSuccessful: 74 72 %endif 75 73 76 mov dx, [di+DPT_SERIAL.wSerialPortAndBaud] 77 74 mov dx, [di+DPT_SERIAL.wSerialPortAndBaud] 78 75 ; fall through to SerialCommand_FallThroughToSerialServer_SendReceive 79 76 80 77 ALIGN JUMP_ALIGN 81 78 SerialCommand_FallThroughToSerialServer_SendReceive: 82 83 79 ; fall through to SerialServer_SendReceive 84 85 80 %include "SerialServer.asm" 86 81 … … 93 88 ALIGN JUMP_ALIGN 94 89 SerialCommand_ReturnError: 95 96 90 stc 91 ret 97 92 98 93 ;-------------------------------------------------------------------- … … 155 150 ; master scan. 156 151 ; 157 mov dx,[cs:bp+IDEVARS.wSerialPortAndBaud]158 xor ax,ax152 mov dx, [cs:bp+IDEVARS.wSerialPortAndBaud] 153 xor ax, ax 159 154 160 161 162 155 push si 156 call FindDPT_ToDSDIforSerialDevice 157 pop si 163 158 %ifdef MODULE_SERIAL_FLOPPY 164 jnc.founddpt159 jnc SHORT .founddpt 165 160 ; 166 161 ; If not found above with FindDPT_ToDSDIforSerialDevice, DI will point to the DPT after the last hard disk DPT 167 162 ; So, if there was a previously found floppy disk, DI will point to that DPT and we use that value for the slave. 168 163 ; 169 cmp byte[RAMVARS.xlateVars+XLATEVARS.bFlopCntAndFirst], 0170 jz.notfounddpt164 cmp BYTE [RAMVARS.xlateVars+XLATEVARS.bFlopCntAndFirst], 0 165 je SHORT .notfounddpt 171 166 .founddpt: 172 167 %else 173 jc.notfounddpt168 jc SHORT .notfounddpt 174 169 %endif 175 170 mov ax, [di+DPT_SERIAL.wSerialPortAndBaud] 176 171 .notfounddpt: 172 test bh, FLG_DRVNHEAD_DRV 173 jz SHORT .master 177 174 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 183 177 184 178 ; fall-through 185 179 .master: 186 test dx,dx187 jnz.identifyDeviceInDX180 test dx, dx 181 jnz SHORT .identifyDeviceInDX 188 182 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) 190 184 191 185 .identifyDeviceInDX: 192 193 186 ; fall through to SerialCommand_FallThroughToSerialServerScan_ScanForServer 194 187 195 188 ALIGN JUMP_ALIGN 196 189 SerialCommand_FallThroughToSerialServerScan_ScanForServer: 197 198 190 ; fall through to SerialServerScan_ScanForServer 199 200 191 %include "SerialServerScan.asm" 201 192 … … 206 197 %endif 207 198 208 -
trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialDPT.asm
r567 r601 33 33 ;-------------------------------------------------------------------- 34 34 SerialDPT_Finalize: 35 36 35 mov ax, [es:si+SerialServer_ATA_wPortAndBaud] 36 mov [di+DPT_SERIAL.wSerialPortAndBaud], ax 37 37 38 38 ; … … 41 41 ; if the floppy support is disabled. 42 42 ; 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 48 47 49 48 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm
r599 r601 106 106 cli 107 107 mov ax, [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler] 108 mov [es: SYSTEM_TIMER_TICK*4], ax108 mov [es:BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4], ax 109 109 mov ax, [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler+2] 110 mov [es: SYSTEM_TIMER_TICK*4+2], ax110 mov [es:BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch*4+2], ax 111 111 sti 112 112 %endif … … 214 214 ; Switches back to the POST stack, clears the DS and ES registers, 215 215 ; 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. 217 217 ; 218 218 ; Parameters: -
trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/AdvAtaInit.asm
r596 r601 36 36 ;-------------------------------------------------------------------- 37 37 AdvAtaInit_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 39 39 ; good thing since detecting Vision QD6580 is dangerous since Intel PIIX4 south bridge 40 40 ; mirrors Interrupt Controller registers from Axh to Bxh. This can lead to faulty … … 45 45 push bx 46 46 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 50 52 pop di 51 53 pop bx -
trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectDrives.asm
r599 r601 98 98 ; Here we might want to replace BIOS configured drives with the ones we detected. 99 99 ; 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. 101 101 ; 102 102 ; The Windows hack has two parts. First part is to try to alter CMOS address 12h as that … … 109 109 110 110 %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 149 148 .ClearBdaDriveCount: 150 %endif; MODULE_WIN95_CMOS_HACK149 %endif ; MODULE_WIN95_CMOS_HACK 151 150 152 151 test BYTE [cs:ROMVARS.wFlags], FLG_ROMVARS_IGNORE_MOTHERBOARD_DRIVES 153 152 jz SHORT .ContinueInitialization 154 mov BYTE [es:BDA.bHDCount], 0 ; Set hard disk count to zero153 mov BYTE [es:BDA.bHDCount], 0 ; Set hard disk count to zero 155 154 .ContinueInitialization: 156 %endif 157 158 mov cx, [RAMVARS.wDrvCntAndFlopCnt] 155 %endif ; USE_AT 156 157 mov cx, [RAMVARS.wDrvCntAndFlopCnt] ; Our count of hard disks 159 158 mov al, [es:BDA.bHDCount] 160 add [es:BDA.bHDCount], cl ; Add our drives to the system count161 or al, 80h ; Or in hard disk flag162 mov [RAMVARS.bFirstDrv], al ; Store first drive number159 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 163 162 164 163 .AddFloppies: … … 170 169 dec ch 171 170 mov al, ch 172 js .NoFloppies ; if no drives are present, we store 0ffh171 js SHORT .NoFloppies ; If no drives are present, we store 0FFh 173 172 174 173 call FloppyDrive_GetCountFromBIOS_or_BDA … … 242 241 ;-------------------------------------------------------------------- 243 242 .ReadAtaInfoFromHardDisk: 244 mov si, BOOTVARS.rgbAtaInfo ; ES:SI now points to ATA info location243 mov si, BOOTVARS.rgbAtaInfo ; ES:SI now points to ATA info location 245 244 push es 246 245 push si … … 255 254 ; Fall to .ReadAtapiInfoFromDrive 256 255 257 .ReadAtapiInfoFromDrive: ; Not yet implemented258 ;call ReadAtapiInfoFromDrive ; Assume CD-ROM256 .ReadAtapiInfoFromDrive: ; Not yet implemented 257 ;call ReadAtapiInfoFromDrive ; Assume CD-ROM 259 258 ;jnc SHORT _CreateBiosTablesForCDROM 260 259 -
trunk/XTIDE_Universal_BIOS/Src/Menus/BootMenu/BootMenuPrintCfg.asm
r592 r601 4 4 ; 5 5 ; Included by BootMenuPrint.asm, this routine is to be inserted into 6 ; BootMenuPrint_ HardDiskRefreshInformation.6 ; BootMenuPrint_RefreshInformation. 7 7 ; 8 8 … … 26 26 SECTION .text 27 27 28 ;;; fall-into from BootMenuPrint_ HardDiskRefreshInformation.28 ;;; fall-into from BootMenuPrint_RefreshInformation. 29 29 30 30 ;-------------------------------------------------------------------- … … 32 32 ; Cursor is set to configuration header string position. 33 33 ; 34 ; BootMenuPrintCfg_ForOurDrive34 ; .BootMenuPrintCfg_ForOurDrive 35 35 ; Parameters: 36 36 ; DS:DI: Pointer to DPT … … 38 38 ; Nothing 39 39 ; Corrupts registers: 40 ; AX, BX, CX,DX40 ; AX, BX, DX 41 41 ;-------------------------------------------------------------------- 42 42 .BootMenuPrintCfg_ForOurDrive: 43 eMOVZX ax, [di+DPT.bIdevarsOffset]44 xchg bx, ax ; CS:BX now points to IDEVARS45 43 ; Fall to .PushAddressingMode 46 44 … … 49 47 ; Parameters: 50 48 ; DS:DI: Ptr to DPT 51 ; CS:BX: Ptr to IDEVARS52 49 ; Returns: 53 50 ; Nothing (falls to next push below) 54 51 ; Corrupts registers: 55 ; AX, CX, DX52 ; AX, BX, DX 56 53 ;-------------------------------------------------------------------- 57 54 .PushAddressingMode: … … 66 63 imul ax, g_szAddressingModes_Displacement << (8-TRANSLATEMODE_FIELD_POSITION) 67 64 %else 68 mov cx, g_szAddressingModes_Displacement << (8-TRANSLATEMODE_FIELD_POSITION)69 mul cx65 mov bx, g_szAddressingModes_Displacement << (8-TRANSLATEMODE_FIELD_POSITION) 66 mul bx 70 67 %endif 71 68 xchg al, ah ; AL = always zero after above multiplication … … 78 75 ; Parameters: 79 76 ; DS:DI: Ptr to DPT 80 ; CS:BX: Ptr to IDEVARS81 77 ; Returns: 82 78 ; Nothing (falls to next push below) … … 97 93 ; Parameters: 98 94 ; DS:DI: Ptr to DPT 99 ; CS:BX: Ptr to IDEVARS100 95 ; Returns: 101 96 ; Nothing (falls to next push below) 102 97 ; Corrupts registers: 103 ; AX 98 ; AX, BX 104 99 ;-------------------------------------------------------------------- 105 100 .PushDeviceType: 101 call AccessDPT_GetIdevarsToCSBX 106 102 %ifndef MODULE_SERIAL 107 103 mov al, g_szDeviceTypeValues_Displacement … … 155 151 ; Nothing (falls to next push below) 156 152 ; Corrupts registers: 157 ; A X, BX, DX, ES153 ; AL 158 154 ;-------------------------------------------------------------------- 159 155 .PushResetStatus: … … 161 157 push ax 162 158 163 ;;; fall-out to BootMenuPrint_ HardDiskRefreshInformation.159 ;;; fall-out to BootMenuPrint_RefreshInformation. -
trunk/XTIDE_Universal_BIOS/Src/Menus/HotkeyBar.asm
r600 r601 33 33 ; Nothing 34 34 ; Corrupts registers: 35 ; AX, CX, DX, SI, DI 36 ;-------------------------------------------------------------------- 35 ; Nothing 36 ;-------------------------------------------------------------------- 37 ALIGN JUMP_ALIGN 37 38 HotkeyBar_TimerTickHandler: 38 39 push es … … 56 57 ; Call previous handler 57 58 pushf 58 call far[es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler]59 call FAR [es:BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler] 59 60 60 61 ; Update Hotkeybar (process key input and draw) every fourth tick … … 98 99 mov BYTE [RAMVARS.bTimeoutTicksLeft], 0 99 100 .ContinueDrawing: 100 101 101 ; Fall to HotkeyBar_DrawToTopOfScreen 102 102 … … 141 141 142 142 ; 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 143 147 mov ch, [es:BOOTVARS.hotkeyVars+HOTKEYVARS.bFlags] 144 ;and ch, FLG_HOTKEY_HD_FIRST; Not needed until more flags added 148 %endif 145 149 call FormatDriveHotkeyString 146 150 … … 428 432 429 433 ; 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] 431 435 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] 433 437 mov [BOOTVARS.hotkeyVars+HOTKEYVARS.fpPrevTimerHandler+2], ax 434 mov al, SYSTEM_TIMER_TICK438 mov al, BIOS_SYSTEM_TIMER_TICK_INTERRUPT_1Ch 435 439 mov si, HotkeyBar_TimerTickHandler 436 440 call Interrupts_InstallHandlerToVectorInALFromCSSI -
trunk/XTIDE_Universal_BIOS/Src/Strings.asm
r589 r601 135 135 136 136 g_szDeviceTypeValues: 137 g_szDeviceTypeValues_16bit: db " 16",NULL137 g_szDeviceTypeValues_16bit: db " 16",NULL 138 138 %ifdef MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL 139 g_szDeviceTypeValues_32bit: db " 32",NULL139 g_szDeviceTypeValues_32bit: db " 32",NULL 140 140 %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 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 144 g_szDeviceTypeValues_XTIDEr2_Olivetti: db "X8O",NULL ; Same as above but in Olivetti M24 and derivatives 144 145 %ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL 145 g_szDeviceTypeValues_XTCFpio8: db "T8 ",NULL ; True 8-bit146 g_szDeviceTypeValues_XTCFpio8BIU: db "T8B",NULL147 g_szDeviceTypeValues_XTCFpio16BIU: db "16B",NULL148 g_szDeviceTypeValues_XTCFdma: db "8MA",NULL ; DMA 8-bit149 g_szDeviceTypeValues_JrIde: db "M8 ",NULL ; Memory Mapped 8-bit150 g_szDeviceTypeValues_ADP50L: db "M8 ",NULL ; Memory Mapped 8-bit146 g_szDeviceTypeValues_XTCFpio8: db "T8 ",NULL ; True 8-bit 147 g_szDeviceTypeValues_XTCFpio8BIU: db "T8B",NULL 148 g_szDeviceTypeValues_XTCFpio16BIU: db "16B",NULL 149 g_szDeviceTypeValues_XTCFdma: db "8MA",NULL ; DMA 8-bit 150 g_szDeviceTypeValues_JrIde: db "M8 ",NULL ; Memory Mapped 8-bit 151 g_szDeviceTypeValues_ADP50L: db "M8 ",NULL ; Memory Mapped 8-bit 151 152 %ifdef MODULE_SERIAL 152 g_szDeviceTypeValues_Serial: db "SER",NULL153 g_szDeviceTypeValues_Serial: db "SER",NULL 153 154 %endif ; MODULE_SERIAL 154 155 %endif ; MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL … … 183 184 %error "g_szDeviceTypeValues Displacement Incorrect 5" 184 185 %endif 186 %if g_szDeviceTypeValues_XTIDEr2_Olivetti <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement 187 %error "g_szDeviceTypeValues Displacement Incorrect 6" 188 %endif 185 189 186 190 %ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL 187 191 188 %if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement189 %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" 190 194 %endif 191 195 %if g_szDeviceTypeValues_XTCFpio8BIU <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement 192 %error "g_szDeviceTypeValues Displacement Incorrect 7"196 %error "g_szDeviceTypeValues Displacement Incorrect 8" 193 197 %endif 194 198 %if g_szDeviceTypeValues_XTCFpio16BIU <> g_szDeviceTypeValues_XTCFpio8BIU + g_szDeviceTypeValues_Displacement 195 %error "g_szDeviceTypeValues Displacement Incorrect 8"199 %error "g_szDeviceTypeValues Displacement Incorrect 9" 196 200 %endif 197 201 %if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio16BIU + g_szDeviceTypeValues_Displacement 198 %error "g_szDeviceTypeValues Displacement Incorrect 9"202 %error "g_szDeviceTypeValues Displacement Incorrect 10" 199 203 %endif 200 204 %if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement 201 %error "g_szDeviceTypeValues Displacement Incorrect 1 0"205 %error "g_szDeviceTypeValues Displacement Incorrect 11" 202 206 %endif 203 207 %if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement 204 %error "g_szDeviceTypeValues Displacement Incorrect 1 1"208 %error "g_szDeviceTypeValues Displacement Incorrect 12" 205 209 %endif 206 210 … … 208 212 209 213 %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement 210 %error "g_szDeviceTypeValues Displacement Incorrect 1 2"214 %error "g_szDeviceTypeValues Displacement Incorrect 13" 211 215 %endif 212 216 -
trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm
r589 r601 253 253 254 254 g_szDeviceTypeValues: 255 g_szDeviceTypeValues_16bit: ; db " 16",NULL256 ; db 20h, 31h, 36h, 00h ; uncompressed257 db 20h, 2bh, 0fh ; compressed255 g_szDeviceTypeValues_16bit: ; db " 16",NULL 256 ; db 20h, 31h, 36h, 00h ; uncompressed 257 db 20h, 2bh, 0fh ; compressed 258 258 259 259 %ifdef MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL 260 g_szDeviceTypeValues_32bit: ; db " 32",NULL261 ; db 20h, 33h, 32h, 00h ; uncompressed262 db 20h, 2dh, 0ch ; compressed260 g_szDeviceTypeValues_32bit: ; db " 32",NULL 261 ; db 20h, 33h, 32h, 00h ; uncompressed 262 db 20h, 2dh, 0ch ; compressed 263 263 264 264 %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 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 276 277 g_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 276 280 277 281 %ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL 278 g_szDeviceTypeValues_XTCFpio8: ; db "T8 ",NULL ; True 8-bit279 ; db 54h, 38h, 20h, 00h ; uncompressed280 db 5ah, 30h, 00h ; compressed281 282 g_szDeviceTypeValues_XTCFpio8BIU: ; db "T8B",NULL283 ; db 54h, 38h, 42h, 00h ; uncompressed284 db 5ah, 30h, 88h ; compressed285 286 g_szDeviceTypeValues_XTCFpio16BIU: ; db "16B",NULL287 ; db 31h, 36h, 42h, 00h ; uncompressed288 db 2bh, 2fh, 88h ; compressed289 290 g_szDeviceTypeValues_XTCFdma: ; db "8MA",NULL ; DMA 8-bit291 ; db 38h, 4dh, 41h, 00h ; uncompressed292 db 30h, 53h, 87h ; compressed293 294 g_szDeviceTypeValues_JrIde: ; db "M8 ",NULL ; Memory Mapped 8-bit295 ; db 4dh, 38h, 20h, 00h ; uncompressed296 db 53h, 30h, 00h ; compressed297 298 g_szDeviceTypeValues_ADP50L: ; db "M8 ",NULL ; Memory Mapped 8-bit299 ; db 4dh, 38h, 20h, 00h ; uncompressed300 db 53h, 30h, 00h ; compressed282 g_szDeviceTypeValues_XTCFpio8: ; db "T8 ",NULL ; True 8-bit 283 ; db 54h, 38h, 20h, 00h ; uncompressed 284 db 5ah, 30h, 00h ; compressed 285 286 g_szDeviceTypeValues_XTCFpio8BIU: ; db "T8B",NULL 287 ; db 54h, 38h, 42h, 00h ; uncompressed 288 db 5ah, 30h, 88h ; compressed 289 290 g_szDeviceTypeValues_XTCFpio16BIU: ; db "16B",NULL 291 ; db 31h, 36h, 42h, 00h ; uncompressed 292 db 2bh, 2fh, 88h ; compressed 293 294 g_szDeviceTypeValues_XTCFdma: ; db "8MA",NULL ; DMA 8-bit 295 ; db 38h, 4dh, 41h, 00h ; uncompressed 296 db 30h, 53h, 87h ; compressed 297 298 g_szDeviceTypeValues_JrIde: ; db "M8 ",NULL ; Memory Mapped 8-bit 299 ; db 4dh, 38h, 20h, 00h ; uncompressed 300 db 53h, 30h, 00h ; compressed 301 302 g_szDeviceTypeValues_ADP50L: ; db "M8 ",NULL ; Memory Mapped 8-bit 303 ; db 4dh, 38h, 20h, 00h ; uncompressed 304 db 53h, 30h, 00h ; compressed 301 305 302 306 %ifdef MODULE_SERIAL 303 g_szDeviceTypeValues_Serial: ; db "SER",NULL304 ; db 53h, 45h, 52h, 00h ; uncompressed305 db 59h, 4bh, 98h ; compressed307 g_szDeviceTypeValues_Serial: ; db "SER",NULL 308 ; db 53h, 45h, 52h, 00h ; uncompressed 309 db 59h, 4bh, 98h ; compressed 306 310 307 311 %endif ; MODULE_SERIAL … … 337 341 %error "g_szDeviceTypeValues Displacement Incorrect 5" 338 342 %endif 343 %if g_szDeviceTypeValues_XTIDEr2_Olivetti <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement 344 %error "g_szDeviceTypeValues Displacement Incorrect 6" 345 %endif 339 346 340 347 %ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL 341 348 342 %if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement343 %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" 344 351 %endif 345 352 %if g_szDeviceTypeValues_XTCFpio8BIU <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement 346 %error "g_szDeviceTypeValues Displacement Incorrect 7"353 %error "g_szDeviceTypeValues Displacement Incorrect 8" 347 354 %endif 348 355 %if g_szDeviceTypeValues_XTCFpio16BIU <> g_szDeviceTypeValues_XTCFpio8BIU + g_szDeviceTypeValues_Displacement 349 %error "g_szDeviceTypeValues Displacement Incorrect 8"356 %error "g_szDeviceTypeValues Displacement Incorrect 9" 350 357 %endif 351 358 %if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio16BIU + g_szDeviceTypeValues_Displacement 352 %error "g_szDeviceTypeValues Displacement Incorrect 9"359 %error "g_szDeviceTypeValues Displacement Incorrect 10" 353 360 %endif 354 361 %if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement 355 %error "g_szDeviceTypeValues Displacement Incorrect 1 0"362 %error "g_szDeviceTypeValues Displacement Incorrect 11" 356 363 %endif 357 364 %if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement 358 %error "g_szDeviceTypeValues Displacement Incorrect 1 1"365 %error "g_szDeviceTypeValues Displacement Incorrect 12" 359 366 %endif 360 367 … … 362 369 363 370 %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement 364 %error "g_szDeviceTypeValues Displacement Incorrect 1 2"371 %error "g_szDeviceTypeValues Displacement Incorrect 13" 365 372 %endif 366 373 … … 594 601 595 602 ;; 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 597 615 ;; 179:8 598 616 ;; 46:3 617 ;; 48:2 618 ;; 34:3 619 ;; 49:2 620 ;; 181:1 599 621 ;; 44:1 600 ;; 200:1601 ;; 48:2602 ;; 175:1603 ;; 171:2604 ;; 51:3605 ;; 50:2606 ;; 33:1607 ;; 53:2608 ;; 45:2609 ;; 47:2610 ;; 172:2611 ;; 56:8612 622 ;; 32:34 613 ;; 181:1614 ;; 54:2615 ;; 49:2616 623 ;; total translated: 20 617 624 618 625 ;; format usage stats 619 ;; 5-x:1 626 ;; 5-u:2 627 ;; z:2 628 ;; nl:12 629 ;; x:5 630 ;; A:4 620 631 ;; 2-u:1 621 632 ;; s:14 622 ;; nl:12623 ;; A:4624 ;; 5-u:2625 ;; x:5626 633 ;; 2-I:1 627 ;; z:2634 ;; 5-x:1 628 635 ;; u:6 629 636 ;; c:13 … … 652 659 ;; 77,M:7 653 660 ;; 78,N:2 654 ;; 79,O: 2661 ;; 79,O:3 655 662 ;; 80,P:1 656 663 ;; 81,Q:1 … … 661 668 ;; 86,V: 662 669 ;; 87,W: 663 ;; 88,X: 1670 ;; 88,X:2 664 671 ;; 89,Y: 665 672 ;; 90,Z:
Note:
See TracChangeset
for help on using the changeset viewer.