home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format 67
/
af067a.adf
/
SYSTEM.DMS
/
SYSTEM.adf
/
Editor_Config.AMOS
/
Editor_Config.amosSourceCode
< prev
Wrap
AMOS Source Code
|
1993-03-31
|
17KB
|
604 lines
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'
' AMOSPro Editor Configuration V 1.1
'
'----------------------------------------------------------------------
'
' By Fran�ois Lionet
'
' (c) 1992 Europress Software Ltd.
'
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'
Set Buffer 24
Set Accessory
Global DB$
Global YDI,YSI,QUIT
Global BNAME$
Global STMX,NST
Global MX,MY,MK,MZ,MS
Global BKPOS,BKCHANGE,ABK,ADAT,BK,TBNK,BKCHUNKS
Global ESX,ESY,D_NAME$
COM$=Command Line$
Command Line$=""
' Maximum number of strings
STMX=256
Dim ST$(STMX)
Global ST$(),STAD
Dim FLAGS(16)
Global FLAGS()
BK=10
' Initialisation
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Resource Bank 16
' Make sure this program is called from the editor menu!
COM=0
If Prg Under=1
If Left$(COM$,4)="EDIT" : COM=Val(Right$(COM$,1)) : End If
End If
ESX=640 : ESY=200 : YDI=45 : YSI=ESY : If COM=6 : YSI=104 : End If
INIT_SCREEN
If COM>=1 and COM<=6
On COM Proc MN_SETUP,MN_MENUS,MN_DIALOG,MN_TEST,MN_RUN,MN_PALETTE
MN_QUIT
End If
MN_BAD
Procedure MN_SETUP
ADAT=Leek(Dreg(3)) : If ADAT=0 : Stop : End If
Do
' Save baks + Interlaced
Vdialog(1,2)=Peek(ADAT+24) and 1
Vdialog(1,3)=Peek(ADAT+10) and 1
' UNDO
SETVDIA[16,Leek(ADAT+18),0,10000,1]
SETVDIA[20,Leek(ADAT+14)/1024,0,256,1]
' History
SETVDIA[24,Deek(ADAT+26),1,128,1]
M=0
D=Dialog Run(1,1)
Repeat
Multi Wait
D=Dialog(1)
Exit If D=1,2
If D
If D=4
If Vdialog(1,3)
I=2 : Y=288*2
Else
I=1 : Y=288
End If
MN_SCREEN[Resource$(13),ADAT,640,704,184,Y,2,I]
Exit
End If
If D=5 : MN_FILES : Exit : End If
Call Editor 182,100,"Null!"
If Param=0
Poke ADAT+24,Rdialog(1,2) and 1
Poke ADAT+10,Rdialog(1,3) and 1
Loke ADAT+18,Rdialog(1,16)
Loke ADAT+14,Rdialog(1,20)*1024
Doke ADAT+26,Rdialog(1,24)
Else
OOMEM
End If
End If
Until QUIT
QUIT=0
Loop
' Reduce screen if not interlaced
SY=Deek(ADAT+2) : I=Peek(ADAT+10)
If I=0
If SY>288
SY=256 : If Ntsc : SY=200 : End If
Doke ADAT+2,SY
End If
End If
End Proc
Procedure MN_BAD
D=Dialog Box(DB$,2,Resource$(31))
MN_QUIT
End Proc
Procedure SETVDIA[V,A,B,C,D]
Vdialog(1,V)=A
Vdialog(1,V+1)=B
Vdialog(1,V+2)=C
Vdialog(1,V+3)=D
End Proc
Procedure MN_SCREEN[T$,AD,XMIN,XMAX,YMIN,YMAX,RESX,RESY]
X=Free
A=Lowres : If RESX=2 : A=Hires : End If
If RESY=2 : Add A,Laced : End If
Trap Screen Open 1,XMAX,YMAX,2,A
If Errtrap : OOMEM : End If
Screen Hide 1
Screen Display 0,,,,14
Curs Off : Cls 0 : Palette 0,$FF0
For X=0 To XMAX Step 16 : Draw X,0 To X,YMAX : Next
For Y=0 To YMAX Step 16 : Draw 0,Y To XMAX,Y : Next
Wind Open 1,0,8,20,4,1 : Curs Off : Scroll Off
SX=Deek(AD) : SY=Deek(AD+2)
WX=Deek(AD+4) : WY=Deek(AD+6)
Screen Display 1,WX,WY,SX/RESX,SY
Screen To Front 0
Vdialog$(1,0)=T$
SETVDIA[16,Deek(AD+8),2,312,1]
D=Dialog Run(1,7)
Screen Show 1
Repeat
Multi Wait
D=Dialog(1) : Exit If D=1
If D=2 : M=1 : Clw : Gosub _DISP : End If
If D=3 : M=2 : Clw : Gosub _DISP : End If
If D=0
If Mouse Key=1
Dialog Freeze
While Mouse Key
If M=1
WX=X Mouse : WY=Y Mouse
End If
If M=2
SX=Max(Min(X Screen(1,X Mouse),XMAX),XMIN)
SY=Max(Min(Y Screen(1,Y Mouse),YMAX),YMIN)
If RESX=1
SX=SX and $FFFFFFF0
Else
SX=SX and $FFFFFFE0
End If
SY=SY and $FFFFFFF8
End If
Screen Display 1,WX,WY,SX/RESX,SY
Gosub _DISP
Wait Vbl
Wend
Dialog Unfreeze
End If
End If
Until QUIT
' Send modification to editor
Call Editor 182,100,"Null!"
If Param=0
Doke AD,SX : Doke AD+2,SY
Doke AD+4,WX : Doke AD+6,WY
Doke AD+8,Vdialog(1,16)
Else
Bell
End If
Screen Close 1
Screen Display 0,,,,ESY
Screen To Front 0
View : Wait Vbl
QUIT=-1
Pop Proc
_DISP:
Home
If M=1
Print Resource$(18);WX;" "
Print Resource$(19);WY;" "
Else
Print Resource$(20);SX;" "
Print Resource$(21);SY;" "
End If
Return
End Proc
Procedure MN_FILES
MN_STRINGS[1,45,48,Resource$(27),Resource$(29),Resource$(30),0]
End Proc
Procedure MN_MENUS
MN_STRINGS[2,1,200,Resource$(4),Resource$(16),Resource$(16),1]
End Proc
Procedure MN_DIALOG
MN_STRINGS[3,1,255,Resource$(5),Resource$(16),Resource$(16),0]
End Proc
Procedure MN_TEST
MN_STRINGS[4,1,64,Resource$(6),Resource$(16),Resource$(16),0]
End Proc
Procedure MN_RUN
MN_STRINGS[5,1,164,Resource$(7),Resource$(16),Resource$(16),0]
End Proc
Procedure MN_PALETTE
Dim S(8)
ADAT=Leek(Dreg(3)) : If ADAT=0 : Stop : End If
For C=0 To 7 : S(C)=Deek(ADAT+C*2+28) : Next
S(8)=Deek(ADAT+12)
D=Dialog Run(1,8)
CUR=0
Do
If CUR=8
C=Deek(ADAT+12)
Else
C=Deek(ADAT+CUR*2+28)
End If
R=(C and $F00)/$100 : G=(C and $F0)/$10 : B=C and $F
Dialog Update 1,3,R
Dialog Update 1,4,G
Dialog Update 1,5,B
Repeat
Multi Wait
D=Dialog(1)
Exit If D=1,2
If D=2
For CUR=0 To 8
Exit If Rdialog(1,2,CUR+1)
Next
Exit
End If
F=0
If D=3 : R=Rdialog(1,3) : Inc F : End If
If D=4 : G=Rdialog(1,4) : Inc F : End If
If D=5 : B=Rdialog(1,5) : Inc F : End If
If D=6 : C=S(CUR) : Gosub _SET2 : Exit : End If
If F : Gosub _SET : End If
Until QUIT
QUIT=0
Loop
Pop Proc
_SET:
C=R*$100+G*$10+B
_SET2:
Call Editor 182,100,"Null!"
If Param=0
If CUR<8
Screen 8 : Colour CUR,C
Screen 9 : Colour CUR,C
Screen 0 : If CUR<>1 : Colour CUR,C : End If
Doke ADAT+CUR*2+28,C
Else
Colour Back C
Doke ADAT+12,C
End If
End If
View : Wait Vbl : Return
End Proc
Procedure MN_STRINGS[SO,SD,SF,T1$,T2$,T3$,FLAG]
Dim TMP$(SF-SD+1)
For S=SD To SF : TMP$(N)=Resource$(-1000*SO-S) : Inc N : Next : POS=0
Do
X=Free
Vdialog$(1,0)=T1$ : Vdialog$(1,1)=T2$
Vdialog(1,2)=POS
Vdialog(1,3)=Array(TMP$(0))
D=Dialog Run(1,2)
Repeat
Multi Wait
D=Dialog(1)
POS=Rdialog(1,2)
Exit If D=1,2
If D=3
N=Rdialog(1,3)
MN_EDIT[T3$,TMP$(N)]
If FLAG=0
A$=Param$
Else
L=Len(TMP$(N)) : A$=Param$
If Len(A$)<L
A$=A$+String$(Left$(A$,1),L-Len(A$))
Else
A$=Left$(A$,L)
End If
End If
A$=Space$(4)+A$ : Loke Varptr(A$),SD+N
Call Editor 182,SO,A$
If Param
OOMEM
Else
TMP$(N)=Mid$(A$,5)
End If
QUIT=-1
End If
Until QUIT
QUIT=0
Loop
N=0 : For S=SD To SF : ST$(S)=TMP$(N) : Inc N : Next
End Proc
Procedure MN_EDIT[T$,S$]
Vdialog$(1,1)=S$
Vdialog$(1,2)=T$
D=Dialog Run(1,3)
If D=2 : S$=Rdialog$(1,3) : End If
End Proc[S$]
Procedure INIT_SCREEN
Restore DBL
Repeat
Read A$ : DB$=DB$+A$
Until A$=""
Screen Open 0,ESX,ESY,8,Hires
Screen Display 0,,YDI,,YSI
Curs Off : Flash Off : Cls 0
Wait Vbl
GRB_EDITOR_PALETTE
Paper 0 : Pen 1
Limit Mouse 50,0 To 530,312
On Error Goto ERR
Dialog Open 1,DB$,48
Pop Proc
ERR: Print Mid$(DB$,Edialog,80) : Wait Key : End
' Definition of quick-run dialog boxes
DBL:
Data "SIze 1VA TW 160+,64;"
Data "BAse SWidth SX -2/,SHeight SY- 2/;"
Data "SAve 1;"
Data "RBox 0,0,SX,SY,0;"
Data "CTxt 16,8,SX 16-,32,1,1VA;"
Data "IF 0VA 1=;"
Data "["
Data " BJ 1,16,SY 24-,64,16,14ME; KY 27,0;"
Data " BJ 2,SX 80-,SY 24-,64,16,15ME; KY 13,0;"
Data "]"
Data "IF 0VA 2=;"
Data "["
Data " BJ 1,SX 80-,SY 24-,64,16,14ME; KY $FF,0;"
Data "]"
Data "RUn 0,3;"
Data "EXit;"
' Definition of Setup screen
Data "LA 1;"
Data "BAse 0,0; SIze SW,SH;"
Data "BT 1,0,0,48,16,1ME;"
Data "BI 0,XB,0,SX XB-,16,3ME;"
Data "RB 0,16,SX,SY,0;"
Data "BK 2,16,32,SX32-,14,11ME;"
Data "BK 3,XA,YB4+,XBXA-,YBYA-,12ME;"
Data "BT 4,XA,YB12+,XBXA-,16,13ME;"
Data "RC 16,YB12+,416,14,1,8ME; NE 16,XB,YA;"
Data "RC 16,YB4+,416,YBYA-,1,9ME; NE 20,XB,YA;"
Data "RC 16,YB4+,416,YBYA-,1,10ME; NE 24,XB,YA;"
Data "BT 5,16,YB12+,SX32-,16,28ME;"
Data "EXit;"
' Definition of string setup
Data "LA 2;"
Data "BAse 0,0; SIze SW,SH;"
Data "BT 1,0,0,48,16,1ME;"
Data "BI 0,XB,0,SX XB-,16,0VA;"
Data "RB 0,16,SX,SY,0;"
Data "CTxt 32,32,SX32-,64,1,1VA;"
Data "LS 2,XA2-,YB14+,SX30-,SY14-,%11;"
Data "EXit;"
' Definition of the pop-up string edition
Data "LA 3;"
Data "BAse 16,64; SIze SW32-,72;SA 1;"
Data "RBox 0,0,SX,SY,0;"
Data "RBox 8,4,SX8-,20,1;"
Data "POut 2VA CX,8,2VA,0,3;"
Data "RBox 13,30,SX 13-,42,1;"
Data "BJ 1,16,SY 24-,128,16,14ME; KY 27,0;"
Data "BJ 2,SX144-,SY 24-,128,16,15ME; KY 13,0;"
Data "EDit 3,16,32,72,72,1VA,0,3;"
Data "RU 0,3;"
Data "EXit;"
' Screen setup
Data "LA 7;"
Data "BAse 0,0; SIze SW,14;"
Data "BT 1,0,0,48,14,2ME;"
Data "BI 0,XB,0,208,14,0VA;"
Data "BT 2,XB,0,48,14,24ME;"
Data "BT 3,XB,0,48,14,25ME;"
Data "RC XB,0,96,14,1,26ME; NE 16,XB,YA;"
Data "EXit;"
' Palette
Data "LA 8;"
Data "BAse 0,0; SIze SW,104;"
Data "BT 1,0,0,48,16,1ME;"
Data "BI 0,XB,0,SX XB-,16,32ME;"
Data "RB 0,16,SX,SY,0;"
Data "QQ 2,16,24,67,14,36ME,1;"
Data "QQ 2,XB,YA,XBXA-,YBYA-,37ME,0;"
Data "QQ 2,XB,YA,XBXA-,YBYA-,38ME,0;"
Data "QQ 2,XB,YA,XBXA-,YBYA-,39ME,0;"
Data "QQ 2,XB,YA,XBXA-,YBYA-,40ME,0;"
Data "QQ 2,XB,YA,XBXA-,YBYA-,41ME,0;"
Data "QQ 2,XB,YA,XBXA-,YBYA-,42ME,0;"
Data "QQ 2,XB,YA,XBXA-,YBYA-,43ME,0;"
Data "QQ 2,XB,YA,XBXA-5+,YBYA-,45ME,0;"
Data "PP 3,16,YB4+,624,YB16+,33ME;"
Data "PP 4,XA,YB,XB,YB YBYA-+,34ME;"
Data "PP 5,XA,YB,XB,YB YBYA-+,35ME;"
Data "BT 6,16,YB4+,SX32-,14,44ME;"
Data "EXit;"
Data "UI PP,6;["
Data "RC P2,P3,P4P2-,P5P3-,0,P6;"
Data "SV P1,P2; SV 3P1+,P3;"
Data "HS P1,P2 96+,P3 3+,P4P2-104-,P5P3-6-,0,1,16,1;[SW 1; IN 6,6,6; PR ZNVA 56+,ZN3+VA 2+,ZP#' '!,3;]"
Data "XY P2,P3,P4,P5;]"
Data "UI QQ,7; ["
Data "SZone P6;"
Data "BU P1,P2,P3,P4,P5,P7,0,1;"
Data " [RB 0,0,SX,SY,BP;"
Data " SW 0; PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
Data " [BC ZN,0;]"
Data "]"
'----------------------------------------
' Text in a RBox, on the left
' RC x,y,sx,sy,act,txt
Data "UI RC,6;["
Data "RB P1,P2,P1P3+,P2P4+,P5;"
Data "PR 6P1+,P4TH-2/ P2+,P6,3;"
Data "XY P1,P2,P1P3+,P2P4+;"
Data "]"
'----------------------------------------
' One button, with text, ON/OFF <<< variable
' BK zone,x,y,sx,sy,text1
Data "UI BK,6; ["
Data "RC P2,P3,P464-,P5,1,P6;"
Data "BU P1,P2P4+64-,P3,64,P5,P1VA,0,1;"
Data " [RB 0,0,SX,SY,0;"
Data " PR 22BP+ME CX,SY TH- 2/,22BP+ME,3;]"
Data " [SVar ZN,ZPos;]"
Data "XY P2,P3,P2P4+,P3P5+;"
Data "]"
' --------------------------------
' Number Edit: - / + / Slider / Digit
' NE zone,x,y Uses 4 variables from ZONE
Data "UI NE,3; ["
Data "SZone P1;"
Data "RBox P2,P3,128P2+,14P3+,0;"
Data "HSlide P1,XA4+,YA3+,119,8,P1VA 1P1+VA -,1,2P1+VA 1P1+VA -,3P1+VA;"
Data " [SVar ZN,ZPos 1ZN+VA +;JS 100;]"
Data "SVar 2P1+,128P2+; SVar 3P1+,P3; JSub 100;"
Data "XY P2,P3,XB,YB;"
Data " ]"
Data "LA100; RB 2ZV+VA,3ZV+VA,2ZV+VA64+,3ZV+VA14+,0;"
Data "PRint 2ZV+VA6+,3ZV+VA3+,ZVVA #,3;"
Data "XY 2ZV+VA,3ZV+VA,2ZV+VA64+,3ZV+VA14+; RTs;"
' --------------------------------
' List Slider: draw a list + a slider, linked together
' LS zone,x,y,x,y,flags
Data "UI LS,6; ["
Data "RB P2,P3,P2 16+,P5,1;"
Data "RB XB,YA,P4,P5,1;"
Data "SZone P1;"
Data "VSlide P1,P2 3+,P3 2+,9,P5 P3- 4-,P1VA,7,1P1+VA AS,1;[ZChange ZNum 1+,ZPos;]"
Data "AList P1 1+,P2 18+,P3 2+,P4 P2- 18- 8/,P5 P3- 8/,1P1+VA,P1VA,P6,0,3;[]"
Data "XY P2,P3,P4,P5;]"
'----------------------------------------
' One button, with vertical text, click only
' BV zone,x,y,sx,sy,text
Data "UI BV,6; ["
Data "SZone P6;"
Data "BU P1,P2,P3,P4,P5,0,0,1;"
Data " [RB 0,0,SX,SY,BP;"
Data " VTxt SX 2/ 4- BP+,SY ZVarTLen TH* - 2/ BP+,ZV,1;]"
Data " [BR 0;]"
Data "]"
'----------------------------------------
' One button, with text, click only
' BT zone,x,y,sx,sy,text
Data "UI BT,6; ["
Data "SZone P6;"
Data "BU P1,P2,P3,P4,P5,0,0,1;"
Data " [RB 0,0,SX,SY,BP;"
Data " PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
Data " [BR 0;]"
Data "]"
'---------------------------------------- '
' One button, with text to move the screen
' BT zone,x,y,sx,sy,text
Data "UI BI,6; ["
Data "SZone P6;"
Data "BU P1,P2,P3,P4,P5,0,0,1;"
Data " [RB 0,0,SX,SY,BP;"
Data " PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
Data " [SMove;BR 0;]"
Data "]"
'----------------------------------------
' One button, with text, click only, QUIT!
' BJ zone,x,y,sx,sy,text
Data "UI BJ,6; ["
Data "SZone P6;"
Data "BU P1,P2,P3,P4,P5,0,0,1;"
Data " [RB 0,0,SX,SY,BP;"
Data " PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
Data " [BR 0;BQuit;]"
Data "]"
'----------------------------------------
' Text centered in one RB
' CT x1,y1,x2,y2,act,text
Data "UI CT,6; ["
Data "RB P1,P2,P3,P4,P5;"
Data "PRint P3 P1- P6TW- 2/ P1+,P4 P2- TH- 2/ P2+,P6,3;"
Data "XY P1,P2,P3,P4;]"
'----------------------------------------
' Ronnies Simpson graphic box definition
' RB x1,y1,x2,y2,activated
Data "UI RB,5; [SWrite 1; SPattern 0,0;"
Data "IF P5 0=;["
Data "INk 0,0,0; GSquare P1,P2,P3 1-,P4 1-;"
Data "INk 6,6,6; GBox P1 1+,P2 1+,P3 2-,P4 2-; "
Data "INk 5,5,5; GLine P1 2+,P4 2-,P1 2+,P2 1+;"
Data " GLine P1 1+,P4 2-,P1 1+,P2 1+;"
Data " GLine P1 1+,P2 1+,P3 2-,P2 1+;"
Data "INk 2,2,2; GLine P1 2+,P4 2-,P3 2-,P4 2-;"
Data " GLine P3 3-,P2 2+,P3 3-,P4 2-;"
Data " GLine P3 2-,P2 1+,P3 2-,P4 2-;"
Data "INk 3,3,3; GLine P1 3+,P2 2+,P1 4+,P2 2+;]"
Data "IF P5 0\;["
Data "INk 0,0,0; GSquare P1,P2,P3 1-,P4 1-;"
Data "INk 2,2,2; GBox P1 1+,P2 1+,P3 2-,P4 2-; "
Data "INk 1,1,1; GLine P1 2+,P4 2-,P1 2+,P2 1+;"
Data " GLine P1 1+,P4 2-,P1 1+,P2 1+;"
Data " GLine P1 1+,P2 1+,P3 2-,P2 1+;"
Data "INk 5,5,5; GLine P1 2+,P4 2-,P3 2-,P4 2-;"
Data " GLine P3 3-,P2 2+,P3 3-,P4 2-;"
Data " GLine P3 2-,P2 1+,P3 2-,P4 2-;]"
Data "SWrite 0; XY P1,P2,P3,P4;]"
Data ""
End Proc
Procedure OOMEM
Trap Dialog Clr 1
Trap Dialog Close
Trap D=Dialog Box(DB$,2,Resource$(46))
MN_QUIT
End Proc
Procedure MN_QUIT
Dialog Close
Trap Screen Close 0
Trap Screen Close 1
Edit
End Proc
Procedure GRB_EDITOR_PALETTE
ADAT=Leek(Dreg(3))
If ADAT=0
Palette 0,$6F,$77,$EEE,$F00,$DD,$AA,$FF3
Else
For C=0 To 7
Colour C,Deek(ADAT+28+C*2)
Next
Colour 1,(Colour(2) and $EEE)/2
End If
End Proc