|
|
@ -992,8 +992,10 @@ PSCNX .EQU $ + 1 |
|
|
; DETERMINE WHICH CHANNEL CAUSED AN INTERRUPT. |
|
|
; DETERMINE WHICH CHANNEL CAUSED AN INTERRUPT. |
|
|
; |
|
|
; |
|
|
#IF (INTMODE == 2) |
|
|
#IF (INTMODE == 2) |
|
|
LD HL,INT_TIMER |
|
|
|
|
|
LD (HBX_IVT),HL |
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
; TIMER INTERRUPT IS ON CTCB, VECTOR IS SECOND IVT SLOT |
|
|
|
|
|
LD HL,INT_TIMER ; TIMER INT HANDLER ADR |
|
|
|
|
|
LD (HBX_IVT + 2),HL ; IVT SLOT 2 |
|
|
; |
|
|
; |
|
|
; CTC USES 4 CONSECUTIVE VECTOR POSITIONS, ONE FOR |
|
|
; CTC USES 4 CONSECUTIVE VECTOR POSITIONS, ONE FOR |
|
|
; EACH CHANNEL. BELOW WE SET THE BASE VECTOR TO THE |
|
|
; EACH CHANNEL. BELOW WE SET THE BASE VECTOR TO THE |
|
|
@ -1002,21 +1004,37 @@ PSCNX .EQU $ + 1 |
|
|
LD A,0 |
|
|
LD A,0 |
|
|
OUT (CTCBASE),A ; SETUP CTC BASE INT VECTOR |
|
|
OUT (CTCBASE),A ; SETUP CTC BASE INT VECTOR |
|
|
; |
|
|
; |
|
|
; CONFIGURE CHANNEL A FOR 50HZ PERIODIC INTERRUPTS |
|
|
|
|
|
; INT FREQ IS CTC CLK / PRESCALER / TIME CONSTANT |
|
|
|
|
|
|
|
|
; CTCA IS SLAVED (WIRED) TO TO CTCB TO ACT AS A PRESCALER |
|
|
|
|
|
; CONFIGURE CHANNEL B FOR 50HZ PERIODIC INTERRUPTS |
|
|
|
|
|
; CTC CLK = 921,200HZ |
|
|
|
|
|
; CTCA TIME CONSTANT = 256 |
|
|
|
|
|
; CTCB TIME CONSTANT = 72 |
|
|
|
|
|
; INT FREQ IS CTC CLK / CTCA TC / CTCB TC |
|
|
; WHICH IS 921,600HZ / 256 / 72 = 50HZ |
|
|
; WHICH IS 921,600HZ / 256 / 72 = 50HZ |
|
|
LD A,%10110111 ; CTC CONTROL WORD VALUE |
|
|
|
|
|
; |||||||+-- 0=CONTROL WORD FLAG |
|
|
|
|
|
|
|
|
LD A,%01010111 ; CTCA CONTROL WORD VALUE |
|
|
|
|
|
; |||||||+-- 1=CONTROL WORD FLAG |
|
|
; ||||||+--- 1=SOFTWARE RESET |
|
|
; ||||||+--- 1=SOFTWARE RESET |
|
|
; |||||+---- 1=TIME CONSTANT FOLLOWS |
|
|
; |||||+---- 1=TIME CONSTANT FOLLOWS |
|
|
; ||||+----- 0=AUTO TRIGGER WHEN TIME CONST LOADED |
|
|
; ||||+----- 0=AUTO TRIGGER WHEN TIME CONST LOADED |
|
|
; |||+------ 1=RISING EDGE TRIGGER |
|
|
; |||+------ 1=RISING EDGE TRIGGER |
|
|
; ||+------- 1=PRESCALER OF 256 |
|
|
|
|
|
; |+-------- 0=TIMER MODE |
|
|
|
|
|
|
|
|
; ||+------- 1=PRESCALER OF 16 (NOT USED) |
|
|
|
|
|
; |+-------- 1=COUNTER MODE |
|
|
|
|
|
; +--------- 0=NO INTERRUPTS |
|
|
|
|
|
OUT (CTCA),A ; SETUP CTCA |
|
|
|
|
|
LD A,0 ; CTCA TIMER CONSTANT = 256, 0 MEANS 256 |
|
|
|
|
|
OUT (CTCA),A ; SETUP CTCA TIMER CONSTANT |
|
|
|
|
|
LD A,%11010111 ; CTCB CONTROL WORD VALUE |
|
|
|
|
|
; |||||||+-- 1=CONTROL WORD FLAG |
|
|
|
|
|
; ||||||+--- 1=SOFTWARE RESET |
|
|
|
|
|
; |||||+---- 1=TIME CONSTANT FOLLOWS |
|
|
|
|
|
; ||||+----- 0=AUTO TRIGGER WHEN TIME CONST LOADED |
|
|
|
|
|
; |||+------ 1=RISING EDGE TRIGGER |
|
|
|
|
|
; ||+------- 1=PRESCALER OF 16 (NOT USED) |
|
|
|
|
|
; |+-------- 1=COUNTER MODE |
|
|
; +--------- 1=ENABLE INTERRUPTS |
|
|
; +--------- 1=ENABLE INTERRUPTS |
|
|
OUT (CTCA),A ; SETUP CTC CHANNEL A |
|
|
|
|
|
LD A,72 ; TIMER CONSTANT FOR 50HZ |
|
|
|
|
|
OUT (CTCA),A ; SETUP CTC CHANNEL A TIMER CONSTANT |
|
|
|
|
|
|
|
|
OUT (CTCB),A ; SETUP CTCB |
|
|
|
|
|
LD A,72 ; CTCB TIMER CONSTANT = 72 |
|
|
|
|
|
OUT (CTCB),A ; SETUP CTCB TIMER CONSTANT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
@ -1029,8 +1047,10 @@ PSCNX .EQU $ + 1 |
|
|
; DETERMINE WHICH CHANNEL CAUSED AN INTERRUPT. |
|
|
; DETERMINE WHICH CHANNEL CAUSED AN INTERRUPT. |
|
|
; |
|
|
; |
|
|
#IF (INTMODE == 2) |
|
|
#IF (INTMODE == 2) |
|
|
LD HL,INT_TIMER |
|
|
|
|
|
LD (HBX_IVT + IVT_TIM0),HL |
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
; TIMER INTERRUPT IS ON CTCD, VECTOR IS FOURTH IVT SLOT |
|
|
|
|
|
LD HL,INT_TIMER ; TIMER INT HANDLER ADR |
|
|
|
|
|
LD (HBX_IVT + 6),HL ; IVT SLOT 4 |
|
|
; |
|
|
; |
|
|
; CTC USES 4 CONSECUTIVE VECTOR POSITIONS, ONE FOR |
|
|
; CTC USES 4 CONSECUTIVE VECTOR POSITIONS, ONE FOR |
|
|
; EACH CHANNEL. BELOW WE SET THE BASE VECTOR TO THE |
|
|
; EACH CHANNEL. BELOW WE SET THE BASE VECTOR TO THE |
|
|
@ -1039,28 +1059,40 @@ PSCNX .EQU $ + 1 |
|
|
LD A,0 |
|
|
LD A,0 |
|
|
OUT (CTCBASE),A ; SETUP CTC BASE INT VECTOR |
|
|
OUT (CTCBASE),A ; SETUP CTC BASE INT VECTOR |
|
|
; |
|
|
; |
|
|
; CONFIGURE CHANNEL C FOR 50HZ PERIODIC INTERRUPTS |
|
|
|
|
|
; INT FREQ IS CTC CLK / PRESCALER / TIME CONSTANT |
|
|
|
|
|
|
|
|
; CTCC IS SLAVED (WIRED) TO TO CTCD TO ACT AS A PRESCALER |
|
|
|
|
|
; CONFIGURE CHANNEL D FOR 50HZ PERIODIC INTERRUPTS |
|
|
|
|
|
; CTC CLK = 921,200HZ |
|
|
|
|
|
; CTCC TIME CONSTANT = 256 |
|
|
|
|
|
; CTCD TIME CONSTANT = 72 |
|
|
|
|
|
; INT FREQ IS CTC CLK / CTCC TC / CTCD TC |
|
|
; WHICH IS 921,600HZ / 256 / 72 = 50HZ |
|
|
; WHICH IS 921,600HZ / 256 / 72 = 50HZ |
|
|
LD A,%10110111 ; CTC CONTROL WORD VALUE |
|
|
|
|
|
; |||||||+-- 0=CONTROL WORD FLAG |
|
|
|
|
|
|
|
|
LD A,%01010111 ; CTCC CONTROL WORD VALUE |
|
|
|
|
|
; |||||||+-- 1=CONTROL WORD FLAG |
|
|
; ||||||+--- 1=SOFTWARE RESET |
|
|
; ||||||+--- 1=SOFTWARE RESET |
|
|
; |||||+---- 1=TIME CONSTANT FOLLOWS |
|
|
; |||||+---- 1=TIME CONSTANT FOLLOWS |
|
|
; ||||+----- 0=AUTO TRIGGER WHEN TIME CONST LOADED |
|
|
; ||||+----- 0=AUTO TRIGGER WHEN TIME CONST LOADED |
|
|
; |||+------ 1=RISING EDGE TRIGGER |
|
|
; |||+------ 1=RISING EDGE TRIGGER |
|
|
; ||+------- 1=PRESCALER OF 256 |
|
|
|
|
|
; |+-------- 0=TIMER MODE |
|
|
|
|
|
|
|
|
; ||+------- 1=PRESCALER OF 16 (NOT USED) |
|
|
|
|
|
; |+-------- 1=COUNTER MODE |
|
|
|
|
|
; +--------- 0=NO INTERRUPTS |
|
|
|
|
|
OUT (CTCC),A ; SETUP CTCC |
|
|
|
|
|
LD A,0 ; CTCC TIMER CONSTANT = 256, 0 MEANS 256 |
|
|
|
|
|
OUT (CTCC),A ; SETUP CTCC TIMER CONSTANT |
|
|
|
|
|
LD A,%11010111 ; CTCD CONTROL WORD VALUE |
|
|
|
|
|
; |||||||+-- 1=CONTROL WORD FLAG |
|
|
|
|
|
; ||||||+--- 1=SOFTWARE RESET |
|
|
|
|
|
; |||||+---- 1=TIME CONSTANT FOLLOWS |
|
|
|
|
|
; ||||+----- 0=AUTO TRIGGER WHEN TIME CONST LOADED |
|
|
|
|
|
; |||+------ 1=RISING EDGE TRIGGER |
|
|
|
|
|
; ||+------- 1=PRESCALER OF 16 (NOT USED) |
|
|
|
|
|
; |+-------- 1=COUNTER MODE |
|
|
; +--------- 1=ENABLE INTERRUPTS |
|
|
; +--------- 1=ENABLE INTERRUPTS |
|
|
OUT (CTCC),A ; SETUP CTC CHANNEL C |
|
|
|
|
|
LD A,72 ; TIMER CONSTANT FOR 50HZ |
|
|
|
|
|
OUT (CTCC),A ; SETUP CTC CHANNEL C TIMER CONSTANT |
|
|
|
|
|
|
|
|
OUT (CTCD),A ; SETUP CTCD |
|
|
|
|
|
LD A,72 ; CTCD TIMER CONSTANT = 72 |
|
|
|
|
|
OUT (CTCD),A ; SETUP CTCD TIMER CONSTANT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; |
|
|
; |
|
|
#IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4) | (PLATFORM == PLT_RC180)) |
|
|
#IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4) | (PLATFORM == PLT_RC180)) |
|
|
; |
|
|
; |
|
|
|