MSYS.S (12708B)
1 * msys 2 org = $d400 3 lst off 4 *------------------------------- 5 * 6 * Music System ][ 7 * by Kyle Freeman 8 * (c) 1986 9 * 10 * Adapted by Jordan Mechner 11 * July 1989 12 * 13 *------------------------------- 14 org org 15 16 jmp _MINIT 17 jmp _MPLAY 18 19 *------------------------------- 20 MusicTable = $d000 ;start address of music data 21 22 *------------------------------- 23 MADRLO = MusicTable 24 MADRHI = MusicTable+$68 25 26 R = $00 27 INDEX = R+30 28 29 *------------------------------- 30 NOTE DFB 122,254,238,226,214,202,190,178,170,158,150,142,134 31 DFB 126,118,112,106,100,94,88,84,78,74,70,66 32 DFB 250,234,222,210,198,186,174,166,154,146,138,130 33 DFB 122,114,108,102,96,90,84,80,74,70,66,62 34 DFB 58,54,51,48,45,42,39,37,34,32,30,28 35 DFB 26,24,22,21,19,18,17,16,15,14,13,12 36 DFB 11,10,9 37 LENGTH DFB 28,4,4,4,4,4,5,5,5,6,6,6,7 38 DFB 7,8,8,8,9,9,10,11,11,12,13,13 39 DFB 14,15,16,17,18,19,20,21,23,24,25,27 40 DFB 28,30,32,34,36,38,40,42,45,48,50,53 41 DFB 57,60,64,67,71,76,81,84,91,95,101,107 42 DFB 113,121,125,134,139,151,158,165,181,191,201,213 43 DFB 227,242,255 44 MV0 HEX 0E0100FF 45 MV1 HEX 0E04020100FF 46 MV2 HEX 0E080604020100FF 47 MV3 HEX 0E0A080605040302010100FF 48 MV4 HEX 0E0A08070605040403037F02020202010101010100FF 49 MV5 HEX 010B0DFF 50 MV6 HEX 000103050B0DFF 51 MV7 HEX 000102030405060708090A0B0C0DFF 52 MV8 HEX 010E7F0200FF 53 MV9 HEX 01040E7F040100FF 54 MV10 HEX 010306090E7F0906030100FF 55 MV11 HEX 0E060B040803060205010501040003000200020001000100010001000100FF 56 MV12 HEX 01040E040D040C040B040B040B040B040B040B040B040B040B040B04FF 57 MV13 HEX 040E087F040100FF 58 MV14 HEX 0E02087F040100FF 59 HEX 0B030A030903080307030603050304030403FF 60 MV15 HEX 01030B0301030B0301030B0301030B0301030B03 61 HEX 01030B0301030B0301030B0201020401FF 62 HM1 DFB 1,3,128 63 HM2 DFB 3,1,1,1,1,1,1,2,2,1,1,1,1,1,2,1,2,1 64 DFB 1,1,1,2,1,1,2,1,1,1,2,1,1,1,2,1,1 65 DFB 2,1,1,1,1,2,1,2,1,1,1,1,1,2,2,1,1,1,1,1,1,128 66 HM3 DFB 3,1,1,1,1,2,2,1,1,1,2,1,2,1,1,2,1,1 67 DFB 2,1,2,1,1,1,2,2,1,1,1,1,128 68 HM4 DFB 3,1,1,1,2,2,1,1,2,1,2,1,2,1,1,2,2,1,1,1,128 69 HM5 DFB 3,1,1,2,2,1,2,1,2,2,1,1,128 70 HM6 DFB 3,1,1,1,1,2,1,2,1,1,2,1,1,1,2,2,1,1 71 DFB 1,1,2,2,1,1,1,2,1,1,2,1,2,1,1,1,1,128 72 HM7 DFB 3,1,2,2,2,1,128 73 HM8 DFB 3,1,1,1,1,2,1,1,2,1,2,1,1,1,1,2,2,1,1 74 DFB 1,2,1,1,1,2,2,1,1,1,1,2,1,2,1,1,2,1,1,1,1,128 75 HM9 DFB 3,1,1,2,1,2,2,1,1,2,2,1,2,1,1,128 76 HM10 DFB 3,1,1,1,2,1,1,2,2,1,1,1,2,1,2,1,2 77 DFB 1,1,1,2,2,1,1,2,1,1,1,128 78 HM11 DFB 3,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,1,1,1,1 79 DFB 1,1,1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1 80 DFB 2,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,1,2 81 DFB 1,1,1,2,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1 82 DFB 2,1,1,1,1,1,1,1,2,1,2,1,1,1,1,1,2,1,1,1,1 83 DFB 1,1,1,2,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,128 84 HM12 DFB 3,2,128 85 HM13 DFB 5,2,3,2,4,2,3,2,128 86 HM14 DFB 4,1,1,1,1,1,2,2,1,2,1,1,2,1,2,1,1,1,3,1,1 87 DFB 2,1,1,2,1,1,2,2,1,2,1,1,1,1,2,3,1,1,1 88 DFB 1,1,3,1,1,2,1,1,2,2,1,1,1,1,3,1,2,1,1,1,2 89 DFB 1,1,3,1,1,2,1,1,1,2,1,3,1,1,1,1,2,2,1 90 DFB 1,2,1,1,3,1,1,1,1,1,3,2,1,1,1,1,2,1,2,1,1 91 DFB 1,2,1,1,2,1,1,3,1,1,1,2,1,2,1,1,2,1,2 92 DFB 2,1,1,1,1,1,128 93 HM15 DFB 4,1,1,1,2,2,2,1,2,1,2,1,3,1,1,2,2,1,2,1 94 DFB 3,1,1,1,3,2,1,1,2,1,3,1,2,1,1,2,3,1,1,1 95 DFB 3,1,2,1,2,2,1,1,3,1,2,1,2,1,2,2,2,1,1,1 96 DFB 128 97 HM16 DFB 4,1,1,2,2,2,2,1,2,2,2,1,3,1,1,3,2,1,2,1 98 DFB 3,2,1,1,3,2,1,2,2,1,3,1,2,2,1,2,3,1,1,2 99 DFB 3,1,2,1,2,3,1,1,3,1,2,2,2,1,2,2,2,2,1,1,128 100 HM17 DFB 4,1,1,1,1,2,2,1,2,1,2,1,2,1,1,2,2,1,2,1 101 DFB 2,1,1,1,3,2,1,1,1,1,3,1,2,1,1,2,2,1,1,1 102 DFB 3,1,2,1,1,2,1,1,3,1,2,1,1,1,2,2,2,1,1,1 103 DFB 3,1,1,1,2,2,2,1,1,1,2,1,3,1,1,2,1,1,2,1 104 DFB 3,1,1,1,2,2,1,1,2,1,3,1,1,1,1,2,3,1,1,1 105 DFB 2,1,2,1,2,2,1,1,2,1,2,1,2,1,2,2,1,1,1,1 106 DFB 128 107 HM18 DFB 3,128 108 HM19 HEX 030101010301010103010103010103018E 109 HM20 HEX 030303030303030303030303030303018E 110 HM21 HEX 050305030502040204020402040203018E 111 HM22 DFB 3,1,1,2,3,1,1,1,3,1,3,1,1,1,3,1,3,2,1,1 112 DFB 1,2,1,1,3,1,1,1,1,1,1,1,3,2,1,1,1,1,3,1 113 DFB 1,1,1,2,1,2,1,1,1,3,1,3,1,1,2,1,1,1,1,1 114 DFB 1,1,3,1,1,3,2,1,1,1,3,1,1,1,3,1,1,2,1,1 115 DFB 3,1,1,2,1,1,1,1,1,1,3,2,1,1,1,3,1,1,3,1 116 DFB 1,3,1,2,2,1,1,1,1,1,3,1,1,3,1,1,1,3,1,1 117 DFB 1,1,1,1,3,1,1,2,1,1,1,2,3,1,1,2,1,1,3,1 118 DFB 1,1,3,1,2,1,1,1,3,1,1,2,1,1,3,2,1,1,1,3 119 DFB 1,1,2,1,1,1,3,1,1,3,1,1,1,3,1,2,1,3,1,1 120 DFB 128 121 HM23 DFB 4,1,2,1,1,4,1,1,2,1,4,1,2,4,1,1,2,1,4 122 DFB 1,3,1,2,4,1,3,1,2,1,1,1,3,1,4,1,3,1,2,1,3 123 DFB 1,2,1,2,1,3,1,4,1,3,1,1,2,1,1,1,3,1,1 124 DFB 4,1,2,1,2,1,3,1,1,4,1,4,1,1,2,1,1,4,1,1,2 125 DFB 1,3,1,4,1,1,2,1,4,1,1,1,2,1,1,4,1,1,1 126 DFB 3,1,1,2,1,1,1,4,1,1,2,1,1,4,1,1,2,1,1,4,1 127 DFB 4,1,1,3,1,1,2,1,4,1,2,1,1,4,1,1,3,1,1 128 DFB 4,1,1,3,1,4,1,2,1,4,1,1,4,1,1,2,1,2,1,4,1 129 DFB 1,1,1,3,1,2,1,2,1,4,1,1,3,1,4,1,3,1,1 130 DFB 2,1,4,1,2,1,1,4,1,1,1,3,1,2,1,4,1,2,1,1,1 131 DFB 4,1,1,2,1,4,1,3,1,4,1,1,2,1,1,2,1,1,1 132 DFB 4,1,3,1,1,2,1,4,1,1,1,2,1,1,4,1,3,1,4,1,1 133 DFB 1,1,2,1,4,1,1,128 134 HM24 DFB 3,3,3,3,3,3,3,1,3,1,3,1,3,1,3,1,3,1,3 135 DFB 1,1,3,1,1,3,1,1,3,1,1,3,1,1,3,1,1,3,1,1,1 136 DFB 3,1,1,1,3,1,1,1,3,1,1,1,3,1,1,1,3,1,1 137 DFB 1,3,1,1,3,1,1,3,1,1,3,1,1,3,1,1,3,1,1,3,1 138 DFB 3,1,3,1,3,1,3,1,3,1,128 139 HM25 DFB 3,3,3,1,3,1,3,1,1,3,1,1,3,1,1,1,3,1,1,1,3,1,1,3,1,1,3,1,3,1,128 140 HM26 DFB 3,3,1,1,1,1,3,3,3,128 141 HM27 DFB 3,3,1,1,3,1,3,1,1,128 142 HM28 DFB 3,3,1,128 143 HM29 HEX 0303030303030103010301030101038D 144 HM30 DFB 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3 145 DFB 1,1,3,1,1,3,1,3,1,3,3,3,3,3,1,3,1,146 146 HM31 DFB 1,4,128 147 HM32 DFB 1,3,128 148 HARMTBL DFB #<HM1 149 DFB #<HM2 150 DFB #<HM3 151 DFB #<HM4 152 DFB #<HM5 153 DFB #<HM6 154 DFB #<HM7 155 DFB #<HM8 156 DFB #<HM9 157 DFB #<HM10 158 DFB #<HM11 159 DFB #<HM12 160 DFB #<HM13 161 DFB #<HM14 162 DFB #<HM15 163 DFB #<HM16 164 DFB #<HM17 165 DFB #<HM18 166 DFB #<HM19 167 DFB #<HM20 168 DFB #<HM21 169 DFB #<HM22 170 DFB #<HM23 171 DFB #<HM24 172 DFB #<HM25 173 DFB #<HM26 174 DFB #<HM27 175 DFB #<HM28 176 DFB #<HM29 177 DFB #<HM30 178 DFB #<HM31 179 DFB #<HM32 180 HARMTBH DFB #>HM1 181 DFB #>HM2 182 DFB #>HM3 183 DFB #>HM4 184 DFB #>HM5 185 DFB #>HM6 186 DFB #>HM7 187 DFB #>HM8 188 DFB #>HM9 189 DFB #>HM10 190 DFB #>HM11 191 DFB #>HM12 192 DFB #>HM13 193 DFB #>HM14 194 DFB #>HM15 195 DFB #>HM16 196 DFB #>HM17 197 DFB #>HM18 198 DFB #>HM19 199 DFB #>HM20 200 DFB #>HM21 201 DFB #>HM22 202 DFB #>HM23 203 DFB #>HM24 204 DFB #>HM25 205 DFB #>HM26 206 DFB #>HM27 207 DFB #>HM28 208 DFB #>HM29 209 DFB #>HM30 210 DFB #>HM31 211 DFB #>HM32 212 ENVTBL DFB #<MV0 213 DFB #<MV1 214 DFB #<MV2 215 DFB #<MV3 216 DFB #<MV4 217 DFB #<MV5 218 DFB #<MV6 219 DFB #<MV7 220 DFB #<MV8 221 DFB #<MV9 222 DFB #<MV10 223 DFB #<MV11 224 DFB #<MV12 225 DFB #<MV13 226 DFB #<MV14 227 DFB #<MV15 228 ENVTBH DFB #>MV0 229 DFB #>MV1 230 DFB #>MV2 231 DFB #>MV3 232 DFB #>MV4 233 DFB #>MV5 234 DFB #>MV6 235 DFB #>MV7 236 DFB #>MV8 237 DFB #>MV9 238 DFB #>MV10 239 DFB #>MV11 240 DFB #>MV12 241 DFB #>MV13 242 DFB #>MV14 243 DFB #>MV15 244 MVOLTBL HEX 4A4AEA0A0A4969D0 245 MVT2 HEX 4AEAEAEA0A0F0704 246 VTBL HEX 0001020304 247 HTPTBL DFB 0,24,19,16,12,22,7,24,16,22,35,0,0,26,19,16,24 248 DFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 249 AMPTBL DFB 1,2,3,4,5,7,9,11,14,17,21,26,32,39,47,56 250 MINIT LDA #$EA 251 STA VATC1 252 STA VATC2 253 STA VXAT1 254 STA VXAT2 255 LDA #<HM1 256 STA MBASS1+1 257 STA MMBASS2+1 258 LDA #>HM1 259 STA MBASS1+2 260 STA MMBASS2+2 261 LDA #0 262 STA R+5 263 STA $AF 264 STA $B6 265 STA R+4 266 LDX INDEX 267 LDA MADRLO,X 268 STA R+0 269 LDA MADRHI,X 270 STA R+1 271 LDA #0 272 STA R+15 273 STA R+24 274 STA R+27 275 NEWNOTE LDY #0 276 STY R+12 277 STY R+3 278 LDA #1 279 STA MLBL300+1 280 INC R+0 281 INC R+0 282 BNE MNOWIC 283 INC R+1 284 MNOWIC LDA (R+0),Y 285 TAX 286 INY 287 LDA (R+0),Y 288 BEQ MSYSTM1 289 TXA 290 AND #%11111100 291 STA R+13 292 BEQ MNOBC1 293 LSR 294 LSR 295 CLC 296 ADC R+4 297 STA R+13 298 CMP #$19 299 BGE MNOBC1 300 LDA #7 301 STA MLBL300+1 302 MNOBC1 LDA (R+0),Y 303 BEQ MSYSTM1 304 JMP NMSYSM 305 MSYSTM1 TXA 306 BEQ MINIT 307 CMP #$FE 308 BNE MXNQ10 309 LDY R+24 310 BEQ MXQN8 311 MRET1 LDA R+25 312 STA R+0 313 LDA R+26 314 STA R+1 315 LDA #0 316 STA R+24 317 MXQN8 JMP NEWNOTE 318 MXNQ10 CMP #$FD 319 BNE MXQN9 320 LDX $1E60 321 LDA $1E80,X 322 ORA #$80 323 STA $1E80,X 324 JMP NEWNOTE 325 MXQN9 CMP #$FF 326 BNE NOPAUS1 327 STA R+10 328 LDA #0 329 STA R+13 330 LDA NOTE 331 STA R+8 332 LDA LENGTH 333 STA R+9 334 RTS 335 NOPAUS1 CPX #9 336 BGE SYMPH01 337 LDA MVOLTBL-1,X 338 STA VATC1 339 LDA MVT2-1,X 340 STA VXAT1 341 JMP NEWNOTE 342 SYMPH01 TXA 343 LDX #0 344 STX R+4 345 SEC 346 SBC #9 347 CMP #32 348 BGE HOCTSFT1 349 GOHERE4 TAX 350 STX $AF 351 LDA HTPTBL,X 352 CLC 353 ADC R+4 354 STA R+4 355 LDA HARMTBL,X 356 STA MBASS1+1 357 LDA HARMTBH,X 358 STA MBASS1+2 359 JMP NEWNOTE 360 HOCTSFT1 LDX #12 361 STX R+4 362 AND #$1F 363 JMP GOHERE4 364 NMSYSM TAY 365 AND #%00111111 366 BEQ MMGA03 367 JMP NTVJNK 368 MMGA03 TYA 369 AND #%11000000 370 CMP #%10000000 371 BNE MNSSC1 372 DEX 373 BMI ALTSNG 374 STX INDEX 375 ALTSNG1 JMP NEWNOTE 376 ALTSNG LDY $1E60 377 LDA $1E80,Y 378 BPL ALTSNG1 379 TXA 380 AND #$7F 381 STA INDEX 382 JMP MINIT 383 MNSSC1 CMP #%01000000 384 BNE MGARY5 385 LDA #1 386 STA R+15 387 STA R+21 388 TXA 389 LDX R+0 390 STX R+22 391 LDX R+1 392 STX R+23 393 ASL 394 BCS NOTVI1 395 ADC R+0 396 STA R+0 397 LDA #0 398 ADC R+1 399 STA R+1 400 JSR MMNNOTE 401 JMP NEWNOTE 402 MGARY5 LDA R+24 403 BEQ MMGAR3 404 JMP MRET1 405 MMGAR3 LDA #1 406 STA R+24 407 TXA 408 LDX R+0 409 STX R+25 410 LDX R+1 411 STX R+26 412 ASL 413 STA R+14 414 BCS NOTRP1 415 LDA R+0 416 SEC 417 SBC R+14 418 STA R+0 419 LDA R+1 420 SBC #0 421 STA R+1 422 JMP NEWNOTE 423 NOTRP1 LDA R+0 424 SBC R+14 425 STA R+0 426 LDA R+1 427 SBC #0 428 STA R+1 429 DEC R+1 430 JMP NEWNOTE 431 NOTVI1 CLC 432 ADC R+0 433 STA R+0 434 LDA #0 435 ADC R+1 436 STA R+1 437 INC R+1 438 JSR MMNNOTE 439 JMP NEWNOTE 440 NTVJNK STA R+10 441 TYA 442 AND #%11000000 443 LSR 444 LSR 445 LSR 446 LSR 447 STA R+7 448 TXA 449 AND #%00000011 450 ORA R+7 451 TAX 452 LDA AMPTBL,X 453 STA R+11 454 LDA ENVTBL,X 455 STA MVAR6+1 456 LDA ENVTBH,X 457 STA MVAR6+2 458 LDX R+13 459 LDA NOTE,X 460 STA R+8 461 LDA LENGTH,X 462 STA R+9 463 RTS 464 MPLAY LDA R+15 465 BEQ NO2VOI 466 LDA R+21 467 EOR #1 468 STA R+21 469 BNE NO2VOI 470 JMP MMPLAY 471 V8HOLD LDA R+12 472 CMP R+10 473 BLT MESKP 474 INC R+12 475 NO2VOI LDY R+12 476 MVAR6 LDA $FFFF,Y 477 BMI MESKP 478 CMP #$7F 479 BEQ V8HOLD 480 VATC1 ASL 481 VXAT1 ASL 482 STA R+11 483 INC R+12 484 MESKP LDA $AF 485 BNE NEWMM4 486 LDA #0 487 STA R+3 488 NEWMM4 LDA R+11 489 STA VTBL+2 490 LSR 491 STA VTBL+1 492 CLC 493 ADC R+11 494 STA VTBL+3 495 LDA R+11 496 ASL 497 STA VTBL+4 498 INC VTBL+1 499 INC VTBL+2 500 INC VTBL+3 501 INC VTBL+4 502 LDX R+9 503 LDA R+13 504 BNE MSEGL5 505 STA VTBL+1 506 STA VTBL+2 507 STA VTBL+3 508 STA VTBL+4 509 MSEGL5 JMP MSEG 510 MSEGL4 AND #$7F 511 STA R+3 512 MSEG 513 LDY R+3 514 MBASS1 LDA HM1,Y 515 BMI MSEGL4 516 INC R+3 517 TAY 518 LDA VTBL-1,Y 519 STA R+6 520 SEC 521 SBC R+8 522 TAY 523 MADJLP INY 524 BNE MADJLP 525 MLBL300 LDY #1 526 MLMDI LDA R+8 527 SEC 528 MDLOOP SBC #1 529 BNE MDLOOP 530 DEY 531 BNE MLMDI 532 LDY R+6 533 BEQ MFIZZLE 534 M30A LDA $C030 535 MVDIT DEY 536 BNE MVDIT 537 M30B LDA $C030 538 MFIZZLE DEX 539 BNE MSEG 540 DEC R+10 541 BNE LBL10 542 JMP NEWNOTE 543 LBL10 RTS 544 MMINIT LDA #0 545 STA R+15 546 RTS 547 MMNNOTE LDY #0 548 STY R+2 549 STY R+16 550 LDA #1 551 STA MMLM302+1 552 INC R+22 553 INC R+22 554 BNE MMNOWIC 555 INC R+23 556 MMNOWIC LDA (R+22),Y 557 TAX 558 INY 559 LDA (R+22),Y 560 BEQ MSYSTM2 561 TXA 562 AND #%11111100 563 STA R+17 564 BEQ MMNOBC2 565 LSR 566 LSR 567 CLC 568 ADC R+5 569 STA R+17 570 CMP #$19 571 BGE MMNOBC2 572 LDA #7 573 STA MMLM302+1 574 MMNOBC2 LDA (R+22),Y 575 BNE NMMSYSMM 576 MSYSTM2 TXA 577 BEQ MMINIT 578 CMP #$FE 579 BNE MXQN6 580 LDY R+27 581 BEQ MXQN5 582 MRET2 LDA R+28 583 STA R+22 584 LDA R+29 585 STA R+23 586 LDA #0 587 STA R+27 588 MXQN5 JMP MMNNOTE 589 MXQN6 CMP #$FF 590 BNE NOPAUS2 591 STA R+18 592 LDA #0 593 STA R+17 594 LDA NOTE 595 STA R+19 596 LDA LENGTH 597 STA R+20 598 RTS 599 NOPAUS2 CPX #9 600 BGE SYMPH02 601 LDA MVOLTBL-1,X 602 STA VATC2 603 LDA MVT2-1,X 604 STA VXAT2 605 JMP MMNNOTE 606 SYMPH02 TXA 607 LDX #0 608 STX R+5 609 SEC 610 SBC #9 611 CMP #32 612 BGE HOCTSFT4 613 GOHERE8 TAX 614 STX $B6 615 LDA HTPTBL,X 616 CLC 617 ADC R+5 618 STA R+5 619 LDA HARMTBL,X 620 STA MMBASS2+1 621 LDA HARMTBH,X 622 STA MMBASS2+2 623 KFMM465 JMP MMNNOTE 624 HOCTSFT4 LDX #12 625 STX R+5 626 AND #$1F 627 JMP GOHERE8 628 NMMSYSMM TAY 629 AND #%00111111 630 BNE M2NTV 631 TYA 632 AND #%11000000 633 CMP #%11000000 634 BNE KFMM465 635 LDA R+27 636 BNE MRET2 637 LDA #1 638 STA R+27 639 TXA 640 LDX R+22 641 STX R+28 642 LDX R+23 643 STX R+29 644 ASL 645 STA R+14 646 BCS NOTRP2 647 LDA R+22 648 SEC 649 SBC R+14 650 STA R+22 651 LDA R+23 652 SBC #0 653 STA R+23 654 NOTRP2 LDA R+22 655 JMP MMNNOTE 656 SBC R+14 657 STA R+22 658 LDA R+23 659 SBC #0 660 STA R+23 661 DEC R+23 662 JMP MMNNOTE 663 M2NTV STA R+18 664 TYA 665 AND #%11000000 666 LSR 667 LSR 668 LSR 669 LSR 670 STA R+7 671 TXA 672 AND #%00000011 673 ORA R+7 674 TAX 675 LDA AMPTBL,X 676 STA $B7 677 LDA ENVTBL,X 678 STA MVAR2C+1 679 LDA ENVTBH,X 680 STA MVAR2C+2 681 LDX R+17 682 LDA NOTE,X 683 STA R+19 684 LDA LENGTH,X 685 STA R+20 686 RTS 687 MV8HOLD LDA R+16 688 CMP R+18 689 BLT MMESKP 690 INC R+16 691 MMPLAY LDY R+16 692 MVAR2C LDA $FFFF,Y 693 BMI MMESKP 694 CMP #$7F 695 BEQ MV8HOLD 696 VATC2 ASL 697 VXAT2 ASL 698 STA $B7 699 INC R+16 700 MMESKP LDA $B6 701 BNE NEWMM5 702 LDA #0 703 STA R+2 704 NEWMM5 LDA $B7 705 STA VTBL+2 706 LSR 707 STA VTBL+1 708 CLC 709 ADC $B7 710 STA VTBL+3 711 LDA $B7 712 ASL 713 STA VTBL+4 714 INC VTBL+1 715 INC VTBL+2 716 INC VTBL+3 717 INC VTBL+4 718 LDX R+20 719 LDA R+17 720 BNE MMSEGL5 721 STA VTBL+1 722 STA VTBL+2 723 STA VTBL+3 724 STA VTBL+4 725 MMSEGL5 JMP MMSEG 726 MMSEGL4 AND #$7F 727 STA R+2 728 MMSEG 729 LDY R+2 730 MMBASS2 LDA HM1,Y 731 BMI MMSEGL4 732 INC R+2 733 TAY 734 LDA VTBL-1,Y 735 STA R+6 736 SEC 737 SBC R+19 738 TAY 739 MMADJLP INY 740 BNE MMADJLP 741 MMLM302 LDY #1 742 MMLMMDI LDA R+19 743 SEC 744 MMDLOOP SBC #1 745 BNE MMDLOOP 746 DEY 747 BNE MMLMMDI 748 LDY R+6 749 BEQ MMFIZZY 750 M20A LDA $C030 751 MMVDIT DEY 752 BNE MMVDIT 753 M20B LDA $C030 754 MMFIZZY DEX 755 BNE MMSEG 756 DEC R+18 757 BNE MLZ10 758 JMP MMNNOTE 759 MLZ10 RTS 760 761 *------------------------------- 762 * 763 * M I N I T 764 * 765 * Inititalize music system & prepare to play a song 766 * 767 * In: A = song # 768 * 769 *------------------------------- 770 _MINIT sta INDEX 771 jmp MINIT 772 773 *------------------------------- 774 * 775 * M P L A Y 776 * 777 * Continue playing current song 778 * (Generates a fraction of a second of sound) 779 * 780 * Out: A = current song # 781 * (Most songs set song #0 when finished.) 782 * 783 * NOTE: MSYS uses aux z.p. locations $00-1F. These must 784 * remain undisturbed for the duration of each song. 785 * 786 *------------------------------- 787 _MPLAY jsr MPLAY 788 lda INDEX 789 rts 790 791 *------------------------------- 792 lst 793 eof ds 1 794 usr $a9,34,$600,*-org 795 lst off