home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga ISO Collection
/
AmigaUtilCD2.iso
/
Programming
/
Amos
/
StormAmosCruncher2,0.LHA
/
STORMCRUNCH2.AMOS
/
STORMCRUNCH2.amosSourceCode
< prev
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
UTF-8
Wrap
AMOS Source Code
|
1994-03-23
|
34.7 KB
|
1,381 lines
' STORM AMOS CRUNCHERv2
' Programmed By Ejber Ozkan 1993
'
' This is a no - holds bared attempt to copy Powerpacker v3 +
' Its meant to be a joke! and is not as powerfull!
' It uses the AMOS V1.34 Squash instruction to good effect
' You can obtain V 1.1 on pick n mix disk one !
' You are free to use the code here but you must state
' Who wrote it... namely me (ejber Ozkan)!!!
'
' Will not work with AMOS Pro Version 1.00
'
'
'
'
'
'
' ANY BUGS,REPORTS AND CRITISMS WRITE TO EJBER OZKAN :-
' 222 TUNNEL AVE
' GREENWICH
' LONDON
' ENGLAND
' SE10 OPL
Dir$="DF0:"
'Dim EF$(6)
'Dim SPEED(6)
' Globalize variable for use by all procs
Global DEF,LTH,Z,CFS,A$,CFLASH$
Global VSLOW,SLOW,NORM,FAST,VFAST,DA$,TEAM
Global OPTS,SPC1$,SPC2$,SPC3$,SPC4$,VERSION$,TEMS$
Global SPO,RESPONSE
Global WHATLOAD,WHATCOL,FIRSTF,CHEF
Global ME1$,ME2$,ME3$,ME4$,ME5$,ME6$,ME7$,ME8$,ME9$
Global ME10$,ME11$,ME12$,ME13$,ME14$,ME15$,ME16$,ME17$,ME18$
Global C,C2,C3
' Fill some variables!
VERSION$="2.0b"
VSLOW=4095 : SLOW=2048 : NORM=1024 : FAST=512 : VFAST=256
SPO=0 : WHATLOAD=1 : WHATCOL=0 : FIRSTF=0 : CHEF=0
'SPEED(0)=VLSOW : SPEED(1)=SLOW : SPEED(2)=NORM
'SPEED(3)=FAST : SPEED(4)=VFAST
SPC1$=Chr$(187) : SPC2$=Chr$(169)
SPC3$=Chr$(171)
' Messages for program!
ME1$="Loading Data File... "
ME2$="Saving Data File... "
ME3$="Crunching Data File... "
ME4$="Done."
ME5$="Original Length:"
ME6$="Crunched Length:"
ME7$="Decrunching Data File... "
ME8$="Gained"
ME9$="No File Loaded."
ME10$="Crunching Press Control-C to Abort Crunch"
ME11$="Time Taken For (De)Crunch :"
ME12$="Nothing to save!"
ME13$="Crunch Aborted!"
ME14$="Crunched File is Longer than Original!"
ME15$="Loading Crunched Data File... "
ME16$="Saving (De)Crunched Data File... "
ME17$="DeCrunched Length:"
ME18$="Not a Storm AMOS Cruncher File!!!"
OPTS=1
' Open a workbench screen !!!
_OPENWORK
' RUN proggy!!
REORG
CONSTRUCTMENUS
PMAIN
Procedure EMAIN
Screen Open 0,640,256,8,Hires
Curs Off : Flash Off : Pen 2 : Paper 0 : Ink 2 : Cls 0 : Home
Screen Display 0,140,40,640,256
Limit Mouse X Hard(0),Y Hard(0) To X Hard(1000),Y Hard(100)
Change Mouse 4
End Proc
Procedure REORG
Screen Open 0,640,256,4,Hires
Screen Hide 0
_SCREENSET
TBAR["Storm AMOS cruncher "+VERSION$+" "+SPC2$+" 1993 Ejber Ozkan "]
'SH[100,100,SPC3$,3]
Ink 0 : Bar 615,1 To 630,7 : Ink 2 : Bar 617,2 To 628,6
Ink 3 : Bar 620,3 To 633,9
Ink 0 : Draw 608,0 To 608,10 : Draw 607,0 To 607,10
Reserve Zone 5
Set Zone 1,609,0 To 634,9
Ink 1 : Bar 1,101 To 638,254
Ink 2 : Draw 0,100 To 639,100 : Draw 0,100 To 0,255 : Draw 1,100 To 1,255
Ink 3 : Draw 639,100 To 639,255 : Draw 638,100 To 638,255 : Draw 639,255 To 0,255
SH[17,45,"Version "+VERSION$,3]
SH[100,60,"Free Chip :",3]
SH[100,70,"Largest :",3]
SH[100,80,"Free Fast :",3]
SH[100,90,"Total Free :",3]
SH[300,60,"File Name :",3]
SH[300,70,"File Length :",3]
SH[300,80,"(De)Crunched :",3]
_FILENAME[ME9$]
Paste Bob 234,15,3
Paste Bob 3,244,4
'Paste Bob 115,21,5
Paste Bob 245,35,5
Wind Open 1,110,103,60,19,
Pen 2 : Paper 1 : Curs Off
Clw
Screen 0
Paper 0
Screen Show 0
Limit Mouse
End Proc
Procedure CONSTRUCTMENUS
'
Menu$(1)="Project","(IN 1,1)(IN 2,3)Project"
Menu$(2)="(LO 10,0)Prefs","(LO 10,0)(IN 1,1)(IN 2,3)Prefs"
Menu$(3)="(LO 10,0)Recrunch","(LO 10,0)(IN 1,1)(IN 2,3)Recrunch"
'
Menu$(1,1)="Load File... ","(IN 1,1)(IN 2,3)Load File... "
Menu$(1,2)="Save File... ","(IN 1,1)(IN 2,3)Save File... "
Menu$(1,3)="--------------","--------------"
Menu$(1,4)="Delete File...","(IN 1,1)(IN 2,3)Delete File..."
Menu$(1,5)="--------------","--------------"
Menu$(1,6)="About... ","(IN 1,1)(IN 2,3)About... "
Menu$(1,7)="Quit... ","(IN 1,1)(IN 2,3)Quit... "
'
Menu$(2,1)="Data File... (LO 170,0)(BO1)","(IN 1,1)(IN 2,3)Data File... (LO 170,0)(BO1)"
Menu$(2,2)="AMOS Compiled File... ","(IN 1,1)(IN 2,3)AMOS Compiled File... "
Menu$(2,3)="------------------------","------------------------"
Menu$(2,4)="Decrunch Colour... "+SPC1$,"(IN 1,1)(IN 2,3)Decrunch Colour.... "+SPC1$
Menu$(2,5)="Efficiency "+SPC1$,"(IN 1,1)(IN 2,3)Efficiency "+SPC1$
Menu$(2,6)="Screen Prefs "+SPC1$,"(IN 1,1)(IN 2,3)Screen Prefs "+SPC1$
'
Menu$(3,1)=" Load & DeCrunch Data File... ","(IN 1,1)(IN 2,3) Load & DeCrunch Data File... "
Menu$(3,2)=" Save DeCrunched Data File... ","(IN 1,1)(IN 2,3) Save DeCrunched Data File... "
'
Menu$(2,4,1)=" Colour 0 (LO 80,0)(BO1)","(IN 1,1)(IN 2,3) Colour 0 (LO 80,0)(BO1)"
Menu$(2,4,2)=" Colour 1 ","(IN 1,1)(IN 2,3) Colour 1 "
Menu$(2,4,3)=" Colour 2 ","(IN 1,1)(IN 2,3) Colour 2 "
Menu$(2,4,4)=" Colour 3 ","(IN 1,1)(IN 2,3) Colour 3 "
'
Menu$(2,5,1)=" Slow (LO 90,0)(BO1)","(IN 1,1)(IN 2,3) Slow (LO 90,0)(BO1)"
Menu$(2,5,2)=" Mediocre ","(IN 1,1)(IN 2,3) Mediocre "
Menu$(2,5,3)=" Normal ","(IN 1,1)(IN 2,3) Normal "
Menu$(2,5,4)=" Fast ","(IN 1,1)(IN 2,3) Fast "
Menu$(2,5,5)=" Very Fast ","(IN 1,1)(IN 2,3) Very Fast "
'
Menu$(2,6,1)=" Change Palette... ","(IN 1,1)(IN 2,3) Change Palette... "
'Menu$(2,6,2)="(SS 3) Change Music... ","(SS 3)(IN 1,1)(IN 2,3) Change Music... "
'
For I=1 To 7
Menu Static(1,I)
Next I
For I=1 To 6
Menu Static(2,I)
Next I
Set Menu(2,4,1) To 130,0
For I=1 To 4
Menu Static(2,4,I)
Next I
Set Menu(2,5,1) To 130,0
For I=1 To 5
Menu Static(2,5,I)
Next I
Menu Static(2,6,1)
'Menu Static(2,6,2)
Set Menu(2,6,1) To 130,0
End Proc
Procedure PMAIN
' Read menus
Menu On
Do
If Choice
C=Choice(1) : C2=Choice(2) : C3=Choice(3)
End If
If C=1
If C2=1
_LOADDATA
End If
If C2=2
_SAVEDATA
End If
If C2=4
_DELETE
End If
If C2=6
_ABOUT
End If
If C2=7
_QUIT
End If
End If
'
If C=2
If C2=1
_WHICHLOAD
End If
'
If C2=2
_WHICHLOAD2
End If
End If
'
If C=2
If C2=4 and C3=1
_COL0
End If
If C2=4 and C3=2
_COL1
End If
If C2=4 and C3=3
_COL2
End If
If C2=4 and C3=4
_COL3
End If
'
If C2=5 and C3=1
_CHANGESPEED[0]
End If
If C2=5 and C3=2
_CHANGESPEED[1]
End If
If C2=5 and C3=3
_CHANGESPEED[2]
End If
If C2=5 and C3=4
_CHANGESPEED[3]
End If
If C2=5 and C3=5
_CHANGESPEED[4]
End If
If C2=6 and C3=1
_PALETTE
End If
End If
If C=3
If C2=1
'
_LOADCRUNCH
End If
If C2=2
'
_SAVEDECRUNCH
End If
End If
'Locate 30,20 : Print WHATLOAD
'Locate 30,10 : Print Choice(1),Choice(2),Choice(3)
If Mouse Zone=1 and Mouse Key=1 Then _GETPORT
_GETMEMORY
Loop
Return
End Proc
Procedure _GETMEMORY
Gr Writing 1 : Ink 2,0
Text 200,60,Str$(Chip Free)
Text 200,80,Str$(Fast Free)
Text 200,90,Str$(Chip Free+Fast Free)
End Proc
Procedure _COL0
Menu$(2,4,1)=" Colour 0 (LO 80,0)(BO1)","(IN 1,1)(IN 2,3) Colour 0 (LO 80,0)(BO1)"
Menu$(2,4,2)=" Colour 1 ","(IN 1,1)(IN 2,3) Colour 1 "
Menu$(2,4,3)=" Colour 2 ","(IN 1,1)(IN 2,3) Colour 2 "
Menu$(2,4,4)=" Colour 3 ","(IN 1,1)(IN 2,3) Colour 3 "
WHATCOL=0
End Proc
Procedure _COL1
Menu$(2,4,1)=" Colour 0 ","(IN 1,1)(IN 2,3) Colour 0 "
Menu$(2,4,2)=" Colour 1 (LO 80,0)(BO1)","(IN 1,1)(IN 2,3) Colour 1 (LO 80,0)(BO1)"
Menu$(2,4,3)=" Colour 2 ","(IN 1,1)(IN 2,3) Colour 2 "
Menu$(2,4,4)=" Colour 3 ","(IN 1,1)(IN 2,3) Colour 3 "
WHATCOL=1
End Proc
Procedure _COL2
Menu$(2,4,1)=" Colour 0 ","(IN 1,1)(IN 2,3) Colour 0 "
Menu$(2,4,2)=" Colour 1 ","(IN 1,1)(IN 2,3) Colour 1 "
Menu$(2,4,3)=" Colour 2 (LO 80,0)(BO1)","(IN 1,1)(IN 2,3) Colour 2 (LO 80,0)(BO1)"
Menu$(2,4,4)=" Colour 3 ","(IN 1,1)(IN 2,3) Colour 3 "
WHATCOL=2
End Proc
Procedure _COL3
Menu$(2,4,1)=" Colour 0 ","(IN 1,1)(IN 2,3) Colour 0 "
Menu$(2,4,2)=" Colour 1 ","(IN 1,1)(IN 2,3) Colour 1 "
Menu$(2,4,3)=" Colour 2 ","(IN 1,1)(IN 2,3) Colour 2 "
Menu$(2,4,4)=" Colour 3 (LO 80,0)(BO1)","(IN 1,1)(IN 2,3) Colour 3 (LO 80,0)(BO1)"
WHATCOL=3
End Proc
Procedure _CHANGESPEED[NUM]
If NUM=0
Menu$(2,5,1)=" Slow (LO 90,0)(BO1)","(IN 1,1)(IN 2,3) Slow (LO 90,0)(BO1)"
Menu$(2,5,2)=" Mediocre ","(IN 1,1)(IN 2,3) Mediocre "
Menu$(2,5,3)=" Normal ","(IN 1,1)(IN 2,3) Normal "
Menu$(2,5,4)=" Fast ","(IN 1,1)(IN 2,3) Fast "
Menu$(2,5,5)=" Very Fast ","(IN 1,1)(IN 2,3) Very Fast "
SPO=0
Pop Proc
End If
If NUM=1
Menu$(2,5,1)=" Slow ","(IN 1,1)(IN 2,3) Slow "
Menu$(2,5,2)=" Mediocre (LO 90,0)(BO1)","(IN 1,1)(IN 2,3) Mediocre (LO 90,0)(BO1)"
Menu$(2,5,3)=" Normal ","(IN 1,1)(IN 2,3) Normal "
Menu$(2,5,4)=" Fast ","(IN 1,1)(IN 2,3) Fast "
Menu$(2,5,5)=" Very Fast ","(IN 1,1)(IN 2,3) Very Fast "
SPO=1
Pop Proc
End If
If NUM=2
Menu$(2,5,1)=" Slow ","(IN 1,1)(IN 2,3) Slow "
Menu$(2,5,2)=" Mediocre ","(IN 1,1)(IN 2,3) Mediocre "
Menu$(2,5,3)=" Normal (LO 90,0)(BO1)","(IN 1,1)(IN 2,3) Normal (LO 90,0)(BO1)"
Menu$(2,5,4)=" Fast ","(IN 1,1)(IN 2,3) Fast "
Menu$(2,5,5)=" Very Fast ","(IN 1,1)(IN 2,3) Very Fast "
SPO=2
Pop Proc
End If
'
If NUM=3
Menu$(2,5,1)=" Slow ","(IN 1,1)(IN 2,3) Slow "
Menu$(2,5,2)=" Mediocre ","(IN 1,1)(IN 2,3) Mediocre "
Menu$(2,5,3)=" Normal ","(IN 1,1)(IN 2,3) Normal "
Menu$(2,5,4)=" Fast (LO 90,0)(BO1)","(IN 1,1)(IN 2,3) Fast (LO 90,0)(BO1)"
Menu$(2,5,5)=" Very Fast ","(IN 1,1)(IN 2,3) Very Fast "
SPO=3
Pop Proc
End If
'
If NUM=4
Menu$(2,5,1)=" Slow ","(IN 1,1)(IN 2,3) Slow "
Menu$(2,5,2)=" Mediocre ","(IN 1,1)(IN 2,3) Mediocre "
Menu$(2,5,3)=" Normal ","(IN 1,1)(IN 2,3) Normal "
Menu$(2,5,4)=" Fast ","(IN 1,1)(IN 2,3) Fast "
Menu$(2,5,5)=" Very Fast (LO 90,0)(BO1)","(IN 1,1)(IN 2,3) Very Fast (LO 90,0)(BO1)"
SPO=4
Pop Proc
End If
End Proc
Procedure _WHICHLOAD
Menu$(2,1)="Data File... (LO 170,0)(BO1)","(IN 1,1)(IN 2,3)Data File... (LO 170,0)(BO1)"
Menu$(2,2)="AMOS Compiled File... ","(IN 1,1)(IN 2,3)AMOS Compiled File... "
WHATLOAD=1
End Proc
Procedure _WHICHLOAD2
Menu$(2,1)="Data File... ","(IN 1,1)(IN 2,3)Data File... "
Menu$(2,2)="AMOS Compiled File... (LO 170,0)(BO1)","(IN 1,1)(IN 2,3)AMOS Compiled File... (LO 170,0)(BO1)"
WHATLOAD=2
End Proc
Procedure _ABOUT
Window 1
Paper 1
Print T$
For I=0 To 18
Cdown
Next I
_PW["Storm AMOS Cruncher V"+VERSION$,3]
_PW["Programmed by Ejber Ozkan "+SPC2$+" 1993",2]
_PW["Amos Compiled cruncher V1.34 Only! NOT AMOS PRO COMPATIBLE!",3]
_PW["This is Freeware ",2]
_PW["But Donation are always welcome!!!",2]
_PW["For a nice chat and more info write to",2]
_PW["222 Tunnel Ave,Greenwich,London,England SE10 OPL",3]
_PW["PICK N MIX III",0]
Window 1
Paper 1
For I=0 To 9
Cdown
Next I
Screen 0
Pen 2 : Paper 0
C=0 : C2=0 : C3=0
End Proc
Procedure _LOADDATA
' /\/\/\/\/\/\/\/\/\/\/\/\
' \/THE/PACKING/ROUTINE!\/
' /\/\/\/\/\/\/\/\/\/\/\/\
If WHATLOAD=2
_AMOSCOMPILED
C=0 : C2=0 : C3=0
Pop Proc
End If
LPACK:
If Length(12)=>1
QUEST[" "," Are You sure You want to"," Load and Crunch new file","",120,70,2]
If RESPONSE=2
C=0 : C2=0 : C3=0 : Pop Proc
End If
End If
If Length(12)=>1 Then Erase 12
_CLOSEWORK
A$=Fsel$("","","CHOOSE A FILE TO LOAD")
If A$="" Then C=0 : C1=0 : C2=0 : _PW["Aborted.",3] : _OPENWORK : Pop Proc
Open In 1,A$
LTH=Lof(1)
_FILELTH[LTH]
Close 1
Reserve As Work 12,LTH+6
STA=Start(12)
LTH2=Length(12)-6
_PW[ME1$+"'"+A$+"'",2]
Bload A$,STA
FIRSTF=1
_JUSTNAME[A$]
_FILENAME[TEMS$]
_PW[ME3$,2]
_PW[ME10$,3]
Timer=0 : TEMP2=DEF
_GETMEMORY
If SPO=0 Then SPO=VSLOW
If SPO=1 Then SPO=SLOW
If SPO=2 Then SPO=NORM
If SPO=3 Then SPO=FAST
If SPO=4 Then SPO=VFAST
JEF= Extension_5_00CE(STA,LTH2,0,SPO,WHATCOL)
TEAM=JEF
ACCUM=Timer/50
_GETMEMORY
If TEAM=>0
_PW[ME4$,3]
_PW[ME11$+Str$(ACCUM)+" Seconds",2]
_PW[ME5$+Str$(LTH)+" Kbytes",2]
_PW[ME6$+Str$(TEAM)+" Kybtes",2]
EFY=LTH-TEAM
_PW[ME8$+Str$((100*EFY)/LTH)+"% ("+Str$(LTH-TEAM)+" Kbytes) !",3]
_NEWSHOW[JEF]
C=0 : C2=0 : C3=0
CHEF=0
_OPENWORK
Pop Proc
End If
If TEAM=-2
_PW[ME13$,2]
C=0 : C2=0 : C3=0
_OPENWORK
Pop Proc
End If
If TEAM=-1
_PW[ME14$,2]
C=0 : C2=0 : C3=0
Erase 12
_FILENAME[ME9$]
FIRSTF=0
_OPENWORK
Pop Proc
End If
End Proc
Procedure _SAVEDATA
' /\/\/\/\/\/\/\/\/\
' \/SAVING ROUTINE\/
' /\/\/\/\/\/\/\/\/\
If CHEF=1
C=0 : C2=0 : C3=0
_PW["Use Save in Recrunch option!",3]
Pop Proc
End If
If FIRSTF=0
C=0 : C2=0 : C3=0
_PW[ME12$,3]
Pop Proc
End If
SACK:
_CLOSEWORK
A$=Fsel$("","","SAVE FILE AS")
If A$=""
C=0 : C2=0 : C3=0
_PW["Aborted.",2]
_OPENWORK
Pop Proc
End If
_PW[ME16$+"'"+A$+"'",2]
ETA=TEAM+2
Loke Start(12)+ETA,LTH
Bsave A$,Start(12) To Start(12)+TEAM+6
C=0 : C2=0 : C3=0
_PW[ME4$,2]
_OPENWORK
End Proc
Procedure _LOADCRUNCH
' /\/\/\/\/\/\/\/\/\/\/\/\
' \/DECRUNCHING/ROUTINE!\/
' /\/\/\/\/\/\/\/\/\/\/\/\
If WHATLOAD=2
C=0 : C2=0 : C3=0
_PW["Use Load in Project option!",3]
Pop Proc
End If
LUACK:
If Length(12)=>1
QUEST[" "," Are You sure You want to"," Load and DeCrunch new file","",120,70,2]
End If
If RESPONSE=2 Then C=0 : C2=0 : C3=0 : Pop Proc
If Length(12)=>1 Then Erase 12
_CLOSEWORK
A$=Fsel$("","","LOAD FILE TO DECRUNCH")
If A$="" Then C=0 : C2=0 : C3=0 : _PW["Aborted.",2] : _OPENWORK : Pop Proc
Open In 1,A$
LTH4=Lof(1)
_FILELTH[LTH4]
Close 1
Reserve As Work 12,LTH4
STA=Start(12)
Bload A$,STA
_JUSTNAME[A$]
_FILENAME[TEMS$]
_PW[ME15$+"'"+A$+"'",3]
ADER=Leek(Start(12)+LTH4-4)
If ADER=<0 or ADER=>400000
Erase 12
C=0 : C2=0 : C3=0
_PW[ME18$,3]
_FILENAME[ME9$]
_FILELTH[0]
_OPENWORK
Pop Proc
End If
Erase 12
Reserve As Work 12,ADER
STA=Start(12)
Bload A$,Start(12)
_PW[ME5$+Str$(LTH4),3]
_PW[ME17$+Str$(ADER),3]
_PW[ME7$,2]
_NEWSHOW[ADER]
Timer=0
LU= Extension_5_00E4(STA,LTH4-6)
_PW[ME11$+Str$(Timer/50)+" Seconds !!!!",2]
_PW[ME4$,2]
C=0 : C2=0 : C3=0
CHEF=1 : FIRSTF=0
_OPENWORK
End Proc
Procedure _SAVEDECRUNCH
If CHEF=0
C=0 : C2=0 : C3=0
_PW["No DeCrunched File In Memory",3]
Pop Proc
End If
If FIRSTF=1
C=0 : C2=0 : C3=0
_PW["Use Save File in Project option!",3]
Pop Proc
End If
_CLOSEWORK
A$=Fsel$("","","SAVE DECRUNCHED FILE AS")
If A$="" Then C=0 : C2=0 : C3=0 : _PW["Aborted.",3] : _OPENWORK : Pop Proc
_PW[ME16$+"'"+A$+"'",2]
Bsave A$,Start(12) To Start(12)+Length(12)
C=0 : C2=0 : C3=0
_PW["Done.",2]
_OPENWORK
End Proc
Procedure _AMOSCOMPILED
_CLOSEWORK
_PW["Please note that this is NOT more than 30% succesfull!",2]
A$=Fsel$("","","Choose A Compiled File To Load")
If A$="" Then _PW["Aborted.",2] : _OPENWORK : Pop Proc
Open In 1,A$
LTH5=Lof(1)
_PW["Source Length:"+Str$(LTH5),3]
Close 1
_PW["Now You Must Give A New Filename To Crunch To!",2]
_PW["Press mouse button to continue... ",3]
Repeat
Until Mouse Key=1
DA$=Fsel$("","","Choose A NEW Filename To Save To")
If DA$="" Then _PW["Aborted",3] : _OPENWORK : Pop Proc
Timer=0
_SQUASH_A_PROG[A$,DA$,0]
_PW[ME11$+Str$(Timer/50)+" Seconds !!",3]
_PW["Done. Crunched An AMOS Compiled File!",2]
_PW["Will Run From Workbench ect!.",2]
_OPENWORK
End Proc
Procedure _DELETE
_CLOSEWORK
A$=Fsel$("","","CHOOSE A FILE TO DELETE")
If A$="" Then C=0 : C2=0 : C3=0 : _PW["Aborted",2] : _OPENWORK : Pop Proc
_PW["Deleting '"+A$+"' ...",2]
Kill A$
_PW[ME4$,3]
_OPENWORK
End Proc
Procedure _SCREENSET
Curs Off : Flash Off : Pen 2 : Paper 0 : Ink 2,0 : Cls 0
_PALS[OPTS]
' Mouse colours
Colour 17,$FFF : Colour 18,$888 : Colour 19,$111
End Proc
Procedure TBAR[TR$]
Ink 2 : Bar 0,0 To 640,10
SH2[3,8,TR$,0]
End Proc
Procedure _PALS[AW]
If AW=1 Then Gosub T1 : Pop Proc
If AW=2 Then Gosub T2 : Pop Proc
If AW=3 Then Gosub T3 : Pop Proc
If AW=4 Then Gosub T4 : Pop Proc
If AW=5 Then Gosub T5 : Pop Proc
If AW=6 Then Gosub T6 : Pop Proc
If AW=7 Then Gosub T7 : Pop Proc
If AW=8 Then Gosub T8 : Pop Proc
Pop Proc
T1:
Palette $AAA,$57C,$0,$FFF,$F00,$FF0,$F0,$F
Return
T2:
Palette $853,$A70,$0,$FF6,$F00,$FF0,$F0,$F
Return
T3:
Palette $404,$A0A,$0,$F7F,$F00,$FF0,$F0,$F
Return
T4:
Palette $40,$A0,$0,$F7,$F00,$FF0,$F0,$F
Return
T5:
Palette $411,$A00,$0,$F70,$F00,$FF0,$F0,$F
Return
T6:
Palette $4,$A,$0,$6F,$F00,$FF0,$F0,$FF0
Return
T7:
Palette $124,$38,$0,$AF,$F00,$FF0,$F0,$5FF
Return
T8:
Palette $512,$660,$0,$DD0,$F00,$FF0,$F0,$F
Return
End Proc
Procedure SH[TX,TY,T$,I]
' Colour 3,$FB5
Gr Writing 0
Ink 2 : Text TX+1,TY+1,T$
' Text TX-1,TY-1,T$
Ink I : Text TX,TY,T$
End Proc
Procedure SH2[TX,TY,T$,I]
' Colour 3,$FB5
Gr Writing 0
' Ink 0 : Text TX+1,TY+1,T$
' Text TX-1,TY-1,T$
Ink I : Text TX,TY,T$
End Proc
Procedure REQ[T1$,T2$,Q1$,Q2$]
Screen Open 7,640,81,4,Hires
Screen Hide 7
Screen Display 7,140,40,,1
Reserve Zone 3
Shared RESPONSE
_SCREENSET
Get Palette 0
Cls 0
LTH=Len(T1$) : LTH2=Len(T2$) : LTH3=Len(Q1$) : LTH4=Len(Q2$)
If LTH=>40 Then T1$=Left$(T1$,40)
If LTH2=>40 Then T2$=Left$(T2$,40)
If LTH3=>10 Then Q1$=Left$(Q1$,10)
If LTH4=>10 Then Q2$=Left$(Q2$,10)
Screen 7
Limit Mouse 189,40 To 365,77
'
Ink 3 : Set Pattern 2
Bar 120,0 To 500,50
Set Pattern 0
'
Ink 2
Draw 140,7 To 470,7 : Draw 140,7 To 140,30
Ink 3
Draw 470,7 To 470,30 : Draw 471,7 To 471,30 : Draw 470,30 To 140,30
Ink 0 : Bar 141,8 To 470,29
'
Ink 2
Box 120,0 To 500,50
Ink 3
Draw 499,49 To 499,0
'
If LTH3>0
Ink 0 : Bar 131,34 To 219,46 : Ink 2
SH2[135,42,Q1$,2]
Ink 3
Draw 130,33 To 220,33 : Ink 2 : Draw 220,33 To 220,47
Draw 220,47 To 130,47 : Ink 3 : Draw 130,47 To 130,33
Set Zone 1,130,33 To 220,47
End If
'
If LTH4>0
Ink 0 : Bar 401,34 To 489,46
Ink 3,4
SH2[405,42,Q2$,2]
Ink 3
Draw 400,33 To 490,33 : Ink 2 : Draw 490,33 To 490,47
Ink 2
Draw 490,47 To 400,47 : Ink 3 : Draw 400,47 To 400,33
Set Zone 2,400,33 To 490,47
End If
'
SH2[145,16,T1$,2]
SH2[145,26,T2$,2]
'
Screen Show 7
If ERNO=23 Then Screen To Front 2 : DEF=200 : Goto DER
DEF=250
DER:
For I=0 To 51
Add DEF,-1
Screen Display 7,,40,,I
Wait Vbl
Next I
'
Do
MZ=Mouse Zone
Screen 7
If MZ=1 and Mouse Key=1 Then Gosub RP1 : RESPONSE=1 : Reset Zone : Gosub HAS : Screen Close 7 : Screen 0 : Limit Mouse : Pop Proc
If MZ=2 and Mouse Key=1 Then Gosub RP2 : RESPONSE=2 : Reset Zone : Gosub HAS : Screen Close 7 : Screen 0 : Limit Mouse : Pop Proc
Loop
'
'
HAS:
DEF=DEF-1
For I=51 To 0 Step -1
Add DEF,1
Screen Display 7,,40,,I
Wait Vbl
Next I
Return
'
RP1:
Ink 2
Draw 130,33 To 220,33 : Ink 3 : Draw 220,33 To 220,47
Draw 220,47 To 130,47 : Ink 2 : Draw 130,47 To 130,33
Ink 1
Paint 136,34
SH2[135,42,Q1$,3]
Wait 10
Return
'
RP2:
Ink 2
Draw 400,33 To 490,33 : Ink 3 : Draw 490,33 To 490,47
Ink 3
Draw 490,47 To 400,47 : Ink 2 : Draw 400,47 To 400,33
Ink 1
Paint 405,34
SH2[405,42,Q2$,3]
Wait 10
Return
End Proc
Procedure _FILENAME[R$]
Ink 0
Bar 410,53 To 640,61
Ink 2,0
Text 420,60,R$
End Proc
Procedure _FILELTH[NB]
Ink 2,0
Text 420,70,Str$(NB)
End Proc
Procedure _NEWSHOW[NC]
Ink 2,0
Text 420,80,Str$(NC)
End Proc
Procedure _PW[T$,I]
Window 1
Pen I : Paper 1
Centre T$ : Print
Screen 0
Pen 2 : Paper 0
End Proc
Procedure _JUSTNAME[NM$]
F=Instr(NM$,":")
TEM$=Mid$(NM$,F+1)
F=Instr(TEM$,"/")
If F=>1
TEMS$=Mid$(TEM$,F+1)
Pop Proc
End If
If F=0
TEMS$=TEM$
End If
End Proc
Procedure _QUIT
QUEST[" "," Are You Sure You Want To Quit??"," Storm Amos Cruncher V"+VERSION$,"",130,80,2]
If RESPONSE=1 Then End
If RESPONSE=2 Then C=0 : C2=0 : C3=0
End Proc
Procedure P0INTER
Screen Open 0,640,256,4,Hires
Cls 0 : Flash Off
Ink 2
Draw 1,1 To 16,1
Draw 16,1 To 10,4
Draw 10,4 To 16,10
Draw 16,10 To 10,10
Draw 10,10 To 6,6
Draw 6,6 To 1,7
Draw 1,7 To 1,1
Ink 1
Paint 2,2
Get Bob 0,1,1,1 To 16,11
Change Mouse 4
End
End Proc
Procedure _OPENWORK
Open Port 2,"RAW:0/0/640/40/ Storm Amos Cruncher V2.0b "+SPC2$+" 1993 Ejber Ozkan"
EFORCOL["3"]
Print #2,"Now the FUN begins!!!.....HeHe"
End Proc
Procedure _GETPORT
Amos To Back
ERESET
EFORCOL["2"]
Print #2,"Press [Return] in this window to RETURN to Cruncher"
EFORCOL["3"]
Print #2,"Ejber Ozkan 1993."
Do
A=Port(2)
If A<>-1
A$=Chr$(A)
If A=13
Amos To Front
Pop Proc
End If
End If
Loop
End Proc
Procedure ERESET
Print #2,Chr$(27)+"c";
End Proc
Procedure EFORCOL[T$]
Print #2,Chr$(27)+"[3"+T$+"m";
End Proc
Procedure _CLOSEWORK
Close 2
End Proc
'
'New requester copyright 1993 ejber ozkan!!!
Procedure QUEST[T1$,T2$,T3$,T4$,X,Y,I]
Screen Open 6,640,256,4,Hires
Screen Hide 6
_SCREENSET
MANGY:
Screen 0
'For I=0 To 3
TCHAR=Len(T1$)
If TCHAR=<13 Then TCHAR=13
'If TCHAR
'Next I
'MANGY:
TPIX=TCHAR*12
Screen Copy 0 To 6
Ink 0,0
Ink 3 : Set Pattern 2
Bar X,Y To X+TPIX+20,Y+80
Set Pattern 0
Ink 2
Box X,Y To X+TPIX+20,Y+80
'
Bar X,Y To X+TPIX+20,Y+8
'Ink 0
' Bar X+140,Y+2 To X+140+20,Y+4
Set Zone 2,X,Y To X+TPIX+20,Y+8
Ink 0,2
Text X+4,Y+6,"System Request"
'
Ink 0
Bar X+10,Y+10 To X+TPIX+10,Y+50
Ink 3
Box X+10,Y+10 To X+TPIX+10,Y+50
NBUT["CONTINUE",X+10,Y+60,2,3]
NBUT["CANCEL",X+TPIX-54,Y+60,2,4]
Ink 3
' Set Pattern 2
' Paint X+9,Y+9
Ink 2
Draw X+10,Y+10 To X+TPIX+10,Y+10
Draw X+10,Y+10 To X+10,Y+50
'
Ink I
Text X+13,Y+19,T1$
Text X+13,Y+28,T2$
Text X+13,Y+37,T3$
Text X+13,Y+47,T4$
'Screen Copy 0 To 6
Do
ZH=Mouse Zone
If ZH=2 and Mouse Key=1 Then Gosub MOVEIT
If ZH=3 and Mouse Key=1
NBFIL["CONTINUE",X+10,Y+60,3]
Wait 20
NBUT["CONTINUE",X+10,Y+60,2,2]
RESPONSE=1
Screen Copy 6 To 0
Screen Close 6
Pop Proc
End If
If ZH=4 and Mouse Key=1
NBFIL["CANCEL",X+TPIX-54,Y+60,3]
Wait 20
NBUT["CANCEL",X+TPIX-54,Y+60,2,3]
RESPONSE=2
Screen Copy 6 To 0
Screen Close 6
Pop Proc
End If
Loop
'
MOVEIT:
Ink 2
Screen Copy 6 To 0
Limit Mouse 128,54 To 359,216
Repeat
'Locate 0,0 : Print X Mouse,Y Mouse;
ER=X Screen(X Mouse)
YR=Y Screen(Y Mouse)
Gr Writing 7
Box ER,YR To ER+TPIX+20,YR+80
Gr Writing 3
Box ER,YR To ER+TPIX+20,YR+80
Until Mouse Key<>1
Ink 2
X=ER : Y=YR
'Box X,Y To X+TPIX+20,Y+80
Gr Writing %1
Limit Mouse
Goto MANGY
Return
'
End Proc
Procedure NBUT[T$,X,Y,I,Z]
TCHAR=Len(T$)
TPIX=TCHAR*9
Ink 0
Bar X,Y To X+TPIX+8,Y+14
Ink 2
Box X,Y To X+TPIX+8,Y+14
Set Zone Z,X,Y To X+TPIX+8,Y+14
Ink 3
Draw X,Y To X,Y+14
Draw X,Y To X+TPIX+8,Y
Ink I,0
Text X+9,Y+10,T$
End Proc
Procedure NBFIL[T$,X,Y,I]
TCHAR=Len(T$)
TPIX=TCHAR*9
Ink 1
Bar X,Y To X+TPIX+8,Y+14
Ink 3
Box X,Y To X+TPIX+8,Y+14
Ink 2
Draw X,Y To X,Y+14
Draw X,Y To X+TPIX+8,Y
Ink I,1
Text X+9,Y+10,T$
End Proc
'
'From AMOS COMPILER V1.0
' By Francios !
'Slight mod by ejber!
'
Procedure _SQUASH_A_PROG[S$,D$,FIRST]
'
'
DC=-1
Open In 1,S$
Open Out 2,D$
'
' TRC=Lof(1)
' _PW["Original Length:"+Str$(TRC),3]
HEAD1$=Input$(1,12)
NHUNK=Leek(Varptr(HEAD1$)+8)
HEAD2$=Input$(1,4*(2+NHUNK))
'
Print #2,HEAD1$;
Print #2,HEAD2$;
'
For H=0 To NHUNK-1
FLAG=True : If FIRST<>0 and H=0 and NHUNK>1 : FLAG=0 : End If
Gosub SQHUNK
Exit If BRK
Loke Varptr(HEAD2$)+4*(2+H),HH
Next
'
If BRK=0
Pof(2)=12
Print #2,HEAD2$;
LPROG=Lof(2)
Close
Else
Close
Kill D$
LPROG=0
_PW["Crunching Aborted Control - C! ",3]
End If
Goto SQEND
'
SQERROR:
Kill D$
KK: LPROG=-1
_PW["Error While Crunching!",3]
Goto SQEND
'
SQHUNK:
H$=Input$(1,8) : Pof(1)=Pof(1)-8
HH=Leek(Varptr(H$)) and $C0000000
LP=Leek(Varptr(H$)+4) : HH=HH or LP : Rol.l 2,LP
Add LP,8+4
F=0
'
'Erase 8
Reserve As Work 8,LP+16
'
OLDPOF=Pof(1)
'
_ONCE_AGAIN:
AP=Start(8) : P=0 : Add DC,1
_PW["Loading & Crunching Next Hunk :"+Str$(DC),3]
Repeat
L=2048 : If P+L>LP : L=LP-P : End If
LA$=Input$(1,L)
Copy Varptr(LA$),Varptr(LA$)+L To AP
Add P,L : Add AP,L
Until P>=LP
'
AP=Start(8)
'
If FLAG<>0 and F=0
If Leek(AP)<>$78566467
'
' Gosub MEM
_GETMEMORY
'
CFLASH$="-Z"+Str$(WHATCOL)
L= Extension_5_00CE(AP+8,LP-12,-1,512,WHATCOL)
' L=Squash(AP+8,LP-12,-1,512,17)
If L=-1
Pof(1)=OLDPOF : F=-1 : Goto _ONCE_AGAIN
End If
If L=-2 : BRK=-1 : Goto _ABORT : End If
'
LH=(L+3) and $FFFFFFFC
Copy AP+8,AP+8+LH To AP+8+12
Loke AP+8,$78566467 : Loke AP+12,LP : Loke AP+16,L
Add LH,12 : Loke AP+4,LH/4
HH=(HH and $C0000000) or(LH/4)
Loke AP+8+LH,$3F2
LP=8+LH+4
End If
End If
'
LA$=Space$(2048) : P=0
Repeat
L=2048 : If P+L>LP : L=LP-P : End If
Copy AP,AP+L To Varptr(LA$)
Print #2,Left$(LA$,L);
Add P,L : Add AP,L
Until P>=LP
'
_ABORT:
' DC=DC+LP
' _PW["Loading & Crunching Next Hunk "+Str$((100*DC)/TRC)+"%",3]
Erase 8
_GETMEMORY
Return
'
'
SQEND:
_GETMEMORY
_PW["Done.",2]
End Proc[LPROG]
Procedure _PALETTE
Screen Open 2,640,100,4,Hires
Screen 2
Curs Off : Flash Off : Pen 1 : Paper 0 : Get Palette 0 : Cls 0
Screen Display 2,140,40,640,100
TBAR["Palette Editor V1.1 By John Collet"]
PALET["0"]
Screen 0 : Get Palette 2
Screen Close 2
Screen 0
C=0 : C2=0 : C3=0
End Proc
'
' ============= Procedures called by PALET[mode$] =============
Procedure PALET[F$]
If F$="1"
F$=Fsel$("*.IFF","","Load an IFF file") :
If F$<>"" : Load Iff F$,1 : End If
Else
If F$<>"0" : Load Iff F$ : End If
End If
Shared WX,WY,P$
SW=Screen Width
NC=Screen Colour
' P$="$000,$79A,$FFF,$FB5,$FF0,$0F0,$F00,$800,$9DF,$59F,$D00,$ACC,$FC0,$D80,$840,$FCC,$FFF,$DDD,$CCC,$AAA,$999,$777,$666,$444,$FB0,$EA0,$C90,$B80,$A60,$950,$740,$630"
P$=""
Screen 0 : SK=Screen Colour : For I=0 To SK-1
P$=P$+Hex$(Colour(I),3)+","
Next : Screen 2
Reserve Zone NC+19 : Flash Off : Curs Off
WX=SW/4-50 : WY=20
Wind Save
If(F$="0") or(F$="") : RESET : End If
Repeat
PALWIN
Until Param=0
End Proc
Procedure PALWIN
Shared WX,WY,CHOYCE
OPEN_WINDOW[1] : Curs Off
PREPARE_SAMPLER
CHOYCE=1 : H$=Hex$(Colour(1),3) : DISPLAY_H : SLIDER_VALUES : PZ=0
MAIN
AGAIN=(Param=10)
Wind Close
End Proc[AGAIN]
Procedure MAIN
Shared WX,WY,X,Z,CHOYCE,P$
NC=Screen Colour
Limit Mouse 128,42 To 446,298
Repeat
M=Mouse Key : Z=Mouse Zone
If Z<4 : SLIDER[Z]
Else
If Z>3 and Z<11 and M
X=X Mouse : X=X Screen(X)
On Z-3 Proc DUP_COL,RANGE,QUIT,SAIVE,FIKS,RESET,NEWPOS
Else
If(Z>10) and(Z<(NC+11)) and M : CHOOSE_COLOUR : M=0 : End If
End If
End If
Until M<>0 and(Z=6 or Z=(10))
End Proc[Z]
Procedure FIKS
Shared P$
W_SH[114,75,"Fix",2]
NC=Screen Colour
P$=""
For I=0 To NC-1
P$=P$+Hex$(Colour(I),3)+","
Next
W_SH[114,75,"Fix",3]
End Proc
Procedure RESET
Shared P$
NC=Screen Colour
For I=0 To NC-1
C$=(Mid$(P$,(I*5)+1,4)) : Colour I,Val(C$)
Next
End Proc
Procedure QUIT
End Proc
Procedure SAIVE
Add OPTS,1
If OPTS>9 Then OPTS=0
_PALS[OPTS]
Wait 10
Pop Proc
Shared WX,WY,P$
W_SH[150,64,"Save",2]
Open Out 1,"RAM:palset.ASC"
Print #1,""
Print #1," The characters between < and > may be assigned to P$"
Print #1," in the 11th line of Procedure PALET[]. For this, there"
Print #1," must be FOUR characters in each element (e.g. $F00"
Print #1," should not be reduced to $F)."
Print #1,""
Print #1,"<"
Print #1,P$
Print #1,">"
Print #1,""
Print #1," The data may, of course, be useful in other applications."
Close 1
W_SH[150,64,"Save",3]
End Proc
Procedure DUP_COL
Shared WX,WY,CHOYCE,X
D1=Val(Hex$(Colour(CHOYCE),3))
Gr Writing 0
If X<WX+146
MBOSS[110,35,145,44] : W_SH[113,42,"To?",2]
Else
MBOSS[148,35,184,44] : W_SH[151,42,"With",2]
End If
NEWZ=0 : Repeat : M=Mouse Click : NEWZ=Mouse Zone : Until NEWZ>10 and M
D2=Val(Hex$(Colour(NEWZ-11),3))
Colour NEWZ-11,D1
If X<WX+146
MBOSS[110,35,145,44] : W_SH[113,42,"Copy",3]
Else
Colour CHOYCE,D2
MBOSS[148,35,184,44] : W_SH[151,42,"Swap",3] :
End If
Gr Writing 1
End Proc
Procedure RANGE
On Error Goto OHDEAR
Shared WX,WY,CHOYCE
W_SH[158,53,"To?",2]
Repeat : M=Mouse Click : NEWZ=Mouse Zone : Until NEWZ>10 and M
Ink 1 : W_BAR[158,47,182,54] : FIRST=CHOYCE : LAST=NEWZ-11
C1$=Hex$(Colour(FIRST),3)
R1=Val(Left$(C1$,2)) : G1=Val("$"+Mid$(C1$,3,1)) : B1=Val("$"+Right$(C1$,1))
C2$=Hex$(Colour(LAST),3)
R2=Val(Left$(C2$,2)) : G2=Val("$"+Mid$(C2$,3,1)) : B2=Val("$"+Right$(C2$,1))
CASES#=Abs(LAST-FIRST) : If LAST=FIRST : Pop Proc : End If
RDIR=(R1>R2)+Abs(R1<R2) : GDIR=(G1>G2)+Abs(G1<G2) : BDIR=(B1>B2)+Abs(B1<B2)
RDIST#=Abs(R1-R2) : R_PIECE#=(RDIST#/CASES#)
GDIST#=Abs(G1-G2) : G_PIECE#=(GDIST#/CASES#)
BDIST#=Abs(B1-B2) : B_PIECE#=(BDIST#/CASES#) : T=0
For K=FIRST+1 To LAST-1
Inc T
NEWR#=R1+RDIR*T*R_PIECE# : NEWG#=G1+GDIR*T*G_PIECE# : NEWB#=B1+BDIR*T*B_PIECE#
THISCOL=Val(Hex$(Int(NEWR#+0.5),1)+Right$(Hex$(Int(NEWG#+0.5),1),1)+Right$(Hex$(Int(NEWB#+0.5),1),1))
Colour K,THISCOL
Next
NOPE:
Screen 2
Pop Proc
OHDEAR:
Screen To Front 2
ERNO=Errn
If ERNO=23 Then REQ[" YOU CAN ONLY RANGE FORWARD!"," I.E FROM COLOUR 5 TO 20"," OKAY"," OKAY"]
ERNO=0
Resume NOPE
End Proc
Procedure CHOOSE_COLOUR
Shared WX,WY,Z,CHOYCE,H$
CHOYCE=Z-11
DISPLAY_H
Colour CHOYCE,Val(H$)
Ink CHOYCE : W_BAR[7,3,35,20]
SLIDER_VALUES
End Proc
Procedure DISPLAY_H
Shared WX,WY,CHOYCE,H$
H$=Hex$(Colour(CHOYCE),3)
Gr Writing 1 : Ink 0,1 : Text WX+9,WY+31,Right$(H$,3) : Ink 2,1
End Proc
Procedure PREPARE_SAMPLER
Shared WX,WY
MBOSS[6,2,36,21] : MBOSS[6,23,36,33]
W_ZONE[10,6,2,36,21]
W_SH[44,9,"R",3] : W_SH[44,19,"G",3]
W_SH[44,29,"B",3]
X1=56 : X2=184
For I=0 To 2
Y1=2+I*10 : Y2=10+I*10 : MBOSS[X1,Y1,X2,Y2]
W_ZONE[I+1,X1,Y1,X2,Y2]
If I<2 : Ink 0 : For J=1 To 15 : W_PLOT[WX,WY,X1+J*8,Y2+1] : Next : End If
Next
MBOSS[110,35,145,44] : MBOSS[148,35,184,44] : W_ZONE[4,110,35,184,44]
MBOSS[110,46,184,55] : W_ZONE[5,110,46,184,55]
MBOSS[110,57,145,66] : W_ZONE[6,110,57,145,66]
MBOSS[148,57,184,66] : W_ZONE[7,148,57,184,66]
MBOSS[110,68,145,77] : W_ZONE[8,110,68,145,77]
MBOSS[148,68,184,77] : W_ZONE[9,148,68,184,77]
W_SH[113,42,"Copy",3] : W_SH[151,42,"Swap",3] : W_SH[114,53,"Range",3]
W_SH[114,64,"OK",3] : W_SH[151,64,"PreS",3]
W_SH[114,75,"Fix",3] : W_SH[151,75,"Rset",3]
' Sample rows
X1=6 : Y1=36 : X2=102 : Y2=76
NC=Screen Colour
MBOSS[X1-1,Y1,X2,Y2+1]
NROWS=2+2*Abs(NC>12) : NCOLS=NC/(2+(2*Abs(NC>8)))
RSTEP=40/NROWS : CSTEP=96/NCOLS
R1=Y1 : C1=X1 : C2=X2-CSTEP : I=0
For R=1 To NROWS
For C=1 To NCOLS
Ink I : W_BAR[C1,R1+1,C1+CSTEP-1,R1+RSTEP]
W_ZONE[I+11,C1+1,R1+1,C1+CSTEP-1,R1+RSTEP]
Add C1,CSTEP,X1 To C2 : Inc I
Next
Add R1,RSTEP
Next
' MBOSS[200,10,340,30]
' W_SH[216,20,"Rotate Preset",3]
' Set Zone NC+11,200,10 To 250,90
End Proc
Procedure OPEN_WINDOW[N]
Shared WX,WY
WX=(WX+8)/16*16
Wind Open N,WX,WY,24,10 : Curs Off : Flash Off
Ink 3 : Set Pattern 2 : W_BAR[1,1,191,79] : Set Pattern 0
X2=WX+191 : Y2=WY+79
Ink 2 : Polyline WX,Y2 To X2,Y2 To X2,WY
Ink 3 : Polyline WX,Y2 To WX,WY To X2,WY
End Proc
Procedure MBOSS[X1,Y1,X2,Y2]
Shared WX,WY
' X1=WX+X1 : Y1=WY+Y1 : X2=WX+X2 : Y2=WY+Y2
Add X1,WX : Add Y1,WY : Add X2,WX : Add Y2,WY
Ink 0 : Bar X1,Y1 To X2,Y2
Ink 2 : Polyline X1,Y2 To X2,Y2 To X2,Y1
Ink 3 : Polyline X1,Y2 To X1,Y1 To X2,Y1
End Proc
Procedure W_SH[TX,TY,T$,I]
Shared WX,WY
Gr Writing 0
Ink 2 : Text WX+TX+1,WY+TY+1,T$
Ink 3 : Text WX+TX,WY+TY,T$
Gr Writing 1
End Proc
Procedure W_PLOT[WX,WY,X,Y]
Plot WX+X,WY+Y
End Proc
Procedure W_DRAW[X1,Y1,X2,Y2]
Shared WX,WY
Draw WX+X1,WY+Y1 To WX+X2,WY+Y2
End Proc
Procedure W_BAR[X1,Y1,X2,Y2]
Shared WX,WY
Bar WX+X1,WY+Y1 To WX+X2,WY+Y2
End Proc
Procedure W_ZONE[N,X1,Y1,X2,Y2]
Shared WX,WY
Set Zone N,WX+X1,WY+Y1 To WX+X2,WY+Y2
End Proc
Procedure SLIDER[Z]
Shared WX,WY,Z,CHOYCE,H$
PX=0
While Mouse Key=1
X=X Screen(X Mouse)
If Z>0 and X<>PX and X>WX+56
DISPLAY_H
RED$="$"+Mid$(H$,2,1) : GREEN$="$"+Mid$(H$,3,1) : BLUE$="$"+Right$(H$,1)
X1=WX+57 : X2=X : X3=X1+126 : Y1=WY+3+(Z-1)*10 : Y2=Y1+6
If X1+1<X2 and X2<X3 :
Ink 2 : Set Pattern 32 : Bar X1+1,Y1+1 To X2,Y2-1 : Set Pattern 0
If X2+1<X3 : Ink 1 : Bar X2,Y1 To X3,Y2 : End If
'Set colour as bar moves
DISTANCE=(X2-X1)/8
If DISTANCE<10
DIST$=Str$(DISTANCE)
Else
DIST$=Chr$(55+DISTANCE)
End If
If Z=1 : RED$=DIST$
Else
If Z=2 : GREEN$=DIST$
Else
If Z=3 : BLUE$=DIST$ : End If
End If
End If
H$="$"+Right$(RED$,1)+Right$(GREEN$,1)+Right$(BLUE$,1)
Colour CHOYCE,Val("$"+Right$(RED$,1)+Right$(GREEN$,1)+Right$(BLUE$,1))
Ink CHOYCE : Bar WX+7,WY+3 To WX+35,WY+17 : DISPLAY_H
End If
End If
PX=X
Wend
End Proc
Procedure SLIDER_VALUES
Shared WX,WY,H$
RED$="$"+Mid$(H$,2,1) : GREEN$="$"+Mid$(H$,3,1) : BLUE$="$"+Right$(H$,1)
X1=WX+57 : X3=X1+126
For Z=1 To 3
If Z=1 : X2=Val(RED$)
Else
If Z=2 : X2=Val(GREEN$)
Else
X2=Val(BLUE$)
End If
End If
X2=WX+56+X2*8+8 : Y1=WY+3+(Z-1)*10 : Y2=Y1+6
Ink 2 : Set Pattern 32 : Bar X1+1,Y1+1 To X2-1,Y2-1 : Set Pattern 0
If X2+1<X3 : Ink 1 : Bar X2,Y1 To X3,Y2 : End If
Next
End Proc
Procedure NEWPOS
Pop Proc
Shared WX,WY
SW=Screen Width
M=0 : Ink 3 : Gr Writing 2
While M=0
X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
If X<>OX and Y<>OY : Box X,Y To X+192,Y+80 : Box X,Y To X+192,Y+80 : End If
M=Mouse Click : OX=X : OY=Y
Wend
Ink 1 : Gr Writing 1
WX=X Screen(X Mouse) : If WX>SW-192 : WX=SW-192 : End If
WY=Y Screen(Y Mouse) : If WY>180 : WY=176 : End If
WX=(WX+8)/16*16
End Proc