home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1993-03-31 | 16.1 KB | 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