home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1991-03-24 | 6.4 KB | 248 lines |
- '**** Palette SETTER ****
- '**** by ****
- '**** John J. Cassar ****
- '
- Dim DEX(32),CPX(32),CPY(32)
- Global DEX(),CPX(),CPY(),FSH,FP1,FP2,FRATE,FFLAG,BX
- Global C$,W1,W2,W3,DCL,CLR,CL,Y1,Y2,S,S2,MP
- Get Disc Fonts
- PAL
- Run "AutoExec.AMOS"
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure PAL
- FP1=1 : FP2=16 : FSH=1 : FRATE=10
- FFLAG=False : MP=1 : CL=1
- CLR=Screen Colour
- Colour 0,0 : Colour 1,$EEE
- Curs Off : Flash Off : Cls 0
- Set Font 1
- Gr Writing 1
- Curs Off : Flash Off
- Y1=80 : S=60 : S2=4
- Get Cblock 1,106,56,120,130
- Ink 0 : Bar 106,56 To 213,183
- Paste Bob 106,56,7
- Wait Vbl : Bob Off
- PALSETUP
- U=S/8-2 : Y2=Y1+2 : Q=0 : PC=CLR-1 : SS=7
- DCOL
- Ink 4
- '---------------------------------------------
- While K<>14
- Repeat
- Until Mouse Key
- K=Mouse Zone
- If K=<3
- SREAD[K]
- End If
- If K=4 Then PALEX
- If K=5 Then PALCOPY
- If K=6 Then PSPREAD
- If K=7 Then FSPREAD
- If K=8 and FRATE>1 Then FRATE=FRATE-1 : PFLRATE
- If K=9 and FRATE<1000 Then FRATE=FRATE+1 : PFLRATE
- If K=10 Then PFTEST
- If K=11 Then PFDIR
- If K=12 Then Gosub PUNDO : K=14 : Goto PFIN
- If K=13 Then Gosub PUNDO
- If K=14 Then Goto PFIN
- If K>14
- CL=Point(X Screen(X Mouse),Y Screen(Y Mouse))
- DCOL
- End If
- PFIN:
- Wend
- Reset Zone
- Put Cblock 1,106,56
- Del Cblock 1
- Z=0
- Pop Proc
- PUNDO:
- For I=0 To CLR-1
- Colour I,DEX(I)
- Next I
- DCOL
- Return
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure PALSETUP
- If FSH=1 Then T$="U" Else T$="D"
- Ink 0,1 : Text 199,162,T$
- PFLRATE
- Reserve Zone 46
- Set Zone 1,120,Y1 To 130,Y1+S
- Set Zone 2,132,Y1 To 142,Y1+S
- Set Zone 3,144,Y1 To 154,Y1+S
- Set Zone 4,112,142 To 128,152
- Set Zone 5,133,142 To 162,152
- Set Zone 6,167,142 To 207,152
- Set Zone 7,112,154 To 155,164
- Set Zone 8,158,156 To 163,162
- Set Zone 9,186,156 To 192,162
- Set Zone 10,165,154 To 186,164
- Set Zone 11,195,154 To 207,164
- Set Zone 12,112,166 To 152,176
- Set Zone 13,155,166 To 183,176
- Set Zone 14,187,166 To 207,176
- CLR=Screen Colour
- U=5 : Y2=Y1+2 : Q=0 : PC=CLR-1 : SS=7 : DCL=1
- If PC>32 Then PC=31
- If SS>PC Then SS=PC
- For T=0 To PC Step 8
- For I=0+T To SS+T
- Ink I
- Bar 160+Q,Y2 To 170+Q,Y2+U
- CPX(I)=160+Q : CPY(I)=Y2-1
- DEX(I)=Colour(I)
- Set Zone I+15,160+Q,Y2 To 170+Q,Y2+U
- Y2=Y2+U+2
- Next I
- Y2=Y1+2 : Q=Q+12
- Next T
- Set Slider 0,1,0,0,0,1,0,1
- Ink 1 : Draw CPX(DCL),CPY(DCL) To CPX(DCL)+10,CPY(DCL)
- Draw CPX(DCL),CPY(DCL)+7 To CPX(DCL)+10,CPY(DCL)+7
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure PFLRATE
- Ink 0
- F$=Str$(FRATE)
- If FRATE<10 Then F$=" "+Str$(FRATE)
- F$=Right$(F$,3)
- Ink 0,1 : Text 167,162,F$
- FSTATE
- Wait 10
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure PFTEST
- If FFLAG=True Then Shift Off : Wait 10 : FFLAG=False : Pop Proc
- If FSH=1 Then Shift Up FRATE,FP1,FP2,1
- If FSH=2 Then Shift Down FRATE,FP1,FP2,1
- FFLAG=True : Wait 10
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure PFDIR
- If FSH=1
- FSH=2 : Ink 0,1 : Text 199,162,"D"
- Else
- FSH=1 : Ink 0,1 : Text 199,162,"U"
- End If
- FSTATE
- Wait 10
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure PSPREAD
- DCOL
- CP1=CL : Change Mouse 7
- R1#=W1 : G1#=W2 : B1#=W3
- Wait 30
- Repeat
- Until Mouse Key<>0 and Mouse Zone>14
- Change Mouse MP
- CL=Point(X Screen(X Mouse),Y Screen(Y Mouse))
- DCOL
- R2#=W1 : G2#=W2 : B2#=W3
- If CP1>CL
- Swap CP1,CL
- Swap R1#,R2# : Swap G1#,G2# : Swap B1#,B2#
- End If
- SPREAD=CL-CP1
- If SPREAD<3 Then Pop Proc
- RSTEP#=(R2#-R1#)/SPREAD
- GSTEP#=(G2#-G1#)/SPREAD
- BSTEP#=(B2#-B1#)/SPREAD
- For SPREADING=0 To SPREAD-1
- RNEW=R1#+SPREADING*RSTEP#
- GNEW=G1#+SPREADING*GSTEP#
- BNEW=B1#+SPREADING*BSTEP#
- Colour SPREADING+CP1,RNEW*256+GNEW*16+BNEW
- Next SPREADING
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure FSTATE
- If FFLAG=True and FSH=1 Then Shift Up FRATE,FP1,FP2,1
- If FFLAG=True and FSH=2 Then Shift Down FRATE,FP1,FP2,1
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure FSPREAD
- Change Mouse 9
- Repeat
- Until Mouse Key<>0 and Mouse Zone>14
- CL=Point(X Screen(X Mouse),Y Screen(Y Mouse))
- FP1=CL : DCOL
- Change Mouse 7
- Repeat
- Until Mouse Key<>0 and Mouse Zone>14
- CL=Point(X Screen(X Mouse),Y Screen(Y Mouse))
- FP2=CL : DCOL
- If FP1>FP2 Then Swap FP1,FP2
- Change Mouse MP
- FSTATE
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure PALEX
- CP1$=C$ : CP1=CL : Change Mouse 7
- Wait 30
- Repeat
- Until Mouse Key<>0 and Mouse Zone>14
- CL=Point(X Screen(X Mouse),Y Screen(Y Mouse))
- CP2=CL : DCOL : CP2$=C$
- Colour CP1,Val(CP2$) : DCOL
- Colour CP2,Val(CP1$) : DCOL
- Change Mouse MP
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure PALCOPY
- CP$=C$ : Change Mouse 7
- Wait 30
- Repeat
- Until Mouse Key<>0 and Mouse Zone>14
- K=Mouse Zone : CL=K-15
- Colour CL,Val(CP$)
- DCOL
- Change Mouse MP
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure DCOL
- C$=Hex$(Colour(CL),3)
- W1=Val(Left$(C$,2)) : A=15-W1
- VSLIDE[1,A*S2]
- Q$="$"+Mid$(C$,3,1) : W2=Val(Q$) : A=15-W2
- VSLIDE[2,A*S2]
- Q$="$"+Right$(C$,1) : W3=Val(Q$) : A=15-W3
- VSLIDE[3,A*S2]
- End Proc
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure SREAD[Z]
- YM=Y Screen(Y Mouse)
- While Mouse Zone=Z
- Y=Y Screen(Y Mouse)
- If Y<>YM and Mouse Key=1 Then VSLIDE[Z,Y-Y1] : YM=Y
- Wend
- End Proc[Y]
- '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- Procedure VSLIDE[Z,Y]
- Y2=S-Y
- If Y<0 or Y>S Then Pop Proc
- A$=Hex$(Y2/S2)
- If Z=1
- A$=A$+Right$(C$,2) : C$=A$
- Vslider 125,Y1 To 130,Y1+S,S,Y,1
- End If
- If Z=2
- B$=Left$(C$,2)+Right$(A$,1)+Right$(C$,1) : C$=B$
- Vslider 137,Y1 To 142,Y1+S,S,Y,1
- End If
- If Z=3
- B$=Left$(C$,3)+Right$(A$,1) : C$=B$
- Vslider 149,Y1 To 154,Y1+S,S,Y,1
- End If
- Colour CL,Val(C$)
- Ink CL : Bar 161,Y1-7 To 180,Y1-3
- Ink 1 : Draw CPX(DCL),CPY(DCL) To CPX(DCL)+10,CPY(DCL)
- Draw CPX(DCL),CPY(DCL)+7 To CPX(DCL)+10,CPY(DCL)+7
- Ink 0 : Draw CPX(CL),CPY(CL) To CPX(CL)+10,CPY(CL)
- Draw CPX(CL),CPY(CL)+7 To CPX(CL)+10,CPY(CL)+7
- Ink 0,1 : Text 184,Y1-2,C$
- DCL=CL : Wait Vbl
- End Proc