ô > S/Music ô Graphical music display #ô Original by Bill Blunn 6/7/85 (!ô This version by J.G.Harston 2"ô *Music turns on (repeatable) <ô *CODE turns off F: PÞ space% &400 dIRQ2V=&206:USERV=&200 nmcode%=&FFFF0B58 x ã P=0 ¸ 1 ‚P%=mcode%:O%=space% Œ[OPT P*3+4 – .Start%  $LDA IRQ2V:CMP #CS%€255:BNE Setup ª$LDA IRQ2V+1:CMP#CS%256:BEQ Exit ´ .Setup ¾"JSR Vectors:\ Save old vectors ÈLDA #Int € 255:STA IRQ2V ÒLDA #Int 256:STA IRQ2V+1 ÜLDA #Undo € 255:STA USERV æLDA #Undo 256:STA USERV+1 ðLDA #&00:LDX #&04 ú .ClrLp  STA &93,X DEX:BNE ClrLp LDX #&FD:JSR IntMask " .Exit , LDX #7 6 .ExitLp @LDA Chars,X:JSR &FFEE JDEX:BPL ExitLp TRTS ^ .Chars hEQUB 12:EQUB 8:EQUB &27 rEQUB &18:EQUB 0:EQUB 28 |EQUB 7:EQUB 22 † .IntMask LDA #&E9:LDY #0:JMP &FFF4 š .Undo ¤LDX #&FF:JSR IntMask ® .Vectors ¸ LDX #1  .VecLp ÌLDA USERV,X:LDY OldUSERV,X Ö"STA OldUSERV,X:TYA:STA USERV,X àLDA IRQ2V,X:LDY OldIRQ2V,X ê"STA OldIRQ2V,X:TYA:STA IRQ2V,X ôDEX:BPL VecLp þRTS  .Screen LDA #32:LDX #255  .ScrBlnk &STA &7C40,X:DEX:BNE ScrBlnk 0 LDX #8 : .ScrLp D%LDA Vol,X:STA &7C00,X:STA &7C50,X NSTA &7CA0,X:STA &7CF0,X X%LDA Pit,X:STA &7C28,X:STA &7C78,X bSTA &7CC8,X:STA &7D18,X lDEX:BPL ScrLp vRTS €.Vol:EQUS "Volume0“" Š.Pit:EQUS "Pitch0— " ”: ž.CS%:.C%:\ Code start ¨ .L7D40 ².Int ¼ LDA &FC ÆPHA:TXA:PHA:TYA:PHA ÐLDA &FE4D:€ #&82 ÚCMP #&82:BEQ L7D53 äJMP L0CB0-CS%+C% î .L7D53 ø STA &FE4D LDA #&09:STA &90  LDA #&7C:STA &91 LDA #&30:STA &92  LDA #&7C:STA &93 *LDA #&00:STA L0CDC-CS%+C% 4 .L0C2B >LDX L0CDC-CS%+C% HLDA &0808,X RCMP #&C0:BMI L7D7B \CMP #&C7:BPL L7D7B f LDA #&C7 p .L7D7B zSEC:SBC #&C7 „&LSR A:LSR A:LSR A:STA L0CDE-CS%+C% ŽLDY #&00:LDA #&AF ˜ .L7D88 ¢CPY L0CDE-CS%+C%:BMI L7D8F ¬ LDA #&20 ¶ .L7D8F ÀSTA (&90),Y ÊINY:CPY #&10:BNE L7D88 Ô LDA &90:CLC:ADC #&50:STA &90 ÞBCC L7DA1:INC &91 è .L7DA1 òLDX L0CDC-CS%+C% üLDA L0CDE-CS%+C%:BEQ L7DB6  LDA &0830,X:STA L0CDD-CS%+C% CPX #&00:BEQ L7DFA  .L0C73 $LSR A:LSR A:LSR A ..L7DB6:.L0C76 8STA L0CDF-CS%+C% B LDY &94,X LLDA #&20:STA (&92),Y VLDA L0CDE-CS%+C%:BEQ L7DD7 `LDY #&A5:LDA L0CDD-CS%+C% j€ #&04:BEQ L7DCF t LDY #&AA ~ .L7DCF ˆTYA ’LDY L0CDF-CS%+C% œ STY &94,X ¦STA (&92),Y ° .L7DD7 º LDA &92:CLC:ADC #&50:STA &92 Ä BCC L7DE2 Î INC &93 Ø .L7DE2 âLDX L0CDC-CS%+C% ìINX öSTX L0CDC-CS%+C%  CPX #&04  BEQ L7DF0 JMP L0C2B-CS%+C% .L7DF0:.L0CB0 (#LDA &7D18:CMP #—"P":BNE CallScr 2#LDA &7C00:CMP #—"V":BEQ IntExit < .CallScr FJSR Screen P .IntExit ZPLA:TAY:PLA:TAX:PLA:STA &FC dJMP (OldIRQ2V-CS%+C%) n .L7DFA x€ #&07:CMP #&03:BEQ L7E0E ‚CMP #&07:BEQ L7E0E ŒPHA –LDA #&93:STA &7C2F  PLA ªJMP L0C76-CS%+C% ´ .L7E0E ¾LDA #&92:STA &7C2F È LDA &0831 ÒSTA L0CDD-CS%+C% ÜJMP L0C73-CS%+C% æ.L0CDC:BRK ð.L0CDD:BRK ú.L0CDE:BRK .L0CDF:BRK .OldIRQ2V:EQUW Int .OldUSERV:EQUW Undo "]í:O%=O%-4 ,Eñ"*SAVE Music ";~space%;" ";~O%;" ";~Start%„&FFFF0000;" ";~mcode% ÿ