Changeset 8325447 in buchla-68k for ram/seexec.s
- Timestamp:
- 08/07/2017 02:04:35 PM (7 years ago)
- Branches:
- master
- Children:
- 27c8d40
- Parents:
- 84c0125
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ram/seexec.s
r84c0125 r8325447 13 13 .text 14 14 15 .xdef _se_exec15 .xdef se_exec 16 16 17 17 .xdef BadEvnt 18 18 19 .xdef _xevent20 21 .xref _asgvce22 .xref _clkset23 .xref _getasg24 .xref _gettun25 .xref _procpfl26 .xref _selscor27 .xref _setdyn28 .xref _setloc29 .xref _setsv30 .xref _settmpo31 .xref _settune32 .xref _setv2gi33 34 .xref _anrs35 .xref _var2src36 .xref _curasg37 .xref _curintp38 .xref _cursect39 .xref _grpmode40 .xref _grpstat41 .xref _ins2grp42 .xref _nxtflag43 .xref _recsw44 .xref _s_trns45 .xref _trgtab46 .xref _varmode47 .xref _vce2grp48 .xref _vce2trg49 .xref _veltab19 .xdef xevent 20 21 .xref asgvce 22 .xref clkset 23 .xref getasg 24 .xref gettun 25 .xref procpfl 26 .xref selscor 27 .xref setdyn 28 .xref setloc 29 .xref setsv 30 .xref settmpo 31 .xref settune 32 .xref setv2gi 33 34 .xref anrs 35 .xref var2src 36 .xref curasg 37 .xref curintp 38 .xref cursect 39 .xref grpmode 40 .xref grpstat 41 .xref ins2grp 42 .xref nxtflag 43 .xref recsw 44 .xref s_trns 45 .xref trgtab 46 .xref varmode 47 .xref vce2grp 48 .xref vce2trg 49 .xref veltab 50 50 51 51 .page … … 98 98 | hardware limited by the timer. 99 99 100 _se_exec: link a6,#0 | link stack frames100 se_exec: link a6,#0 | link stack frames 101 101 movea.l P_EP(a6),a0 | get event pointer 'ep' into a0 102 102 move.l a0,_xevent | save in xevent … … 144 144 move.b E_GROUP(a0),d1 | get group number 145 145 add.w d1,d1 | ... * 2 146 lea _grpstat,a1 | point at grpstat146 lea grpstat,a1 | point at grpstat 147 147 tst.w 0(a1,d1.W) | see if group is enabled 148 148 beq exexit | done if not … … 151 151 move.w #LCL_PCH,d2 | put port and channel in d2 152 152 add.w d1,d2 | d2 = trg 153 lea _trgtab,a1 | point at trgtab[trg]153 lea trgtab,a1 | point at trgtab[trg] 154 154 move.b 0(a1,d2.W),d0 | ... 155 155 or.b #M_KSTATE,d0 | set trigger table entry on 156 156 move.b d0,0(a1,d2.W) | ... 157 lea _veltab,a1 | point at veltab157 lea veltab,a1 | point at veltab 158 158 add.w d2,d2 | ... 159 159 move.w E_VEL(a0),0(a1,d2.W) | put velocity in veltab … … 164 164 move.b E_GROUP(a0),d1 | d1 = group number (0..11) 165 165 move.w d1,-(a7) | put group number on the stack 166 jsr _asgvce | start the note166 jsr asgvce | start the note 167 167 add.l #10,a7 | clean up the stack 168 168 bra exexit | done … … 182 182 move.b E_GROUP(a0),d1 | get group number 183 183 add.w d1,d1 | ... * 2 184 lea _grpstat,a1 | point at grpstat184 lea grpstat,a1 | point at grpstat 185 185 tst.w 0(a1,d1.W) | check group status 186 186 beq exexit | done if disabled … … 190 190 add.w d1,d2 | d2 = trg * 2 191 191 add.w d2,d2 | ... 192 lea _trgtab,a1 | set trigger table entry off192 lea trgtab,a1 | set trigger table entry off 193 193 move.b 0(a1,d2.W),d0 | ... 194 194 and.b #N_KSTATE,d0 | ... … … 200 200 lsr.w #1,d2 | adjust d2 201 201 clr.w d1 | set loop index 202 lea _vce2trg,a2 | point at vce2trg table202 lea vce2trg,a2 | point at vce2trg table 203 203 204 204 exnend1: cmp.w (a2),d2 | see if this voice uses trg … … 209 209 move.w d1,-(a7) | save d1 on stack 210 210 move.w d2,-(a7) | save d2 on stack 211 lea _vce2grp,a1 | put group on stack211 lea vce2grp,a1 | put group on stack 212 212 move.w d1,d0 | ... 213 213 add.w d0,d0 | ... 214 214 move.w 0(a1,d0.W),-(a7) | ... 215 215 move.w d2,-(a7) | put trg on stack 216 jsr _procpfl| process sustained voices216 jsr procpfl | process sustained voices 217 217 addq.l #4,a7 | clean up stack 218 218 move.w (a7)+,d2 | restore d2 … … 233 233 exsbgn: clr.w d0 | get section number 234 234 move.b E_DATA1(a0),d0 | ... 235 move.w d0, _cursect | set section number235 move.w d0,cursect | set section number 236 236 bra exexit | done 237 237 … … 241 241 move.b E_DATA1(a0),d0 | ... 242 242 move.w d0,-(a7) | getasg(curasg = asgn) 243 move.w d0, _curasg | ...244 jsr _getasg | ...243 move.w d0,curasg | ... 244 jsr getasg | ... 245 245 tst.w (a7)+ | ... 246 246 bra exexit | done … … 251 251 move.b E_DATA1(a0),d0 | ... 252 252 move.w d0,-(a7) | gettun(tuning) 253 jsr _gettun | ...253 jsr gettun | ... 254 254 tst.w (a7)+ | ... 255 255 bra exexit | done … … 260 260 move.b E_DATA1(a0),d0 | ... 261 261 add.w d0,d0 | ... as an index in d0 262 lea _grpstat,a1 | check grpstat[grp]262 lea grpstat,a1 | check grpstat[grp] 263 263 tst.w 0(a1,d0.W) | ... 264 264 beq exexit | done if disabled 265 265 266 lea _s_trns,a1 | set group transposition266 lea s_trns,a1 | set group transposition 267 267 move.w E_LFT(a0),0(a1,d0.W) | ... 268 jsr _settune| ...268 jsr settune | ... 269 269 bra exexit | done 270 270 … … 276 276 move.b E_DATA1(a0),d0 | ... 277 277 move.w d0,-(a7) | settmpo(tempo) 278 jsr _settmpo| ...278 jsr settmpo | ... 279 279 tst.w (a7)+ | ... 280 280 bra exexit | done … … 283 283 | ------ ------------------ 284 284 exstop: clr.w -(a7) | stop the clock 285 jsr _clkset | ...285 jsr clkset | ... 286 286 tst.w (a7)+ | ... 287 287 bra exexit | that's all, folks … … 289 289 | exintp -- execute interpolate event 290 290 | ------ ------------------------- 291 exintp: move.w E_DATA1(a0), _curintp | set interpolate value291 exintp: move.w E_DATA1(a0),curintp | set interpolate value 292 292 bra exexit | done 293 293 … … 299 299 move.b E_DATA1(a0),d0 | ... in d0 300 300 add.w d0,d0 | ... as a word offset 301 lea _grpstat,a1 | check grpstat[grp]301 lea grpstat,a1 | check grpstat[grp] 302 302 tst.w 0(a1,d0.W) | ... 303 303 beq exexit | done if not enabled 304 304 305 lea _ins2grp,a1 | point at ins2grp[]305 lea ins2grp,a1 | point at ins2grp[] 306 306 clr.w d0 | get instrument number 307 307 move.b E_DATA2(a0),d0 | ... in d0 … … 314 314 or.w d0,d2 | OR in new instrument number 315 315 move.w d2,0(a1,d1.W) | set ins2grp[group] 316 jsr _setv2gi| setv2gi(group)316 jsr setv2gi | setv2gi(group) 317 317 tst.w (a7)+ | clean up stack 318 318 bra exexit | done … … 325 325 move.b E_DATA1(a0),d0 | ... in d0 326 326 add.w d0,d0 | ... as a word offset 327 lea _grpstat,a1 | check grpstat[grp]327 lea grpstat,a1 | check grpstat[grp] 328 328 tst.w 0(a1,d0.W) | ... 329 329 beq exexit | done if not enabled … … 335 335 move.w d0,-(a7) | setdyn(group, dyn) 336 336 move.w d1,-(a7) | ... 337 jsr _setdyn | ...337 jsr setdyn | ... 338 338 adda.l #4,a7 | clean up stack 339 339 bra exexit | done … … 344 344 move.b E_DATA1(a0),d0 | ... in d0 345 345 add.w d0,d0 | ... as a word offset 346 lea _grpstat,a1 | check grpstat[grp]346 lea grpstat,a1 | check grpstat[grp] 347 347 tst.w 0(a1,d0.W) | ... 348 348 beq exexit | done if not enabled … … 354 354 move.w d0,-(a7) | setloc(group, loc) 355 355 move.w d1,-(a7) | ... 356 jsr _setloc | ...356 jsr setloc | ... 357 357 adda.l #4,a7 | clean up stack 358 358 bra exexit | done … … 365 365 andi.w #0x000F,d0 | ... in d0 366 366 add.w d0,d0 | ... as a word offset 367 lea _grpstat,a1 | check grpstat[grp]367 lea grpstat,a1 | check grpstat[grp] 368 368 tst.w 0(a1,d0.W) | ... 369 369 beq exexit | done if not enabled … … 374 374 clr.w d0 | get resolution 375 375 move.b E_DATA2(a0),d0 | ... in d0 376 lea _anrs,a1| point at resolution table base376 lea anrs,a1 | point at resolution table base 377 377 move.w d0,0(a1,d1.W) | save resolution in table 378 378 bra exexit | done … … 383 383 andi.w #0x000F,d0 | ... in d0 384 384 add.w d0,d0 | ... as a word offset 385 lea _grpstat,a1 | check grpstat[grp]385 lea grpstat,a1 | check grpstat[grp] 386 386 tst.w 0(a1,d0.W) | ... 387 387 beq exexit | done if not enabled … … 394 394 lsr.w #3,d2 | extract variable number 395 395 andi.w #0x001E,d2 | ... as a word index in d2 396 lea _var2src,a1 | point at variable map396 lea var2src,a1 | point at variable map 397 397 move.w 0(a1,d2.W),-(a7) | put source number on stack 398 398 move.w d1,-(a7) | put group number on stack 399 jsr _setsv | setsv(group, src, val)399 jsr setsv | setsv(group, src, val) 400 400 adda.l #6,a7 | clean up stack 401 401 bra exexit | done … … 403 403 | exnext -- next score 404 404 | ------ ---------- 405 exnext: move.w #1, _nxtflag | set next score flag405 exnext: move.w #1,nxtflag | set next score flag 406 406 bra exexit | done 407 407 … … 410 410 | expnch -- execute punch in/out 411 411 | ------ -------------------- 412 expnch: tst.w _recsw | recording ?412 expnch: tst.w recsw | recording ? 413 413 beq exexit | ignore if not 414 414 … … 418 418 | punch out 419 419 420 lea _grpmode,a1 | setup for group modes420 lea grpmode,a1 | setup for group modes 421 421 move.w #11,d0 | ... 422 422 … … 429 429 dbra d0,expnch0 | loop through all groups 430 430 431 lea _varmode,a1 | setup for variable modes431 lea varmode,a1 | setup for variable modes 432 432 move.w #5,d1 | set variable count 433 433 … … 452 452 | punch in 453 453 454 expnch5: lea _grpmode,a1 | setup for group modes454 expnch5: lea grpmode,a1 | setup for group modes 455 455 move.w #11,d0 | ... 456 456 … … 463 463 dbra d0,expnch6 | loop through all groups 464 464 465 lea _varmode,a1 | setup for variable modes465 lea varmode,a1 | setup for variable modes 466 466 move.w #5,d1 | set variable count 467 467
Note:
See TracChangeset
for help on using the changeset viewer.