make timer16 overflow every 512 cycles
[Chiptunes-pms150c.git] / bsv.asm
diff --git a/bsv.asm b/bsv.asm
index df121a919cc9bfbad684e3c90c428dedbfe57a6d..f31ee13cac06824bc715b6acf2562a8767f0e4ac 100644 (file)
--- a/bsv.asm
+++ b/bsv.asm
@@ -205,19 +205,19 @@ init:
        MOV     a, #active_clock
        MOV     clkmd, a        ; switch to IHRC
 
-       ;; .org 0x46 ; comment out on 2nd iteration
-       ; calibration placeholder:
-       AND     a, #'R'
-       AND     a, #'C'
-       AND     a, #1 ; IHRC
-       AND     a, #( calib_freq )
-       AND     a, #( calib_freq>>8 )
-       AND     a, #( calib_freq>>16 )
-       AND     a, #( calib_freq>>24 )
-       AND     a, #( calib_vdd )
-       AND     a, #( calib_vdd>>8 )
-       AND     a, #ihrcr
-       ;; .org 0x5a
+       ;; .org 0xe8 ; comment out on 2nd iteration
+       ;; ; calibration placeholder:
+       ;; AND  a, #'R'
+       ;; AND  a, #'C'
+       ;; AND  a, #1 ; IHRC
+       ;; AND  a, #( calib_freq )
+       ;; AND  a, #( calib_freq>>8 )
+       ;; AND  a, #( calib_freq>>16 )
+       ;; AND  a, #( calib_freq>>24 )
+       ;; AND  a, #( calib_vdd )
+       ;; AND  a, #( calib_vdd>>8 )
+       ;; AND  a, #ihrcr
+       .org 0xfc
 
        ;stack setup:
        MOV     a, #stack_start
@@ -243,12 +243,10 @@ init:
        MOV     tm2c, a         ; timer2: IHRC, PA4, PWM, not inverted
        MOV     a, #(( 0<<7 | 1<<5 | 0<<0 ))
        MOV     tm2s, a         ; 8bit, /4 prescaler, divide by (0+1)
+       ;XXX: increase pwm base frequency (/1) -> (4*4.096mhz)/(2^8) = 64khz
 
        ;timer16/ivr setup
-       ;mov    a, #(( 0<<0 | 1<<3 | 4<<5 ))    ; ovf@bit8 (512cy; §9.2.5), clk/4, ihrc
-       MOV     a, #(( 1<<0 | 1<<3 | 4<<5 ))    ; ovf@bit9 (???cy; §9.2.5), clk/4, ihrc
-       ;XXX: datasheet §5.10.1 says bit8 = 256cycles, 9.2.5 says bit8=512cy
-       ; note: ovf@bit9 causes 4khz isr => we need ovf@bit8.
+       MOV     a, #(( 0<<0 | 1<<3 | 4<<5 ))    ; ovf@bit8 (512cy; §9.2.5), clk/4, ihrc
        MOV     t16m, a
        MOV     a, #(1<<2)              ; enable timer16 int, disable all others
        MOV     inten, a
@@ -476,7 +474,7 @@ interrupt:
        ADDC    i1
        ADDC    i2
 
-       SET1    pa, #6          ; debug
+       SET0    pa, #6          ; debug
 ivr_end:
        POP     af
        RETI
Imprint / Impressum