Changeset 4f508e6 in buchla-68k for ram/execkey.s
- Timestamp:
- 07/01/2017 02:34:46 PM (7 years ago)
- Branches:
- master
- Children:
- 08e1da1
- Parents:
- f40a309
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ram/execkey.s
rf40a309 r4f508e6 1 *------------------------------------------------------------------------------2 *execkey.s -- execute key -- FPU function start subroutine3 *Version 15 -- 1988-08-29 -- D.N. Lynx Crowe4 *Hand optimized version of execkey() and fnstart() from C compiler output5 *------------------------------------------------------------------------------1 | ------------------------------------------------------------------------------ 2 | execkey.s -- execute key -- FPU function start subroutine 3 | Version 15 -- 1988-08-29 -- D.N. Lynx Crowe 4 | Hand optimized version of execkey() and fnstart() from C compiler output 5 | ------------------------------------------------------------------------------ 6 6 .text 7 * 8 LOC_EOR .equ09 LOC_SUB .equ110 * 7 8 LOC_EOR = 0 9 LOC_SUB = 1 10 11 11 .xdef _execkey 12 * 12 13 13 .xref _xgetran 14 * 14 15 15 .xref _rsntab 16 16 .xref _expbit … … 26 26 .xref _veltab 27 27 .xref _vpsms 28 * 29 .page 30 * 31 *Offsets for execkey() parameters32 * -------------------------------- 33 TRG .equ 8 *WORD -- trigger34 PCH .equ 10 *WORD -- pitch35 VCE .equ 12 *WORD -- voice (0..11)36 TAG .equ 14 *WORD -- I_TM_... inversion tag37 * 38 *Register variables39 *------------------40 A_FP .equ A5 * LONG -- struct idfnhdr *41 A_FPU .equ A4 *LONG -- FPU base address42 A_SMP .equ A3 * LONG -- struct sment *43 * 44 R_FPMANT .equ D7 *WORD -- FPU time mantissa45 R_FPEXP .equ D6 *WORD -- FPU time exponent46 R_FPCTL .equ D5 *WORD -- FPU control word47 R_I .equ D4 *WORD -- loop index48 R_FPVAL .equ D3 *WORD -- FPU value49 * 50 *Local (stack) variables51 *-----------------------52 PT .equ -4 * LONG -- instpnt *53 VEP .equ -8 * LONG -- struct valent *54 OLDI .equ -10 *WORD -- old IPL (sr)55 OCTYPE .equ -12 *WORD -- oscillator 1 mode / scratch56 VP .equ -14 *WORD -- voice # + function # index57 SRCNUM .equ -16 *WORD -- general source #58 SRCVAL .equ -18 *WORD -- general source value59 TSRCVAL .equ -20 *WORD -- temporary general source value60 MLTVAL .equ -22 *WORD -- general source multiplier61 TFPVAL .equ -24 *WORD -- temporary FPU value62 LTMP .equ -28 *LONG -- long temporary63 IP .equ -32 * LONG -- struct instdef *64 GROUP .equ -34 *WORD -- group number << 465 * 66 *Symbolic constants67 *------------------68 LASTLOCL .equ GROUP *last local on the stack69 * 70 FPU_DI .equ $2200 *sr value for disabling FPU interrupts71 PITCHMAX .equ 21920 *maximum pitch value72 VALMAX .equ $00007D00 *maximum FPU value73 VALMIN .equ $FFFF8300 *minimum FPU value74 VBLEN .equ 3938 *length of a voice buffer75 LSPCH .equ 2 *left shift for pitch sources76 * 77 .page 78 * 79 *execkey(trg, pch, vce)80 *short trg, pch, vce;81 *{82 * 28 29 .page 30 31 | Offsets for execkey() parameters 32 | -------------------------------- 33 TRG = 8 | WORD -- trigger 34 PCH = 10 | WORD -- pitch 35 VCE = 12 | WORD -- voice (0..11) 36 TAG = 14 | WORD -- I_TM_... inversion tag 37 38 | Register variables 39 | ------------------ 40 A_FP = A5 | LONG -- struct idfnhdr | 41 A_FPU = A4 | LONG -- FPU base address 42 A_SMP = A3 | LONG -- struct sment | 43 44 R_FPMANT = D7 | WORD -- FPU time mantissa 45 R_FPEXP = D6 | WORD -- FPU time exponent 46 R_FPCTL = D5 | WORD -- FPU control word 47 R_I = D4 | WORD -- loop index 48 R_FPVAL = D3 | WORD -- FPU value 49 50 | Local (stack) variables 51 | ----------------------- 52 PT = -4 | LONG -- instpnt | 53 VEP = -8 | LONG -- struct valent | 54 OLDI = -10 | WORD -- old IPL (sr) 55 OCTYPE = -12 | WORD -- oscillator 1 mode / scratch 56 VP = -14 | WORD -- voice # + function # index 57 SRCNUM = -16 | WORD -- general source # 58 SRCVAL = -18 | WORD -- general source value 59 TSRCVAL = -20 | WORD -- temporary general source value 60 MLTVAL = -22 | WORD -- general source multiplier 61 TFPVAL = -24 | WORD -- temporary FPU value 62 LTMP = -28 | LONG -- long temporary 63 IP = -32 | LONG -- struct instdef | 64 GROUP = -34 | WORD -- group number << 4 65 66 | Symbolic constants 67 | ------------------ 68 LASTLOCL = GROUP | last local on the stack 69 70 FPU_DI = 0x2200 | sr value for disabling FPU interrupts 71 PITCHMAX = 21920 | maximum pitch value 72 VALMAX = 0x00007D00 | maximum FPU value 73 VALMIN = 0xFFFF8300 | minimum FPU value 74 VBLEN = 3938 | length of a voice buffer 75 LSPCH = 2 | left shift for pitch sources 76 77 .page 78 79 | execkey(trg, pch, vce) 80 | short trg, pch, vce; 81 | { 82 83 83 _execkey: link A6,#LASTLOCL 84 84 movem.l D2-R_FPMANT/A_SMP-A_FP,-(sp) 85 * 86 *ip = &vbufs[vce];87 * 85 86 | ip = &vbufs[vce]; 87 88 88 move.w VCE(A6),D0 89 89 asl.w #2,D0 90 90 lea vbtab,A0 91 91 move.l 0(A0,D0.W),IP(A6) 92 * 93 *vce2trg[vce] = trg;94 * 92 93 | vce2trg[vce] = trg; 94 95 95 lsr.w #1,D0 96 96 lea _vce2trg,A0 97 97 move.w TRG(A6),0(A0,D0.W) 98 * 99 *group = (vce2grp[vce] - 1) << 4;100 * 98 99 | group = (vce2grp[vce] - 1) << 4; 100 101 101 move.w VCE(A6),A0 102 102 add.l A0,A0 … … 107 107 asl.w #4,D0 108 108 move.w D0,GROUP(A6) 109 * 110 .page 111 *------------------------------------------------------------------------------112 *Start function 0 -- Frq 1113 *------------------------------------------------------------------------------114 * 115 *if (ip->idhfnc[0].idftmd & I_TM_KEY) {116 * 109 110 .page 111 | ------------------------------------------------------------------------------ 112 | Start function 0 -- Frq 1 113 | ------------------------------------------------------------------------------ 114 115 | if (ip->idhfnc[0].idftmd & I_TM_KEY) { 116 117 117 move.l IP(A6),A0 118 118 move.b 93(A0),D0 … … 121 121 btst #0,D0 122 122 bne FN00A 123 * 123 124 124 jmp FN01 125 * 126 *vp = (vce << 4) + 1;127 * 125 126 | vp = (vce << 4) + 1; 127 128 128 FN00A: move VCE(A6),D0 129 129 asl #4,D0 130 130 add.w #1,D0 131 131 move D0,VP(A6) 132 * 133 *fpu = io_fpu + FPU_OFNC + (vp << 4);134 * 132 133 | fpu = io_fpu + FPU_OFNC + (vp << 4); 134 135 135 asl #5,D0 136 136 ext.l D0 137 137 move.l D0,A_FPU 138 add.l #_io_fpu+ $4000,A_FPU139 * 140 *fp = &ip->idhfnc[0];141 * 138 add.l #_io_fpu+0x4000,A_FPU 139 140 | fp = &ip->idhfnc[0]; 141 142 142 move.l IP(A6),A_FP 143 143 add.l #86,A_FP 144 * 145 *pt = &ip->idhpnt[fp->idfpt1];146 * 144 145 | pt = &ip->idhpnt[fp->idfpt1]; 146 147 147 clr.l D0 148 148 move.b 6(A_FP),D0 … … 154 154 add.l #242,D0 155 155 move.l D0,PT(A6) 156 * 157 .page 158 * 159 *srcnum = group | fp->idfsrc;160 * 156 157 .page 158 159 | srcnum = group | fp->idfsrc; 160 161 161 move.w GROUP(A6),D0 162 162 ext.l D0 … … 165 165 or D1,D0 166 166 move D0,SRCNUM(A6) 167 * 168 *vep = &valents[srcnum];169 * 167 168 | vep = &valents[srcnum]; 169 170 170 add.l D0,D0 171 171 move.l D0,D1 … … 174 174 add.l #_valents,D0 175 175 move.l D0,VEP(A6) 176 * 177 *smp = vpsms[vp];178 * 176 177 | smp = vpsms[vp]; 178 179 179 move VP(A6),A0 180 180 add.l A0,A0 … … 182 182 add.l #_vpsms,A0 183 183 move.l (A0),A_SMP 184 * 185 *if (srcnum NE smp->sm) {186 * 184 185 | if (srcnum NE smp->sm) { 186 187 187 clr D0 188 188 move 10(A_SMP),D0 189 189 cmp SRCNUM(A6),D0 190 190 beq F00L113 191 * 192 *(smp->prv)->nxt = smp->nxt;193 * 191 192 | (smp->prv)->nxt = smp->nxt; 193 194 194 move.l 4(A_SMP),A0 195 195 move.l (A_SMP),(A0) 196 * 197 *(smp->nxt)->prv = smp->prv;198 * 196 197 | (smp->nxt)->prv = smp->prv; 198 199 199 move.l (A_SMP),A0 200 200 move.l 4(A_SMP),4(A0) 201 * 202 * smp->prv = (struct sment *)vep;203 * 201 202 | smp->prv = (struct sment |)vep; 203 204 204 move.l VEP(A6),4(A_SMP) 205 * 206 *smp->nxt = vep->nxt;207 * 205 206 | smp->nxt = vep->nxt; 207 208 208 move.l VEP(A6),A0 209 209 move.l (A0),(A_SMP) 210 * 211 *(vep->nxt)->prv = smp;212 * 210 211 | (vep->nxt)->prv = smp; 212 213 213 move.l VEP(A6),A0 214 214 move.l (A0),A0 215 215 move.l A_SMP,4(A0) 216 * 217 *vep->nxt = smp;218 * 216 217 | vep->nxt = smp; 218 219 219 move.l VEP(A6),A0 220 220 move.l A_SMP,(A0) 221 * 222 *smp->sm = srcnum;223 * 221 222 | smp->sm = srcnum; 223 224 224 move SRCNUM(A6),10(A_SMP) 225 * 226 *}227 * 228 *mltval = fp->idfmlt;229 * 225 226 | } 227 228 | mltval = fp->idfmlt; 229 230 230 F00L113: move 2(A_FP),MLTVAL(A6) 231 * 232 .page 233 * 234 *switch (fp->idfsrc) {235 * 231 232 .page 233 234 | switch (fp->idfsrc) { 235 236 236 move.b 4(A_FP),D0 237 237 ext.w d0 238 238 cmp #10,D0 239 239 bhi F00L122 240 * 240 241 241 asl #2,D0 242 242 lea F00L123,A0 243 243 movea.l 0(A0,D0.W),A0 244 244 jmp (A0) 245 * 246 *case SM_NONE:247 *mltval = 0;248 * 245 246 | case SM_NONE: 247 | mltval = 0; 248 249 249 F00L116: clr MLTVAL(A6) 250 * 251 *tsrcval = 0;252 * 250 251 | tsrcval = 0; 252 253 253 clr TSRCVAL(A6) 254 * 255 *break;256 * 254 255 | break; 256 257 257 bra F00L114 258 * 259 *case SM_RAND:260 *tsrcval = xgetran(mltval);261 * 258 259 | case SM_RAND: 260 | tsrcval = xgetran(mltval); 261 262 262 F00L117: move MLTVAL(A6),(sp) 263 263 jsr _xgetran 264 264 move D0,TSRCVAL(A6) 265 * 266 *break;267 * 265 266 | break; 267 268 268 bra F00L114 269 * 270 *case SM_PTCH:271 *tsrcval = pch;272 * 269 270 | case SM_PTCH: 271 | tsrcval = pch; 272 273 273 F00L118: move PCH(A6),TSRCVAL(A6) 274 * 275 *break;276 * 274 275 | break; 276 277 277 bra F00L114 278 * 279 .page 280 * 281 *case SM_FREQ:282 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];283 * 278 279 .page 280 281 | case SM_FREQ: 282 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 283 284 284 F00L119: move.w PCH(A6),D0 285 285 asr.w #7,D0 286 and.w # $00FF,D0286 and.w #0x00FF,D0 287 287 move.w D0,A0 288 288 add.l A0,A0 289 289 add.l #_ptoftab,A0 290 290 move.w (A0),TSRCVAL(A6) 291 * 292 *break;293 * 291 292 | break; 293 294 294 bra F00L114 295 * 296 *case SM_KVEL:297 *tsrcval = veltab[trg];298 * 295 296 | case SM_KVEL: 297 | tsrcval = veltab[trg]; 298 299 299 F00L120: move.w TRG(A6),A0 300 300 add.l A0,A0 301 301 add.l #_veltab,A0 302 302 move.w (A0),TSRCVAL(A6) 303 * 304 *break;305 * 303 304 | break; 305 306 306 bra F00L114 307 * 308 *case SM_KPRS:309 *tsrcval = prstab[trg];310 * 307 308 | case SM_KPRS: 309 | tsrcval = prstab[trg]; 310 311 311 F00L121: move.w TRG(A6),A0 312 312 add.l A0,A0 313 313 add.l #_prstab,A0 314 314 move.w (A0),TSRCVAL(A6) 315 * 316 *break;317 * 315 316 | break; 317 318 318 bra F00L114 319 * 320 *default:321 *tsrcval = vep->val;322 * 319 320 | default: 321 | tsrcval = vep->val; 322 323 323 F00L122: move.l VEP(A6),A0 324 324 move.w 8(A0),TSRCVAL(A6) 325 * 326 *}327 * 328 .page 329 * 330 *srcval = addpch(tsrcval, 0);331 * 325 326 | } 327 328 .page 329 330 | srcval = addpch(tsrcval, 0); 331 332 332 F00L114: move.w TSRCVAL(A6),D0 333 333 ext.l D0 334 334 asr.l #5,D0 335 *sub.l #500,D0335 | sub.l #500,D0 336 336 asl.l #LSPCH,D0 337 337 cmp.l #PITCHMAX,D0 338 338 ble F00L129A 339 * 339 340 340 move.l #PITCHMAX,D0 341 * 341 342 342 F00L129A: move D0,SRCVAL(A6) 343 * 344 .page 345 * 346 *if (pt->ipvsrc) {347 * 343 344 .page 345 346 | if (pt->ipvsrc) { 347 348 348 F00L124: move.l PT(A6),A0 349 349 tst.b 6(A0) 350 350 beq F00L136 351 * 352 *switch (pt->ipvsrc) {353 * 351 352 | switch (pt->ipvsrc) { 353 354 354 move.l PT(A6),A0 355 355 move.b 6(A0),D0 … … 358 358 cmp #9,D0 359 359 bhi F00L144 360 * 360 361 361 asl #2,D0 362 362 lea F00L145,A0 363 363 move.l 0(A0,D0.W),A0 364 364 jmp (A0) 365 * 366 *case SM_RAND:367 *ltmp = xgetran(pt_>ipvmlt);368 * 365 366 | case SM_RAND: 367 | ltmp = xgetran(pt_>ipvmlt); 368 369 369 F00L139: move.l PT(A6),A0 370 370 move 4(A0),(sp) … … 372 372 ext.l D0 373 373 move.l D0,LTMP(A6) 374 * 375 *break;376 * 374 375 | break; 376 377 377 bra F00L137 378 * 379 *case SM_PTCH:380 *ltmp = pch;381 * 378 379 | case SM_PTCH: 380 | ltmp = pch; 381 382 382 F00L140: move PCH(A6),A0 383 383 move.l A0,LTMP(A6) 384 * 385 *break;386 * 384 385 | break; 386 387 387 bra F00L137 388 * 389 .page 390 * 391 *case SM_FREQ:392 *ltmp = ptoftab[(pch >> 7) & 0x00FF];393 * 388 389 .page 390 391 | case SM_FREQ: 392 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 393 394 394 F00L141: move PCH(A6),D0 395 395 asr #7,D0 … … 401 401 ext.l D0 402 402 move.l D0,LTMP(A6) 403 * 404 *break;405 * 403 404 | break; 405 406 406 bra F00L137 407 * 408 *case SM_KVEL:409 *ltmp = veltab[trg];410 * 407 408 | case SM_KVEL: 409 | ltmp = veltab[trg]; 410 411 411 F00L142: move TRG(A6),A0 412 412 add.l A0,A0 … … 415 415 ext.l D0 416 416 move.l D0,LTMP(A6) 417 * 418 *break;419 * 417 418 | break; 419 420 420 bra F00L137 421 * 422 .page 423 * 424 *case SM_KPRS:425 *ltmp = prstab[trg];426 * 421 422 .page 423 424 | case SM_KPRS: 425 | ltmp = prstab[trg]; 426 427 427 F00L143: move TRG(A6),A0 428 428 add.l A0,A0 … … 431 431 ext.l D0 432 432 move.l D0,LTMP(A6) 433 * 434 *break;435 * 433 434 | break; 435 436 436 bra F00L137 437 * 438 .page 439 * 440 *default:441 *ltmp = valents[group | pt->ipvsrc].val;442 * 437 438 .page 439 440 | default: 441 | ltmp = valents[group | pt->ipvsrc].val; 442 443 443 F00L144: move.l PT(A6),A0 444 444 clr.l D0 … … 454 454 move 8(A0,A1.l),D0 455 455 move.l D0,LTMP(A6) 456 * 457 *}458 * 459 * 460 .page 461 * 462 * ltmp = (ltmp *pt->ipvmlt) >> 15;463 * 456 457 | } 458 459 460 .page 461 462 | ltmp = (ltmp | pt->ipvmlt) >> 15; 463 464 464 F00L137: move.l PT(A6),A0 465 465 move.w 4(A0),D0 … … 469 469 asr.l D1,D0 470 470 move.l D0,LTMP(A6) 471 * 472 *ltmp += (long)pt->ipval;473 * 471 472 | ltmp += (long)pt->ipval; 473 474 474 move.l PT(A6),A0 475 475 move 2(A0),D0 476 476 ext.l D0 477 477 add.l D0,LTMP(A6) 478 * 479 *if (ltmp GT (long)VALMAX)480 *ltmp = (long)VALMAX;481 * 478 479 | if (ltmp GT (long)VALMAX) 480 | ltmp = (long)VALMAX; 481 482 482 cmp.l #VALMAX,LTMP(A6) 483 483 ble F00L146 484 * 484 485 485 move.l #VALMAX,LTMP(A6) 486 486 bra F00L147 487 * 488 *else if (ltmp LT (long)VALMIN)489 *ltmp = (long)VALMIN;490 * 487 488 | else if (ltmp LT (long)VALMIN) 489 | ltmp = (long)VALMIN; 490 491 491 F00L146: cmp.l #VALMIN,LTMP(A6) 492 492 bge F00L147 493 * 493 494 494 move.l #VALMIN,LTMP(A6) 495 * 496 *tfpval = (short)ltmp;497 * 495 496 | tfpval = (short)ltmp; 497 498 498 F00L147: move.w LTMP+2(A6),TFPVAL(A6) 499 499 bra F00L149 500 * 501 *} else {502 * 503 *tfpval = pt->ipval;504 * 500 501 | } else { 502 503 | tfpval = pt->ipval; 504 505 505 F00L136: move.l PT(A6),A0 506 506 move 2(A0),TFPVAL(A6) 507 * 508 *}509 * 510 .page 511 * 512 *fpmant = (((long)pt->iptim & 0x0000FFF0L)513 * *((long)timemlt & 0x0000FFFFL)) >> 15;514 * 507 508 | } 509 510 .page 511 512 | fpmant = (((long)pt->iptim & 0x0000FFF0L) 513 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 514 515 515 F00L149: move.l PT(A6),A0 516 516 move.w (A0),D0 517 517 move.w D0,D2 518 andi.w # $FFF0,D0518 andi.w #0xFFF0,D0 519 519 move.w _timemlt,D1 520 520 muls D1,D0 … … 522 522 asr.l D1,D0 523 523 move D0,R_FPMANT 524 * 525 *fpexp = expbit[pt->iptim & 0x000F];526 * 527 and # $000F,D2524 525 | fpexp = expbit[pt->iptim & 0x000F]; 526 527 and #0x000F,D2 528 528 move D2,A0 529 529 add.l A0,A0 530 530 add.l #_expbit,A0 531 531 move (A0),R_FPEXP 532 * 533 .page 534 * 535 *octype = ip->idhos1c & OC_MOD;536 * 532 533 .page 534 535 | octype = ip->idhos1c & OC_MOD; 536 537 537 F00L152: move.l IP(A6),A0 538 538 move.b 74(A0),D0 539 539 and #3,D0 540 * 541 *if ((octype EQ OC_FRQ) OR (octype EQ OC_PCH))542 * 540 541 | if ((octype EQ OC_FRQ) OR (octype EQ OC_PCH)) 542 543 543 cmp #2,D0 544 544 beq F00L1001 545 * 545 546 546 cmp #3,D0 547 547 bne F00L153 548 * 549 *fp->idfpch = ip->idhos1v;550 * 548 549 | fp->idfpch = ip->idhos1v; 550 551 551 F00L1001: move.l IP(A6),A0 552 552 move 78(A0),(A_FP) 553 553 bra F00L154 554 * 555 *else556 *fp->idfpch = pch + ip->idhos1v;557 * 554 555 | else 556 | fp->idfpch = pch + ip->idhos1v; 557 558 558 F00L153: move.w PCH(A6),D0 559 559 ext.l D0 … … 561 561 ext.l D1 562 562 add.l d1,d0 563 * 564 *if (fp->idfpch > PITCHMAX)565 *fp->idfpch = PITCHMAX;566 * 563 564 | if (fp->idfpch > PITCHMAX) 565 | fp->idfpch = PITCHMAX; 566 567 567 cmp.l #PITCHMAX,d0 568 568 ble F00153A 569 * 569 570 570 move.l #PITCHMAX,d0 571 * 571 572 572 F00153A: move.w d0,(A_FP) 573 * 574 *fpval = addpch(tfpval, fp->idfpch);575 * 573 574 | fpval = addpch(tfpval, fp->idfpch); 575 576 576 F00L154: move.w TFPVAL(A6),D1 577 577 ext.l D1 … … 584 584 cmp.l #PITCHMAX,D0 585 585 ble F00L154A 586 * 586 587 587 move.l #PITCHMAX,D0 588 * 588 589 589 F00L154A: move D0,R_FPVAL 590 * 591 .page 592 * 590 591 .page 592 593 593 move.b 5(A_FP),D0 594 594 ext.w D0 595 595 sub.w #1,D0 596 596 movea.l PT(A6),A0 597 * 598 *oldi = setipl(FPU_DI);599 * 597 598 | oldi = setipl(FPU_DI); 599 600 600 move sr,OLDI(A6) 601 601 move #FPU_DI,sr 602 * 602 603 603 F00L168: clr.b 10(A0) 604 604 add.l #12,A0 605 605 dbra D0,F00L168 606 * 607 .page 608 * 609 *fp->idftmd ^= I_NVBITS;610 * 606 607 .page 608 609 | fp->idftmd ^= I_NVBITS; 610 611 611 F00L165: eor.b #24,7(A_FP) 612 * 613 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;614 * 612 613 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 614 615 615 move.b 7(A_FP),R_FPCTL 616 616 and #28,R_FPCTL 617 617 or #3,R_FPCTL 618 * 619 *fp->idfcpt = fp->idfpt1;620 * 618 619 | fp->idfcpt = fp->idfpt1; 620 621 621 move.b 6(A_FP),8(A_FP) 622 * 623 *fp->idftmd |= I_ACTIVE;624 * 622 623 | fp->idftmd |= I_ACTIVE; 624 625 625 or.b #2,7(A_FP) 626 * 627 *fp->idftrf = trg;628 * 626 627 | fp->idftrf = trg; 628 629 629 move TRG(A6),10(A_FP) 630 * 631 * *(fpu + (long)FPU_TCV1) = srcval;632 * 633 move SRCVAL(A6), $8(A_FPU)634 * 635 *++octype;636 * 630 631 | |(fpu + (long)FPU_TCV1) = srcval; 632 633 move SRCVAL(A6),0x8(A_FPU) 634 635 | ++octype; 636 637 637 add #1,OCTYPE(A6) 638 * 639 * *(fpu + (long)FPU_TSF1) = mltval;640 * 641 move MLTVAL(A6), $A(A_FPU)642 * 643 *++octype;644 * 638 639 | |(fpu + (long)FPU_TSF1) = mltval; 640 641 move MLTVAL(A6),0xA(A_FPU) 642 643 | ++octype; 644 645 645 add #1,OCTYPE(A6) 646 * 647 * *(fpu + (long)FPU_TMNT) = fpmant;648 * 649 move R_FPMANT, $14(A_FPU)650 * 651 *++octype;652 * 646 647 | |(fpu + (long)FPU_TMNT) = fpmant; 648 649 move R_FPMANT,0x14(A_FPU) 650 651 | ++octype; 652 653 653 add #1,OCTYPE(A6) 654 * 655 * *(fpu + (long)FPU_TEXP) = fpexp;656 * 657 move R_FPEXP, $16(A_FPU)658 * 659 *++octype;660 * 654 655 | |(fpu + (long)FPU_TEXP) = fpexp; 656 657 move R_FPEXP,0x16(A_FPU) 658 659 | ++octype; 660 661 661 add #1,OCTYPE(A6) 662 * 663 .page 664 * 665 *if (fp->idftmd & I_VNSUBN)666 * 662 663 .page 664 665 | if (fp->idftmd & I_VNSUBN) 666 667 667 btst #3,7(A_FP) 668 668 beq F00L169 669 * 670 * *(fpu + (long)FPU_TNV1) = fpval;671 * 672 move R_FPVAL, $1C(A_FPU)669 670 | |(fpu + (long)FPU_TNV1) = fpval; 671 672 move R_FPVAL,0x1C(A_FPU) 673 673 bra F00L170 674 * 675 *else676 * *(fpu + (long)FPU_TNV0) = fpval;677 * 674 675 | else 676 | |(fpu + (long)FPU_TNV0) = fpval; 677 678 678 F00L169: move R_FPVAL,2(A_FPU) 679 * 680 *++octype;681 * 679 680 | ++octype; 681 682 682 F00L170: add #1,OCTYPE(A6) 683 * 684 * *(fpu + (long)FPU_TCTL) = fpctl;685 * 683 684 | |(fpu + (long)FPU_TCTL) = fpctl; 685 686 686 move R_FPCTL,(A_FPU) 687 * 688 *setipl(oldi);689 * 687 688 | setipl(oldi); 689 690 690 move OLDI(A6),sr 691 *}692 * 693 .page 694 *------------------------------------------------------------------------------695 *Start function 1 -- Frq 2696 *------------------------------------------------------------------------------697 *if (legato) {698 * 699 *legato = 0;700 *return;701 *}691 | } 692 693 .page 694 | ------------------------------------------------------------------------------ 695 | Start function 1 -- Frq 2 696 | ------------------------------------------------------------------------------ 697 | if (legato) { 698 699 | legato = 0; 700 | return; 701 | } 702 702 FN01: tst.w _legato 703 703 beq FN01AA 704 * 704 705 705 clr.w _legato 706 706 bra FNEXIT 707 * 708 *if (ip->idhfnc[1].idftmd & I_TM_KEY) {709 * 707 708 | if (ip->idhfnc[1].idftmd & I_TM_KEY) { 709 710 710 FN01AA: move.l IP(A6),A0 711 711 move.b 105(A0),D0 … … 714 714 btst #0,D0 715 715 bne FN01A 716 * 716 717 717 jmp FN02 718 * 719 *vp = (vce << 4) + 3;720 * 718 719 | vp = (vce << 4) + 3; 720 721 721 FN01A: move VCE(A6),D0 722 722 asl #4,D0 723 723 add.w #3,D0 724 724 move D0,VP(A6) 725 * 726 *fpu = io_fpu + FPU_OFNC + (vp << 4);727 * 725 726 | fpu = io_fpu + FPU_OFNC + (vp << 4); 727 728 728 asl #5,D0 729 729 ext.l D0 730 730 move.l D0,A_FPU 731 add.l #_io_fpu+ $4000,A_FPU732 * 733 *fp = &ip->idhfnc[1];734 * 731 add.l #_io_fpu+0x4000,A_FPU 732 733 | fp = &ip->idhfnc[1]; 734 735 735 move.l #12,A_FP 736 736 add.l IP(A6),A_FP 737 737 add.l #86,A_FP 738 * 739 *pt = &ip->idhpnt[fp->idfpt1];740 * 738 739 | pt = &ip->idhpnt[fp->idfpt1]; 740 741 741 clr.l D0 742 742 move.b 6(A_FP),D0 … … 748 748 add.l #242,D0 749 749 move.l D0,PT(A6) 750 * 751 .page 752 * 753 *srcnum = group | fp->idfsrc;754 * 750 751 .page 752 753 | srcnum = group | fp->idfsrc; 754 755 755 move.w GROUP(A6),D0 756 756 ext.l D0 … … 759 759 or D1,D0 760 760 move D0,SRCNUM(A6) 761 * 762 *vep = &valents[srcnum];763 * 761 762 | vep = &valents[srcnum]; 763 764 764 add.l D0,D0 765 765 move.l D0,D1 … … 768 768 add.l #_valents,D0 769 769 move.l D0,VEP(A6) 770 * 771 *smp = vpsms[vp];772 * 770 771 | smp = vpsms[vp]; 772 773 773 move VP(A6),A0 774 774 add.l A0,A0 … … 776 776 add.l #_vpsms,A0 777 777 move.l (A0),A_SMP 778 * 779 *if (srcnum NE smp->sm) {780 * 778 779 | if (srcnum NE smp->sm) { 780 781 781 clr D0 782 782 move 10(A_SMP),D0 783 783 cmp SRCNUM(A6),D0 784 784 beq F01L113 785 * 786 *(smp->prv)->nxt = smp->nxt;787 * 785 786 | (smp->prv)->nxt = smp->nxt; 787 788 788 move.l 4(A_SMP),A0 789 789 move.l (A_SMP),(A0) 790 * 791 *(smp->nxt)->prv = smp->prv;792 * 790 791 | (smp->nxt)->prv = smp->prv; 792 793 793 move.l (A_SMP),A0 794 794 move.l 4(A_SMP),4(A0) 795 * 796 * smp->prv = (struct sment *)vep;797 * 795 796 | smp->prv = (struct sment |)vep; 797 798 798 move.l VEP(A6),4(A_SMP) 799 * 800 *smp->nxt = vep->nxt;801 * 799 800 | smp->nxt = vep->nxt; 801 802 802 move.l VEP(A6),A0 803 803 move.l (A0),(A_SMP) 804 * 805 *(vep->nxt)->prv = smp;806 * 804 805 | (vep->nxt)->prv = smp; 806 807 807 move.l VEP(A6),A0 808 808 move.l (A0),A0 809 809 move.l A_SMP,4(A0) 810 * 811 *vep->nxt = smp;812 * 810 811 | vep->nxt = smp; 812 813 813 move.l VEP(A6),A0 814 814 move.l A_SMP,(A0) 815 * 816 *smp->sm = srcnum;817 * 815 816 | smp->sm = srcnum; 817 818 818 move SRCNUM(A6),10(A_SMP) 819 * 820 *}821 * 822 *mltval = fp->idfmlt;823 * 819 820 | } 821 822 | mltval = fp->idfmlt; 823 824 824 F01L113: move 2(A_FP),MLTVAL(A6) 825 * 826 .page 827 * 828 *switch (fp->idfsrc) {829 * 825 826 .page 827 828 | switch (fp->idfsrc) { 829 830 830 move.b 4(A_FP),D0 831 831 ext.w d0 832 832 cmp #10,D0 833 833 bhi F01L122 834 * 834 835 835 asl #2,D0 836 836 lea F01L123,A0 837 837 movea.l 0(A0,D0.W),A0 838 838 jmp (A0) 839 * 840 *case SM_NONE:841 *mltval = 0;842 * 839 840 | case SM_NONE: 841 | mltval = 0; 842 843 843 F01L116: clr MLTVAL(A6) 844 * 845 *tsrcval = 0;846 * 844 845 | tsrcval = 0; 846 847 847 clr TSRCVAL(A6) 848 * 849 *break;850 * 848 849 | break; 850 851 851 bra F01L114 852 * 853 *case SM_RAND:854 *tsrcval = xgetran(mltval);855 * 852 853 | case SM_RAND: 854 | tsrcval = xgetran(mltval); 855 856 856 F01L117: move MLTVAL(A6),(sp) 857 857 jsr _xgetran 858 858 move D0,TSRCVAL(A6) 859 * 860 *break;861 * 859 860 | break; 861 862 862 bra F01L114 863 * 864 *case SM_PTCH:865 *tsrcval = pch;866 * 863 864 | case SM_PTCH: 865 | tsrcval = pch; 866 867 867 F01L118: move PCH(A6),TSRCVAL(A6) 868 * 869 *break;870 * 868 869 | break; 870 871 871 bra F01L114 872 * 873 .page 874 * 875 *case SM_FREQ:876 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];877 * 872 873 .page 874 875 | case SM_FREQ: 876 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 877 878 878 F01L119: move PCH(A6),D0 879 879 asr #7,D0 … … 883 883 add.l #_ptoftab,A0 884 884 move (A0),TSRCVAL(A6) 885 * 886 *break;887 * 885 886 | break; 887 888 888 bra F01L114 889 * 890 *case SM_KVEL:891 *tsrcval = veltab[trg];892 * 889 890 | case SM_KVEL: 891 | tsrcval = veltab[trg]; 892 893 893 F01L120: move TRG(A6),A0 894 894 add.l A0,A0 895 895 add.l #_veltab,A0 896 896 move (A0),TSRCVAL(A6) 897 * 898 *break;899 * 897 898 | break; 899 900 900 bra F01L114 901 * 902 *case SM_KPRS:903 *tsrcval = prstab[trg];904 * 901 902 | case SM_KPRS: 903 | tsrcval = prstab[trg]; 904 905 905 F01L121: move TRG(A6),A0 906 906 add.l A0,A0 907 907 add.l #_prstab,A0 908 908 move (A0),TSRCVAL(A6) 909 * 910 *break;911 * 909 910 | break; 911 912 912 bra F01L114 913 * 914 *default:915 *tsrcval = vep->val;916 * 913 914 | default: 915 | tsrcval = vep->val; 916 917 917 F01L122: move.l VEP(A6),A0 918 918 move 8(A0),TSRCVAL(A6) 919 * 920 *}921 * 922 .page 923 * 924 *srcval = addpch(tsrcval, 0);925 * 919 920 | } 921 922 .page 923 924 | srcval = addpch(tsrcval, 0); 925 926 926 F01L114: move.w TSRCVAL(A6),D0 927 927 ext.l D0 928 928 asr.l #5,D0 929 *sub.l #500,D0929 | sub.l #500,D0 930 930 asl.l #LSPCH,D0 931 931 cmp.l #PITCHMAX,D0 932 932 ble F01L129A 933 * 933 934 934 move.l #PITCHMAX,D0 935 * 935 936 936 F01L129A: move D0,SRCVAL(A6) 937 * 938 .page 939 * 940 *if (pt->ipvsrc) {941 * 937 938 .page 939 940 | if (pt->ipvsrc) { 941 942 942 F01L124: move.l PT(A6),A0 943 943 tst.b 6(A0) 944 944 beq F01L136 945 * 946 *switch (pt->ipvsrc) {947 * 945 946 | switch (pt->ipvsrc) { 947 948 948 move.l PT(A6),A0 949 949 move.b 6(A0),D0 … … 952 952 cmp #9,D0 953 953 bhi F01L144 954 * 954 955 955 asl #2,D0 956 956 lea F01L145,A0 957 957 move.l 0(A0,D0.W),A0 958 958 jmp (A0) 959 * 960 *case SM_RAND:961 *ltmp = xgetran(pt_>ipvmlt);962 * 959 960 | case SM_RAND: 961 | ltmp = xgetran(pt_>ipvmlt); 962 963 963 F01L139: move.l PT(A6),A0 964 964 move 4(A0),(sp) … … 966 966 ext.l D0 967 967 move.l D0,LTMP(A6) 968 * 969 *break;970 * 968 969 | break; 970 971 971 bra F01L137 972 * 973 *case SM_PTCH:974 *ltmp = pch;975 * 972 973 | case SM_PTCH: 974 | ltmp = pch; 975 976 976 F01L140: move PCH(A6),A0 977 977 move.l A0,LTMP(A6) 978 * 979 *break;980 * 978 979 | break; 980 981 981 bra F01L137 982 * 983 .page 984 * 985 *case SM_FREQ:986 *ltmp = ptoftab[(pch >> 7) & 0x00FF];987 * 982 983 .page 984 985 | case SM_FREQ: 986 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 987 988 988 F01L141: move PCH(A6),D0 989 989 asr #7,D0 … … 995 995 ext.l D0 996 996 move.l D0,LTMP(A6) 997 * 998 *break;999 * 997 998 | break; 999 1000 1000 bra F01L137 1001 * 1002 *case SM_KVEL:1003 *ltmp = veltab[trg];1004 * 1001 1002 | case SM_KVEL: 1003 | ltmp = veltab[trg]; 1004 1005 1005 F01L142: move TRG(A6),A0 1006 1006 add.l A0,A0 … … 1009 1009 ext.l D0 1010 1010 move.l D0,LTMP(A6) 1011 * 1012 *break;1013 * 1011 1012 | break; 1013 1014 1014 bra F01L137 1015 * 1016 .page 1017 * 1018 *case SM_KPRS:1019 *ltmp = prstab[trg];1020 * 1015 1016 .page 1017 1018 | case SM_KPRS: 1019 | ltmp = prstab[trg]; 1020 1021 1021 F01L143: move TRG(A6),A0 1022 1022 add.l A0,A0 … … 1025 1025 ext.l D0 1026 1026 move.l D0,LTMP(A6) 1027 * 1028 *break;1029 * 1027 1028 | break; 1029 1030 1030 bra F01L137 1031 * 1032 .page 1033 * 1034 *default:1035 *ltmp = valents[group | pt->ipvsrc].val;1036 * 1031 1032 .page 1033 1034 | default: 1035 | ltmp = valents[group | pt->ipvsrc].val; 1036 1037 1037 F01L144: move.l PT(A6),A0 1038 1038 clr.l D0 … … 1048 1048 move 8(A0,A1.l),D0 1049 1049 move.l D0,LTMP(A6) 1050 * 1051 *}1052 * 1053 * 1054 .page 1055 * 1056 * ltmp = (ltmp *pt->ipvmlt) >> 15;1057 * 1050 1051 | } 1052 1053 1054 .page 1055 1056 | ltmp = (ltmp | pt->ipvmlt) >> 15; 1057 1058 1058 F01L137: move.l PT(A6),A0 1059 1059 move.w 4(A0),D0 … … 1063 1063 asr.l D1,D0 1064 1064 move.l D0,LTMP(A6) 1065 * 1066 *ltmp += (long)pt->ipval;1067 * 1065 1066 | ltmp += (long)pt->ipval; 1067 1068 1068 move.l PT(A6),A0 1069 1069 move 2(A0),D0 1070 1070 ext.l D0 1071 1071 add.l D0,LTMP(A6) 1072 * 1073 *if (ltmp GT (long)VALMAX)1074 *ltmp = (long)VALMAX;1075 * 1072 1073 | if (ltmp GT (long)VALMAX) 1074 | ltmp = (long)VALMAX; 1075 1076 1076 cmp.l #VALMAX,LTMP(A6) 1077 1077 ble F01L146 1078 * 1078 1079 1079 move.l #VALMAX,LTMP(A6) 1080 1080 bra F01L147 1081 * 1082 *else if (ltmp LT (long)VALMIN)1083 *ltmp = (long)VALMIN;1084 * 1081 1082 | else if (ltmp LT (long)VALMIN) 1083 | ltmp = (long)VALMIN; 1084 1085 1085 F01L146: cmp.l #VALMIN,LTMP(A6) 1086 1086 bge F01L147 1087 * 1087 1088 1088 move.l #VALMIN,LTMP(A6) 1089 * 1090 *tfpval = (short)ltmp;1091 * 1089 1090 | tfpval = (short)ltmp; 1091 1092 1092 F01L147: move.w LTMP+2(A6),TFPVAL(A6) 1093 1093 bra F01L149 1094 * 1095 *} else {1096 * 1097 *tfpval = pt->ipval;1098 * 1094 1095 | } else { 1096 1097 | tfpval = pt->ipval; 1098 1099 1099 F01L136: move.l PT(A6),A0 1100 1100 move 2(A0),TFPVAL(A6) 1101 * 1102 *}1103 * 1104 .page 1105 * 1106 *fpmant = (((long)pt->iptom & 0x0000FFF0L)1107 * *((long)timemlt & 0x0000FFFFL)) >> 15;1108 * 1101 1102 | } 1103 1104 .page 1105 1106 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 1107 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 1108 1109 1109 F01L149: move.l PT(A6),A0 1110 1110 move.w (A0),D0 1111 1111 move.w D0,D2 1112 andi.w # $FFF0,D01112 andi.w #0xFFF0,D0 1113 1113 move.w _timemlt,D1 1114 1114 muls D1,D0 … … 1116 1116 asr.l D1,D0 1117 1117 move D0,R_FPMANT 1118 * 1119 *fpexp = expbit[pt->iptim & 0x000F];1120 * 1121 and # $000F,D21118 1119 | fpexp = expbit[pt->iptim & 0x000F]; 1120 1121 and #0x000F,D2 1122 1122 move D2,A0 1123 1123 add.l A0,A0 1124 1124 add.l #_expbit,A0 1125 1125 move (A0),R_FPEXP 1126 * 1127 .page 1128 * 1129 *fp->idfpch = ip->idhos2v;1130 * 1126 1127 .page 1128 1129 | fp->idfpch = ip->idhos2v; 1130 1131 1131 F01L155: move.l IP(A6),A0 1132 1132 move.w 80(A0),(A_FP) 1133 * 1134 *fpval = addpch(tfpval, fp_>idfpch);1135 * 1133 1134 | fpval = addpch(tfpval, fp_>idfpch); 1135 1136 1136 move.w TFPVAL(A6),D1 1137 1137 ext.l D1 … … 1144 1144 cmp.l #PITCHMAX,D0 1145 1145 ble F01L155A 1146 * 1146 1147 1147 move.l #PITCHMAX,D0 1148 * 1148 1149 1149 F01L155A: move D0,R_FPVAL 1150 * 1151 .page 1152 * 1150 1151 .page 1152 1153 1153 move.b 5(A_FP),D0 1154 1154 ext.w D0 1155 1155 sub.w #1,D0 1156 1156 movea.l PT(A6),A0 1157 * 1158 *oldi = setipl(FPU_DI);1159 * 1157 1158 | oldi = setipl(FPU_DI); 1159 1160 1160 move sr,OLDI(A6) 1161 1161 move #FPU_DI,sr 1162 * 1162 1163 1163 F01L168: clr.b 10(A0) 1164 1164 add.l #12,a0 1165 1165 dbra D0,F01L168 1166 * 1167 .page 1168 * 1169 *fp->idftmd ^= I_NVBITS;1170 * 1166 1167 .page 1168 1169 | fp->idftmd ^= I_NVBITS; 1170 1171 1171 F01L165: eor.b #24,7(A_FP) 1172 * 1173 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;1174 * 1172 1173 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 1174 1175 1175 move.b 7(A_FP),R_FPCTL 1176 1176 and #28,R_FPCTL 1177 1177 or #3,R_FPCTL 1178 * 1179 *fp->idfcpt = fp->idfpt1;1180 * 1178 1179 | fp->idfcpt = fp->idfpt1; 1180 1181 1181 move.b 6(A_FP),8(A_FP) 1182 * 1183 *fp->idftmd |= I_ACTIVE;1184 * 1182 1183 | fp->idftmd |= I_ACTIVE; 1184 1185 1185 or.b #2,7(A_FP) 1186 * 1187 *fp->idftrf = trg;1188 * 1186 1187 | fp->idftrf = trg; 1188 1189 1189 move TRG(A6),10(A_FP) 1190 * 1191 * *(fpu + (long)FPU_TCV1) = srcval;1192 * 1193 move SRCVAL(A6), $8(A_FPU)1194 * 1195 *++octype;1196 * 1190 1191 | |(fpu + (long)FPU_TCV1) = srcval; 1192 1193 move SRCVAL(A6),0x8(A_FPU) 1194 1195 | ++octype; 1196 1197 1197 add #1,OCTYPE(A6) 1198 * 1199 * *(fpu + (long)FPU_TSF1) = mltval;1200 * 1201 move MLTVAL(A6), $A(A_FPU)1202 * 1203 *++octype;1204 * 1198 1199 | |(fpu + (long)FPU_TSF1) = mltval; 1200 1201 move MLTVAL(A6),0xA(A_FPU) 1202 1203 | ++octype; 1204 1205 1205 add #1,OCTYPE(A6) 1206 * 1207 * *(fpu + (long)FPU_TMNT) = fpmant;1208 * 1209 move R_FPMANT, $14(A_FPU)1210 * 1211 *++octype;1212 * 1206 1207 | |(fpu + (long)FPU_TMNT) = fpmant; 1208 1209 move R_FPMANT,0x14(A_FPU) 1210 1211 | ++octype; 1212 1213 1213 add #1,OCTYPE(A6) 1214 * 1215 * *(fpu + (long)FPU_TEXP) = fpexp;1216 * 1217 move R_FPEXP, $16(A_FPU)1218 * 1219 *++octype;1220 * 1214 1215 | |(fpu + (long)FPU_TEXP) = fpexp; 1216 1217 move R_FPEXP,0x16(A_FPU) 1218 1219 | ++octype; 1220 1221 1221 add #1,OCTYPE(A6) 1222 * 1223 .page 1224 * 1225 *if (fp->idftmd & I_VNSUBN)1226 * 1222 1223 .page 1224 1225 | if (fp->idftmd & I_VNSUBN) 1226 1227 1227 btst #3,7(A_FP) 1228 1228 beq F01L169 1229 * 1230 * *(fpu + (long)FPU_TNV1) = fpval;1231 * 1232 move R_FPVAL, $1C(A_FPU)1229 1230 | |(fpu + (long)FPU_TNV1) = fpval; 1231 1232 move R_FPVAL,0x1C(A_FPU) 1233 1233 bra F01L170 1234 * 1235 *else1236 * *(fpu + (long)FPU_TNV0) = fpval;1237 * 1234 1235 | else 1236 | |(fpu + (long)FPU_TNV0) = fpval; 1237 1238 1238 F01L169: move R_FPVAL,2(A_FPU) 1239 * 1240 *++octype;1241 * 1239 1240 | ++octype; 1241 1242 1242 F01L170: add #1,OCTYPE(A6) 1243 * 1244 * *(fpu + (long)FPU_TCTL) = fpctl;1245 * 1243 1244 | |(fpu + (long)FPU_TCTL) = fpctl; 1245 1246 1246 move R_FPCTL,(A_FPU) 1247 * 1248 *setipl(oldi);1249 * 1247 1248 | setipl(oldi); 1249 1250 1250 move OLDI(A6),sr 1251 * 1252 .page 1253 *------------------------------------------------------------------------------1254 *Start function 2 -- Frq 31255 *------------------------------------------------------------------------------1256 * 1257 *if (ip->idhfnc[2].idftmd & I_TM_KEY) {1258 * 1251 1252 .page 1253 | ------------------------------------------------------------------------------ 1254 | Start function 2 -- Frq 3 1255 | ------------------------------------------------------------------------------ 1256 1257 | if (ip->idhfnc[2].idftmd & I_TM_KEY) { 1258 1259 1259 FN02: move.l IP(A6),A0 1260 1260 move.b 117(A0),D0 … … 1263 1263 btst #0,D0 1264 1264 bne FN02A 1265 * 1265 1266 1266 jmp FN03 1267 * 1268 *vp = (vce << 4) + 5;1269 * 1267 1268 | vp = (vce << 4) + 5; 1269 1270 1270 FN02A: move VCE(A6),D0 1271 1271 asl #4,D0 1272 1272 add.w #5,D0 1273 1273 move D0,VP(A6) 1274 * 1275 *fpu = io_fpu + FPU_OFNC + (vp << 4);1276 * 1274 1275 | fpu = io_fpu + FPU_OFNC + (vp << 4); 1276 1277 1277 asl #5,D0 1278 1278 ext.l D0 1279 1279 move.l D0,A_FPU 1280 add.l #_io_fpu+ $4000,A_FPU1281 * 1282 *fp = &ip->idhfnc[2];1283 * 1280 add.l #_io_fpu+0x4000,A_FPU 1281 1282 | fp = &ip->idhfnc[2]; 1283 1284 1284 move.l #24,A_FP 1285 1285 add.l IP(A6),A_FP 1286 1286 add.l #86,A_FP 1287 * 1288 *pt = &ip->idhpnt[fp->idfpt1];1289 * 1287 1288 | pt = &ip->idhpnt[fp->idfpt1]; 1289 1290 1290 clr.l D0 1291 1291 move.b 6(A_FP),D0 … … 1297 1297 add.l #242,D0 1298 1298 move.l D0,PT(A6) 1299 * 1300 .page 1301 * 1302 *srcnum = group | fp->idfsrc;1303 * 1299 1300 .page 1301 1302 | srcnum = group | fp->idfsrc; 1303 1304 1304 move.w GROUP(A6),D0 1305 1305 ext.l D0 … … 1308 1308 or D1,D0 1309 1309 move D0,SRCNUM(A6) 1310 * 1311 *vep = &valents[srcnum];1312 * 1310 1311 | vep = &valents[srcnum]; 1312 1313 1313 add.l D0,D0 1314 1314 move.l D0,D1 … … 1317 1317 add.l #_valents,D0 1318 1318 move.l D0,VEP(A6) 1319 * 1320 *smp = vpsms[vp];1321 * 1319 1320 | smp = vpsms[vp]; 1321 1322 1322 move VP(A6),A0 1323 1323 add.l A0,A0 … … 1325 1325 add.l #_vpsms,A0 1326 1326 move.l (A0),A_SMP 1327 * 1328 *if (srcnum NE smp->sm) {1329 * 1327 1328 | if (srcnum NE smp->sm) { 1329 1330 1330 clr D0 1331 1331 move 10(A_SMP),D0 1332 1332 cmp SRCNUM(A6),D0 1333 1333 beq F02L113 1334 * 1335 *(smp->prv)->nxt = smp->nxt;1336 * 1334 1335 | (smp->prv)->nxt = smp->nxt; 1336 1337 1337 move.l 4(A_SMP),A0 1338 1338 move.l (A_SMP),(A0) 1339 * 1340 *(smp->nxt)->prv = smp->prv;1341 * 1339 1340 | (smp->nxt)->prv = smp->prv; 1341 1342 1342 move.l (A_SMP),A0 1343 1343 move.l 4(A_SMP),4(A0) 1344 * 1345 * smp->prv = (struct sment *)vep;1346 * 1344 1345 | smp->prv = (struct sment |)vep; 1346 1347 1347 move.l VEP(A6),4(A_SMP) 1348 * 1349 *smp->nxt = vep->nxt;1350 * 1348 1349 | smp->nxt = vep->nxt; 1350 1351 1351 move.l VEP(A6),A0 1352 1352 move.l (A0),(A_SMP) 1353 * 1354 *(vep->nxt)->prv = smp;1355 * 1353 1354 | (vep->nxt)->prv = smp; 1355 1356 1356 move.l VEP(A6),A0 1357 1357 move.l (A0),A0 1358 1358 move.l A_SMP,4(A0) 1359 * 1360 *vep->nxt = smp;1361 * 1359 1360 | vep->nxt = smp; 1361 1362 1362 move.l VEP(A6),A0 1363 1363 move.l A_SMP,(A0) 1364 * 1365 *smp->sm = srcnum;1366 * 1364 1365 | smp->sm = srcnum; 1366 1367 1367 move SRCNUM(A6),10(A_SMP) 1368 * 1369 *}1370 * 1371 *mltval = fp->idfmlt;1372 * 1368 1369 | } 1370 1371 | mltval = fp->idfmlt; 1372 1373 1373 F02L113: move 2(A_FP),MLTVAL(A6) 1374 * 1375 .page 1376 * 1377 *switch (fp->idfsrc) {1378 * 1374 1375 .page 1376 1377 | switch (fp->idfsrc) { 1378 1379 1379 move.b 4(A_FP),D0 1380 1380 ext.w d0 1381 1381 cmp #10,D0 1382 1382 bhi F02L122 1383 * 1383 1384 1384 asl #2,D0 1385 1385 lea F02L123,A0 1386 1386 movea.l 0(A0,D0.W),A0 1387 1387 jmp (A0) 1388 * 1389 *case SM_NONE:1390 *mltval = 0;1391 * 1388 1389 | case SM_NONE: 1390 | mltval = 0; 1391 1392 1392 F02L116: clr MLTVAL(A6) 1393 * 1394 *tsrcval = 0;1395 * 1393 1394 | tsrcval = 0; 1395 1396 1396 clr TSRCVAL(A6) 1397 * 1398 *break;1399 * 1397 1398 | break; 1399 1400 1400 bra F02L114 1401 * 1402 *case SM_RAND:1403 *tsrcval = xgetran(mltval);1404 * 1401 1402 | case SM_RAND: 1403 | tsrcval = xgetran(mltval); 1404 1405 1405 F02L117: move MLTVAL(A6),(sp) 1406 1406 jsr _xgetran 1407 1407 move D0,TSRCVAL(A6) 1408 * 1409 *break;1410 * 1408 1409 | break; 1410 1411 1411 bra F02L114 1412 * 1413 *case SM_PTCH:1414 *tsrcval = pch;1415 * 1412 1413 | case SM_PTCH: 1414 | tsrcval = pch; 1415 1416 1416 F02L118: move PCH(A6),TSRCVAL(A6) 1417 * 1418 *break;1419 * 1417 1418 | break; 1419 1420 1420 bra F02L114 1421 * 1422 .page 1423 * 1424 *case SM_FREQ:1425 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];1426 * 1421 1422 .page 1423 1424 | case SM_FREQ: 1425 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 1426 1427 1427 F02L119: move PCH(A6),D0 1428 1428 asr #7,D0 … … 1432 1432 add.l #_ptoftab,A0 1433 1433 move (A0),TSRCVAL(A6) 1434 * 1435 *break;1436 * 1434 1435 | break; 1436 1437 1437 bra F02L114 1438 * 1439 *case SM_KVEL:1440 *tsrcval = veltab[trg];1441 * 1438 1439 | case SM_KVEL: 1440 | tsrcval = veltab[trg]; 1441 1442 1442 F02L120: move TRG(A6),A0 1443 1443 add.l A0,A0 1444 1444 add.l #_veltab,A0 1445 1445 move (A0),TSRCVAL(A6) 1446 * 1447 *break;1448 * 1446 1447 | break; 1448 1449 1449 bra F02L114 1450 * 1451 *case SM_KPRS:1452 *tsrcval = prstab[trg];1453 * 1450 1451 | case SM_KPRS: 1452 | tsrcval = prstab[trg]; 1453 1454 1454 F02L121: move TRG(A6),A0 1455 1455 add.l A0,A0 1456 1456 add.l #_prstab,A0 1457 1457 move (A0),TSRCVAL(A6) 1458 * 1459 *break;1460 * 1458 1459 | break; 1460 1461 1461 bra F02L114 1462 * 1463 *default:1464 *tsrcval = vep->val;1465 * 1462 1463 | default: 1464 | tsrcval = vep->val; 1465 1466 1466 F02L122: move.l VEP(A6),A0 1467 1467 move 8(A0),TSRCVAL(A6) 1468 * 1469 *}1470 * 1471 .page 1472 * 1473 *srcval = addpch(tsrcval, 0);1474 * 1468 1469 | } 1470 1471 .page 1472 1473 | srcval = addpch(tsrcval, 0); 1474 1475 1475 F02L114: move.w TSRCVAL(A6),D0 1476 1476 ext.l D0 1477 1477 asr.l #5,D0 1478 *sub.l #500,D01478 | sub.l #500,D0 1479 1479 asl.l #LSPCH,D0 1480 1480 cmp.l #PITCHMAX,D0 1481 1481 ble F02L129A 1482 * 1482 1483 1483 move.l #PITCHMAX,D0 1484 * 1484 1485 1485 F02L129A: move D0,SRCVAL(A6) 1486 * 1487 .page 1488 * 1489 *if (pt->ipvsrc) {1490 * 1486 1487 .page 1488 1489 | if (pt->ipvsrc) { 1490 1491 1491 F02L124: move.l PT(A6),A0 1492 1492 tst.b 6(A0) 1493 1493 beq F02L136 1494 * 1495 *switch (pt->ipvsrc) {1496 * 1494 1495 | switch (pt->ipvsrc) { 1496 1497 1497 move.l PT(A6),A0 1498 1498 move.b 6(A0),D0 … … 1501 1501 cmp #9,D0 1502 1502 bhi F02L144 1503 * 1503 1504 1504 asl #2,D0 1505 1505 lea F02L145,A0 1506 1506 move.l 0(A0,D0.W),A0 1507 1507 jmp (A0) 1508 * 1509 *case SM_RAND:1510 *ltmp = xgetran(pt_>ipvmlt);1511 * 1508 1509 | case SM_RAND: 1510 | ltmp = xgetran(pt_>ipvmlt); 1511 1512 1512 F02L139: move.l PT(A6),A0 1513 1513 move 4(A0),(sp) … … 1515 1515 ext.l D0 1516 1516 move.l D0,LTMP(A6) 1517 * 1518 *break;1519 * 1517 1518 | break; 1519 1520 1520 bra F02L137 1521 * 1522 *case SM_PTCH:1523 *ltmp = pch;1524 * 1521 1522 | case SM_PTCH: 1523 | ltmp = pch; 1524 1525 1525 F02L140: move PCH(A6),A0 1526 1526 move.l A0,LTMP(A6) 1527 * 1528 *break;1529 * 1527 1528 | break; 1529 1530 1530 bra F02L137 1531 * 1532 .page 1533 * 1534 *case SM_FREQ:1535 *ltmp = ptoftab[(pch >> 7) & 0x00FF];1536 * 1531 1532 .page 1533 1534 | case SM_FREQ: 1535 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 1536 1537 1537 F02L141: move PCH(A6),D0 1538 1538 asr #7,D0 … … 1544 1544 ext.l D0 1545 1545 move.l D0,LTMP(A6) 1546 * 1547 *break;1548 * 1546 1547 | break; 1548 1549 1549 bra F02L137 1550 * 1551 *case SM_KVEL:1552 *ltmp = veltab[trg];1553 * 1550 1551 | case SM_KVEL: 1552 | ltmp = veltab[trg]; 1553 1554 1554 F02L142: move TRG(A6),A0 1555 1555 add.l A0,A0 … … 1558 1558 ext.l D0 1559 1559 move.l D0,LTMP(A6) 1560 * 1561 *break;1562 * 1560 1561 | break; 1562 1563 1563 bra F02L137 1564 * 1565 .page 1566 * 1567 *case SM_KPRS:1568 *ltmp = prstab[trg];1569 * 1564 1565 .page 1566 1567 | case SM_KPRS: 1568 | ltmp = prstab[trg]; 1569 1570 1570 F02L143: move TRG(A6),A0 1571 1571 add.l A0,A0 … … 1574 1574 ext.l D0 1575 1575 move.l D0,LTMP(A6) 1576 * 1577 *break;1578 * 1576 1577 | break; 1578 1579 1579 bra F02L137 1580 * 1581 .page 1582 * 1583 *default:1584 *ltmp = valents[group | pt->ipvsrc].val;1585 * 1580 1581 .page 1582 1583 | default: 1584 | ltmp = valents[group | pt->ipvsrc].val; 1585 1586 1586 F02L144: move.l PT(A6),A0 1587 1587 clr.l D0 … … 1597 1597 move 8(A0,A1.l),D0 1598 1598 move.l D0,LTMP(A6) 1599 * 1600 *}1601 * 1602 * 1603 .page 1604 * 1605 * ltmp = (ltmp *pt->ipvmlt) >> 15;1606 * 1599 1600 | } 1601 1602 1603 .page 1604 1605 | ltmp = (ltmp | pt->ipvmlt) >> 15; 1606 1607 1607 F02L137: move.l PT(A6),A0 1608 1608 move.w 4(A0),D0 … … 1612 1612 asr.l D1,D0 1613 1613 move.l D0,LTMP(A6) 1614 * 1615 *ltmp += (long)pt->ipval;1616 * 1614 1615 | ltmp += (long)pt->ipval; 1616 1617 1617 move.l PT(A6),A0 1618 1618 move 2(A0),D0 1619 1619 ext.l D0 1620 1620 add.l D0,LTMP(A6) 1621 * 1622 *if (ltmp GT (long)VALMAX)1623 *ltmp = (long)VALMAX;1624 * 1621 1622 | if (ltmp GT (long)VALMAX) 1623 | ltmp = (long)VALMAX; 1624 1625 1625 cmp.l #VALMAX,LTMP(A6) 1626 1626 ble F02L146 1627 * 1627 1628 1628 move.l #VALMAX,LTMP(A6) 1629 1629 bra F02L147 1630 * 1631 *else if (ltmp LT (long)VALMIN)1632 *ltmp = (long)VALMIN;1633 * 1630 1631 | else if (ltmp LT (long)VALMIN) 1632 | ltmp = (long)VALMIN; 1633 1634 1634 F02L146: cmp.l #VALMIN,LTMP(A6) 1635 1635 bge F02L147 1636 * 1636 1637 1637 move.l #VALMIN,LTMP(A6) 1638 * 1639 *tfpval = (short)ltmp;1640 * 1638 1639 | tfpval = (short)ltmp; 1640 1641 1641 F02L147: move.w LTMP+2(A6),TFPVAL(A6) 1642 1642 bra F02L149 1643 * 1644 *} else {1645 * 1646 *tfpval = pt->ipval;1647 * 1643 1644 | } else { 1645 1646 | tfpval = pt->ipval; 1647 1648 1648 F02L136: move.l PT(A6),A0 1649 1649 move 2(A0),TFPVAL(A6) 1650 * 1651 *}1652 * 1653 .page 1654 * 1655 *fpmant = (((long)pt->iptom & 0x0000FFF0L)1656 * *((long)timemlt & 0x0000FFFFL)) >> 15;1657 * 1650 1651 | } 1652 1653 .page 1654 1655 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 1656 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 1657 1658 1658 F02L149: move.l PT(A6),A0 1659 1659 move.w (A0),D0 1660 1660 move.w D0,D2 1661 andi.w # $FFF0,D01661 andi.w #0xFFF0,D0 1662 1662 move.w _timemlt,D1 1663 1663 muls D1,D0 … … 1665 1665 asr.l D1,D0 1666 1666 move D0,R_FPMANT 1667 * 1668 *fpexp = expbit[pt->iptim & 0x000F];1669 * 1670 and # $000F,D21667 1668 | fpexp = expbit[pt->iptim & 0x000F]; 1669 1670 and #0x000F,D2 1671 1671 move D2,A0 1672 1672 add.l A0,A0 1673 1673 add.l #_expbit,A0 1674 1674 move (A0),R_FPEXP 1675 * 1676 .page 1677 * 1678 *fp->idfpch = ip->idhos3v;1679 * 1675 1676 .page 1677 1678 | fp->idfpch = ip->idhos3v; 1679 1680 1680 F02L156: move.l IP(A6),A0 1681 1681 move.w 82(A0),(A_FP) 1682 * 1683 *fpval = addpch(tfpval, fp->idfpch);1684 * 1682 1683 | fpval = addpch(tfpval, fp->idfpch); 1684 1685 1685 move.w TFPVAL(A6),D1 1686 1686 ext.l D1 … … 1693 1693 cmp.l #PITCHMAX,D0 1694 1694 ble F02L156A 1695 * 1695 1696 1696 move.l #PITCHMAX,D0 1697 * 1697 1698 1698 F02L156A: move D0,R_FPVAL 1699 * 1700 .page 1701 * 1699 1700 .page 1701 1702 1702 move.b 5(A_FP),D0 1703 1703 ext.w D0 1704 1704 sub.w #1,D0 1705 1705 movea.l PT(A6),A0 1706 * 1707 *oldi = setipl(FPU_DI);1708 * 1706 1707 | oldi = setipl(FPU_DI); 1708 1709 1709 move sr,OLDI(A6) 1710 1710 move #FPU_DI,sr 1711 * 1711 1712 1712 F02L168: clr.b 10(A0) 1713 1713 add.l #12,a0 1714 1714 dbra D0,F02L168 1715 * 1716 .page 1717 * 1718 *fp->idftmd ^= I_NVBITS;1719 * 1715 1716 .page 1717 1718 | fp->idftmd ^= I_NVBITS; 1719 1720 1720 F02L165: eor.b #24,7(A_FP) 1721 * 1722 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;1723 * 1721 1722 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 1723 1724 1724 move.b 7(A_FP),R_FPCTL 1725 1725 and #28,R_FPCTL 1726 1726 or #3,R_FPCTL 1727 * 1728 *fp->idfcpt = fp->idfpt1;1729 * 1727 1728 | fp->idfcpt = fp->idfpt1; 1729 1730 1730 move.b 6(A_FP),8(A_FP) 1731 * 1732 *fp->idftmd |= I_ACTIVE;1733 * 1731 1732 | fp->idftmd |= I_ACTIVE; 1733 1734 1734 or.b #2,7(A_FP) 1735 * 1736 *fp->idftrf = trg;1737 * 1735 1736 | fp->idftrf = trg; 1737 1738 1738 move TRG(A6),10(A_FP) 1739 * 1740 * *(fpu + (long)FPU_TCV1) = srcval;1741 * 1742 move SRCVAL(A6), $8(A_FPU)1743 * 1744 *++octype;1745 * 1739 1740 | |(fpu + (long)FPU_TCV1) = srcval; 1741 1742 move SRCVAL(A6),0x8(A_FPU) 1743 1744 | ++octype; 1745 1746 1746 add #1,OCTYPE(A6) 1747 * 1748 * *(fpu + (long)FPU_TSF1) = mltval;1749 * 1750 move MLTVAL(A6), $A(A_FPU)1751 * 1752 *++octype;1753 * 1747 1748 | |(fpu + (long)FPU_TSF1) = mltval; 1749 1750 move MLTVAL(A6),0xA(A_FPU) 1751 1752 | ++octype; 1753 1754 1754 add #1,OCTYPE(A6) 1755 * 1756 * *(fpu + (long)FPU_TMNT) = fpmant;1757 * 1758 move R_FPMANT, $14(A_FPU)1759 * 1760 *++octype;1761 * 1755 1756 | |(fpu + (long)FPU_TMNT) = fpmant; 1757 1758 move R_FPMANT,0x14(A_FPU) 1759 1760 | ++octype; 1761 1762 1762 add #1,OCTYPE(A6) 1763 * 1764 * *(fpu + (long)FPU_TEXP) = fpexp;1765 * 1766 move R_FPEXP, $16(A_FPU)1767 * 1768 *++octype;1769 * 1763 1764 | |(fpu + (long)FPU_TEXP) = fpexp; 1765 1766 move R_FPEXP,0x16(A_FPU) 1767 1768 | ++octype; 1769 1770 1770 add #1,OCTYPE(A6) 1771 * 1772 .page 1773 * 1774 *if (fp->idftmd & I_VNSUBN)1775 * 1771 1772 .page 1773 1774 | if (fp->idftmd & I_VNSUBN) 1775 1776 1776 btst #3,7(A_FP) 1777 1777 beq F02L169 1778 * 1779 * *(fpu + (long)FPU_TNV1) = fpval;1780 * 1781 move R_FPVAL, $1C(A_FPU)1778 1779 | |(fpu + (long)FPU_TNV1) = fpval; 1780 1781 move R_FPVAL,0x1C(A_FPU) 1782 1782 bra F02L170 1783 * 1784 *else1785 * *(fpu + (long)FPU_TNV0) = fpval;1786 * 1783 1784 | else 1785 | |(fpu + (long)FPU_TNV0) = fpval; 1786 1787 1787 F02L169: move R_FPVAL,2(A_FPU) 1788 * 1789 *++octype;1790 * 1788 1789 | ++octype; 1790 1791 1791 F02L170: add #1,OCTYPE(A6) 1792 * 1793 * *(fpu + (long)FPU_TCTL) = fpctl;1794 * 1792 1793 | |(fpu + (long)FPU_TCTL) = fpctl; 1794 1795 1795 move R_FPCTL,(A_FPU) 1796 * 1797 *setipl(oldi);1798 * 1796 1797 | setipl(oldi); 1798 1799 1799 move OLDI(A6),sr 1800 * 1801 .page 1802 *------------------------------------------------------------------------------1803 *Start function 3 -- Frq 41804 *------------------------------------------------------------------------------1805 * 1806 *if (ip->idhfnc[3].idftmd & I_TM_KEY) {1807 * 1800 1801 .page 1802 | ------------------------------------------------------------------------------ 1803 | Start function 3 -- Frq 4 1804 | ------------------------------------------------------------------------------ 1805 1806 | if (ip->idhfnc[3].idftmd & I_TM_KEY) { 1807 1808 1808 FN03: move.l IP(A6),A0 1809 1809 move.b 129(A0),D0 … … 1812 1812 btst #0,D0 1813 1813 bne FN03A 1814 * 1814 1815 1815 jmp FN04 1816 * 1817 *vp = (vce << 4) + 7;1818 * 1816 1817 | vp = (vce << 4) + 7; 1818 1819 1819 FN03A: move VCE(A6),D0 1820 1820 asl #4,D0 1821 1821 add.w #7,D0 1822 1822 move D0,VP(A6) 1823 * 1824 *fpu = io_fpu + FPU_OFNC + (vp << 4);1825 * 1823 1824 | fpu = io_fpu + FPU_OFNC + (vp << 4); 1825 1826 1826 asl #5,D0 1827 1827 ext.l D0 1828 1828 move.l D0,A_FPU 1829 add.l #_io_fpu+ $4000,A_FPU1830 * 1831 *fp = &ip->idhfnc[3];1832 * 1829 add.l #_io_fpu+0x4000,A_FPU 1830 1831 | fp = &ip->idhfnc[3]; 1832 1833 1833 move.l #36,A_FP 1834 1834 add.l IP(A6),A_FP 1835 1835 add.l #86,A_FP 1836 * 1837 *pt = &ip->idhpnt[fp->idfpt1];1838 * 1836 1837 | pt = &ip->idhpnt[fp->idfpt1]; 1838 1839 1839 clr.l D0 1840 1840 move.b 6(A_FP),D0 … … 1846 1846 add.l #242,D0 1847 1847 move.l D0,PT(A6) 1848 * 1849 .page 1850 * 1851 *srcnum = group | fp->idfsrc;1852 * 1848 1849 .page 1850 1851 | srcnum = group | fp->idfsrc; 1852 1853 1853 move.w GROUP(A6),D0 1854 1854 ext.l D0 … … 1857 1857 or D1,D0 1858 1858 move D0,SRCNUM(A6) 1859 * 1860 *vep = &valents[srcnum];1861 * 1859 1860 | vep = &valents[srcnum]; 1861 1862 1862 add.l D0,D0 1863 1863 move.l D0,D1 … … 1866 1866 add.l #_valents,D0 1867 1867 move.l D0,VEP(A6) 1868 * 1869 *smp = vpsms[vp];1870 * 1868 1869 | smp = vpsms[vp]; 1870 1871 1871 move VP(A6),A0 1872 1872 add.l A0,A0 … … 1874 1874 add.l #_vpsms,A0 1875 1875 move.l (A0),A_SMP 1876 * 1877 *if (srcnum NE smp->sm) {1878 * 1876 1877 | if (srcnum NE smp->sm) { 1878 1879 1879 clr D0 1880 1880 move 10(A_SMP),D0 1881 1881 cmp SRCNUM(A6),D0 1882 1882 beq F03L113 1883 * 1884 *(smp->prv)->nxt = smp->nxt;1885 * 1883 1884 | (smp->prv)->nxt = smp->nxt; 1885 1886 1886 move.l 4(A_SMP),A0 1887 1887 move.l (A_SMP),(A0) 1888 * 1889 *(smp->nxt)->prv = smp->prv;1890 * 1888 1889 | (smp->nxt)->prv = smp->prv; 1890 1891 1891 move.l (A_SMP),A0 1892 1892 move.l 4(A_SMP),4(A0) 1893 * 1894 * smp->prv = (struct sment *)vep;1895 * 1893 1894 | smp->prv = (struct sment |)vep; 1895 1896 1896 move.l VEP(A6),4(A_SMP) 1897 * 1898 *smp->nxt = vep->nxt;1899 * 1897 1898 | smp->nxt = vep->nxt; 1899 1900 1900 move.l VEP(A6),A0 1901 1901 move.l (A0),(A_SMP) 1902 * 1903 *(vep->nxt)->prv = smp;1904 * 1902 1903 | (vep->nxt)->prv = smp; 1904 1905 1905 move.l VEP(A6),A0 1906 1906 move.l (A0),A0 1907 1907 move.l A_SMP,4(A0) 1908 * 1909 *vep->nxt = smp;1910 * 1908 1909 | vep->nxt = smp; 1910 1911 1911 move.l VEP(A6),A0 1912 1912 move.l A_SMP,(A0) 1913 * 1914 *smp->sm = srcnum;1915 * 1913 1914 | smp->sm = srcnum; 1915 1916 1916 move SRCNUM(A6),10(A_SMP) 1917 * 1918 *}1919 * 1920 *mltval = fp->idfmlt;1921 * 1917 1918 | } 1919 1920 | mltval = fp->idfmlt; 1921 1922 1922 F03L113: move 2(A_FP),MLTVAL(A6) 1923 * 1924 .page 1925 * 1926 *switch (fp->idfsrc) {1927 * 1923 1924 .page 1925 1926 | switch (fp->idfsrc) { 1927 1928 1928 move.b 4(A_FP),D0 1929 1929 ext.w d0 1930 1930 cmp #10,D0 1931 1931 bhi F03L122 1932 * 1932 1933 1933 asl #2,D0 1934 1934 lea F03L123,A0 1935 1935 movea.l 0(A0,D0.W),A0 1936 1936 jmp (A0) 1937 * 1938 *case SM_NONE:1939 *mltval = 0;1940 * 1937 1938 | case SM_NONE: 1939 | mltval = 0; 1940 1941 1941 F03L116: clr MLTVAL(A6) 1942 * 1943 *tsrcval = 0;1944 * 1942 1943 | tsrcval = 0; 1944 1945 1945 clr TSRCVAL(A6) 1946 * 1947 *break;1948 * 1946 1947 | break; 1948 1949 1949 bra F03L114 1950 * 1951 *case SM_RAND:1952 *tsrcval = xgetran(mltval);1953 * 1950 1951 | case SM_RAND: 1952 | tsrcval = xgetran(mltval); 1953 1954 1954 F03L117: move MLTVAL(A6),(sp) 1955 1955 jsr _xgetran 1956 1956 move D0,TSRCVAL(A6) 1957 * 1958 *break;1959 * 1957 1958 | break; 1959 1960 1960 bra F03L114 1961 * 1962 *case SM_PTCH:1963 *tsrcval = pch;1964 * 1961 1962 | case SM_PTCH: 1963 | tsrcval = pch; 1964 1965 1965 F03L118: move PCH(A6),TSRCVAL(A6) 1966 * 1967 *break;1968 * 1966 1967 | break; 1968 1969 1969 bra F03L114 1970 * 1971 .page 1972 * 1973 *case SM_FREQ:1974 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];1975 * 1970 1971 .page 1972 1973 | case SM_FREQ: 1974 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 1975 1976 1976 F03L119: move PCH(A6),D0 1977 1977 asr #7,D0 … … 1981 1981 add.l #_ptoftab,A0 1982 1982 move (A0),TSRCVAL(A6) 1983 * 1984 *break;1985 * 1983 1984 | break; 1985 1986 1986 bra F03L114 1987 * 1988 *case SM_KVEL:1989 *tsrcval = veltab[trg];1990 * 1987 1988 | case SM_KVEL: 1989 | tsrcval = veltab[trg]; 1990 1991 1991 F03L120: move TRG(A6),A0 1992 1992 add.l A0,A0 1993 1993 add.l #_veltab,A0 1994 1994 move (A0),TSRCVAL(A6) 1995 * 1996 *break;1997 * 1995 1996 | break; 1997 1998 1998 bra F03L114 1999 * 2000 *case SM_KPRS:2001 *tsrcval = prstab[trg];2002 * 1999 2000 | case SM_KPRS: 2001 | tsrcval = prstab[trg]; 2002 2003 2003 F03L121: move TRG(A6),A0 2004 2004 add.l A0,A0 2005 2005 add.l #_prstab,A0 2006 2006 move (A0),TSRCVAL(A6) 2007 * 2008 *break;2009 * 2007 2008 | break; 2009 2010 2010 bra F03L114 2011 * 2012 *default:2013 *tsrcval = vep->val;2014 * 2011 2012 | default: 2013 | tsrcval = vep->val; 2014 2015 2015 F03L122: move.l VEP(A6),A0 2016 2016 move 8(A0),TSRCVAL(A6) 2017 * 2018 *}2019 * 2020 .page 2021 * 2022 *srcval = addpch(tsrcval, 0);2023 * 2017 2018 | } 2019 2020 .page 2021 2022 | srcval = addpch(tsrcval, 0); 2023 2024 2024 F03L114: move.w TSRCVAL(A6),D0 2025 2025 ext.l D0 2026 2026 asr.l #5,D0 2027 *sub.l #500,D02027 | sub.l #500,D0 2028 2028 asl.l #LSPCH,D0 2029 2029 cmp.l #PITCHMAX,D0 2030 2030 ble F03L129A 2031 * 2031 2032 2032 move.l #PITCHMAX,D0 2033 2033 2034 2034 F03L129A: move D0,SRCVAL(A6) 2035 * 2036 .page 2037 * 2038 *if (pt->ipvsrc) {2039 * 2035 2036 .page 2037 2038 | if (pt->ipvsrc) { 2039 2040 2040 F03L124: move.l PT(A6),A0 2041 2041 tst.b 6(A0) 2042 2042 beq F03L136 2043 * 2044 *switch (pt->ipvsrc) {2045 * 2043 2044 | switch (pt->ipvsrc) { 2045 2046 2046 move.l PT(A6),A0 2047 2047 move.b 6(A0),D0 … … 2050 2050 cmp #9,D0 2051 2051 bhi F03L144 2052 * 2052 2053 2053 asl #2,D0 2054 2054 lea F03L145,A0 2055 2055 move.l 0(A0,D0.W),A0 2056 2056 jmp (A0) 2057 * 2058 *case SM_RAND:2059 *ltmp = xgetran(pt_>ipvmlt);2060 * 2057 2058 | case SM_RAND: 2059 | ltmp = xgetran(pt_>ipvmlt); 2060 2061 2061 F03L139: move.l PT(A6),A0 2062 2062 move 4(A0),(sp) … … 2064 2064 ext.l D0 2065 2065 move.l D0,LTMP(A6) 2066 * 2067 *break;2068 * 2066 2067 | break; 2068 2069 2069 bra F03L137 2070 * 2071 *case SM_PTCH:2072 *ltmp = pch;2073 * 2070 2071 | case SM_PTCH: 2072 | ltmp = pch; 2073 2074 2074 F03L140: move PCH(A6),A0 2075 2075 move.l A0,LTMP(A6) 2076 * 2077 *break;2078 * 2076 2077 | break; 2078 2079 2079 bra F03L137 2080 * 2081 .page 2082 * 2083 *case SM_FREQ:2084 *ltmp = ptoftab[(pch >> 7) & 0x00FF];2085 * 2080 2081 .page 2082 2083 | case SM_FREQ: 2084 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 2085 2086 2086 F03L141: move PCH(A6),D0 2087 2087 asr #7,D0 … … 2093 2093 ext.l D0 2094 2094 move.l D0,LTMP(A6) 2095 * 2096 *break;2097 * 2095 2096 | break; 2097 2098 2098 bra F03L137 2099 * 2100 *case SM_KVEL:2101 *ltmp = veltab[trg];2102 * 2099 2100 | case SM_KVEL: 2101 | ltmp = veltab[trg]; 2102 2103 2103 F03L142: move TRG(A6),A0 2104 2104 add.l A0,A0 … … 2107 2107 ext.l D0 2108 2108 move.l D0,LTMP(A6) 2109 * 2110 *break;2111 * 2109 2110 | break; 2111 2112 2112 bra F03L137 2113 * 2114 .page 2115 * 2116 *case SM_KPRS:2117 *ltmp = prstab[trg];2118 * 2113 2114 .page 2115 2116 | case SM_KPRS: 2117 | ltmp = prstab[trg]; 2118 2119 2119 F03L143: move TRG(A6),A0 2120 2120 add.l A0,A0 … … 2123 2123 ext.l D0 2124 2124 move.l D0,LTMP(A6) 2125 * 2126 *break;2127 * 2125 2126 | break; 2127 2128 2128 bra F03L137 2129 * 2130 .page 2131 * 2132 *default:2133 *ltmp = valents[group | pt->ipvsrc].val;2134 * 2129 2130 .page 2131 2132 | default: 2133 | ltmp = valents[group | pt->ipvsrc].val; 2134 2135 2135 F03L144: move.l PT(A6),A0 2136 2136 clr.l D0 … … 2146 2146 move 8(A0,A1.l),D0 2147 2147 move.l D0,LTMP(A6) 2148 * 2149 *}2150 * 2151 * 2152 .page 2153 * 2154 * ltmp = (ltmp *pt->ipvmlt) >> 15;2155 * 2148 2149 | } 2150 2151 2152 .page 2153 2154 | ltmp = (ltmp | pt->ipvmlt) >> 15; 2155 2156 2156 F03L137: move.l PT(A6),A0 2157 2157 move.w 4(A0),D0 … … 2161 2161 asr.l D1,D0 2162 2162 move.l D0,LTMP(A6) 2163 * 2164 *ltmp += (long)pt->ipval;2165 * 2163 2164 | ltmp += (long)pt->ipval; 2165 2166 2166 move.l PT(A6),A0 2167 2167 move 2(A0),D0 2168 2168 ext.l D0 2169 2169 add.l D0,LTMP(A6) 2170 * 2171 *if (ltmp GT (long)VALMAX)2172 *ltmp = (long)VALMAX;2173 * 2170 2171 | if (ltmp GT (long)VALMAX) 2172 | ltmp = (long)VALMAX; 2173 2174 2174 cmp.l #VALMAX,LTMP(A6) 2175 2175 ble F03L146 2176 * 2176 2177 2177 move.l #VALMAX,LTMP(A6) 2178 2178 bra F03L147 2179 * 2180 *else if (ltmp LT (long)VALMIN)2181 *ltmp = (long)VALMIN;2182 * 2179 2180 | else if (ltmp LT (long)VALMIN) 2181 | ltmp = (long)VALMIN; 2182 2183 2183 F03L146: cmp.l #VALMIN,LTMP(A6) 2184 2184 bge F03L147 2185 * 2185 2186 2186 move.l #VALMIN,LTMP(A6) 2187 * 2188 *tfpval = (short)ltmp;2189 * 2187 2188 | tfpval = (short)ltmp; 2189 2190 2190 F03L147: move.w LTMP+2(A6),TFPVAL(A6) 2191 2191 bra F03L149 2192 * 2193 *} else {2194 * 2195 *tfpval = pt->ipval;2196 * 2192 2193 | } else { 2194 2195 | tfpval = pt->ipval; 2196 2197 2197 F03L136: move.l PT(A6),A0 2198 2198 move 2(A0),TFPVAL(A6) 2199 * 2200 *}2201 * 2202 .page 2203 * 2204 *fpmant = (((long)pt->iptom & 0x0000FFF0L)2205 * *((long)timemlt & 0x0000FFFFL)) >> 15;2206 * 2199 2200 | } 2201 2202 .page 2203 2204 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 2205 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 2206 2207 2207 F03L149: move.l PT(A6),A0 2208 2208 move.w (A0),D0 2209 2209 move.w D0,D2 2210 andi.w # $FFF0,D02210 andi.w #0xFFF0,D0 2211 2211 move.w _timemlt,D1 2212 2212 muls D1,D0 … … 2214 2214 asr.l D1,D0 2215 2215 move D0,R_FPMANT 2216 * 2217 *fpexp = expbit[pt->iptim & 0x000F];2218 * 2219 and # $000F,D22216 2217 | fpexp = expbit[pt->iptim & 0x000F]; 2218 2219 and #0x000F,D2 2220 2220 move D2,A0 2221 2221 add.l A0,A0 2222 2222 add.l #_expbit,A0 2223 2223 move (A0),R_FPEXP 2224 * 2225 .page 2226 * 2227 *fp->idfpch = ip->idhos4v;2228 * 2224 2225 .page 2226 2227 | fp->idfpch = ip->idhos4v; 2228 2229 2229 F03L157: move.l IP(A6),A0 2230 2230 move.w 84(A0),(A_FP) 2231 * 2232 *fpval = addpch(tfpval, fp->idfpch);2233 * 2231 2232 | fpval = addpch(tfpval, fp->idfpch); 2233 2234 2234 move.w TFPVAL(A6),D1 2235 2235 ext.l D1 … … 2242 2242 cmp.l #PITCHMAX,D0 2243 2243 ble F03L157A 2244 * 2244 2245 2245 move.l #PITCHMAX,D0 2246 * 2246 2247 2247 F03L157A: move D0,R_FPVAL 2248 * 2249 .page 2250 * 2248 2249 .page 2250 2251 2251 move.b 5(A_FP),D0 2252 2252 ext.w D0 2253 2253 sub.w #1,D0 2254 2254 movea.l PT(A6),A0 2255 * 2256 *oldi = setipl(FPU_DI);2257 * 2255 2256 | oldi = setipl(FPU_DI); 2257 2258 2258 move sr,OLDI(A6) 2259 2259 move #FPU_DI,sr 2260 * 2260 2261 2261 F03L168: clr.b 10(A0) 2262 2262 add.l #12,a0 2263 2263 dbra D0,F03L168 2264 * 2265 .page 2266 * 2267 *fp->idftmd ^= I_NVBITS;2268 * 2264 2265 .page 2266 2267 | fp->idftmd ^= I_NVBITS; 2268 2269 2269 F03L165: eor.b #24,7(A_FP) 2270 * 2271 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;2272 * 2270 2271 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 2272 2273 2273 move.b 7(A_FP),R_FPCTL 2274 2274 and #28,R_FPCTL 2275 2275 or #3,R_FPCTL 2276 * 2277 *fp->idfcpt = fp->idfpt1;2278 * 2276 2277 | fp->idfcpt = fp->idfpt1; 2278 2279 2279 move.b 6(A_FP),8(A_FP) 2280 * 2281 *fp->idftmd |= I_ACTIVE;2282 * 2280 2281 | fp->idftmd |= I_ACTIVE; 2282 2283 2283 or.b #2,7(A_FP) 2284 * 2285 *fp->idftrf = trg;2286 * 2284 2285 | fp->idftrf = trg; 2286 2287 2287 move TRG(A6),10(A_FP) 2288 * 2289 * *(fpu + (long)FPU_TCV1) = srcval;2290 * 2291 move SRCVAL(A6), $8(A_FPU)2292 * 2293 *++octype;2294 * 2288 2289 | |(fpu + (long)FPU_TCV1) = srcval; 2290 2291 move SRCVAL(A6),0x8(A_FPU) 2292 2293 | ++octype; 2294 2295 2295 add #1,OCTYPE(A6) 2296 * 2297 * *(fpu + (long)FPU_TSF1) = mltval;2298 * 2299 move MLTVAL(A6), $A(A_FPU)2300 * 2301 *++octype;2302 * 2296 2297 | |(fpu + (long)FPU_TSF1) = mltval; 2298 2299 move MLTVAL(A6),0xA(A_FPU) 2300 2301 | ++octype; 2302 2303 2303 add #1,OCTYPE(A6) 2304 * 2305 * *(fpu + (long)FPU_TMNT) = fpmant;2306 * 2307 move R_FPMANT, $14(A_FPU)2308 * 2309 *++octype;2310 * 2304 2305 | |(fpu + (long)FPU_TMNT) = fpmant; 2306 2307 move R_FPMANT,0x14(A_FPU) 2308 2309 | ++octype; 2310 2311 2311 add #1,OCTYPE(A6) 2312 * 2313 * *(fpu + (long)FPU_TEXP) = fpexp;2314 * 2315 move R_FPEXP, $16(A_FPU)2316 * 2317 *++octype;2318 * 2312 2313 | |(fpu + (long)FPU_TEXP) = fpexp; 2314 2315 move R_FPEXP,0x16(A_FPU) 2316 2317 | ++octype; 2318 2319 2319 add #1,OCTYPE(A6) 2320 * 2321 .page 2322 * 2323 *if (fp->idftmd & I_VNSUBN)2324 * 2320 2321 .page 2322 2323 | if (fp->idftmd & I_VNSUBN) 2324 2325 2325 btst #3,7(A_FP) 2326 2326 beq F03L169 2327 * 2328 * *(fpu + (long)FPU_TNV1) = fpval;2329 * 2330 move R_FPVAL, $1C(A_FPU)2327 2328 | |(fpu + (long)FPU_TNV1) = fpval; 2329 2330 move R_FPVAL,0x1C(A_FPU) 2331 2331 bra F03L170 2332 * 2333 *else2334 * *(fpu + (long)FPU_TNV0) = fpval;2335 * 2332 2333 | else 2334 | |(fpu + (long)FPU_TNV0) = fpval; 2335 2336 2336 F03L169: move R_FPVAL,2(A_FPU) 2337 * 2338 *++octype;2339 * 2337 2338 | ++octype; 2339 2340 2340 F03L170: add #1,OCTYPE(A6) 2341 * 2342 * *(fpu + (long)FPU_TCTL) = fpctl;2343 * 2341 2342 | |(fpu + (long)FPU_TCTL) = fpctl; 2343 2344 2344 move R_FPCTL,(A_FPU) 2345 * 2346 *setipl(oldi);2347 * 2345 2346 | setipl(oldi); 2347 2348 2348 move OLDI(A6),sr 2349 * 2350 .page 2351 *------------------------------------------------------------------------------2352 *Start function 4 -- Filtr2353 *------------------------------------------------------------------------------2354 * 2355 *if (ip->idhfnc[4].idftmd & I_TM_KEY) {2356 * 2349 2350 .page 2351 | ------------------------------------------------------------------------------ 2352 | Start function 4 -- Filtr 2353 | ------------------------------------------------------------------------------ 2354 2355 | if (ip->idhfnc[4].idftmd & I_TM_KEY) { 2356 2357 2357 FN04: move.l IP(A6),A0 2358 2358 move.b 141(A0),D0 … … 2361 2361 btst #0,D0 2362 2362 bne FN04A 2363 * 2363 2364 2364 jmp FN05 2365 * 2366 *vp = (vce << 4) + 10;2367 * 2365 2366 | vp = (vce << 4) + 10; 2367 2368 2368 FN04A: move VCE(A6),D0 2369 2369 asl #4,D0 2370 2370 add.w #10,D0 2371 2371 move D0,VP(A6) 2372 * 2373 *fpu = io_fpu + FPU_OFNC + (vp << 4);2374 * 2372 2373 | fpu = io_fpu + FPU_OFNC + (vp << 4); 2374 2375 2375 asl #5,D0 2376 2376 ext.l D0 2377 2377 move.l D0,A_FPU 2378 add.l #_io_fpu+ $4000,A_FPU2379 * 2380 *fp = &ip->idhfnc[4];2381 * 2378 add.l #_io_fpu+0x4000,A_FPU 2379 2380 | fp = &ip->idhfnc[4]; 2381 2382 2382 move.l #48,A_FP 2383 2383 add.l IP(A6),A_FP 2384 2384 add.l #86,A_FP 2385 * 2386 .page 2387 * 2388 *Added code:2389 * 2390 *output resonance via table lookup with FPU interrupts off2391 * 2385 2386 .page 2387 2388 | Added code: 2389 2390 | output resonance via table lookup with FPU interrupts off 2391 2392 2392 lea _rsntab,A0 2393 2393 clr.w D0 … … 2401 2401 ext.l D0 2402 2402 move.l D0,A0 2403 add.l #_io_fpu+ $4000,A02403 add.l #_io_fpu+0x4000,A0 2404 2404 move.w sr,OLDI(A6) 2405 2405 move.w #FPU_DI,sr 2406 2406 move.w d1,2(A0) 2407 2407 add.w #1,OCTYPE(A6) 2408 move.w d1, $1C(A0)2408 move.w d1,0x1C(A0) 2409 2409 add.w #1,OCTYPE(A6) 2410 move.w # $0015,(A0)2410 move.w #0x0015,(A0) 2411 2411 move.w OLDI(A6),sr 2412 * 2413 *pt = &ip->idhpnt[fp->idfpt1];2414 * 2412 2413 | pt = &ip->idhpnt[fp->idfpt1]; 2414 2415 2415 clr.l D0 2416 2416 move.b 6(A_FP),D0 … … 2422 2422 add.l #242,D0 2423 2423 move.l D0,PT(A6) 2424 * 2425 .page 2426 * 2427 *srcnum = group | fp->idfsrc;2428 * 2424 2425 .page 2426 2427 | srcnum = group | fp->idfsrc; 2428 2429 2429 move.w GROUP(A6),D0 2430 2430 ext.l D0 … … 2433 2433 or D1,D0 2434 2434 move D0,SRCNUM(A6) 2435 * 2436 *vep = &valents[srcnum];2437 * 2435 2436 | vep = &valents[srcnum]; 2437 2438 2438 add.l D0,D0 2439 2439 move.l D0,D1 … … 2442 2442 add.l #_valents,D0 2443 2443 move.l D0,VEP(A6) 2444 * 2445 *smp = vpsms[vp];2446 * 2444 2445 | smp = vpsms[vp]; 2446 2447 2447 move VP(A6),A0 2448 2448 add.l A0,A0 … … 2450 2450 add.l #_vpsms,A0 2451 2451 move.l (A0),A_SMP 2452 * 2453 *if (srcnum NE smp->sm) {2454 * 2452 2453 | if (srcnum NE smp->sm) { 2454 2455 2455 clr D0 2456 2456 move 10(A_SMP),D0 2457 2457 cmp SRCNUM(A6),D0 2458 2458 beq F04L113 2459 * 2460 *(smp->prv)->nxt = smp->nxt;2461 * 2459 2460 | (smp->prv)->nxt = smp->nxt; 2461 2462 2462 move.l 4(A_SMP),A0 2463 2463 move.l (A_SMP),(A0) 2464 * 2465 *(smp->nxt)->prv = smp->prv;2466 * 2464 2465 | (smp->nxt)->prv = smp->prv; 2466 2467 2467 move.l (A_SMP),A0 2468 2468 move.l 4(A_SMP),4(A0) 2469 * 2470 * smp->prv = (struct sment *)vep;2471 * 2469 2470 | smp->prv = (struct sment |)vep; 2471 2472 2472 move.l VEP(A6),4(A_SMP) 2473 * 2474 *smp->nxt = vep->nxt;2475 * 2473 2474 | smp->nxt = vep->nxt; 2475 2476 2476 move.l VEP(A6),A0 2477 2477 move.l (A0),(A_SMP) 2478 * 2479 *(vep->nxt)->prv = smp;2480 * 2478 2479 | (vep->nxt)->prv = smp; 2480 2481 2481 move.l VEP(A6),A0 2482 2482 move.l (A0),A0 2483 2483 move.l A_SMP,4(A0) 2484 * 2485 *vep->nxt = smp;2486 * 2484 2485 | vep->nxt = smp; 2486 2487 2487 move.l VEP(A6),A0 2488 2488 move.l A_SMP,(A0) 2489 * 2490 *smp->sm = srcnum;2491 * 2489 2490 | smp->sm = srcnum; 2491 2492 2492 move SRCNUM(A6),10(A_SMP) 2493 * 2494 *}2495 * 2496 *mltval = fp->idfmlt;2497 * 2493 2494 | } 2495 2496 | mltval = fp->idfmlt; 2497 2498 2498 F04L113: move 2(A_FP),MLTVAL(A6) 2499 * 2500 .page 2501 * 2502 *switch (fp->idfsrc) {2503 * 2499 2500 .page 2501 2502 | switch (fp->idfsrc) { 2503 2504 2504 move.b 4(A_FP),D0 2505 2505 ext.w d0 2506 2506 cmp #10,D0 2507 2507 bhi F04L122 2508 * 2508 2509 2509 asl #2,D0 2510 2510 lea F04L123,A0 2511 2511 movea.l 0(A0,D0.W),A0 2512 2512 jmp (A0) 2513 * 2514 *case SM_NONE:2515 *mltval = 0;2516 * 2513 2514 | case SM_NONE: 2515 | mltval = 0; 2516 2517 2517 F04L116: clr MLTVAL(A6) 2518 * 2519 *tsrcval = 0;2520 * 2518 2519 | tsrcval = 0; 2520 2521 2521 clr TSRCVAL(A6) 2522 * 2523 *break;2524 * 2522 2523 | break; 2524 2525 2525 bra F04L114 2526 * 2527 *case SM_RAND:2528 *tsrcval = xgetran(mltval);2529 * 2526 2527 | case SM_RAND: 2528 | tsrcval = xgetran(mltval); 2529 2530 2530 F04L117: move MLTVAL(A6),(sp) 2531 2531 jsr _xgetran 2532 2532 move D0,TSRCVAL(A6) 2533 * 2534 *break;2535 * 2533 2534 | break; 2535 2536 2536 bra F04L114 2537 * 2538 *case SM_PTCH:2539 *tsrcval = pch;2540 * 2537 2538 | case SM_PTCH: 2539 | tsrcval = pch; 2540 2541 2541 F04L118: move PCH(A6),TSRCVAL(A6) 2542 * 2543 *break;2544 * 2542 2543 | break; 2544 2545 2545 bra F04L114 2546 * 2547 .page 2548 * 2549 *case SM_FREQ:2550 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];2551 * 2546 2547 .page 2548 2549 | case SM_FREQ: 2550 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 2551 2552 2552 F04L119: move PCH(A6),D0 2553 2553 asr #7,D0 … … 2557 2557 add.l #_ptoftab,A0 2558 2558 move (A0),TSRCVAL(A6) 2559 * 2560 *break;2561 * 2559 2560 | break; 2561 2562 2562 bra F04L114 2563 * 2564 *case SM_KVEL:2565 *tsrcval = veltab[trg];2566 * 2563 2564 | case SM_KVEL: 2565 | tsrcval = veltab[trg]; 2566 2567 2567 F04L120: move TRG(A6),A0 2568 2568 add.l A0,A0 2569 2569 add.l #_veltab,A0 2570 2570 move (A0),TSRCVAL(A6) 2571 * 2572 *break;2573 * 2571 2572 | break; 2573 2574 2574 bra F04L114 2575 * 2576 *case SM_KPRS:2577 *tsrcval = prstab[trg];2578 * 2575 2576 | case SM_KPRS: 2577 | tsrcval = prstab[trg]; 2578 2579 2579 F04L121: move TRG(A6),A0 2580 2580 add.l A0,A0 2581 2581 add.l #_prstab,A0 2582 2582 move (A0),TSRCVAL(A6) 2583 * 2584 *break;2585 * 2583 2584 | break; 2585 2586 2586 bra F04L114 2587 * 2588 *default:2589 *tsrcval = vep->val;2590 * 2587 2588 | default: 2589 | tsrcval = vep->val; 2590 2591 2591 F04L122: move.l VEP(A6),A0 2592 2592 move 8(A0),TSRCVAL(A6) 2593 * 2594 *}2595 * 2596 .page 2597 * 2598 *ltmp = ((long)tsrcval >> 1) + ((long)tsrcval >> 2);2599 * 2593 2594 | } 2595 2596 .page 2597 2598 | ltmp = ((long)tsrcval >> 1) + ((long)tsrcval >> 2); 2599 2600 2600 F04L114: move TSRCVAL(A6),D0 2601 2601 ext.l D0 … … 2606 2606 add.l D1,D0 2607 2607 move.l D0,LTMP(A6) 2608 * 2609 *if (ltmp GT (long)VALMAX)2610 *ltmp = (long)VALMAX;2611 * 2608 2609 | if (ltmp GT (long)VALMAX) 2610 | ltmp = (long)VALMAX; 2611 2612 2612 cmp.l #VALMAX,LTMP(A6) 2613 2613 ble F04L131 2614 * 2614 2615 2615 move.l #VALMAX,LTMP(A6) 2616 2616 bra F04L132 2617 * 2618 *else if (ltmp LT (long)VALMIN)2619 *ltmp = (long)VALMIN;2620 * 2617 2618 | else if (ltmp LT (long)VALMIN) 2619 | ltmp = (long)VALMIN; 2620 2621 2621 F04L131: cmp.l #VALMIN,LTMP(A6) 2622 2622 bge F04L132 2623 * 2623 2624 2624 move.l #VALMIN,LTMP(A6) 2625 * 2626 *srcval = (short)ltmp;2627 * 2625 2626 | srcval = (short)ltmp; 2627 2628 2628 F04L132: move.l LTMP(A6),D0 2629 2629 move D0,SRCVAL(A6) 2630 * 2631 .page 2632 * 2633 *if (pt->ipvsrc) {2634 * 2630 2631 .page 2632 2633 | if (pt->ipvsrc) { 2634 2635 2635 F04L124: move.l PT(A6),A0 2636 2636 tst.b 6(A0) 2637 2637 beq F04L136 2638 * 2639 *switch (pt->ipvsrc) {2640 * 2638 2639 | switch (pt->ipvsrc) { 2640 2641 2641 move.l PT(A6),A0 2642 2642 move.b 6(A0),D0 … … 2645 2645 cmp #9,D0 2646 2646 bhi F04L144 2647 * 2647 2648 2648 asl #2,D0 2649 2649 lea F04L145,A0 2650 2650 move.l 0(A0,D0.W),A0 2651 2651 jmp (A0) 2652 * 2653 *case SM_RAND:2654 *ltmp = xgetran(pt_>ipvmlt);2655 * 2652 2653 | case SM_RAND: 2654 | ltmp = xgetran(pt_>ipvmlt); 2655 2656 2656 F04L139: move.l PT(A6),A0 2657 2657 move 4(A0),(sp) … … 2659 2659 ext.l D0 2660 2660 move.l D0,LTMP(A6) 2661 * 2662 *break;2663 * 2661 2662 | break; 2663 2664 2664 bra F04L137 2665 * 2666 *case SM_PTCH:2667 *ltmp = pch;2668 * 2665 2666 | case SM_PTCH: 2667 | ltmp = pch; 2668 2669 2669 F04L140: move PCH(A6),A0 2670 2670 move.l A0,LTMP(A6) 2671 * 2672 *break;2673 * 2671 2672 | break; 2673 2674 2674 bra F04L137 2675 * 2676 .page 2677 * 2678 *case SM_FREQ:2679 *ltmp = ptoftab[(pch >> 7) & 0x00FF];2680 * 2675 2676 .page 2677 2678 | case SM_FREQ: 2679 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 2680 2681 2681 F04L141: move PCH(A6),D0 2682 2682 asr #7,D0 … … 2688 2688 ext.l D0 2689 2689 move.l D0,LTMP(A6) 2690 * 2691 *break;2692 * 2690 2691 | break; 2692 2693 2693 bra F04L137 2694 * 2695 *case SM_KVEL:2696 *ltmp = veltab[trg];2697 * 2694 2695 | case SM_KVEL: 2696 | ltmp = veltab[trg]; 2697 2698 2698 F04L142: move TRG(A6),A0 2699 2699 add.l A0,A0 … … 2702 2702 ext.l D0 2703 2703 move.l D0,LTMP(A6) 2704 * 2705 *break;2706 * 2704 2705 | break; 2706 2707 2707 bra F04L137 2708 * 2709 .page 2710 * 2711 *case SM_KPRS:2712 *ltmp = prstab[trg];2713 * 2708 2709 .page 2710 2711 | case SM_KPRS: 2712 | ltmp = prstab[trg]; 2713 2714 2714 F04L143: move TRG(A6),A0 2715 2715 add.l A0,A0 … … 2718 2718 ext.l D0 2719 2719 move.l D0,LTMP(A6) 2720 * 2721 *break;2722 * 2720 2721 | break; 2722 2723 2723 bra F04L137 2724 * 2725 .page 2726 * 2727 *default:2728 *ltmp = valents[group | pt->ipvsrc].val;2729 * 2724 2725 .page 2726 2727 | default: 2728 | ltmp = valents[group | pt->ipvsrc].val; 2729 2730 2730 F04L144: move.l PT(A6),A0 2731 2731 clr.l D0 … … 2741 2741 move 8(A0,A1.l),D0 2742 2742 move.l D0,LTMP(A6) 2743 * 2744 *}2745 * 2746 * 2747 .page 2748 * 2749 * ltmp = (ltmp *pt->ipvmlt) >> 15;2750 * 2743 2744 | } 2745 2746 2747 .page 2748 2749 | ltmp = (ltmp | pt->ipvmlt) >> 15; 2750 2751 2751 F04L137: move.l PT(A6),A0 2752 2752 move.w 4(A0),D0 … … 2756 2756 asr.l D1,D0 2757 2757 move.l D0,LTMP(A6) 2758 * 2759 *ltmp += (long)pt->ipval;2760 * 2758 2759 | ltmp += (long)pt->ipval; 2760 2761 2761 move.l PT(A6),A0 2762 2762 move 2(A0),D0 2763 2763 ext.l D0 2764 2764 add.l D0,LTMP(A6) 2765 * 2766 *if (ltmp GT (long)VALMAX)2767 *ltmp = (long)VALMAX;2768 * 2765 2766 | if (ltmp GT (long)VALMAX) 2767 | ltmp = (long)VALMAX; 2768 2769 2769 cmp.l #VALMAX,LTMP(A6) 2770 2770 ble F04L146 2771 * 2771 2772 2772 move.l #VALMAX,LTMP(A6) 2773 2773 bra F04L147 2774 * 2775 *else if (ltmp LT (long)VALMIN)2776 *ltmp = (long)VALMIN;2777 * 2774 2775 | else if (ltmp LT (long)VALMIN) 2776 | ltmp = (long)VALMIN; 2777 2778 2778 F04L146: cmp.l #VALMIN,LTMP(A6) 2779 2779 bge F04L147 2780 * 2780 2781 2781 move.l #VALMIN,LTMP(A6) 2782 * 2783 *tfpval = (short)ltmp;2784 * 2782 2783 | tfpval = (short)ltmp; 2784 2785 2785 F04L147: move.w LTMP+2(A6),TFPVAL(A6) 2786 2786 bra F04L149 2787 * 2788 *} else {2789 * 2790 *tfpval = pt->ipval;2791 * 2787 2788 | } else { 2789 2790 | tfpval = pt->ipval; 2791 2792 2792 F04L136: move.l PT(A6),A0 2793 2793 move 2(A0),TFPVAL(A6) 2794 * 2795 *}2796 * 2797 .page 2798 * 2799 *fpmant = (((long)pt->iptom & 0x0000FFF0L)2800 * *((long)timemlt & 0x0000FFFFL)) >> 15;2801 * 2794 2795 | } 2796 2797 .page 2798 2799 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 2800 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 2801 2802 2802 F04L149: move.l PT(A6),A0 2803 2803 move.w (A0),D0 2804 2804 move.w D0,D2 2805 andi.w # $FFF0,D02805 andi.w #0xFFF0,D0 2806 2806 move.w _timemlt,D1 2807 2807 muls D1,D0 … … 2809 2809 asr.l D1,D0 2810 2810 move D0,R_FPMANT 2811 * 2812 *fpexp = expbit[pt->iptim & 0x000F];2813 * 2814 and # $000F,D22811 2812 | fpexp = expbit[pt->iptim & 0x000F]; 2813 2814 and #0x000F,D2 2815 2815 move D2,A0 2816 2816 add.l A0,A0 2817 2817 add.l #_expbit,A0 2818 2818 move (A0),R_FPEXP 2819 * 2820 .page 2821 * 2822 *fp->idfpch = pch;2823 * 2819 2820 .page 2821 2822 | fp->idfpch = pch; 2823 2824 2824 F04L158: move PCH(A6),(A_FP) 2825 * 2826 *ltmp = ((long)tfpval >> 1) + ((longtfpval >>2)2827 *+ (long)fp->idfpch;2828 * 2825 2826 | ltmp = ((long)tfpval >> 1) + ((longtfpval >>2) 2827 | + (long)fp->idfpch; 2828 2829 2829 move TFPVAL(A6),D0 2830 2830 ext.l D0 … … 2838 2838 add.l D1,D0 2839 2839 move.l D0,LTMP(A6) 2840 * 2841 *if (ltmp GT (long)VALMAX)2842 *ltmp = (long)VALMAX;2843 * 2840 2841 | if (ltmp GT (long)VALMAX) 2842 | ltmp = (long)VALMAX; 2843 2844 2844 cmp.l #VALMAX,LTMP(A6) 2845 2845 ble F04L159 2846 * 2846 2847 2847 move.l #VALMAX,LTMP(A6) 2848 2848 bra F04L160 2849 * 2850 *else if (ltmp LT (long)VALMIN)2851 *ltmp = (long)VALMIN;2852 * 2849 2850 | else if (ltmp LT (long)VALMIN) 2851 | ltmp = (long)VALMIN; 2852 2853 2853 F04L159: cmp.l #VALMIN,LTMP(A6) 2854 2854 bge F04L160 2855 * 2855 2856 2856 move.l #VALMIN,LTMP(A6) 2857 * 2858 *fpval = (short)ltmp;2859 * 2857 2858 | fpval = (short)ltmp; 2859 2860 2860 F04L160: move.l LTMP(A6),D0 2861 2861 move D0,R_FPVAL 2862 * 2863 .page 2864 * 2862 2863 .page 2864 2865 2865 move.b 5(A_FP),D0 2866 2866 ext.w D0 2867 2867 sub.w #1,D0 2868 2868 movea.l PT(A6),A0 2869 * 2870 *oldi = setipl(FPU_DI);2871 * 2869 2870 | oldi = setipl(FPU_DI); 2871 2872 2872 move sr,OLDI(A6) 2873 2873 move #FPU_DI,sr 2874 * 2874 2875 2875 F04L168: clr.b 10(A0) 2876 2876 add.l #12,a0 2877 2877 dbra D0,F04L168 2878 * 2879 .page 2880 * 2881 *fp->idftmd ^= I_NVBITS;2882 * 2878 2879 .page 2880 2881 | fp->idftmd ^= I_NVBITS; 2882 2883 2883 F04L165: eor.b #24,7(A_FP) 2884 * 2885 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;2886 * 2884 2885 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 2886 2887 2887 move.b 7(A_FP),R_FPCTL 2888 2888 and #28,R_FPCTL 2889 2889 or #3,R_FPCTL 2890 * 2891 *fp->idfcpt = fp->idfpt1;2892 * 2890 2891 | fp->idfcpt = fp->idfpt1; 2892 2893 2893 move.b 6(A_FP),8(A_FP) 2894 * 2895 *fp->idftmd |= I_ACTIVE;2896 * 2894 2895 | fp->idftmd |= I_ACTIVE; 2896 2897 2897 or.b #2,7(A_FP) 2898 * 2899 *fp->idftrf = trg;2900 * 2898 2899 | fp->idftrf = trg; 2900 2901 2901 move TRG(A6),10(A_FP) 2902 * 2903 * *(fpu + (long)FPU_TCV1) = srcval;2904 * 2905 move SRCVAL(A6), $8(A_FPU)2906 * 2907 *++octype;2908 * 2902 2903 | |(fpu + (long)FPU_TCV1) = srcval; 2904 2905 move SRCVAL(A6),0x8(A_FPU) 2906 2907 | ++octype; 2908 2909 2909 add #1,OCTYPE(A6) 2910 * 2911 * *(fpu + (long)FPU_TSF1) = mltval;2912 * 2913 move MLTVAL(A6), $A(A_FPU)2914 * 2915 *++octype;2916 * 2910 2911 | |(fpu + (long)FPU_TSF1) = mltval; 2912 2913 move MLTVAL(A6),0xA(A_FPU) 2914 2915 | ++octype; 2916 2917 2917 add #1,OCTYPE(A6) 2918 * 2919 * *(fpu + (long)FPU_TMNT) = fpmant;2920 * 2921 move R_FPMANT, $14(A_FPU)2922 * 2923 *++octype;2924 * 2918 2919 | |(fpu + (long)FPU_TMNT) = fpmant; 2920 2921 move R_FPMANT,0x14(A_FPU) 2922 2923 | ++octype; 2924 2925 2925 add #1,OCTYPE(A6) 2926 * 2927 * *(fpu + (long)FPU_TEXP) = fpexp;2928 * 2929 move R_FPEXP, $16(A_FPU)2930 * 2931 *++octype;2932 * 2926 2927 | |(fpu + (long)FPU_TEXP) = fpexp; 2928 2929 move R_FPEXP,0x16(A_FPU) 2930 2931 | ++octype; 2932 2933 2933 add #1,OCTYPE(A6) 2934 * 2935 .page 2936 * 2937 *if (fp->idftmd & I_VNSUBN)2938 * 2934 2935 .page 2936 2937 | if (fp->idftmd & I_VNSUBN) 2938 2939 2939 btst #3,7(A_FP) 2940 2940 beq F04L169 2941 * 2942 * *(fpu + (long)FPU_TNV1) = fpval;2943 * 2944 move R_FPVAL, $1C(A_FPU)2941 2942 | |(fpu + (long)FPU_TNV1) = fpval; 2943 2944 move R_FPVAL,0x1C(A_FPU) 2945 2945 bra F04L170 2946 * 2947 *else2948 * *(fpu + (long)FPU_TNV0) = fpval;2949 * 2946 2947 | else 2948 | |(fpu + (long)FPU_TNV0) = fpval; 2949 2950 2950 F04L169: move R_FPVAL,2(A_FPU) 2951 * 2952 *++octype;2953 * 2951 2952 | ++octype; 2953 2954 2954 F04L170: add #1,OCTYPE(A6) 2955 * 2956 * *(fpu + (long)FPU_TCTL) = fpctl;2957 * 2955 2956 | |(fpu + (long)FPU_TCTL) = fpctl; 2957 2958 2958 move R_FPCTL,(A_FPU) 2959 * 2960 *setipl(oldi);2961 * 2959 2960 | setipl(oldi); 2961 2962 2962 move OLDI(A6),sr 2963 * 2964 .page 2965 *------------------------------------------------------------------------------2966 *Start function 5 -- Loctn2967 *------------------------------------------------------------------------------2968 * 2969 *if (ip->idhfnc[5].idftmd & I_TM_KEY) {2970 * 2963 2964 .page 2965 | ------------------------------------------------------------------------------ 2966 | Start function 5 -- Loctn 2967 | ------------------------------------------------------------------------------ 2968 2969 | if (ip->idhfnc[5].idftmd & I_TM_KEY) { 2970 2971 2971 FN05: move.l IP(A6),A0 2972 2972 move.b 153(A0),D0 … … 2975 2975 btst #0,D0 2976 2976 bne FN05A 2977 * 2977 2978 2978 jmp FN06 2979 * 2980 *vp = (vce << 4) + 4;2981 * 2979 2980 | vp = (vce << 4) + 4; 2981 2982 2982 FN05A: move VCE(A6),D0 2983 2983 asl #4,D0 2984 2984 add.w #4,D0 2985 2985 move D0,VP(A6) 2986 * 2987 *fpu = io_fpu + FPU_OFNC + (vp << 4);2988 * 2986 2987 | fpu = io_fpu + FPU_OFNC + (vp << 4); 2988 2989 2989 asl #5,D0 2990 2990 ext.l D0 2991 2991 move.l D0,A_FPU 2992 add.l #_io_fpu+ $4000,A_FPU2993 * 2994 *fp = &ip->idhfnc[5];2995 * 2992 add.l #_io_fpu+0x4000,A_FPU 2993 2994 | fp = &ip->idhfnc[5]; 2995 2996 2996 move.l #60,A_FP 2997 2997 add.l IP(A6),A_FP 2998 2998 add.l #86,A_FP 2999 * 3000 *pt = &ip->idhpnt[fp->idfpt1];3001 * 2999 3000 | pt = &ip->idhpnt[fp->idfpt1]; 3001 3002 3002 clr.l D0 3003 3003 move.b 6(A_FP),D0 … … 3009 3009 add.l #242,D0 3010 3010 move.l D0,PT(A6) 3011 * 3012 .page 3013 * 3014 *srcnum = group | fp->idfsrc;3015 * 3011 3012 .page 3013 3014 | srcnum = group | fp->idfsrc; 3015 3016 3016 move.w GROUP(A6),D0 3017 3017 ext.l D0 … … 3020 3020 or D1,D0 3021 3021 move D0,SRCNUM(A6) 3022 * 3023 *vep = &valents[srcnum];3024 * 3022 3023 | vep = &valents[srcnum]; 3024 3025 3025 add.l D0,D0 3026 3026 move.l D0,D1 … … 3029 3029 add.l #_valents,D0 3030 3030 move.l D0,VEP(A6) 3031 * 3032 *smp = vpsms[vp];3033 * 3031 3032 | smp = vpsms[vp]; 3033 3034 3034 move VP(A6),A0 3035 3035 add.l A0,A0 … … 3037 3037 add.l #_vpsms,A0 3038 3038 move.l (A0),A_SMP 3039 * 3040 *if (srcnum NE smp->sm) {3041 * 3039 3040 | if (srcnum NE smp->sm) { 3041 3042 3042 clr D0 3043 3043 move 10(A_SMP),D0 3044 3044 cmp SRCNUM(A6),D0 3045 3045 beq F05L113 3046 * 3047 *(smp->prv)->nxt = smp->nxt;3048 * 3046 3047 | (smp->prv)->nxt = smp->nxt; 3048 3049 3049 move.l 4(A_SMP),A0 3050 3050 move.l (A_SMP),(A0) 3051 * 3052 *(smp->nxt)->prv = smp->prv;3053 * 3051 3052 | (smp->nxt)->prv = smp->prv; 3053 3054 3054 move.l (A_SMP),A0 3055 3055 move.l 4(A_SMP),4(A0) 3056 * 3057 * smp->prv = (struct sment *)vep;3058 * 3056 3057 | smp->prv = (struct sment |)vep; 3058 3059 3059 move.l VEP(A6),4(A_SMP) 3060 * 3061 *smp->nxt = vep->nxt;3062 * 3060 3061 | smp->nxt = vep->nxt; 3062 3063 3063 move.l VEP(A6),A0 3064 3064 move.l (A0),(A_SMP) 3065 * 3066 *(vep->nxt)->prv = smp;3067 * 3065 3066 | (vep->nxt)->prv = smp; 3067 3068 3068 move.l VEP(A6),A0 3069 3069 move.l (A0),A0 3070 3070 move.l A_SMP,4(A0) 3071 * 3072 *vep->nxt = smp;3073 * 3071 3072 | vep->nxt = smp; 3073 3074 3074 move.l VEP(A6),A0 3075 3075 move.l A_SMP,(A0) 3076 * 3077 *smp->sm = srcnum;3078 * 3076 3077 | smp->sm = srcnum; 3078 3079 3079 move SRCNUM(A6),10(A_SMP) 3080 * 3081 *}3082 * 3083 *mltval = fp->idfmlt;3084 * 3080 3081 | } 3082 3083 | mltval = fp->idfmlt; 3084 3085 3085 F05L113: move 2(A_FP),MLTVAL(A6) 3086 * 3087 .page 3088 * 3089 *switch (fp->idfsrc) {3090 * 3086 3087 .page 3088 3089 | switch (fp->idfsrc) { 3090 3091 3091 move.b 4(A_FP),D0 3092 3092 ext.w d0 3093 3093 cmp #10,D0 3094 3094 bhi F05L122 3095 * 3095 3096 3096 asl #2,D0 3097 3097 lea F05L123,A0 3098 3098 movea.l 0(A0,D0.W),A0 3099 3099 jmp (A0) 3100 * 3101 *case SM_NONE:3102 *mltval = 0;3103 * 3100 3101 | case SM_NONE: 3102 | mltval = 0; 3103 3104 3104 F05L116: clr MLTVAL(A6) 3105 * 3106 *tsrcval = 0;3107 * 3105 3106 | tsrcval = 0; 3107 3108 3108 clr TSRCVAL(A6) 3109 * 3110 *break;3111 * 3109 3110 | break; 3111 3112 3112 bra F05L114 3113 * 3114 *case SM_RAND:3115 *tsrcval = xgetran(mltval);3116 * 3113 3114 | case SM_RAND: 3115 | tsrcval = xgetran(mltval); 3116 3117 3117 F05L117: move MLTVAL(A6),(sp) 3118 3118 jsr _xgetran 3119 3119 move D0,TSRCVAL(A6) 3120 * 3121 *break;3122 * 3120 3121 | break; 3122 3123 3123 bra F05L114 3124 * 3125 *case SM_PTCH:3126 *tsrcval = pch;3127 * 3124 3125 | case SM_PTCH: 3126 | tsrcval = pch; 3127 3128 3128 F05L118: move PCH(A6),TSRCVAL(A6) 3129 * 3130 *break;3131 * 3129 3130 | break; 3131 3132 3132 bra F05L114 3133 * 3134 .page 3135 * 3136 *case SM_FREQ:3137 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];3138 * 3133 3134 .page 3135 3136 | case SM_FREQ: 3137 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 3138 3139 3139 F05L119: move PCH(A6),D0 3140 3140 asr #7,D0 … … 3144 3144 add.l #_ptoftab,A0 3145 3145 move (A0),TSRCVAL(A6) 3146 * 3147 *break;3148 * 3146 3147 | break; 3148 3149 3149 bra F05L114 3150 * 3151 *case SM_KVEL:3152 *tsrcval = veltab[trg];3153 * 3150 3151 | case SM_KVEL: 3152 | tsrcval = veltab[trg]; 3153 3154 3154 F05L120: move TRG(A6),A0 3155 3155 add.l A0,A0 3156 3156 add.l #_veltab,A0 3157 3157 move (A0),TSRCVAL(A6) 3158 * 3159 *break;3160 * 3158 3159 | break; 3160 3161 3161 bra F05L114 3162 * 3163 *case SM_KPRS:3164 *tsrcval = prstab[trg];3165 * 3162 3163 | case SM_KPRS: 3164 | tsrcval = prstab[trg]; 3165 3166 3166 F05L121: move TRG(A6),A0 3167 3167 add.l A0,A0 3168 3168 add.l #_prstab,A0 3169 3169 move (A0),TSRCVAL(A6) 3170 * 3171 *break;3172 * 3170 3171 | break; 3172 3173 3173 bra F05L114 3174 * 3175 *default:3176 *tsrcval = vep->val;3177 * 3174 3175 | default: 3176 | tsrcval = vep->val; 3177 3178 3178 F05L122: move.l VEP(A6),A0 3179 3179 move 8(A0),TSRCVAL(A6) 3180 * 3181 *}3182 * 3183 .page 3184 * 3185 *srcval = tsrcval;3186 * 3180 3181 | } 3182 3183 .page 3184 3185 | srcval = tsrcval; 3186 3187 3187 F05L114: move TSRCVAL(A6),SRCVAL(A6) 3188 * 3189 .page 3190 * 3191 *if (pt->ipvsrc) {3192 * 3188 3189 .page 3190 3191 | if (pt->ipvsrc) { 3192 3193 3193 F05L124: move.l PT(A6),A0 3194 3194 tst.b 6(A0) 3195 3195 beq F05L136 3196 * 3197 *switch (pt->ipvsrc) {3198 * 3196 3197 | switch (pt->ipvsrc) { 3198 3199 3199 move.l PT(A6),A0 3200 3200 move.b 6(A0),D0 … … 3203 3203 cmp #9,D0 3204 3204 bhi F05L144 3205 * 3205 3206 3206 asl #2,D0 3207 3207 lea F05L145,A0 3208 3208 move.l 0(A0,D0.W),A0 3209 3209 jmp (A0) 3210 * 3211 *case SM_RAND:3212 *ltmp = xgetran(pt_>ipvmlt);3213 * 3210 3211 | case SM_RAND: 3212 | ltmp = xgetran(pt_>ipvmlt); 3213 3214 3214 F05L139: move.l PT(A6),A0 3215 3215 move 4(A0),(sp) … … 3217 3217 ext.l D0 3218 3218 move.l D0,LTMP(A6) 3219 * 3220 *break;3221 * 3219 3220 | break; 3221 3222 3222 bra F05L137 3223 * 3224 *case SM_PTCH:3225 *ltmp = pch;3226 * 3223 3224 | case SM_PTCH: 3225 | ltmp = pch; 3226 3227 3227 F05L140: move PCH(A6),A0 3228 3228 move.l A0,LTMP(A6) 3229 * 3230 *break;3231 * 3229 3230 | break; 3231 3232 3232 bra F05L137 3233 * 3234 .page 3235 * 3236 *case SM_FREQ:3237 *ltmp = ptoftab[(pch >> 7) & 0x00FF];3238 * 3233 3234 .page 3235 3236 | case SM_FREQ: 3237 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 3238 3239 3239 F05L141: move PCH(A6),D0 3240 3240 asr #7,D0 … … 3246 3246 ext.l D0 3247 3247 move.l D0,LTMP(A6) 3248 * 3249 *break;3250 * 3248 3249 | break; 3250 3251 3251 bra F05L137 3252 * 3253 *case SM_KVEL:3254 *ltmp = veltab[trg];3255 * 3252 3253 | case SM_KVEL: 3254 | ltmp = veltab[trg]; 3255 3256 3256 F05L142: move TRG(A6),A0 3257 3257 add.l A0,A0 … … 3260 3260 ext.l D0 3261 3261 move.l D0,LTMP(A6) 3262 * 3263 *break;3264 * 3262 3263 | break; 3264 3265 3265 bra F05L137 3266 * 3267 .page 3268 * 3269 *case SM_KPRS:3270 *ltmp = prstab[trg];3271 * 3266 3267 .page 3268 3269 | case SM_KPRS: 3270 | ltmp = prstab[trg]; 3271 3272 3272 F05L143: move TRG(A6),A0 3273 3273 add.l A0,A0 … … 3276 3276 ext.l D0 3277 3277 move.l D0,LTMP(A6) 3278 * 3279 *break;3280 * 3278 3279 | break; 3280 3281 3281 bra F05L137 3282 * 3283 .page 3284 * 3285 *default:3286 *ltmp = valents[group | pt->ipvsrc].val;3287 * 3282 3283 .page 3284 3285 | default: 3286 | ltmp = valents[group | pt->ipvsrc].val; 3287 3288 3288 F05L144: move.l PT(A6),A0 3289 3289 clr.l D0 … … 3299 3299 move 8(A0,A1.l),D0 3300 3300 move.l D0,LTMP(A6) 3301 * 3302 *}3303 * 3304 * 3305 .page 3306 * 3307 * ltmp = (ltmp *pt->ipvmlt) >> 15;3308 * 3301 3302 | } 3303 3304 3305 .page 3306 3307 | ltmp = (ltmp | pt->ipvmlt) >> 15; 3308 3309 3309 F05L137: move.l PT(A6),A0 3310 3310 move.w 4(A0),D0 … … 3314 3314 asr.l D1,D0 3315 3315 move.l D0,LTMP(A6) 3316 * 3317 *ltmp += (long)pt->ipval;3318 * 3316 3317 | ltmp += (long)pt->ipval; 3318 3319 3319 move.l PT(A6),A0 3320 3320 move 2(A0),D0 3321 3321 ext.l D0 3322 3322 add.l D0,LTMP(A6) 3323 * 3324 *if (ltmp GT (long)VALMAX)3325 *ltmp = (long)VALMAX;3326 * 3323 3324 | if (ltmp GT (long)VALMAX) 3325 | ltmp = (long)VALMAX; 3326 3327 3327 cmp.l #VALMAX,LTMP(A6) 3328 3328 ble F05L146 3329 * 3329 3330 3330 move.l #VALMAX,LTMP(A6) 3331 3331 bra F05L147 3332 * 3333 *else if (ltmp LT (long)VALMIN)3334 *ltmp = (long)VALMIN;3335 * 3332 3333 | else if (ltmp LT (long)VALMIN) 3334 | ltmp = (long)VALMIN; 3335 3336 3336 F05L146: cmp.l #VALMIN,LTMP(A6) 3337 3337 bge F05L147 3338 * 3338 3339 3339 move.l #VALMIN,LTMP(A6) 3340 * 3341 *tfpval = (short)ltmp;3342 * 3340 3341 | tfpval = (short)ltmp; 3342 3343 3343 F05L147: move.w LTMP+2(A6),TFPVAL(A6) 3344 3344 bra F05L149 3345 * 3346 *} else {3347 * 3348 *tfpval = pt->ipval;3349 * 3345 3346 | } else { 3347 3348 | tfpval = pt->ipval; 3349 3350 3350 F05L136: move.l PT(A6),A0 3351 3351 move 2(A0),TFPVAL(A6) 3352 * 3353 *}3354 * 3355 .page 3356 * 3357 *fpmant = (((long)pt->iptom & 0x0000FFF0L)3358 * *((long)timemlt & 0x0000FFFFL)) >> 15;3359 * 3352 3353 | } 3354 3355 .page 3356 3357 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 3358 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 3359 3360 3360 F05L149: move.l PT(A6),A0 3361 3361 move.w (A0),D0 3362 3362 move.w D0,D2 3363 andi.w # $FFF0,D03363 andi.w #0xFFF0,D0 3364 3364 move.w _timemlt,D1 3365 3365 muls D1,D0 … … 3367 3367 asr.l D1,D0 3368 3368 move D0,R_FPMANT 3369 * 3370 *fpexp = expbit[pt->iptim & 0x000F];3371 * 3372 and # $000F,D23369 3370 | fpexp = expbit[pt->iptim & 0x000F]; 3371 3372 and #0x000F,D2 3373 3373 move D2,A0 3374 3374 add.l A0,A0 3375 3375 add.l #_expbit,A0 3376 3376 move (A0),R_FPEXP 3377 * 3378 .page 3379 * 3380 *fp->idfpch = pch;3381 * 3377 3378 .page 3379 3380 | fp->idfpch = pch; 3381 3382 3382 F05L163: move PCH(A6),(A_FP) 3383 * 3384 *if (tfpval > VALMAX)3385 *tfpval = VALMAX;3386 *else if (tfpval < 0)3387 *tfpval = 0;3388 * 3383 3384 | if (tfpval > VALMAX) 3385 | tfpval = VALMAX; 3386 | else if (tfpval < 0) 3387 | tfpval = 0; 3388 3389 3389 move.w TFPVAL(A6),D0 3390 cmp.w # $7D00,D03390 cmp.w #0x7D00,D0 3391 3391 ble F05L163B 3392 * 3393 move.w # $7D00,D03392 3393 move.w #0x7D00,D0 3394 3394 bra F05L163A 3395 3395 3396 3396 F05L163B: tst.w D0 3397 3397 bpl F05L163A 3398 * 3398 3399 3399 clr.w D0 3400 * 3401 *#if LOC_EOR3402 *fpval = (tfpval << 1) ^ 0x8000;3403 *#endif3404 * 3400 3401 |#if LOC_EOR 3402 | fpval = (tfpval << 1) ^ 0x8000; 3403 |#endif 3404 3405 3405 .ifne LOC_EOR 3406 3406 F05L163A: add.w D0,D0 3407 eor.w # $8000,D03407 eor.w #0x8000,D0 3408 3408 .endc 3409 * 3410 *#if LOC_SUB3411 *fpval = ((tfpval >> 5) - 500) << 6;3412 *#endif3413 * 3409 3410 |#if LOC_SUB 3411 | fpval = ((tfpval >> 5) - 500) << 6; 3412 |#endif 3413 3414 3414 .ifne LOC_SUB 3415 3415 F05L163A: asr.w #5,D0 … … 3417 3417 asl.w #6,D0 3418 3418 .endc 3419 * 3419 3420 3420 move.w D0,R_FPVAL 3421 * 3422 .page 3423 * 3421 3422 .page 3423 3424 3424 move.b 5(A_FP),D0 3425 3425 ext.w D0 3426 3426 sub.w #1,D0 3427 3427 movea.l PT(A6),A0 3428 * 3429 *oldi = setipl(FPU_DI);3430 * 3428 3429 | oldi = setipl(FPU_DI); 3430 3431 3431 move sr,OLDI(A6) 3432 3432 move #FPU_DI,sr 3433 * 3433 3434 3434 F05L168: clr.b 10(A0) 3435 3435 add.l #12,a0 3436 3436 dbra D0,F05L168 3437 * 3438 .page 3439 * 3440 *fp->idftmd ^= I_NVBITS;3441 * 3437 3438 .page 3439 3440 | fp->idftmd ^= I_NVBITS; 3441 3442 3442 F05L165: eor.b #24,7(A_FP) 3443 * 3444 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;3445 * 3443 3444 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 3445 3446 3446 move.b 7(A_FP),R_FPCTL 3447 3447 and #28,R_FPCTL 3448 3448 or #3,R_FPCTL 3449 * 3450 *fp->idfcpt = fp->idfpt1;3451 * 3449 3450 | fp->idfcpt = fp->idfpt1; 3451 3452 3452 move.b 6(A_FP),8(A_FP) 3453 * 3454 *fp->idftmd |= I_ACTIVE;3455 * 3453 3454 | fp->idftmd |= I_ACTIVE; 3455 3456 3456 or.b #2,7(A_FP) 3457 * 3458 *fp->idftrf = trg;3459 * 3457 3458 | fp->idftrf = trg; 3459 3460 3460 move TRG(A6),10(A_FP) 3461 * 3462 * *(fpu + (long)FPU_TCV1) = srcval;3463 * 3464 move SRCVAL(A6), $8(A_FPU)3465 * 3466 *++octype;3467 * 3461 3462 | |(fpu + (long)FPU_TCV1) = srcval; 3463 3464 move SRCVAL(A6),0x8(A_FPU) 3465 3466 | ++octype; 3467 3468 3468 add #1,OCTYPE(A6) 3469 * 3470 * *(fpu + (long)FPU_TSF1) = mltval;3471 * 3472 move MLTVAL(A6), $A(A_FPU)3473 * 3474 *++octype;3475 * 3469 3470 | |(fpu + (long)FPU_TSF1) = mltval; 3471 3472 move MLTVAL(A6),0xA(A_FPU) 3473 3474 | ++octype; 3475 3476 3476 add #1,OCTYPE(A6) 3477 * 3478 * *(fpu + (long)FPU_TMNT) = fpmant;3479 * 3480 move R_FPMANT, $14(A_FPU)3481 * 3482 *++octype;3483 * 3477 3478 | |(fpu + (long)FPU_TMNT) = fpmant; 3479 3480 move R_FPMANT,0x14(A_FPU) 3481 3482 | ++octype; 3483 3484 3484 add #1,OCTYPE(A6) 3485 * 3486 * *(fpu + (long)FPU_TEXP) = fpexp;3487 * 3488 move R_FPEXP, $16(A_FPU)3489 * 3490 *++octype;3491 * 3485 3486 | |(fpu + (long)FPU_TEXP) = fpexp; 3487 3488 move R_FPEXP,0x16(A_FPU) 3489 3490 | ++octype; 3491 3492 3492 add #1,OCTYPE(A6) 3493 * 3494 .page 3495 * 3496 *if (fp->idftmd & I_VNSUBN)3497 * 3493 3494 .page 3495 3496 | if (fp->idftmd & I_VNSUBN) 3497 3498 3498 btst #3,7(A_FP) 3499 3499 beq F05L169 3500 * 3501 * *(fpu + (long)FPU_TNV1) = fpval;3502 * 3503 move R_FPVAL, $1C(A_FPU)3500 3501 | |(fpu + (long)FPU_TNV1) = fpval; 3502 3503 move R_FPVAL,0x1C(A_FPU) 3504 3504 bra F05L170 3505 * 3506 *else3507 * *(fpu + (long)FPU_TNV0) = fpval;3508 * 3505 3506 | else 3507 | |(fpu + (long)FPU_TNV0) = fpval; 3508 3509 3509 F05L169: move R_FPVAL,2(A_FPU) 3510 * 3511 *++octype;3512 * 3510 3511 | ++octype; 3512 3513 3513 F05L170: add #1,OCTYPE(A6) 3514 * 3515 * *(fpu + (long)FPU_TCTL) = fpctl;3516 * 3514 3515 | |(fpu + (long)FPU_TCTL) = fpctl; 3516 3517 3517 move R_FPCTL,(A_FPU) 3518 * 3519 *setipl(oldi);3520 * 3518 3519 | setipl(oldi); 3520 3521 3521 move OLDI(A6),sr 3522 * 3523 .page 3524 *------------------------------------------------------------------------------3525 *Start function 6 -- Ind 13526 *------------------------------------------------------------------------------3527 * 3528 *if (ip->idhfnc[2].idftmd & I_TM_KEY) {3529 * 3522 3523 .page 3524 | ------------------------------------------------------------------------------ 3525 | Start function 6 -- Ind 1 3526 | ------------------------------------------------------------------------------ 3527 3528 | if (ip->idhfnc[2].idftmd & I_TM_KEY) { 3529 3530 3530 FN06: move.l IP(A6),A0 3531 3531 move.b 165(A0),D0 … … 3534 3534 btst #0,D0 3535 3535 bne FN06A 3536 * 3536 3537 3537 jmp FN07 3538 * 3539 *vp = (vce << 4) + 9;3540 * 3538 3539 | vp = (vce << 4) + 9; 3540 3541 3541 FN06A: move VCE(A6),D0 3542 3542 asl #4,D0 3543 3543 add.w #9,D0 3544 3544 move D0,VP(A6) 3545 * 3546 *fpu = io_fpu + FPU_OFNC + (vp << 4);3547 * 3545 3546 | fpu = io_fpu + FPU_OFNC + (vp << 4); 3547 3548 3548 asl #5,D0 3549 3549 ext.l D0 3550 3550 move.l D0,A_FPU 3551 add.l #_io_fpu+ $4000,A_FPU3552 * 3553 *fp = &ip->idhfnc[6];3554 * 3551 add.l #_io_fpu+0x4000,A_FPU 3552 3553 | fp = &ip->idhfnc[6]; 3554 3555 3555 move.l #72,A_FP 3556 3556 add.l IP(A6),A_FP 3557 3557 add.l #86,A_FP 3558 * 3559 *pt = &ip->idhpnt[fp->idfpt1];3560 * 3558 3559 | pt = &ip->idhpnt[fp->idfpt1]; 3560 3561 3561 clr.l D0 3562 3562 move.b 6(A_FP),D0 … … 3568 3568 add.l #242,D0 3569 3569 move.l D0,PT(A6) 3570 * 3571 .page 3572 * 3573 *srcnum = group | fp->idfsrc;3574 * 3570 3571 .page 3572 3573 | srcnum = group | fp->idfsrc; 3574 3575 3575 move.w GROUP(A6),D0 3576 3576 ext.l D0 … … 3579 3579 or D1,D0 3580 3580 move D0,SRCNUM(A6) 3581 * 3582 *vep = &valents[srcnum];3583 * 3581 3582 | vep = &valents[srcnum]; 3583 3584 3584 add.l D0,D0 3585 3585 move.l D0,D1 … … 3588 3588 add.l #_valents,D0 3589 3589 move.l D0,VEP(A6) 3590 * 3591 *smp = vpsms[vp];3592 * 3590 3591 | smp = vpsms[vp]; 3592 3593 3593 move VP(A6),A0 3594 3594 add.l A0,A0 … … 3596 3596 add.l #_vpsms,A0 3597 3597 move.l (A0),A_SMP 3598 * 3599 *if (srcnum NE smp->sm) {3600 * 3598 3599 | if (srcnum NE smp->sm) { 3600 3601 3601 clr D0 3602 3602 move 10(A_SMP),D0 3603 3603 cmp SRCNUM(A6),D0 3604 3604 beq F06L113 3605 * 3606 *(smp->prv)->nxt = smp->nxt;3607 * 3605 3606 | (smp->prv)->nxt = smp->nxt; 3607 3608 3608 move.l 4(A_SMP),A0 3609 3609 move.l (A_SMP),(A0) 3610 * 3611 *(smp->nxt)->prv = smp->prv;3612 * 3610 3611 | (smp->nxt)->prv = smp->prv; 3612 3613 3613 move.l (A_SMP),A0 3614 3614 move.l 4(A_SMP),4(A0) 3615 * 3616 * smp->prv = (struct sment *)vep;3617 * 3615 3616 | smp->prv = (struct sment |)vep; 3617 3618 3618 move.l VEP(A6),4(A_SMP) 3619 * 3620 *smp->nxt = vep->nxt;3621 * 3619 3620 | smp->nxt = vep->nxt; 3621 3622 3622 move.l VEP(A6),A0 3623 3623 move.l (A0),(A_SMP) 3624 * 3625 *(vep->nxt)->prv = smp;3626 * 3624 3625 | (vep->nxt)->prv = smp; 3626 3627 3627 move.l VEP(A6),A0 3628 3628 move.l (A0),A0 3629 3629 move.l A_SMP,4(A0) 3630 * 3631 *vep->nxt = smp;3632 * 3630 3631 | vep->nxt = smp; 3632 3633 3633 move.l VEP(A6),A0 3634 3634 move.l A_SMP,(A0) 3635 * 3636 *smp->sm = srcnum;3637 * 3635 3636 | smp->sm = srcnum; 3637 3638 3638 move SRCNUM(A6),10(A_SMP) 3639 * 3640 *}3641 * 3642 *mltval = fp->idfmlt;3643 * 3639 3640 | } 3641 3642 | mltval = fp->idfmlt; 3643 3644 3644 F06L113: move 2(A_FP),MLTVAL(A6) 3645 * 3646 .page 3647 * 3648 *switch (fp->idfsrc) {3649 * 3645 3646 .page 3647 3648 | switch (fp->idfsrc) { 3649 3650 3650 move.b 4(A_FP),D0 3651 3651 ext.w d0 3652 3652 cmp #10,D0 3653 3653 bhi F06L122 3654 * 3654 3655 3655 asl #2,D0 3656 3656 lea F06L123,A0 3657 3657 movea.l 0(A0,D0.W),A0 3658 3658 jmp (A0) 3659 * 3660 *case SM_NONE:3661 *mltval = 0;3662 * 3659 3660 | case SM_NONE: 3661 | mltval = 0; 3662 3663 3663 F06L116: clr MLTVAL(A6) 3664 * 3665 *tsrcval = 0;3666 * 3664 3665 | tsrcval = 0; 3666 3667 3667 clr TSRCVAL(A6) 3668 * 3669 *break;3670 * 3668 3669 | break; 3670 3671 3671 bra F06L114 3672 * 3673 *case SM_RAND:3674 *tsrcval = xgetran(mltval);3675 * 3672 3673 | case SM_RAND: 3674 | tsrcval = xgetran(mltval); 3675 3676 3676 F06L117: move MLTVAL(A6),(sp) 3677 3677 jsr _xgetran 3678 3678 move D0,TSRCVAL(A6) 3679 * 3680 *break;3681 * 3679 3680 | break; 3681 3682 3682 bra F06L114 3683 * 3684 *case SM_PTCH:3685 *tsrcval = pch;3686 * 3683 3684 | case SM_PTCH: 3685 | tsrcval = pch; 3686 3687 3687 F06L118: move PCH(A6),TSRCVAL(A6) 3688 * 3689 *break;3690 * 3688 3689 | break; 3690 3691 3691 bra F06L114 3692 * 3693 .page 3694 * 3695 *case SM_FREQ:3696 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];3697 * 3692 3693 .page 3694 3695 | case SM_FREQ: 3696 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 3697 3698 3698 F06L119: move PCH(A6),D0 3699 3699 asr #7,D0 … … 3703 3703 add.l #_ptoftab,A0 3704 3704 move (A0),TSRCVAL(A6) 3705 * 3706 *break;3707 * 3705 3706 | break; 3707 3708 3708 bra F06L114 3709 * 3710 *case SM_KVEL:3711 *tsrcval = veltab[trg];3712 * 3709 3710 | case SM_KVEL: 3711 | tsrcval = veltab[trg]; 3712 3713 3713 F06L120: move TRG(A6),A0 3714 3714 add.l A0,A0 3715 3715 add.l #_veltab,A0 3716 3716 move (A0),TSRCVAL(A6) 3717 * 3718 *break;3719 * 3717 3718 | break; 3719 3720 3720 bra F06L114 3721 * 3722 *case SM_KPRS:3723 *tsrcval = prstab[trg];3724 * 3721 3722 | case SM_KPRS: 3723 | tsrcval = prstab[trg]; 3724 3725 3725 F06L121: move TRG(A6),A0 3726 3726 add.l A0,A0 3727 3727 add.l #_prstab,A0 3728 3728 move (A0),TSRCVAL(A6) 3729 * 3730 *break;3731 * 3729 3730 | break; 3731 3732 3732 bra F06L114 3733 * 3734 *default:3735 *tsrcval = vep->val;3736 * 3733 3734 | default: 3735 | tsrcval = vep->val; 3736 3737 3737 F06L122: move.l VEP(A6),A0 3738 3738 move 8(A0),TSRCVAL(A6) 3739 * 3740 *}3741 * 3742 .page 3743 * 3744 *srcval = tsrcval;3745 * 3739 3740 | } 3741 3742 .page 3743 3744 | srcval = tsrcval; 3745 3746 3746 F06L114: move TSRCVAL(A6),SRCVAL(A6) 3747 * 3748 .page 3749 * 3750 *if (pt->ipvsrc) {3751 * 3747 3748 .page 3749 3750 | if (pt->ipvsrc) { 3751 3752 3752 F06L124: move.l PT(A6),A0 3753 3753 tst.b 6(A0) 3754 3754 beq F06L136 3755 * 3756 *switch (pt->ipvsrc) {3757 * 3755 3756 | switch (pt->ipvsrc) { 3757 3758 3758 move.l PT(A6),A0 3759 3759 move.b 6(A0),D0 … … 3762 3762 cmp #9,D0 3763 3763 bhi F06L144 3764 * 3764 3765 3765 asl #2,D0 3766 3766 lea F06L145,A0 3767 3767 move.l 0(A0,D0.W),A0 3768 3768 jmp (A0) 3769 * 3770 *case SM_RAND:3771 *ltmp = xgetran(pt_>ipvmlt);3772 * 3769 3770 | case SM_RAND: 3771 | ltmp = xgetran(pt_>ipvmlt); 3772 3773 3773 F06L139: move.l PT(A6),A0 3774 3774 move 4(A0),(sp) … … 3776 3776 ext.l D0 3777 3777 move.l D0,LTMP(A6) 3778 * 3779 *break;3780 * 3778 3779 | break; 3780 3781 3781 bra F06L137 3782 * 3783 *case SM_PTCH:3784 *ltmp = pch;3785 * 3782 3783 | case SM_PTCH: 3784 | ltmp = pch; 3785 3786 3786 F06L140: move PCH(A6),A0 3787 3787 move.l A0,LTMP(A6) 3788 * 3789 *break;3790 * 3788 3789 | break; 3790 3791 3791 bra F06L137 3792 * 3793 .page 3794 * 3795 *case SM_FREQ:3796 *ltmp = ptoftab[(pch >> 7) & 0x00FF];3797 * 3792 3793 .page 3794 3795 | case SM_FREQ: 3796 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 3797 3798 3798 F06L141: move PCH(A6),D0 3799 3799 asr #7,D0 … … 3805 3805 ext.l D0 3806 3806 move.l D0,LTMP(A6) 3807 * 3808 *break;3809 * 3807 3808 | break; 3809 3810 3810 bra F06L137 3811 * 3812 *case SM_KVEL:3813 *ltmp = veltab[trg];3814 * 3811 3812 | case SM_KVEL: 3813 | ltmp = veltab[trg]; 3814 3815 3815 F06L142: move TRG(A6),A0 3816 3816 add.l A0,A0 … … 3819 3819 ext.l D0 3820 3820 move.l D0,LTMP(A6) 3821 * 3822 *break;3823 * 3821 3822 | break; 3823 3824 3824 bra F06L137 3825 * 3826 .page 3827 * 3828 *case SM_KPRS:3829 *ltmp = prstab[trg];3830 * 3825 3826 .page 3827 3828 | case SM_KPRS: 3829 | ltmp = prstab[trg]; 3830 3831 3831 F06L143: move TRG(A6),A0 3832 3832 add.l A0,A0 … … 3835 3835 ext.l D0 3836 3836 move.l D0,LTMP(A6) 3837 * 3838 *break;3839 * 3837 3838 | break; 3839 3840 3840 bra F06L137 3841 * 3842 .page 3843 * 3844 *default:3845 *ltmp = valents[group | pt->ipvsrc].val;3846 * 3841 3842 .page 3843 3844 | default: 3845 | ltmp = valents[group | pt->ipvsrc].val; 3846 3847 3847 F06L144: move.l PT(A6),A0 3848 3848 clr.l D0 … … 3858 3858 move 8(A0,A1.l),D0 3859 3859 move.l D0,LTMP(A6) 3860 * 3861 *}3862 * 3863 * 3864 .page 3865 * 3866 * ltmp = (ltmp *pt->ipvmlt) >> 15;3867 * 3860 3861 | } 3862 3863 3864 .page 3865 3866 | ltmp = (ltmp | pt->ipvmlt) >> 15; 3867 3868 3868 F06L137: move.l PT(A6),A0 3869 3869 move.w 4(A0),D0 … … 3873 3873 asr.l D1,D0 3874 3874 move.l D0,LTMP(A6) 3875 * 3876 *ltmp += (long)pt->ipval;3877 * 3875 3876 | ltmp += (long)pt->ipval; 3877 3878 3878 move.l PT(A6),A0 3879 3879 move 2(A0),D0 3880 3880 ext.l D0 3881 3881 add.l D0,LTMP(A6) 3882 * 3883 *if (ltmp GT (long)VALMAX)3884 *ltmp = (long)VALMAX;3885 * 3882 3883 | if (ltmp GT (long)VALMAX) 3884 | ltmp = (long)VALMAX; 3885 3886 3886 cmp.l #VALMAX,LTMP(A6) 3887 3887 ble F06L146 3888 * 3888 3889 3889 move.l #VALMAX,LTMP(A6) 3890 3890 bra F06L147 3891 * 3892 *else if (ltmp LT (long)VALMIN)3893 *ltmp = (long)VALMIN;3894 * 3891 3892 | else if (ltmp LT (long)VALMIN) 3893 | ltmp = (long)VALMIN; 3894 3895 3895 F06L146: cmp.l #VALMIN,LTMP(A6) 3896 3896 bge F06L147 3897 * 3897 3898 3898 move.l #VALMIN,LTMP(A6) 3899 * 3900 *tfpval = (short)ltmp;3901 * 3899 3900 | tfpval = (short)ltmp; 3901 3902 3902 F06L147: move.w LTMP+2(A6),TFPVAL(A6) 3903 3903 bra F06L149 3904 * 3905 *} else {3906 * 3907 *tfpval = pt->ipval;3908 * 3904 3905 | } else { 3906 3907 | tfpval = pt->ipval; 3908 3909 3909 F06L136: move.l PT(A6),A0 3910 3910 move 2(A0),TFPVAL(A6) 3911 * 3912 *}3913 * 3914 .page 3915 * 3916 *fpmant = (((long)pt->iptom & 0x0000FFF0L)3917 * *((long)timemlt & 0x0000FFFFL)) >> 15;3918 * 3911 3912 | } 3913 3914 .page 3915 3916 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 3917 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 3918 3919 3919 F06L149: move.l PT(A6),A0 3920 3920 move.w (A0),D0 3921 3921 move.w D0,D2 3922 andi.w # $FFF0,D03922 andi.w #0xFFF0,D0 3923 3923 move.w _timemlt,D1 3924 3924 muls D1,D0 … … 3926 3926 asr.l D1,D0 3927 3927 move D0,R_FPMANT 3928 * 3929 *fpexp = expbit[pt->iptim & 0x000F];3930 * 3931 and # $000F,D23928 3929 | fpexp = expbit[pt->iptim & 0x000F]; 3930 3931 and #0x000F,D2 3932 3932 move D2,A0 3933 3933 add.l A0,A0 3934 3934 add.l #_expbit,A0 3935 3935 move (A0),R_FPEXP 3936 * 3937 .page 3938 * 3939 *fp->idfpch = pch;3940 * 3936 3937 .page 3938 3939 | fp->idfpch = pch; 3940 3941 3941 F06L163: move PCH(A6),(A_FP) 3942 * 3943 *fpval = tfpval;3944 * 3942 3943 | fpval = tfpval; 3944 3945 3945 move TFPVAL(A6),R_FPVAL 3946 * 3947 .page 3948 * 3946 3947 .page 3948 3949 3949 move.b 5(A_FP),D0 3950 3950 ext.w D0 3951 3951 sub.w #1,D0 3952 3952 movea.l PT(A6),A0 3953 * 3954 *oldi = setipl(FPU_DI);3955 * 3953 3954 | oldi = setipl(FPU_DI); 3955 3956 3956 move sr,OLDI(A6) 3957 3957 move #FPU_DI,sr 3958 * 3958 3959 3959 F06L168: clr.b 10(A0) 3960 3960 add.l #12,a0 3961 3961 dbra D0,F06L168 3962 * 3963 .page 3964 * 3965 *fp->idftmd ^= I_NVBITS;3966 * 3962 3963 .page 3964 3965 | fp->idftmd ^= I_NVBITS; 3966 3967 3967 F06L165: eor.b #24,7(A_FP) 3968 * 3969 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;3970 * 3968 3969 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 3970 3971 3971 move.b 7(A_FP),R_FPCTL 3972 3972 and #28,R_FPCTL 3973 3973 or #3,R_FPCTL 3974 * 3975 *fp->idfcpt = fp->idfpt1;3976 * 3974 3975 | fp->idfcpt = fp->idfpt1; 3976 3977 3977 move.b 6(A_FP),8(A_FP) 3978 * 3979 *fp->idftmd |= I_ACTIVE;3980 * 3978 3979 | fp->idftmd |= I_ACTIVE; 3980 3981 3981 or.b #2,7(A_FP) 3982 * 3983 *fp->idftrf = trg;3984 * 3982 3983 | fp->idftrf = trg; 3984 3985 3985 move TRG(A6),10(A_FP) 3986 * 3987 * *(fpu + (long)FPU_TCV1) = srcval;3988 * 3989 move SRCVAL(A6), $8(A_FPU)3990 * 3991 *++octype;3992 * 3986 3987 | |(fpu + (long)FPU_TCV1) = srcval; 3988 3989 move SRCVAL(A6),0x8(A_FPU) 3990 3991 | ++octype; 3992 3993 3993 add #1,OCTYPE(A6) 3994 * 3995 * *(fpu + (long)FPU_TSF1) = mltval;3996 * 3997 move MLTVAL(A6), $A(A_FPU)3998 * 3999 *++octype;4000 * 3994 3995 | |(fpu + (long)FPU_TSF1) = mltval; 3996 3997 move MLTVAL(A6),0xA(A_FPU) 3998 3999 | ++octype; 4000 4001 4001 add #1,OCTYPE(A6) 4002 * 4003 * *(fpu + (long)FPU_TMNT) = fpmant;4004 * 4005 move R_FPMANT, $14(A_FPU)4006 * 4007 *++octype;4008 * 4002 4003 | |(fpu + (long)FPU_TMNT) = fpmant; 4004 4005 move R_FPMANT,0x14(A_FPU) 4006 4007 | ++octype; 4008 4009 4009 add #1,OCTYPE(A6) 4010 * 4011 * *(fpu + (long)FPU_TEXP) = fpexp;4012 * 4013 move R_FPEXP, $16(A_FPU)4014 * 4015 *++octype;4016 * 4010 4011 | |(fpu + (long)FPU_TEXP) = fpexp; 4012 4013 move R_FPEXP,0x16(A_FPU) 4014 4015 | ++octype; 4016 4017 4017 add #1,OCTYPE(A6) 4018 * 4019 .page 4020 * 4021 *if (fp->idftmd & I_VNSUBN)4022 * 4018 4019 .page 4020 4021 | if (fp->idftmd & I_VNSUBN) 4022 4023 4023 btst #3,7(A_FP) 4024 4024 beq F06L169 4025 * 4026 * *(fpu + (long)FPU_TNV1) = fpval;4027 * 4028 move R_FPVAL, $1C(A_FPU)4025 4026 | |(fpu + (long)FPU_TNV1) = fpval; 4027 4028 move R_FPVAL,0x1C(A_FPU) 4029 4029 bra F06L170 4030 * 4031 *else4032 * *(fpu + (long)FPU_TNV0) = fpval;4033 * 4030 4031 | else 4032 | |(fpu + (long)FPU_TNV0) = fpval; 4033 4034 4034 F06L169: move R_FPVAL,2(A_FPU) 4035 * 4036 *++octype;4037 * 4035 4036 | ++octype; 4037 4038 4038 F06L170: add #1,OCTYPE(A6) 4039 * 4040 * *(fpu + (long)FPU_TCTL) = fpctl;4041 * 4039 4040 | |(fpu + (long)FPU_TCTL) = fpctl; 4041 4042 4042 move R_FPCTL,(A_FPU) 4043 * 4044 *setipl(oldi);4045 * 4043 4044 | setipl(oldi); 4045 4046 4046 move OLDI(A6),sr 4047 * 4048 .page 4049 *------------------------------------------------------------------------------4050 *Start function 7 -- Ind 24051 *------------------------------------------------------------------------------4052 * 4053 *if (ip->idhfnc[7].idftmd & I_TM_KEY) {4054 * 4047 4048 .page 4049 | ------------------------------------------------------------------------------ 4050 | Start function 7 -- Ind 2 4051 | ------------------------------------------------------------------------------ 4052 4053 | if (ip->idhfnc[7].idftmd & I_TM_KEY) { 4054 4055 4055 FN07: move.l IP(A6),A0 4056 4056 move.b 177(A0),D0 … … 4059 4059 btst #0,D0 4060 4060 bne FN07A 4061 * 4061 4062 4062 jmp FN08 4063 * 4064 *vp = (vce << 4) + 11;4065 * 4063 4064 | vp = (vce << 4) + 11; 4065 4066 4066 FN07A: move VCE(A6),D0 4067 4067 asl #4,D0 4068 4068 add.w #11,D0 4069 4069 move D0,VP(A6) 4070 * 4071 *fpu = io_fpu + FPU_OFNC + (vp << 4);4072 * 4070 4071 | fpu = io_fpu + FPU_OFNC + (vp << 4); 4072 4073 4073 asl #5,D0 4074 4074 ext.l D0 4075 4075 move.l D0,A_FPU 4076 add.l #_io_fpu+ $4000,A_FPU4077 * 4078 *fp = &ip->idhfnc[7];4079 * 4076 add.l #_io_fpu+0x4000,A_FPU 4077 4078 | fp = &ip->idhfnc[7]; 4079 4080 4080 move.l #84,A_FP 4081 4081 add.l IP(A6),A_FP 4082 4082 add.l #86,A_FP 4083 * 4084 *pt = &ip->idhpnt[fp->idfpt1];4085 * 4083 4084 | pt = &ip->idhpnt[fp->idfpt1]; 4085 4086 4086 clr.l D0 4087 4087 move.b 6(A_FP),D0 … … 4093 4093 add.l #242,D0 4094 4094 move.l D0,PT(A6) 4095 * 4096 .page 4097 * 4098 *srcnum = group | fp->idfsrc;4099 * 4095 4096 .page 4097 4098 | srcnum = group | fp->idfsrc; 4099 4100 4100 move.w GROUP(A6),D0 4101 4101 ext.l D0 … … 4104 4104 or D1,D0 4105 4105 move D0,SRCNUM(A6) 4106 * 4107 *vep = &valents[srcnum];4108 * 4106 4107 | vep = &valents[srcnum]; 4108 4109 4109 add.l D0,D0 4110 4110 move.l D0,D1 … … 4113 4113 add.l #_valents,D0 4114 4114 move.l D0,VEP(A6) 4115 * 4116 *smp = vpsms[vp];4117 * 4115 4116 | smp = vpsms[vp]; 4117 4118 4118 move VP(A6),A0 4119 4119 add.l A0,A0 … … 4121 4121 add.l #_vpsms,A0 4122 4122 move.l (A0),A_SMP 4123 * 4124 *if (srcnum NE smp->sm) {4125 * 4123 4124 | if (srcnum NE smp->sm) { 4125 4126 4126 clr D0 4127 4127 move 10(A_SMP),D0 4128 4128 cmp SRCNUM(A6),D0 4129 4129 beq F07L113 4130 * 4131 *(smp->prv)->nxt = smp->nxt;4132 * 4130 4131 | (smp->prv)->nxt = smp->nxt; 4132 4133 4133 move.l 4(A_SMP),A0 4134 4134 move.l (A_SMP),(A0) 4135 * 4136 *(smp->nxt)->prv = smp->prv;4137 * 4135 4136 | (smp->nxt)->prv = smp->prv; 4137 4138 4138 move.l (A_SMP),A0 4139 4139 move.l 4(A_SMP),4(A0) 4140 * 4141 * smp->prv = (struct sment *)vep;4142 * 4140 4141 | smp->prv = (struct sment |)vep; 4142 4143 4143 move.l VEP(A6),4(A_SMP) 4144 * 4145 *smp->nxt = vep->nxt;4146 * 4144 4145 | smp->nxt = vep->nxt; 4146 4147 4147 move.l VEP(A6),A0 4148 4148 move.l (A0),(A_SMP) 4149 * 4150 *(vep->nxt)->prv = smp;4151 * 4149 4150 | (vep->nxt)->prv = smp; 4151 4152 4152 move.l VEP(A6),A0 4153 4153 move.l (A0),A0 4154 4154 move.l A_SMP,4(A0) 4155 * 4156 *vep->nxt = smp;4157 * 4155 4156 | vep->nxt = smp; 4157 4158 4158 move.l VEP(A6),A0 4159 4159 move.l A_SMP,(A0) 4160 * 4161 *smp->sm = srcnum;4162 * 4160 4161 | smp->sm = srcnum; 4162 4163 4163 move SRCNUM(A6),10(A_SMP) 4164 * 4165 *}4166 * 4167 *mltval = fp->idfmlt;4168 * 4164 4165 | } 4166 4167 | mltval = fp->idfmlt; 4168 4169 4169 F07L113: move 2(A_FP),MLTVAL(A6) 4170 * 4171 .page 4172 * 4173 *switch (fp->idfsrc) {4174 * 4170 4171 .page 4172 4173 | switch (fp->idfsrc) { 4174 4175 4175 move.b 4(A_FP),D0 4176 4176 ext.w d0 4177 4177 cmp #10,D0 4178 4178 bhi F07L122 4179 * 4179 4180 4180 asl #2,D0 4181 4181 lea F07L123,A0 4182 4182 movea.l 0(A0,D0.W),A0 4183 4183 jmp (A0) 4184 * 4185 *case SM_NONE:4186 *mltval = 0;4187 * 4184 4185 | case SM_NONE: 4186 | mltval = 0; 4187 4188 4188 F07L116: clr MLTVAL(A6) 4189 * 4190 *tsrcval = 0;4191 * 4189 4190 | tsrcval = 0; 4191 4192 4192 clr TSRCVAL(A6) 4193 * 4194 *break;4195 * 4193 4194 | break; 4195 4196 4196 bra F07L114 4197 * 4198 *case SM_RAND:4199 *tsrcval = xgetran(mltval);4200 * 4197 4198 | case SM_RAND: 4199 | tsrcval = xgetran(mltval); 4200 4201 4201 F07L117: move MLTVAL(A6),(sp) 4202 4202 jsr _xgetran 4203 4203 move D0,TSRCVAL(A6) 4204 * 4205 *break;4206 * 4204 4205 | break; 4206 4207 4207 bra F07L114 4208 * 4209 *case SM_PTCH:4210 *tsrcval = pch;4211 * 4208 4209 | case SM_PTCH: 4210 | tsrcval = pch; 4211 4212 4212 F07L118: move PCH(A6),TSRCVAL(A6) 4213 * 4214 *break;4215 * 4213 4214 | break; 4215 4216 4216 bra F07L114 4217 * 4218 .page 4219 * 4220 *case SM_FREQ:4221 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];4222 * 4217 4218 .page 4219 4220 | case SM_FREQ: 4221 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 4222 4223 4223 F07L119: move PCH(A6),D0 4224 4224 asr #7,D0 … … 4228 4228 add.l #_ptoftab,A0 4229 4229 move (A0),TSRCVAL(A6) 4230 * 4231 *break;4232 * 4230 4231 | break; 4232 4233 4233 bra F07L114 4234 * 4235 *case SM_KVEL:4236 *tsrcval = veltab[trg];4237 * 4234 4235 | case SM_KVEL: 4236 | tsrcval = veltab[trg]; 4237 4238 4238 F07L120: move TRG(A6),A0 4239 4239 add.l A0,A0 4240 4240 add.l #_veltab,A0 4241 4241 move (A0),TSRCVAL(A6) 4242 * 4243 *break;4244 * 4242 4243 | break; 4244 4245 4245 bra F07L114 4246 * 4247 *case SM_KPRS:4248 *tsrcval = prstab[trg];4249 * 4246 4247 | case SM_KPRS: 4248 | tsrcval = prstab[trg]; 4249 4250 4250 F07L121: move TRG(A6),A0 4251 4251 add.l A0,A0 4252 4252 add.l #_prstab,A0 4253 4253 move (A0),TSRCVAL(A6) 4254 * 4255 *break;4256 * 4254 4255 | break; 4256 4257 4257 bra F07L114 4258 * 4259 *default:4260 *tsrcval = vep->val;4261 * 4258 4259 | default: 4260 | tsrcval = vep->val; 4261 4262 4262 F07L122: move.l VEP(A6),A0 4263 4263 move 8(A0),TSRCVAL(A6) 4264 * 4265 *}4266 * 4267 .page 4268 * 4269 *srcval = tsrcval;4270 * 4264 4265 | } 4266 4267 .page 4268 4269 | srcval = tsrcval; 4270 4271 4271 F07L114: move TSRCVAL(A6),SRCVAL(A6) 4272 * 4273 .page 4274 * 4275 *if (pt->ipvsrc) {4276 * 4272 4273 .page 4274 4275 | if (pt->ipvsrc) { 4276 4277 4277 F07L124: move.l PT(A6),A0 4278 4278 tst.b 6(A0) 4279 4279 beq F07L136 4280 * 4281 *switch (pt->ipvsrc) {4282 * 4280 4281 | switch (pt->ipvsrc) { 4282 4283 4283 move.l PT(A6),A0 4284 4284 move.b 6(A0),D0 … … 4287 4287 cmp #9,D0 4288 4288 bhi F07L144 4289 * 4289 4290 4290 asl #2,D0 4291 4291 lea F07L145,A0 4292 4292 move.l 0(A0,D0.W),A0 4293 4293 jmp (A0) 4294 * 4295 *case SM_RAND:4296 *ltmp = xgetran(pt_>ipvmlt);4297 * 4294 4295 | case SM_RAND: 4296 | ltmp = xgetran(pt_>ipvmlt); 4297 4298 4298 F07L139: move.l PT(A6),A0 4299 4299 move 4(A0),(sp) … … 4301 4301 ext.l D0 4302 4302 move.l D0,LTMP(A6) 4303 * 4304 *break;4305 * 4303 4304 | break; 4305 4306 4306 bra F07L137 4307 * 4308 *case SM_PTCH:4309 *ltmp = pch;4310 * 4307 4308 | case SM_PTCH: 4309 | ltmp = pch; 4310 4311 4311 F07L140: move PCH(A6),A0 4312 4312 move.l A0,LTMP(A6) 4313 * 4314 *break;4315 * 4313 4314 | break; 4315 4316 4316 bra F07L137 4317 * 4318 .page 4319 * 4320 *case SM_FREQ:4321 *ltmp = ptoftab[(pch >> 7) & 0x00FF];4322 * 4317 4318 .page 4319 4320 | case SM_FREQ: 4321 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 4322 4323 4323 F07L141: move PCH(A6),D0 4324 4324 asr #7,D0 … … 4330 4330 ext.l D0 4331 4331 move.l D0,LTMP(A6) 4332 * 4333 *break;4334 * 4332 4333 | break; 4334 4335 4335 bra F07L137 4336 * 4337 *case SM_KVEL:4338 *ltmp = veltab[trg];4339 * 4336 4337 | case SM_KVEL: 4338 | ltmp = veltab[trg]; 4339 4340 4340 F07L142: move TRG(A6),A0 4341 4341 add.l A0,A0 … … 4344 4344 ext.l D0 4345 4345 move.l D0,LTMP(A6) 4346 * 4347 *break;4348 * 4346 4347 | break; 4348 4349 4349 bra F07L137 4350 * 4351 .page 4352 * 4353 *case SM_KPRS:4354 *ltmp = prstab[trg];4355 * 4350 4351 .page 4352 4353 | case SM_KPRS: 4354 | ltmp = prstab[trg]; 4355 4356 4356 F07L143: move TRG(A6),A0 4357 4357 add.l A0,A0 … … 4360 4360 ext.l D0 4361 4361 move.l D0,LTMP(A6) 4362 * 4363 *break;4364 * 4362 4363 | break; 4364 4365 4365 bra F07L137 4366 * 4367 .page 4368 * 4369 *default:4370 *ltmp = valents[group | pt->ipvsrc].val;4371 * 4366 4367 .page 4368 4369 | default: 4370 | ltmp = valents[group | pt->ipvsrc].val; 4371 4372 4372 F07L144: move.l PT(A6),A0 4373 4373 clr.l D0 … … 4383 4383 move 8(A0,A1.l),D0 4384 4384 move.l D0,LTMP(A6) 4385 * 4386 *}4387 * 4388 * 4389 .page 4390 * 4391 * ltmp = (ltmp *pt->ipvmlt) >> 15;4392 * 4385 4386 | } 4387 4388 4389 .page 4390 4391 | ltmp = (ltmp | pt->ipvmlt) >> 15; 4392 4393 4393 F07L137: move.l PT(A6),A0 4394 4394 move.w 4(A0),D0 … … 4398 4398 asr.l D1,D0 4399 4399 move.l D0,LTMP(A6) 4400 * 4401 *ltmp += (long)pt->ipval;4402 * 4400 4401 | ltmp += (long)pt->ipval; 4402 4403 4403 move.l PT(A6),A0 4404 4404 move 2(A0),D0 4405 4405 ext.l D0 4406 4406 add.l D0,LTMP(A6) 4407 * 4408 *if (ltmp GT (long)VALMAX)4409 *ltmp = (long)VALMAX;4410 * 4407 4408 | if (ltmp GT (long)VALMAX) 4409 | ltmp = (long)VALMAX; 4410 4411 4411 cmp.l #VALMAX,LTMP(A6) 4412 4412 ble F07L146 4413 * 4413 4414 4414 move.l #VALMAX,LTMP(A6) 4415 4415 bra F07L147 4416 * 4417 *else if (ltmp LT (long)VALMIN)4418 *ltmp = (long)VALMIN;4419 * 4416 4417 | else if (ltmp LT (long)VALMIN) 4418 | ltmp = (long)VALMIN; 4419 4420 4420 F07L146: cmp.l #VALMIN,LTMP(A6) 4421 4421 bge F07L147 4422 * 4422 4423 4423 move.l #VALMIN,LTMP(A6) 4424 * 4425 *tfpval = (short)ltmp;4426 * 4424 4425 | tfpval = (short)ltmp; 4426 4427 4427 F07L147: move.w LTMP+2(A6),TFPVAL(A6) 4428 4428 bra F07L149 4429 * 4430 *} else {4431 * 4432 *tfpval = pt->ipval;4433 * 4429 4430 | } else { 4431 4432 | tfpval = pt->ipval; 4433 4434 4434 F07L136: move.l PT(A6),A0 4435 4435 move 2(A0),TFPVAL(A6) 4436 * 4437 *}4438 * 4439 .page 4440 * 4441 *fpmant = (((long)pt->iptom & 0x0000FFF0L)4442 * *((long)timemlt & 0x0000FFFFL)) >> 15;4443 * 4436 4437 | } 4438 4439 .page 4440 4441 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 4442 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 4443 4444 4444 F07L149: move.l PT(A6),A0 4445 4445 move.w (A0),D0 4446 4446 move.w D0,D2 4447 andi.w # $FFF0,D04447 andi.w #0xFFF0,D0 4448 4448 move.w _timemlt,D1 4449 4449 muls D1,D0 … … 4451 4451 asr.l D1,D0 4452 4452 move D0,R_FPMANT 4453 * 4454 *fpexp = expbit[pt->iptim & 0x000F];4455 * 4456 and # $000F,D24453 4454 | fpexp = expbit[pt->iptim & 0x000F]; 4455 4456 and #0x000F,D2 4457 4457 move D2,A0 4458 4458 add.l A0,A0 4459 4459 add.l #_expbit,A0 4460 4460 move (A0),R_FPEXP 4461 * 4462 .page 4463 * 4464 *fp->idfpch = pch;4465 * 4461 4462 .page 4463 4464 | fp->idfpch = pch; 4465 4466 4466 F07L163: move PCH(A6),(A_FP) 4467 * 4468 *fpval = tfpval;4469 * 4467 4468 | fpval = tfpval; 4469 4470 4470 move TFPVAL(A6),R_FPVAL 4471 * 4472 .page 4473 * 4471 4472 .page 4473 4474 4474 move.b 5(A_FP),D0 4475 4475 ext.w D0 4476 4476 sub.w #1,D0 4477 4477 movea.l PT(A6),A0 4478 * 4479 *oldi = setipl(FPU_DI);4480 * 4478 4479 | oldi = setipl(FPU_DI); 4480 4481 4481 move sr,OLDI(A6) 4482 4482 move #FPU_DI,sr 4483 * 4483 4484 4484 F07L168: clr.b 10(A0) 4485 4485 add.l #12,a0 4486 4486 dbra D0,F07L168 4487 * 4488 .page 4489 * 4490 *fp->idftmd ^= I_NVBITS;4491 * 4487 4488 .page 4489 4490 | fp->idftmd ^= I_NVBITS; 4491 4492 4492 F07L165: eor.b #24,7(A_FP) 4493 * 4494 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;4495 * 4493 4494 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 4495 4496 4496 move.b 7(A_FP),R_FPCTL 4497 4497 and #28,R_FPCTL 4498 4498 or #3,R_FPCTL 4499 * 4500 *fp->idfcpt = fp->idfpt1;4501 * 4499 4500 | fp->idfcpt = fp->idfpt1; 4501 4502 4502 move.b 6(A_FP),8(A_FP) 4503 * 4504 *fp->idftmd |= I_ACTIVE;4505 * 4503 4504 | fp->idftmd |= I_ACTIVE; 4505 4506 4506 or.b #2,7(A_FP) 4507 * 4508 *fp->idftrf = trg;4509 * 4507 4508 | fp->idftrf = trg; 4509 4510 4510 move TRG(A6),10(A_FP) 4511 * 4512 * *(fpu + (long)FPU_TCV1) = srcval;4513 * 4514 move SRCVAL(A6), $8(A_FPU)4515 * 4516 *++octype;4517 * 4511 4512 | |(fpu + (long)FPU_TCV1) = srcval; 4513 4514 move SRCVAL(A6),0x8(A_FPU) 4515 4516 | ++octype; 4517 4518 4518 add #1,OCTYPE(A6) 4519 * 4520 * *(fpu + (long)FPU_TSF1) = mltval;4521 * 4522 move MLTVAL(A6), $A(A_FPU)4523 * 4524 *++octype;4525 * 4519 4520 | |(fpu + (long)FPU_TSF1) = mltval; 4521 4522 move MLTVAL(A6),0xA(A_FPU) 4523 4524 | ++octype; 4525 4526 4526 add #1,OCTYPE(A6) 4527 * 4528 * *(fpu + (long)FPU_TMNT) = fpmant;4529 * 4530 move R_FPMANT, $14(A_FPU)4531 * 4532 *++octype;4533 * 4527 4528 | |(fpu + (long)FPU_TMNT) = fpmant; 4529 4530 move R_FPMANT,0x14(A_FPU) 4531 4532 | ++octype; 4533 4534 4534 add #1,OCTYPE(A6) 4535 * 4536 * *(fpu + (long)FPU_TEXP) = fpexp;4537 * 4538 move R_FPEXP, $16(A_FPU)4539 * 4540 *++octype;4541 * 4535 4536 | |(fpu + (long)FPU_TEXP) = fpexp; 4537 4538 move R_FPEXP,0x16(A_FPU) 4539 4540 | ++octype; 4541 4542 4542 add #1,OCTYPE(A6) 4543 * 4544 .page 4545 * 4546 *if (fp->idftmd & I_VNSUBN)4547 * 4543 4544 .page 4545 4546 | if (fp->idftmd & I_VNSUBN) 4547 4548 4548 btst #3,7(A_FP) 4549 4549 beq F07L169 4550 * 4551 * *(fpu + (long)FPU_TNV1) = fpval;4552 * 4553 move R_FPVAL, $1C(A_FPU)4550 4551 | |(fpu + (long)FPU_TNV1) = fpval; 4552 4553 move R_FPVAL,0x1C(A_FPU) 4554 4554 bra F07L170 4555 * 4556 *else4557 * *(fpu + (long)FPU_TNV0) = fpval;4558 * 4555 4556 | else 4557 | |(fpu + (long)FPU_TNV0) = fpval; 4558 4559 4559 F07L169: move R_FPVAL,2(A_FPU) 4560 * 4561 *++octype;4562 * 4560 4561 | ++octype; 4562 4563 4563 F07L170: add #1,OCTYPE(A6) 4564 * 4565 * *(fpu + (long)FPU_TCTL) = fpctl;4566 * 4564 4565 | |(fpu + (long)FPU_TCTL) = fpctl; 4566 4567 4567 move R_FPCTL,(A_FPU) 4568 * 4569 *setipl(oldi);4570 * 4568 4569 | setipl(oldi); 4570 4571 4571 move OLDI(A6),sr 4572 * 4573 .page 4574 *------------------------------------------------------------------------------4575 *Start function 8 -- Ind 34576 *------------------------------------------------------------------------------4577 * 4578 *if (ip->idhfnc[8].idftmd & I_TM_KEY) {4579 * 4572 4573 .page 4574 | ------------------------------------------------------------------------------ 4575 | Start function 8 -- Ind 3 4576 | ------------------------------------------------------------------------------ 4577 4578 | if (ip->idhfnc[8].idftmd & I_TM_KEY) { 4579 4580 4580 FN08: move.l IP(A6),A0 4581 4581 move.b 189(A0),D0 … … 4584 4584 btst #0,D0 4585 4585 bne FN08A 4586 * 4586 4587 4587 jmp FN09 4588 * 4589 *vp = (vce << 4) + 12;4590 * 4588 4589 | vp = (vce << 4) + 12; 4590 4591 4591 FN08A: move VCE(A6),D0 4592 4592 asl #4,D0 4593 4593 add.w #12,D0 4594 4594 move D0,VP(A6) 4595 * 4596 *fpu = io_fpu + FPU_OFNC + (vp << 4);4597 * 4595 4596 | fpu = io_fpu + FPU_OFNC + (vp << 4); 4597 4598 4598 asl #5,D0 4599 4599 ext.l D0 4600 4600 move.l D0,A_FPU 4601 add.l #_io_fpu+ $4000,A_FPU4602 * 4603 *fp = &ip->idhfnc[8];4604 * 4601 add.l #_io_fpu+0x4000,A_FPU 4602 4603 | fp = &ip->idhfnc[8]; 4604 4605 4605 move.l #96,A_FP 4606 4606 add.l IP(A6),A_FP 4607 4607 add.l #86,A_FP 4608 * 4609 *pt = &ip->idhpnt[fp->idfpt1];4610 * 4608 4609 | pt = &ip->idhpnt[fp->idfpt1]; 4610 4611 4611 clr.l D0 4612 4612 move.b 6(A_FP),D0 … … 4618 4618 add.l #242,D0 4619 4619 move.l D0,PT(A6) 4620 * 4621 .page 4622 * 4623 *srcnum = group | fp->idfsrc;4624 * 4620 4621 .page 4622 4623 | srcnum = group | fp->idfsrc; 4624 4625 4625 move.w GROUP(A6),D0 4626 4626 ext.l D0 … … 4629 4629 or D1,D0 4630 4630 move D0,SRCNUM(A6) 4631 * 4632 *vep = &valents[srcnum];4633 * 4631 4632 | vep = &valents[srcnum]; 4633 4634 4634 add.l D0,D0 4635 4635 move.l D0,D1 … … 4638 4638 add.l #_valents,D0 4639 4639 move.l D0,VEP(A6) 4640 * 4641 *smp = vpsms[vp];4642 * 4640 4641 | smp = vpsms[vp]; 4642 4643 4643 move VP(A6),A0 4644 4644 add.l A0,A0 … … 4646 4646 add.l #_vpsms,A0 4647 4647 move.l (A0),A_SMP 4648 * 4649 *if (srcnum NE smp->sm) {4650 * 4648 4649 | if (srcnum NE smp->sm) { 4650 4651 4651 clr D0 4652 4652 move 10(A_SMP),D0 4653 4653 cmp SRCNUM(A6),D0 4654 4654 beq F08L113 4655 * 4656 *(smp->prv)->nxt = smp->nxt;4657 * 4655 4656 | (smp->prv)->nxt = smp->nxt; 4657 4658 4658 move.l 4(A_SMP),A0 4659 4659 move.l (A_SMP),(A0) 4660 * 4661 *(smp->nxt)->prv = smp->prv;4662 * 4660 4661 | (smp->nxt)->prv = smp->prv; 4662 4663 4663 move.l (A_SMP),A0 4664 4664 move.l 4(A_SMP),4(A0) 4665 * 4666 * smp->prv = (struct sment *)vep;4667 * 4665 4666 | smp->prv = (struct sment |)vep; 4667 4668 4668 move.l VEP(A6),4(A_SMP) 4669 * 4670 *smp->nxt = vep->nxt;4671 * 4669 4670 | smp->nxt = vep->nxt; 4671 4672 4672 move.l VEP(A6),A0 4673 4673 move.l (A0),(A_SMP) 4674 * 4675 *(vep->nxt)->prv = smp;4676 * 4674 4675 | (vep->nxt)->prv = smp; 4676 4677 4677 move.l VEP(A6),A0 4678 4678 move.l (A0),A0 4679 4679 move.l A_SMP,4(A0) 4680 * 4681 *vep->nxt = smp;4682 * 4680 4681 | vep->nxt = smp; 4682 4683 4683 move.l VEP(A6),A0 4684 4684 move.l A_SMP,(A0) 4685 * 4686 *smp->sm = srcnum;4687 * 4685 4686 | smp->sm = srcnum; 4687 4688 4688 move SRCNUM(A6),10(A_SMP) 4689 * 4690 *}4691 * 4692 *mltval = fp->idfmlt;4693 * 4689 4690 | } 4691 4692 | mltval = fp->idfmlt; 4693 4694 4694 F08L113: move 2(A_FP),MLTVAL(A6) 4695 * 4696 .page 4697 * 4698 *switch (fp->idfsrc) {4699 * 4695 4696 .page 4697 4698 | switch (fp->idfsrc) { 4699 4700 4700 move.b 4(A_FP),D0 4701 4701 ext.w d0 4702 4702 cmp #10,D0 4703 4703 bhi F08L122 4704 * 4704 4705 4705 asl #2,D0 4706 4706 lea F08L123,A0 4707 4707 movea.l 0(A0,D0.W),A0 4708 4708 jmp (A0) 4709 * 4710 *case SM_NONE:4711 *mltval = 0;4712 * 4709 4710 | case SM_NONE: 4711 | mltval = 0; 4712 4713 4713 F08L116: clr MLTVAL(A6) 4714 * 4715 *tsrcval = 0;4716 * 4714 4715 | tsrcval = 0; 4716 4717 4717 clr TSRCVAL(A6) 4718 * 4719 *break;4720 * 4718 4719 | break; 4720 4721 4721 bra F08L114 4722 * 4723 *case SM_RAND:4724 *tsrcval = xgetran(mltval);4725 * 4722 4723 | case SM_RAND: 4724 | tsrcval = xgetran(mltval); 4725 4726 4726 F08L117: move MLTVAL(A6),(sp) 4727 4727 jsr _xgetran 4728 4728 move D0,TSRCVAL(A6) 4729 * 4730 *break;4731 * 4729 4730 | break; 4731 4732 4732 bra F08L114 4733 * 4734 *case SM_PTCH:4735 *tsrcval = pch;4736 * 4733 4734 | case SM_PTCH: 4735 | tsrcval = pch; 4736 4737 4737 F08L118: move PCH(A6),TSRCVAL(A6) 4738 * 4739 *break;4740 * 4738 4739 | break; 4740 4741 4741 bra F08L114 4742 * 4743 .page 4744 * 4745 *case SM_FREQ:4746 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];4747 * 4742 4743 .page 4744 4745 | case SM_FREQ: 4746 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 4747 4748 4748 F08L119: move PCH(A6),D0 4749 4749 asr #7,D0 … … 4753 4753 add.l #_ptoftab,A0 4754 4754 move (A0),TSRCVAL(A6) 4755 * 4756 *break;4757 * 4755 4756 | break; 4757 4758 4758 bra F08L114 4759 * 4760 *case SM_KVEL:4761 *tsrcval = veltab[trg];4762 * 4759 4760 | case SM_KVEL: 4761 | tsrcval = veltab[trg]; 4762 4763 4763 F08L120: move TRG(A6),A0 4764 4764 add.l A0,A0 4765 4765 add.l #_veltab,A0 4766 4766 move (A0),TSRCVAL(A6) 4767 * 4768 *break;4769 * 4767 4768 | break; 4769 4770 4770 bra F08L114 4771 * 4772 *case SM_KPRS:4773 *tsrcval = prstab[trg];4774 * 4771 4772 | case SM_KPRS: 4773 | tsrcval = prstab[trg]; 4774 4775 4775 F08L121: move TRG(A6),A0 4776 4776 add.l A0,A0 4777 4777 add.l #_prstab,A0 4778 4778 move (A0),TSRCVAL(A6) 4779 * 4780 *break;4781 * 4779 4780 | break; 4781 4782 4782 bra F08L114 4783 * 4784 *default:4785 *tsrcval = vep->val;4786 * 4783 4784 | default: 4785 | tsrcval = vep->val; 4786 4787 4787 F08L122: move.l VEP(A6),A0 4788 4788 move 8(A0),TSRCVAL(A6) 4789 * 4790 *}4791 * 4792 .page 4793 * 4794 *srcval = tsrcval;4795 * 4789 4790 | } 4791 4792 .page 4793 4794 | srcval = tsrcval; 4795 4796 4796 F08L114: move TSRCVAL(A6),SRCVAL(A6) 4797 * 4798 .page 4799 * 4800 *if (pt->ipvsrc) {4801 * 4797 4798 .page 4799 4800 | if (pt->ipvsrc) { 4801 4802 4802 F08L124: move.l PT(A6),A0 4803 4803 tst.b 6(A0) 4804 4804 beq F08L136 4805 * 4806 *switch (pt->ipvsrc) {4807 * 4805 4806 | switch (pt->ipvsrc) { 4807 4808 4808 move.l PT(A6),A0 4809 4809 move.b 6(A0),D0 … … 4812 4812 cmp #9,D0 4813 4813 bhi F08L144 4814 * 4814 4815 4815 asl #2,D0 4816 4816 lea F08L145,A0 4817 4817 move.l 0(A0,D0.W),A0 4818 4818 jmp (A0) 4819 * 4820 *case SM_RAND:4821 *ltmp = xgetran(pt_>ipvmlt);4822 * 4819 4820 | case SM_RAND: 4821 | ltmp = xgetran(pt_>ipvmlt); 4822 4823 4823 F08L139: move.l PT(A6),A0 4824 4824 move 4(A0),(sp) … … 4826 4826 ext.l D0 4827 4827 move.l D0,LTMP(A6) 4828 * 4829 *break;4830 * 4828 4829 | break; 4830 4831 4831 bra F08L137 4832 * 4833 *case SM_PTCH:4834 *ltmp = pch;4835 * 4832 4833 | case SM_PTCH: 4834 | ltmp = pch; 4835 4836 4836 F08L140: move PCH(A6),A0 4837 4837 move.l A0,LTMP(A6) 4838 * 4839 *break;4840 * 4838 4839 | break; 4840 4841 4841 bra F08L137 4842 * 4843 .page 4844 * 4845 *case SM_FREQ:4846 *ltmp = ptoftab[(pch >> 7) & 0x00FF];4847 * 4842 4843 .page 4844 4845 | case SM_FREQ: 4846 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 4847 4848 4848 F08L141: move PCH(A6),D0 4849 4849 asr #7,D0 … … 4855 4855 ext.l D0 4856 4856 move.l D0,LTMP(A6) 4857 * 4858 *break;4859 * 4857 4858 | break; 4859 4860 4860 bra F08L137 4861 * 4862 *case SM_KVEL:4863 *ltmp = veltab[trg];4864 * 4861 4862 | case SM_KVEL: 4863 | ltmp = veltab[trg]; 4864 4865 4865 F08L142: move TRG(A6),A0 4866 4866 add.l A0,A0 … … 4869 4869 ext.l D0 4870 4870 move.l D0,LTMP(A6) 4871 * 4872 *break;4873 * 4871 4872 | break; 4873 4874 4874 bra F08L137 4875 * 4876 .page 4877 * 4878 *case SM_KPRS:4879 *ltmp = prstab[trg];4880 * 4875 4876 .page 4877 4878 | case SM_KPRS: 4879 | ltmp = prstab[trg]; 4880 4881 4881 F08L143: move TRG(A6),A0 4882 4882 add.l A0,A0 … … 4885 4885 ext.l D0 4886 4886 move.l D0,LTMP(A6) 4887 * 4888 *break;4889 * 4887 4888 | break; 4889 4890 4890 bra F08L137 4891 * 4892 .page 4893 * 4894 *default:4895 *ltmp = valents[group | pt->ipvsrc].val;4896 * 4891 4892 .page 4893 4894 | default: 4895 | ltmp = valents[group | pt->ipvsrc].val; 4896 4897 4897 F08L144: move.l PT(A6),A0 4898 4898 clr.l D0 … … 4908 4908 move 8(A0,A1.l),D0 4909 4909 move.l D0,LTMP(A6) 4910 * 4911 *}4912 * 4913 * 4914 .page 4915 * 4916 * ltmp = (ltmp *pt->ipvmlt) >> 15;4917 * 4910 4911 | } 4912 4913 4914 .page 4915 4916 | ltmp = (ltmp | pt->ipvmlt) >> 15; 4917 4918 4918 F08L137: move.l PT(A6),A0 4919 4919 move.w 4(A0),D0 … … 4923 4923 asr.l D1,D0 4924 4924 move.l D0,LTMP(A6) 4925 * 4926 *ltmp += (long)pt->ipval;4927 * 4925 4926 | ltmp += (long)pt->ipval; 4927 4928 4928 move.l PT(A6),A0 4929 4929 move 2(A0),D0 4930 4930 ext.l D0 4931 4931 add.l D0,LTMP(A6) 4932 * 4933 *if (ltmp GT (long)VALMAX)4934 *ltmp = (long)VALMAX;4935 * 4932 4933 | if (ltmp GT (long)VALMAX) 4934 | ltmp = (long)VALMAX; 4935 4936 4936 cmp.l #VALMAX,LTMP(A6) 4937 4937 ble F08L146 4938 * 4938 4939 4939 move.l #VALMAX,LTMP(A6) 4940 4940 bra F08L147 4941 * 4942 *else if (ltmp LT (long)VALMIN)4943 *ltmp = (long)VALMIN;4944 * 4941 4942 | else if (ltmp LT (long)VALMIN) 4943 | ltmp = (long)VALMIN; 4944 4945 4945 F08L146: cmp.l #VALMIN,LTMP(A6) 4946 4946 bge F08L147 4947 * 4947 4948 4948 move.l #VALMIN,LTMP(A6) 4949 * 4950 *tfpval = (short)ltmp;4951 * 4949 4950 | tfpval = (short)ltmp; 4951 4952 4952 F08L147: move.w LTMP+2(A6),TFPVAL(A6) 4953 4953 bra F08L149 4954 * 4955 *} else {4956 * 4957 *tfpval = pt->ipval;4958 * 4954 4955 | } else { 4956 4957 | tfpval = pt->ipval; 4958 4959 4959 F08L136: move.l PT(A6),A0 4960 4960 move 2(A0),TFPVAL(A6) 4961 * 4962 *}4963 * 4964 .page 4965 * 4966 *fpmant = (((long)pt->iptom & 0x0000FFF0L)4967 * *((long)timemlt & 0x0000FFFFL)) >> 15;4968 * 4961 4962 | } 4963 4964 .page 4965 4966 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 4967 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 4968 4969 4969 F08L149: move.l PT(A6),A0 4970 4970 move.w (A0),D0 4971 4971 move.w D0,D2 4972 andi.w # $FFF0,D04972 andi.w #0xFFF0,D0 4973 4973 move.w _timemlt,D1 4974 4974 muls D1,D0 … … 4976 4976 asr.l D1,D0 4977 4977 move D0,R_FPMANT 4978 * 4979 *fpexp = expbit[pt->iptim & 0x000F];4980 * 4981 and # $000F,D24978 4979 | fpexp = expbit[pt->iptim & 0x000F]; 4980 4981 and #0x000F,D2 4982 4982 move D2,A0 4983 4983 add.l A0,A0 4984 4984 add.l #_expbit,A0 4985 4985 move (A0),R_FPEXP 4986 * 4987 .page 4988 * 4989 *fp->idfpch = pch;4990 * 4986 4987 .page 4988 4989 | fp->idfpch = pch; 4990 4991 4991 F08L163: move PCH(A6),(A_FP) 4992 * 4993 *fpval = tfpval;4994 * 4992 4993 | fpval = tfpval; 4994 4995 4995 move TFPVAL(A6),R_FPVAL 4996 * 4997 .page 4998 * 4996 4997 .page 4998 4999 4999 move.b 5(A_FP),D0 5000 5000 ext.w D0 5001 5001 sub.w #1,D0 5002 5002 movea.l PT(A6),A0 5003 * 5004 *oldi = setipl(FPU_DI);5005 * 5003 5004 | oldi = setipl(FPU_DI); 5005 5006 5006 move sr,OLDI(A6) 5007 5007 move #FPU_DI,sr 5008 * 5008 5009 5009 F08L168: clr.b 10(A0) 5010 5010 add.l #12,a0 5011 5011 dbra D0,F08L168 5012 * 5013 .page 5014 * 5015 *fp->idftmd ^= I_NVBITS;5016 * 5012 5013 .page 5014 5015 | fp->idftmd ^= I_NVBITS; 5016 5017 5017 F08L165: eor.b #24,7(A_FP) 5018 * 5019 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;5020 * 5018 5019 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 5020 5021 5021 move.b 7(A_FP),R_FPCTL 5022 5022 and #28,R_FPCTL 5023 5023 or #3,R_FPCTL 5024 * 5025 *fp->idfcpt = fp->idfpt1;5026 * 5024 5025 | fp->idfcpt = fp->idfpt1; 5026 5027 5027 move.b 6(A_FP),8(A_FP) 5028 * 5029 *fp->idftmd |= I_ACTIVE;5030 * 5028 5029 | fp->idftmd |= I_ACTIVE; 5030 5031 5031 or.b #2,7(A_FP) 5032 * 5033 *fp->idftrf = trg;5034 * 5032 5033 | fp->idftrf = trg; 5034 5035 5035 move TRG(A6),10(A_FP) 5036 * 5037 * *(fpu + (long)FPU_TCV1) = srcval;5038 * 5039 move SRCVAL(A6), $8(A_FPU)5040 * 5041 *++octype;5042 * 5036 5037 | |(fpu + (long)FPU_TCV1) = srcval; 5038 5039 move SRCVAL(A6),0x8(A_FPU) 5040 5041 | ++octype; 5042 5043 5043 add #1,OCTYPE(A6) 5044 * 5045 * *(fpu + (long)FPU_TSF1) = mltval;5046 * 5047 move MLTVAL(A6), $A(A_FPU)5048 * 5049 *++octype;5050 * 5044 5045 | |(fpu + (long)FPU_TSF1) = mltval; 5046 5047 move MLTVAL(A6),0xA(A_FPU) 5048 5049 | ++octype; 5050 5051 5051 add #1,OCTYPE(A6) 5052 * 5053 * *(fpu + (long)FPU_TMNT) = fpmant;5054 * 5055 move R_FPMANT, $14(A_FPU)5056 * 5057 *++octype;5058 * 5052 5053 | |(fpu + (long)FPU_TMNT) = fpmant; 5054 5055 move R_FPMANT,0x14(A_FPU) 5056 5057 | ++octype; 5058 5059 5059 add #1,OCTYPE(A6) 5060 * 5061 * *(fpu + (long)FPU_TEXP) = fpexp;5062 * 5063 move R_FPEXP, $16(A_FPU)5064 * 5065 *++octype;5066 * 5060 5061 | |(fpu + (long)FPU_TEXP) = fpexp; 5062 5063 move R_FPEXP,0x16(A_FPU) 5064 5065 | ++octype; 5066 5067 5067 add #1,OCTYPE(A6) 5068 * 5069 .page 5070 * 5071 *if (fp->idftmd & I_VNSUBN)5072 * 5068 5069 .page 5070 5071 | if (fp->idftmd & I_VNSUBN) 5072 5073 5073 btst #3,7(A_FP) 5074 5074 beq F08L169 5075 * 5076 * *(fpu + (long)FPU_TNV1) = fpval;5077 * 5078 move R_FPVAL, $1C(A_FPU)5075 5076 | |(fpu + (long)FPU_TNV1) = fpval; 5077 5078 move R_FPVAL,0x1C(A_FPU) 5079 5079 bra F08L170 5080 * 5081 *else5082 * *(fpu + (long)FPU_TNV0) = fpval;5083 * 5080 5081 | else 5082 | |(fpu + (long)FPU_TNV0) = fpval; 5083 5084 5084 F08L169: move R_FPVAL,2(A_FPU) 5085 * 5086 *++octype;5087 * 5085 5086 | ++octype; 5087 5088 5088 F08L170: add #1,OCTYPE(A6) 5089 * 5090 * *(fpu + (long)FPU_TCTL) = fpctl;5091 * 5089 5090 | |(fpu + (long)FPU_TCTL) = fpctl; 5091 5092 5092 move R_FPCTL,(A_FPU) 5093 * 5094 *setipl(oldi);5095 * 5093 5094 | setipl(oldi); 5095 5096 5096 move OLDI(A6),sr 5097 * 5098 .page 5099 *------------------------------------------------------------------------------5100 *Start function 9 -- Ind 45101 *------------------------------------------------------------------------------5102 * 5103 *if (ip->idhfnc[9].idftmd & I_TM_KEY) {5104 * 5097 5098 .page 5099 | ------------------------------------------------------------------------------ 5100 | Start function 9 -- Ind 4 5101 | ------------------------------------------------------------------------------ 5102 5103 | if (ip->idhfnc[9].idftmd & I_TM_KEY) { 5104 5105 5105 FN09: move.l IP(A6),A0 5106 5106 move.b 201(A0),D0 … … 5109 5109 btst #0,D0 5110 5110 bne FN09A 5111 * 5111 5112 5112 jmp FN10 5113 * 5114 *vp = (vce << 4) + 13;5115 * 5113 5114 | vp = (vce << 4) + 13; 5115 5116 5116 FN09A: move VCE(A6),D0 5117 5117 asl #4,D0 5118 5118 add.w #13,D0 5119 5119 move D0,VP(A6) 5120 * 5121 *fpu = io_fpu + FPU_OFNC + (vp << 4);5122 * 5120 5121 | fpu = io_fpu + FPU_OFNC + (vp << 4); 5122 5123 5123 asl #5,D0 5124 5124 ext.l D0 5125 5125 move.l D0,A_FPU 5126 add.l #_io_fpu+ $4000,A_FPU5127 * 5128 *fp = &ip->idhfnc[9];5129 * 5126 add.l #_io_fpu+0x4000,A_FPU 5127 5128 | fp = &ip->idhfnc[9]; 5129 5130 5130 move.l #108,A_FP 5131 5131 add.l IP(A6),A_FP 5132 5132 add.l #86,A_FP 5133 * 5134 *pt = &ip->idhpnt[fp->idfpt1];5135 * 5133 5134 | pt = &ip->idhpnt[fp->idfpt1]; 5135 5136 5136 clr.l D0 5137 5137 move.b 6(A_FP),D0 … … 5143 5143 add.l #242,D0 5144 5144 move.l D0,PT(A6) 5145 * 5146 .page 5147 * 5148 *srcnum = group | fp->idfsrc;5149 * 5145 5146 .page 5147 5148 | srcnum = group | fp->idfsrc; 5149 5150 5150 move.w GROUP(A6),D0 5151 5151 ext.l D0 … … 5154 5154 or D1,D0 5155 5155 move D0,SRCNUM(A6) 5156 * 5157 *vep = &valents[srcnum];5158 * 5156 5157 | vep = &valents[srcnum]; 5158 5159 5159 add.l D0,D0 5160 5160 move.l D0,D1 … … 5163 5163 add.l #_valents,D0 5164 5164 move.l D0,VEP(A6) 5165 * 5166 *smp = vpsms[vp];5167 * 5165 5166 | smp = vpsms[vp]; 5167 5168 5168 move VP(A6),A0 5169 5169 add.l A0,A0 … … 5171 5171 add.l #_vpsms,A0 5172 5172 move.l (A0),A_SMP 5173 * 5174 *if (srcnum NE smp->sm) {5175 * 5173 5174 | if (srcnum NE smp->sm) { 5175 5176 5176 clr D0 5177 5177 move 10(A_SMP),D0 5178 5178 cmp SRCNUM(A6),D0 5179 5179 beq F09L113 5180 * 5181 *(smp->prv)->nxt = smp->nxt;5182 * 5180 5181 | (smp->prv)->nxt = smp->nxt; 5182 5183 5183 move.l 4(A_SMP),A0 5184 5184 move.l (A_SMP),(A0) 5185 * 5186 *(smp->nxt)->prv = smp->prv;5187 * 5185 5186 | (smp->nxt)->prv = smp->prv; 5187 5188 5188 move.l (A_SMP),A0 5189 5189 move.l 4(A_SMP),4(A0) 5190 * 5191 * smp->prv = (struct sment *)vep;5192 * 5190 5191 | smp->prv = (struct sment |)vep; 5192 5193 5193 move.l VEP(A6),4(A_SMP) 5194 * 5195 *smp->nxt = vep->nxt;5196 * 5194 5195 | smp->nxt = vep->nxt; 5196 5197 5197 move.l VEP(A6),A0 5198 5198 move.l (A0),(A_SMP) 5199 * 5200 *(vep->nxt)->prv = smp;5201 * 5199 5200 | (vep->nxt)->prv = smp; 5201 5202 5202 move.l VEP(A6),A0 5203 5203 move.l (A0),A0 5204 5204 move.l A_SMP,4(A0) 5205 * 5206 *vep->nxt = smp;5207 * 5205 5206 | vep->nxt = smp; 5207 5208 5208 move.l VEP(A6),A0 5209 5209 move.l A_SMP,(A0) 5210 * 5211 *smp->sm = srcnum;5212 * 5210 5211 | smp->sm = srcnum; 5212 5213 5213 move SRCNUM(A6),10(A_SMP) 5214 * 5215 *}5216 * 5217 *mltval = fp->idfmlt;5218 * 5214 5215 | } 5216 5217 | mltval = fp->idfmlt; 5218 5219 5219 F09L113: move 2(A_FP),MLTVAL(A6) 5220 * 5221 .page 5222 * 5223 *switch (fp->idfsrc) {5224 * 5220 5221 .page 5222 5223 | switch (fp->idfsrc) { 5224 5225 5225 move.b 4(A_FP),D0 5226 5226 ext.w d0 5227 5227 cmp #10,D0 5228 5228 bhi F09L122 5229 * 5229 5230 5230 asl #2,D0 5231 5231 lea F09L123,A0 5232 5232 movea.l 0(A0,D0.W),A0 5233 5233 jmp (A0) 5234 * 5235 *case SM_NONE:5236 *mltval = 0;5237 * 5234 5235 | case SM_NONE: 5236 | mltval = 0; 5237 5238 5238 F09L116: clr MLTVAL(A6) 5239 * 5240 *tsrcval = 0;5241 * 5239 5240 | tsrcval = 0; 5241 5242 5242 clr TSRCVAL(A6) 5243 * 5244 *break;5245 * 5243 5244 | break; 5245 5246 5246 bra F09L114 5247 * 5248 *case SM_RAND:5249 *tsrcval = xgetran(mltval);5250 * 5247 5248 | case SM_RAND: 5249 | tsrcval = xgetran(mltval); 5250 5251 5251 F09L117: move MLTVAL(A6),(sp) 5252 5252 jsr _xgetran 5253 5253 move D0,TSRCVAL(A6) 5254 * 5255 *break;5256 * 5254 5255 | break; 5256 5257 5257 bra F09L114 5258 * 5259 *case SM_PTCH:5260 *tsrcval = pch;5261 * 5258 5259 | case SM_PTCH: 5260 | tsrcval = pch; 5261 5262 5262 F09L118: move PCH(A6),TSRCVAL(A6) 5263 * 5264 *break;5265 * 5263 5264 | break; 5265 5266 5266 bra F09L114 5267 * 5268 .page 5269 * 5270 *case SM_FREQ:5271 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];5272 * 5267 5268 .page 5269 5270 | case SM_FREQ: 5271 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 5272 5273 5273 F09L119: move PCH(A6),D0 5274 5274 asr #7,D0 … … 5278 5278 add.l #_ptoftab,A0 5279 5279 move (A0),TSRCVAL(A6) 5280 * 5281 *break;5282 * 5280 5281 | break; 5282 5283 5283 bra F09L114 5284 * 5285 *case SM_KVEL:5286 *tsrcval = veltab[trg];5287 * 5284 5285 | case SM_KVEL: 5286 | tsrcval = veltab[trg]; 5287 5288 5288 F09L120: move TRG(A6),A0 5289 5289 add.l A0,A0 5290 5290 add.l #_veltab,A0 5291 5291 move (A0),TSRCVAL(A6) 5292 * 5293 *break;5294 * 5292 5293 | break; 5294 5295 5295 bra F09L114 5296 * 5297 *case SM_KPRS:5298 *tsrcval = prstab[trg];5299 * 5296 5297 | case SM_KPRS: 5298 | tsrcval = prstab[trg]; 5299 5300 5300 F09L121: move TRG(A6),A0 5301 5301 add.l A0,A0 5302 5302 add.l #_prstab,A0 5303 5303 move (A0),TSRCVAL(A6) 5304 * 5305 *break;5306 * 5304 5305 | break; 5306 5307 5307 bra F09L114 5308 * 5309 *default:5310 *tsrcval = vep->val;5311 * 5308 5309 | default: 5310 | tsrcval = vep->val; 5311 5312 5312 F09L122: move.l VEP(A6),A0 5313 5313 move 8(A0),TSRCVAL(A6) 5314 * 5315 *}5316 * 5317 .page 5318 * 5319 *srcval = tsrcval;5320 * 5314 5315 | } 5316 5317 .page 5318 5319 | srcval = tsrcval; 5320 5321 5321 F09L114: move TSRCVAL(A6),SRCVAL(A6) 5322 * 5323 .page 5324 * 5325 *if (pt->ipvsrc) {5326 * 5322 5323 .page 5324 5325 | if (pt->ipvsrc) { 5326 5327 5327 F09L124: move.l PT(A6),A0 5328 5328 tst.b 6(A0) 5329 5329 beq F09L136 5330 * 5331 *switch (pt->ipvsrc) {5332 * 5330 5331 | switch (pt->ipvsrc) { 5332 5333 5333 move.l PT(A6),A0 5334 5334 move.b 6(A0),D0 … … 5337 5337 cmp #9,D0 5338 5338 bhi F09L144 5339 * 5339 5340 5340 asl #2,D0 5341 5341 lea F09L145,A0 5342 5342 move.l 0(A0,D0.W),A0 5343 5343 jmp (A0) 5344 * 5345 *case SM_RAND:5346 *ltmp = xgetran(pt_>ipvmlt);5347 * 5344 5345 | case SM_RAND: 5346 | ltmp = xgetran(pt_>ipvmlt); 5347 5348 5348 F09L139: move.l PT(A6),A0 5349 5349 move 4(A0),(sp) … … 5351 5351 ext.l D0 5352 5352 move.l D0,LTMP(A6) 5353 * 5354 *break;5355 * 5353 5354 | break; 5355 5356 5356 bra F09L137 5357 * 5358 *case SM_PTCH:5359 *ltmp = pch;5360 * 5357 5358 | case SM_PTCH: 5359 | ltmp = pch; 5360 5361 5361 F09L140: move PCH(A6),A0 5362 5362 move.l A0,LTMP(A6) 5363 * 5364 *break;5365 * 5363 5364 | break; 5365 5366 5366 bra F09L137 5367 * 5368 .page 5369 * 5370 *case SM_FREQ:5371 *ltmp = ptoftab[(pch >> 7) & 0x00FF];5372 * 5367 5368 .page 5369 5370 | case SM_FREQ: 5371 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 5372 5373 5373 F09L141: move PCH(A6),D0 5374 5374 asr #7,D0 … … 5380 5380 ext.l D0 5381 5381 move.l D0,LTMP(A6) 5382 * 5383 *break;5384 * 5382 5383 | break; 5384 5385 5385 bra F09L137 5386 * 5387 *case SM_KVEL:5388 *ltmp = veltab[trg];5389 * 5386 5387 | case SM_KVEL: 5388 | ltmp = veltab[trg]; 5389 5390 5390 F09L142: move TRG(A6),A0 5391 5391 add.l A0,A0 … … 5394 5394 ext.l D0 5395 5395 move.l D0,LTMP(A6) 5396 * 5397 *break;5398 * 5396 5397 | break; 5398 5399 5399 bra F09L137 5400 * 5401 .page 5402 * 5403 *case SM_KPRS:5404 *ltmp = prstab[trg];5405 * 5400 5401 .page 5402 5403 | case SM_KPRS: 5404 | ltmp = prstab[trg]; 5405 5406 5406 F09L143: move TRG(A6),A0 5407 5407 add.l A0,A0 … … 5410 5410 ext.l D0 5411 5411 move.l D0,LTMP(A6) 5412 * 5413 *break;5414 * 5412 5413 | break; 5414 5415 5415 bra F09L137 5416 * 5417 .page 5418 * 5419 *default:5420 *ltmp = valents[group | pt->ipvsrc].val;5421 * 5416 5417 .page 5418 5419 | default: 5420 | ltmp = valents[group | pt->ipvsrc].val; 5421 5422 5422 F09L144: move.l PT(A6),A0 5423 5423 clr.l D0 … … 5433 5433 move 8(A0,A1.l),D0 5434 5434 move.l D0,LTMP(A6) 5435 * 5436 *}5437 * 5438 * 5439 .page 5440 * 5441 * ltmp = (ltmp *pt->ipvmlt) >> 15;5442 * 5435 5436 | } 5437 5438 5439 .page 5440 5441 | ltmp = (ltmp | pt->ipvmlt) >> 15; 5442 5443 5443 F09L137: move.l PT(A6),A0 5444 5444 move.w 4(A0),D0 … … 5448 5448 asr.l D1,D0 5449 5449 move.l D0,LTMP(A6) 5450 * 5451 *ltmp += (long)pt->ipval;5452 * 5450 5451 | ltmp += (long)pt->ipval; 5452 5453 5453 move.l PT(A6),A0 5454 5454 move 2(A0),D0 5455 5455 ext.l D0 5456 5456 add.l D0,LTMP(A6) 5457 * 5458 *if (ltmp GT (long)VALMAX)5459 *ltmp = (long)VALMAX;5460 * 5457 5458 | if (ltmp GT (long)VALMAX) 5459 | ltmp = (long)VALMAX; 5460 5461 5461 cmp.l #VALMAX,LTMP(A6) 5462 5462 ble F09L146 5463 * 5463 5464 5464 move.l #VALMAX,LTMP(A6) 5465 5465 bra F09L147 5466 * 5467 *else if (ltmp LT (long)VALMIN)5468 *ltmp = (long)VALMIN;5469 * 5466 5467 | else if (ltmp LT (long)VALMIN) 5468 | ltmp = (long)VALMIN; 5469 5470 5470 F09L146: cmp.l #VALMIN,LTMP(A6) 5471 5471 bge F09L147 5472 * 5472 5473 5473 move.l #VALMIN,LTMP(A6) 5474 * 5475 *tfpval = (short)ltmp;5476 * 5474 5475 | tfpval = (short)ltmp; 5476 5477 5477 F09L147: move.w LTMP+2(A6),TFPVAL(A6) 5478 5478 bra F09L149 5479 * 5480 *} else {5481 * 5482 *tfpval = pt->ipval;5483 * 5479 5480 | } else { 5481 5482 | tfpval = pt->ipval; 5483 5484 5484 F09L136: move.l PT(A6),A0 5485 5485 move 2(A0),TFPVAL(A6) 5486 * 5487 *}5488 * 5489 .page 5490 * 5491 *fpmant = (((long)pt->iptom & 0x0000FFF0L)5492 * *((long)timemlt & 0x0000FFFFL)) >> 15;5493 * 5486 5487 | } 5488 5489 .page 5490 5491 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 5492 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 5493 5494 5494 F09L149: move.l PT(A6),A0 5495 5495 move.w (A0),D0 5496 5496 move.w D0,D2 5497 andi.w # $FFF0,D05497 andi.w #0xFFF0,D0 5498 5498 move.w _timemlt,D1 5499 5499 muls D1,D0 … … 5501 5501 asr.l D1,D0 5502 5502 move D0,R_FPMANT 5503 * 5504 *fpexp = expbit[pt->iptim & 0x000F];5505 * 5506 and # $000F,D25503 5504 | fpexp = expbit[pt->iptim & 0x000F]; 5505 5506 and #0x000F,D2 5507 5507 move D2,A0 5508 5508 add.l A0,A0 5509 5509 add.l #_expbit,A0 5510 5510 move (A0),R_FPEXP 5511 * 5512 .page 5513 * 5514 *fp->idfpch = pch;5515 * 5511 5512 .page 5513 5514 | fp->idfpch = pch; 5515 5516 5516 F09L163: move PCH(A6),(A_FP) 5517 * 5518 *fpval = tfpval;5519 * 5517 5518 | fpval = tfpval; 5519 5520 5520 move TFPVAL(A6),R_FPVAL 5521 * 5522 .page 5523 * 5521 5522 .page 5523 5524 5524 move.b 5(A_FP),D0 5525 5525 ext.w D0 5526 5526 sub.w #1,D0 5527 5527 movea.l PT(A6),A0 5528 * 5529 *oldi = setipl(FPU_DI);5530 * 5528 5529 | oldi = setipl(FPU_DI); 5530 5531 5531 move sr,OLDI(A6) 5532 5532 move #FPU_DI,sr 5533 * 5533 5534 5534 F09L168: clr.b 10(A0) 5535 5535 add.l #12,a0 5536 5536 dbra D0,F09L168 5537 * 5538 .page 5539 * 5540 *fp->idftmd ^= I_NVBITS;5541 * 5537 5538 .page 5539 5540 | fp->idftmd ^= I_NVBITS; 5541 5542 5542 F09L165: eor.b #24,7(A_FP) 5543 * 5544 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;5545 * 5543 5544 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 5545 5546 5546 move.b 7(A_FP),R_FPCTL 5547 5547 and #28,R_FPCTL 5548 5548 or #3,R_FPCTL 5549 * 5550 *fp->idfcpt = fp->idfpt1;5551 * 5549 5550 | fp->idfcpt = fp->idfpt1; 5551 5552 5552 move.b 6(A_FP),8(A_FP) 5553 * 5554 *fp->idftmd |= I_ACTIVE;5555 * 5553 5554 | fp->idftmd |= I_ACTIVE; 5555 5556 5556 or.b #2,7(A_FP) 5557 * 5558 *fp->idftrf = trg;5559 * 5557 5558 | fp->idftrf = trg; 5559 5560 5560 move TRG(A6),10(A_FP) 5561 * 5562 * *(fpu + (long)FPU_TCV1) = srcval;5563 * 5564 move SRCVAL(A6), $8(A_FPU)5565 * 5566 *++octype;5567 * 5561 5562 | |(fpu + (long)FPU_TCV1) = srcval; 5563 5564 move SRCVAL(A6),0x8(A_FPU) 5565 5566 | ++octype; 5567 5568 5568 add #1,OCTYPE(A6) 5569 * 5570 * *(fpu + (long)FPU_TSF1) = mltval;5571 * 5572 move MLTVAL(A6), $A(A_FPU)5573 * 5574 *++octype;5575 * 5569 5570 | |(fpu + (long)FPU_TSF1) = mltval; 5571 5572 move MLTVAL(A6),0xA(A_FPU) 5573 5574 | ++octype; 5575 5576 5576 add #1,OCTYPE(A6) 5577 * 5578 * *(fpu + (long)FPU_TMNT) = fpmant;5579 * 5580 move R_FPMANT, $14(A_FPU)5581 * 5582 *++octype;5583 * 5577 5578 | |(fpu + (long)FPU_TMNT) = fpmant; 5579 5580 move R_FPMANT,0x14(A_FPU) 5581 5582 | ++octype; 5583 5584 5584 add #1,OCTYPE(A6) 5585 * 5586 * *(fpu + (long)FPU_TEXP) = fpexp;5587 * 5588 move R_FPEXP, $16(A_FPU)5589 * 5590 *++octype;5591 * 5585 5586 | |(fpu + (long)FPU_TEXP) = fpexp; 5587 5588 move R_FPEXP,0x16(A_FPU) 5589 5590 | ++octype; 5591 5592 5592 add #1,OCTYPE(A6) 5593 * 5594 .page 5595 * 5596 *if (fp->idftmd & I_VNSUBN)5597 * 5593 5594 .page 5595 5596 | if (fp->idftmd & I_VNSUBN) 5597 5598 5598 btst #3,7(A_FP) 5599 5599 beq F09L169 5600 * 5601 * *(fpu + (long)FPU_TNV1) = fpval;5602 * 5603 move R_FPVAL, $1C(A_FPU)5600 5601 | |(fpu + (long)FPU_TNV1) = fpval; 5602 5603 move R_FPVAL,0x1C(A_FPU) 5604 5604 bra F09L170 5605 * 5606 *else5607 * *(fpu + (long)FPU_TNV0) = fpval;5608 * 5605 5606 | else 5607 | |(fpu + (long)FPU_TNV0) = fpval; 5608 5609 5609 F09L169: move R_FPVAL,2(A_FPU) 5610 * 5611 *++octype;5612 * 5610 5611 | ++octype; 5612 5613 5613 F09L170: add #1,OCTYPE(A6) 5614 * 5615 * *(fpu + (long)FPU_TCTL) = fpctl;5616 * 5614 5615 | |(fpu + (long)FPU_TCTL) = fpctl; 5616 5617 5617 move R_FPCTL,(A_FPU) 5618 * 5619 *setipl(oldi);5620 * 5618 5619 | setipl(oldi); 5620 5621 5621 move OLDI(A6),sr 5622 * 5623 .page 5624 *------------------------------------------------------------------------------5625 *Start function 10 -- Ind 55626 *------------------------------------------------------------------------------5627 * 5628 *if (ip->idhfnc[10].idftmd & I_TM_KEY) {5629 * 5622 5623 .page 5624 | ------------------------------------------------------------------------------ 5625 | Start function 10 -- Ind 5 5626 | ------------------------------------------------------------------------------ 5627 5628 | if (ip->idhfnc[10].idftmd & I_TM_KEY) { 5629 5630 5630 FN10: move.l IP(A6),A0 5631 5631 move.b 213(A0),D0 … … 5634 5634 btst #0,D0 5635 5635 bne FN10A 5636 * 5636 5637 5637 jmp FN11 5638 * 5639 *vp = (vce << 4) + 14;5640 * 5638 5639 | vp = (vce << 4) + 14; 5640 5641 5641 FN10A: move VCE(A6),D0 5642 5642 asl #4,D0 5643 5643 add.w #14,D0 5644 5644 move D0,VP(A6) 5645 * 5646 *fpu = io_fpu + FPU_OFNC + (vp << 4);5647 * 5645 5646 | fpu = io_fpu + FPU_OFNC + (vp << 4); 5647 5648 5648 asl #5,D0 5649 5649 ext.l D0 5650 5650 move.l D0,A_FPU 5651 add.l #_io_fpu+ $4000,A_FPU5652 * 5653 *fp = &ip->idhfnc[10];5654 * 5651 add.l #_io_fpu+0x4000,A_FPU 5652 5653 | fp = &ip->idhfnc[10]; 5654 5655 5655 move.l #120,A_FP 5656 5656 add.l IP(A6),A_FP 5657 5657 add.l #86,A_FP 5658 * 5659 *pt = &ip->idhpnt[fp->idfpt1];5660 * 5658 5659 | pt = &ip->idhpnt[fp->idfpt1]; 5660 5661 5661 clr.l D0 5662 5662 move.b 6(A_FP),D0 … … 5668 5668 add.l #242,D0 5669 5669 move.l D0,PT(A6) 5670 * 5671 .page 5672 * 5673 *srcnum = group | fp->idfsrc;5674 * 5670 5671 .page 5672 5673 | srcnum = group | fp->idfsrc; 5674 5675 5675 move.w GROUP(A6),D0 5676 5676 ext.l D0 … … 5679 5679 or D1,D0 5680 5680 move D0,SRCNUM(A6) 5681 * 5682 *vep = &valents[srcnum];5683 * 5681 5682 | vep = &valents[srcnum]; 5683 5684 5684 add.l D0,D0 5685 5685 move.l D0,D1 … … 5688 5688 add.l #_valents,D0 5689 5689 move.l D0,VEP(A6) 5690 * 5691 *smp = vpsms[vp];5692 * 5690 5691 | smp = vpsms[vp]; 5692 5693 5693 move VP(A6),A0 5694 5694 add.l A0,A0 … … 5696 5696 add.l #_vpsms,A0 5697 5697 move.l (A0),A_SMP 5698 * 5699 *if (srcnum NE smp->sm) {5700 * 5698 5699 | if (srcnum NE smp->sm) { 5700 5701 5701 clr D0 5702 5702 move 10(A_SMP),D0 5703 5703 cmp SRCNUM(A6),D0 5704 5704 beq F10L113 5705 * 5706 *(smp->prv)->nxt = smp->nxt;5707 * 5705 5706 | (smp->prv)->nxt = smp->nxt; 5707 5708 5708 move.l 4(A_SMP),A0 5709 5709 move.l (A_SMP),(A0) 5710 * 5711 *(smp->nxt)->prv = smp->prv;5712 * 5710 5711 | (smp->nxt)->prv = smp->prv; 5712 5713 5713 move.l (A_SMP),A0 5714 5714 move.l 4(A_SMP),4(A0) 5715 * 5716 * smp->prv = (struct sment *)vep;5717 * 5715 5716 | smp->prv = (struct sment |)vep; 5717 5718 5718 move.l VEP(A6),4(A_SMP) 5719 * 5720 *smp->nxt = vep->nxt;5721 * 5719 5720 | smp->nxt = vep->nxt; 5721 5722 5722 move.l VEP(A6),A0 5723 5723 move.l (A0),(A_SMP) 5724 * 5725 *(vep->nxt)->prv = smp;5726 * 5724 5725 | (vep->nxt)->prv = smp; 5726 5727 5727 move.l VEP(A6),A0 5728 5728 move.l (A0),A0 5729 5729 move.l A_SMP,4(A0) 5730 * 5731 *vep->nxt = smp;5732 * 5730 5731 | vep->nxt = smp; 5732 5733 5733 move.l VEP(A6),A0 5734 5734 move.l A_SMP,(A0) 5735 * 5736 *smp->sm = srcnum;5737 * 5735 5736 | smp->sm = srcnum; 5737 5738 5738 move SRCNUM(A6),10(A_SMP) 5739 * 5740 *}5741 * 5742 *mltval = fp->idfmlt;5743 * 5739 5740 | } 5741 5742 | mltval = fp->idfmlt; 5743 5744 5744 F10L113: move 2(A_FP),MLTVAL(A6) 5745 * 5746 .page 5747 * 5748 *switch (fp->idfsrc) {5749 * 5745 5746 .page 5747 5748 | switch (fp->idfsrc) { 5749 5750 5750 move.b 4(A_FP),D0 5751 5751 ext.w d0 5752 5752 cmp #10,D0 5753 5753 bhi F10L122 5754 * 5754 5755 5755 asl #2,D0 5756 5756 lea F10L123,A0 5757 5757 movea.l 0(A0,D0.W),A0 5758 5758 jmp (A0) 5759 * 5760 *case SM_NONE:5761 *mltval = 0;5762 * 5759 5760 | case SM_NONE: 5761 | mltval = 0; 5762 5763 5763 F10L116: clr MLTVAL(A6) 5764 * 5765 *tsrcval = 0;5766 * 5764 5765 | tsrcval = 0; 5766 5767 5767 clr TSRCVAL(A6) 5768 * 5769 *break;5770 * 5768 5769 | break; 5770 5771 5771 bra F10L114 5772 * 5773 *case SM_RAND:5774 *tsrcval = xgetran(mltval);5775 * 5772 5773 | case SM_RAND: 5774 | tsrcval = xgetran(mltval); 5775 5776 5776 F10L117: move MLTVAL(A6),(sp) 5777 5777 jsr _xgetran 5778 5778 move D0,TSRCVAL(A6) 5779 * 5780 *break;5781 * 5779 5780 | break; 5781 5782 5782 bra F10L114 5783 * 5784 *case SM_PTCH:5785 *tsrcval = pch;5786 * 5783 5784 | case SM_PTCH: 5785 | tsrcval = pch; 5786 5787 5787 F10L118: move PCH(A6),TSRCVAL(A6) 5788 * 5789 *break;5790 * 5788 5789 | break; 5790 5791 5791 bra F10L114 5792 * 5793 .page 5794 * 5795 *case SM_FREQ:5796 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];5797 * 5792 5793 .page 5794 5795 | case SM_FREQ: 5796 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 5797 5798 5798 F10L119: move PCH(A6),D0 5799 5799 asr #7,D0 … … 5803 5803 add.l #_ptoftab,A0 5804 5804 move (A0),TSRCVAL(A6) 5805 * 5806 *break;5807 * 5805 5806 | break; 5807 5808 5808 bra F10L114 5809 * 5810 *case SM_KVEL:5811 *tsrcval = veltab[trg];5812 * 5809 5810 | case SM_KVEL: 5811 | tsrcval = veltab[trg]; 5812 5813 5813 F10L120: move TRG(A6),A0 5814 5814 add.l A0,A0 5815 5815 add.l #_veltab,A0 5816 5816 move (A0),TSRCVAL(A6) 5817 * 5818 *break;5819 * 5817 5818 | break; 5819 5820 5820 bra F10L114 5821 * 5822 *case SM_KPRS:5823 *tsrcval = prstab[trg];5824 * 5821 5822 | case SM_KPRS: 5823 | tsrcval = prstab[trg]; 5824 5825 5825 F10L121: move TRG(A6),A0 5826 5826 add.l A0,A0 5827 5827 add.l #_prstab,A0 5828 5828 move (A0),TSRCVAL(A6) 5829 * 5830 *break;5831 * 5829 5830 | break; 5831 5832 5832 bra F10L114 5833 * 5834 *default:5835 *tsrcval = vep->val;5836 * 5833 5834 | default: 5835 | tsrcval = vep->val; 5836 5837 5837 F10L122: move.l VEP(A6),A0 5838 5838 move 8(A0),TSRCVAL(A6) 5839 * 5840 *}5841 * 5842 .page 5843 * 5844 *srcval = tsrcval;5845 * 5839 5840 | } 5841 5842 .page 5843 5844 | srcval = tsrcval; 5845 5846 5846 F10L114: move TSRCVAL(A6),SRCVAL(A6) 5847 * 5848 .page 5849 * 5850 *if (pt->ipvsrc) {5851 * 5847 5848 .page 5849 5850 | if (pt->ipvsrc) { 5851 5852 5852 F10L124: move.l PT(A6),A0 5853 5853 tst.b 6(A0) 5854 5854 beq F10L136 5855 * 5856 *switch (pt->ipvsrc) {5857 * 5855 5856 | switch (pt->ipvsrc) { 5857 5858 5858 move.l PT(A6),A0 5859 5859 move.b 6(A0),D0 … … 5862 5862 cmp #9,D0 5863 5863 bhi F10L144 5864 * 5864 5865 5865 asl #2,D0 5866 5866 lea F10L145,A0 5867 5867 move.l 0(A0,D0.W),A0 5868 5868 jmp (A0) 5869 * 5870 *case SM_RAND:5871 *ltmp = xgetran(pt_>ipvmlt);5872 * 5869 5870 | case SM_RAND: 5871 | ltmp = xgetran(pt_>ipvmlt); 5872 5873 5873 F10L139: move.l PT(A6),A0 5874 5874 move 4(A0),(sp) … … 5876 5876 ext.l D0 5877 5877 move.l D0,LTMP(A6) 5878 * 5879 *break;5880 * 5878 5879 | break; 5880 5881 5881 bra F10L137 5882 * 5883 *case SM_PTCH:5884 *ltmp = pch;5885 * 5882 5883 | case SM_PTCH: 5884 | ltmp = pch; 5885 5886 5886 F10L140: move PCH(A6),A0 5887 5887 move.l A0,LTMP(A6) 5888 * 5889 *break;5890 * 5888 5889 | break; 5890 5891 5891 bra F10L137 5892 * 5893 .page 5894 * 5895 *case SM_FREQ:5896 *ltmp = ptoftab[(pch >> 7) & 0x00FF];5897 * 5892 5893 .page 5894 5895 | case SM_FREQ: 5896 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 5897 5898 5898 F10L141: move PCH(A6),D0 5899 5899 asr #7,D0 … … 5905 5905 ext.l D0 5906 5906 move.l D0,LTMP(A6) 5907 * 5908 *break;5909 * 5907 5908 | break; 5909 5910 5910 bra F10L137 5911 * 5912 *case SM_KVEL:5913 *ltmp = veltab[trg];5914 * 5911 5912 | case SM_KVEL: 5913 | ltmp = veltab[trg]; 5914 5915 5915 F10L142: move TRG(A6),A0 5916 5916 add.l A0,A0 … … 5919 5919 ext.l D0 5920 5920 move.l D0,LTMP(A6) 5921 * 5922 *break;5923 * 5921 5922 | break; 5923 5924 5924 bra F10L137 5925 * 5926 .page 5927 * 5928 *case SM_KPRS:5929 *ltmp = prstab[trg];5930 * 5925 5926 .page 5927 5928 | case SM_KPRS: 5929 | ltmp = prstab[trg]; 5930 5931 5931 F10L143: move TRG(A6),A0 5932 5932 add.l A0,A0 … … 5935 5935 ext.l D0 5936 5936 move.l D0,LTMP(A6) 5937 * 5938 *break;5939 * 5937 5938 | break; 5939 5940 5940 bra F10L137 5941 * 5942 .page 5943 * 5944 *default:5945 *ltmp = valents[group | pt->ipvsrc].val;5946 * 5941 5942 .page 5943 5944 | default: 5945 | ltmp = valents[group | pt->ipvsrc].val; 5946 5947 5947 F10L144: move.l PT(A6),A0 5948 5948 clr.l D0 … … 5958 5958 move 8(A0,A1.l),D0 5959 5959 move.l D0,LTMP(A6) 5960 * 5961 *}5962 * 5963 * 5964 .page 5965 * 5966 * ltmp = (ltmp *pt->ipvmlt) >> 15;5967 * 5960 5961 | } 5962 5963 5964 .page 5965 5966 | ltmp = (ltmp | pt->ipvmlt) >> 15; 5967 5968 5968 F10L137: move.l PT(A6),A0 5969 5969 move.w 4(A0),D0 … … 5973 5973 asr.l D1,D0 5974 5974 move.l D0,LTMP(A6) 5975 * 5976 *ltmp += (long)pt->ipval;5977 * 5975 5976 | ltmp += (long)pt->ipval; 5977 5978 5978 move.l PT(A6),A0 5979 5979 move 2(A0),D0 5980 5980 ext.l D0 5981 5981 add.l D0,LTMP(A6) 5982 * 5983 *if (ltmp GT (long)VALMAX)5984 *ltmp = (long)VALMAX;5985 * 5982 5983 | if (ltmp GT (long)VALMAX) 5984 | ltmp = (long)VALMAX; 5985 5986 5986 cmp.l #VALMAX,LTMP(A6) 5987 5987 ble F10L146 5988 * 5988 5989 5989 move.l #VALMAX,LTMP(A6) 5990 5990 bra F10L147 5991 * 5992 *else if (ltmp LT (long)VALMIN)5993 *ltmp = (long)VALMIN;5994 * 5991 5992 | else if (ltmp LT (long)VALMIN) 5993 | ltmp = (long)VALMIN; 5994 5995 5995 F10L146: cmp.l #VALMIN,LTMP(A6) 5996 5996 bge F10L147 5997 * 5997 5998 5998 move.l #VALMIN,LTMP(A6) 5999 * 6000 *tfpval = (short)ltmp;6001 * 5999 6000 | tfpval = (short)ltmp; 6001 6002 6002 F10L147: move.w LTMP+2(A6),TFPVAL(A6) 6003 6003 bra F10L149 6004 * 6005 *} else {6006 * 6007 *tfpval = pt->ipval;6008 * 6004 6005 | } else { 6006 6007 | tfpval = pt->ipval; 6008 6009 6009 F10L136: move.l PT(A6),A0 6010 6010 move 2(A0),TFPVAL(A6) 6011 * 6012 *}6013 * 6014 .page 6015 * 6016 *fpmant = (((long)pt->iptom & 0x0000FFF0L)6017 * *((long)timemlt & 0x0000FFFFL)) >> 15;6018 * 6011 6012 | } 6013 6014 .page 6015 6016 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 6017 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 6018 6019 6019 F10L149: move.l PT(A6),A0 6020 6020 move.w (A0),D0 6021 6021 move.w D0,D2 6022 andi.w # $FFF0,D06022 andi.w #0xFFF0,D0 6023 6023 move.w _timemlt,D1 6024 6024 muls D1,D0 … … 6026 6026 asr.l D1,D0 6027 6027 move D0,R_FPMANT 6028 * 6029 *fpexp = expbit[pt->iptim & 0x000F];6030 * 6031 and # $000F,D26028 6029 | fpexp = expbit[pt->iptim & 0x000F]; 6030 6031 and #0x000F,D2 6032 6032 move D2,A0 6033 6033 add.l A0,A0 6034 6034 add.l #_expbit,A0 6035 6035 move (A0),R_FPEXP 6036 * 6037 .page 6038 * 6039 *fp->idfpch = pch;6040 * 6036 6037 .page 6038 6039 | fp->idfpch = pch; 6040 6041 6041 F10L163: move PCH(A6),(A_FP) 6042 * 6043 *fpval = tfpval;6044 * 6042 6043 | fpval = tfpval; 6044 6045 6045 move TFPVAL(A6),R_FPVAL 6046 * 6047 .page 6048 * 6046 6047 .page 6048 6049 6049 move.b 5(A_FP),D0 6050 6050 ext.w D0 6051 6051 sub.w #1,D0 6052 6052 movea.l PT(A6),A0 6053 * 6054 *oldi = setipl(FPU_DI);6055 * 6053 6054 | oldi = setipl(FPU_DI); 6055 6056 6056 move sr,OLDI(A6) 6057 6057 move #FPU_DI,sr 6058 * 6058 6059 6059 F10L168: clr.b 10(A0) 6060 6060 add.l #12,a0 6061 6061 dbra D0,F10L168 6062 * 6063 .page 6064 * 6065 *fp->idftmd ^= I_NVBITS;6066 * 6062 6063 .page 6064 6065 | fp->idftmd ^= I_NVBITS; 6066 6067 6067 F10L165: eor.b #24,7(A_FP) 6068 * 6069 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;6070 * 6068 6069 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 6070 6071 6071 move.b 7(A_FP),R_FPCTL 6072 6072 and #28,R_FPCTL 6073 6073 or #3,R_FPCTL 6074 * 6075 *fp->idfcpt = fp->idfpt1;6076 * 6074 6075 | fp->idfcpt = fp->idfpt1; 6076 6077 6077 move.b 6(A_FP),8(A_FP) 6078 * 6079 *fp->idftmd |= I_ACTIVE;6080 * 6078 6079 | fp->idftmd |= I_ACTIVE; 6080 6081 6081 or.b #2,7(A_FP) 6082 * 6083 *fp->idftrf = trg;6084 * 6082 6083 | fp->idftrf = trg; 6084 6085 6085 move TRG(A6),10(A_FP) 6086 * 6087 * *(fpu + (long)FPU_TCV1) = srcval;6088 * 6089 move SRCVAL(A6), $8(A_FPU)6090 * 6091 *++octype;6092 * 6086 6087 | |(fpu + (long)FPU_TCV1) = srcval; 6088 6089 move SRCVAL(A6),0x8(A_FPU) 6090 6091 | ++octype; 6092 6093 6093 add #1,OCTYPE(A6) 6094 * 6095 * *(fpu + (long)FPU_TSF1) = mltval;6096 * 6097 move MLTVAL(A6), $A(A_FPU)6098 * 6099 *++octype;6100 * 6094 6095 | |(fpu + (long)FPU_TSF1) = mltval; 6096 6097 move MLTVAL(A6),0xA(A_FPU) 6098 6099 | ++octype; 6100 6101 6101 add #1,OCTYPE(A6) 6102 * 6103 * *(fpu + (long)FPU_TMNT) = fpmant;6104 * 6105 move R_FPMANT, $14(A_FPU)6106 * 6107 *++octype;6108 * 6102 6103 | |(fpu + (long)FPU_TMNT) = fpmant; 6104 6105 move R_FPMANT,0x14(A_FPU) 6106 6107 | ++octype; 6108 6109 6109 add #1,OCTYPE(A6) 6110 * 6111 * *(fpu + (long)FPU_TEXP) = fpexp;6112 * 6113 move R_FPEXP, $16(A_FPU)6114 * 6115 *++octype;6116 * 6110 6111 | |(fpu + (long)FPU_TEXP) = fpexp; 6112 6113 move R_FPEXP,0x16(A_FPU) 6114 6115 | ++octype; 6116 6117 6117 add #1,OCTYPE(A6) 6118 * 6119 .page 6120 * 6121 *if (fp->idftmd & I_VNSUBN)6122 * 6118 6119 .page 6120 6121 | if (fp->idftmd & I_VNSUBN) 6122 6123 6123 btst #3,7(A_FP) 6124 6124 beq F10L169 6125 * 6126 * *(fpu + (long)FPU_TNV1) = fpval;6127 * 6128 move R_FPVAL, $1C(A_FPU)6125 6126 | |(fpu + (long)FPU_TNV1) = fpval; 6127 6128 move R_FPVAL,0x1C(A_FPU) 6129 6129 bra F10L170 6130 * 6131 *else6132 * *(fpu + (long)FPU_TNV0) = fpval;6133 * 6130 6131 | else 6132 | |(fpu + (long)FPU_TNV0) = fpval; 6133 6134 6134 F10L169: move R_FPVAL,2(A_FPU) 6135 * 6136 *++octype;6137 * 6135 6136 | ++octype; 6137 6138 6138 F10L170: add #1,OCTYPE(A6) 6139 * 6140 * *(fpu + (long)FPU_TCTL) = fpctl;6141 * 6139 6140 | |(fpu + (long)FPU_TCTL) = fpctl; 6141 6142 6142 move R_FPCTL,(A_FPU) 6143 * 6144 *setipl(oldi);6145 * 6143 6144 | setipl(oldi); 6145 6146 6146 move OLDI(A6),sr 6147 * 6148 .page 6149 *------------------------------------------------------------------------------6150 *Start function 11 -- Ind 66151 *------------------------------------------------------------------------------6152 * 6153 *if (ip->idhfnc[11].idftmd & I_TM_KEY) {6154 * 6147 6148 .page 6149 | ------------------------------------------------------------------------------ 6150 | Start function 11 -- Ind 6 6151 | ------------------------------------------------------------------------------ 6152 6153 | if (ip->idhfnc[11].idftmd & I_TM_KEY) { 6154 6155 6155 FN11: move.l IP(A6),A0 6156 6156 move.b 225(A0),D0 … … 6159 6159 btst #0,D0 6160 6160 bne FN11A 6161 * 6161 6162 6162 jmp FN12 6163 * 6164 *vp = (vce << 4) + 15;6165 * 6163 6164 | vp = (vce << 4) + 15; 6165 6166 6166 FN11A: move VCE(A6),D0 6167 6167 asl #4,D0 6168 6168 add.w #15,D0 6169 6169 move D0,VP(A6) 6170 * 6171 *fpu = io_fpu + FPU_OFNC + (vp << 4);6172 * 6170 6171 | fpu = io_fpu + FPU_OFNC + (vp << 4); 6172 6173 6173 asl #5,D0 6174 6174 ext.l D0 6175 6175 move.l D0,A_FPU 6176 add.l #_io_fpu+ $4000,A_FPU6177 * 6178 *fp = &ip->idhfnc[11];6179 * 6176 add.l #_io_fpu+0x4000,A_FPU 6177 6178 | fp = &ip->idhfnc[11]; 6179 6180 6180 move.l #132,A_FP 6181 6181 add.l IP(A6),A_FP 6182 6182 add.l #86,A_FP 6183 * 6184 *pt = &ip->idhpnt[fp->idfpt1];6185 * 6183 6184 | pt = &ip->idhpnt[fp->idfpt1]; 6185 6186 6186 clr.l D0 6187 6187 move.b 6(A_FP),D0 … … 6193 6193 add.l #242,D0 6194 6194 move.l D0,PT(A6) 6195 * 6196 .page 6197 * 6198 *srcnum = group | fp->idfsrc;6199 * 6195 6196 .page 6197 6198 | srcnum = group | fp->idfsrc; 6199 6200 6200 move.w GROUP(A6),D0 6201 6201 ext.l D0 … … 6204 6204 or D1,D0 6205 6205 move D0,SRCNUM(A6) 6206 * 6207 *vep = &valents[srcnum];6208 * 6206 6207 | vep = &valents[srcnum]; 6208 6209 6209 add.l D0,D0 6210 6210 move.l D0,D1 … … 6213 6213 add.l #_valents,D0 6214 6214 move.l D0,VEP(A6) 6215 * 6216 *smp = vpsms[vp];6217 * 6215 6216 | smp = vpsms[vp]; 6217 6218 6218 move VP(A6),A0 6219 6219 add.l A0,A0 … … 6221 6221 add.l #_vpsms,A0 6222 6222 move.l (A0),A_SMP 6223 * 6224 *if (srcnum NE smp->sm) {6225 * 6223 6224 | if (srcnum NE smp->sm) { 6225 6226 6226 clr D0 6227 6227 move 10(A_SMP),D0 6228 6228 cmp SRCNUM(A6),D0 6229 6229 beq F11L113 6230 * 6231 *(smp->prv)->nxt = smp->nxt;6232 * 6230 6231 | (smp->prv)->nxt = smp->nxt; 6232 6233 6233 move.l 4(A_SMP),A0 6234 6234 move.l (A_SMP),(A0) 6235 * 6236 *(smp->nxt)->prv = smp->prv;6237 * 6235 6236 | (smp->nxt)->prv = smp->prv; 6237 6238 6238 move.l (A_SMP),A0 6239 6239 move.l 4(A_SMP),4(A0) 6240 * 6241 * smp->prv = (struct sment *)vep;6242 * 6240 6241 | smp->prv = (struct sment |)vep; 6242 6243 6243 move.l VEP(A6),4(A_SMP) 6244 * 6245 *smp->nxt = vep->nxt;6246 * 6244 6245 | smp->nxt = vep->nxt; 6246 6247 6247 move.l VEP(A6),A0 6248 6248 move.l (A0),(A_SMP) 6249 * 6250 *(vep->nxt)->prv = smp;6251 * 6249 6250 | (vep->nxt)->prv = smp; 6251 6252 6252 move.l VEP(A6),A0 6253 6253 move.l (A0),A0 6254 6254 move.l A_SMP,4(A0) 6255 * 6256 *vep->nxt = smp;6257 * 6255 6256 | vep->nxt = smp; 6257 6258 6258 move.l VEP(A6),A0 6259 6259 move.l A_SMP,(A0) 6260 * 6261 *smp->sm = srcnum;6262 * 6260 6261 | smp->sm = srcnum; 6262 6263 6263 move SRCNUM(A6),10(A_SMP) 6264 * 6265 *}6266 * 6267 *mltval = fp->idfmlt;6268 * 6264 6265 | } 6266 6267 | mltval = fp->idfmlt; 6268 6269 6269 F11L113: move 2(A_FP),MLTVAL(A6) 6270 * 6271 .page 6272 * 6273 *switch (fp->idfsrc) {6274 * 6270 6271 .page 6272 6273 | switch (fp->idfsrc) { 6274 6275 6275 move.b 4(A_FP),D0 6276 6276 ext.w d0 6277 6277 cmp #10,D0 6278 6278 bhi F11L122 6279 * 6279 6280 6280 asl #2,D0 6281 6281 lea F11L123,A0 6282 6282 movea.l 0(A0,D0.W),A0 6283 6283 jmp (A0) 6284 * 6285 *case SM_NONE:6286 *mltval = 0;6287 * 6284 6285 | case SM_NONE: 6286 | mltval = 0; 6287 6288 6288 F11L116: clr MLTVAL(A6) 6289 * 6290 *tsrcval = 0;6291 * 6289 6290 | tsrcval = 0; 6291 6292 6292 clr TSRCVAL(A6) 6293 * 6294 *break;6295 * 6293 6294 | break; 6295 6296 6296 bra F11L114 6297 * 6298 *case SM_RAND:6299 *tsrcval = xgetran(mltval);6300 * 6297 6298 | case SM_RAND: 6299 | tsrcval = xgetran(mltval); 6300 6301 6301 F11L117: move MLTVAL(A6),(sp) 6302 6302 jsr _xgetran 6303 6303 move D0,TSRCVAL(A6) 6304 * 6305 *break;6306 * 6304 6305 | break; 6306 6307 6307 bra F11L114 6308 * 6309 *case SM_PTCH:6310 *tsrcval = pch;6311 * 6308 6309 | case SM_PTCH: 6310 | tsrcval = pch; 6311 6312 6312 F11L118: move PCH(A6),TSRCVAL(A6) 6313 * 6314 *break;6315 * 6313 6314 | break; 6315 6316 6316 bra F11L114 6317 * 6318 .page 6319 * 6320 *case SM_FREQ:6321 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];6322 * 6317 6318 .page 6319 6320 | case SM_FREQ: 6321 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 6322 6323 6323 F11L119: move PCH(A6),D0 6324 6324 asr #7,D0 … … 6328 6328 add.l #_ptoftab,A0 6329 6329 move (A0),TSRCVAL(A6) 6330 * 6331 *break;6332 * 6330 6331 | break; 6332 6333 6333 bra F11L114 6334 * 6335 *case SM_KVEL:6336 *tsrcval = veltab[trg];6337 * 6334 6335 | case SM_KVEL: 6336 | tsrcval = veltab[trg]; 6337 6338 6338 F11L120: move TRG(A6),A0 6339 6339 add.l A0,A0 6340 6340 add.l #_veltab,A0 6341 6341 move (A0),TSRCVAL(A6) 6342 * 6343 *break;6344 * 6342 6343 | break; 6344 6345 6345 bra F11L114 6346 * 6347 *case SM_KPRS:6348 *tsrcval = prstab[trg];6349 * 6346 6347 | case SM_KPRS: 6348 | tsrcval = prstab[trg]; 6349 6350 6350 F11L121: move TRG(A6),A0 6351 6351 add.l A0,A0 6352 6352 add.l #_prstab,A0 6353 6353 move (A0),TSRCVAL(A6) 6354 * 6355 *break;6356 * 6354 6355 | break; 6356 6357 6357 bra F11L114 6358 * 6359 *default:6360 *tsrcval = vep->val;6361 * 6358 6359 | default: 6360 | tsrcval = vep->val; 6361 6362 6362 F11L122: move.l VEP(A6),A0 6363 6363 move 8(A0),TSRCVAL(A6) 6364 * 6365 *}6366 * 6367 .page 6368 * 6369 *srcval = tsrcval;6370 * 6364 6365 | } 6366 6367 .page 6368 6369 | srcval = tsrcval; 6370 6371 6371 F11L114: move TSRCVAL(A6),SRCVAL(A6) 6372 * 6373 .page 6374 * 6375 *if (pt->ipvsrc) {6376 * 6372 6373 .page 6374 6375 | if (pt->ipvsrc) { 6376 6377 6377 F11L124: move.l PT(A6),A0 6378 6378 tst.b 6(A0) 6379 6379 beq F11L136 6380 * 6381 *switch (pt->ipvsrc) {6382 * 6380 6381 | switch (pt->ipvsrc) { 6382 6383 6383 move.l PT(A6),A0 6384 6384 move.b 6(A0),D0 … … 6387 6387 cmp #9,D0 6388 6388 bhi F11L144 6389 * 6389 6390 6390 asl #2,D0 6391 6391 lea F11L145,A0 6392 6392 move.l 0(A0,D0.W),A0 6393 6393 jmp (A0) 6394 * 6395 *case SM_RAND:6396 *ltmp = xgetran(pt_>ipvmlt);6397 * 6394 6395 | case SM_RAND: 6396 | ltmp = xgetran(pt_>ipvmlt); 6397 6398 6398 F11L139: move.l PT(A6),A0 6399 6399 move 4(A0),(sp) … … 6401 6401 ext.l D0 6402 6402 move.l D0,LTMP(A6) 6403 * 6404 *break;6405 * 6403 6404 | break; 6405 6406 6406 bra F11L137 6407 * 6408 *case SM_PTCH:6409 *ltmp = pch;6410 * 6407 6408 | case SM_PTCH: 6409 | ltmp = pch; 6410 6411 6411 F11L140: move PCH(A6),A0 6412 6412 move.l A0,LTMP(A6) 6413 * 6414 *break;6415 * 6413 6414 | break; 6415 6416 6416 bra F11L137 6417 * 6418 .page 6419 * 6420 *case SM_FREQ:6421 *ltmp = ptoftab[(pch >> 7) & 0x00FF];6422 * 6417 6418 .page 6419 6420 | case SM_FREQ: 6421 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 6422 6423 6423 F11L141: move PCH(A6),D0 6424 6424 asr #7,D0 … … 6430 6430 ext.l D0 6431 6431 move.l D0,LTMP(A6) 6432 * 6433 *break;6434 * 6432 6433 | break; 6434 6435 6435 bra F11L137 6436 * 6437 *case SM_KVEL:6438 *ltmp = veltab[trg];6439 * 6436 6437 | case SM_KVEL: 6438 | ltmp = veltab[trg]; 6439 6440 6440 F11L142: move TRG(A6),A0 6441 6441 add.l A0,A0 … … 6444 6444 ext.l D0 6445 6445 move.l D0,LTMP(A6) 6446 * 6447 *break;6448 * 6446 6447 | break; 6448 6449 6449 bra F11L137 6450 * 6451 .page 6452 * 6453 *case SM_KPRS:6454 *ltmp = prstab[trg];6455 * 6450 6451 .page 6452 6453 | case SM_KPRS: 6454 | ltmp = prstab[trg]; 6455 6456 6456 F11L143: move TRG(A6),A0 6457 6457 add.l A0,A0 … … 6460 6460 ext.l D0 6461 6461 move.l D0,LTMP(A6) 6462 * 6463 *break;6464 * 6462 6463 | break; 6464 6465 6465 bra F11L137 6466 * 6467 .page 6468 * 6469 *default:6470 *ltmp = valents[group | pt->ipvsrc].val;6471 * 6466 6467 .page 6468 6469 | default: 6470 | ltmp = valents[group | pt->ipvsrc].val; 6471 6472 6472 F11L144: move.l PT(A6),A0 6473 6473 clr.l D0 … … 6483 6483 move 8(A0,A1.l),D0 6484 6484 move.l D0,LTMP(A6) 6485 * 6486 *}6487 * 6488 * 6489 .page 6490 * 6491 * ltmp = (ltmp *pt->ipvmlt) >> 15;6492 * 6485 6486 | } 6487 6488 6489 .page 6490 6491 | ltmp = (ltmp | pt->ipvmlt) >> 15; 6492 6493 6493 F11L137: move.l PT(A6),A0 6494 6494 move.w 4(A0),D0 … … 6498 6498 asr.l D1,D0 6499 6499 move.l D0,LTMP(A6) 6500 * 6501 *ltmp += (long)pt->ipval;6502 * 6500 6501 | ltmp += (long)pt->ipval; 6502 6503 6503 move.l PT(A6),A0 6504 6504 move 2(A0),D0 6505 6505 ext.l D0 6506 6506 add.l D0,LTMP(A6) 6507 * 6508 *if (ltmp GT (long)VALMAX)6509 *ltmp = (long)VALMAX;6510 * 6507 6508 | if (ltmp GT (long)VALMAX) 6509 | ltmp = (long)VALMAX; 6510 6511 6511 cmp.l #VALMAX,LTMP(A6) 6512 6512 ble F11L146 6513 * 6513 6514 6514 move.l #VALMAX,LTMP(A6) 6515 6515 bra F11L147 6516 * 6517 *else if (ltmp LT (long)VALMIN)6518 *ltmp = (long)VALMIN;6519 * 6516 6517 | else if (ltmp LT (long)VALMIN) 6518 | ltmp = (long)VALMIN; 6519 6520 6520 F11L146: cmp.l #VALMIN,LTMP(A6) 6521 6521 bge F11L147 6522 * 6522 6523 6523 move.l #VALMIN,LTMP(A6) 6524 * 6525 *tfpval = (short)ltmp;6526 * 6524 6525 | tfpval = (short)ltmp; 6526 6527 6527 F11L147: move.w LTMP+2(A6),TFPVAL(A6) 6528 6528 bra F11L149 6529 * 6530 *} else {6531 * 6532 *tfpval = pt->ipval;6533 * 6529 6530 | } else { 6531 6532 | tfpval = pt->ipval; 6533 6534 6534 F11L136: move.l PT(A6),A0 6535 6535 move 2(A0),TFPVAL(A6) 6536 * 6537 *}6538 * 6539 .page 6540 * 6541 *fpmant = (((long)pt->iptom & 0x0000FFF0L)6542 * *((long)timemlt & 0x0000FFFFL)) >> 15;6543 * 6536 6537 | } 6538 6539 .page 6540 6541 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 6542 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 6543 6544 6544 F11L149: move.l PT(A6),A0 6545 6545 move.w (A0),D0 6546 6546 move.w D0,D2 6547 andi.w # $FFF0,D06547 andi.w #0xFFF0,D0 6548 6548 move.w _timemlt,D1 6549 6549 muls D1,D0 … … 6551 6551 asr.l D1,D0 6552 6552 move D0,R_FPMANT 6553 * 6554 *fpexp = expbit[pt->iptim & 0x000F];6555 * 6556 and # $000F,D26553 6554 | fpexp = expbit[pt->iptim & 0x000F]; 6555 6556 and #0x000F,D2 6557 6557 move D2,A0 6558 6558 add.l A0,A0 6559 6559 add.l #_expbit,A0 6560 6560 move (A0),R_FPEXP 6561 * 6562 .page 6563 * 6564 *fp->idfpch = pch;6565 * 6561 6562 .page 6563 6564 | fp->idfpch = pch; 6565 6566 6566 F11L163: move PCH(A6),(A_FP) 6567 * 6568 *fpval = tfpval;6569 * 6567 6568 | fpval = tfpval; 6569 6570 6570 move TFPVAL(A6),R_FPVAL 6571 * 6572 .page 6573 * 6571 6572 .page 6573 6574 6574 move.b 5(A_FP),D0 6575 6575 ext.w D0 6576 6576 sub.w #1,D0 6577 6577 movea.l PT(A6),A0 6578 * 6579 *oldi = setipl(FPU_DI);6580 * 6578 6579 | oldi = setipl(FPU_DI); 6580 6581 6581 move sr,OLDI(A6) 6582 6582 move #FPU_DI,sr 6583 * 6583 6584 6584 F11L168: clr.b 10(A0) 6585 6585 add.l #12,a0 6586 6586 dbra D0,F11L168 6587 * 6588 .page 6589 * 6590 *fp->idftmd ^= I_NVBITS;6591 * 6587 6588 .page 6589 6590 | fp->idftmd ^= I_NVBITS; 6591 6592 6592 F11L165: eor.b #24,7(A_FP) 6593 * 6594 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;6595 * 6593 6594 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 6595 6596 6596 move.b 7(A_FP),R_FPCTL 6597 6597 and #28,R_FPCTL 6598 6598 or #3,R_FPCTL 6599 * 6600 *fp->idfcpt = fp->idfpt1;6601 * 6599 6600 | fp->idfcpt = fp->idfpt1; 6601 6602 6602 move.b 6(A_FP),8(A_FP) 6603 * 6604 *fp->idftmd |= I_ACTIVE;6605 * 6603 6604 | fp->idftmd |= I_ACTIVE; 6605 6606 6606 or.b #2,7(A_FP) 6607 * 6608 *fp->idftrf = trg;6609 * 6607 6608 | fp->idftrf = trg; 6609 6610 6610 move TRG(A6),10(A_FP) 6611 * 6612 * *(fpu + (long)FPU_TCV1) = srcval;6613 * 6614 move SRCVAL(A6), $8(A_FPU)6615 * 6616 *++octype;6617 * 6611 6612 | |(fpu + (long)FPU_TCV1) = srcval; 6613 6614 move SRCVAL(A6),0x8(A_FPU) 6615 6616 | ++octype; 6617 6618 6618 add #1,OCTYPE(A6) 6619 * 6620 * *(fpu + (long)FPU_TSF1) = mltval;6621 * 6622 move MLTVAL(A6), $A(A_FPU)6623 * 6624 *++octype;6625 * 6619 6620 | |(fpu + (long)FPU_TSF1) = mltval; 6621 6622 move MLTVAL(A6),0xA(A_FPU) 6623 6624 | ++octype; 6625 6626 6626 add #1,OCTYPE(A6) 6627 * 6628 * *(fpu + (long)FPU_TMNT) = fpmant;6629 * 6630 move R_FPMANT, $14(A_FPU)6631 * 6632 *++octype;6633 * 6627 6628 | |(fpu + (long)FPU_TMNT) = fpmant; 6629 6630 move R_FPMANT,0x14(A_FPU) 6631 6632 | ++octype; 6633 6634 6634 add #1,OCTYPE(A6) 6635 * 6636 * *(fpu + (long)FPU_TEXP) = fpexp;6637 * 6638 move R_FPEXP, $16(A_FPU)6639 * 6640 *++octype;6641 * 6635 6636 | |(fpu + (long)FPU_TEXP) = fpexp; 6637 6638 move R_FPEXP,0x16(A_FPU) 6639 6640 | ++octype; 6641 6642 6642 add #1,OCTYPE(A6) 6643 * 6644 .page 6645 * 6646 *if (fp->idftmd & I_VNSUBN)6647 * 6643 6644 .page 6645 6646 | if (fp->idftmd & I_VNSUBN) 6647 6648 6648 btst #3,7(A_FP) 6649 6649 beq F11L169 6650 * 6651 * *(fpu + (long)FPU_TNV1) = fpval;6652 * 6653 move R_FPVAL, $1C(A_FPU)6650 6651 | |(fpu + (long)FPU_TNV1) = fpval; 6652 6653 move R_FPVAL,0x1C(A_FPU) 6654 6654 bra F11L170 6655 * 6656 *else6657 * *(fpu + (long)FPU_TNV0) = fpval;6658 * 6655 6656 | else 6657 | |(fpu + (long)FPU_TNV0) = fpval; 6658 6659 6659 F11L169: move R_FPVAL,2(A_FPU) 6660 * 6661 *++octype;6662 * 6660 6661 | ++octype; 6662 6663 6663 F11L170: add #1,OCTYPE(A6) 6664 * 6665 * *(fpu + (long)FPU_TCTL) = fpctl;6666 * 6664 6665 | |(fpu + (long)FPU_TCTL) = fpctl; 6666 6667 6667 move R_FPCTL,(A_FPU) 6668 * 6669 *setipl(oldi);6670 * 6668 6669 | setipl(oldi); 6670 6671 6671 move OLDI(A6),sr 6672 * 6673 .page 6674 *------------------------------------------------------------------------------6675 *Start function 12 -- Level6676 *------------------------------------------------------------------------------6677 * 6678 *if (ip->idhfnc[12].idftmd & I_TM_KEY) {6679 * 6672 6673 .page 6674 | ------------------------------------------------------------------------------ 6675 | Start function 12 -- Level 6676 | ------------------------------------------------------------------------------ 6677 6678 | if (ip->idhfnc[12].idftmd & I_TM_KEY) { 6679 6680 6680 FN12: move.l IP(A6),A0 6681 6681 move.b 237(A0),D0 … … 6684 6684 btst #0,D0 6685 6685 bne FN12A 6686 * 6686 6687 6687 jmp FNEXIT 6688 * 6689 *vp = (vce << 4) + 2;6690 * 6688 6689 | vp = (vce << 4) + 2; 6690 6691 6691 FN12A: move VCE(A6),D0 6692 6692 asl #4,D0 6693 6693 add.w #2,D0 6694 6694 move D0,VP(A6) 6695 * 6696 *fpu = io_fpu + FPU_OFNC + (vp << 4);6697 * 6695 6696 | fpu = io_fpu + FPU_OFNC + (vp << 4); 6697 6698 6698 asl #5,D0 6699 6699 ext.l D0 6700 6700 move.l D0,A_FPU 6701 add.l #_io_fpu+ $4000,A_FPU6702 * 6703 *fp = &ip->idhfnc[12];6704 * 6701 add.l #_io_fpu+0x4000,A_FPU 6702 6703 | fp = &ip->idhfnc[12]; 6704 6705 6705 move.l #144,A_FP 6706 6706 add.l IP(A6),A_FP 6707 6707 add.l #86,A_FP 6708 * 6709 *pt = &ip->idhpnt[fp->idfpt1];6710 * 6708 6709 | pt = &ip->idhpnt[fp->idfpt1]; 6710 6711 6711 clr.l D0 6712 6712 move.b 6(A_FP),D0 … … 6718 6718 add.l #242,D0 6719 6719 move.l D0,PT(A6) 6720 * 6721 .page 6722 * 6723 *srcnum = group | fp->idfsrc;6724 * 6720 6721 .page 6722 6723 | srcnum = group | fp->idfsrc; 6724 6725 6725 move.w GROUP(A6),D0 6726 6726 ext.l D0 … … 6729 6729 or D1,D0 6730 6730 move D0,SRCNUM(A6) 6731 * 6732 *vep = &valents[srcnum];6733 * 6731 6732 | vep = &valents[srcnum]; 6733 6734 6734 add.l D0,D0 6735 6735 move.l D0,D1 … … 6738 6738 add.l #_valents,D0 6739 6739 move.l D0,VEP(A6) 6740 * 6741 *smp = vpsms[vp];6742 * 6740 6741 | smp = vpsms[vp]; 6742 6743 6743 move VP(A6),A0 6744 6744 add.l A0,A0 … … 6746 6746 add.l #_vpsms,A0 6747 6747 move.l (A0),A_SMP 6748 * 6749 *if (srcnum NE smp->sm) {6750 * 6748 6749 | if (srcnum NE smp->sm) { 6750 6751 6751 clr D0 6752 6752 move 10(A_SMP),D0 6753 6753 cmp SRCNUM(A6),D0 6754 6754 beq F12L113 6755 * 6756 *(smp->prv)->nxt = smp->nxt;6757 * 6755 6756 | (smp->prv)->nxt = smp->nxt; 6757 6758 6758 move.l 4(A_SMP),A0 6759 6759 move.l (A_SMP),(A0) 6760 * 6761 *(smp->nxt)->prv = smp->prv;6762 * 6760 6761 | (smp->nxt)->prv = smp->prv; 6762 6763 6763 move.l (A_SMP),A0 6764 6764 move.l 4(A_SMP),4(A0) 6765 * 6766 * smp->prv = (struct sment *)vep;6767 * 6765 6766 | smp->prv = (struct sment |)vep; 6767 6768 6768 move.l VEP(A6),4(A_SMP) 6769 * 6770 *smp->nxt = vep->nxt;6771 * 6769 6770 | smp->nxt = vep->nxt; 6771 6772 6772 move.l VEP(A6),A0 6773 6773 move.l (A0),(A_SMP) 6774 * 6775 *(vep->nxt)->prv = smp;6776 * 6774 6775 | (vep->nxt)->prv = smp; 6776 6777 6777 move.l VEP(A6),A0 6778 6778 move.l (A0),A0 6779 6779 move.l A_SMP,4(A0) 6780 * 6781 *vep->nxt = smp;6782 * 6780 6781 | vep->nxt = smp; 6782 6783 6783 move.l VEP(A6),A0 6784 6784 move.l A_SMP,(A0) 6785 * 6786 *smp->sm = srcnum;6787 * 6785 6786 | smp->sm = srcnum; 6787 6788 6788 move SRCNUM(A6),10(A_SMP) 6789 * 6790 *}6791 * 6792 *mltval = fp->idfmlt;6793 * 6789 6790 | } 6791 6792 | mltval = fp->idfmlt; 6793 6794 6794 F12L113: move 2(A_FP),MLTVAL(A6) 6795 * 6796 .page 6797 * 6798 *switch (fp->idfsrc) {6799 * 6795 6796 .page 6797 6798 | switch (fp->idfsrc) { 6799 6800 6800 move.b 4(A_FP),D0 6801 6801 ext.w d0 6802 6802 cmp #10,D0 6803 6803 bhi F12L122 6804 * 6804 6805 6805 asl #2,D0 6806 6806 lea F12L123,A0 6807 6807 movea.l 0(A0,D0.W),A0 6808 6808 jmp (A0) 6809 * 6810 *case SM_NONE:6811 *mltval = 0;6812 * 6809 6810 | case SM_NONE: 6811 | mltval = 0; 6812 6813 6813 F12L116: clr MLTVAL(A6) 6814 * 6815 *tsrcval = 0;6816 * 6814 6815 | tsrcval = 0; 6816 6817 6817 clr TSRCVAL(A6) 6818 * 6819 *break;6820 * 6818 6819 | break; 6820 6821 6821 bra F12L114 6822 * 6823 *case SM_RAND:6824 *tsrcval = xgetran(mltval);6825 * 6822 6823 | case SM_RAND: 6824 | tsrcval = xgetran(mltval); 6825 6826 6826 F12L117: move MLTVAL(A6),(sp) 6827 6827 jsr _xgetran 6828 6828 move D0,TSRCVAL(A6) 6829 * 6830 *break;6831 * 6829 6830 | break; 6831 6832 6832 bra F12L114 6833 * 6834 *case SM_PTCH:6835 *tsrcval = pch;6836 * 6833 6834 | case SM_PTCH: 6835 | tsrcval = pch; 6836 6837 6837 F12L118: move PCH(A6),TSRCVAL(A6) 6838 * 6839 *break;6840 * 6838 6839 | break; 6840 6841 6841 bra F12L114 6842 * 6843 .page 6844 * 6845 *case SM_FREQ:6846 *tsrcval = ptoftab[(pch >> 7) & 0x00FF];6847 * 6842 6843 .page 6844 6845 | case SM_FREQ: 6846 | tsrcval = ptoftab[(pch >> 7) & 0x00FF]; 6847 6848 6848 F12L119: move PCH(A6),D0 6849 6849 asr #7,D0 … … 6853 6853 add.l #_ptoftab,A0 6854 6854 move (A0),TSRCVAL(A6) 6855 * 6856 *break;6857 * 6855 6856 | break; 6857 6858 6858 bra F12L114 6859 * 6860 *case SM_KVEL:6861 *tsrcval = veltab[trg];6862 * 6859 6860 | case SM_KVEL: 6861 | tsrcval = veltab[trg]; 6862 6863 6863 F12L120: move TRG(A6),A0 6864 6864 add.l A0,A0 6865 6865 add.l #_veltab,A0 6866 6866 move (A0),TSRCVAL(A6) 6867 * 6868 *break;6869 * 6867 6868 | break; 6869 6870 6870 bra F12L114 6871 * 6872 *case SM_KPRS:6873 *tsrcval = prstab[trg];6874 * 6871 6872 | case SM_KPRS: 6873 | tsrcval = prstab[trg]; 6874 6875 6875 F12L121: move TRG(A6),A0 6876 6876 add.l A0,A0 6877 6877 add.l #_prstab,A0 6878 6878 move (A0),TSRCVAL(A6) 6879 * 6880 *break;6881 * 6879 6880 | break; 6881 6882 6882 bra F12L114 6883 * 6884 *default:6885 *tsrcval = vep->val;6886 * 6883 6884 | default: 6885 | tsrcval = vep->val; 6886 6887 6887 F12L122: move.l VEP(A6),A0 6888 6888 move 8(A0),TSRCVAL(A6) 6889 * 6890 *}6891 * 6892 .page 6893 * 6894 *srcval = tsrcval;6895 * 6889 6890 | } 6891 6892 .page 6893 6894 | srcval = tsrcval; 6895 6896 6896 F12L114: move TSRCVAL(A6),SRCVAL(A6) 6897 * 6898 .page 6899 * 6900 *if (pt->ipvsrc) {6901 * 6897 6898 .page 6899 6900 | if (pt->ipvsrc) { 6901 6902 6902 F12L124: move.l PT(A6),A0 6903 6903 tst.b 6(A0) 6904 6904 beq F12L136 6905 * 6906 *switch (pt->ipvsrc) {6907 * 6905 6906 | switch (pt->ipvsrc) { 6907 6908 6908 move.l PT(A6),A0 6909 6909 move.b 6(A0),D0 … … 6912 6912 cmp #9,D0 6913 6913 bhi F12L144 6914 * 6914 6915 6915 asl #2,D0 6916 6916 lea F12L145,A0 6917 6917 move.l 0(A0,D0.W),A0 6918 6918 jmp (A0) 6919 * 6920 *case SM_RAND:6921 *ltmp = xgetran(pt_>ipvmlt);6922 * 6919 6920 | case SM_RAND: 6921 | ltmp = xgetran(pt_>ipvmlt); 6922 6923 6923 F12L139: move.l PT(A6),A0 6924 6924 move 4(A0),(sp) … … 6926 6926 ext.l D0 6927 6927 move.l D0,LTMP(A6) 6928 * 6929 *break;6930 * 6928 6929 | break; 6930 6931 6931 bra F12L137 6932 * 6933 *case SM_PTCH:6934 *ltmp = pch;6935 * 6932 6933 | case SM_PTCH: 6934 | ltmp = pch; 6935 6936 6936 F12L140: move PCH(A6),A0 6937 6937 move.l A0,LTMP(A6) 6938 * 6939 *break;6940 * 6938 6939 | break; 6940 6941 6941 bra F12L137 6942 * 6943 .page 6944 * 6945 *case SM_FREQ:6946 *ltmp = ptoftab[(pch >> 7) & 0x00FF];6947 * 6942 6943 .page 6944 6945 | case SM_FREQ: 6946 | ltmp = ptoftab[(pch >> 7) & 0x00FF]; 6947 6948 6948 F12L141: move PCH(A6),D0 6949 6949 asr #7,D0 … … 6955 6955 ext.l D0 6956 6956 move.l D0,LTMP(A6) 6957 * 6958 *break;6959 * 6957 6958 | break; 6959 6960 6960 bra F12L137 6961 * 6962 *case SM_KVEL:6963 *ltmp = veltab[trg];6964 * 6961 6962 | case SM_KVEL: 6963 | ltmp = veltab[trg]; 6964 6965 6965 F12L142: move TRG(A6),A0 6966 6966 add.l A0,A0 … … 6969 6969 ext.l D0 6970 6970 move.l D0,LTMP(A6) 6971 * 6972 *break;6973 * 6971 6972 | break; 6973 6974 6974 bra F12L137 6975 * 6976 .page 6977 * 6978 *case SM_KPRS:6979 *ltmp = prstab[trg];6980 * 6975 6976 .page 6977 6978 | case SM_KPRS: 6979 | ltmp = prstab[trg]; 6980 6981 6981 F12L143: move TRG(A6),A0 6982 6982 add.l A0,A0 … … 6985 6985 ext.l D0 6986 6986 move.l D0,LTMP(A6) 6987 * 6988 *break;6989 * 6987 6988 | break; 6989 6990 6990 bra F12L137 6991 * 6992 .page 6993 * 6994 *default:6995 *ltmp = valents[group | pt->ipvsrc].val;6996 * 6991 6992 .page 6993 6994 | default: 6995 | ltmp = valents[group | pt->ipvsrc].val; 6996 6997 6997 F12L144: move.l PT(A6),A0 6998 6998 clr.l D0 … … 7008 7008 move 8(A0,A1.l),D0 7009 7009 move.l D0,LTMP(A6) 7010 * 7011 *}7012 * 7013 * 7014 .page 7015 * 7016 * ltmp = (ltmp *pt->ipvmlt) >> 15;7017 * 7010 7011 | } 7012 7013 7014 .page 7015 7016 | ltmp = (ltmp | pt->ipvmlt) >> 15; 7017 7018 7018 F12L137: move.l PT(A6),A0 7019 7019 move.w 4(A0),D0 … … 7023 7023 asr.l D1,D0 7024 7024 move.l D0,LTMP(A6) 7025 * 7026 *ltmp += (long)pt->ipval;7027 * 7025 7026 | ltmp += (long)pt->ipval; 7027 7028 7028 move.l PT(A6),A0 7029 7029 move 2(A0),D0 7030 7030 ext.l D0 7031 7031 add.l D0,LTMP(A6) 7032 * 7033 *if (ltmp GT (long)VALMAX)7034 *ltmp = (long)VALMAX;7035 * 7032 7033 | if (ltmp GT (long)VALMAX) 7034 | ltmp = (long)VALMAX; 7035 7036 7036 cmp.l #VALMAX,LTMP(A6) 7037 7037 ble F12L146 7038 * 7038 7039 7039 move.l #VALMAX,LTMP(A6) 7040 7040 bra F12L147 7041 * 7042 *else if (ltmp LT (long)VALMIN)7043 *ltmp = (long)VALMIN;7044 * 7041 7042 | else if (ltmp LT (long)VALMIN) 7043 | ltmp = (long)VALMIN; 7044 7045 7045 F12L146: cmp.l #VALMIN,LTMP(A6) 7046 7046 bge F12L147 7047 * 7047 7048 7048 move.l #VALMIN,LTMP(A6) 7049 * 7050 *tfpval = (short)ltmp;7051 * 7049 7050 | tfpval = (short)ltmp; 7051 7052 7052 F12L147: move.w LTMP+2(A6),TFPVAL(A6) 7053 7053 bra F12L149 7054 * 7055 *} else {7056 * 7057 *tfpval = pt->ipval;7058 * 7054 7055 | } else { 7056 7057 | tfpval = pt->ipval; 7058 7059 7059 F12L136: move.l PT(A6),A0 7060 7060 move 2(A0),TFPVAL(A6) 7061 * 7062 *}7063 * 7064 .page 7065 * 7066 *fpmant = (((long)pt->iptom & 0x0000FFF0L)7067 * *((long)timemlt & 0x0000FFFFL)) >> 15;7068 * 7061 7062 | } 7063 7064 .page 7065 7066 | fpmant = (((long)pt->iptom & 0x0000FFF0L) 7067 | | ((long)timemlt & 0x0000FFFFL)) >> 15; 7068 7069 7069 F12L149: move.l PT(A6),A0 7070 7070 move.w (A0),D0 7071 7071 move.w D0,D2 7072 andi.w # $FFF0,D07072 andi.w #0xFFF0,D0 7073 7073 move.w _timemlt,D1 7074 7074 muls D1,D0 … … 7076 7076 asr.l D1,D0 7077 7077 move D0,R_FPMANT 7078 * 7079 *fpexp = expbit[pt->iptim & 0x000F];7080 * 7081 and # $000F,D27078 7079 | fpexp = expbit[pt->iptim & 0x000F]; 7080 7081 and #0x000F,D2 7082 7082 move D2,A0 7083 7083 add.l A0,A0 7084 7084 add.l #_expbit,A0 7085 7085 move (A0),R_FPEXP 7086 * 7087 .page 7088 * 7089 *fp->idfpch = pch;7090 * 7086 7087 .page 7088 7089 | fp->idfpch = pch; 7090 7091 7091 F12L162: move PCH(A6),(A_FP) 7092 * 7093 *fpval = ((tfpval >> 5) - 500) << 6;7094 * 7092 7093 | fpval = ((tfpval >> 5) - 500) << 6; 7094 7095 7095 move TFPVAL(A6),R_FPVAL 7096 7096 asr #5,R_FPVAL 7097 7097 add #-500,R_FPVAL 7098 7098 asl #6,R_FPVAL 7099 * 7100 .page 7101 * 7099 7100 .page 7101 7102 7102 move.b 5(A_FP),D0 7103 7103 ext.w D0 7104 7104 sub.w #1,D0 7105 7105 movea.l PT(A6),A0 7106 * 7107 *oldi = setipl(FPU_DI);7108 * 7106 7107 | oldi = setipl(FPU_DI); 7108 7109 7109 move sr,OLDI(A6) 7110 7110 move #FPU_DI,sr 7111 * 7111 7112 7112 F12L168: clr.b 10(A0) 7113 7113 add.l #12,a0 7114 7114 dbra D0,F12L168 7115 * 7116 .page 7117 * 7118 *fp->idftmd ^= I_NVBITS;7119 * 7115 7116 .page 7117 7118 | fp->idftmd ^= I_NVBITS; 7119 7120 7120 F12L165: eor.b #24,7(A_FP) 7121 * 7122 *fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003;7123 * 7121 7122 | fpctl = (fp->idftmd & (I_NRATIO | I_NVBITS)) | 0x0003; 7123 7124 7124 move.b 7(A_FP),R_FPCTL 7125 7125 and #28,R_FPCTL 7126 7126 or #3,R_FPCTL 7127 * 7128 *fp->idfcpt = fp->idfpt1;7129 * 7127 7128 | fp->idfcpt = fp->idfpt1; 7129 7130 7130 move.b 6(A_FP),8(A_FP) 7131 * 7132 *fp->idftmd |= I_ACTIVE;7133 * 7131 7132 | fp->idftmd |= I_ACTIVE; 7133 7134 7134 or.b #2,7(A_FP) 7135 * 7136 *fp->idftrf = trg;7137 * 7135 7136 | fp->idftrf = trg; 7137 7138 7138 move TRG(A6),10(A_FP) 7139 * 7140 * *(fpu + (long)FPU_TCV1) = srcval;7141 * 7142 move SRCVAL(A6), $8(A_FPU)7143 * 7144 *++octype;7145 * 7139 7140 | |(fpu + (long)FPU_TCV1) = srcval; 7141 7142 move SRCVAL(A6),0x8(A_FPU) 7143 7144 | ++octype; 7145 7146 7146 add #1,OCTYPE(A6) 7147 * 7148 * *(fpu + (long)FPU_TSF1) = mltval;7149 * 7150 move MLTVAL(A6), $A(A_FPU)7151 * 7152 *++octype;7153 * 7147 7148 | |(fpu + (long)FPU_TSF1) = mltval; 7149 7150 move MLTVAL(A6),0xA(A_FPU) 7151 7152 | ++octype; 7153 7154 7154 add #1,OCTYPE(A6) 7155 * 7156 * *(fpu + (long)FPU_TMNT) = fpmant;7157 * 7158 move R_FPMANT, $14(A_FPU)7159 * 7160 *++octype;7161 * 7155 7156 | |(fpu + (long)FPU_TMNT) = fpmant; 7157 7158 move R_FPMANT,0x14(A_FPU) 7159 7160 | ++octype; 7161 7162 7162 add #1,OCTYPE(A6) 7163 * 7164 * *(fpu + (long)FPU_TEXP) = fpexp;7165 * 7166 move R_FPEXP, $16(A_FPU)7167 * 7168 *++octype;7169 * 7163 7164 | |(fpu + (long)FPU_TEXP) = fpexp; 7165 7166 move R_FPEXP,0x16(A_FPU) 7167 7168 | ++octype; 7169 7170 7170 add #1,OCTYPE(A6) 7171 * 7172 .page 7173 * 7174 *if (fp->idftmd & I_VNSUBN)7175 * 7171 7172 .page 7173 7174 | if (fp->idftmd & I_VNSUBN) 7175 7176 7176 btst #3,7(A_FP) 7177 7177 beq F12L169 7178 * 7179 * *(fpu + (long)FPU_TNV1) = fpval;7180 * 7181 move R_FPVAL, $1C(A_FPU)7178 7179 | |(fpu + (long)FPU_TNV1) = fpval; 7180 7181 move R_FPVAL,0x1C(A_FPU) 7182 7182 bra F12L170 7183 * 7184 *else7185 * *(fpu + (long)FPU_TNV0) = fpval;7186 * 7183 7184 | else 7185 | |(fpu + (long)FPU_TNV0) = fpval; 7186 7187 7187 F12L169: move R_FPVAL,2(A_FPU) 7188 * 7189 *++octype;7190 * 7188 7189 | ++octype; 7190 7191 7191 F12L170: add #1,OCTYPE(A6) 7192 * 7193 * *(fpu + (long)FPU_TCTL) = fpctl;7194 * 7192 7193 | |(fpu + (long)FPU_TCTL) = fpctl; 7194 7195 7195 move R_FPCTL,(A_FPU) 7196 * 7197 *setipl(oldi);7198 * 7196 7197 | setipl(oldi); 7198 7199 7199 move OLDI(A6),sr 7200 * 7201 *}7202 * 7203 .page 7204 * 7200 7201 | } 7202 7203 .page 7204 7205 7205 FNEXIT: tst.l (sp)+ 7206 7206 movem.l (sp)+,R_FPVAL-R_FPMANT/A_SMP-A_FP 7207 7207 unlk A6 7208 7208 rts 7209 * 7210 *}7211 * 7212 .page 7213 * 7209 7210 | } 7211 7212 .page 7213 7214 7214 .data 7215 * 7216 *Jump tables for switch statements7217 *---------------------------------7218 * 7215 7216 | Jump tables for switch statements 7217 | --------------------------------- 7218 7219 7219 F00L123: .dc.l F00L116 7220 7220 .dc.l F00L117 … … 7228 7228 .dc.l F00L122 7229 7229 .dc.l F00L119 7230 * 7230 7231 7231 F00L145: .dc.l F00L139 7232 7232 .dc.l F00L144 … … 7239 7239 .dc.l F00L144 7240 7240 .dc.l F00L141 7241 * 7241 7242 7242 F01L123: .dc.l F01L116 7243 7243 .dc.l F01L117 … … 7251 7251 .dc.l F01L122 7252 7252 .dc.l F01L119 7253 * 7253 7254 7254 F01L145: .dc.l F01L139 7255 7255 .dc.l F01L144 … … 7262 7262 .dc.l F01L144 7263 7263 .dc.l F01L141 7264 * 7264 7265 7265 F02L123: .dc.l F02L116 7266 7266 .dc.l F02L117 … … 7274 7274 .dc.l F02L122 7275 7275 .dc.l F02L119 7276 * 7276 7277 7277 F02L145: .dc.l F02L139 7278 7278 .dc.l F02L144 … … 7285 7285 .dc.l F02L144 7286 7286 .dc.l F02L141 7287 * 7287 7288 7288 F03L123: .dc.l F03L116 7289 7289 .dc.l F03L117 … … 7297 7297 .dc.l F03L122 7298 7298 .dc.l F03L119 7299 * 7299 7300 7300 F03L145: .dc.l F03L139 7301 7301 .dc.l F03L144 … … 7308 7308 .dc.l F03L144 7309 7309 .dc.l F03L141 7310 * 7310 7311 7311 F04L123: .dc.l F04L116 7312 7312 .dc.l F04L117 … … 7320 7320 .dc.l F04L122 7321 7321 .dc.l F04L119 7322 * 7322 7323 7323 F04L145: .dc.l F04L139 7324 7324 .dc.l F04L144 … … 7331 7331 .dc.l F04L144 7332 7332 .dc.l F04L141 7333 * 7333 7334 7334 F05L123: .dc.l F05L116 7335 7335 .dc.l F05L117 … … 7343 7343 .dc.l F05L122 7344 7344 .dc.l F05L119 7345 * 7345 7346 7346 F05L145: .dc.l F05L139 7347 7347 .dc.l F05L144 … … 7354 7354 .dc.l F05L144 7355 7355 .dc.l F05L141 7356 * 7356 7357 7357 F06L123: .dc.l F06L116 7358 7358 .dc.l F06L117 … … 7366 7366 .dc.l F06L122 7367 7367 .dc.l F06L119 7368 * 7368 7369 7369 F06L145: .dc.l F06L139 7370 7370 .dc.l F06L144 … … 7377 7377 .dc.l F06L144 7378 7378 .dc.l F06L141 7379 * 7379 7380 7380 F07L123: .dc.l F07L116 7381 7381 .dc.l F07L117 … … 7389 7389 .dc.l F07L122 7390 7390 .dc.l F07L119 7391 * 7391 7392 7392 F07L145: .dc.l F07L139 7393 7393 .dc.l F07L144 … … 7400 7400 .dc.l F07L144 7401 7401 .dc.l F07L141 7402 * 7402 7403 7403 F08L123: .dc.l F08L116 7404 7404 .dc.l F08L117 … … 7412 7412 .dc.l F08L122 7413 7413 .dc.l F08L119 7414 * 7414 7415 7415 F08L145: .dc.l F08L139 7416 7416 .dc.l F08L144 … … 7423 7423 .dc.l F08L144 7424 7424 .dc.l F08L141 7425 * 7425 7426 7426 F09L123: .dc.l F09L116 7427 7427 .dc.l F09L117 … … 7435 7435 .dc.l F09L122 7436 7436 .dc.l F09L119 7437 * 7437 7438 7438 F09L145: .dc.l F09L139 7439 7439 .dc.l F09L144 … … 7446 7446 .dc.l F09L144 7447 7447 .dc.l F09L141 7448 * 7448 7449 7449 F10L123: .dc.l F10L116 7450 7450 .dc.l F10L117 … … 7458 7458 .dc.l F10L122 7459 7459 .dc.l F10L119 7460 * 7460 7461 7461 F10L145: .dc.l F10L139 7462 7462 .dc.l F10L144 … … 7469 7469 .dc.l F10L144 7470 7470 .dc.l F10L141 7471 * 7471 7472 7472 F11L123: .dc.l F11L116 7473 7473 .dc.l F11L117 … … 7481 7481 .dc.l F11L122 7482 7482 .dc.l F11L119 7483 * 7483 7484 7484 F11L145: .dc.l F11L139 7485 7485 .dc.l F11L144 … … 7492 7492 .dc.l F11L144 7493 7493 .dc.l F11L141 7494 * 7494 7495 7495 F12L123: .dc.l F12L116 7496 7496 .dc.l F12L117 … … 7504 7504 .dc.l F12L122 7505 7505 .dc.l F12L119 7506 * 7506 7507 7507 F12L145: .dc.l F12L139 7508 7508 .dc.l F12L144 … … 7515 7515 .dc.l F12L144 7516 7516 .dc.l F12L141 7517 * 7518 *vbtab -- vbuf pointer table -- indexed by voice number7519 *----- ---------------------------------------------7517 7518 | vbtab -- vbuf pointer table -- indexed by voice number 7519 | ----- --------------------------------------------- 7520 7520 vbtab: .dc.l _vbufs 7521 7521 .dc.l _vbufs+VBLEN … … 7530 7530 .dc.l _vbufs+(10*VBLEN) 7531 7531 .dc.l _vbufs+(11*VBLEN) 7532 * 7532 7533 7533 .end
Note:
See TracChangeset
for help on using the changeset viewer.