⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 npostdim.asm

📁 <BIOS研发技术剖析>书的源代码,包括完整的BIOS汇编语言源程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;==============================================================================;
;                                                                              ;
;                      EISA Device Initializer Hooks                           ;
;                                                                              ;
;==============================================================================;

ifdef EISA

;---------------------------------------;
;       HANDLE_CFG_MEM  ROUTINE         ;
;  CALLED FROM DI-EISA.ASM              ;
;               FOR SLOT INITIALISATION ;
;               (FROM MEMORY_INIT)      ;
;  Input : (al) memory conf byte        ;
;        : (ds:si) points to data area  ;
;        : (bx) pointer to memory block ;
;      Preserve all registers           ;
;---------------------------------------;

dih_eisa_handle_cfg_mem proc    near

        ret

dih_eisa_handle_cfg_mem endp

;---------------------------------------;
;    PROGRAM_CACHABILITY_SRAM ROUTINE   ;
;   CALLED FROM POST DIAG 	        ;
;   RELATED TO CACHABILITY SRAM         ;
;---------------------------------------;

program_cachability_sram        proc    near

        ret

program_cachability_sram        endp

;---------------------------------------;
; PROGRAM_CACHABILITY_SRAM_FINAL ROUTINE;
;   CALLED FROM POST DIAG ??????        ;
;   RELATED TO CACHABILITY SRAM         ;
;---------------------------------------;

program_cachability_sram_final  proc    near

        ret

program_cachability_sram_final  endp
;---------------------------------------;

endif ;EISA



;==============================================================================;
;                                                                              ;
;                Plug and Play ISA Device Initializer Hooks                    ;
;                                                                              ;
;==============================================================================;

ifdef PNP

;---------------------------------------;
; dih_pnp_func_0 (Reset,Detect,Disable) ;
;---------------------------------------;--------------------------------------;
; This function is called by the Plug & Play Device Initializer (DI-PNP.ASM)   ;
; during function 0 (Reset, Detect, and Disable).                              ;
;                                                                              ;
; Input: SI = Offset of the NVRam workspace (in _dimdata seg)                  ;
;        DS = ES = _dimdata Segment                                            ;
;                                                                              ;
; Output: CF = Set if error, cleared otherwise                                 ;
;                                                                              ;
; Preserves: DS, ES, BP (all other registers are destroyed)                    ;
;------------------------------------------------------------------------------;
dih_pnp_func_0  proc near
        clc
        ret
dih_pnp_func_0  endp


;---------------------------------------;
; dih_pnp_func_1 (Static Device Init)   ;
;---------------------------------------;--------------------------------------;
; This function is called by the Plug & Play Device Initializer (DI-PNP.ASM)   ;
; during function 1 (Static Device Init).                                      ;
;                                                                              ;
; Input: SI = Offset of the NVRam workspace (in _dimdata seg)                  ;
;        DS = ES = _dimdata Segment                                            ;
;                                                                              ;
; Output: CF = Set if error, cleared otherwise                                 ;
;                                                                              ;
; Preserves: DS, ES, BP (all other registers are destroyed)                    ;
;------------------------------------------------------------------------------;
dih_pnp_func_1  proc near
        clc
        ret
dih_pnp_func_1  endp


;---------------------------------------;
; dih_pnp_func_2 (Output Device Init)   ;
;---------------------------------------;--------------------------------------;
; This function is called by the Plug & Play Device Initializer (DI-PNP.ASM)   ;
; during function 2 (Output Device Init).                                      ;
;                                                                              ;
; Input: SI = Offset of the NVRam workspace (in _dimdata seg)                  ;
;        DS = ES = _dimdata Segment                                            ;
;                                                                              ;
; Output: CF = Cleared if boot output device was found, set if not found.      ;
;                                                                              ;
; Preserves: DS, ES, BP (all other registers are destroyed)                    ;
;------------------------------------------------------------------------------;
dih_pnp_func_2  proc near
        stc                             ;Indicate no device found
        ret
dih_pnp_func_2  endp


;---------------------------------------;
; dih_pnp_func_3 (Input Device Init)    ;
;---------------------------------------;--------------------------------------;
; This function is called by the Plug & Play Device Initializer (DI-PNP.ASM)   ;
; during function 3 (Input Device Init).                                       ;
;                                                                              ;
; Input: SI = Offset of the NVRam workspace (in _dimdata seg)                  ;
;        DS = ES = _dimdata Segment                                            ;
;                                                                              ;
; Output: CF = Cleared if a boot input device was found, set if not found.     ;
;                                                                              ;
; Preserves: DS, ES, BP (all other registers are destroyed)                    ;
;------------------------------------------------------------------------------;
dih_pnp_func_3  proc near
        stc                             ;Indicate no device found
        ret
dih_pnp_func_3  endp


;---------------------------------------;
; dih_pnp_func_4 (IPL Device Init)      ;
;---------------------------------------;--------------------------------------;
; This function is called by the Plug & Play Device Initializer (DI-PNP.ASM)   ;
; during function 4 (IPL Device Init).                                         ;
;                                                                              ;
; Input: SI = Offset of the NVRam workspace (in _dimdata seg)                  ;
;        DS = ES = _dimdata Segment                                            ;
;                                                                              ;
; Output: CF = Cleared if boot output device was found, set if not found.      ;
;                                                                              ;
; Preserves: DS, ES, BP (all other registers are destroyed)                    ;
;------------------------------------------------------------------------------;
dih_pnp_func_4  proc near
        stc                             ;Indicate no device found
        ret
dih_pnp_func_4  endp


;---------------------------------------;
; dih_pnp_func_5 (General Device Init)  ;       Moved to OEMPDIM.ASM
;---------------------------------------;
; dih_check_pnp_device_func_5_table     ;       Moved to OEMPDIM.ASM
;---------------------------------------;

endif ;PNP



;==============================================================================;
;                                                                              ;
;                      PCI Device Initializer Hooks                            ;
;                                                                              ;
;==============================================================================;

ifdef PCI

;---------------------------------------;
; dih_pci_func_0 (Reset,Detect,Disable) ;
;---------------------------------------;--------------------------------------;
; This function is called by the PCI Device Initializer (DI-PCI.ASM)           ;
; during function 0 (Reset, Detect, and Disable).                              ;
;                                                                              ;
; Input: SI = Offset of the NVRam workspace (in _dimdata seg)                  ;
;        DS = ES = _dimdata Segment                                            ;
;                                                                              ;
; Output: CF = Set if this function disables all of the devices (in this case  ;
;                  the PCI core will not attempt to disable PCI devices)       ;
;              Clear if the core should go ahead and disable all PCI devices   ;
;                  (except those devices that are protected by dih_pci_prot_dev;
;                  which is defined below)                                     ;
;                                                                              ;
; Preserves: DS, ES, BP (all other registers are destroyed)                    ;
;------------------------------------------------------------------------------;
dih_pci_func_0  proc near
        clc
        ret
dih_pci_func_0  endp

;---------------------------------------;
; dih_pci_func_1 (Static Device Init)   ;
;---------------------------------------;--------------------------------------;
; This function is called by the PCI Device Initializer (DI-PCI.ASM)           ;
; during function 1 (Static Device Init).                                      ;
;                                                                              ;
; Input: SI = Offset of the NVRam workspace (in _dimdata seg)                  ;
;        DS = ES = _dimdata Segment                                            ;
;                                                                              ;
; Output: CF = Set if this function handles all static devices (in this case   ;
;                  the core will not call dih_pci_check_ide below)             ;
;              Clear if this function does nothing (in this case the core will ;
;                  initialize any static devices and will call the             ;
;                  dih_pci_check_ide function below)                           ;
;                                                                              ;
; Preserves: DS, ES, BP (all other registers are destroyed)                    ;
;------------------------------------------------------------------------------;
dih_pci_func_1  proc near
        clc
        ret
dih_pci_func_1  endp

;---------------------------------------;
; dih_pci_check_ide                     ;
;---------------------------------------;--------------------------------------;
; This function is called by the Device Initialization Manager (DIM.ASM)       ;
; at the start of function 1 (Static Device Init).  This function is used to   ;
; implement the setup questions for off board PCI IDE controller.              ;
;                                                                              ;
; This function uses three setup questions:                                    ;
;                                                                              ;
; Off Board PCI IDE:                 Auto/Slot1/Slot2/Slot3/Slot4/Slot5/Slot6  ;
; Off Board PCI IDE Primary IRQ:     Disabled/IntA/IntB/IntC/IntD/Hardwired    ;
; Off Board PCI IDE Secondary IRQ:   Disabled/IntA/IntB/IntC/IntD/Hardwired    ;
;                                                                              ;
; The following things should be done here:                                    ;
; 1a. Read the setup question Q_PCI_OFFBOARD_IDE.                              ;
;     If it is set to Auto, then exit this function.                           ;
; 1b. If it is set to Slot 1/2/3/4/5/6, then translate the slot # into a       ;
;     PCI bus/device/function number (function part will always be 0).         ;
; 2.  Read the device's vendor/device ID and save it in the variable           ;
;     dih_manual_ide_id.  This will make it a protected device and prevent the ;
;     device from getting programmed by the normal PCI configuration routines. ;
; 3a. Read the setup question Q_PCI_OFFBOARD_IDE_PRI_IRQ.                      ;
; 3b. If it is set to Disabled, then go to step 4.                             ;
; 3c. If it is set to IntA/B/C/D, then route and allocate IRQ 14 to the PCI    ;
;     bus/device from step 1.                                                  ;
; 3d. If it is set to Hardwired, then allocate IRQ 14, but don't route it.     ;
; 3c. Allocate ports 1F0-1F7 and 3F6 to the device.                            ;
; 4a. Read the setup question Q_PCI_OFFBOARD_IDE_SEC_IRQ.                      ;
; 4b. If it is set to Disabled, then goto step 5.                              ;
; 4c. If it is set to IntA/B/C/D, then route and allocate IRQ 15 to the PCI    ;
;     bus/device from step 1.                                                  ;
; 4d. If it is set to Hardwired, then allocate IRQ 15, but don't route it.     ;
; 4c. Allocate ports 170-177 and 376 to the device.                            ;
; 5.  Enable the device by writing to its command register.                    ;
; 6.  Return                                                                   ;
;                                                                              ;
; Input: SI = Offset of the NVRam workspace (in _dimdata seg)                  ;
;        DS = ES = _dimdata Segment                                            ;
;                                                                              ;
; Output: Nothing                                                              ;
;                                                                              ;
; Destroys: Nothing                                                            ;
;------------------------------------------------------------------------------;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -