10
20
30
40
50 :
60 OSWORD=&FFF1
70 mc%=&900:ver$="1.00"
80 FOR P=0 TO 1
90 P%=mc%
100 [OPT P*3
110 .start
120 LDA &20E:CMP #beep MOD 256:BNE beep2
130 .store
140 LDA &20F:CMP #beep DIV 256:BNE beep2
150 LDA #0:STA start:\ already linked
160 .beep2
170 LDA #1:LDY #0:LDX #&A8:JSR &FFDA
180 LDY #0
190 .loop0
200 LDA (&A8),Y:CMP #13:BEQ beep1
210 AND #&DF:CMP #ASC"O":BNE beep1
220 INY:LDA (&A8),Y
230 AND #&DF:CMP #ASC"F":BNE beep1
240 LDA start:BNE end
250 LDA oldv:STA &20E
260 LDA oldv+1:STA &20F
270 .end
280 RTS
290 .beep1
300 LDA start:BEQ beep3:\ already ON
310 LDA &20E:STA oldv
320 LDA &20F:STA oldv+1
330 LDA #beep MOD 256:STA &20E
340 LDA #beep DIV 256:STA &20F
350 .beep3
360 LDY #0:LDA (&A8),Y:CMP #13:BEQ end
370 AND #&DF:CMP #ASC"O":BEQ end
380 LDA (&A8),Y:CMP #ASC"#":BNE beep4
390 STA type:BEQ end
400 .beep4
410 AND #3:STA sound:INY
420 LDA (&A8),Y:CMP #32:BNE end:INY
430 LDA (&A8),Y:CMP #13:BEQ end
440 CMP #ASC"A":BCC number:SBC #7:.number
450 AND #15:EOR #255:STA sound+2:INC sound+2:INY
460 LDA (&A8),Y:CMP #32:BNE end:INY
470 LDA (&A8),Y:CMP #13:BEQ end
480 AND #3:STA sound+6
490 RTS
500 .beep
510 PHA
520 LDA sound+2:STA store:PLA:PHA
530 PHA:LDA type:BNE beep_7:PLA
540 .beep8
550 STA sound+4
560 CMP #250:BCC beep8go
570 LDA #0:STA sound+2
580 .beep8go
590 TXA:PHA:TYA:PHA
600 LDX #sound MOD 256
610 LDY #sound DIV 256
620 LDA #7:JSR OSWORD
630 LDA store:STA sound+2
640 PLA:TAY:PLA:TAX:PLA
650 JMP (oldv)
660 .beep_7
670 PLA:AND #3:STA sound:PLA:PHA:AND #&FC:JMP beep8
680 .sound
690 EQUW 1:EQUW &FFF2
700 EQUW 0:EQUW 1
710 .type:EQUB 0
720 .oldv
730 ]
740 NEXT
750 PRINT"*SAVE BEEP ";~(mc%OR&FFFF0000);" ";~(P%OR&FFFF0000)