Changeset 589 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS_Configurator_v2/Src
- Timestamp:
- May 22, 2016, 12:26:57 PM (9 years ago)
- Location:
- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/BiosFile.asm
r526 r589 75 75 76 76 cmp dx, MAX_EEPROM_SIZE_IN_BYTES >> 16 77 jb SHORT .FileNotTooBig 77 78 ja SHORT .FileTooBig 78 jb SHORT .FileNotTooBig79 79 cmp ax, MAX_EEPROM_SIZE_IN_BYTES & 0FFFFh 80 80 ja SHORT .FileTooBig -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Buffers.asm
r567 r589 214 214 call Buffers_GetFileBufferToESDI 215 215 call EEPROM_GetXtideUniversalBiosSizeFromESDItoDXCX 216 dec cx ; Leave space for checksum byte 217 xor ax, ax 218 ALIGN JUMP_ALIGN 216 217 ; Compatibility fix for 3Com 3C503 cards where the ASIC returns 8080h as the last two bytes of the ROM. 218 219 ; Assume the BIOS size is not 8K, ie generate a normal checksum. 220 dec cx 221 mov ax, 100h 222 cmp cx, 8192 - 1 223 jne SHORT .BiosSizeIsNot8K 224 ; The BIOS size is 8K and therefore a potential candidate for a 3Com 3C503 card. 225 dec cx 226 dec cx 227 mov ah, 3 228 ALIGN JUMP_ALIGN 229 .BiosSizeIsNot8K: 219 230 .SumNextByte: 220 231 add al, [es:di] 232 .NextChecksumByte: 221 233 inc di 222 234 loop .SumNextByte 223 235 neg al 224 236 mov [es:di], al 237 inc cx 238 dec ah 239 jnz SHORT .NextChecksumByte 225 240 226 241 pop dx … … 271 286 ; ES:DI: Ptr to file buffer 272 287 ; Corrupts registers: 273 ; AX288 ; Nothing 274 289 ;-------------------------------------------------------------------- 275 290 ALIGN JUMP_ALIGN 276 291 Buffers_GetIdeControllerCountToCX: 277 call Buffers_GetFileBufferToESDI 278 mov al, [es:di+ROMVARS.bIdeCnt] 279 280 ; Limit controller count for lite mode 292 xor cx, cx 293 call Buffers_GetFileBufferToESDI 294 or cl, [es:di+ROMVARS.bIdeCnt] 295 jnz SHORT .LimitControllerCountForLiteMode 296 inc cx ; Make sure there is at least one controller 297 298 .LimitControllerCountForLiteMode: 281 299 test BYTE [es:di+ROMVARS.wFlags], FLG_ROMVARS_FULLMODE 282 300 jnz SHORT .ReturnControllerCountInCX 283 MIN_U al, MAX_LITE_MODE_CONTROLLERS301 MIN_U cl, MAX_LITE_MODE_CONTROLLERS 284 302 285 303 .ReturnControllerCountInCX: 286 cbw ; A maximum of 127 controllers should be sufficient287 xchg cx, ax288 304 ret 289 305 -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/EEPROM.asm
r568 r589 81 81 mov cl, dl 82 82 eSHL_IM ch, 1 83 eRCL_IM dl, 1 83 84 ret 84 85 -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/IdeAutodetect.asm
r567 r589 56 56 DetectMemoryMappedDeviceFromSegmentDX: 57 57 ; *** Try to detect JR-IDE/ISA and ADP50L (only if MODULE_8BIT_IDE_ADVANCED is present) *** 58 test WORD[di+ROMVARS.wFlags], FLG_ROMVARS_MODULE_8BIT_IDE_ADVANCED58 test BYTE [di+ROMVARS.wFlags], FLG_ROMVARS_MODULE_8BIT_IDE_ADVANCED 59 59 stc 60 60 jz SHORT .NoIdeDeviceFound -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Main.asm
r554 r589 76 76 ALIGN JUMP_ALIGN 77 77 Main_Start: 78 mov ah, GET_DOS_VERSION 79 int DOS_INTERRUPT_21h 80 cmp al, 2 81 jae SHORT .DosVersionIsOK 82 mov dx, g_s$NotMinimumDosVersion 83 mov ah, WRITE_STRING_TO_STANDARD_OUTPUT 84 int DOS_INTERRUPT_21h 85 ret 86 .DosVersionIsOK: 87 78 88 mov ax, SCREEN_BACKGROUND_CHARACTER_AND_ATTRIBUTE 79 call InitializeScreenWithBackgrou dCharAndAttrInAX89 call InitializeScreenWithBackgroundCharAndAttrInAX 80 90 81 91 call Main_InitializeCfgVars 82 92 call MenuEvents_DisplayMenu 83 93 mov ax, DOS_BACKGROUND_CHARACTER_AND_ATTRIBUTE 84 call InitializeScreenWithBackgrou dCharAndAttrInAX94 call InitializeScreenWithBackgroundCharAndAttrInAX 85 95 86 96 ; Exit to DOS 87 mov ax, 4C00h ; Exit to DOS88 int 97 mov ax, TERMINATE_WITH_RETURN_CODE<<8 ; Errorlevel 0 in AL 98 int DOS_INTERRUPT_21h 89 99 90 100 91 101 ;-------------------------------------------------------------------- 92 ; InitializeScreenWithBackgrou dCharAndAttrInAX102 ; InitializeScreenWithBackgroundCharAndAttrInAX 93 103 ; Parameters: 94 104 ; AL: Background character … … 100 110 ;-------------------------------------------------------------------- 101 111 ALIGN JUMP_ALIGN 102 InitializeScreenWithBackgrou dCharAndAttrInAX:112 InitializeScreenWithBackgroundCharAndAttrInAX: 103 113 xchg dx, ax 104 114 CALL_DISPLAY_LIBRARY InitializeDisplayContext ; Reset cursor etc -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/MenuitemPrint.asm
r526 r589 156 156 ; MenuitemPrint_WriteLookupValueStringToBufferInESDIfromUnshiftedItemInDSSI 157 157 ; MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI 158 ; MenuitemPrint_WriteLookupValueStringToBufferInESDIfromRawItemInDSSI 158 159 ; Parameters: 159 160 ; DS:SI: Ptr to MENUITEM … … 177 178 178 179 ;-------------------------------------------------------------------- 179 ; MenuitemPrint_WriteLookupValueStringToBufferInESDIfromItemInDSSI180 ; PrintLookupValueFromAXtoBufferInESDI 180 181 ; Parameters: 181 182 ; AX: Value to print … … 190 191 PrintLookupValueFromAXtoBufferInESDI: 191 192 push si 192 test byte[si+MENUITEM.bFlags], FLG_MENUITEM_CHOICESTRINGS193 jnz .lookupChoice193 test BYTE [si+MENUITEM.bFlags], FLG_MENUITEM_CHOICESTRINGS 194 jnz SHORT .LookupChoice 194 195 195 196 add ax, [si+MENUITEM.itemValue+ITEM_VALUE.rgszValueToStringLookup] 196 197 xchg bx, ax 197 . found:198 .Found: 198 199 mov si, [bx] 199 . errorReturn:200 .ErrorReturn: 200 201 call String_CopyDSSItoESDIandGetLengthToCX 201 202 pop si … … 212 213 ; value could be zero, we don't use the .rgwChoiceToValueLookup array to find the end. 213 214 ; 214 . lookupChoice:215 mov bx, [si+MENUITEM.itemValue+ITEM_VALUE.rgszChoiceToStringLookup]216 mov si, [si+MENUITEM.itemValue+ITEM_VALUE.rgwChoiceToValueLookup]217 218 . wordLoop:219 cmp ax, [si]220 j z .found215 .LookupChoice: 216 mov bx, [si+MENUITEM.itemValue+ITEM_VALUE.rgszChoiceToStringLookup] 217 mov si, [si+MENUITEM.itemValue+ITEM_VALUE.rgwChoiceToValueLookup] 218 219 .WordLoop: 220 cmp ax, [si] 221 je SHORT .Found 221 222 inc bx 222 223 inc bx 223 224 inc si 224 225 inc si 225 cmp word [bx],0226 jn z .wordLoop227 228 mov si, g_szValueUnknownError229 jmp .errorReturn226 cmp WORD [bx], 0 227 jne SHORT .WordLoop 228 229 mov si, g_szValueUnknownError 230 jmp SHORT .ErrorReturn 230 231 231 232 ;-------------------------------------------------------------------- -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/ConfigurationMenu.asm
r567 r589 177 177 %assign i i+1 178 178 %endrep 179 ; dw NULL ; Is this needed? *FIXME* 179 dw NULL 180 180 181 181 182 ; Section containing code … … 285 286 call Buffers_GetRomvarsFlagsToAX 286 287 mov bx, g_MenuitemConfigurationIdleTimeout 287 test a x, FLG_ROMVARS_MODULE_POWER_MANAGEMENT288 test al, FLG_ROMVARS_MODULE_POWER_MANAGEMENT 288 289 jz SHORT .DisableMenuitemFromCSBX 289 290 ; Fall to .EnableMenuitemFromCSBX … … 393 394 push es 394 395 pop ds 395 xor ch, ch ; clearing high order of CX and notification flag 396 mov dx, cx ; (probably unnecessary, CX should be less than 127, but just to be sure) 397 jcxz .done ; probably unnecessary, but make sure there is at least one controller 396 mov dx, cx ; Controller count to DL (will always be at least 1) while also clearing notification flag in DH 398 397 399 398 lea bx, [di+ROMVARS.ideVars0] ; add in offset of first idevars … … 404 403 xor ax, ax ; first non-serial found 405 404 mov cl, dl ; idevars count 406 xor ch, ch407 405 408 406 .loop: 409 cmp byte[di+IDEVARS.bDevice], DEVICE_SERIAL_PORT410 jn z.notSerial407 cmp BYTE [di+IDEVARS.bDevice], DEVICE_SERIAL_PORT 408 jne SHORT .notSerial 411 409 412 410 test si, si ; record the first serial controller that we find 413 jnz .next411 jnz SHORT .next 414 412 mov si, di 415 413 SKIP2B f … … 423 421 424 422 test si, si ; no serial drives, nothing to do 425 jz .done423 jz SHORT .done 426 424 cmp si, ax ; serial port is already later on the list than any other controllers 427 ja .done; (also takes care of the case where there are no other controllers)425 ja SHORT .done ; (also takes care of the case where there are no other controllers) 428 426 429 427 ; … … 438 436 mov di, sp 439 437 440 mov cx, IDEVARS_size441 438 push ss 442 439 pop es 443 440 441 %if IDEVARS_size & 1 442 mov cl, IDEVARS_size 444 443 rep movsb 444 %else 445 mov cl, IDEVARS_size / 2 446 rep movsw 447 %endif 445 448 446 449 lea di, [si-IDEVARS_size] ; move up all the idevars below the serial, by one slot … … 457 460 push ss 458 461 pop ds 459 mov cx, IDEVARS_size460 462 ; di is already at last IDEVARS position 461 463 464 %if IDEVARS_size & 1 465 mov cl, IDEVARS_size 462 466 rep movsb 467 %else 468 mov cl, IDEVARS_size / 2 469 rep movsw 470 %endif 463 471 464 472 add sp, IDEVARS_size … … 469 477 mov dh, 1 ; set flag that we have done a relocation 470 478 471 jmp .outerLoop479 jmp SHORT .outerLoop 472 480 473 481 .done: … … 478 486 479 487 test dh, dh 480 jz .noWorkDone488 jz SHORT .noWorkDone 481 489 482 490 mov dx, g_szSerialMoved -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/FlashMenu.asm
r568 r589 328 328 call .GetSelectedEepromSizeInWordsToAX 329 329 xor dx, dx 330 shlax, 1 ; Size in bytes to...331 rcldx, 1 ; ...DX:AX330 eSHL_IM ax, 1 ; Size in bytes to... 331 eRCL_IM dx, 1 ; ...DX:AX 332 332 333 333 cmp WORD [si+FLASHVARS.wEepromPageSize], BYTE 1 -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm
r588 r589 571 571 572 572 573 ;574 ; No change to Device byte, but use this opportunity to change defaults stored in wPort and wPortCtrl if we are575 ; changing in/out of a Serial device (since we use these bytes in radically different ways).576 ;577 573 ALIGN JUMP_ALIGN 578 574 IdeControllerMenu_WriteDevice: … … 581 577 push ax 582 578 579 mov bl, [es:di] ; What is the current Device we are changing from? 580 sub di, BYTE IDEVARS.bDevice - IDEVARS.wBasePort ; Get ready to set the Port addresses 581 583 582 ; Note! AL is the choice index, not device code 584 shl ax, 1 ; Selection to device code 585 mov bl, [es:di] ; what is the current Device we are changing from? 586 sub di, BYTE IDEVARS.bDevice - IDEVARS.wBasePort ; Get ready to set the Port addresses 583 shl al, 1 ; Selection to device code 584 585 ; Restore ports and other stuff to default values 586 jz SHORT .StandardIdeDevice ; DEVICE_16BIT_ATA 587 588 cmp al, DEVICE_8BIT_ATA 589 ja SHORT .NotStandardIdeDevice 590 jb SHORT .AdvancedAtaDevice ; DEVICE_32BIT_ATA 591 test BYTE [es:ROMVARS.wFlags], FLG_ROMVARS_MODULE_8BIT_IDE 592 jmp SHORT .CheckZF 593 594 .AdvancedAtaDevice: 595 test BYTE [es:ROMVARS.wFlags+1], FLG_ROMVARS_MODULE_ADVANCED_ATA >> 8 596 .CheckZF: 597 jz SHORT .SupportForDeviceNotAvailable 598 599 ; Standard ATA controllers, including 8-bit mode 600 .StandardIdeDevice: 601 lea ax, [di-ROMVARS.ideVars0+IDEVARS.wBasePort] 602 mov bl, IDEVARS_size 603 div bl 604 mov bx, .rgbLowByteOfStdIdeInterfacePorts 605 xlat 606 mov ah, 1 ; DEVICE_ATA_*_PORT >> 8 607 mov bh, 3 ; DEVICE_ATA_*_PORTCTRL >> 8 608 mov bl, al 609 jmp SHORT .WriteNonSerial 610 611 .rgbLowByteOfStdIdeInterfacePorts: ; Defaults for 16-bit and better ATA devices 612 db DEVICE_ATA_PRIMARY_PORT & 0FFh 613 db DEVICE_ATA_SECONDARY_PORT & 0FFh 614 db DEVICE_ATA_TERTIARY_PORT & 0FFh 615 db DEVICE_ATA_QUATERNARY_PORT & 0FFh 616 617 .NotStandardIdeDevice: 587 618 cmp al, DEVICE_SERIAL_PORT 588 je SHORT .ChangingToSerial 619 jb SHORT .NotSerialDevice 620 test BYTE [es:ROMVARS.wFlags+1], FLG_ROMVARS_MODULE_SERIAL >> 8 621 jnz SHORT .ChangingToSerial 622 623 .SupportForDeviceNotAvailable: 624 push dx 625 mov dx, g_szUnsupportedDevice 626 call Dialogs_DisplayErrorFromCSDX 627 pop dx 628 629 ; Restore device type to the previous value 630 pop ax ; Get choice index from stack 631 mov al, bl ; Previous device type to AL 632 shr al, 1 ; Device code to choice index 633 jmp SHORT .DoneWithNoChangeOfDevice 634 635 .NotSerialDevice: 636 ; Remaining device types all require MODULE_8BIT_IDE or MODULE_8BIT_IDE_ADVANCED 637 test BYTE [es:ROMVARS.wFlags], FLG_ROMVARS_MODULE_8BIT_IDE | FLG_ROMVARS_MODULE_8BIT_IDE_ADVANCED 638 jz SHORT .SupportForDeviceNotAvailable 639 640 ; We know MODULE_8BIT_IDE is included 641 lahf ; Save the PF 642 cmp al, DEVICE_8BIT_XTIDE_REV2 643 jbe SHORT .ChangingToXTIDEorXTCF 644 sahf ; Restore the PF 645 jpo SHORT .SupportForDeviceNotAvailable ; Jump if no MODULE_8BIT_IDE_ADVANCED 589 646 cmp al, DEVICE_8BIT_JRIDE_ISA 590 647 je SHORT .ChangingToJrIdeIsa … … 592 649 je SHORT .ChangingToADP50L 593 650 594 ; Restore ports to default values 595 cmp al, DEVICE_8BIT_ATA ; Standard ATA controllers, including 8-bit mode 596 mov ax, DEVICE_ATA_PRIMARY_PORT ; Defaults for 16-bit and better ATA devices 597 mov bx, DEVICE_ATA_PRIMARY_PORTCTRL 598 jbe SHORT .WriteNonSerial 599 651 .ChangingToXTIDEorXTCF: 600 652 mov ax, DEVICE_XTIDE_DEFAULT_PORT ; Defaults for 8-bit XTIDE and XT-CF devices 601 653 mov bx, DEVICE_XTIDE_DEFAULT_PORTCTRL … … 631 683 .Done: 632 684 pop ax 685 .DoneWithNoChangeOfDevice: 633 686 pop di ; IDEVARS.bDevice 634 687 pop bx -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Strings.asm
r588 r589 21 21 SECTION .data 22 22 23 ; DOS version check 24 g_s$NotMinimumDosVersion: db LF,"This program requires DOS version 2 or higher.",LF,"$" 25 23 26 ; Menu title 24 27 g_szProgramTitle: db "Configuration and Flashing program for XTIDE Universal BIOS v2.0.0.",LF,CR,NULL 25 g_szXtideUniversalBiosSignature: db "XTIDE205",NULL28 g_szXtideUniversalBiosSignature: db FLASH_SIGNATURE,NULL 26 29 g_szBiosIsNotLoaded: db "BIOS is not loaded!",NULL 27 30 g_szEEPROM: db "EEPROM",NULL … … 134 137 db " Conventional memory. This makes it possible to use ROM BASIC and other software that requires" 135 138 db " the interrupt vectors where XTIDE Universal BIOS parameters would be stored in Lite mode.",LF,LF 136 db "Lite mode supports only one IDE controller (2drives) and stores parameters to the top of the interrupt vectors"139 db "Lite mode supports only 2 IDE controllers (4 drives) and stores parameters to the top of the interrupt vectors" 137 140 db " (30:0h) so no Conventional memory needs to be reserved. Lite mode cannot be used if some software requires" 138 141 db " the top of interrupt vectors. Usually this is not a problem since only IBM ROM BASIC uses them.",LF,LF … … 221 224 g_szDlgIdeEnIRQ: db "Enable interrupt?",NULL 222 225 g_szDlgIdeIRQ: db "Enter IRQ channel (2...7 for 8-bit controllers, 2...15 for any other controller).",NULL 226 g_szUnsupportedDevice: db "There is no support for this device type in the currently loaded BIOS." 227 db " You must load a BIOS built with the proper module included to be able to use this type of device.",NULL 223 228 224 229 g_szNfoIdeBackToCfgMenu: db "Back to XTIDE Universal BIOS Configuration Menu.",NULL … … 275 280 db "XTIDE rev 1",LF 276 281 db "XTIDE rev 2 or modded rev 1",LF 277 db "XT-CF (PIO8)",LF278 db "XT-CF (PIO8 w/BIU offload)",LF279 db "XT-CF (PIO16 w/BIU offload)",LF282 db "XT-CF PIO8",LF 283 db "XT-CF PIO8 (BIU offload)",LF 284 db "XT-CF PIO16 (BIU offload)",LF 280 285 db "XT-CF DMA (v3 only)",LF 281 286 db "JR-IDE/ISA",LF
Note:
See TracChangeset
for help on using the changeset viewer.