  MOS Editor 

     Assembler.     
 Turbo Assembler  Borland     P166/16Mb/3.2Gb.
     586, 486   AWARD 
BIOS.         BIOS. 
        BIOS  .  
,         .

    .      
.  :     ;  
     .     
       ,     
      , ..    
   .

 .      (main),  
     ,   (     
)     .     
   ,       
    .      
  , , ,  .  Cmos Editor  
     . ,         
 .       .   
     .    -   
   -   CMOS- 
   .

         Windows,      
BIOS,   BIOS      .

            
   .       
 
      ,    cmos.asm, :

%TITLE " CMOS  RTS "
MASM
MODEL	small
;******************************************************************************
.386
.data	;  *******************************************************

	; 
	stroka	DB	00h	;   
	kolonka	DB	00h	;   
	tek_el	DB	00h	;    
	firstp_val	DB	00h	;1-     ASCII
	secondp_val	DB	00h	;2-     ASCII
	svalue	DB	00h	;   CMOS  RTS 
	evalue	DB	00h	;   CMOS  RTS 
	color	DB	0Fh	;     
	bit_number	DB	30h	; 
	file_name	DB	"CMOS.BAK",0
	file_name2	DB	"CMOS.SAV",0
	handle	DW	?
	screeng_mode	DB	?	; 
	count		DB	1	;
	chislo	DB	0	;bcd 
	ascii_code	DB	0h
	scan_code	DB	0h
	page_index	DW	0h

	; 
	message1	DB	"Programmed by Pashkov Aleksey"
	dlmessage1	=	$-message1
	message2	DB	"06.99   -= Phenix  Hackers =-"
	dlmessage2	=	$-message2
	message3	DB	"v2.2"
	dlmessage3	=	$-message3
	message4	DB	"    hex  - "
	dlmessage4	=	$-message4
	message5	DB	" ..  Press any key"
	dlmessage5	=	$-message5
	message6	DB	"CMOS   .   "
	dlmessage6	=	$-message6
	message7	DB	"   hex  - "
	dlmessage7	=	$-message7
	message8	DB	"MOS   .   "
	dlmessage8	=	$-message8
	clear_str	DB	"			"
	dlclear_str	=	$-clear_str
	zagolovok	DB	"    "
	Key_Menu	DB	"F2-CMOS|F3-CMOS|F4-|F10-EXIT"
	error_message	DB	"Can't create file"

;        

;1-  
mes0	DB	"			"
	DB	"		 	"
	DB	"			"
	DB	"		 	"
	DB	"			"
	DB	"		 	"
	DB	"		 	"
	DB	"		 	"
	DB	"			"
	DB	"			"
	DB	"		RTS STATUS REGISTER A ( )	"
	DB	"		{   0  3	"
	DB	"		  ,	"
	DB	"		  1024 	"
	DB	"		    0110                           }"
	DB	"	 . 0=  	"
	DB	"	{   4  6 -  ,	"
	DB	"	 32.768 	"
	DB	"	    010                            }"
	DB	"		"
	DB	"	RTS STATUS REGISTER B ( )	"
	DB	"	/ . 0= 	"
	DB	"	12/24 -  : 1=24 	"
	DB	"	BCD/BIN : 0=BCD	"
	DB	"	   (. 0Ah): 0=	"
	DB	"	.     : 0=  "
	DB	"	   : 0=	"
	DB	"	  : 0=	"
	DB	"	 : 0= 	"
	DB	"		"
	DB	"	RTS STATUSREGISTER C   - "
	DB	"		"
	DB	"		"
	DB	"		"
	DB	"		"
	DB	"	UF    	"
	DB	"	AF   	"
	DB	"	PF  	"
	DB	"	IRQF   	"
dl0	=	$-mes0

;2-  
mes0D	DB	"	RTS STATUS REGISTER D	"
	DB	"		"
	DB	"		"
	DB	"		"
	DB	"		"
	DB	"		"
	DB	"		"
	DB	"		"
	DB	"	: 1=, 0= 	"
	DB	"		"
	DB	"	POST DIAGNOSTIC STATUS BYTE	"
	DB	"	1=	"
	DB	"	1=	"
	DB	"	1=Time Valid    -25:98"
	DB	"	1=HDD Erorr    	"
	DB	"	1=-  ,-    CMOS"
	DB	"	1=Bad Config -  	"
	DB	"	1=Checksum Bad -    CMOS	"
	DB	"	1=Power Lost -   CMOS	"
	DB	"		"
	DB	"	 POST    "
	DB	"	00=   	"
	DB	"	01=  	"
	DB	"	02=  	"
	DB	"	03=   	"
	DB	"	04=POST    	"
	DB	"	05=JMR FAR [0:0467h]  -  "
	DB	"	06=   	"
	DB	"	07=    	"
	DB	"	08=    	"
	DB	"	09=  Extendede Memory (INT15h)	"
	DB	"	0A=JMR FAR[0:0467h] -  "
	DB	"	0B= 80386	"
	DB	"				"
	DB	"	 			"
	DB	"	  B 0000=, 0001=360 		"
	DB	"	  B 0010=1,2 		"
	DB	"	  B 0011=720 		"
	DB	"	  B 0100=1,4 		"
	DB	"	  A 0000=, 0001=360 		"
	DB	"	  A 0010=1,2 		"
	DB	"	  A 0011=720 		"
	DB	"	  A 0100=1,4 		"
dl0D	=	$-mes0D

;3-  
mes10	DB	"			"
	DB	"	 			"
	DB	"	 1  { 0000=		"
	DB	"	 1       0001  1110		"
	DB	"	 1       1  14		"
	DB	"	 1    1111=   19h	}"
	DB	"	 0  { 0000=		"
	DB	"	 0       0001  1110		"
	DB	"	 0       1  14		"
	DB	"	 0    1111=   1Ah	}"
	DB	"				"
	DB	"			"
	DB	"	 		"
	DB	"	1= 		"
	DB	"	1= 		"
	DB	"			"
	DB	"			"
	DB	"	{  2-3    00-EGA  VGA "
	DB	"	01-CGA 40 , 10-CGA 80 , 11-MDA 80 	}"
	DB	"	{  6-7  :		"
	DB	"	00 - 1, 01 - 2	}"
	DB	"				"
	DB	"	{   ,Kb		"
	DB	"	  Low/High 0280h=640K	}"
	DB	"	{   , Kb		"
	DB	"	  Low/High	}"
	DB	"	{    C,D		"
	DB	"	  (  PC/2 -  )	}"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
dl10	=	$-mes10

;4-  
mes20	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"			"
	DB	"	{   CMOS c 		"
	DB	"	    10h  20h (High/Low)	}"
	DB	"	{    , Kb	"
	DB	"	  (High/Low)                                          }"
	DB	"	 PS/2  CRS- CMOS  10h-31h (High/Low) "
	DB	"	 POST	"
	DB	"	?	"
	DB	"	?	"
	DB	"	?	"
	DB	"	?	"
	DB	"	?	"
	DB	"	?	"
	DB	"	128Kb    1Mb,1=,  "
	DB	"	SETUP :1=    SETUP	"
	DB	"		"
	DB	"	 (   	"
	DB	"	     ).	"
	DB	"	 (   	"
	DB	"	     ).	"
	DB	"	 (   	"
	DB	"	     ).	"
	DB	"	 (   	"
	DB	"	     ).	"
	DB	"	 (   	"
	DB	"	     ).	"
	DB	"	 (   	"
	DB	"	     ).	"
dl20			=	$-mes20

;     

;     1, 2, 3, 4  
mes_adr		DW	mes0, mes0D, mes10, mes20

;      1, 2, 3, 4  
mes_dl		DW	dl0, dl0D, dl10, dl20

;            
; 1, 2, 3, 4  
mas_svalue	DB	00h,0Dh,11h,21h

;            1,2, 
3,4  
mas_evalue	DB	0Ch, 10h, 20h, 3Fh

;****************************************************************************** 
.stack  256	;  
;******************************************************************************

;****************************************************************************** 
.code	; 
;       .  
;        . ..  
;     .    
   screen_mode.

; :
;screeng_mode -   

	get_screeng_mode proc
		push	ax
		mov	ah,0Fh
		int	10h
		mov	screeng_mode,al
		pop	ax
		ret
	get_screeng_mode endp 
;******************************************************************************

;    ************************************** 
; :
;screeng_mode -       

set_screeng_mode proc
		mov	ah,00h
		mov	al,screeng_mode
		int	10h
		ret
	set_screeng_mode endp 
;******************************************************************************
;   *****************************************************
	clear_screeng proc
		mov	ah,00h
		mov	al,03h
		int	10h
		mov	ah,11h
		mov	al,12h
		mov	bl,00h
		int	10h
		ret
	clear_screeng endp 
;******************************************************************************
;     *********************************
          
          , 
..       .

       
; 
;chislo  hex       BCD 

	read_int proc
		push	ax
cyclRC:	call	press_key
		cmp	scan_code,01h
		je	exit_nsk
		cmp	ascii_code,00h
		je	cyclRC
		;    
		mov	al,ascii_code
		mov	tek_el,al
		call	print_el 
		;    0  9
cyclRC1:	cmp	ascii_code,30h
		jnae	cyclRC
		cmp	ascii_code,39h
		jna	RC1     
		;  "A"  "F"
cyclRC2:	cmp	ascii_code,41h
		jnae	cyclRC
		cmp	ascii_code,46h
		jna	RC2     
		;  "a"  "f"
cyclRC3:	cmp	ascii_code,61h
		jnae	cyclRC
		cmp	ascii_code,66h
		jnbe	cyclRC
		sub	ascii_code,57h
		jmp	next_int
RC1:		sub	ascii_code,30h
		jmp	next_int
RC2:		sub	ascii_code,37h
		jmp	next_int
next_int:	call	cursor_position
		call	cursor_sdvig
		cmp	count,2
		je	second_int
		mov	ah,ascii_code
		shl	ah,4
second_int:	inc	count
		cmp	count,2
		jna	cyclRC
		or	ah,ascii_code
		mov	chislo,ah
		call	cursor_sdvig
		mov	count,1
exitRI:
		pop	ax
		ret
	read_int endp 
;*****************************************************************************
;        *********
            
..       .
; 
;firstp_val -   
;secondp_val    

	print_h_el proc
		push	ax
		push	bx
		push	cx
		push	dx
		mov	al,firstp_val	;  al   
		mov	ah,09h	;  BIOS
		mov	bl,0Fh	; 
		mov	cx,01h	; 
		int	10h	;  BIOS
		;     
		call	cursor_sdvig
		mov	al,secondp_val  ;  al   
		mov	ah,09h	;  BIOS
		mov	bl,0Fh	; 
		mov	cx,01h	; 
		int	10h	;  BIOS
		call	cursor_sdvig
		mov	al,"h"
		mov	ah,09h
		mov	bl,07h
		mov	cx,01h
		int	10h
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		ret
	print_h_el endp 
;*****************************************************************************
;       *************************** 
; 
;tek_el -    
;svalue -    print_el_bin proc
	push	ax
	push	dx
	call	readSR
	mov	dl,tek_el
	mov	ah,00000001b
	;  
	mov	dh,svalue
	mov	tek_el,dh
	call	filter
	call	cursor_position
	add	kolonka,2
	call	print_position
	call	print_h_el
	;*******************
;      mov	dh,dl
	mov	tek_el,dh
	call	filter
	mov	kolonka,10
	call	print_position
	call	print_h_el
	;***********************************************
startpeb:
	mov	dh,dl
	mov	tek_el,dh
	;  
	push	ax
	mov	ah,bit_number
	mov	tek_el,ah
	mov	kolonka,17
	call	print_position
	call	print_el
	inc	ah
	mov	bit_number,ah
	pop	ax
	;*****************
;     
	mov	al,dl
	and	al,ah
	cmp	al,00h
	je	noll
	mov	tek_el,"1"
	jmp	peb1
noll:
	mov	tek_el,"0"
peb1:
	mov	kolonka,21
	call	print_position
	call	print_el
	call	corretka
	call	cursor_position
;***************************************
	shl	ah,1
		cmp	ah,00h
		jne	startpeb
		mov	bit_number,30h
		call	corretka
		pop	dx
		pop	ax
		ret
	print_el_bin endp 
;******************************************************************************
;      **************************************
..           
       

; 
;tek_el -  
	print_el proc
		push	ax
		push	dx
		mov	al,tek_el	;  al   
		mov	ah,09h	;  BIOS
		mov	bl,0Fh	; 
		mov	cx,01h	; 
		int	10h	;  BIOS
		pop	dx
		pop	ax
		ret
	print_el endp 
;*****************************************************************************

;      *********************************** 
;  bp -   , cx -  
	print_string proc
		push	ax
		mov	ah,13h
		mov	al,01h	;    
		mov	bh,00h	;  
		mov	bl,color	
		mov	dh,stroka
		mov	dl,kolonka
		int	10h
		;  
		mov	color,0Fh
		;********************************
		pop	ax
		ret
	print_string endp 
;*****************************************************************************
;       ****************************** 
..     ,  ,   
    ,       
  

cursor_sdvig proc
		push	ax
		call	cursor_position
		inc	kolonka
		call	print_position
		pop	ax
		ret
	cursor_sdvig endp 
;******************************************************************************

;     ******************************** 
..     ,  ,  
  ,        
 

; 
;stroka - 
;kolonka - 
	cursor_position proc
		push	ax
		push	bx
		push	dx
		mov	ah,03h
		mov	bh,00h
		int	10h
		mov	stroka,dh
		mov	kolonka,dl
		pop	dx
		pop	bx
		pop	ax
		ret
	cursor_position endp 
;******************************************************************************

;   ***************************************************** 
..     ,     
  ,         .

; 
;color
;kolonka
;stroka

	clear_string proc
		push	bp
		push	cx
		call	print_position
		mov	bp,offset clear_str
		mov	cx,dlclear_str
		call	print_string
		pop	cx
		pop	bp
		ret
	clear_string endp 
;******************************************************************************

;   ******************************************* 
..     ,     
   ,       
  

; 
;stroka - 
;kolonka - 
	print_position proc
		push	ax
		push	dx
		mov	ah,02h
		mov	dh,stroka
		mov	dl,kolonka
		int	10h
		pop	dx
		pop	ax
		ret
	print_position endp 
;*****************************************************************************
;   ,      ****
;         
;  .     print_h_el

; 
;tek_el -  
	filter proc
		push	ax
		push	dx
;   ****************************************** mov
	ah,tek_el	; ah  
		and	ah,00001111b	;  
		cmp	ah,0Ah	;   0Ah
		jae	symb1	;  AL>=0Ah
		add	ah,30h	; al ASCII      al
		mov	secondp_val,ah  ; ...   
		jmp	tetr2
	symb1:  ;     - ABCDEF
		add	ah,37h	; al ASCII      al
		mov	secondp_val,ah  ; ...   
		jmp	tetr2
	tetr2:  ;   ***********************************
		mov	ah,tek_el	; al  
		shr	ah,4	;         

		cmp	ah,0Ah	; al  0Ah
		jae	symb2   ;  AL>=0Ah
		add	ah,30h	; al ASCII      al
		mov	firstp_val,ah	; ...   
		jmp	exit
	symb2:
		add	ah,37h	; al ASCII      al
		mov	firstp_val,ah	; ...   
	exit:	pop	dx
		pop	ax
		ret
	filter endp
;*****************************************************************************
;     **************************************
..     ,    , 
        

	corretka proc
		push	ax
		push	dx
		mov	ah,02h
		mov	dl,13
		int	21h
		mov	ah,02h
		mov	dl,10
		int	21h
		pop	dx
		pop	ax
		ret
	corretka endp
;*****************************************************************************

;    CMOS    () ********
; 
;svalue -      
; 
;tek_el -  
	readSR proc
		push	ax
		mov	al,svalue       ;    
		out	70h,al          ;     smoc rts
		wait
		xor	ax,ax           ;  ax
		in	al,71h          ;   al     
smoc rts
		wait
		mov	tek_el,al       ; tek_el  
		pop	ax
		ret
	readSR endp 
;*****************************************************************************

;    CMOS    () ********

; 
;tek_el -  
;svalue - 
	writeSR proc
		push	ax
		mov	al,svalue
		out	70h,al
		mov	al,tek_el
		out	71h,al
		pop	ax
		ret
	writeSR endp 
;******************************************************************************
;    ****************************************************
        BIOS  16
    ,   .
; 
;ascii_code  ASCII   
;scan_code     

	press_key proc
		push	ax
		mov	ah,00h
		int	16h
		mov	ascii_code,al
		mov	scan_code,ah
		pop	ax
		ret
	press_key endp 
;******************************************************************************
;    ************************************************
        .     4 
 .          
 page_index
; 
;page_index -  
	scr_page    proc
		push	ax
		push	bx
		push	si

;           
;page_index
mov	si,page_index
		mov	al,mas_evalue[si]
		mov	evalue,al
		mov	al,mas_svalue[si]
		mov	svalue,al
		mov	bx,si
		add	bx,bx
		mov	bp,mes_adr[bx]
		mov	cx,mes_dl[bx]
		pop	si
		pop	bx
		pop	ax
		push	ax

		call	clear_screeng

		push	bp
		push	cx

		; 
		call	cursor_position
		mov	bp,offset zagolovok
		mov	cx,34
		mov	color,02h
		call	print_string
		call	corretka

		;  - 
		mov	kolonka,0
		mov	stroka,49
		mov	color,0Dh
		mov	bp,offset Key_Menu
		mov	cx,60
		call	print_string
		;******************

		pop	cx
		pop	bp

		; 
		mov	stroka,02h
		call	print_string
		;***************
		;   
		call	print_position
		call	menu_byte       ;      
		;**************************

		;call	 press_key

		pop	ax
		ret
	scr_page endp 
;****************************************************************************** 

;           ************
         
.          
; 
;svalue - 
	menu_byte proc
		push	ax
		push	dx
	start:
		mov	dh,svalue       ;  dh   
		mov	tek_el,dh       ;    tek_el

;       
cmp	dh,0Ah
		je	bin_el	; 
		cmp	dh,0Bh
		je	bin_el	; 
		cmp	dh,0Ch
		je	bin_el	; 
		cmp	dh,0Dh
		je	bin_el	; 
		cmp	dh,0Eh
		je	bin_el	; 
		cmp	dh,10h
		je	bin_el2	; 
		cmp	dh,12h
		je	bin_el	; 
		cmp	dh,14h
		je	bin_el	; 
		cmp	dh,33h
		je	bin_el	; 
		;*************************************************************
; 
;    2      call
	cursor_position ;  
		add	kolonka,02h     ;     2
		call	print_position  ; 
		;***************************************************************
		call	filter
		call	print_h_el      ;   
;    6      call
	cursor_position ;  
		add	kolonka,6h      ;     2
		call	print_position  ; 
		;*****************************************************************
		;   
		call	readSR
		call	filter
		call	print_h_el
		call	corretka
		;****************************************
	exit_mbp:
		mov	ah,svalue
		inc	ah
		mov	svalue,ah
	cmp	ah,evalue
	jbe start
		pop	dx
		pop	ax
		ret

	; 
	bin_el:
		call	corretka
		call	print_el_bin
		jp exit_mbp
	bin_el2:
		mov	stroka,36
		call	print_position
		call	corretka
		call	print_el_bin
		jp exit_mbp
	menu_byte endp 
;******************************************************************************
;     ********************************************
         
error_file proc
		mov	bp,offset error_message
		mov	cx,16
		call print_string
		jmp	exit_dos
		ret
	error_file endp 
;******************************************************************************

;  *************************************************************** 
             
.      CMOS  
open_file proc
		push	ax
		push	dx
		mov	ah,3Dh
		mov	al,02h
		mov	dx,offset file_name
		int	21h
		mov	handle,ax
		jnc	ok
		call	error_file
ok:
		pop	dx
		pop	ax
		ret
	open_file endp 
;******************************************************************************
; **************************************************************** 
   .        
  .
handle   
close_file proc
		push	ax
		push	bx
		; 
		mov	ah,3Eh
		mov	bx,handle
		int	21h
		pop	bx
		pop	ax
		ret
	close_file endp 
;******************************************************************************

; CMOS   ********************************************************** 
    CMOS      

	save_file proc
		mov	dl,svalue
		pusha
		; 
		mov	dx,ax
		mov	ah,3Ch
		mov	cx,00h
		int	21h
		mov	handle,ax
		jc	error_file
; CMOS                  
mov	svalue,00h
cycl1:		call	readSR
		mov	ah,40h
		mov	bx,handle
		mov	cx,1
		mov	dx,offset tek_el
		int	21h
		inc	svalue
		cmp	svalue,40h
		jne	cycl1
		call	close_file
		; 
		mov	kolonka,0
		mov	stroka,47
		call	print_position
		mov	color,0Ah
		mov	bp,offset message6
		mov	cx,dlmessage6
		call	print_string
		call	press_key
		call	clear_string            
		popa
		mov	svalue,dl
		ret
	save_file endp 
;******************************************************************************

;  *************************************************************** 
      CMOS
; 
;handle -  
	load_file proc
		mov	dl,svalue
		pusha
		call	open_file
		mov	svalue,00h
cycl2:		mov	ah,3Fh
		mov	bx,handle
		mov	cx,1
		mov	dx,offset tek_el
		int	21h
		call	writeSR
		inc	svalue
		cmp	svalue,40h
		jne	cycl2
		call	close_file
		; 
		mov	kolonka,0
		mov	stroka,47
		call	print_position
		mov	color,0Ah
		mov	bp,offset message8
		mov	cx,dlmessage8
		call	print_string
		call	press_key
		call	clear_string            
		popa
		mov	svalue,dl
		ret	           
	load_file endp 
;****************************************************************************** 

;  ******************************************************** 
main proc
	;  
	mov	ax,@data
	mov	ds,ax
	mov	es,ax
	xor	ax,ax
	;*****************************

;   
;   . .    
;   
	call	get_screeng_mode

	; 
	call	clear_screeng

	;    
	mov	bp,offset message1
	mov	cx,dlmessage1
	call	print_string
	call	corretka
	call	cursor_position
	mov	bp,offset message2
	mov	cx,dlmessage2
	call	print_string
	call	corretka
	call	cursor_position
	mov	bp,offset message3
	mov	cx,dlmessage3
	call	print_string
	call	corretka
	;***********************************

;     **********************

; -      ************
()
call	press_key
	call	scr_page
non_sys_key:	call	press_key
	;   
	cmp	ascii_code,00
	jne	non_sys_key
	;  
	cmp	scan_code,51h
	je	PgDn
	cmp	scan_code,49h
	je	PgUp
	cmp	scan_code,44h
	je	exit_dos
	cmp	scan_code,3Ch
	je	save_cmos
	cmp	scan_code,3Dh
	je	load_cmos
	cmp	scan_code,3Eh
	je	edit_cmos
	jmp	non_sys_key
	;************************************************************ 

	;      
PgDn:	cmp	svalue,40h
	je	non_sys_key
	inc	page_index
	mov	si,page_index
	call	scr_page
	jmp	non_sys_key
PgUp:	cmp	svalue,0Dh
	je	non_sys_key
	dec	page_index
	mov	si,page_index
	mov	ah,mas_svalue[si]
	mov	svalue,ah
	call	scr_page
	jmp	non_sys_key
save_cmos:	mov	ax,offset file_name
	call	save_file
	jmp	non_sys_key
	;**************************************************************
load_cmos:	; CMOS   ***************************************
	call	load_file
	jmp	non_sys_key
edit_cmos:	; CMOS ******************************************
	pusha

	;  CMOS    
mov	ax,offset file_name2
call	save_file

	; 
	mov	kolonka,0
	mov	stroka,47
	call	print_position
	mov	color,0Ah
	mov	bp,offset message4
	mov	cx,dlmessage4
	call	print_string
	call	read_int
	mov	al,chislo
	push	ax
	mov	bp,offset message5
	mov	cx,dlmessage5
	call	print_string
	call	press_key

	;  
	mov	kolonka,0
	mov	stroka,47
	call	clear_string
	mov	color,0Ah

;     
	mov	bp,offset message7
	mov	cx,dlmessage7
	call	print_string
	call	read_int
	mov	al,chislo
	push	ax
	mov	bp,offset message5
	mov	cx,dlmessage5
	call	print_string

	; 
	pop	ax
	mov	tek_el,al
	pop	ax
	mov	svalue,al
	call	writeSR
	call	press_key

exit_nsk:	;  
	mov	kolonka,0
	mov	stroka,47
	mov	color,0Ah
	call	clear_string
	popa
	jmp	non_sys_key
;******************************************************************************
;************************************************************** ; 
      
exit_dos:	call set_screeng_mode
		;************************
	;   DOS   
	mov	ax,4c00h
	int	21h
	;************************************************
	main endp 
;******************************************************************************
end main

         
