105 lines
1.5 KiB
Plaintext
105 lines
1.5 KiB
Plaintext
Osc::init:
|
|
lsp param[$0]
|
|
ldi $2
|
|
ge?
|
|
bnt code_004b
|
|
lap param[$2]
|
|
aTop howManyCycles
|
|
code_004b: lsp param[$0]
|
|
ldi $4 ; scaleX
|
|
ge?
|
|
bnt code_0067
|
|
lap param[$4]
|
|
aTop startCel
|
|
lap param[$5]
|
|
aTop endCel
|
|
lsp param[$0]
|
|
ldi $6 ; maxScale
|
|
eq?
|
|
bnt code_0081
|
|
lap param[$6]
|
|
aTop caller
|
|
jmp code_0081
|
|
|
|
code_0067: ldi $0
|
|
aTop startCel
|
|
pushi $161 ; 353, lastCel
|
|
push0
|
|
lap param[$1]
|
|
send $4
|
|
bnot
|
|
aTop endCel
|
|
lsp param[$0]
|
|
ldi $3 ; z
|
|
eq?
|
|
bnt code_0081
|
|
lap param[$3]
|
|
aTop caller
|
|
code_0081: pushi $94 ; 148, init
|
|
push1
|
|
lsp param[$1]
|
|
super Cycle, $6
|
|
bnot
|
|
ret
|
|
|
|
Osc::doit:
|
|
link $1
|
|
pushi $15f ; 351, nextCel
|
|
push0
|
|
self $4
|
|
bnot
|
|
sat temp[$0]
|
|
push
|
|
pToa endCel
|
|
gt?
|
|
bt code_00a2
|
|
lst temp[$0]
|
|
pToa startCel
|
|
lt?
|
|
code_00a2: bnt code_00b2
|
|
pToa cycleDir
|
|
neg
|
|
aTop cycleDir
|
|
pushi $160 ; 352, cycleDone
|
|
push0
|
|
self $4
|
|
bnot
|
|
jmp code_00bc
|
|
|
|
code_00b2: pushi $10 ; 16, cel
|
|
push1
|
|
lst temp[$0]
|
|
pToa client
|
|
send $6
|
|
bnot
|
|
code_00bc: ret
|
|
|
|
Osc::cycleDone:
|
|
pToa howManyCycles
|
|
bnt code_00dc
|
|
pushi $10 ; 16, cel
|
|
push1
|
|
pushi $15f ; 351, nextCel
|
|
push0
|
|
self $4
|
|
bnot
|
|
push
|
|
pToa client
|
|
send $6
|
|
bnot
|
|
pTos howManyCycles
|
|
ldi $0
|
|
gt?
|
|
bnt code_00e7
|
|
dpToa howManyCycles
|
|
jmp code_00e7
|
|
|
|
code_00dc: ldi $1
|
|
aTop completed
|
|
pushi $159 ; 345, motionCue
|
|
push0
|
|
self $4
|
|
bnot
|
|
code_00e7: ret
|
|
|