aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2022-11-02 15:18:42 -0400
committerB. Watson <urchlay@slackware.uk>2022-11-02 15:18:42 -0400
commit9dd8d53ebad391ea40bcde76474b81b78a83e6a5 (patch)
tree18e739c63e235b560f67479c93333fb9c30415ef
parent23de0a47d2efe78a997940a31f560ee91b682ad1 (diff)
downloaddla-asm-9dd8d53ebad391ea40bcde76474b81b78a83e6a5.tar.gz
Check for Start key in vblank only.
-rw-r--r--dla.s41
1 files changed, 29 insertions, 12 deletions
diff --git a/dla.s b/dla.s
index 849bb23..927acb8 100644
--- a/dla.s
+++ b/dla.s
@@ -84,6 +84,12 @@ init:
lda #>DEFAULTPART
sta maxparticles+1
+ ; init our immediate vblank handler
+ lda #6
+ ldy #<consol_isr
+ ldx #>consol_isr
+ jsr SETVBV
+
; "New" option jumps here, restore GR.0 screen
getargs:
jsr restore_gr0
@@ -162,6 +168,7 @@ wl:
lda #1 ; ...turn off shadow reg updates (tiny speed boost)
sta CRITIC
lda #0
+ sta DMACTL
sta particles
sta particles+1
sta RTCLOK
@@ -532,17 +539,6 @@ checkbounds:
beq oob
sta cursor_y
- ldx #0
- lda CONSOL
- cmp #6
- bne dontplot
- jsr plot
- jsr unplot
- ldx #DMA_ON
-dontplot:
- ;stx SDMCTL ; nope, shadow updates are off...
- stx DMACTL
-
; check neighbors. used to be a subroutine, inlined it.
; also inlined plotsetup here.
ldx cursor_y
@@ -563,7 +559,6 @@ dontplot:
beq check_y
slow_x:
; (-1,0)
- ldx cursor_x
ldy xoffsets-1,x
lda xmasks-1,x
and (pixptr),y
@@ -725,6 +720,28 @@ close1:
sta ICCOM,x
jmp CIOV
+;;; Interrupt handler: consol_isr
+;;; Called via immediate IRC. Enables/disables ANTIC DMA based
+;;; on the status of the Start key, but only while CRITIC is set.
+consol_isr:
+ ;pha
+ ;txa
+ ;pha
+ lda CRITIC
+ beq ci_done
+ ldx #0
+ lda CONSOL
+ cmp #6
+ bne ci_nopress
+ ldx #DMA_ON
+ci_nopress:
+ stx DMACTL
+ci_done:
+ ;pla
+ ;tax
+ ;pla
+ jmp SYSVBV
+
;;;;; end of executable code, data tables from here on out.
; prompts.