; Controlando el valor de "valor" con Q y A ORG 50000 call CLS 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 %00000111 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