Changeset 589 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm
- Timestamp:
- May 22, 2016, 12:26:57 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note:
See TracChangeset
for help on using the changeset viewer.