title "EISA bus Support Assembley Code" ;++ ; ; Copyright (c) 1989 Microsoft Corporation ; ; Module Name: ; ; eisaa.asm ; ; Abstract: ; ; This module implements the assembley code necessary to get configuration ; information on EISA machines. ; ; Author: ; ; Shie-Lin Tzong (shielint) 7-June-1991 ; ; Environment: ; ; Real Mode 16-bit code. ; ; Revision History: ; ; ;-- .386p .xlist include eisa.inc .list _DATA SEGMENT PARA USE16 PUBLIC 'DATA' public _FunctionInformation _FunctionInformation db 0 db EISA_INFORMATION_BLOCK_LENGTH dup (0) _DATA ends _TEXT SEGMENT PARA USE16 PUBLIC 'CODE' ASSUME CS: _TEXT ;++ ; ; VOID ; BtGetEisaSlotInformation ( ; PBTEISA_SLOT_INFORMATION SlotInformation, ; UCHAR Slot ; ) ; ; Routine Description: ; ; This function retrieves the slot information for the specified slot. ; ; Arguments: ; ; SlotInformation - Supplies a pointer to the structure which will ; receive the slot information. ; ; Slot - Specifies the slot to retrieve the information. ; ; Return Value: ; ; None. ; ;-- BgesSlotInformation equ [bp + 4] BgesSlot equ [bp + 6] public _BtGetEisaSlotInformation _BtGetEisaSlotInformation proc push bp ; The following INT 15H destroies mov bp, sp ; ALL the general registers. push si push di push bx mov cl, BgesSlot mov ax, GET_EISA_SLOT_INFORMATION int 15h push bx ; Save revision level mov bx, BgesSlotInformation ; ; fill values into eisa slot info structure. ; mov [bx].SlotReturn, ah mov [bx].SlotFlags, al pop ax ; [ax] = revision level mov [bx].SlotMajorRevision, ah mov [bx].SlotMinorRevision, al mov [bx].SlotChecksum, cx mov [bx].SlotNumberFunctions, dh mov [bx].SlotFunctionInformation, dl mov word ptr [bx].SlotCompressedId, di mov word ptr [bx+2].SlotCompressedId, si pop bx pop di pop si pop bp ret _BtGetEisaSlotInformation endp ;++ ; ; UCHAR ; BtGetEisaFunctionInformation ( ; PBTEISA_FUNCTION_INFORMATION FunctionInformation, ; UCHAR Slot, ; UCHAR Function ; ) ; ; Routine Description: ; ; This function retrieves function information for the specified slot ; and function. ; ; Arguments: ; ; FunctionInformation - Supplies a pointer to the structure which will ; receive the slot information. ; ; Slot - Specifies the slot to retrieve the information. ; ; Function - Supplies the function number of the desired slot. ; ; Return Value: ; ; Return code of the EISA function call. ; ;-- BgefFunctionInformation equ [bp + 4] BgefSlot equ [bp + 6] BgefFunction equ [bp + 8] public _BtGetEisaFunctionInformation _BtGetEisaFunctionInformation proc push bp mov bp, sp push si mov ax, GET_EISA_FUNCTION_INFORMATION mov cl, BgefSlot ; [cl] = slot, [ch]=function mov ch, BgefFunction mov si, BgefFunctionInformation ; (ds:si)->Function information int 15h mov al, ah ; move the return code to AL pop si pop bp ret _BtGetEisaFunctionInformation endp ;++ ; ; BOOLEAN ; BtIsEisaSystem ( ; VOID ; ) ; ; Routine Description: ; ; This function determines if the target machines is EISA based machines. ; ; Arguments: ; ; None. ; ; Return Value: ; ; TRUE - if this is EISA machine. Otherwise, a value of FALSE is returned. ;-- public _BtIsEisaSystem _BtIsEisaSystem proc push es push bx ; ; Check for an EISA system. If "EISA" is at F000:FFD9h then it ; is an EISA system. ; mov ax,0f000h ; segment mov es,ax mov bx,0ffd9h ; offset in the ROM mov eax, "ASIE" cmp eax, es:[bx] jne short bies00 ; if ne, Not EISA system, go bies00 mov ax, 1 ; set return value to TRUE jmp short bies10 bies00: mov ax, 0 bies10: pop bx pop es ret _BtIsEisaSystem endp _TEXT ends end