PORTC	EQU	$03
PORTB	EQU	$04
DDRC	EQU	$07

DLY	EQU	$100

T1	EQU	$11	;00010001, tecla 1
T2	EQU	$12	;00100010, tecla 2
TA	EQU	$81	;10000001, tecla A
T0	EQU	$82	;10000010, tecla 0

	ORG	$100
	BRA	INICIO

MIN	FCB	$30	; Variables del reloj
SEG	FCB	$20
DEC	FCB	$10
CENT	FCB	$00

PARADO	FCB	$00	;BOOLEAN = 0
COLUMN	FCB	$00	;COLUMNA 1 = 0, COLUMNA 2 = 1

INICIO	LDX	#$1000
	LDS	#$1FF
	LDY	#DLY
	LDAA	#$0F	;programacion del puerto C
	STAA	DDRC,X	;4MSB=0, 4LSB=1 (Para el teclado)
	LDAA	#$01	;evaluar primera vez columna 1
	STAA	PORTC,X

L1	BSR	MOSTRAR	
	BRA	KEYB
RKEYB	BSR	MOSTRAR
	TST	PARADO
	BNE	L1
	BSR	INCENT
	BRA	L1

MOSTRAR	LDAA	CENT
	STAA	PORTB,X
	BSR	DELAY

	LDAA	DEC
	STAA	PORTB,X
	BSR	DELAY

	LDAA	SEG
	STAA	PORTB,X
	BSR	DELAY

	LDAA	MIN
	STAA	PORTB,X
	BSR	DELAY

	RTS

INCENT	LDAA	#$09
	CMPA	CENT	; "A-CENT -> Status"
	BEQ	CARRYC
	INC	CENT	; "CENT<9 -> Lo incrementamos"
	RTS		; "CENT<9 -> No se incrementan los demás displays"
CARRYC	CLR	CENT	; Ponemos CENT a 0 
	
INDEC	LDAA	#$19
	CMPA	DEC	; "A-DEC -> Status"
	BEQ	CARRYD
	INC	DEC	; "DEC<9 -> Lo incrementamos"
	RTS		; "DEC<9 -> No se incrementan los demás displays"
CARRYD	LDAA	#$10	; Ponemos DEC a 10
	STAA	DEC

INSEG	LDAA	#$29
	CMPA	SEG	; "A-SEG -> Status"
	BEQ	CARRYS
	INC	SEG	; "SEG<9 -> Lo incrementamos"
	RTS		; "SEG<9 -> No se incrementan los demás displays"
CARRYS	LDAA	#$20	; Ponemos SEG a 20
	STAA	SEG

INMIN	LDAA	#$35
	CMPA	MIN	; "A-MIN -> Status"
	BEQ	CARRYM
	INC	MIN	; "MIN<5 -> Lo incrementamos"
	RTS		; "MIN<5 -> No hay más displays que incrementar"
CARRYM	LDAA	#$30	; Ponemos MIN a 30
	STAA	MIN
	RTS		

DELAY	DEY
	BNE	DELAY
	LDY	#DLY
	RTS

KEYB	TST	COLUMN
	BEQ	C2	;¿COLUMN = 0? -> COLUMN = 1
	DEC	COLUMN	;SINO, COLUMN = 0
	LDAA	#$01
	STAA	PORTC,X
	BRA	C1
C2	INC	COLUMN
	LDAA	#$02
	STAA	PORTC,X	
C1	LDAA	PORTC,X
	CMPA	#T0	;¿Esta apretada la T0?
	BEQ	RESET	
	CMPA	#T1	;¿Esta apretada la T1?
	BEQ	STOP
	CMPA	#T2	;¿Esta apretada la T2?
	BEQ	SIGUE
	CMPA	#TA	;¿Esta apretada la TA?
	BEQ	SET
	JMP	RKEYB	

RESET	CLRA
	STAA	CENT
	LDAA	#$10
	STAA	DEC
	LDAA	#$20
	STAA	SEG
	LDAA	#$30 
	STAA	MIN
	JMP	RKEYB		
	
STOP	LDAA	#$01
	STAA	PARADO	;PARADO = 1
	JMP	RKEYB

SIGUE	CLR	PARADO	;PARADO = 0
	JMP	RKEYB

SET	CLRA
	STAA	CENT
	LDAA	#$10
	STAA	DEC
	LDAA	#$20
	STAA	SEG
	LDAA	#$35
	STAA	MIN
	JMP	RKEYB

	END