;	[]===========================================================[]
;
;	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.
;
; 	[]===========================================================[]
;
;----------------------------------------------------------------------------
;Rev	Date	 Name	Description
;----------------------------------------------------------------------------
;R14	04/26/99 RAX	Added switch to remove hdd_power_item.
;R11A	03/11/99 ADS	Remove "LAN_Ctrl_BY_LID" .
;R13	02/08/99 RCH	Open "Disabled" for Power Management to support NO
;			APM.
;R12	02/02/99 ADS	Move "WO_ITEM" to cfeature.
;                       Please define "MOV_WO_ITEM_TO_CFEATURE"
;R11	02/02/99 ADS	Add "LAN_Ctrl_BY_LID" define to support LID & GPI pin
;			borth contorl LAN.   
;R10	01/11/99 ADS	Release CMOS address be selectable. 
;R09	01/11/99 ADS	Added Suspend to HDD function.
;R04A	12/23/98 RIC	Change "No_PM_Timer_Show_In_PF" define to 
;			"Have_PM_Timer_Show_In_PF" define.
;R08	12/15/98 RAY	Fixed compiler error for 4.6 BIOS
;R07	11/16/98 RIC	Add "Record_PWRON_Status" support.
;R06	11/16/98 RIC	Support Chinese for the Alarm String
;R05	09/15/98 RIC	Fix that RTC Alarm item can't change default in MODBIN.exe.
;R04	09/15/98 RIC	Add "No_PM_Timer_Show_In_PF" define.
;R03	09/04/98 RIC	Add "WAKE_LAN_BY_LID" define.
;R02	08/19/98 RIC	Add "WAKE_LAN_BY_RI" define.
;R01B	07/29/98 RIC	Add "WOL_String_In_Wake_On_EXTSMI0_Support" define.
;R01A	07/24/98 RIC	Add "Wake_On_GPI_Support" for VT596 Wake On Lan Support.
;R01	07/09/98 RIC	Add "Wake_On_EXTSMI0_Support" define.
;R00	05/13/98 RIC	Initialization.

ifdef	MASM611
.MODEL  SMALL,BASIC
OPTION	PROC: PRIVATE
endif	;MASM611

		PAGE	56,132
		.386

	;---------------;
	;   Include	;
	;---------------;
		include	bios.cfg
		include	bsetup.inc
		include	setup.ext
		include	CMOS.EQU
                include common.mac		
                include common.equ		

	;-----------------------;
	;  External Subroutine	;
	;-----------------------;
		extrn	Get_Cmos:Near
		extrn	Set_Cmos:Near
		extrn	GetItem_Value:near

	;-----------------------;
	;  External Item/Label	;
	;-----------------------;
		extrn	PAGE_NAME_Y:ABS
		extrn	Vnormal:near
		Extrn	Common_Startup_Str:Near
		Extrn	Ena_Str:Near
		Extrn	Dis_Str:Near
		Extrn	Std_Help_Str:Near
		EXTRN	NULLSTR:Near
		DECLARE_MULTI_LANGUAGE	;macro to declare externals

	;---------------;
	;    Public	;
	;---------------;
		Public	PM_Feature_Str
		Public	PM_Feature_Special_Do
		Public	PM_Feature_Special_Show
		Public	PM_Feature_StartUp_Str
		Public	PM_Feature_Start
		Public	PM_Feature_End
		Public	PM_STAT
		Public	PM_Auto_Table
		Public	PM_EndAuto_Table
		Public	PM_Auto_String

Y_Start		EQU	4
Xaxis		=	2
Yaxis		=	Y_Start - 1
DEFINE_ITEM	MACRO	MENU_NAME,GAP
IFNB	<GAP>
	Yaxis = Yaxis + GAP
ENDIF	;GAP
IF	Yaxis GE 23
	Xaxis = 42
	Yaxis = Y_Start
ELSE	;
	Yaxis = Yaxis + 1
ENDIF	;
IFNB	<MENU_NAME>
	PUBLIC	MENU_NAME
	MENU_NAME:
ENDIF
		ENDM

DGROUP		GROUP	FCODE
FCODE		SEGMENT	USE16 DWORD PUBLIC 'CODE'
		ASSUME	CS:DGROUP,DS:DGROUP
		db	'$ML$'
PM_Feature_Special_Do:
		dw	PM_Feature_Do_NO
PM_Feature_Do_NO	EQU	(($ - offset PM_Feature_Special_Do)-2)/4

PM_Feature_Special_Show:
		dw	PM_Feature_Show_NO
ifdef	PM_SUPPORT
		dw	offset PM_Option_Item	,offset Show_Auto_Cfg
		dw	offset Alarm_Item	,offset Alarm_Timer_SHOW 
		dw	offset Evt_INTR_Item	,offset PM_AUTO_SHOW
endif;	PM_SUPPORT
;R09 - starts
IFDEF	NoteBook_Power_Management
	dw	Suspend_Option_Item	,offset Show_OS_Select
ENDIF	;NoteBook_Power_Management
;R09 - ends

PM_Feature_Show_NO	EQU	(($ - offset PM_Feature_Special_Show)-2)/4

PM_Feature_StartUp_Str	label	near
		STRSHOW	<,,,offset Common_StartUp_Str>
		POS	<,29,PAGE_NAME_Y>
PM_Feature_Str:
		db	'POWER MANAGEMENT SETUP'
		db	0

;----------------------------------------------------------------------------

		ALIGN	4
		db	0
PM_Auto_Table	label	near
ifdef	PM_SUPPORT
		db	(Offset PM_Set2_Table-Offset PM_Set1_Table)/ROMITEM_SIZE
PM_Set1_Ptr	dw	offset PM_Set1_Table		;PM Disable
PM_Set2_Ptr	dw	offset PM_Set2_Table		;Min PM Saving
PM_Set3_Ptr	dw	offset PM_Set3_Table		;Max PM Saving

endif	;PM_SUPPORT

PM_EndAuto_Table	label	near
ifdef	PM_SUPPORT
;------------------------  PM Disable Table   ------------------------------
PM_Set1_Table:
		ROMITEM	<PMITEM,0E1h,11111111b,00000000b>
;------------------------ Min PM Saving Table ------------------------------
PM_Set2_Table:
		ROMITEM	<PMITEM,0E1h,11111111b,11111111b>
;------------------------ Max PM Saving Table ------------------------------
PM_Set3_Table:
		ROMITEM	<PMITEM,0E1h,11111111b,00100010b>
endif;	PM_SUPPORT

;[]======================================================================[]
;
;			Menuitems
;
;[]======================================================================[]
PF_CMOS		EQU	53h

PM_Feature_START	Label	Near
ifdef	PM_SUPPORT
  IFDEF	ACPI_SUPPORT
;Use CMOS 5Eh bit 0
DEFINE_ITEM     ACPI_option_Item
        menuitem <PMITEM,\
	offset ACPI_Option_Str           ,NOCT,00000100b,40h,00000010b,\
	offset ena_str,0,1,Xaxis,Yaxis,00000000b,    00000000b,offset ACPI_option_Item_Lang_Tbl>
  ENDIF;ACPI_SUPPORT
DEFINE_ITEM	PM_Option_Item
	menuitem <PMITEM,\
	  	offset PM_Option_Str           ,NOCT,00000011b,PF_CMOS+0,00000011b,\
		offset PM_Option_Var,0,3,Xaxis,Yaxis,00000000b          ,00000000b,offset PM_Option_Item_Lang_Tbl>

DEFINE_ITEM	Wait_APM_Item
	menuitem <PMITEM,\
	  	offset Wait_APM_Str	      ,NOCT,00010000b,PF_CMOS+0,00000100b,\
	  	offset Wait_APM_Val,0,1,Xaxis,Yaxis,00010000b,		00000100b,offset Wait_APM_Item_Lang_Tbl>

DEFINE_ITEM	Video_Off_Item
	menuitem <PMITEM,\
	  	offset Video_Off_Str	       ,NOCT,00000011b,PF_CMOS+1,00000011b,\
	  	offset Video_Off_Val,0,3,Xaxis,Yaxis,00000001b,		 00000001b,offset Video_Off_Item_Lang_Tbl>

DEFINE_ITEM	VGA_Type_Item
  IFNDEF NO_DPMS_SUPPORT
	menuitem <PMITEM,\
		Offset VGA_Type_Str,	       NOCT,00110000b,PF_CMOS+1,00001100b,\
		Offset VGA_Type_Val,0,3,Xaxis,Yaxis,00010000b,		00000100b,offset VGA_Type_Item_Lang_Tbl>
  ELSE;	 NO_DPMS_SUPPORT
	menuitem <PMITEM,\
		Offset VGA_Type_Str,	       NOCT,00100000b,PF_CMOS+1,00000100b,\
		Offset VGA_Type_Val,0,1,Xaxis,Yaxis,00100000b,		00000100b,offset VGA_Type_Item_Lang_Tbl>
  ENDIF; NO_DPMS_SUPPORT

  IFDEF	Have_Conserve_Item
DEFINE_ITEM	Conserve_Mode_Item
	menuitem <PMITEM,\
	  	offset Conserve_Mode_Str ,NOCT,00000001b,PF_CMOS+2,00010000b,\
	  	offset Dis_Str,0,1,Xaxis,Yaxis,00000000b,          00000000b,offset Conserve_Mode_Item_Lang_Tbl>
  ENDIF;Have_Conserve_Item

DEFINE_ITEM    Modem_IRQ_Item
	menuitem <PMITEM,\
	offset Modem_Event_Str,NOCT,00Fh,PF_CMOS+9,11110000b,\
	offset Modem_Event_Val,0,11,Xaxis,Yaxis,03h,30h,offset Modem_IRQ_Item_Lang_Tbl>

  IFDEF	Notebook_Power_Management
DEFINE_ITEM	Suspend_Option_Item
menuitem <2+PMITEM,\
Offset Suspend_Option_Str,  NOCT,00000011b,NF_CMOS,11000000b,\
Offset Suspend_Option_Val,0,2,Xaxis,Yaxis,00000000b,	      00000000b,offset NullStr>
;R09 - starts
DEFINE_ITEM	OS_Type_Item
menuitem <2+PMITEM,\
Offset OS_Type_Str,  NOCT,00001100b,NF_CMOS,00110000b,\
Offset OS_Type_Val,0,2,Xaxis,Yaxis,00000000b,	      00000000b,offset NullStr>
;R09 - ends
  ENDIF;Notebook_Power_Management

DEFINE_ITEM     PWRBTN_OVRD_Item
        menuitem <PMITEM,\
         offset PWRBTN_OVRD_Str,NOCT,00000001b,PF_CMOS+2,10000000b,\
         offset PWRBTN_OVRD_Val,0,1,Xaxis,Yaxis ,80h,80h,offset PWRBTN_OVRD_Item_Lang_Tbl>

ifdef	Record_PWRON_Status			;R07 - starts
DEFINE_ITEM	Record_PWRON_Item
        menuitem <PMITEM,\
                  offset RdRsmSts_Str,NOCT,RdRsmSts_CMOS_Bits,RdRsmSts_CMOS,RdRsmSts_CMOS_Bits,\
                  offset RdRsmSts_Val,0,3,Xaxis,Yaxis ,0,0,offset Record_PWRON_Item_Lang_Tbl>
endif;	Record_PWRON_Status			;R07 - ends

  IFDEF	Have_Fan_Control_Item_In_GPO_Low
	Have_Fan_Control_Item_In_GPO 	EQU	1
  ENDIF;Have_Fan_Control_Item_In_GPO_Low
  IFDEF	Have_Fan_Control_Item_In_GPO_High
	Have_Fan_Control_Item_In_GPO 	EQU	1
  ENDIF;Have_Fan_Control_Item_In_GPO_High

  IFDEF	Have_Fan_Control_Item_In_GPO
;R10 - starts
ifndef	Fan_Cntl_Item_CMOS
Fan_Cntl_Item_CMOS	EQU	PF_CMOS+2
Fan_Cntl_Item_CMOS_Bit	EQU	00010000b
endif;	Fan_Cntl_Item_CMOS
;R10 - end

DEFINE_ITEM	Fan_Control_Item
menuitem <2,\
offset Fan_Control_Str,NOCT,01h,Fan_Cntl_Item_CMOS,Fan_Cntl_Item_CMOS_Bit,\
offset Fan_Control_Val,0,1,Xaxis,Yaxis,00h,00h,offset Fan_Control_Item_Lang_Tbl>
;R10 offset Fan_Control_Str,NOCT,01h,PF_CMOS+2,00010000b,\
  ENDIF;Have_Fan_Control_Item_In_GPO

;R04A ifndef	No_PM_Timer_Show_In_PF				;R04
ifdef	Have_PM_Timer_Show_In_PF				;R04A
DEFINE_ITEM
	menuitem <SHOWONLY,\
		  offset Timer_Val_Str,NOCT,0,KERNAL_CONTROL,00000001b,\
		  offset NullStr,0,0,Xaxis,Yaxis,0,0,offset Timer_Val_Item_Lang_Tbl>
;R04A endif;	No_PM_Timer_Show_In_PF				;R04
endif;	Have_PM_Timer_Show_In_PF				;R04A
DEFINE_ITEM	HDD_Timer_Item
	menuitem <PMITEM,\
		  offset HDD_Timer_Str		  ,NOCT,00011111b,PF_CMOS+0,11111000b,\
		  offset HDD_Timer_Val,0,15,Xaxis,Yaxis,00000000b,	    00000000b,offset HDD_Timer_Item_Lang_Tbl>

DEFINE_ITEM	Doze_Timer_Item
	menuitem <PMITEM+AUTOPROG,\
		  offset Doze_Str	     ,0E1H, 00001111b,PF_CMOS+2,00001111b,\
		  offset Doze_Val,0,15,Xaxis,Yaxis, 00000000b,	        00000000b,offset Doze_Timer_Item_Lang_Tbl>

DEFINE_ITEM	Susp_Timer_Item          
	menuitem <PMITEM+AUTOPROG,\
		  offset Suspend_Str	     ,0E1H,   11110000b,PF_CMOS+1,11110000b,\
		  offset Suspend_Val,0,15,Xaxis,Yaxis,00000000b,          00000000b,offset Susp_Timer_Item_Lang_Tbl>

DEFINE_ITEM	PM_Event_Item
	menuitem <SHOWONLY,\
		  offset PM_Event_Str,NOCT,0,KERNAL_CONTROL,00000001b,\
		  offset NullStr,0,0,Xaxis,Yaxis,0,0,offset PM_Event_Item_Lang_Tbl>

DEFINE_ITEM	M_Evt_VGA_Item
	menuitem <PMITEM+2,\
		  offset M_Evt_VGA_Str	,NOCT,00010000b,PF_CMOS+3,00000001b,\
		  offset On_Off_Val,0,1,Xaxis,Yaxis,00000000b,00000000b,offset M_Evt_VGA_Item_Lang_Tbl>

DEFINE_ITEM	Evt_LPT_COM_Item
	menuitem <PMITEM+2,\
		offset M_Evt_LPT_COM_Str,NOCT,	 01100000b,PF_CMOS+3,00000110b,\
		offset M_Evt_LPT_COM_Val,0,3,Xaxis,Yaxis,01100000b,          00000110b,offset Evt_LPT_COM_Item_Lang_Tbl>

DEFINE_ITEM	Evt_HDD_Item
	menuitem <PMITEM+2,\
		offset M_Evt_HDD_Str  ,NOCT,      00001000b,PF_CMOS+3,00001000b,\
		offset On_Off_Val,0,1,Xaxis,Yaxis,00001000b,          00001000b,offset Evt_HDD_Item_Lang_Tbl>

DEFINE_ITEM	Evt_DMA_Item
	menuitem <PMITEM+2,\
		offset Evt_DMA_Str,NOCT,          00000001b,PF_CMOS+6,01000000b,\
		offset On_Off_Val,0,1,Xaxis,Yaxis,00000000b,          00000000b,offset Evt_DMA_Item_Lang_Tbl>

DEFINE_ITEM	Ring_Item
	menuitem <PMITEM+2,\
		offset Ring_Str,NOCT,         00000001b,PF_CMOS+2,01000000b,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0, 0b,offset Ring_Item_Lang_Tbl>
DEFINE_ITEM	Alarm_Item
	menuitem <PMITEM+2,\
		offset Alarm_Str,NOCT,         00000001b,PF_CMOS+2,00100000b,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0, 0b,offset Alarm_Item_Lang_Tbl>

Yaxis = Yaxis + 1
ifndef	Alarm_Date_CMOS
Alarm_Date_CMOS	EQU	5Dh
endif;	Alarm_Date_CMOS
		public	Alarm_Timer_Date_Item
Alarm_Timer_Date_Item	label	near
;R05	menuitem <NOMODBIN+KEYIN+SHOWNUM+DIGIT2,\
	menuitem <KEYIN+SHOWNUM+DIGIT2,\
		  offset A_D_str,NOCT,0,Alarm_Date_CMOS,11111111b,\
offset NullStr1,0,31,Xaxis,Yaxis,0,0,offset Alarm_Timer_Date_Item_Lang_Tbl>
;R06		  offset NullStr1,0,31,Xaxis,Yaxis,0,0,offset NullStr>

Yaxis = Yaxis + 1
ifndef	Alarm_Hour_CMOS
Alarm_Hour_CMOS	EQU	4fh
endif;	Alarm_Hour_CMOS
		public	Alarm_Timer_Hour_Item
Alarm_Timer_Hour_Item	label	near
;R05	menuitem <NOMODBIN+KEYIN+SHOWNUM+DIGIT2,\
	menuitem <KEYIN+SHOWNUM+DIGIT2,\
		  offset A_H_str,NOCT,0,Alarm_Hour_CMOS,11111111b,\
offset NullStr1,0,23,Xaxis,Yaxis,07,07,offset Alarm_Timer_Hour_Item_Lang_Tbl>
;R06		  offset NullStr1,0,23,Xaxis,Yaxis,07,07,offset NullStr>

ifndef	Alarm_Min_CMOS
Alarm_Min_CMOS	EQU	4eh
endif;	Alarm_Min_CMOS
		public	Alarm_Timer_Min_Item
Alarm_Timer_Min_Item	label	near
;R05	menuitem <NOMODBIN+KEYIN+SHOWNUM+DIGIT2,\
	menuitem <KEYIN+SHOWNUM+DIGIT2+NODEFAULT,\
		  offset A_M_str,NOCT,0,Alarm_Min_CMOS,11111111b,\
offset NullStr1,0,59,Xaxis+23,Yaxis,0,0,offset Alarm_Timer_Min_Item_Lang_Tbl>
;R06		  offset NullStr1,0,59,Xaxis+23,Yaxis,0,0,offset NullStr>

ifndef	Alarm_Sec_CMOS
Alarm_Sec_CMOS	EQU	4dh
endif;	Alarm_Sec_CMOS
		public	Alarm_Timer_Sec_Item
Alarm_Timer_Sec_Item	label	near
;R05	menuitem <NOMODBIN+KEYIN+SHOWNUM+DIGIT2,\
	menuitem <KEYIN+SHOWNUM+DIGIT2+NODEFAULT,\
		  offset A_S_str,NOCT,0,Alarm_Sec_CMOS,11111111b,\
offset NullStr1,0,59,Xaxis+26,Yaxis,0,0,offset Alarm_Timer_Sec_Item_Lang_Tbl>
;R06		  offset NullStr1,0,59,Xaxis+26,Yaxis,0,0,offset NullStr>

  IFDEF	Have_Keyboard_PowerOn_Item
DEFINE_ITEM	KB_Item
	menuitem <PMITEM+2,\
		offset KB_Str,NOCT,         00000001b,PF_CMOS+2,00010000b,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0, 0b,offset KB_Item_Lang_Tbl>
  ENDIF;Have_Keyboard_PowerOn_Item

ifndef	MOV_WO_ITEM_TO_CFEATURE				;R12
  IFNDEF	VT596					;R01 - starts
    ifdef	Wake_On_EXTSMI0_Support
DEFINE_ITEM	WO_Item
	menuitem <PMITEM+2,\
		offset WO_Str,NOCT,         00000001b,PF_CMOS+2,00010000b,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0, 0b,offset WO_Item_Lang_Tbl>
    endif;	Wake_On_EXTSMI0_Support
  ELSE;		VT596					;R01A - starts
    ifdef	Wake_On_GPI_Support
DEFINE_ITEM	WO_Item
	menuitem <PMITEM+2,\
		offset WOL_Str,NOCT,         00000001b,PF_CMOS+2,00010000b,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0, 0b,offset WO_Item_Lang_Tbl>
    endif;	Wake_On_GPI_Support			;R01A - ends
    ifdef	WAKE_LAN_BY_LID				;R03 - starts
DEFINE_ITEM	WO_Item
	menuitem <PMITEM+2,\
		offset WOL_Str,NOCT,         00000001b,PF_CMOS+2,00010000b,\
		offset Dis_Str,0,1,Xaxis,Yaxis,0, 0b,offset WO_Item_Lang_Tbl>
    endif;	WAKE_LAN_BY_LID				;R03 - ends
;R11A 	ifdef	LAN_Ctrl_BY_LID		;R11 - starts
;R11A DEFINE_ITEM	WO1_Item
;R11A menuitem <PMITEM+2,\
;R11A offset WOL1_Str,NOCT,         00000001b,LAN_Ctrl_CMOS,00001000b,\
;R11A offset Dis_Str,0,1,Xaxis,Yaxis,0, 0b,offset WO1_Item_Lang_Tbl>
;R11A 	endif;	LAN_Ctrl_BY_LID		;R11 - ends

  ENDIF;	VT596					;R01 - ends
endif;	MOV_WO_ITEM_TO_CFEATURE				;R12

Yaxis = 23
DEFINE_ITEM	Evt_INTR_Item
	menuitem <PMITEM+2,\
		offset Evt_INTR_Str,NOCT,         00000001b,PF_CMOS+6,10000000b,\
		offset On_Off_Val,0,1,Xaxis,Yaxis,00000001b,          10000000b,offset Evt_INTR_Item_Lang_Tbl>

DEFINE_ITEM            IRQ3_Event_Item
	menuitem <PMITEM,\
		offset IRQ3_Event_Str	    ,NOCT,   00000011b,PF_CMOS+3,00110000b,\
		offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000001b,		 00010000b,offset IRQ3_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ4_Event_Item
	menuitem <PMITEM,\
		offset IRQ4_Event_Str	    ,NOCT,00000011b,PF_CMOS+3,11000000b,\
		offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000001b,	     01000000b,offset IRQ4_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ5_Event_Item
	menuitem <PMITEM,\
		  offset IRQ5_Event_Str	    ,NOCT,     00000011b,PF_CMOS+4,00000011b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000001b,          00000001b,offset IRQ5_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ6_Event_Item
	menuitem <PMITEM,\
		  offset IRQ6_Event_Str	    ,NOCT,     00000011b,PF_CMOS+4,00001100b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000001b,	   00000100b,offset IRQ6_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ7_Event_Item
	menuitem <PMITEM,\
		  offset IRQ7_Event_Str	    ,NOCT,     00000011b,PF_CMOS+4,00110000b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000001b,	   00010000b,offset IRQ7_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ8_Event_Item
	menuitem <PMITEM,\
		  offset IRQ8_Event_Str	    ,NOCT,     00000011b,PF_CMOS+4,11000000b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000000b,	   00000000b,offset IRQ8_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ9_Event_Item
	menuitem <PMITEM,\
		  offset IRQ9_Event_Str	    ,NOCT,     00000011b,PF_CMOS+5,00000011b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000010b,	   00000010b,offset IRQ9_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ10_Event_Item
	menuitem <PMITEM,\
		  offset IRQ10_Event_Str    ,NOCT,     00000011b,PF_CMOS+5,00001100b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000010b,	   00001000b,offset IRQ10_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ11_Event_Item
	menuitem <PMITEM,\
		  offset IRQ11_Event_Str    ,NOCT,     00000011b,PF_CMOS+5,00110000b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000010b,	   00100000b,offset IRQ11_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ12_Event_Item
	menuitem <PMITEM,\
		  offset IRQ12_Event_Str    ,NOCT,        00000011b,PF_CMOS+5,11000000b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000001b,	      01000000b,offset IRQ12_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ13_Event_Item
	menuitem <PMITEM,\
		  offset IRQ13_Event_Str    ,NOCT,     00000011b,PF_CMOS+6,00000011b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000000b,	   00000001b,offset IRQ13_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ14_Event_Item
	menuitem <PMITEM,\
		  offset IRQ14_Event_Str    ,NOCT,     00000011b,PF_CMOS+6,00001100b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000001b,          00000100b,offset IRQ14_Event_Item_Lang_Tbl>

DEFINE_ITEM	       IRQ15_Event_Item
	menuitem <PMITEM,\
		  offset IRQ15_Event_Str    ,NOCT,     00000011b,PF_CMOS+6,00110000b,\
		  offset IRQ_Event_Val,0,2,Xaxis,Yaxis,00000000b,	   00000000b,offset IRQ15_Event_Item_Lang_Tbl>

  IFDEF	HDD_PWRDOWN_IN_SUSPEND		
	ifndef	HDD_always_PWRDOWN_IN_SUSPEND		;R14
DEFINE_ITEM     HDD_Power_Item
        menuitem <PMITEM,\
                  offset HDD_Power_Str             ,NOCT,00000100b,HDD_Power_Item_CMOS,HDD_Power_Item_CMOS_BIT,\
                  offset Dis_Str,0,1,Xaxis,Yaxis ,00000000b,    00000000b,offset HDD_Power_Item_Lang_Tbl>
	endif	;HDD_always_PWRDOWN_IN_SUSPEND		;R14
  ENDIF;HDD_PWRDOWN_IN_SUSPEND		 

  IFDEF	Break_Suspend_In_Mouse_CMOS
    ifndef	Break_Suspend_In_Mouse_CMOS_Bit
Break_Suspend_In_Mouse_CMOS_Bit	EQU	00001100b
    endif;	Break_Suspend_In_Mouse_CMOS_Bit
Yaxis = Yaxis + 1
DEFINE_ITEM     Mouse_Irq_Item
        menuitem <PMITEM,\
	offset Mous_Irq_Str,NOCT,00000011b,Break_Suspend_In_Mouse_CMOS,Break_Suspend_In_Mouse_CMOS_Bit,\
	offset Mous_Irq_Val,0,3,Xaxis,Yaxis,00000000b,00000000b,offset Mouse_Irq_Item_Lang_Tbl>
  ENDIF;Break_Suspend_In_Mouse_CMOS


endif;	PM_SUPPORT

PM_Feature_END		Label	Near
IF (offset PM_Feature_END) EQ (offset PM_Feature_START)
	PM_STAT		EQU	0 + ITEMDISABLE
ELSE
	PM_STAT		EQU	0
ENDIF
;---------------------------------------------------------------------

ifdef	ACPI_SUPPORT
ACPI_Option_Str         db      'ACPI function      : ',0
endif	;ACPI_SUPPORT

PM_Option_Str		db	'Power Management   : ',0
PM_Option_Var		db	'User Define',0
PM_Auto_String:

ifdef	PM_SUPPORT
 ifdef Disable_APM_when_PM_Disabled			;R13
			db	'Disabled   ',0		;R13
 else; Disable_APM_when_PM_Disabled			;R13
			db	'Disabled   ',1		;R12
 endif; Disable_APM_when_PM_Disabled			;R13
			db	'Min Saving ',0
			db	'Max Saving ',0

HDD_Timer_Str		db	'HDD Power Down     : ',0
HDD_Timer_Val		db	'Disable',0
			db	' 1 Min ',0
			db	' 2 Min ',0
			db	' 3 Min ',0
			db	' 4 Min ',0
			db	' 5 Min ',0
			db	' 6 Min ',0
			db	' 7 Min ',0
			db	' 8 Min ',0
			db	' 9 Min ',0
			db	'10 Min ',0
			db	'11 Min ',0
			db	'12 Min ',0
			db	'13 Min ',0
			db	'14 Min ',0
			db	'15 Min ',0
ifndef	No_PM_Timer_Show_In_PF				;R04
Timer_Val_Str:
			ADDX	<,7>
			db	V_WARN,'** PM Timers **',0
endif;	No_PM_Timer_Show_In_PF				;R04

Doze_Str		db	'Doze Mode          : ',0
Suspend_Str		db	'Suspend Mode       : ',0

Doze_Val:
Suspend_Val		db	'Disable',0
			db	' 5 Sec ',1
			db	'10 Sec ',0
			db	'20 Sec ',0
			db	'30 Sec ',0
			db	'40 Sec ',0
			db	' 1 Min ',0
			db	' 2 Min ',0
			db	' 4 Min ',0
			db	' 6 Min ',0
			db	' 8 Min ',0
			db	'10 Min ',0
			db	'20 Min ',0
			db	'30 Min ',0
			db	'40 Min ',0
			db	' 1 Hour',0

PM_Event_Str:
			ADDX	<,7>
			db	V_WARN,'** PM Events **',0

M_Evt_VGA_Str		db	'VGA                : ',0

  IFDEF	Have_Conserve_Item
Conserve_Mode_Str	db	'Conserve Mode      : ',0
  ENDIF;Have_Conserve_Item

M_Evt_LPT_COM_Str	db	'LPT & COM          : ',0
M_Evt_LPT_COM_Val	db	'NONE   ',0
			db	'LPT    ',0
			db	'COM    ',0
			db	'LPT/COM',0

M_Evt_HDD_Str		db	'HDD & FDD          : ',0
Evt_DMA_Str		db	'DMA/master         : ',0
Evt_INTR_Str		db	'Primary INTR       : ',0
  IFDEF	Have_Keyboard_PowerOn_Item				
KB_Str			db	'Keyboard Resume    : ',0	
  ENDIF;Have_Keyboard_PowerOn_Item				
ifndef	MOV_WO_ITEM_TO_CFEATURE				;R12
  IFNDEF	VT596					;R01 - starts
    ifdef	Wake_On_EXTSMI0_Support
      IFDEF	WOL_String_In_Wake_On_EXTSMI0_Support		;R01B
WO_Str			db	'Wake Up On LAN     : ',0	;R01B
      ELSE;	WOL_String_In_Wake_On_EXTSMI0_Support		;R01B
WO_Str			db	'EXTSMI0 Resume     : ',0
      ENDIF;	WOL_String_In_Wake_On_EXTSMI0_Support		;R01B
    endif;	Wake_On_EXTSMI0_Support
  ELSE;		VT596					;R01A - starts
    ifdef	Wake_On_GPI_Support
      IFDEF	WOL_String_In_Wake_On_GPI_Support
WOL_Str			db	'Wake Up On LAN     : ',0
      ELSE;	WOL_String_In_Wake_On_GPI_Support
WOL_Str			db	'GPI Resume         : ',0
      ENDIF;	WOL_String_In_Wake_On_GPI_Support
    endif;	Wake_On_GPI_Support			;R01A - ends
    ifdef	WAKE_LAN_BY_LID				;R03 - starts
WOL_Str			db	'Wake Up On LAN     : ',0
    endif;	WAKE_LAN_BY_LID				;R03 - ends
;R11A 	ifdef	LAN_Ctrl_BY_LID		;R11 - starts
;R11A WOL1_Str		db	'Wake Up On LAN     : ',0
;R11A 	endif;	LAN_Ctrl_BY_LID		;R11 - ends

  ENDIF;	VT596					;R01 - ends
endif;	MOV_WO_ITEM_TO_CFEATURE				;R12

Alarm_Str		db	'RTC Alarm Resume   : ',0	
ifdef	WAKE_LAN_BY_RI						;R02
Ring_Str		db	'Wake Up On LAN/Ring: ',0	;R02
else;	WAKE_LAN_BY_RI						;R02
Ring_Str		db	'Modem Ring Resume  : ',0	
endif;	WAKE_LAN_BY_RI						;R02
A_D_str			db      'Date (of Month)    : ',0
A_H_str			db      'Timer (hh:mm:ss)   : ',0
A_M_str			db      ':',0
A_S_str			db      ':',0
Nullstr1		db	0
PWRBTN_OVRD_Str         db      'Soft-Off by PWRBTN : ',0
PWRBTN_OVRD_Val         db      'Delay 4 Sec',0
			db      'Instant-Off',0		
ifdef	Record_PWRON_Status			;R07 - starts
RdRsmSts_Str		db	'PWRON After PW-Fail: ',0
RdRsmSts_Val		db	'Former-Sts',0
			db	'          ',1
			db	'On        ',0
			db	'Off       ',0
endif;	Record_PWRON_Status			;R07 - ends

  IFDEF	Notebook_Power_Management
Suspend_Option_Str	db	'Suspend Option     : ',0
Suspend_Option_Val	db	'Static Suspend',0
			db	'0V Suspend    ',0
			db	'5V Suspend    ',1
;R09 - starts
OS_Type_Str		db	'Operating System   : ',0
OS_Type_Val		db	'DOS    ',0
			db	'Win 3.1',0
			db	'Win 95 ',0
;R09 - ends
  ENDIF;Notebook_Power_Management

  IFDEF	Have_Fan_Control_Item_In_GPO
Fan_Control_Str		db	'CPU Fan In Suspend : ', 0	
Fan_Control_Val		db	'Off ',0
			db	'On  ',0
  ENDIF;Have_Fan_Control_Item_In_GPO

IRQ3_Event_Str		db	'IRQ3  (COM 2)      : ',0
IRQ4_Event_Str		db	'IRQ4  (COM 1)      : ',0
IRQ5_Event_Str		db	'IRQ5  (LPT 2)      : ',0
IRQ6_Event_Str		db	'IRQ6  (Floppy Disk): ',0
IRQ7_Event_Str		db	'IRQ7  (LPT 1)      : ',0
IRQ8_Event_Str		db	'IRQ8  (RTC Alarm)  : ',0
IRQ9_Event_Str		db	'IRQ9  (IRQ2 Redir) : ',0
IRQ10_Event_Str		db	'IRQ10 (Reserved)   : ',0
IRQ11_Event_Str		db	'IRQ11 (Reserved)   : ',0
IRQ12_Event_Str		db	'IRQ12 (PS/2 Mouse) : ',0
IRQ13_Event_Str		db	'IRQ13 (Coprocessor): ',0
IRQ14_Event_Str		db	'IRQ14 (Hard Disk)  : ',0
IRQ15_Event_Str		db	'IRQ15 (Reserved)   : ',0

  IFDEF	HDD_PWRDOWN_IN_SUSPEND
	ifndef	HDD_always_PWRDOWN_IN_SUSPEND		;R14
HDD_Power_Str           db	'HDD Down In Suspend: ',0
	endif	;HDD_always_PWRDOWN_IN_SUSPEND		;R14
  ENDIF;HDD_PWRDOWN_IN_SUSPEND

  IFDEF	Break_Suspend_In_Mouse_CMOS				
Mous_Irq_Str		db      'Mouse Break Suspend: ',0
Mous_Irq_Val		db      'Yes      ',0
			db      'No (COM1)',0
			db      'No (COM2)',0
			db      'No (PS/2)',0
  ENDIF;Break_Suspend_In_Mouse_CMOS				

On_Off_Val		db	'OFF',0
			db	'ON ',0

IRQ_Event_Val:
                        db      'Disabled ',0
			db	'Primary  ',0
        		db	'Secondary',0

Wait_APM_Str		db	'PM Control by APM  : ',0
Wait_APM_Val		db	'No ',0
			db	'Yes',0

Video_Off_Str		db	'Video Off After    : ',0
Video_Off_Val		db	'NA     ',0
			db	'Suspend',0
			db	'???????',1
			db	'Doze   ',0

Modem_Event_Str		db	'MODEM Use IRQ      : ',0
Modem_Event_Val		db	'NA',0
			db	'??',1
			db	'??',1
			db	'3 ',0
			db	'4 ',0
			db	'5 ',0
			db	'??',1
			db	'7 ',0
			db	'??',1
			db	'9 ',0
			db	'10',0
			db	'11',0

VGA_Type_Str		db	'Video Off Method   : ',0
VGA_Type_Val		db	'Blank Screen  ',0
			db	'V/H SYNC+Blank',0
  IFNDEF NO_DPMS_SUPPORT
			db	'??????????????',1
			db	'DPMS Support  ',0
  ENDIF; NO_DPMS_SUPPORT
endif	;PM_SUPPORT

ifdef	PM_SUPPORT
Alarm_Timer_SHOW	PROC	NEAR

		mov	di,offset Alarm_Timer_Items
		xor	cx,cx
		call	If_CX_Then_Dis

		ret

Alarm_Timer_SHOW	ENDP

Alarm_Timer_Items:
		dw	offset Alarm_Timer_Date_Item
		dw	offset Alarm_Timer_Hour_Item
		dw	offset Alarm_Timer_Min_Item
		dw	offset Alarm_Timer_Sec_Item
		dw	-1


PM_AUTO_SHOW	PROC	NEAR

		mov	di,offset IRQ_Items
		xor	cx,cx
		call	If_CX_Then_Dis

		ret

PM_AUTO_SHOW	ENDP

IRQ_Items:
		dw	offset IRQ3_Event_Item
		dw	offset IRQ4_Event_Item
		dw	offset IRQ5_Event_Item
		dw	offset IRQ6_Event_Item
		dw	offset IRQ7_Event_Item
		dw	offset IRQ8_Event_Item
		dw	offset IRQ9_Event_Item
		dw	offset IRQ10_Event_Item
		dw	offset IRQ11_Event_Item
		dw	offset IRQ12_Event_Item
		dw	offset IRQ13_Event_Item
		dw	offset IRQ14_Event_Item
		dw	offset IRQ15_Event_Item
		dw	-1
;R09 - starts
IFDEF	NoteBook_Power_Management
Show_OS_Select	Proc	Near
		xor	cx, cx
		mov	di, offset OS_Tbl
		call	If_CX_Then_Dis
		ret
Show_OS_Select	Endp
OS_Tbl:
		dw	offset OS_Type_Item
		dw	-1
ENDIF	;NoteBook_Power_Management
;R09 - ends
endif	;PM_SUPPORT

FCODE		ENDS
.386
XGROUP          GROUP   XCODE
XCODE           SEGMENT USE16 PARA PUBLIC 'XCODE'
                ASSUME  CS:XGROUP,ES:XGROUP

ifdef   PM_SUPPORT
    ifndef Dont_Show_Rtc_Alarm_Item
DEFINE_ITEM_MSG Alarm_Item, Alarm_Str, Dis_Str, ,NEED_STD_HELP
    endif; Dont_Show_Rtc_Alarm_Item
  IFDEF	ACPI_SUPPORT
        DEFINE_ITEM_MSG ACPI_option_Item, ACPI_Option_Str, Ena_Str, ,NEED_STD_HELP
  ENDIF;ACPI_SUPPORT
        DEFINE_ITEM_MSG PM_Option_Item, PM_Option_Str, PM_Option_Var, ,NEED_STD_HELP
        DEFINE_ITEM_MSG Wait_APM_Item, Wait_APM_Str, Wait_APM_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG Video_Off_Item, Video_Off_Str, Video_Off_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG VGA_Type_Item, VGA_Type_Str, VGA_Type_Val, ,NEED_STD_HELP
  IFNDEF No_Have_Conserve_Item
        DEFINE_ITEM_MSG Conserve_Mode_Item, Conserve_Mode_Str, Dis_Str, ,NEED_STD_HELP
  ENDIF; No_Have_Conserve_Item
        DEFINE_ITEM_MSG Modem_IRQ_Item, Modem_Event_Str, Modem_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG PWRBTN_OVRD_Item, PWRBTN_OVRD_Str,  PWRBTN_OVRD_Val, ,NEED_STD_HELP
  ifdef	Record_PWRON_Status			;R07 - starts
	DEFINE_ITEM_MSG  Record_PWRON_Item,RdRsmSts_Str,RdRsmSts_Val, ,NEED_STD_HELP
  endif;Record_PWRON_Status			;R07 - ends
  IFNDEF	No_PM_Timer_Show_In_PF				;R04
        DEFINE_ITEM_MSG Timer_Val_Item, Timer_Val_Str, NullStr, ,NEED_STD_HELP
  ENDIF;	No_PM_Timer_Show_In_PF				;R04
        DEFINE_ITEM_MSG HDD_Timer_Item, HDD_Timer_Str, HDD_Timer_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG Doze_Timer_Item, Doze_Str, Doze_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG Susp_Timer_Item, Suspend_Str, Suspend_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG PM_Event_Item, PM_Event_Str, NullStr, ,NEED_STD_HELP
        DEFINE_ITEM_MSG M_Evt_VGA_Item, M_Evt_VGA_Str, Dis_Str, ,NEED_STD_HELP
        DEFINE_ITEM_MSG Evt_LPT_COM_Item, M_Evt_LPT_COM_Str, M_Evt_LPT_COM_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG Evt_HDD_Item, M_Evt_HDD_Str, Dis_Str, ,NEED_STD_HELP
        DEFINE_ITEM_MSG Evt_DMA_Item, Evt_DMA_Str, Dis_Str, ,NEED_STD_HELP
   ifdef        Have_Keyboard_PowerOn_Item
        DEFINE_ITEM_MSG KB_Item, KB_Str, Dis_Str, ,NEED_STD_HELP
   endif;       Have_Keyboard_PowerOn_Item
ifndef	MOV_WO_ITEM_TO_CFEATURE				;R12
  IFNDEF	VT596					;R01 - starts
    ifdef	Wake_On_EXTSMI0_Support
        DEFINE_ITEM_MSG WO_Item, WO_Str, Dis_Str, ,NEED_STD_HELP
    endif;	Wake_On_EXTSMI0_Support
  ELSE;		VT596					;R01A - starts
    ifdef	Wake_On_GPI_Support
        DEFINE_ITEM_MSG WO_Item, WO_Str, Dis_Str, ,NEED_STD_HELP
    endif;	Wake_On_GPI_Support			;R01A - ends
    ifdef	WAKE_LAN_BY_LID				;R03 - starts
;R08    DEFINE_ITEM_MSG WO_Item, WOL_Str, Dis_Str, ,NEED_STD_HELP
	DEFINE_ITEM_MSG WO_Item, , Dis_Str, ,NEED_STD_HELP		;R08
    endif;	WAKE_LAN_BY_LID				;R03 - ends
;R11A 	ifdef	LAN_Ctrl_BY_LID		;R11
;R11A 	DEFINE_ITEM_MSG WO1_Item, , Dis_Str, ,NEED_STD_HELP	;R11
;R11A 	endif;	LAN_Ctrl_BY_LID		;R11
  ENDIF;	VT596					;R01 - ends
endif;	MOV_WO_ITEM_TO_CFEATURE				;R12
   ifdef ABIT_Have_Suspend_Fan_Item		 
        DEFINE_ITEM_MSG Fan_Item, Fan_Str, Dis_Str, ,NEED_STD_HELP 
   endif;ABIT_Have_Suspend_Fan_Item		 
        DEFINE_ITEM_MSG Ring_Item, Ring_Str, Dis_Str, ,NEED_STD_HELP
  ifdef  Have_Fan_Control_Item_In_GPO
	DEFINE_ITEM_MSG	 Fan_Control_Item, Fan_Control_Str, Fan_Control_Val, ,NEED_STD_HELP
  endif; Have_Fan_Control_Item_In_GPO

;R06 - starts
DEFINE_ITEM_MSG	Alarm_Timer_Date_Item, A_D_Str, NullStr, , NEED_STD_HELP
DEFINE_ITEM_MSG	Alarm_Timer_Hour_Item, A_H_Str, NullStr, , NEED_STD_HELP
DEFINE_ITEM_MSG	Alarm_Timer_Min_Item , A_M_Str, NullStr, , NEED_STD_HELP
DEFINE_ITEM_MSG	Alarm_Timer_Sec_Item , A_S_Str, NullStr, , NEED_STD_HELP
;R06 - ends
        DEFINE_ITEM_MSG Evt_INTR_Item, Evt_INTR_Str, Dis_Str, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ3_Event_Item, IRQ3_Event_Str     ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ4_Event_Item, IRQ4_Event_Str     ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ5_Event_Item, IRQ5_Event_Str     ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ6_Event_Item, IRQ6_Event_Str     ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ7_Event_Item, IRQ7_Event_Str     ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ8_Event_Item, IRQ8_Event_Str     ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ9_Event_Item, IRQ9_Event_Str     ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ10_Event_Item, IRQ10_Event_Str    ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ11_Event_Item, IRQ11_Event_Str    ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ12_Event_Item, IRQ12_Event_Str    ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ13_Event_Item, IRQ13_Event_Str    ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ14_Event_Item, IRQ14_Event_Str    ,IRQ_Event_Val, ,NEED_STD_HELP
        DEFINE_ITEM_MSG IRQ15_Event_Item, IRQ15_Event_Str    ,IRQ_Event_Val, ,NEED_STD_HELP
ifdef   HDD_PWRDOWN_IN_SUSPEND
ifndef	HDD_always_PWRDOWN_IN_SUSPEND		;R14
        DEFINE_ITEM_MSG HDD_Power_Item, HDD_Power_Str, Dis_Str, ,NEED_STD_HELP
endif	;HDD_always_PWRDOWN_IN_SUSPEND		;R14
endif;  HDD_PWRDOWN_IN_SUSPEND
ifdef	Break_Suspend_In_Mouse_CMOS
        DEFINE_ITEM_MSG Mouse_Irq_Item, Mous_Irq_Str, Mous_Irq_Val, ,NEED_STD_HELP
endif;	Break_Suspend_In_Mouse_CMOS
endif;  PM_SUPPORT
        
XCODE           ENDS


		END
