From 7b895d15aa4557993194a780893cb38d8f61ddcc Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 20 Apr 2018 16:16:23 -0400 Subject: [PATCH] chiptune_debug: add 25Hz test --- chiptune_debug/Makefile | 14 ++++++++++++-- chiptune_debug/chiptune_debug.dsk | Bin 0 -> 143360 bytes chiptune_debug/chiptune_player.s | 15 ++++++++++++++- linker_scripts/apple2_c00.inc | 2 +- 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 chiptune_debug/chiptune_debug.dsk diff --git a/chiptune_debug/Makefile b/chiptune_debug/Makefile index f4a51d18..44193a42 100644 --- a/chiptune_debug/Makefile +++ b/chiptune_debug/Makefile @@ -5,10 +5,11 @@ PNG2GR = ../gr-utils/png2gr all: chiptune_debug.dsk -chiptune_debug.dsk: CHIPTUNE_IRQ CHIPTUNE_NOIRQ ./sdemo.raw +chiptune_debug.dsk: CHIPTUNE_IRQ CHIPTUNE_NOIRQ CHIPTUNE_25HZ ./sdemo.raw cp chiptune_empty.dsk chiptune_debug.dsk $(DOS33) -y chiptune_debug.dsk BSAVE -a 0x0C00 CHIPTUNE_IRQ $(DOS33) -y chiptune_debug.dsk BSAVE -a 0x0C00 CHIPTUNE_NOIRQ + $(DOS33) -y chiptune_debug.dsk BSAVE -a 0x0C00 CHIPTUNE_25HZ CHIPTUNE_IRQ: chiptune_irq.o @@ -29,8 +30,17 @@ chiptune_noirq.o: chiptune_player.s \ zp.inc ca65 -D NOIRQ=1 -o chiptune_noirq.o chiptune_player.s -l chiptune_noirq.lst +CHIPTUNE_25HZ: chiptune_25Hz.o + ld65 -o CHIPTUNE_25HZ chiptune_25Hz.o -C ../linker_scripts/apple2_c00.inc + +chiptune_25Hz.o: chiptune_player.s \ + mockingboard_a.s \ + interrupt_handler.s \ + zp.inc + ca65 -D F25HZ=1 -o chiptune_25Hz.o chiptune_player.s -l chiptune_25Hz.lst + clean: rm -f *~ TITLE.GR *.o *.lst \ - CHIPTUNE_PLAYER CHIPTUNE_IRQ CHIPTUNE_NOIRQ + CHIPTUNE_PLAYER CHIPTUNE_IRQ CHIPTUNE_NOIRQ CHIPTUNE_25HZ diff --git a/chiptune_debug/chiptune_debug.dsk b/chiptune_debug/chiptune_debug.dsk new file mode 100644 index 0000000000000000000000000000000000000000..b66e81c1f1ad43e5a276b1274b75aa41e892fe88 GIT binary patch literal 143360 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űJ5cmRz{>C3Y z4uPuUrITZ}8zJVK#hj0g`Hnq~$A25)*~3JQ$Hr}s5WyUeFF!5_i~zl3;&r^irwW01 zeD=`;;7=5M;_=`AT153oal@aqw~_i8>HH_{f28*D{td{C1cy(Rxy3t=Lm&=;I0WJl z`0PU93mW$uf9yB}2m+s7!u-#UEXS3j<>&$ii zzxK`~hd~&IqRc}F{yzgJ=|Owgibbhpi?~RkW${;l9VhS*te%{Cn!$o4E7ok-vSZJI zBQL!2#yckh1xi$?(V#_#9s|bTKF6-rKK}RD{l6c}W){z7GYj?qR{!r<8JB;Y_K&x` z?Obv3PxIgPztmt65CIX$NWkdYPWN_!sKDfnPVIDT7l;Z>-dwurTp%hi`3;?W)xOu0 pVBp*Lw#SUGQd5b*X$i>xPDsXy)Y1O2{O|wz_ow|}bz_GUcma?+h!p?; literal 0 HcmV?d00001 diff --git a/chiptune_debug/chiptune_player.s b/chiptune_debug/chiptune_player.s index 61d6f90d..c826a773 100644 --- a/chiptune_debug/chiptune_player.s +++ b/chiptune_debug/chiptune_player.s @@ -52,14 +52,27 @@ sta $C40D ; IFR: 1100, enable interrupt on timer one oflow sta $C40E ; IER: 1100, enable timer one interrupt +.ifdef F25HZ + lda #$40 + sta $C404 ; write into low-order latch + lda #$9c + sta $C405 ; write into high-order latch, + ; load both values into counter + ; clear interrupt and start counting + + ; 9c40 / 1e6 = .040s, 25Hz + + +.else lda #$E7 sta $C404 ; write into low-order latch lda #$4f sta $C405 ; write into high-order latch, ; load both values into counter ; clear interrupt and start counting - ; 4fe7 / 1e6 = .020s, 50Hz +.endif + .endif ;================== diff --git a/linker_scripts/apple2_c00.inc b/linker_scripts/apple2_c00.inc index 72588b0d..9704d857 100644 --- a/linker_scripts/apple2_c00.inc +++ b/linker_scripts/apple2_c00.inc @@ -4,7 +4,7 @@ MEMORY { } SEGMENTS { -CODE: load = RAM, type = ro; +CODE: load = RAM, type = ro, align = $100; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; BSS: load = RAM, type = bss, define = yes;