                PAGE    60,132




;ÄÄÄÄÄÄÄÄÄÄ CODE_SEG_1  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

CODE_SEG_1	segment para public
		assume  CS:CODE_SEG_1, DS:CODE_SEG_1, SS:CODE_SEG_1, ES:CODE_SEG_1


                org    100h


;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
;±
;±		ENTRY POINT
;±
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±


;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
;±
;±		PROCEDURE proc_start
;±
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

proc_start	proc	far
start:		; N-Ref=0
		mov	SI,offset var1_168	
		call	near ptr proc_2		
loc_1:		; N-Ref=1
		mov	Byte Ptr var1_1b1,20h	; [6653:01B1] = 2000h  ' '
		mov	AH,10h			
		int	16h			; BIOS Service func ( ah ) = 10h
						; Keyboard service
		push	AX			
		cmp	AL,0			
		je	loc_2			; Jump if equal ( = )
		cmp	AL,0Dh			
		je	loc_2			; Jump if equal ( = )
		mov	Byte Ptr var1_1b1,AL	; [6653:01B1] = 2000h
loc_2:		; N-Ref=2
		mov	AL,AH			
		call	near ptr proc_1		
		mov	Word Ptr var1_1c3,AX	; [6653:01C3] = 0
		pop	AX			
		push	AX			
		call	near ptr proc_1		
		mov	Word Ptr var1_1d8,AX	; [6653:01D8] = 0
		mov	SI,offset var1_1a5	
		call	near ptr proc_2		
		pop	AX			
		cmp	AL,0Dh			
		jne	loc_1			; Jump if not equal ( != )
		int	20h			; Program terminate
proc_start	endp



;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
;±
;±		PROCEDURE proc_1
;±
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

proc_1		proc	near
		mov	AH,AL			
		and	AH,0Fh			
		add	AH,30h			; '0'
		cmp	AH,39h			; '9'
		jbe	loc_3			; Jump if not above ( <= )
		add	AH,7			
loc_3:		; N-Ref=1
		shr	AL,1			; Shift right ( fill zeros )
		shr	AL,1			; Shift right ( fill zeros )
		shr	AL,1			; Shift right ( fill zeros )
		shr	AL,1			; Shift right ( fill zeros )
		add	AL,30h			; '0'
		cmp	AL,39h			; '9'
		jbe	loc_4			; Jump if not above ( <= )
		add	AL,7			
loc_4:		; N-Ref=1
		retn				
proc_1		endp



;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
;±
;±		PROCEDURE proc_2
;±
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±

proc_2		proc	near
loc_5:		; N-Ref=1
		lodsb				; Load byte at DS:SI to AL
		and	AL,AL			
		je	loc_6			; Jump if equal ( = )
		mov	AH,0Eh			
		mov	BX,7			
		int	10h			; BIOS Service func ( ah ) = 0Eh
						; Write char as TTY
						;AL-char BH-page BL-color
		jmp	short loc_5		
loc_6:		; N-Ref=1
		retn				
proc_2		endp



var1_168	db	0Dh, 0Ah
		db	'[ (c) Erdogan TAN  1998 ]  Press a key to scan cod'
		db	'e...'
		db	0Dh, 0Ah, 0Dh, 0Ah, 0
var1_1a5	db	'Character : '
var1_1b1	db	0
var1_1b2	db	5 dup (20h)
		db	'Scan Code : '
var1_1c3	dw	0
var1_1c5	db	'h     ASCII Cod'
var1_1d4	db	'e : '
var1_1d8	dw	0
var1_1da	db	68h, 0Dh, 0Ah, 0
CODE_SEG_1	ends



		end	start

