$CPU 8086 ' make compatible with XT systems $LIB ALL OFF ' turn off all PowerBASIC libraries $ERROR ALL OFF ' turn off all PowerBASIC error checking $OPTIMIZE SIZE ' optimize for smaller code $COMPILE UNIT ' compile to a UNIT (.PBU) '$COMPILE EXE ' compile to a UNIT (.PBU) DEFINT A-Z ' Required for all numeric functions, forces PB to not ' include floating point in UNIT (makes it smaller) '/*------------------------------------------------------------------*/ $CODE SEG "MLIB11" '/*------------------------------------------------------------------*/ SUB SSOUND(OPT%,TIMES%) PUBLIC IF TIMES% = 0 THEN TIMES% = 1 FOR CNT = 1 TO TIMES% '/* --- Beep ---*/ IF OPT% = 0 THEN SOUND 776.8,.9 END IF '/* --- Bat ---*/ IF OPT% = 1 THEN FOR X=12000 TO 1400 STEP -100 SOUND X,.11 NEXT X END IF '/* --- Birdcall ---*/ IF OPT% = 2 THEN A=3500:B=3000 SOUND A,.9 FOR X=1 TO 50:NEXT X SOUND B,.9 FOR X=1 TO 50:NEXT X SOUND 4000,.9 FOR X=1 TO 50:NEXT X END IF '/* --- Clock Ticking ---*/ IF OPT% = 3 THEN SOUND 12500,.35 FOR X=1 TO 600:NEXT X END IF '/* --- Conveyer ---*/ IF OPT% = 4 THEN FOR X=37 TO 100 SOUND X,.05 NEXT X END IF '/* --- Generator ---*/ IF OPT% = 5 THEN FOR X=37 TO 1000 SOUND X,.1:SOUND 2*X,.1:SOUND 3*X,.1 NEXT X FOR Y=1 TO 20 SOUND X,.1:SOUND 2*X,.1:SOUND 3*X,.1 NEXT Y END IF '/* --- Mech ---*/ IF OPT% = 6 THEN FOR X=400 TO 100 STEP -10 SOUND X,.01 SOUND X/2+37,.01 SOUND X/3+37,.01 NEXT X END IF '/* --- Phaser ---*/ IF OPT% = 7 THEN FOR X=50 TO 750 STEP 80 SOUND X,.1 NEXT X END IF '/* --- Phone ---*/ IF OPT% = 8 THEN FOR X=1 TO 30 SOUND 523.25,.5 SOUND 659.26,.5 NEXT X FOR TD=1 TO 1500:NEXT TD END IF '/* --- Photons ---*/ IF OPT% = 9 THEN FOR X=4000 TO 100 STEP -150 SOUND X,.01 SOUND X/2+37,.01 SOUND X/3+37,.01 IF X<200 THEN SOUND 30000,.1 NEXT X END IF '/* --- Saucer ---*/ IF OPT% = 10 THEN FOR A=500 TO 1500 STEP 200 SOUND A,.5 NEXT A END IF '/* -- Whooper ---*/ IF OPT% = 11 THEN FOR A=900 TO 1000 SOUND A,.089999999# NEXT END IF '/* --- Buzzer ---*/ IF OPT% = 12 THEN FOR X=1 TO 20 FOR A=5700 TO 16000 STEP 1500 SOUND A,.01 NEXT A NEXT X FOR TD=1 TO 1500:NEXT TD END IF '/* --- Laser ---*/ IF OPT% = 13 THEN FOR EX=1 TO 5 FOR E=300 TO 1800 STEP 150 SOUND E,.1 NEXT E NEXT EX END IF '/* --- KLAXON ---*/ IF OPT% = 14 THEN FOR CNT = 1 TO TIMES% SOUND 987, 5 SOUND 329, 5 NEXT CNT END IF '/* --- BOUNCE ---*/ IF OPT% = 15 THEN dLow = 246 Hi = 32767 FOR Count = 60 TO 1 STEP -2 SOUND dLow - Count / 2, Count / 20 SOUND Hi, Count / 15 NEXT Count END IF '/* --- Fall ---*/ IF OPT% = 16 THEN Hi = 2000 Low = 550 Del = 500 FOR Count = Hi TO Low STEP -10 SOUND Count, Del / Count NEXT Count END IF '/* --- Siren ---*/ IF OPT% = 17 THEN Hi = 780 Range = 650 FOR Count = Range TO -Range STEP -4 SOUND Hi - ABS(Count), .3 Count = Count - 2 / Range NEXT Count END IF '/* --- Squawk ---*/ IF OPT% = 18 THEN FOR I = 1 TO 20 SOUND I * 50, .1 SOUND I * 100, .1 SOUND I * 150, .1 NEXT I END IF '/* --- Coo ---*/ IF OPT% = 19 THEN FOR I = 0 TO 150 STEP 10 SOUND 1295 - I, .4 SOUND 1095 + I, .4 NEXT I END IF '/* --- Art ---*/ IF OPT% = 20 THEN FOR I = 1 TO 10 SOUND 1195 - 50 * I, .3 SOUND 1195 + 50 * I, .3 NEXT I END IF '/* --- Zhou ---*/ IF OPT% = 21 THEN FOR I = 40 TO 15 STEP -1 SOUND I * 90, .1 SOUND I * 80, .1 SOUND I * 70, .1 SOUND I * 60, .1 SOUND I * 50, .1 NEXT I END IF '/* --- ZAP ---*/ IF OPT% = 22 THEN Zap$ = "T255L64MLO4BAGFEDC