100 REM**** MUSIK-KURS (TEIL 7) 101 REM**** 5-VOICE-PLAYER 102 REM**** 103 REM**** BY A.& F.HUGENROTH 104 REM**** 105 : 106 SYS9*4096:.OPT OO:S = 54272 107 : 108 INITIRQ SEI 109 LDA #NEWIRQ:STA $315 111 LDA #4:STA COUNT 112 LDA FSTEP:STA CSTEP 113 LDA #0:STA CNOTE 114 LDY #31:IIRQ2 STA SNSP1,Y 115 STA SNSP2,Y:STA SNSP3,Y 116 DEY:BPL IIRQ2 117 LDA #NMI1:STA $319 119 LDA #$81:STA $DD0D:LDA #1:STA $DD0E 120 LDA #128:STA $DD04:STA $DD05 121 LDA #$C8:STA $A6:STA $A9 122 LDA #$C7:STA $A5:STA $A8 123 LDA #$FF:STA $A4:STA $A7 124 LDA #$44:STA $C800 125 CLI 126 RTS 127 : 128 NMI1 STA $9B:STY $9E:LDY #0:CLC 129 LDA ($A4),Y:ADC ($A7),Y:STA $9F 130 AND #15:ORA $AA:STA $D418 131 LDA $A6:CMP $A5:BEQ NMI1B 132 INC $A4:BNE NMI1B:INC $A5 133 NMI1B LDA #SNSP1:ADC #0:STA $F8 297 LDY #22:LDA ($F7),Y 298 ASL:ASL:ASL:ASL:STA $F9:LDY #16 299 LDA ($F7),Y:BEQ SSIDEND:AND #15 300 ORA $F9:STA S+23:LDA ($F7),Y 301 AND #240:STA $AA:LDA #0:STA S+21 302 LDY #23:LDA ($F7),Y:STA S+22 303 SSIDEND LDA TIMERL:STA $DC04 304 LDA TIMERH:STA $DC05:RTS 305 : 306 SOUND LDX #0:LDA #SNSP1:STA $F8 308 ;** 309 ;** ARPEGGIO 310 ;** 311 SOUND1 LDA #25:CLC 312 ADC ARPCOUNT,X:TAY:LDA ($F7),Y 313 STA ARPNOTE,X 314 DEC ARPSPEED,X:BPL SOUND2 315 LDY #24:LDA ($F7),Y:STA ARPSPEED,X 316 LDA ARPCOUNT,X:CLC:ADC #1 317 AND #3:STA ARPCOUNT,X 318 ;** 319 ;** VIBRATO 320 ;** 321 SOUND2 LDY #7:LDA ($F7),Y 322 BEQ SOUND2B:SEC:SBC #1:STA ($F7),Y 323 JMP SOUND3 324 SOUND2B DEC VIBLEV,X:BPL SOUND2C 325 LDY #8:LDA ($F7),Y:EOR #255 326 STA ($F7),Y:INY:LDA ($F7),Y 327 STA VIBLEV,X:SOUND2C LDY #8 328 LDA ($F7),Y:BMI SOUND2D:CLC 329 ADC VIBLO,X:STA VIBLO,X:LDA VIBHI,X 330 ADC #0:STA VIBHI,X:JMP SOUND3 331 SOUND2D EOR #255:STA $F9:SEC 332 LDA VIBLO,X:SBC $F9:STA VIBLO,X 333 LDA VIBHI,X:SBC #0:STA VIBHI,X 334 ;** 335 ;** PULSE 336 ;** 337 SOUND3 LDY #5:LDA ($F7),Y:STA $F9 338 LDA PULSRI,X:BMI SOUND3A 339 LDA PULSLO,X:CLC:ADC $F9 340 STA PULSLO,X:LDA PULSHI,X:ADC #0 341 STA PULSHI,X 342 DEC PCOUNT,X:BPL SOUND4 343 LDY #4:LDA ($F7),Y:STA PCOUNT,X 344 LDA #128:STA PULSRI,X:JMP SOUND4 345 SOUND3A LDA PULSLO,X:SEC:SBC $F9 346 STA PULSLO,X:LDA PULSHI,X:SBC #0 347 STA PULSHI,X:DEC PCOUNT,X 348 BPL SOUND4:LDY #3:LDA ($F7),Y 349 STA PCOUNT,X:LDA #0:STA PULSRI,X 350 LDY #6:LDA ($F7),Y:AND #16 351 BNE SOUND4:DEY:LDA #0:STA ($F7),Y 352 ;** 353 ;** PORTAMENTO 354 ;** 355 SOUND4 LDY #6:LDA ($F7),Y:AND #15 356 BEQ SOUND5:AND #3:CMP #1 357 BEQ SOUND4A:LDY #12:LDA PORTLO,X 358 CLC:ADC ($F7),Y:STA PORTLO,X 359 INY:LDA PORTHI,X:ADC ($F7),Y 360 STA PORTHI,X:INY:CMP ($F7),Y 361 BCC SOUND5:JMP SOUND4B 362 SOUND4A LDY #12:LDA PORTLO,X:SEC 363 SBC ($F7),Y:STA PORTLO,X 364 INY:LDA PORTHI,X:SBC ($F7),Y 365 STA PORTHI,X:INY:CMP ($F7),Y 366 BCS SOUND5:SOUND4B LDY #6 367 LDA ($F7),Y:AND #4:BEQ SOUND4C 368 LDA #0:STA PORTLO,X:STA PORTHI,X 369 JMP SOUND5:SOUND4C LDA ($F7),Y 370 AND #240:STA ($F7),Y 371 ;** 372 ;** FILTER 373 ;** 374 SOUND5 CPX TRIGGER:BNE SOUND6 375 LDA FRICHT,X:BMI SOUND5A 376 DEC FTIME1,X:BPL SOUND5B:LDA #255 377 STA FRICHT,X:STA FTIME1,X 378 JMP SOUND6:SOUND5B LDY #19 379 LDA ($F7),Y:LDY #23:CLC:ADC ($F7),Y 380 STA ($F7),Y:JMP SOUND6 381 SOUND5A DEC FTIME2,X 382 BPL SOUND5D:LDA #0:STA FRICHT,X 383 LDA #255:STA FTIME2,X 384 LDY #21:LDA ($F7),Y:BEQ SOUND6 385 LDY #17:LDA ($F7),Y:STA FTIME1,X 386 INY:LDA ($F7),Y:STA FTIME2,X 387 JMP SOUND6:SOUND5D LDY #20 388 LDA ($F7),Y:LDY #23:CLC:ADC ($F7),Y 389 STA ($F7),Y 390 ;** 391 ;** GLIDE 392 ;** 393 SOUND6 LDA GLIDEON,X:BNE SOUND6D 394 JMP SOUND7:SOUND6D LDY AKTNOTE1,X 395 LDA NOTELO,Y:CLC 396 ADC TLO,X:STA $F9:LDA NOTEHI,Y 397 ADC THI,X:STA $FA 398 LDA GLIDETO,X:CMP AKTNOTE1,X 399 BCC SOUND6A:LDY #12:LDA GLIDLO,X 400 CLC:ADC ($F7),Y:STA GLIDLO,X:INY 401 LDA GLIDHI,X:ADC ($F7),Y 402 STA GLIDHI,X:LDY GLIDETO,X 403 LDA $FA:CMP NOTEHI,Y 404 BCC SOUND7:BNE SOUND6B 405 LDA $F9:CMP NOTELO,Y:BCC SOUND7 406 JMP SOUND6B 407 SOUND6A LDY #12:LDA GLIDLO,X 408 SEC:SBC ($F7),Y:STA GLIDLO,X:INY 409 LDA GLIDHI,X:SBC ($F7),Y 410 STA GLIDHI,X:LDY GLIDETO,X 411 LDA NOTEHI,Y:CMP $FA:BCC SOUND7 412 BNE SOUND6B:LDA NOTELO,Y 413 CMP $F9:BCC SOUND7 414 SOUND6B LDA #0:STA GLIDEON,X 415 STA GLIDLO,X:STA GLIDHI,X 416 LDA GLIDETO,X:STA AKTNOTE1,X 417 ;** 418 ;** SOUNDENDE 419 ;** 420 SOUND7 LDA VIBLO,X:CLC 421 ADC PORTLO,X:STA TLO,X:LDA TLO,X 422 CLC:ADC GLIDLO,X:STA TLO,X 423 LDA VIBHI,X:ADC PORTHI,X:STA THI,X 424 LDA THI,X:CLC:ADC GLIDHI,X 425 STA THI,X:LDA TLO,X:CLC:LDY #15 426 ADC ($F7),Y:STA TLO,X 427 LDA THI,X:ADC #0:STA THI,X 428 LDA $F7:CLC:ADC #32:STA $F7 429 LDA $F8:ADC #0:STA $F8 430 INX:CPX #3:BCS SOUNDE:JMP SOUND1 431 SOUNDE JMP SETSID 432 : 433 : 434 : 435 TKTADRLO .BYT $00,$40,$80,$C0 436 TKTADRHI .BYT $B0,$B1,$B2,$B3 437 : .BYT $B4,$B5,$B6,$B7 438 : .BYT $B8,$B9,$BA,$BB 439 : .BYT $BC,$BD,$BE,$BF 440 NOTE1 .BYT 0 441 NOTE2 .BYT 0 442 NOTE3 .BYT 0 443 TKT1 .BYT 0 444 TKT2 .BYT 0 445 TKT3 .BYT 0 446 TSP1 .BYT 0 447 TSP2 .BYT 0 448 TSP3 .BYT 0 449 SND1 .BYT 0 450 SND2 .BYT 0 451 SND3 .BYT 0 452 ON1 .BYT 0 453 ON2 .BYT 0 454 ON3 .BYT 0 455 TLO .BYT 0,0,0 456 THI .BYT 0,0,0 457 PULSRI .BYT 0,0,0 458 PCOUNT .BYT 0,0,0 459 PULSLO .BYT 0,0,0 460 PULSHI .BYT 0,0,0 461 ARPCOUNT .BYT 0,0,0 462 ARPNOTE .BYT 0,0,0 463 ARPSPEED .BYT 0,0,0 464 VIBLEV .BYT 0,0,0 465 VIBLO .BYT 0,0,0 466 VIBHI .BYT 0,0,0 467 PORTLO .BYT 0,0,0 468 PORTHI .BYT 0,0,0 469 FRICHT .BYT 0,0,0 470 FTIME1 .BYT 0,0,0 471 FTIME2 .BYT 0,0,0 472 GLIDEON .BYT 0,0,0 473 GLIDETO .BYT 0,0,0 474 GLIDLO .BYT 0,0,0 475 GLIDHI .BYT 0,0,0 476 TRIGGER .BYT 0 477 CNOTE .BYT 0 478 CSTEP .BYT 0 479 FSTEP .BYT 0 480 LSTEP .BYT 3 481 COUNT .BYT 0 482 SPEED .BYT 0 483 TIMERL .BYT 0 484 TIMERH .BYT $39 485 DIGI1 .BYT 0 486 DIGI2 .BYT 0 487 SNSP1 .ASC "********************************" 488 SNSP2 .ASC "********************************" 489 SNSP3 .ASC "********************************" 490 AKTNOTE1 .BYT 0 491 AKTNOTE2 .BYT 0 492 AKTNOTE3 .BYT 0 493 NOTELO .BYT 22,39,57,75,95,116,138 494 : .BYT 161,186,212,240,14,45 495 : .BYT 78,113,150,190,231,20 496 : .BYT 66,116,169,224,27,90 497 : .BYT 156,226,45,123,207,39 498 : .BYT 133,232,81,193,55,180 499 : .BYT 56,196,89,247,158,78 500 : .BYT 10,208,162,129,109,103 501 : .BYT 112,137,178,237,59,157 502 : .BYT 20,160,69,3,219,207 503 : .BYT 225,18,101,219,118,58 504 : .BYT 39,65,138,5,181,157 505 : .BYT 193,36,201,182,237,115 506 : .BYT 78,130,20,10,106,59 507 : .BYT 130,72,147,107,218,231 508 : .BYT 156,4,40,20 509 NOTEHI .BYT 1,1,1,1,1,1,1,1,1,1,1 510 : .BYT 2,2,2,2,2,2,2,3,3,3,3 511 : .BYT 3,4,4,4,4,5,5,5,6,6,6 512 : .BYT 7,7,8,8,9,9,10,10,11 513 : .BYT 12,13,13,14,15,16,17 514 : .BYT 18,19,20,21,23,24,26 515 : .BYT 27,29,31,32,34,36,39 516 : .BYT 41,43,46,49,52,55,58 517 : .BYT 62,65,69,73,78,82,87 518 : .BYT 92,98,104,110,117,124 519 : .BYT 131,139,147,156,165 520 : .BYT 175,185,196,208,221 521 : .BYT 234,248 522 SNDADRL .BYT $00,$20,$40,$60 523 : .BYT $80,$A0,$C0,$E0 524 SNDADRH .BYT $AA,$AB,$AC,$AD