.286
jumps
qq	segment
	assume	cs:qq,ds:qq
	org	100h
	
start:	
	call	cleaning
	call	logo

	call	beep
	
	mov	ax,00100000b
	mov	dx,adres_o
	out	dx,ax
	mov	ax,00000000b
	mov	dx,adres_o
	out	dx,ax
	
	mov	ah,2
	mov	bh,0
	mov	dh,10
	mov	dl,20
	int	10h
	lea	dx,menu
	mov	ah,9
	int	21h
key:	mov	ah,1
	int	16h
	jz	key
	mov	ah,0
	int	16h
	
	mov	si,1
	call	cleaning
	call	beep
	mov	cx,0
	mov	ax,0
	mov	bx,0
;	mov	ah,0 ; key-1
;	mov	al,7 ; key-2
;	mov	bh,0 ; key-3
;	mov	bl,1 ; key-4
	mov	dx,0
;---------------------	AH-1,AL-2,BH-3,BL-4
k1:	cmp	ah,0ah	
	jz	k2
	inc	dx
	cmp	dx,384
	jnz	p1
	call	cleaning
	mov	dx,0
p1:	push	dx
	push	ax
	push	bx
	mov	al,ah
	mov	cx,ax
	mov	ch,0
	inc	cx
	call	print_xlat
	mov	ax,00000001b ;клавиша-1
	call	output_lpt
	pop	bx
	pop	ax
	
	push	ax
	push	bx
	mov	cx,ax
	mov	ch,0
	inc	cx
	call	print_xlat
	mov	ax,00000010b ;клавиша-2
	call	output_lpt
	pop	bx
	pop	ax
	
	push	ax
	push	bx
	mov	al,bh
	mov	cx,ax
	mov	ch,0
	inc	cx
	call	print_xlat
	mov	ax,00000100b ;клавиша-3
	call	output_lpt
	pop	bx
	pop	ax
	
	push	ax
	push	bx
	mov	al,bl
	mov	cx,ax
	mov	ch,0
	inc	cx
	call	print_xlat
	mov	ax,00001000b ;клавиша-4
	call	output_lpt
	
	mov	ah,9
	lea	dx,nl
	int	21h
	
	mov	cx,1
	mov	ax,00010000b ;клавиша 'ENTER' магнитолы
	call	output_lpt
	call	input_lpt
	pusha
	call	scan	
	call	read_key
	popa
	
	cmp	si,3
	jnz	res_ob ;обход команды сброс
	mov	si,0
	mov	cx,1
	mov	ax,00100000b ;сброс wait
	call	output_lpt
	
	pusha
	mov	cx,05fh ; задержка
cikle_l:
	nop
	mov	schot,0ffffh
cikle:	call	input_lpt
	cmp	al,'X'
	jz	scip
	dec	schot
	cmp	schot,0
	jnz	cikle
scip:	mov	schot1,0ffffh
sk:	dec	schot1
	cmp	schot1,0
	jnz	sk
	loop	cikle_l
	popa
	
res_ob:	inc	si ; обход команды сброс
	pop	bx
	pop	ax
	pop	dx
	inc	ah
	jmp	k1
	
k2:	mov	ah,0
	inc	al
	cmp	al,0ah
	jz	k3
	jmp	k1
	
k3:	mov	ax,0
	inc	bh
	cmp	bh,0ah
	jz	k4
	jmp	k1
	
k4:	mov	bh,0
	inc	bl
	cmp	bl,0ah
	jz	exi
	jmp	k1		

sto:	call	beep
	mov	al,0 ; стоп
	mov	ah,0Ch
	int	21h
sto1:	mov	ah,1
	int	16h
	jz	sto1
	mov	ah,0
	int	16h

exi:	mov	dx,adres_o ;загрузить адрес порта вывода
	mov	ax,0
	out	dx,ax ;загрузить 0 в LPT-1
	mov	ax,4C00h ; exit
	int	21h
	
	
;подпрограммы
symbol:	mov	ah,2
	int	21h
	ret	

logo:	mov	dh,1
	mov	dl,39
	call	position
	mov	dl,218
	call	symbol
	lea	dx,logo_line
	call	print
	mov	dl,191
	call	symbol
	mov	dh,2
	mov	dl,39
	call	position
	lea	dx,logo_progr
	call	print

	mov	dh,3
	mov	dl,39
	call	position
	lea	dx,logo_mail
	call	print

	mov	dh,4
	mov	dl,39
	call	position
	lea	dx,logo_page
	call	print

	mov	dh,5
	mov	dl,39
	call	position
	mov	dl,192
	call	symbol
	lea	dx,logo_line
	call	print
	mov	dl,217
	call	symbol
	ret

position:
	mov	ah,2
	mov	bh,0
	int	10h
	ret

scan:	mov	schot,03h

cik:	mov	schot1,0ffffh

cik1:	call	input_lpt
	cmp	al,'h'
	jz	sto
	cmp	al,'H'
	jz	sto
	cmp	al,'x'
	jz	sto
	dec	schot1
	cmp	schot1,0
	jnz	cik1
	dec	schot
	cmp	schot,0
	jnz	cik
	ret

read_key:
	mov	ah,1; опрос клавиатуры
	int	16h
	cmp	al,'0'
	jz	sto
	mov	al,0
	mov	ah,0Ch
	int	21h
	ret
	
output_lpt: ;--------------------------------
	mov	dx,adres_o ;загрузить адрес порта вывода
	out	dx,ax
	mov	zad1,0	
;============================================	
pa1:	inc	zad1
	mov	zad2,0
aa1:	inc	zad2
	cmp	zad2,06h	;задержка
	jnz	aa1
	inc	bp
	cmp	zad1,0ffffh	;задержка
	jnz	pa1
	push	ax
	mov	ax,00000000b
	mov	dx,adres_o
	out	dx,ax
	mov	zad1,0
pa2:	inc	zad1
	mov	zad2,0
aa2:	inc	zad2
	cmp	zad2,07h	;задержка
	jnz	aa2
	inc	bp
	cmp	zad1,08111h	;задержка
	jnz	pa2
;============================================	
	pop	ax
	loop	output_lpt
	ret	;----------------------------
	
input_lpt:
	mov	dx,adres_i ;загрузить адрес порта ввода
	in	al,dx
	ret
		
print:	mov	ah,9h
	int	21h
	ret
	
beep:	mov	ah,2
	mov	dl,7
	int	21h
	ret
	
cleaning:	
	mov	ax,03h
	int	10h
	ret


;xlat-------------------------------------
;	в регистр AL все засылать
print_xlat:
	lea	bx,hex
	xlat
	mov	dl,al
	mov	ah,2
	int	21h
	ret
hex	db	'0123456789'	
nl	db	' ','$'

;-------------------------------------------------------------------------------
zad1	dw	(?); задержка
zad2	dw	(?); задержка
schot	dw	(?); CMP OUT
schot1	dw	(?); CMP OUT
menu	db	'Старт после нажатия любой клавиши','$'
adres_o	dw	378h ; adres out
adres_i dw	379h ; adres in
logo_line		db	38 dup (196),'$'
logo_progr	db	179,' Переборщик кодов PIONEER KE-92zbm    ',179,'$'
logo_mail		db	179,' mail to: nehrenasebe@mail.ru by.Fist ',179,'$'
logo_page	db	179,' home page http://decoding.newmail.ru ',179,'$'

qq	ends
	end	start