; Controlando el valor de "valor" con Q y A ORG 50000 Imprimir_Valor: LD A, (valor) ; Guardamos en A copia del resultado LD B, 0 LD C, A ; BC = A (B=0, C=A) CALL PrintNum ; Imprimimos el valor en pantalla CALL PrintSpace CALL Wait_For_No_Key ; Esperamos a que se suelte la tecla Bucle: Comprobar_tecla_mas: LD A, (tecla_mas) CALL Check_Key JR C, Comprobar_tecla_menos ; Carry = 1, tecla_mas no pulsada LD HL, valor INC (HL) JR Imprimir_Valor Comprobar_tecla_menos: LD A, (tecla_menos) CALL Check_Key JR C, Bucle ; Carry = 1, tecla_menos no pulsada LD HL, valor DEC (HL) JP Imprimir_Valor ; Variables de teclas tecla_mas DEFB $25 tecla_menos DEFB $26 ; Variable para alojar el valor valor DEFB 0 INCLUDE "utils.asm" ;----------------------------------------------------------------------- ; Chequea el estado de una tecla concreta, aquella de scancode ; codificado en A (como parametro de entrada). ; ; Devuelve: CARRY FLAG = 0 -> Tecla pulsada ; CARRY FLAG = 1 y BC = 0 -> Tecla no pulsada ;----------------------------------------------------------------------- Check_Key: LD C, A ; Copia de A AND 7 INC A LD B, A ; B = 16 - (num. linea direccion) SRL C SRL C SRL C LD A, 5 SUB C LD C, A ; C = (semifila + 1) LD A, $FE CKHiFind: ; Calcular el octeto de mayor peso del puerto RRCA DJNZ CKHiFind IN A, ($FE) ; Leemos la semifila CKNXKey: RRA DEC C JR NZ, CKNXKey ; Ponemos el bit de tecla en el CF RET END 50000