diff --git a/Source/HBIOS/nabu.asm b/Source/HBIOS/nabu.asm index 6862337a..7a395f60 100644 --- a/Source/HBIOS/nabu.asm +++ b/Source/HBIOS/nabu.asm @@ -49,17 +49,7 @@ NABU_PREINIT: ; PORT A IN WRITE MODE AND SET ALL BITS TO ZERO ; PORT B IN READ MODE ; - ; SET I/O PORT MODES - LD A,7 ; PSG R7 (ENABLE REG) - OUT (NABU_RSEL),A ; SELECT IT - LD A,%01000000 ; PORT B INPUT, PORT A OUPUT - OUT (NABU_RDAT),A ; SET IT -; - ; SET PORT A TO VALUE 0 - LD A,14 ; PSG R16 (PORT A DATA) - OUT (NABU_RSEL),A ; SELECT IT - XOR A ; VALUE 0 - OUT (NABU_RDAT),A ; SET IT + CALL NABU_SETPSG ; ; ADD TO INTERRUPT CHAIN LD HL,NABU_STAT @@ -69,26 +59,45 @@ NABU_PREINIT: NABU_INIT: CALL NEWLINE ; FORMATTING PRTS("NABU: INT1$") - XOR A - OUT (NABU_INT1CLR),A +; XOR A +; OUT (NABU_INT1CLR),A RET ; DONE ; +NABU_SETPSG: + ; SET I/O PORT MODES + LD A,7 ; PSG R7 (ENABLE REG) + OUT (NABU_RSEL),A ; SELECT IT + LD A,%01111111 ; PORT B INPUT, PORT A OUPUT + OUT (NABU_RDAT),A ; SET IT +; +; ; SET PORT A TO VALUE 0 +; LD A,14 ; PSG R14 (PORT A DATA) +; OUT (NABU_RSEL),A ; SELECT IT +; XOR A ; VALUE 0 +; OUT (NABU_RDAT),A ; SET IT +; + LD A,15 + OUT (NABU_RSEL),A + IN A,(NABU_RIN) + RET +; ; INTERRUPT ENTRY POINT ; NABU_STAT: - XOR A - OUT (NABU_INT1CLR),A ; CLEAR THE INTERRUPT + CALL NABU_SETPSG +; XOR A +; OUT (NABU_INT1CLR),A ; CLEAR THE INTERRUPT LD HL,(NABU_TICCNT) ; INCREMENT NABU TICK COUNTER INC HL ; ... IN HBIOS PROXY LD (NABU_TICCNT),HL - LD A,(NABU_HBTICK) ; INCREMENT INTERNAL TICK CTR - INC A - LD (NABU_HBTICK),A - CP $0A ; CALL HB_TICK EVERY 10 INTERRUPTS (50HZ) - RET NZ ; NOT TIME THEN JUST RETURN +; LD A,(NABU_HBTICK) ; INCREMENT INTERNAL TICK CTR +; INC A +; LD (NABU_HBTICK),A +; CP $0A ; CALL HB_TICK EVERY 10 INTERRUPTS (50HZ) +; RET NZ ; NOT TIME THEN JUST RETURN CALL HB_TICK ; DO NORMAL HBIOS TICK XOR A - LD (NABU_HBTICK),A ; RESET HBTICK COUNTER +; LD (NABU_HBTICK),A ; RESET HBTICK COUNTER INC A ; INTERRUPT HANDLED RET ;