'*********************************************************************** 
'
' First Amos-Demo by DARDO of LLORET FREE BYTE   
'  
'*********************************************************************** 
'
Set Buffer 15 : Colour Back 0
Close Workbench 
Close Editor : Screen Close 0
Dim YA(600),ZA(600),Y1(600),CA(600)
AZ=0
Screen Open 3,640,224,8,Lowres
'--------------------------------------------------------- 
'             lectura de la musica 
'Load "df0:musica2.abk"
Music 1
'--------------------------------------------------------- 
'--------------------------------------------------------- 
'     lectura del sprite 
'Load "df0:sprite1.abk"
'--------------------------------------------------------- 
'--------------------------------------------------------- 
'   subrutina de la lectura del grafic superior
Load Iff "df0:pic",3
'--------------------------------------------------------- 
Screen Hide 3 : Hide On 
Colour 15,0
Unpack 9 To 0
Screen Hide 0
Get Cblock 1,0,0,320,95
FT=180*2
X=40
P:
Cls 0
Hide 
Dim A7(6),B7(6),C7(6),D7(6),E7(6),F7(6)
A7(0)=0 : B7(0)=18 : C7(0)=120 : D7(0)=138 : E7(0)=230 : F7(0)=90
A7(1)=106 : B7(1)=18 : C7(1)=100 : D7(1)=115 : E7(1)=240 : F7(1)=90
A7(2)=203 : B7(2)=18 : C7(2)=120 : D7(2)=138 : E7(2)=240 : F7(2)=90
A7(3)=0 : B7(3)=160 : C7(3)=110 : D7(3)=90 : E7(3)=240 : F7(3)=120
A7(4)=120 : B7(4)=160 : C7(4)=110 : D7(4)=90 : E7(4)=250 : F7(4)=125
A7(5)=220 : B7(5)=160 : C7(5)=110 : D7(5)=90 : E7(5)=240 : F7(5)=120
Unpack 8 To 1
Screen Display 1,128,150,17,1
Fade 5
Colour 1,$FFF
X7=0
Unpack 7 To 6
Screen Hide 6
Global DT
DT=0
D7=1
NB=0
V1=4
N1=-5
Cls 0,0,160 To 320,250
M=0
Dim A(50),B(50)
For O=0 To 130 Step 26
   Inc T
   If T=3
      Dec O
   End If 
   For N=0 To 7
      Inc M
      A(M)=R
      R=R+39
      B(M)=O
   Next N
   R=0
Next O
Hide 
'--------------------------------------------------
'  subrutina del scroll inferior 
A$="         AGRADECEMOS A"
A$=A$+"  TODOS"
A$=A$+"  NUESTROS"
A$=A$+"  AMIGOS  "
'--------------------------------------------------
CAR=1
X=199
Y=199
NB=0
V7=1
NT=2
Screen 0
E=270
R=1
X9=380
Screen Open 4,640,224,8,L
Screen Hide 4
Screen Display 4,128,230,320,112
Curs Off 
Flash Off 
Cls 0
Put Cblock 1,0,0
For N=1 To 7
   C=C+2
   Colour N,C
Next N
Screen Copy 4,0,0,320,15 To 4,0,95
Screen Copy 4,0,0,320,112 To 4,0,112
Screen Copy 4,0,0,320,224 To 4,320,0
Channel 1 To Screen Offset 4
Amal 1,"Loop: Let X=RA: Let Y=RB;Pause;Jump Loop"
Screen Show 4
Screen Open 7,640,23,8,Lowres
Screen Display 7,128,300,320,20
Screen Open 5,640,50,4,L
Screen 5
Curs Off 
Cls 0
Screen Open 0,640,26,4,L
Screen 0
Screen Hide 0
Screen Display 5,128,300,320,60
Screen 0
Flash Off 
Dim T(50)
For N=0 To 15
   Read A : T(N)=A
Next N
Data 5,5,5,5,5,0,0,0,0,0,1,1,1,1,1
A=0
Curs Off 
Cls 0
N1=2
C=0
Screen Close 0
Screen Display 7,128,265,320,23
Screen Display 5,128,265,320,23
Wait Vbl 
Dual Playfield 7,5
Screen 7
Flash Off 
Cls 0
Get Palette 6
Screen 3
DD=1
Gosub MEG
Channel 13 To Screen Display 0
TT=210
Amal 13,"Let R0=8;Jump L;X:Let R0=8;L:Let Y=Y-R0; Let R1=R1+1;Pause; If Y>130 Jump X;If R1>1 Jump M;Jump L; M: Let R0=R0-1; Let R1=0;  Jump L"
Amal 10,"Let R0=8;Jump L;X:Let R0=8;L:Let Y=Y-R0; Let R1=R1+1;Pause; If Y>130 Jump X;If R1>1 Jump M;Jump L; M: Let R0=R0-1; Let R1=0;  Jump L"
Amal 11,"Let R0=8;Jump L;X:Let R0=8;L:Let Y=Y-R0; Let R1=R1+1;Pause; If Y>130 Jump X;If R1>1 Jump M;Jump L; M: Let R0=R0-1; Let R1=0;  Jump L"
'------------------------------------------------------------- 
'      situacio i coordenades de la col.locacio del sprite 
Sprite 2,265,40,1
'------------------------------------------------------------- 
Sprite Update Off 
Channel 12 To Sprite 2
Amal 12,"L: Move -100,0,40; Move 200,0,80; Move -100,0,40; Jump L"
Amal On 
Screen 3
Screen 7
Colour 9,$30
Colour 10,$70
Colour 11,$30
Screen 1
Colour 14,$FFF
Screen Show 3
Screen Show 0
ADR=0
FF=0
Screen 0
Shift Up 10,1,2,1
LX=Len(A$)
X=0
Y=199
Repeat 
   For N=0 To 79
      Screen Offset 7,N*4,0 : Screen Offset 5,N*4,XT
      Screen Offset 0,XZ,
      Add XZ,8
      Add XZ1,8
      If XZ>=314
         XZ1=-16
         XZ=1
      End If 
      X2=X5
      Inc DD
      If DD>0
         Inc XT
         DD=0
         If XT=26
            XT=0
         End If 
      End If 
      Inc EC : If EC>X9
         Screen Hide 1
         Inc FF
         If FF>5
            FF=0
         End If 
         Screen Display 1,E7(FF),F7(FF),C7(FF),D7(FF) : Screen Offset 1,A7(FF),B7(FF)
         EC=0
         Screen Show 1
      End If 
      Amreg(0)=Deek(Start(4)+ADR) : Amreg(1)=Deek(Start(4)+ADR+2)
      Add ADR,4
      If ADR>=FT
         ADR=0
      End If 
      Wait Vbl 
      Cls 0,312+XZ1,0 To 320+XZ1,TVD
      Cls 0,-8+XZ1,0 To 0+XZ1,TVD
      N1=N1+4
      If X1<36
         Screen Copy 6,X,Y,X+4,Y+23 To 7,316+N1,NB
         Screen Copy 6,X,Y,X+4,Y+23 To 7,-4+N1,NB
         Wait Vbl 
         X=X+4
         X1=X1+V1
      Else 
         X1=0
         Inc CAR
         UX=Asc(Mid$(A$,CAR mod LX,1))-64
         If UX<0
            X=0
            Y=199
            Goto F
         End If 
         X=A(UX)
         Wait Vbl 
         Y=B(UX)
      End If 
      F:
      Wait Vbl 
      If Mouse Key=1 Then Goto FINAL
      Do 
         If Y1(X5)=99
            Inc CAR1
            X5=CA(Asc(Mid$(B$,CAR1 mod LX1,1)))
            X2=X5
         End If 
         If Y1(X5)<>12
           Cls 1,312+XZ1,YA(X5)*TL1 To 320+XZ1,Y1(X5)*TL1-11
           Cls 1,-8+XZ1,YA(X5)*TL1 To 0+XZ1,Y1(X5)*TL1-11
         End If 
         Inc X5
         If ZA(X5)<>ZA(X5-1)
            If SD=0
               SD=1
               X3=X5
            End If 
            Inc D
            IC=TL1/3
            If D<TX+IC
               X5=X2
            Else 
               X5=X3
               SD=0
               D=0
            End If 
            Goto CC
         End If 
      If Mouse Key=1 Then Goto FINAL
      Loop 
      CC:
   Next N
   N1=-8
   DT=DT+1
   Sprite Update On 
FINAL:
Until Mouse Key=1
GO
Shift Off 
End 
Data $1,$1,$2,$2,$3,$3,$4,$4,$5,$5,$6,$6,$7,$7,$8,$8,$9,$9,$A,$A,$B,$B,$C,$C,$D,$D,$E,$E,$F,$F,$1F,$2F,$3F,$4F,$5F,$6F,$7F,$8F
Data $1A,$1A,$19,$19,$18,$18,$17,$7,$6,$5,$5,$4,$4,$3,$3,$3,$2,$2,$1,$1
A:
Return 
MEG:
Rem x= talle del scroll gros 
X=-10
Y=X*2
TL=35+Y
TX=3+X
TL1=TL
TVD=TL*6.4
Screen Open 0,640,20,8,L
Screen 0
Screen Hide 0
Curs Off 
Cls 0
Colour 0,$300
M=0
N=0
X=0
D=0
ER=64 : C=1
Paper 0
Colour 1,$900
Pen 1
For ER=55 To 101
   Cls 0,0,0 To 9,9
   Locate 0,0 : Print Chr$(ER)
   ST=0
   If ER=100
      ER=32
     Cls 0,0,0 To 9,9
   End If 
   CA(ER)=C
   YA(C-1)=0 : Y1(C-1)=99 : ZA(C-1)=X : CA(C-1)=0
   For X=0 To 8
      For Y=0 To 8
         If Point(X,Y)<>0 and ST=0
            ST=1 : A=Y : TG=1
         End If 
         If ST=1 and Point(X,Y)=0
            YA(C)=A
            Y1(C)=Y
            ST=0
            ZA(C)=X
            CA(C)=0
            Inc C
         End If 
      Next Y
      If TG=1
         TG=0
         Goto AA
      End If 
      YA(C)=0 : Y1(C)=12 : ZA(C)=X : CA(C)=1
      Inc C
      AA:
      ST=0
   Next X
   If ER=32
      Goto DF
   End If 
Next ER
DF:
YA(550)=0 : Y1(550)=99 : ZA(550)=0 : CA(550)=0
Screen Open 0,640,TVD,2,L
Screen Display 0,140,50,310,TVD
Screen Hide 0
Cls 0
Curs Off 
Flash Off 
D=1
X=1 : X1=16
XZ1=-16
Colour 0,$0
Colour 1,$D00
XZ=1
CAR1=0
'--------------------------------------------------
'   subrutina del scroll superior  
B$="PRESENTAMOS NUESTRO DISCO TAL Y CUAL    "
'--------------------------------------------------
LX1=Len(B$)
X5=530 : TL1=15
Return 
'--------------------------
'   subrutina de surtida 
Procedure GO
   Amal Off : Rainbow Del : Show 
   Cls 0
   Screen Close 0 : Screen Close 1 : Screen Close 3 : Bob Off : Sprite Off 
   Screen Close 4 : Screen Close 5 : Screen Close 6 : Screen Close 7
   End 
End Proc