| |
FillmoreC Account closed
Registered: Dec 2008 Posts: 7 |
how to delay a routine from starting?
Lets say I turned the screen black then started music, but i have scroller that I want to delay starting until a certain part of the music. how can I do that.
sort of like
lda #$00
sta $d020
sta $d021
jsr $1000
sei
then set the interupt up and all that
then
irq asl $d019
jsr $1003
jsr scroll
jmp $ea82
scroll
wait until into of the music is done
then scroll
rts
|
|
... 10 posts hidden. Click here to view all posts.... |
| |
Oswald
Registered: Apr 2002 Posts: 5095 |
oh no what have you done.. looked like c at first glance.. I have to stab my eyes... ;) |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: oh no what have you done.. looked like c at first glance.. I have to stab my eyes... ;)
Sorry for that Ozzie but that's how I write c64 assembly. :) |
| |
iopop
Registered: Dec 2001 Posts: 317 |
JackAssers code will stall the scroller 7 sec every 21.845 minute. Based on the previous code I would prevent it by using JSR/BIT as on/off markers in the code.
frameCount: .word 0
startScroller: .byte 0
frameTrigger = 7*50 ; 7 seconds
frameCountLo = frameCount+0
frameCountHi = frameCount+1
irq_handler:
jsr doMusic
dly: jsr doDelay
dsc: bit doScroll
; exit IRQ
doDelay:
; Update frameCount
inc frameCountLo
bne :+
inc frameCountHi
:
; If frameCount == frameTrigger then startScroller=1
lda frameCountHi
cmp #>frameTrigger
bne :+
lda frameCountLo
cmp #<frameTrigger
bne :+
lda #$20 ;$20 is JSR ie. turn on the scroller.
sta dsc
lda #$2c ;$2c is BIT $abcd ie. disable the delay routine.
sta dly
:
rts
|
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
:) |
| |
FillmoreC Account closed
Registered: Dec 2008 Posts: 7 |
Quote: JackAssers code will stall the scroller 7 sec every 21.845 minute. Based on the previous code I would prevent it by using JSR/BIT as on/off markers in the code.
frameCount: .word 0
startScroller: .byte 0
frameTrigger = 7*50 ; 7 seconds
frameCountLo = frameCount+0
frameCountHi = frameCount+1
irq_handler:
jsr doMusic
dly: jsr doDelay
dsc: bit doScroll
; exit IRQ
doDelay:
; Update frameCount
inc frameCountLo
bne :+
inc frameCountHi
:
; If frameCount == frameTrigger then startScroller=1
lda frameCountHi
cmp #>frameTrigger
bne :+
lda frameCountLo
cmp #<frameTrigger
bne :+
lda #$20 ;$20 is JSR ie. turn on the scroller.
sta dsc
lda #$2c ;$2c is BIT $abcd ie. disable the delay routine.
sta dly
:
rts
i understand this but I have bit of a syntax question. I don't understand
bne :+
i understand say
bne *-2
or
bne lable
but I've never seen bne :+ where is that branching too? Is it branching to the : right before the rts? |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
:+ refers to the next colon.
:- refers to the previous colon.
They're called anonymous labels iirc.
You can also use many + or minus to jump several colons back or forward (just to make stuff more unreadable :) ) |
Previous - 1 | 2 - Next |