PIN	equ	41h
POUT	equ	40h

BIOS	equ	0200h

DEMO	EQU	0
CONIN	EQU	1	
CONSTAT	EQU	2	
CONOUT	EQU	3	
PSTRING	EQU	4	
UPRINT	EQU	5	
SPRINT	EQU	6	
MULT	EQU	7	
DIV	EQU	8	
ADCIN	EQU	9	
DIPSWIN	EQU	0Ah	
PTBIN	EQU	0Bh	
PTAOUT	EQU	0Ch	
HEXPRINT EQU	0Dh	
DACOUT	EQU	0Eh	
PITCH	EQU	10h	
LEDOUT	EQU	11h	
LEDHEX	EQU	12h	
LEDDEC	EQU	13h	
DELAY	EQU	14h	
TUNE	EQU	15h	
KEYIN	EQU	19h	
 line 1
	ORG 	8000h 		; 9000h pentru COM2	
start:
	MVI 	A,00h 		; Fortez A=00h
	MOV 	D,A 		; D=0
	STA 	contor 		; contor = 0
	INR	A
	STA	contor
	RIM 			; citesc în A starea sistemului de întreruperi
	ANI 	00011011b 	; forteaza M7.5=0
	ORI 	00011000b 	; forteaza R7.5=MSE=1
	SIM 			; sterge o eventuala cerere pe RST 7.5 în
				; asteptare si valideaza linia RST 7.5
	EI 			; valideaza întreruperile mascabile
loop:
	LDA 	contor 		; A=contor
	OUT	40H
	MOV 	E,A 		; E=contor si DE=contor (pentru ca D=0)
	MVI 	C,LEDDEC 	; C=codul functiei de afisare
	CALL 	BIOS 		; Afisare contor
	JMP 	loop 		; reia

; rutina de tratare a întreruperii RST 7.5.
; se ajunge aici având pe stiva adresa de revenire în programul principal si
; PSW, deci PSW nu mai trebuie salvat în rutina utilizatorului, dar trebuie
; extras la revenire
 line 26
	ORG 	803Ch 		; 903Ch pentru COM2	
tratare_rst75:
	LDA 	contor 		; A = contor
	RLC
	STA 	contor 		; actualizare contor
	POP 	PSW 		; refac PSW salvat de monitor
	EI 			; se revalideaza întreruperile mascabile
	RET 			; se revine în programul întrerupt

contor: DS 	1 		; rezerva 1 octet pentru contor
			
