Browse Source

Update nabu.asm

Ongoing work on NABU interrupt processing.

Co-Authored-By: Les Bird <lesbird65@gmail.com>
pull/396/head
Wayne Warthen 2 years ago
parent
commit
2a6a3f36c2
  1. 51
      Source/HBIOS/nabu.asm

51
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
;

Loading…
Cancel
Save