home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / SamLP.AMOS / SamLP.amosSourceCode
Encoding:
AMOS Source Code  |  1993-09-05  |  1.7 KB  |  84 lines

  1. '
  2. ' SamLongPlay Procedures V1.0
  3. '
  4. ' Written by Christopher Hodges
  5. '
  6. Dim SDAT(3,8)
  7. Global SDAT()
  8. F$=Command Line$
  9. If F$="" Then Amos To Front : F$=Fsel$("","","Please select a","DSound Dump file") : Amos To Back 
  10. If F$="" Then End 
  11. If Exist(F$)=0 Then End 
  12. Open In 1,F$
  13.   A$=Input$(1,4)
  14.   If Leek(Varptr(A$))=Lof(1)-6
  15.     A$=Input$(1,2)
  16.     FREQ=Deek(Varptr(A$))
  17.   Else 
  18.     FREQ=15625
  19.   End If 
  20. Close 1
  21. SAMLP[F$,0,0,3,15,64]
  22. End 
  23. Procedure SAMLP[F$,V,LOP,QUIT,BANK,BUF]
  24.   VV=1 : If V Then For A=1 To V : Add VV,VV : Next 
  25.   VV=3
  26.   Erase BANK : Reserve As Chip Work BANK,BUF*1048+1048
  27.   Open In V+1,F$
  28.   LS=Lof(V+1) : LB=BUF*512
  29.   FREQ=15625
  30.   A$=Input$(1,4)
  31.   If Leek(Varptr(A$))=LS-6
  32.     A$=Input$(1,2)
  33.     FREQ=Deek(Varptr(A$))
  34.     LOP=6
  35.   End If 
  36.   If A$="FORM"
  37.     Repeat 
  38.       A$=Input$(1,4)
  39.     Until A$="VHDR"
  40.     A$=Input$(1,24)
  41.     FREQ=Deek(Varptr(A$)+16)
  42.     Repeat 
  43.       A$=Input$(1,4)
  44.     Until A$="BODY"
  45.     A$=Input$(1,4)
  46.     LOP=Pof(1)
  47.   End If 
  48.   Add LS,-Pof(1)
  49.   B=0 : FL=0 : S=Start(BANK) : L=LS
  50.   Repeat 
  51.     LL=Min(L,LB)
  52.     If L-LL>0 and L-LL<LB/2 Then LL=LB/2
  53.     Sload V+1 To S+B*LB,LL
  54.     If FL
  55.       Sam Swap VV To S+B*LB,LL
  56.       SAMPL=0
  57.       While Sam Swapped(V)=0
  58.         SAMPL=1
  59.         Multi Wait 
  60.         If(Inkey$<>"") or Mouse Key>0
  61.           Sam Stop VV
  62.           Close V+1
  63.           Erase BANK
  64.           Pop Proc
  65.         End If 
  66.       Wend 
  67.       If SAMPL=0
  68.         Sam Raw VV,S+B*LB,LL,FREQ
  69.       End If 
  70.     Else 
  71.       Sam Raw VV,S+B*LB,LL,FREQ
  72.       FL=1
  73.     End If 
  74.     B=1-B
  75.     Add L,-LL
  76.     If L=0 and LOP>-1 Then Pof(V+1)=LOP : L=LS-LOP+1
  77.   Until L=0
  78.   Fill S+B*LB To S+B*LB+LB,0
  79.   Sam Swap VV To S+B*LB,LB
  80.   While Sam Swapped(V)=0 : Wend 
  81.   Sam Stop VV
  82.   Close V+1
  83.   Erase BANK
  84. End Proc