home *** CD-ROM | disk | FTP | other *** search
- '*** OUT statement programming example
- '
- ' Play a scale using speaker and timer
- CONST WHOLE=5000!, QRTR=WHOLE/4.
- CONST C=523.0, D=587.33, E=659.26, F=698.46, G=783.99, A=880.00
- CONST B=987.77, C1=1046.50
- CALL Sounds(C,QRTR) : CALL Sounds(D,QRTR)
- CALL Sounds(E,QRTR) : CALL Sounds(F,QRTR)
- CALL Sounds(G,QRTR) : CALL Sounds(A,QRTR)
- CALL Sounds(B,QRTR) : CALL Sounds(C1,WHOLE)
-
- SUB Sounds (Freq!,Length!) STATIC
- 'Ports 66, 67, and 97 control timer and speaker
- '
- 'Divide clock frequency by sound frequency
- 'to get number of "clicks" clock must produce
- Clicks%=CINT(1193280!/Freq!)
- LoByte%=Clicks% AND &H00FF
- HiByte%=Clicks%\256
- 'Tell timer that data is coming
- OUT 67,182
- 'Send count to timer
- OUT 66,LoByte%
- OUT 66,HiByte%
- 'Turn speaker on by setting bits 0 and 1 of PPI chip.
- SpkrOn%=INP(97) OR &H03
- OUT 97,SpkrOn%
- 'Leave speaker on
- FOR I!=1 TO Length! : NEXT I!
- 'Turn speaker off.
- SpkrOff%=INP(97) AND &HFC
- OUT 97,SpkrOff%
- END SUB