www.pudn.com > hpbios.rar > AOL_INIT.ASM


;	[]===========================================================[] 
; 
;	NOTICE: THIS PROGRAM BELONGS TO AWARD SOFTWARE INTERNATIONAL(R) 
;	        INC. IT IS CONSIDERED A TRADE SECRET AND IS NOT TO BE 
;	        DIVULGED OR USED BY PARTIES WHO HAVE NOT RECEIVED 
;	        WRITTEN AUTHORIZATION FROM THE OWNER. 
; 
; 	[]===========================================================[] 
; 
 
;		PAGE	60,132 
;		TITLE	POST  -- 386 ROM/BIOS POST 
;---------------------------------------------------------------------------- 
;Rev	Date	 Name	Description 
;--------------------------------------------------------------------------- 
;R00	09/16/99 DNL	Initial version for Alert on LAN 2 
 
.386P 
;[]-----------------------------------[] 
; 
;   Award Software 386/486 BIOS 
; 
;	Copyright (C) 1996 
;	Award Software, Inc. 
;	All Rights Reserved 
;[]-----------------------------------[] 
 
.XLIST 
 
		INCLUDE BIOS.CFG 
		INCLUDE BTROMSEG.EQU 
		INCLUDE COMMON.EQU 
		INCLUDE POST.EQU 
		INCLUDE ATORGS.EQU 
		INCLUDE PORT61.EQU 
		INCLUDE 8042.EQU 
		INCLUDE 8259.EQU 
 
		INCLUDE COMMON.MAC 
		INCLUDE POST.MAC 
		INCLUDE USERINT.MAC 
 
		include		AOL.EQU 
		 
ifdef	AOL_SUPPORT 
		extrn	Issue_System_Reset:near 
		extrn	PCI_Procedure:near 
		extrn	CT_I2CREADBYTE:near 
		extrn	CT_I2CWRITEBYTE:near 
endif	;AOL_SUPPORT 
 
		extrn	F000_func_end:Near 
		extrn	F000_VECT:Near 
		extrn	E_F000_Shadow_W:near 
		extrn	E_F000_Shadow_R:near 
 
.LIST 
 
;Macro for far calling from E-segment and the called routine is in F-segment 
F000_call	MACRO	func_addr 
		LOCAL	Ret_addr 
		push	0e000h 
		push	offset cs:Ret_addr 
		push	offset F000_func_end 
if ((.TYPE func_addr) and 10h)			;func_addr is register? 
		push	func_addr		;Yes,direct push 
else 
		push	offset func_addr 
endif 
		FAR_JMP ,0F000H 
Ret_addr: 
		ENDM 
 
;[]---------------------------[] 
; 
;   Low memory init (1st 64k) 
; 
;[]---------------------------[] 
 
G_RAM		SEGMENT USE16 AT 0 
 
		ORG	04H*4 
		INCLUDE SEG_0.INC 
 
		ORG	400H 
		INCLUDE G_RAM.INC 
 
G_RAM		ENDS 
 
		PAGE 
 
EGROUP		GROUP	ECODE 
DGROUP		GROUP	FCODE 
ECODE		SEGMENT USE16 PARA PUBLIC 'ECODE' 
		ASSUME	CS:EGROUP,DS:G_RAM,ES:EGROUP 
 
 
ifdef	AOL_SUPPORT 
 
;[]==================================================================[] 
; 
; Procedure Name: Update_WDMessage 
; 
;       This procedure should be called periodically by the BIOS to  
;       update the watchdog status word. The watchdog status value  
;       will be sent if watchdog (TCO) timer expires before the next  
;       update or reload of the timer. Although the OEM may wish to  
;       specify custom watchdog byte combinations, the Alert on  
;       LAN BIOS software reserves the many combinations (see  
;       Alert on LAN documentation). 
; 
;       The low order byte of the Watchdog Message Word is used in  
;       the Cape Lookout Watchdog Information Byte 1. 
;       The high order byte of the Watchdog Message Word is used in 
;       the Cape Lookout Watchdog Information Byte 2.                 
; 
; Input:    BX = watchdog message word 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	Update_WDMessage 
Update_WDMessage	Proc	Near 
 
        	Call	AOL_GetConfigInfo 
		test	al,80h 
        	jz	short @F 
 
        ; Convert the index from the Configuration Byte into  
        ; a Cape Lookout SMBus address 
 
		Call	Get_AOL_Add 
 		mov	cl,WATCHDOG_INFO_BYTE1_REG 
        	mov	al, bl 
		Call	Ct_I2CWriteByte 
 
 		mov	cl,WATCHDOG_INFO_BYTE2_REG 
        	mov	al, bh 
		Call	Ct_I2CWriteByte 
 
		Call	Start_WDTimer 
@@: 
		ret 
 
Update_WDMessage	ENDP 
 
;[]==================================================================[] 
; 
; Procedure Name: Start_WDTimer 
;        
;       This procedure should be called periodically by the BIOS to  
;       update the watchdog status word. The watchdog status value  
;       will be sent if watchdog (TCO) timer expires before the next  
;       update or reload of the timer. Although the OEM may wish to  
;       specify custom watchdog byte combinations, the Alert on  
;       LAN BIOS software reserves the many combinations (see  
;       Alert on LAN documentation). 
; 
;       The Cape Lookout implementation of CL_StartWDTimer performs 
;       a stop and restart to the Watchdog Timer using the Cape  
;       Watchdog Timer Register (0x08). 
; 
;       The watchdog timer is stopped by writing any value with the  
;       enable bit cleared (bit zero) to the watchtimer register.   
;       After stopping watchdog timer, the watchdog timer register  
;       contains the watchdog timer count. The timer is then  
;       restarted with the default value. 
; 
; Input:    None 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	Start_WDTimer	 
Start_WDTimer	Proc	Near 
 
        	Call	AOL_GetConfigInfo 
		test	al,80h 
        	jz	short @F 
 
		Call	Get_AOL_Add 
 		mov	cl,WATCHDOG_TIMER_REG 
        	mov	al,01Eh 
		Call	Ct_I2CWriteByte 
 
		Call	Get_AOL_Add 
 		mov	cl,WATCHDOG_TIMER_REG 
        	mov	al,01Fh 
		Call	Ct_I2CWriteByte 
@@: 
		mov	ax,0Fh * 43 
		ret 
 
Start_WDTimer	ENDP 
 
;[]==================================================================[] 
; 
; Procedure Name: Stop_WDTimer 
; 
;       This function allows the BIOS to stop the watchdog timer  
;       during the operations.  The BIOS may require this function  
;       since some POST functions such as ROM scan may be expected  
;       to execute for an indeterminate period of time without the  
;       ability to call the AOL code to service the watchdog. 
; 
;       Prevent Alert on LAN Hardware from sending a watchdog packet.   
;       Also, if possible stop the watchdog timer and prevent the  
;       watchdog status bit from indicating a watchdog event has  
;       occurred.  
; 
;       The Cape Lookout implementation of CL_StopWDTimer performs 
;       a stop of the Watchdog Timer using the Cape Watchdog Timer  
;       Register (0x08). 
; 
;       The watchdog timer is stopped by writing a zero to the  
;       watchtimer register.  After stopping watchdog timer, the 
;       watchdog timer register contains the watchdog timer count. 
; 
; Input:    None 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	Stop_WDTimer 
Stop_WDTimer	Proc	Near 
 
        	Call	AOL_GetConfigInfo 
		test	al,80h 
        	jz	short @F 
 
		Call	Get_AOL_Add 
 		mov	cl,WATCHDOG_TIMER_REG 
        	mov	al, 01Eh 
		Call	Ct_I2CWriteByte 
@@: 
        	ret 
 
Stop_WDTimer	Endp 
 
;[]==================================================================[] 
; 
; Procedure Name: AOL_EnterROMScan 
; 
;       This procedure should be called by the BIOS just prior to  
;       entering the ROM scan.  The Alert on Hardware may need to  
;       be reprogrammed to handle this section of BIOS based on  
;       hardware limitations and/or interactions. 
; 
;       The Cape Lookout AOL_EnterROMScan() procedure is limited  
;       to programming of the watchdog timer since no other functions 
;       of the Cape Lookout device interfere with network functions. 
;       The watchdog expiration causes a watchdog packet to be sent  
;       and this packet causes a selective reset of the D101M and 
;       thus an unacceptable network interaction. 
; 
;       If the input parameter indicates the watchdog should be  
;       enabled, enable the watchdog timer using Start_WDTimer(). 
; 
;       If the input parameter indicates the watchdog should be  
;       disabled, stop the watchdog timer using the Stop_WDTimer() 
;       procedure. 
; 
; Input:    None 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	AOL_EnterROMScan 
AOL_EnterROMScan	Proc	Near 
 
		Call	Stop_WDTimer	 
		ret 
 
AOL_EnterROMScan	ENDP 
 
;[]==================================================================[] 
; 
; Procedure Name: AOL_ExitROMScan 
; 
;       The Cape Lookout AOL_ExitROMScan() procedure is limited to  
;       programming of the watchdog timer since no other functions 
;       of the Cape Lookout device interfere with network functions. 
;       The watchdog expiration causes a watchdog packet to be sent  
;       and this packet causes a selective reset of the D101M and 
;       thus an unacceptable network interaction. 
; 
;       If the input parameter indicates the watchdog should be  
;       enabled, enable the watchdog timer using Start_WDTimer(). 
; 
;       If the input parameter indicates the watchdog should be  
;       disabled, stop the watchdog timer using the Stop_WDTimer() 
;       procedure. 
; 
; Input:    None 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	AOL_ExitROMScan 
AOL_ExitROMScan	Proc	Near 
 
		Call	Start_WDTimer 
		ret 
 
AOL_ExitROMScan	ENDP 
                   
;[]==================================================================[] 
; 
; Procedure Name: AOL_BeforeOSBoot 
; 
;       This function should be called by the system BIOS just before  
;       boot.  The Alert on LAN BIOS will configure the Alert on LAN  
;       hardware and send software messages as required to inform the  
;       management software of the status of boot.  This procedure can  
;       also program the watchdog timer to determine whether the  
;       system completes the OS boot. 
; 
;       If the input parameter indicates the watchdog should be  
;       enabled, enable the watchdog timer using CL_StartWDTimer(). 
; 
;       If the input parameter indicates the watchdog should be  
;       disabled, stop the watchdog timer using the CL_StopWDTimer()  
;       procedure. 
; 
;       One feature specific to the Cape Lookout device is the  
;       General Purpose Receive bits.  It is the responsibility of  
;       the CL_BeforeOSBoot procedure to clear the GP RX bits. 
; 
; Input:    AL = 0 Watchdog Disabled 
;                1 Watchdog Enabled 
;           AH = 0 No errors detected during POST 
;                1 Errors detected during POST 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	AOL_BeforeOSBoot 
AOL_BeforeOSBoot	Proc	Near 
 
        	Call	AOL_GetConfigInfo 
		test	al,80h 
        	jz	short @F 
 
        ; Clear the General Purpose Receive bits 
        ; Clear all four bits and set no bits in  
        ; the APM Configurastion Register 
 
		Call	Get_AOL_Add 
 		mov	cl,APM_CONFIGURATION_REG 
		Call	Ct_I2CReadByte 
        	and	al,0Fh 
		Call	Ct_I2CWriteByte 
		 
        ; Send Software message indicating OS boot  
        ; with or without POST errors 
 
		mov	bx,SW_SYSTEM_BOOTING_WITH_ERRORS 
;;;;;;;	        cmp	PostErrors, TRUE 
       		jne	short PostErrorsExist 
		mov	bx,SW_SYSTEM_BOOTING 
PostErrorsExist: 
		Call	SendSoftware_Message 
		Call	Start_WDTimer 
@@: 
		ret 
 
AOL_BeforeOSBoot	Endp 
 
;[]==================================================================[] 
; 
; Procedure Name: Enable_AOL 
; 
;       This routine performs all initialization required after  
;       returning from a POST task which required the Alert on  
;       LAN hardware to be disabled. The procedure will enable  
;       all Alert on LAN hardware to its previous functioning  
;       state. 
; 
;       The Cape Lookout hardware is globally enabled by setting 
;       the Global Enable Bit (ENA_ALL) in the Enable Configuration 
;       Register (0x0D).  
; 
; Input:    none 
; 
; Output:   Al = date value 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	Enable_AOL 
Enable_AOL	Proc	Near 
 
		Call	AOL_GetConfigInfo 
		test	al,80h 
		jz	short @F 
 
		Call	Get_AOL_Add 
		mov	cl,ENABLE_CONFIGURATION_REG 
		Call	Ct_I2CReadByte 
		or	al,80h 
		Call	Ct_I2CWriteByte 
@@: 
		ret 
 
Enable_AOL	Endp 
 
;[]==================================================================[] 
; 
; Procedure Name: Disable_AOL 
; 
;       This routine performs all initialization required before  
;       attempting a POST task which requires the Alert on LAN  
;       hardware to be disabled. 
; 
;       The Cape Lookout hardware is globally disabled by clearing 
;       the Global Enable Bit (ENA_ALL) in the Enable Configuration 
;       Register (0x0D). Also disables the Watchdog Timer to  
;       prevent expiration using the CL_STopWDTimer routine. 
; 
; Input:    None 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	Disable_AOL 
Disable_AOL	Proc	Near 
 
		Call	AOL_GetConfigInfo 
		test	al,80h 
		jz	short @F 
 
		mov	bx,SW_HEARTBEAT_STOP 
		Call	SendSoftware_Message		 
 
		Call	Get_AOL_Add 
		mov	cl,ENABLE_CONFIGURATION_REG 
		Call	Ct_I2CReadByte 
		and	al,not 80h 
		Call	Ct_I2CWriteByte 
@@: 
		ret	 
 
Disable_AOL	Endp 
 
 
Get_AOL_Add:	 
		push	ax 
 
		CAll	AOL_GetConfigInfo 
		and	al,0Fh 
 
		mov	ch,0C4h 
		cmp	al,01h 
		je	short @F 
 
		mov	ch,0C6h 
		cmp	al,02h 
		je	short @F 
 
		mov	ch,0CCh 
		cmp	al,03h 
		je	short @F 
 
		mov	ch,0CEh 
		cmp	al,04h 
		je	short @F 
 
		mov	ch,00h 
@@: 
		pop	ax 
		ret 
 
;[]==================================================================[] 
; 
; Procedure Name: SendSoftware_Message 
; 
;       The procedure is used to force a network packet containing the 
;       software message word to be sent via the Alert on LAN device  
;       and the network controller.  
; 
;       The low order byte of software message word is used in software  
;       status byte 1 (0x0E) and the high order byte of the software  
;       message word is used in software status byte 2 (0x0F).   
; 
;       The procedure uses the Cape Lookout Force Software Event 
;	(FRC_SWE) to force Cape Lookout to send a network packet.   
; 
; Input:    ax = software message word 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	SendSoftware_Message 
SendSoftware_Message	Proc	Near 
 
        	Call	AOL_GetConfigInfo 
		test	al,80h 
        	jz	short @F 
 
		Call	Get_AOL_Add 
		mov	cl,SOFTWARE_STATUS_BYTE1_REG 
		mov	al,bl 
		Call	Ct_I2CWriteByte 
 
		mov	cl,SOFTWARE_STATUS_BYTE2_REG 
		mov	al,bh 
		Call	Ct_I2CWriteByte 
 
		mov	cl,FORCED_ACTIONS_REG 
		mov	al,10h 
		Call	Ct_I2CWriteByte 
@@: 
		ret	 
 
SendSoftware_Message	ENDP 
 
;[]==================================================================[] 
; 
; Procedure Name: Read_AOL_EEPROM	 
; 
;           This routine will read a specified byte from the EEPROM. 
; 
; Input:    BL = EEPROM register to read 
; 
; Output:   AL = EEPROM byte register data 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	Read_AOL_EEPROM 
Read_AOL_EEPROM	Proc	Near 
 
        ;* Read Control register - Verify that EEC_BUSY and EEC_LOAD  
        ;                          bits are cleared 
 
		Call	Get_AOL_Add 
        	mov	cl,EEPROM_CONTROL_REG 
		Call	Ct_I2CReadByte 
        	and	al,90h 
        	jnz	short @F 
 
        ;* Write Address register with desired EEPROM address 
 
		mov	cl,EEPROM_ADDR_REG 
        	mov	al,bl 
		Call	Ct_I2CWriteByte 
 
        ;* Write Control register with Read command 
 
	        mov	cl,EEPROM_CONTROL_REG 
	        mov	al,READ_COMMAND 
		Call	Ct_I2CWriteByte 
 
        ;* Read Control register - Wait for EEC_BUSY to clear 
 
		Call	EEpromWaitForNotBusy 
 
        ;* Read Data register to get EEPROM data 
 
        	mov	cl,EEPROM_DATA_REG 
		Call	Ct_I2CReadByte 
@@: 
		ret 
 
Read_AOL_EEPROM	Endp 
 
 
;[]==================================================================[] 
; 
; Procedure Name: Write_AOL_EEPROM	 
; 
;           This routine will write a specified byte to the EEPROM. 
; 
; Input:    BL = EEPROM register to read 
;	    AL = EEPROM byte register data 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	Write_AOL_EEPROM 
Write_AOL_EEPROM	Proc	Near 
 
        ;* Read Control register - Verify that EEC_BUSY and EEC_LOAD  
        ;                          bits are cleared 
		mov	bh,al 
	 
		Call	Get_AOL_Add 
        	mov	cl,EEPROM_CONTROL_REG 
		Call	Ct_I2CReadByte 
        	and	al,90h 
        	jnz	short @F 
 
        ;* Write Address register with Write Enable Address 
 
        	mov	cl,EEPROM_ADDR_REG 
		mov	al,WRITE_ENABLE_ADDRESS 
		Call	Ct_I2CWriteByte 
 
        ;* Write Control register with Write Enable Command 
 
        	mov	cl,EEPROM_CONTROL_REG 
		mov	al,WRITE_ENABLE_COMMAND 
		Call	Ct_I2CWriteByte 
 
        ;* Read Control register - Wait for EEC_BUSY to clear 
 
		Call	EEpromWaitForNotBusy 
 
        ;* Write Adress register with desired EEPROM address 
 
		mov	cl,EEPROM_ADDR_REG 
        	mov	al,bl 
		Call	Ct_I2CWriteByte 
 
        ;* Write Data register wih desired write data 
 
		mov	cl,EEPROM_DATA_REG 
        	mov	al,bh 
		Call	Ct_I2CWriteByte 
 
        ;* Write Control register with the Write command 
 
        	mov	cl,EEPROM_CONTROL_REG 
		mov	al,WRITE_COMMAND 
		Call	Ct_I2CWriteByte 
 
        ;* Read Control register - Wait for EEC_BUSY to clear 
 
		Call	EEpromWaitForNotBusy 
 
        ;* Write Address register with Write Disable Address 
 
        	mov	cl,EEPROM_ADDR_REG 
		mov	al,WRITE_DISABLE_ADDRESS 
		Call	Ct_I2CWriteByte 
 
        ;* Write Control register with Write Disable Command  
 
        	mov	cl,EEPROM_CONTROL_REG 
		mov	al,WRITE_DISABLE_COMMAND 
		Call	Ct_I2CWriteByte 
 
        ;* Read Control register - Wait for EEC_BUSY to clear 
 
		Call	EEpromWaitForNotBusy 
 
		ret 
Write_AOL_EEPROM	Endp 
 
 
;[]==================================================================[] 
; 
; Procedure Name: EEpromWaitForNotBusy 
; 
;       This procedure will wait a set maximum time for the EEPROM 
;       busy bit to clear indicating the last command has successfully  
;       completed.   
; 
;       This procedure is not designed to be called externally.  
;       It is used for code support and is intended for use by  
;       higher level stack-less EEprom routines within this file. 
 
; Input:    None 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
EEpromWaitForNotBusy	PROC    NEar 
 
        ;* Read Control register - Wait for EEC_BUSY to clear 
		push	cx 
 
		mov	cx,100h 
@@: 
		push	cx 
	        mov	cl,EEPROM_CONTROL_REG 
		Call	Ct_I2CReadByte 
		pop	cx 
        	test	al,10h 
 		loopnz	short @B 
 
		pop	cx 
 		ret 
 
EEpromWaitForNotBusy	ENDP 
 
;[]==================================================================[] 
; 
; Procedure Name: AOL_SaveConfigInfo 
; 
;	This routine is called by the Alert on LAN BIOS to store one byte of  
;	configuration information. 
; 
;       Bit 7   Global Enable State 
;               1 = Enabled  
;               0 = Disabled 
;       Bit 6   ICH Detected 
;               1 = ICH detected 
;               0 = ICH not detected 
;       Bit 5:4 Unused  
;       Bit 3-0 Encoded address for the Alert on LAN device 
;		0000 = No AOL device 
;		0001 = 0x1100010b	(C4h) 
;		0010 = 0x1100011b	(C6h) 
;		0011 = 0x1100110b	(CCh) 
;		0100 = 0x1100111b	(CEh) 
; 
; Input:    AL = Configuration Information Byte 
; 
; Output:   None 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	AOL_SaveConfigInfo 
AOL_SaveConfigInfo	Proc	Near 
 
		xchg	al,ah 
		mov	al,AOL_CMOS OR 80h 
		out	70h,al 
		NEWIODELAY 
		xchg	al,ah 
		out	71h,al 
		NEWIODELAY 
 
		ret 
 
AOL_SaveConfigInfo	Endp 
 
;[]==================================================================[] 
; 
; Procedure Name: AOL_GetConfigInfo 
; 
;	This routine is called by the Alert on LAN BIOS to get one byte of  
;	configuration information. 
; 
;       Bit 7   Global Enable State 
;               1 = Enabled  
;               0 = Disabled 
;       Bit 6   ICH Detected 
;               1 = ICH detected 
;               0 = ICH not detected 
;       Bit 5:4 Unused  
;       Bit 3-0 Encoded address for the Alert on LAN device 
;		0000 = No AOL device 
;		0001 = 0x1100010b	(C4h) 
;		0010 = 0x1100011b	(C6h) 
;		0011 = 0x1100110b	(CCh) 
;		0100 = 0x1100111b	(CEh) 
; 
; Input:    None 
; 
; Output:   AL = Configuration Information Byte 
; 
; Name	| Date		| Description 
; ----------------------------------------------------------------- 
; DNL	| 09/16/99	| Initial version for AOL2 
;[]==================================================================[] 
		Public	AOL_GetConfigInfo 
AOL_GetConfigInfo	Proc	Near 
 
		mov	al,AOL_CMOS OR 80h 
		out	70h,al 
		NEWIODELAY 
		in	al,71h 
 
		ret 
 
AOL_GetConfigInfo	Endp 
endif	;AOL_SUPPORT 
 
ECODE		ENDS 
 
FCODE		SEGMENT PARA PUBLIC 'CODE' 
		ASSUME	CS:DGROUP 
FCODE		ENDS 
 
		END