10 REM > Beep/s
   20 REM Play sounds as characters are printed
   30 REM Syntax: *BEEP (ON|OFF|<chn> <vol> <dur>)
   40 REM 25-Sep-85 J.G.Harston
   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)