home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1995-11-18 | 2.6 KB | 105 lines |
- '
- ' SamLongPlay Procedures V1.0
- '
- ' Written by Christopher Hodges
- '
- Extension_8_0A5E 1 : Extension_8_0A6E 1 : Extension_8_0A4C 1
- Screen Open 0,320,200,2,0
- Curs Off
- Palette 0,$FFF
- Dim SDAT(3,8)
- Global SDAT()
- Print "Bitte Taste dr�cken!"
- SAMLP["sound6",1,15000,12748,3,16,32]
- SAMLP["sound4",3,7000,-1,3,16,32]
- SETSAM["sound4",1,7000,0,16,32]
- SETSAM["sound6",0,15000,12748,17,32]
- Timer=0
- Print "during main-loop!"
- Repeat
- Multi Wait
- A$="Playing "+ Extension_8_0EB8(Timer/3000,2)+":"+ Extension_8_0EB8((Timer/50) mod 60,2)
- A$=A$+":"+ Extension_8_0EB8((Timer mod 50)*2,2)+" minutes..."
- Home : Print A$
- MANLP[1]
- MANLP[0]
- Until(Inkey$<>"") or(Mouse Key>0)
- FINSAM[1]
- FINSAM[0]
- End
- Procedure SAMLP[F$,V,FREQ,LOP,QUIT,BANK,BUF]
- Erase BANK : Reserve As Chip Work BANK,BUF*1048
- Open In V+1,F$
- LS=Lof(V+1) : LB=BUF*512
- B=0 : FL=0 : S=Start(BANK) : L=LS
- Repeat
- Multi Wait
- LL=Min(L,LB)
- If L-LL>0 and L-LL<LB/2 Then LL=LB/2
- Sload V+1 To S+B*LB,LL
- If FL
- Sam Swap Extension_8_04F8(V) To S+B*LB,LL
- While Sam Swapped(V)=0
- If((Inkey$<>"") and(QUIT and 1)) or((Mouse Key>0) and(QUIT and 2))
- Sam Stop Extension_8_04F8(V)
- Close V+1
- Erase BANK
- Pop Proc
- End If
- Wend
- Else
- Sam Raw Extension_8_04F8(V),S+B*LB,LL,FREQ
- FL=1
- End If
- B=1-B
- Add L,-LL
- If L=0 and LOP>-1 Then Pof(V+1)=LOP : L=LS-LOP+1
- Until L=0
- Fill S+B*LB To S+B*LB+LB,0
- Sam Swap Extension_8_04F8(V) To S+B*LB,LB
- While Sam Swapped(V)=0 : Wend
- Sam Stop Extension_8_04F8(V)
- Close V+1
- Erase BANK
- End Proc
- Procedure SETSAM[F$,V,FREQ,LOP,BANK,BUF]
- SDAT(V,0)= Extension_8_04F8(V)
- SDAT(V,1)=BANK
- Erase BANK : Reserve As Chip Work BANK,BUF*1048
- Open In V+1,F$
- SDAT(V,2)=Lof(V+1) : SDAT(V,3)=BUF*512
- SDAT(V,4)=SDAT(V,2) : SDAT(V,5)=0 : SDAT(V,6)=0
- SDAT(V,7)=LOP : SDAT(V,8)=FREQ
- End Proc
- Procedure MANLP[V]
- If Sam Swapped(V)=0 or SDAT(V,4)=0 Then Pop Proc
- S=Start(SDAT(V,1))
- L=SDAT(V,4) : LB=SDAT(V,3)
- LL=Min(L,LB) : VV=SDAT(V,0)
- If L-LL>0 and L-LL<LB/2 Then LL=LB/2
- A=SDAT(V,5)*LB
- Sload V+1 To S+A,LL
- If SDAT(V,6)
- Sam Swap VV To S+A,LL
- Else
- Sam Raw VV,S+A,LL,SDAT(V,8)
- SDAT(V,6)=1
- End If
- SDAT(V,5)=1-SDAT(V,5)
- Add L,-LL
- If L=0 and SDAT(V,7)>-1 Then Pof(V+1)=SDAT(V,7) : L=SDAT(V,2)-SDAT(V,7)
- SDAT(V,4)=L
- End Proc[SDAT(V,4)]
- Procedure FINSAM[V]
- Sam Stop SDAT(V,0)
- Close V+1
- Erase SDAT(V,1)
- End Proc
- Procedure WAISAM[V]
- S=Start(SDAT(V,1))
- LB=SDAT(V,3)
- A=SDAT(V,5)*LB
- Fill S+A To S+A+LB,0
- Sam Swap SDAT(V,0) To S+A,LB
- While Sam Swapped(V)=0 : Wend
- End Proc