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

  1. ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  2. '
  3. ' AMOSPro Interpretor 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 20
  14. ' If called from the editor's menu 
  15. Set Accessory 
  16. ' Will only have effect it the program is runned alone...  
  17. Close Editor 
  18. Global DB$
  19. Global YDI,QUIT
  20. Global BNAME$
  21. Global STMX,NST
  22. Global MX,MY,MK,MZ,MS
  23. Global BKPOS,BKCHANGE,ABK,ADAT,BK,TBNK,BKCHUNKS
  24. Global ESX,ESY,D_NAME$
  25. ' Maximum number of strings
  26. STMX=64
  27. Dim ST$(STMX)
  28. Global ST$(),STAD
  29. Dim FLAGS(16)
  30. Global FLAGS()
  31. ' Default work bank
  32. BK=10
  33. ' Location of the default config 
  34. D_NAME$="S:AMOSPro_Interpreter_Config"
  35. ' Initialisations
  36. Resource Bank 16
  37. INIT_SCREEN
  38. BANK_NEW
  39. ' Call main loop, and exit!
  40. MN_MAIN
  41. Procedure MN_MAIN
  42.  
  43.    Do 
  44.  
  45.       If BNAME$=""
  46.          Vdialog$(1,0)=Resource$(2)+Resource$(53)
  47.       Else 
  48.          If BNAME$=D_NAME$
  49.             Vdialog$(1,0)=Resource$(2)+Resource$(54)
  50.          Else 
  51.             Vdialog$(1,0)=Resource$(2)+Right$(BNAME$,32)
  52.          End If 
  53.       End If 
  54.  
  55.       D=Dialog Run(1,1)
  56.  
  57.       Repeat 
  58.  
  59.          Multi Wait 
  60.          D=Dialog(1)
  61.          On D Proc MN_LEAVE,MN_DLOAD,MN_NLOAD,MN_SAVE,MN_SAVEAS,MN_EXT,MN_SETUP1,MN_SETUP2,MN_FILES
  62.  
  63.       Until QUIT
  64.       QUIT=0
  65.  
  66.    Loop 
  67. End Proc
  68. Procedure MN_LEAVE
  69.    D=2
  70.    If BKCHANGE : D=Dialog Box(DB$,1,Resource$(11)) : End If 
  71.    If D=2
  72.       MN_QUIT
  73.    End If 
  74.    
  75. End Proc
  76. Procedure MN_DLOAD
  77.    MN_LOADIT[D_NAME$]
  78. End Proc
  79. Procedure MN_NLOAD
  80.    MN_LOADIT[""]
  81. End Proc
  82. Procedure MN_LOADIT[F$]
  83.  
  84.    Dialog Freeze 
  85.  
  86.    D=2 : If BKCHANGE : D=Dialog Box(DB$,1,Resource$(11)) : End If 
  87.  
  88.    If D=2
  89.  
  90.       BANK_NEW : QUIT=-1
  91.  
  92.       If F$=""
  93.          F$=Fsel$("**","",Resource$(14))
  94.          If F$="" : Goto _END : End If 
  95.       End If 
  96.  
  97.       BNAME$=""
  98.       On Error Goto _ERR
  99.       Open In 1,F$ : L=Lof(1) : Close 
  100.       Reserve As Work BK,L+8*1024
  101.       Bload F$,Start(BK) : ABK=Start(BK)
  102.  
  103.       If Peek$(ABK,4)="PId1"
  104.  
  105.          STAD=ABK+Leek(ABK+4)+8
  106.          If Peek$(STAD,4)="PIt1"
  107.             ADAT=ABK+8 : BNAME$=F$
  108.  
  109.             ' Strings
  110.             A=STAD+8
  111.             For ST=1 To STMX
  112.                L=Peek(A+1) : Exit If L=$FF
  113.                ST$(ST)=Peek$(A+2,L)
  114.                Add A,L+2
  115.             Next 
  116.  
  117.          End If 
  118.       End If 
  119.  
  120.       If BNAME$="" : D=Dialog Box(DB$,2,Resource$(15)) : End If 
  121.  
  122.    End If 
  123.    Goto _END
  124.  
  125.    _ERR: Resume _DIA
  126.    _DIA: Bell : D=Dialog Box(DB$,2,Resource$(55)) : BNAME$="" : Goto _END
  127.    _END: Dialog Unfreeze 
  128.  
  129. End Proc
  130. Procedure MN_SAVE
  131.  
  132.    MN_SAVEIT[BNAME$]
  133.  
  134. End Proc
  135. Procedure MN_SAVEAS
  136.  
  137.    MN_SAVEIT[""]
  138.  
  139. End Proc
  140. Procedure MN_SAVEIT[F$]
  141.    If BNAME$="" : D=Dialog Box(DB$,2,Resource$(56)) : Pop Proc : End If 
  142.    Dialog Freeze 
  143.    If F$=""
  144.       F$=Fsel$("**","",Resource$(14))
  145.       If F$="" : Goto _END : End If 
  146.    End If 
  147.  
  148.    ' Poke the strings back into the bank
  149.    AP=STAD+8
  150.    For S=1 To STMX
  151.       Poke AP,0
  152.       Poke AP+1,Len(ST$(S))
  153.       Poke$ AP+2,ST$(S)
  154.       Add AP,2+Len(ST$(S))
  155.    Next 
  156.    Poke AP,0 : Poke AP+1,$FF : Add AP,2
  157.    Loke STAD+4,AP-STAD-8
  158.    AP=AP+AP mod 2
  159.  
  160.    ' Save the data zone to disc 
  161.    On Error Goto _ERR
  162.    Bsave F$,ABK To AP
  163.    BKCHANGE=0 : BNAME$=F$
  164.    D=Dialog Box(DB$,2,Resource$(52))
  165.    Goto _END
  166.  
  167.    _ERR: Resume _DIA
  168.    _DIA: D=Dialog Box(DB$,2,Resource$(57)) : BNAME$="" : Goto _END
  169.    _END: Dialog Unfreeze 
  170. End Proc
  171. Procedure MN_EXT
  172.  
  173.    If BNAME$="" : D=Dialog Box(DB$,2,Resource$(56)) : Pop Proc : End If 
  174.    Dim TMP$(26)
  175.    For S=16 To 42
  176.       TMP$(N)=ST$(S) : Inc N
  177.    Next 
  178.    POS=0
  179.    Do 
  180.  
  181.       Vdialog(1,2)=POS
  182.       Vdialog(1,3)=Array(TMP$(0))
  183.       D=Dialog Run(1,2)
  184.  
  185.       Repeat 
  186.  
  187.          Multi Wait 
  188.          D=Dialog(1)
  189.          POS=Rdialog(1,2)
  190.          Exit If D=1,2
  191.          If D=3
  192.             N=Rdialog(1,3)
  193.             MN_EDIT[Resource$(18)+Str$(N+1),TMP$(N)]
  194.             TMP$(N)=Param$
  195.             QUIT=-1 : Inc BKCHANGE
  196.          End If 
  197.  
  198.       Until QUIT
  199.       QUIT=0
  200.  
  201.    Loop 
  202.  
  203.    N=0
  204.    For S=16 To 42
  205.       ST$(S)=TMP$(N) : Inc N
  206.    Next 
  207.  
  208.    QUIT=-1
  209.  
  210. End Proc
  211. Procedure MN_FILES
  212.  
  213.    If BNAME$="" : D=Dialog Box(DB$,2,Resource$(56)) : Pop Proc : End If 
  214.    Dim TMP$(15)
  215.    For S=1 To 15
  216.       TMP$(N)=ST$(S) : Inc N
  217.    Next 
  218.    POS=0
  219.    Do 
  220.  
  221.       Vdialog(1,2)=POS
  222.       Vdialog(1,3)=Array(TMP$(0))
  223.       D=Dialog Run(1,4)
  224.  
  225.       Repeat 
  226.  
  227.          Multi Wait 
  228.          D=Dialog(1)
  229.          POS=Rdialog(1,2)
  230.          Exit If D=1,2
  231.          If D=3
  232.             N=Rdialog(1,3)
  233.          If N=0 : T=23 Else T=24 : End If 
  234.             MN_EDIT[Resource$(T),TMP$(N)]
  235.             TMP$(N)=Param$
  236.             QUIT=-1 : Inc BKCHANGE
  237.          End If 
  238.  
  239.       Until QUIT
  240.       QUIT=0
  241.  
  242.    Loop 
  243.  
  244.    N=0
  245.    For S=1 To 15
  246.       ST$(S)=TMP$(N) : Inc N
  247.    Next 
  248.  
  249.    QUIT=-1
  250.  
  251. End Proc
  252. Procedure MN_EDIT[T$,S$]
  253.    Vdialog$(1,1)=S$
  254.    Vdialog$(1,2)=T$
  255.    D=Dialog Run(1,3)
  256.    If D=2 : S$=Rdialog$(1,3) : End If 
  257.  
  258. End Proc[S$]
  259. Procedure MN_SETUP1
  260.    
  261.    If BNAME$="" : D=Dialog Box(DB$,2,Resource$(56)) : Pop Proc : End If 
  262.    Do 
  263.       
  264.       ' Grab the flags 
  265.       For F=0 To 8
  266.          If Peek(ADAT+34+F)
  267.             Vdialog(1,2+F)=1
  268.          Else 
  269.             Vdialog(1,2+F)=0
  270.          End If 
  271.       Next 
  272.       D=Dialog Run(1,5)
  273.       
  274.       Repeat 
  275.          
  276.          Multi Wait 
  277.          D=Dialog(1)
  278.          Exit If D=1,2
  279.          If D=11 : MN_SCREEN[Resource$(43),ADAT+48,480,704,80,288,2,1] : End If 
  280.          If D=12 : MN_SCREEN[Resource$(44),ADAT+58,320,704,80,288,2,1] : End If 
  281.          If D=13 : MN_DEFAULT : End If 
  282.          
  283.       Until QUIT
  284.       QUIT=0
  285.       
  286.    Loop 
  287.    
  288.    For F=0 To 8
  289.       Poke ADAT+34+F,Vdialog(1,2+F)
  290.    Next 
  291.    
  292.    QUIT=-1 : Inc BKCHANGE
  293.    
  294. End Proc
  295. Procedure MN_SETUP2
  296.    
  297.    If BNAME$="" : D=Dialog Box(DB$,2,Resource$(56)) : Pop Proc : End If 
  298.    Do 
  299.       
  300.       ' Number of bobs 
  301.       SETVDIA[16,Deek(ADAT+8),8,256,1]
  302.       ' Number of sprites
  303.       SETVDIA[20,Leek(ADAT+16),16,312,2]
  304.       ' Copper List
  305.       SETVDIA[24,Leek(ADAT+12)/1024,2,32,1]
  306.       ' Variable name buffer 
  307.       SETVDIA[28,Leek(ADAT+20)/1024,1,32,1]
  308.       ' Default buffer 
  309.       SETVDIA[32,Leek(ADAT+26)/1024,1,2048,1]
  310.       ' Ports  
  311.       Vdialog$(1,2)=ST$(43) : Vdialog$(1,3)=ST$(44)
  312.       ' Amiga-A
  313.       If Leek(ADAT+148)
  314.          A$=Upper$(Chr$(Peek(ADAT+151))) : S=Peek(ADAT+149)
  315.       Else 
  316.          A$="A" : S=$40
  317.       End If 
  318.       Vdialog$(1,4)=A$
  319.       For A=0 To 7
  320.          B=0 : If Btst(A,S) : B=1 : End If 
  321.          Vdialog(1,A+5)=B
  322.       Next 
  323.  
  324.       D=Dialog Run(1,6)
  325.       
  326.       Repeat 
  327.          
  328.          Multi Wait 
  329.          D=Dialog(1)
  330.          Exit If D=1,2
  331.  
  332.       Until QUIT
  333.       QUIT=0
  334.       
  335.    Loop 
  336.    
  337.    ' Number of bobs 
  338.    Doke ADAT+8,Vdialog(1,16)
  339.    ' Number of sprites
  340.    Loke ADAT+16,Vdialog(1,20)
  341.    ' Copper List
  342.    Loke ADAT+12,Vdialog(1,24)*1024
  343.    ' Variable name buffer 
  344.    Loke ADAT+20,Vdialog(1,28)*1024
  345.    ' Default buffer 
  346.    Loke ADAT+26,Vdialog(1,32)*1024
  347.    ' Ports  
  348.    ST$(43)=Rdialog$(1,2) : ST$(44)=Rdialog$(1,3)
  349.    ' Amiga-A
  350.    A$=Upper$(Left$(Rdialog$(1,4),1))
  351.    If A$>="A" and A$<="Z"
  352.       Poke ADAT+151,Asc(A$) : Poke ADAT+150,Asc(Lower$(A$))
  353.       S=0 : For A=0 To 7 : If Rdialog(1,A+5) : Bset A,S : End If : Next 
  354.       Poke ADAT+149,S
  355.    End If 
  356.    
  357.    QUIT=-1 : Inc BKCHANGE
  358.    
  359. End Proc
  360.  
  361. Procedure MN_DEFAULT
  362.    
  363.    Dim S(16),SS(16),C(4)
  364.    For C=0 To 15 : S(C)=Deek(ADAT+C*2+80) : SS(C)=S(C) : Next 
  365.    NPLAN=Deek(ADAT+72)
  366.    C(1)=2 : C(2)=4 : C(3)=8 : C(4)=16 : CUR=0
  367.    HIR=1 : If Deek(ADAT+76) and $8000 : Inc HIR : End If 
  368.    LAC=1 : If Deek(ADAT+76) and $4 : Inc LAC : End If 
  369.    Reserve As Work 100,16 : SCR=Start(100)
  370.    Loke SCR,Leek(ADAT+68)
  371.    X=Deek(ADAT+144) : If X=0 : X=128 : End If 
  372.    Y=Deek(ADAT+146) : If Y=0 : Y=50 : End If 
  373.    Doke SCR+4,X : Doke SCR+6,Y : Doke SCR+8,0
  374.  
  375.    Do 
  376.       
  377.       SETVDIA[16,NPLAN,1,5,1]
  378.       Vdialog(1,3)=HIR-1
  379.       Vdialog(1,4)=LAC-1
  380.       
  381.       D=Dialog Run(1,8)
  382.       
  383.       Do 
  384.          
  385.          NCOL=C(NPLAN)
  386.          If CUR>NCOL : CUR=NCOL : End If 
  387.          C=S(CUR) : R=(C and $F00)/$100 : G=(C and $F0)/$10 : B=C and $F
  388.          Dialog Update 1,6,CUR,1,NCOL
  389.          Dialog Update 1,7,R
  390.          Dialog Update 1,8,G
  391.          Dialog Update 1,9,B
  392.          
  393.          Repeat 
  394.             
  395.             Multi Wait 
  396.             D=Dialog(1)
  397.             
  398.             Exit If D=1,3
  399.             
  400.             If D=3 : HIR=Vdialog(1,3)+1 : End If 
  401.             If D=4 : LAC=Vdialog(1,4)+1 : End If 
  402.             If D=7 : R=Rdialog(1,7) : Inc F : End If 
  403.             If D=8 : G=Rdialog(1,8) : Inc F : End If 
  404.             If D=9 : B=Rdialog(1,9) : Inc F : End If 
  405.             If D=10 : C=SS(CUR) : S(CUR)=C : Exit : End If 
  406.             If F : Gosub _SET : End If 
  407.             If D=6 : Gosub _SET : CUR=Rdialog(1,6) : Exit : End If 
  408.             If D=16 : NPLAN=Vdialog(1,16) : Exit : End If 
  409.             If D=5
  410.                If HIR=1 : If Deek(SCR)>384 : Doke SCR,Deek(SCR)/2 : End If : End If 
  411.                If LAC=1 : If Deek(SCR+2)>288 : Doke SCR+2,Deek(SCR+2)/2 : End If : End If 
  412.                MN_SCREEN[Resource$(67),SCR,240,384*HIR,32,288*LAC,HIR,LAC]
  413.                Exit 2
  414.             End If 
  415.             
  416.          Until QUIT
  417.          QUIT=0
  418.          
  419.       Loop 
  420.       
  421.    Loop 
  422.  
  423.    For C=0 To 15 : Doke ADAT+C*2+80,S(C) : Next : Doke ADAT+78,S(0)
  424.    Doke ADAT+72,NPLAN : Doke ADAT+74,NCOL
  425.    R=0
  426.    If HIR=2 : R=$8000 : End If 
  427.    If LAC=2 : R=R or $4 : End If 
  428.    Loke ADAT+68,Leek(SCR)
  429.    Doke ADAT+144,Deek(SCR+4)
  430.    Doke ADAT+146,Deek(SCR+6)
  431.    Doke ADAT+76,R
  432.    Inc BKCHANGE
  433.  
  434.    Erase 100 : QUIT=True : Pop Proc
  435.    
  436.    _SET: C=R*$100+G*$10+B : S(CUR)=C : Return 
  437.    
  438. End Proc
  439. Procedure MN_SCREEN[T$,AD,XMIN,XMAX,YMIN,YMAX,RESX,RESY]
  440.  
  441.    X=Free
  442.    A=Lowres : If RESX=2 : A=Hires : End If 
  443.    If RESY=2 : Add A,Laced : End If 
  444.    Screen Open 1,XMAX,YMAX,2,A : Screen Hide 1
  445.    
  446.    Screen Display 0,,,,14
  447.    Curs Off : Cls 0 : Palette 0,$FF0
  448.    For X=0 To XMAX Step 16 : Draw X,0 To X,YMAX : Next 
  449.    For Y=0 To YMAX Step 16 : Draw 0,Y To XMAX,Y : Next 
  450.    Wind Open 1,0,8,20,4,1 : Curs Off : Scroll Off 
  451.    SX=Deek(AD) : SY=Deek(AD+2)
  452.    WX=Deek(AD+4) : WY=Deek(AD+6)
  453.    Screen Display 1,WX,WY,SX/RESX,SY
  454.    Screen To Front 0
  455.    
  456.    Vdialog$(1,0)=T$
  457.    SETVDIA[16,Deek(AD+8),2,312,1]
  458.    D=Dialog Run(1,7)
  459.    Screen Show 1
  460.    Repeat 
  461.       
  462.       Multi Wait 
  463.       D=Dialog(1) : Exit If D=1
  464.       If D=2 : M=1 : Clw : Gosub _DISP : End If 
  465.       If D=3 : M=2 : Clw : Gosub _DISP : End If 
  466.       If D=0
  467.          If Mouse Key=1
  468.             Dialog Freeze 
  469.             While Mouse Key
  470.                If M=1
  471.                   WX=X Mouse : WY=Y Mouse
  472.                End If 
  473.                If M=2
  474.                   SX=Max(Min(X Screen(1,X Mouse),XMAX),XMIN)
  475.                   SY=Max(Min(Y Screen(1,Y Mouse),YMAX),YMIN)
  476.                   If RESX=1
  477.                      SX=SX and $FFFFFFF0
  478.                   Else 
  479.                      SX=SX and $FFFFFFE0
  480.                   End If 
  481.                   SY=SY and $FFFFFFF8
  482.                End If 
  483.                Screen Display 1,WX,WY,SX/RESX,SY
  484.                Gosub _DISP
  485.                Wait Vbl 
  486.             Wend 
  487.             Dialog Unfreeze 
  488.          End If 
  489.       End If 
  490.    Until QUIT
  491.    Screen Close 1
  492.    Screen Display 0,,50,,ESY
  493.    Doke AD,SX : Doke AD+2,SY
  494.    Doke AD+4,WX : Doke AD+6,WY
  495.    Doke AD+8,Vdialog(1,16)
  496.    QUIT=-1
  497.    Pop Proc
  498.    
  499.    _DISP:
  500.    Home 
  501.    If M=1
  502.       Print Resource$(48);WX;"  "
  503.       Print Resource$(49);WY;"  "
  504.    Else 
  505.       Print Resource$(50);SX;"  "
  506.       Print Resource$(51);SY;"  "
  507.    End If 
  508.    Return 
  509. End Proc
  510. Procedure BANK_NEW
  511.  
  512.    ' Erase the current config from memory 
  513.    BNAME$=""
  514.    For S=0 To STMX : ST$(S)="" : Next 
  515.    BKCHANGE=0
  516. End Proc
  517. Procedure SETVDIA[V,A,B,C,D]
  518.    Vdialog(1,V)=A
  519.    Vdialog(1,V+1)=B
  520.    Vdialog(1,V+2)=C
  521.    Vdialog(1,V+3)=D
  522. End Proc
  523. Procedure INIT_SCREEN
  524.    
  525.    Restore DBL
  526.    Repeat 
  527.       Read A$ : DB$=DB$+A$
  528.    Until A$=""
  529.    
  530.    ESX=640 : ESY=200 : YDI=45
  531.    Trap Screen Open 0,ESX,ESY,8,Hires
  532.    If Errtrap : OOMEM : End If 
  533.    Screen Display 0,,YDI,,
  534.    Curs Off : Flash Off : Cls 0
  535.    
  536.    GRB_EDITOR_PALETTE
  537.    Paper 0 : Pen 1
  538.    Limit Mouse 96,35 To 530,312
  539.    
  540.    On Error Goto ERR
  541.    Trap Dialog Open 1,DB$,48,1024*4
  542.    If Errtrap : OOMEM : End If 
  543.    Pop Proc
  544.    
  545.    ERR: Print Mid$(DB$,Edialog,80) : Wait Key : End 
  546.    ' Definition of quick-run dialog boxes 
  547.    DBL:
  548.    Data "SIze   1VA TW 160+,64;"
  549.    Data "BAse   SWidth SX -2/,SHeight SY- 2/;"
  550.    Data "SAve   1;"
  551.    Data "RBox   0,0,SX,SY,0;"
  552.    Data "CTxt   16,8,SX 16-,32,1,1VA;"
  553.    Data "IF     0VA 1=;"
  554.    Data "["
  555.    Data "       BJ 1,16,SY 24-,64,16,12ME; KY 27,0;"
  556.    Data "       BJ 2,SX 80-,SY 24-,64,16,13ME; KY 13,0;"
  557.    Data "]"
  558.    Data "IF     0VA 2=;"
  559.    Data "["
  560.    Data "       BJ 1,SX 80-,SY 24-,64,16,13ME; KY $FF,0;"
  561.    Data "]"
  562.    Data "RUn    0,3;"
  563.    Data "EXit;"
  564.  
  565.    ' Definition of the first menu page
  566.    Data "LA 1;"
  567.    Data "BAse   0,0; SIze SW,SH;"
  568.    Data "BT     1,0,0,48,16,1ME;"
  569.    Data "BI     0,XB,0,SX XB-,16,0VA;"
  570.    Data "RB     0,16,SX,SY,0;"
  571.    Data "BT     2,32,28,SX64-,16,3ME;"
  572.    Data "BT     3,XA,YB,XB XA-,YB YA-,4ME;"
  573.    Data "BT     4,XA,YB,XB XA-2/,YB YA-,5ME;"
  574.    Data "BT     5,XB,YA,XB XA-,YB YA-,6ME;"
  575.    Data "BT     6,32,YB 16+,SX64-,24,8ME;"
  576.    Data "BT     7,XA,YB,XB XA-,YB YA-,7ME;"
  577.    Data "BT     8,XA,YB,XB XA-,YB YA-,9ME;"
  578.    Data "BT     9,XA,YB,XB XA-,YB YA-,10ME;"
  579.    Data "EXit;"
  580.    
  581.    ' Definition of Extension screen 
  582.    Data "LA 2;"
  583.    Data "BAse   0,0; SIze SW,SH;"
  584.    Data "BT     1,0,0,48,16,20ME;"
  585.    Data "BI     0,XB,0,SX XB-,16,16ME;"
  586.    Data "RB     0,16,SX,SY,0;"
  587.    Data "CTxt   32,32,SX32-,64,1,17ME;"
  588.    Data "LS     2,XA2-,YB14+,SX30-,SY14-,%11;"
  589.    Data "EXit;"
  590.    
  591.    ' Definition of the pop-up string edition
  592.    Data "LA 3;"
  593.    Data "BAse   16,64; SIze SW32-,72;SA 1;"
  594.    Data "RBox   0,0,SX,SY,0;"
  595.    Data "RBox   8,4,SX8-,20,1;"
  596.    Data "POut   2VA CX,8,2VA,0,3;"
  597.    Data "RBox   13,30,SX 13-,42,1;"
  598.    Data "BJ     1,16,SY 24-,128,16,12ME; KY 27,0;"
  599.    Data "BJ     2,SX144-,SY 24-,128,16,13ME; KY 13,0;"
  600.    Data "EDit   3,16,32,72,72,1VA,0,3;"
  601.    Data "RU     0,3;"
  602.    Data "EXit;"
  603.    
  604.    ' Definition of system files 
  605.    Data "LA 4;"
  606.    Data "BAse   0,0; SIze SW,SH;"
  607.    Data "BT     1,0,0,48,16,20ME;"
  608.    Data "BI     0,XB,0,SX XB-,16,21ME;"
  609.    Data "RB     0,16,SX,SY,0;"
  610.    Data "CTxt   32,32,SX32-,64,1,22ME;"
  611.    Data "LS     2,XA2-,YB14+,SX30-,SY14-,%11;"
  612.    Data "EXit;"
  613.    
  614.    ' Definition of system setup, page 1 
  615.    Data "LA 5;"
  616.    Data "BAse   0,0; SIze SW,SH;"
  617.    Data "BT     1,0,0,48,16,20ME;"
  618.    Data "BI     0,XB,0,SX XB-,16,27ME;"
  619.    Data "RB     0,16,SX,SY,0;"
  620.    Data "BK     2,16,24,SX32-,14,35ME;"
  621.    Data "BK     3,XA,YB,XBXA-,YBYA-,36ME;"
  622.    Data "BK     4,XA,YB,XBXA-,YBYA-,37ME;"
  623.    Data "BK     5,XA,YB,XBXA-,YBYA-,38ME;"
  624.    Data "BK     6,XA,YB,XBXA-,YBYA-,39ME;"
  625.    Data "BK     7,XA,YB,XBXA-,YBYA-,40ME;"
  626.    Data "BK     8,XA,YB,XBXA-,YBYA-,58ME;"
  627.    Data "BK     9,XA,YB,XBXA-,YBYA-,59ME;"
  628.    Data "BK     10,XA,YB,XBXA-,YBYA-,60ME;"
  629.    Data "BT     13,XA,YB8+,XBXA-,16,62ME;"
  630.    Data "BT     11,XA,YB,XBXA-2/,16,33ME;"
  631.    Data "BT     12,XB,YA,XBXA-,YBYA-,34ME;"
  632.    Data "EXit;"
  633.    
  634.    ' Definition of system setup, page 2 
  635.    Data "LA 6;"
  636.    Data "BAse   0,0; SIze SW,SH;"
  637.    Data "BT     1,0,0,48,16,20ME;"
  638.    Data "BI     0,XB,0,SX XB-,16,27ME;"
  639.    Data "RB     0,16,SX,SY,0;"
  640.    Data "RC     16,24,416,14,1,28ME; NE 16,XB,YA;"
  641.    Data "RC     16,YB,416,YBYA-,1,30ME; NE 20,XB,YA;"
  642.    Data "RC     16,YB,416,YBYA-,1,29ME; NE 24,XB,YA;"
  643.    Data "RC     16,YB,416,YBYA-,1,31ME; NE 28,XB,YA;"
  644.    Data "RC     16,YB,416,YBYA-,1,32ME; NE 32,XB,YA;"
  645.  
  646.    Data "RC     16,YB8+,416,14,1,41ME;"
  647.    Data "RB     XB,YA,SX16-,YB,0; EDit 2,XA16+,YA3+,20,20,2VA,0,3;"
  648.    Data "RC     16,YB2+,416,14,1,42ME;"
  649.    Data "RB     XB,YA,SX16-,YB,0; EDit 3,XA16+,YA3+,20,20,3VA,0,3;"
  650.  
  651.    Data "PO     74MECX,YB24+,74ME,0,3;"
  652.    Data "RC     16,YB4+,416,14,1,83ME;"
  653.    Data "RB     XB,YA,SX16-,YB,0; EDit 4,XA16+,YA3+,20,20,4VA,0,3;"
  654.    Data "BM     5,16,YB3+,76,14,75ME;"
  655.    Data "BM     6,XB,YA,XBXA-,14,76ME;"
  656.    Data "BM     7,XB,YA,XBXA-,14,77ME;"
  657.    Data "BM     8,XB,YA,XBXA-,14,78ME;"
  658.    Data "BM     9,XB,YA,XBXA-,14,79ME;"
  659.    Data "BM     10,XB,YA,XBXA-,14,80ME;"
  660.    Data "BM     11,XB,YA,XBXA-,14,81ME;"
  661.    Data "BM     12,XB,YA,XBXA-,14,82ME;"
  662.  
  663.    Data "EXit;"
  664.    
  665.    ' Definition of screen setup 
  666.    Data "LA 7;"
  667.    Data "BAse   0,0; SIze SW,14;"
  668.    Data "BT     1,0,0,48,14,20ME;"
  669.    Data "BI     0,XB,0,208,14,0VA;"
  670.    Data "BT     2,XB,0,48,14,45ME;"
  671.    Data "BT     3,XB,0,48,14,46ME;"
  672.    Data "IF     16VA0\;[RC XB,0,96,14,1,47ME; NE 16,XB,YA;]"
  673.    Data "IF     16VA0=;[BI 0,XB,0,SWXB-,14,0VA;]"
  674.    Data "EXit;"
  675.    
  676.    ' Default screen setup 
  677.    Data "LA 8;"
  678.    Data "BAse   0,0; SIze SW,SH;"
  679.    Data "BT     1,0,0,48,16,20ME;"
  680.    Data "BI     0,XB,0,SX XB-,16,67ME;"
  681.    Data "RB     0,16,SX,SY,0;"
  682.    Data "RC     16,24,416,14,1,68ME; NE 16,XB,YA;"
  683.    Data "BK     3,16,YB4+,SX32-,14,69ME;"
  684.    Data "BK     4,XA,YB4+,XBXA-,YBYA-,70ME;"
  685.    Data "BT     5,16,YB8+,SX32-,16,71ME;"
  686.    Data "PO     72MECX,YB16+,72ME,0,3;"
  687.    Data "PP     6,16,YB4+,624,YB16+,63ME,8;"
  688.    Data "PP     7,XA,YB4+,XB,YB16+,64ME,16;"
  689.    Data "PP     8,XA,YB,XB,YB YBYA-+,65ME,16;"
  690.    Data "PP     9,XA,YB,XB,YB YBYA-+,66ME,16;"
  691.    Data "BT     10,XA,YB,SX32-,12,73ME;"
  692.    Data "EXit;"
  693.  
  694.    Data "UI     PP,7;["
  695.    Data "RC     P2,P3,P4P2-,P5P3-,0,P6;"
  696.    Data "SV     P1,P2; SV 4P1+,P3;"
  697.    Data "HS     P1,P2 96+,P3 3+,P4P2-104-,P5P3-6-,0,1,P7,1;[SW 1; IN 6,6,6; PR ZNVA 72+,ZN4+VA 2+,ZP#' '!,3;]"
  698.    Data "XY     P2,P3,P4,P5;]"
  699.    
  700.    Data "UI     QQ,7; ["
  701.    Data "SZone  P6;"
  702.    Data "BU     P1,P2,P3,P4,P5,P7,0,1;"
  703.    Data "       [RB 0,0,SX,SY,BP;"
  704.    Data "        SW 0; PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
  705.    Data "       [BC ZN,0;]"
  706.    Data "]"
  707.    
  708.    
  709.    
  710.    
  711.    '----------------------------------------
  712.    ' Text in a RBox, on the left
  713.    ' RC x,y,sx,sy,act,txt 
  714.    Data "UI     RC,6;["
  715.    Data "RB     P1,P2,P1P3+,P2P4+,P5;"
  716.    Data "PR     6P1+,P4TH-2/ P2+,P6,3;"
  717.    Data "XY     P1,P2,P1P3+,P2P4+;"
  718.    Data "]"
  719.    '----------------------------------------
  720.    ' One button, with text, ON/OFF <<< variable 
  721.    ' BK zone,x,y,sx,sy,text1  
  722.    Data "UI     BK,6; ["
  723.    Data "RC     P2,P3,P464-,P5,1,P6;"
  724.    Data "BU     P1,P2P4+64-,P3,64,P5,P1VA,0,1;"
  725.    Data "       [RB 0,0,SX,SY,0;"
  726.    Data "        PR 25BP+ME CX,SY TH- 2/,25BP+ME,3;]"
  727.    Data "       [SVar ZN,ZPos;]"
  728.    Data "XY     P2,P3,P2P4+,P3P5+;"
  729.    Data "]"
  730.    '----------------------------------------
  731.    ' One button, with text, On/OFF
  732.    ' BT zone,x,y,sx,sy,text 
  733.    Data "UI     BM,6; ["
  734.    Data "SZone  P6;"
  735.    Data "BU     P1,P2,P3,P4,P5,P1VA,0,1;"
  736.    Data "       [RB 0,0,SX,SY,BP;"
  737.    Data "        PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
  738.    Data "       []"
  739.    Data "]"
  740.    ' -------------------------------- 
  741.    ' Number Edit: - / + / Slider / Digit  
  742.    ' NE zone,x,y Uses 4 variables from ZONE     
  743.    Data "UI     NE,3; ["
  744.    Data "SZone  P1;"
  745.    Data "RBox   P2,P3,128P2+,14P3+,0;"
  746.    Data "HSlide P1,XA4+,YA3+,119,8,P1VA 1P1+VA -,1,2P1+VA 1P1+VA -,3P1+VA;"
  747.    Data "       [SVar ZN,ZPos 1ZN+VA +;JS 100;]"
  748.    Data "SVar   2P1+,128P2+; SVar 3P1+,P3; JSub 100;"
  749.    Data "XY     P2,P3,XB,YB;"
  750.    Data "       ]"
  751.    Data "LA100; RB 2ZV+VA,3ZV+VA,2ZV+VA64+,3ZV+VA14+,0;"
  752.    Data "PRint  2ZV+VA6+,3ZV+VA3+,ZVVA #,3;"
  753.    Data "XY     2ZV+VA,3ZV+VA,2ZV+VA64+,3ZV+VA14+; RTs;"
  754.    ' -------------------------------- 
  755.    ' List Slider: draw a list + a slider, linked together 
  756.    ' LS zone,x,y,x,y,flags
  757.    Data "UI     LS,6; ["
  758.    Data "RB     P2,P3,P2 16+,P5,1;"
  759.    Data "RB     XB,YA,P4,P5,1;"
  760.    Data "SZone  P1;"
  761.    Data "VSlide P1,P2 3+,P3 2+,9,P5 P3- 4-,P1VA,7,1P1+VA AS,1;[ZChange ZNum 1+,ZPos;]"
  762.    Data "AList  P1 1+,P2 18+,P3 2+,P4 P2- 18- 8/,P5 P3- 8/,1P1+VA,P1VA,P6,0,3;[]"
  763.    Data "XY     P2,P3,P4,P5;]"
  764.    '----------------------------------------
  765.    ' One button, with vertical text, click only   
  766.    ' BV zone,x,y,sx,sy,text 
  767.    Data "UI     BV,6; ["
  768.    Data "SZone  P6;"
  769.    Data "BU     P1,P2,P3,P4,P5,0,0,1;"
  770.    Data "       [RB 0,0,SX,SY,BP;"
  771.    Data "        VTxt SX 2/ 4- BP+,SY ZVarTLen TH* - 2/ BP+,ZV,1;]"
  772.    Data "       [BR 0;]"
  773.    Data "]"
  774.    '----------------------------------------
  775.    ' One button, with text, click only  
  776.    ' BT zone,x,y,sx,sy,text 
  777.    Data "UI     BT,6; ["
  778.    Data "SZone  P6;"
  779.    Data "BU     P1,P2,P3,P4,P5,0,0,1;"
  780.    Data "       [RB 0,0,SX,SY,BP;"
  781.    Data "        PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
  782.    Data "       [BR 0;]"
  783.    Data "]"
  784.    '----------------------------------------  ' 
  785.    ' One button, with text to move the screen 
  786.    ' BT zone,x,y,sx,sy,text 
  787.    Data "UI     BI,6; ["
  788.    Data "SZone  P6;"
  789.    Data "BU     P1,P2,P3,P4,P5,0,0,1;"
  790.    Data "       [RB 0,0,SX,SY,BP;"
  791.    Data "        PR ZV CX BP+,SY TH- 2/ BP+,ZV,3;]"
  792.    Data "       [SMove;BR 0;]"
  793.    Data "]"
  794.    '----------------------------------------
  795.    ' One button, with text, click only, QUIT!   
  796.    ' BJ zone,x,y,sx,sy,text 
  797.    Data "UI     BJ,6; ["
  798.    Data "SZone  P6;"
  799.    Data "BU     P1,P2,P3,P4,P5,0,0,1;"
  800.    Data "       [RB 0,0,SX,SY,BP;"
  801.    Data "        PO ZV CX BP+,SY TH- 2/ BP+,ZV,0,3;]"
  802.    Data "       [BR 0;BQuit;]"
  803.    Data "]"
  804.    '----------------------------------------
  805.    ' Text centered in one RB
  806.    ' CT x1,y1,x2,y2,act,text
  807.    Data "UI     CT,6; ["
  808.    Data "RB     P1,P2,P3,P4,P5;"
  809.    Data "PRint  P3 P1- P6TW- 2/ P1+,P4 P2- TH- 2/ P2+,P6,3;"
  810.    Data "XY     P1,P2,P3,P4;]"
  811.    '----------------------------------------
  812.    ' Ronnies Simpson graphic box definition 
  813.    ' RB x1,y1,x2,y2,activated 
  814.    Data "UI     RB,5; [SWrite 1; SPattern 0,0;"
  815.    Data "IF     P5 0=;["
  816.    Data "INk    0,0,0; GSquare P1,P2,P3 1-,P4 1-;"
  817.    Data "INk    6,6,6; GBox P1 1+,P2 1+,P3 2-,P4 2-; "
  818.    Data "INk    5,5,5; GLine P1 2+,P4 2-,P1 2+,P2 1+;"
  819.    Data "              GLine P1 1+,P4 2-,P1 1+,P2 1+;"
  820.    Data "              GLine P1 1+,P2 1+,P3 2-,P2 1+;"
  821.    Data "INk    2,2,2; GLine P1 2+,P4 2-,P3 2-,P4 2-;"
  822.    Data "              GLine P3 3-,P2 2+,P3 3-,P4 2-;"
  823.    Data "              GLine P3 2-,P2 1+,P3 2-,P4 2-;"
  824.    Data "INk    3,3,3; GLine P1 3+,P2 2+,P1 4+,P2 2+;]"
  825.    Data "IF     P5 0\;["
  826.    Data "INk    0,0,0; GSquare P1,P2,P3 1-,P4 1-;"
  827.    Data "INk    2,2,2; GBox P1 1+,P2 1+,P3 2-,P4 2-; "
  828.    Data "INk    1,1,1; GLine P1 2+,P4 2-,P1 2+,P2 1+;"
  829.    Data "              GLine P1 1+,P4 2-,P1 1+,P2 1+;"
  830.    Data "              GLine P1 1+,P2 1+,P3 2-,P2 1+;"
  831.    Data "INk    5,5,5; GLine P1 2+,P4 2-,P3 2-,P4 2-;"
  832.    Data "              GLine P3 3-,P2 2+,P3 3-,P4 2-;"
  833.    Data "              GLine P3 2-,P2 1+,P3 2-,P4 2-;]"
  834.    Data "SWrite 0; XY P1,P2,P3,P4;]"
  835.    Data ""
  836. End Proc
  837. Procedure GRB_EDITOR_PALETTE
  838.    ADAT=Leek(Dreg(3))
  839.    If ADAT=0
  840.       Palette 0,$6F,$77,$EEE,$F00,$DD,$AA,$FF3
  841.    Else 
  842.       For C=0 To 7
  843.          Colour C,Deek(ADAT+28+C*2)
  844.       Next 
  845.       Colour 1,(Colour(2) and $EEE)/2
  846.    End If 
  847. End Proc
  848. Procedure OOMEM
  849.    Trap Dialog Clr 1
  850.    Trap Dialog Close 
  851.    Trap D=Dialog Box(DB$,2,Resource$(61))
  852.    MN_QUIT
  853. End Proc
  854. Procedure MN_QUIT
  855.    Dialog Close 
  856.    Trap Screen Close 0
  857.    Trap Screen Close 1
  858.    Edit 
  859. End Proc