home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 67 / af067a.adf / SYSTEM.DMS / SYSTEM.adf / Editor_Config.AMOS / Editor_Config.amosSourceCode < prev   
AMOS Source Code  |  1993-03-31  |  17KB  |  604 lines

  1. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  2. '
  3. ' AMOSPro Editor Configuration V 1.1 
  4. '
  5. '----------------------------------------------------------------------
  6. '
  7. ' By Fran�ois Lionet 
  8. '
  9. ' (c) 1992 Europress Software Ltd. 
  10. '
  11. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  12. '
  13. Set Buffer 24
  14. Set Accessory 
  15. Global DB$
  16. Global YDI,YSI,QUIT
  17. Global BNAME$
  18. Global STMX,NST
  19. Global MX,MY,MK,MZ,MS
  20. Global BKPOS,BKCHANGE,ABK,ADAT,BK,TBNK,BKCHUNKS
  21. Global ESX,ESY,D_NAME$
  22. COM$=Command Line$
  23. Command Line$=""
  24. ' Maximum number of strings
  25. STMX=256
  26. Dim ST$(STMX)
  27. Global ST$(),STAD
  28. Dim FLAGS(16)
  29. Global FLAGS()
  30. BK=10
  31. ' Initialisation 
  32. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  33. Resource Bank 16
  34. ' Make sure this program is called from the editor menu! 
  35. COM=0
  36. If Prg Under=1
  37.    If Left$(COM$,4)="EDIT" : COM=Val(Right$(COM$,1)) : End If 
  38. End If 
  39. ESX=640 : ESY=200 : YDI=45 : YSI=ESY : If COM=6 : YSI=104 : End If 
  40. INIT_SCREEN
  41. If COM>=1 and COM<=6
  42.    On COM Proc MN_SETUP,MN_MENUS,MN_DIALOG,MN_TEST,MN_RUN,MN_PALETTE
  43.    MN_QUIT
  44. End If 
  45. MN_BAD
  46. Procedure MN_SETUP
  47.    
  48.    ADAT=Leek(Dreg(3)) : If ADAT=0 : Stop : End If 
  49.    Do 
  50.       
  51.       ' Save baks + Interlaced 
  52.       Vdialog(1,2)=Peek(ADAT+24) and 1
  53.       Vdialog(1,3)=Peek(ADAT+10) and 1
  54.       ' UNDO 
  55.       SETVDIA[16,Leek(ADAT+18),0,10000,1]
  56.       SETVDIA[20,Leek(ADAT+14)/1024,0,256,1]
  57.       ' History
  58.       SETVDIA[24,Deek(ADAT+26),1,128,1]
  59.       M=0
  60.       
  61.       D=Dialog Run(1,1)
  62.       
  63.       Repeat 
  64.          
  65.          Multi Wait 
  66.          D=Dialog(1)
  67.          Exit If D=1,2
  68.          If D
  69.             If D=4
  70.                If Vdialog(1,3)
  71.                   I=2 : Y=288*2
  72.                Else 
  73.                   I=1 : Y=288
  74.                End If 
  75.                MN_SCREEN[Resource$(13),ADAT,640,704,184,Y,2,I]
  76.                Exit 
  77.             End If 
  78.             If D=5 : MN_FILES : Exit : End If 
  79.             Call Editor 182,100,"Null!"
  80.             If Param=0
  81.                Poke ADAT+24,Rdialog(1,2) and 1
  82.                Poke ADAT+10,Rdialog(1,3) and 1
  83.                Loke ADAT+18,Rdialog(1,16)
  84.                Loke ADAT+14,Rdialog(1,20)*1024
  85.                Doke ADAT+26,Rdialog(1,24)
  86.             Else 
  87.                OOMEM
  88.             End If 
  89.          End If 
  90.       Until QUIT
  91.       QUIT=0
  92.       
  93.    Loop 
  94.    
  95.    ' Reduce screen if not interlaced
  96.    SY=Deek(ADAT+2) : I=Peek(ADAT+10)
  97.    If I=0
  98.       If SY>288
  99.          SY=256 : If Ntsc : SY=200 : End If 
  100.          Doke ADAT+2,SY
  101.       End If 
  102.    End If 
  103.    
  104. End Proc
  105. Procedure MN_BAD
  106.    D=Dialog Box(DB$,2,Resource$(31))
  107.    MN_QUIT
  108. End Proc
  109. Procedure SETVDIA[V,A,B,C,D]
  110.    Vdialog(1,V)=A
  111.    Vdialog(1,V+1)=B
  112.    Vdialog(1,V+2)=C
  113.    Vdialog(1,V+3)=D
  114. End Proc
  115. Procedure MN_SCREEN[T$,AD,XMIN,XMAX,YMIN,YMAX,RESX,RESY]
  116.  
  117.    X=Free
  118.    A=Lowres : If RESX=2 : A=Hires : End If 
  119.    If RESY=2 : Add A,Laced : End If 
  120.  
  121.    Trap Screen Open 1,XMAX,YMAX,2,A
  122.    If Errtrap : OOMEM : End If 
  123.  
  124.    Screen Hide 1
  125.    Screen Display 0,,,,14
  126.    Curs Off : Cls 0 : Palette 0,$FF0
  127.    For X=0 To XMAX Step 16 : Draw X,0 To X,YMAX : Next 
  128.    For Y=0 To YMAX Step 16 : Draw 0,Y To XMAX,Y : Next 
  129.    Wind Open 1,0,8,20,4,1 : Curs Off : Scroll Off 
  130.  
  131.    SX=Deek(AD) : SY=Deek(AD+2)
  132.    WX=Deek(AD+4) : WY=Deek(AD+6)
  133.    Screen Display 1,WX,WY,SX/RESX,SY
  134.    Screen To Front 0
  135.  
  136.    Vdialog$(1,0)=T$
  137.    SETVDIA[16,Deek(AD+8),2,312,1]
  138.    D=Dialog Run(1,7)
  139.    Screen Show 1
  140.  
  141.    Repeat 
  142.  
  143.       Multi Wait 
  144.       D=Dialog(1) : Exit If D=1
  145.       If D=2 : M=1 : Clw : Gosub _DISP : End If 
  146.       If D=3 : M=2 : Clw : Gosub _DISP : End If 
  147.       If D=0
  148.          If Mouse Key=1
  149.             Dialog Freeze 
  150.             While Mouse Key
  151.                If M=1
  152.                   WX=X Mouse : WY=Y Mouse
  153.                End If 
  154.                If M=2
  155.                   SX=Max(Min(X Screen(1,X Mouse),XMAX),XMIN)
  156.                   SY=Max(Min(Y Screen(1,Y Mouse),YMAX),YMIN)
  157.                   If RESX=1
  158.                      SX=SX and $FFFFFFF0
  159.                   Else 
  160.                      SX=SX and $FFFFFFE0
  161.                   End If 
  162.                   SY=SY and $FFFFFFF8
  163.                End If 
  164.                Screen Display 1,WX,WY,SX/RESX,SY
  165.                Gosub _DISP
  166.                Wait Vbl 
  167.             Wend 
  168.             Dialog Unfreeze 
  169.          End If 
  170.       End If 
  171.    Until QUIT
  172.  
  173.    ' Send modification to editor
  174.    Call Editor 182,100,"Null!"
  175.    If Param=0
  176.       Doke AD,SX : Doke AD+2,SY
  177.       Doke AD+4,WX : Doke AD+6,WY
  178.       Doke AD+8,Vdialog(1,16)
  179.    Else 
  180.       Bell 
  181.    End If 
  182.  
  183.    Screen Close 1
  184.    Screen Display 0,,,,ESY
  185.    Screen To Front 0
  186.    View : Wait Vbl 
  187.    QUIT=-1
  188.    Pop Proc
  189.  
  190.    _DISP:
  191.    Home 
  192.    If M=1
  193.       Print Resource$(18);WX;"  "
  194.       Print Resource$(19);WY;"  "
  195.    Else 
  196.       Print Resource$(20);SX;"  "
  197.       Print Resource$(21);SY;"  "
  198.    End If 
  199.    Return 
  200. End Proc
  201. Procedure MN_FILES
  202.    MN_STRINGS[1,45,48,Resource$(27),Resource$(29),Resource$(30),0]
  203. End Proc
  204. Procedure MN_MENUS
  205.    MN_STRINGS[2,1,200,Resource$(4),Resource$(16),Resource$(16),1]
  206. End Proc
  207. Procedure MN_DIALOG
  208.    MN_STRINGS[3,1,255,Resource$(5),Resource$(16),Resource$(16),0]
  209. End Proc
  210. Procedure MN_TEST
  211.    MN_STRINGS[4,1,64,Resource$(6),Resource$(16),Resource$(16),0]
  212. End Proc
  213. Procedure MN_RUN
  214.    MN_STRINGS[5,1,164,Resource$(7),Resource$(16),Resource$(16),0]
  215. End Proc
  216. Procedure MN_PALETTE
  217.  
  218.    Dim S(8)
  219.    ADAT=Leek(Dreg(3)) : If ADAT=0 : Stop : End If 
  220.    For C=0 To 7 : S(C)=Deek(ADAT+C*2+28) : Next 
  221.    S(8)=Deek(ADAT+12)
  222.  
  223.    D=Dialog Run(1,8)
  224.    CUR=0
  225.  
  226.    Do 
  227.  
  228.       If CUR=8
  229.          C=Deek(ADAT+12)
  230.       Else 
  231.          C=Deek(ADAT+CUR*2+28)
  232.       End If 
  233.       R=(C and $F00)/$100 : G=(C and $F0)/$10 : B=C and $F
  234.       Dialog Update 1,3,R
  235.       Dialog Update 1,4,G
  236.       Dialog Update 1,5,B
  237.  
  238.       Repeat 
  239.  
  240.          Multi Wait 
  241.          D=Dialog(1)
  242.          Exit If D=1,2
  243.          If D=2
  244.             For CUR=0 To 8
  245.                Exit If Rdialog(1,2,CUR+1)
  246.             Next 
  247.             Exit 
  248.          End If 
  249.          F=0
  250.          If D=3 : R=Rdialog(1,3) : Inc F : End If 
  251.          If D=4 : G=Rdialog(1,4) : Inc F : End If 
  252.          If D=5 : B=Rdialog(1,5) : Inc F : End If 
  253.          If D=6 : C=S(CUR) : Gosub _SET2 : Exit : End If 
  254.          If F : Gosub _SET : End If 
  255.  
  256.  
  257.       Until QUIT
  258.       QUIT=0
  259.  
  260.    Loop 
  261.    Pop Proc
  262.  
  263.    _SET:
  264.    C=R*$100+G*$10+B
  265.    _SET2:
  266.    Call Editor 182,100,"Null!"
  267.    If Param=0
  268.       If CUR<8
  269.          Screen 8 : Colour CUR,C
  270.          Screen 9 : Colour CUR,C
  271.          Screen 0 : If CUR<>1 : Colour CUR,C : End If 
  272.          Doke ADAT+CUR*2+28,C
  273.       Else 
  274.          Colour Back C
  275.          Doke ADAT+12,C
  276.       End If 
  277.    End If 
  278.    View : Wait Vbl : Return 
  279.  
  280. End Proc
  281. Procedure MN_STRINGS[SO,SD,SF,T1$,T2$,T3$,FLAG]
  282.  
  283.    Dim TMP$(SF-SD+1)
  284.    For S=SD To SF : TMP$(N)=Resource$(-1000*SO-S) : Inc N : Next : POS=0
  285.  
  286.    Do 
  287.  
  288.       X=Free
  289.       Vdialog$(1,0)=T1$ : Vdialog$(1,1)=T2$
  290.       Vdialog(1,2)=POS
  291.       Vdialog(1,3)=Array(TMP$(0))
  292.       D=Dialog Run(1,2)
  293.  
  294.       Repeat 
  295.  
  296.          Multi Wait 
  297.          D=Dialog(1)
  298.          POS=Rdialog(1,2)
  299.          Exit If D=1,2
  300.          If D=3
  301.             N=Rdialog(1,3)
  302.             MN_EDIT[T3$,TMP$(N)]
  303.             If FLAG=0
  304.                A$=Param$
  305.             Else 
  306.                L=Len(TMP$(N)) : A$=Param$
  307.                If Len(A$)<L
  308.                   A$=A$+String$(Left$(A$,1),L-Len(A$))
  309.                Else 
  310.                   A$=Left$(A$,L)
  311.                End If 
  312.             End If 
  313.             A$=Space$(4)+A$ : Loke Varptr(A$),SD+N
  314.             Call Editor 182,SO,A$
  315.             If Param
  316.                OOMEM
  317.             Else 
  318.                TMP$(N)=Mid$(A$,5)
  319.             End If 
  320.             QUIT=-1
  321.          End If 
  322.  
  323.       Until QUIT
  324.       QUIT=0
  325.  
  326.    Loop 
  327.  
  328.    N=0 : For S=SD To SF : ST$(S)=TMP$(N) : Inc N : Next 
  329.  
  330. End Proc
  331. Procedure MN_EDIT[T$,S$]
  332.    Vdialog$(1,1)=S$
  333.    Vdialog$(1,2)=T$
  334.    D=Dialog Run(1,3)
  335.    If D=2 : S$=Rdialog$(1,3) : End If 
  336.  
  337. End Proc[S$]
  338. Procedure INIT_SCREEN
  339.  
  340.    Restore DBL
  341.    Repeat 
  342.       Read A$ : DB$=DB$+A$
  343.    Until A$=""
  344.  
  345.    Screen Open 0,ESX,ESY,8,Hires
  346.    Screen Display 0,,YDI,,YSI
  347.    Curs Off : Flash Off : Cls 0
  348.    Wait Vbl 
  349.  
  350.    GRB_EDITOR_PALETTE
  351.  
  352.    Paper 0 : Pen 1
  353.    Limit Mouse 50,0 To 530,312
  354.  
  355.    On Error Goto ERR
  356.    Dialog Open 1,DB$,48
  357.    Pop Proc
  358.  
  359.    ERR: Print Mid$(DB$,Edialog,80) : Wait Key : End 
  360.  
  361.  
  362.    ' Definition of quick-run dialog boxes 
  363.    DBL:
  364.    Data "SIze   1VA TW 160+,64;"
  365.    Data "BAse   SWidth SX -2/,SHeight SY- 2/;"
  366.    Data "SAve   1;"
  367.    Data "RBox   0,0,SX,SY,0;"
  368.    Data "CTxt   16,8,SX 16-,32,1,1VA;"
  369.    Data "IF     0VA 1=;"
  370.    Data "["
  371.    Data "       BJ 1,16,SY 24-,64,16,14ME; KY 27,0;"
  372.    Data "       BJ 2,SX 80-,SY 24-,64,16,15ME; KY 13,0;"
  373.    Data "]"
  374.    Data "IF     0VA 2=;"
  375.    Data "["
  376.    Data "       BJ 1,SX 80-,SY 24-,64,16,14ME; KY $FF,0;"
  377.    Data "]"
  378.    Data "RUn    0,3;"
  379.    Data "EXit;"
  380.  
  381.    ' Definition of Setup screen 
  382.    Data "LA 1;"
  383.    Data "BAse   0,0; SIze SW,SH;"
  384.    Data "BT     1,0,0,48,16,1ME;"
  385.    Data "BI     0,XB,0,SX XB-,16,3ME;"
  386.    Data "RB     0,16,SX,SY,0;"
  387.    Data "BK     2,16,32,SX32-,14,11ME;"
  388.    Data "BK     3,XA,YB4+,XBXA-,YBYA-,12ME;"
  389.    Data "BT     4,XA,YB12+,XBXA-,16,13ME;"
  390.    Data "RC     16,YB12+,416,14,1,8ME; NE 16,XB,YA;"
  391.    Data "RC     16,YB4+,416,YBYA-,1,9ME; NE 20,XB,YA;"
  392.    Data "RC     16,YB4+,416,YBYA-,1,10ME; NE 24,XB,YA;"
  393.    Data "BT     5,16,YB12+,SX32-,16,28ME;"
  394.    Data "EXit;"
  395.  
  396.    ' Definition of string setup 
  397.    Data "LA 2;"
  398.    Data "BAse   0,0; SIze SW,SH;"
  399.    Data "BT     1,0,0,48,16,1ME;"
  400.    Data "BI     0,XB,0,SX XB-,16,0VA;"
  401.    Data "RB     0,16,SX,SY,0;"
  402.    Data "CTxt   32,32,SX32-,64,1,1VA;"
  403.    Data "LS     2,XA2-,YB14+,SX30-,SY14-,%11;"
  404.    Data "EXit;"
  405.  
  406.    ' Definition of the pop-up string edition
  407.    Data "LA 3;"
  408.    Data "BAse   16,64; SIze SW32-,72;SA 1;"
  409.    Data "RBox   0,0,SX,SY,0;"
  410.    Data "RBox   8,4,SX8-,20,1;"
  411.    Data "POut   2VA CX,8,2VA,0,3;"
  412.    Data "RBox   13,30,SX 13-,42,1;"
  413.    Data "BJ     1,16,SY 24-,128,16,14ME; KY 27,0;"
  414.    Data "BJ     2,SX144-,SY 24-,128,16,15ME; KY 13,0;"
  415.    Data "EDit   3,16,32,72,72,1VA,0,3;"
  416.    Data "RU     0,3;"
  417.    Data "EXit;"
  418.  
  419.    ' Screen setup 
  420.    Data "LA 7;"
  421.    Data "BAse   0,0; SIze SW,14;"
  422.    Data "BT     1,0,0,48,14,2ME;"
  423.    Data "BI     0,XB,0,208,14,0VA;"
  424.    Data "BT     2,XB,0,48,14,24ME;"
  425.    Data "BT     3,XB,0,48,14,25ME;"
  426.    Data "RC     XB,0,96,14,1,26ME; NE 16,XB,YA;"
  427.    Data "EXit;"
  428.  
  429.    ' Palette
  430.    Data "LA 8;"
  431.    Data "BAse   0,0; SIze SW,104;"
  432.    Data "BT     1,0,0,48,16,1ME;"
  433.    Data "BI     0,XB,0,SX XB-,16,32ME;"
  434.    Data "RB     0,16,SX,SY,0;"
  435.    Data "QQ     2,16,24,67,14,36ME,1;"
  436.    Data "QQ     2,XB,YA,XBXA-,YBYA-,37ME,0;"
  437.    Data "QQ     2,XB,YA,XBXA-,YBYA-,38ME,0;"
  438.    Data "QQ     2,XB,YA,XBXA-,YBYA-,39ME,0;"
  439.    Data "QQ     2,XB,YA,XBXA-,YBYA-,40ME,0;"
  440.    Data "QQ     2,XB,YA,XBXA-,YBYA-,41ME,0;"
  441.    Data "QQ     2,XB,YA,XBXA-,YBYA-,42ME,0;"
  442.    Data "QQ     2,XB,YA,XBXA-,YBYA-,43ME,0;"
  443.    Data "QQ     2,XB,YA,XBXA-5+,YBYA-,45ME,0;"
  444.    Data "PP     3,16,YB4+,624,YB16+,33ME;"
  445.    Data "PP     4,XA,YB,XB,YB YBYA-+,34ME;"
  446.    Data "PP     5,XA,YB,XB,YB YBYA-+,35ME;"
  447.    Data "BT     6,16,YB4+,SX32-,14,44ME;"
  448.  
  449.    Data "EXit;"
  450.  
  451.    Data "UI     PP,6;["
  452.    Data "RC     P2,P3,P4P2-,P5P3-,0,P6;"
  453.    Data "SV     P1,P2; SV 3P1+,P3;"
  454.    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;]"
  455.    Data "XY     P2,P3,P4,P5;]"
  456.  
  457.    Data "UI     QQ,7; ["
  458.    Data "SZone  P6;"
  459.    Data "BU     P1,P2,P3,P4,P5,P7,0,1;"
  460.    Data "       [RB 0,0,SX,SY,BP;"
  461.    Data "        SW 0; PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
  462.    Data "       [BC ZN,0;]"
  463.    Data "]"
  464.  
  465.    '----------------------------------------
  466.    ' Text in a RBox, on the left
  467.    ' RC x,y,sx,sy,act,txt 
  468.    Data "UI     RC,6;["
  469.    Data "RB     P1,P2,P1P3+,P2P4+,P5;"
  470.    Data "PR     6P1+,P4TH-2/ P2+,P6,3;"
  471.    Data "XY     P1,P2,P1P3+,P2P4+;"
  472.    Data "]"
  473.    '----------------------------------------
  474.    ' One button, with text, ON/OFF <<< variable 
  475.    ' BK zone,x,y,sx,sy,text1  
  476.    Data "UI     BK,6; ["
  477.    Data "RC     P2,P3,P464-,P5,1,P6;"
  478.    Data "BU     P1,P2P4+64-,P3,64,P5,P1VA,0,1;"
  479.    Data "       [RB 0,0,SX,SY,0;"
  480.    Data "        PR 22BP+ME CX,SY TH- 2/,22BP+ME,3;]"
  481.    Data "       [SVar ZN,ZPos;]"
  482.    Data "XY     P2,P3,P2P4+,P3P5+;"
  483.    Data "]"
  484.    ' -------------------------------- 
  485.    ' Number Edit: - / + / Slider / Digit  
  486.    ' NE zone,x,y Uses 4 variables from ZONE     
  487.    Data "UI     NE,3; ["
  488.    Data "SZone  P1;"
  489.    Data "RBox   P2,P3,128P2+,14P3+,0;"
  490.    Data "HSlide P1,XA4+,YA3+,119,8,P1VA 1P1+VA -,1,2P1+VA 1P1+VA -,3P1+VA;"
  491.    Data "       [SVar ZN,ZPos 1ZN+VA +;JS 100;]"
  492.    Data "SVar   2P1+,128P2+; SVar 3P1+,P3; JSub 100;"
  493.    Data "XY     P2,P3,XB,YB;"
  494.    Data "       ]"
  495.    Data "LA100; RB 2ZV+VA,3ZV+VA,2ZV+VA64+,3ZV+VA14+,0;"
  496.    Data "PRint  2ZV+VA6+,3ZV+VA3+,ZVVA #,3;"
  497.    Data "XY     2ZV+VA,3ZV+VA,2ZV+VA64+,3ZV+VA14+; RTs;"
  498.    ' -------------------------------- 
  499.    ' List Slider: draw a list + a slider, linked together 
  500.    ' LS zone,x,y,x,y,flags
  501.    Data "UI     LS,6; ["
  502.    Data "RB     P2,P3,P2 16+,P5,1;"
  503.    Data "RB     XB,YA,P4,P5,1;"
  504.    Data "SZone  P1;"
  505.    Data "VSlide P1,P2 3+,P3 2+,9,P5 P3- 4-,P1VA,7,1P1+VA AS,1;[ZChange ZNum 1+,ZPos;]"
  506.    Data "AList  P1 1+,P2 18+,P3 2+,P4 P2- 18- 8/,P5 P3- 8/,1P1+VA,P1VA,P6,0,3;[]"
  507.    Data "XY     P2,P3,P4,P5;]"
  508.    '----------------------------------------
  509.    ' One button, with vertical text, click only   
  510.    ' BV zone,x,y,sx,sy,text 
  511.    Data "UI     BV,6; ["
  512.    Data "SZone  P6;"
  513.    Data "BU     P1,P2,P3,P4,P5,0,0,1;"
  514.    Data "       [RB 0,0,SX,SY,BP;"
  515.    Data "        VTxt SX 2/ 4- BP+,SY ZVarTLen TH* - 2/ BP+,ZV,1;]"
  516.    Data "       [BR 0;]"
  517.    Data "]"
  518.    '----------------------------------------
  519.    ' One button, with text, click only  
  520.    ' BT zone,x,y,sx,sy,text 
  521.    Data "UI     BT,6; ["
  522.    Data "SZone  P6;"
  523.    Data "BU     P1,P2,P3,P4,P5,0,0,1;"
  524.    Data "       [RB 0,0,SX,SY,BP;"
  525.    Data "        PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
  526.    Data "       [BR 0;]"
  527.    Data "]"
  528.    '----------------------------------------  ' 
  529.    ' One button, with text to move the screen 
  530.    ' BT zone,x,y,sx,sy,text 
  531.    Data "UI     BI,6; ["
  532.    Data "SZone  P6;"
  533.    Data "BU     P1,P2,P3,P4,P5,0,0,1;"
  534.    Data "       [RB 0,0,SX,SY,BP;"
  535.    Data "        PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
  536.    Data "       [SMove;BR 0;]"
  537.    Data "]"
  538.    '----------------------------------------
  539.    ' One button, with text, click only, QUIT!   
  540.    ' BJ zone,x,y,sx,sy,text 
  541.    Data "UI     BJ,6; ["
  542.    Data "SZone  P6;"
  543.    Data "BU     P1,P2,P3,P4,P5,0,0,1;"
  544.    Data "       [RB 0,0,SX,SY,BP;"
  545.    Data "        PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
  546.    Data "       [BR 0;BQuit;]"
  547.    Data "]"
  548.    '----------------------------------------
  549.    ' Text centered in one RB
  550.    ' CT x1,y1,x2,y2,act,text
  551.    Data "UI     CT,6; ["
  552.    Data "RB     P1,P2,P3,P4,P5;"
  553.    Data "PRint  P3 P1- P6TW- 2/ P1+,P4 P2- TH- 2/ P2+,P6,3;"
  554.    Data "XY     P1,P2,P3,P4;]"
  555.    '----------------------------------------
  556.    ' Ronnies Simpson graphic box definition 
  557.    ' RB x1,y1,x2,y2,activated 
  558.    Data "UI     RB,5; [SWrite 1; SPattern 0,0;"
  559.    Data "IF     P5 0=;["
  560.    Data "INk    0,0,0; GSquare P1,P2,P3 1-,P4 1-;"
  561.    Data "INk    6,6,6; GBox P1 1+,P2 1+,P3 2-,P4 2-; "
  562.    Data "INk    5,5,5; GLine P1 2+,P4 2-,P1 2+,P2 1+;"
  563.    Data "              GLine P1 1+,P4 2-,P1 1+,P2 1+;"
  564.    Data "              GLine P1 1+,P2 1+,P3 2-,P2 1+;"
  565.    Data "INk    2,2,2; GLine P1 2+,P4 2-,P3 2-,P4 2-;"
  566.    Data "              GLine P3 3-,P2 2+,P3 3-,P4 2-;"
  567.    Data "              GLine P3 2-,P2 1+,P3 2-,P4 2-;"
  568.    Data "INk    3,3,3; GLine P1 3+,P2 2+,P1 4+,P2 2+;]"
  569.    Data "IF     P5 0\;["
  570.    Data "INk    0,0,0; GSquare P1,P2,P3 1-,P4 1-;"
  571.    Data "INk    2,2,2; GBox P1 1+,P2 1+,P3 2-,P4 2-; "
  572.    Data "INk    1,1,1; GLine P1 2+,P4 2-,P1 2+,P2 1+;"
  573.    Data "              GLine P1 1+,P4 2-,P1 1+,P2 1+;"
  574.    Data "              GLine P1 1+,P2 1+,P3 2-,P2 1+;"
  575.    Data "INk    5,5,5; GLine P1 2+,P4 2-,P3 2-,P4 2-;"
  576.    Data "              GLine P3 3-,P2 2+,P3 3-,P4 2-;"
  577.    Data "              GLine P3 2-,P2 1+,P3 2-,P4 2-;]"
  578.    Data "SWrite 0; XY P1,P2,P3,P4;]"
  579.    Data ""
  580.  
  581. End Proc
  582. Procedure OOMEM
  583.    Trap Dialog Clr 1
  584.    Trap Dialog Close 
  585.    Trap D=Dialog Box(DB$,2,Resource$(46))
  586.    MN_QUIT
  587. End Proc
  588. Procedure MN_QUIT
  589.    Dialog Close 
  590.    Trap Screen Close 0
  591.    Trap Screen Close 1
  592.    Edit 
  593. End Proc
  594. Procedure GRB_EDITOR_PALETTE
  595.    ADAT=Leek(Dreg(3))
  596.    If ADAT=0
  597.       Palette 0,$6F,$77,$EEE,$F00,$DD,$AA,$FF3
  598.    Else 
  599.       For C=0 To 7
  600.          Colour C,Deek(ADAT+28+C*2)
  601.       Next 
  602.       Colour 1,(Colour(2) and $EEE)/2
  603.    End If 
  604. End Proc