home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / general / art_proggy.amos / art_proggy.amosSourceCode next >
Encoding:
AMOS Source Code  |  1993-01-07  |  38.2 KB  |  1,933 lines

  1. '
  2. ' ** THIS ART PROGRAM WORKS, EXCEPT FOR THE UNDO FEATURE, AND A LOT OF 
  3. ' ** BUGS THAT HAVE NOT BEEN SORTED YET. 
  4. '
  5. ' ** TO VIEW A PICTURE THAT HAS BEEN LOADED, SELECT A DRAW-TOOL, TO GET
  6. ' ** THE BUTTON SCREEN BACK UP, PRESS <SPACE-BAR>. 
  7. '
  8. Global XX,YY,OK,AN,P$,CLRS,REZ,NT,WD,HT,TIM,MK,FC,BC,T$,TEK,OUT,SHA,SF,FP,LP
  9. Dim LLI(5)
  10. Global RR,GG,BB,LLI(),R$,G$,B$,SCI,SPO,ICO,WDH,DENS,REZ$
  11. T$="Written By John.A.Kinsella"
  12. Get Rom Fonts 
  13. LLI(0)=%1111111111111111
  14. LLI(1)=%1100110011001100
  15. LLI(2)=%1010101010101010
  16. LLI(3)=%1111011011110110
  17. LLI(4)=%1100110011001100
  18. LLI(5)=%1111111100000000
  19. WDH=20
  20. DENS=20
  21. SPO=0
  22. ICO=0
  23. FP=0
  24. LP=0
  25. SF=1
  26. OUT=0
  27. SHA=0
  28. FC=1
  29. BC=0
  30. CLRS=32
  31. REZ=Lowres
  32. REZ$="Low"
  33. NT=0
  34. WD=320
  35. HT=200
  36. TIM=1
  37. Screen Open 1,WD,(HT+NT)*TIM,CLRS,REZ
  38. Curs Off 
  39. Flash Off 
  40. Cls 0
  41. Unpack 10 To 0
  42. M[2]
  43. SHOC
  44. Screen Open 3,640,11,4,Hires
  45. Curs Off 
  46. Flash Off 
  47. Get Palette 0
  48. Screen Display 3,,160,,
  49. TC[""]
  50. SC[1]
  51. RGB[FC]
  52. SLID[1,RR]
  53. SLID[2,GG]
  54. SLID[3,BB]
  55. SC[0]
  56. GST
  57. ST
  58. SPAT[0]
  59. Ink 6,7
  60. Bar 312,6 To 327,21
  61. SLIN[0]
  62. Draw 313,26 To 326,39
  63. SEL[CLRS]
  64. SC[0]
  65. PSI[0]
  66. PSI[1]
  67. Procedure G[N]
  68.    Gr Writing N
  69. End Proc
  70. Procedure RER
  71.    SC[0]
  72.    SF[0]
  73.    SF[3]
  74.    SF[4]
  75.    G[1]
  76. End Proc
  77. Procedure SEL[N]
  78.    Screen Open 4,320,10,N,Lowres
  79.    Curs Off 
  80.    Flash Off 
  81.    Screen Display 4,,171,,
  82.    Get Palette 1
  83.    QWE=0
  84.    HH=10
  85.    If N>31
  86.       HH=4
  87.       N=31
  88.       OK3=1
  89.    End If 
  90.    For X1=0 To 320 Step 320/N
  91.       Ink QWE
  92.       Bar X1,0 To X1+(320/N),HH
  93.       Inc QWE
  94.    Next 
  95.    If OK3=1
  96.       QWE=32
  97.       For X1=0 To 320 Step 320/N
  98.          Ink QWE
  99.          Bar X1,5 To X1+(320/N),10
  100.          Inc QWE
  101.       Next 
  102.    End If 
  103. End Proc
  104. Procedure GST
  105.    R$=Hex$(RR)
  106.    G$=Mid$(Hex$(GG),2,1)
  107.    B$=Mid$(Hex$(BB),2,1)
  108. End Proc
  109. Procedure TC[N$]
  110.    SC[3]
  111.    Ink 3,2
  112.    Cls 2
  113.    B[0,0,639,10,N$,1]
  114.    SC[0]
  115. End Proc
  116. Procedure SHOC
  117.    SC[1]
  118.    N1=Colour(FC)
  119.    N2=Colour(BC)
  120.    SC[0]
  121.    Colour 6,N1
  122.    Colour 7,N2
  123. End Proc
  124. Procedure FLIP[Z]
  125.    SC[1]
  126.    W=Screen Width
  127.    H=Screen Height/2
  128.    Get Block 1,0,0,W-1,H-1
  129.    Get Block 2,0,H,W-1,H
  130.    If Z=0
  131.       Hrev Block 1
  132.       Hrev Block 2
  133.       Put Block 1,0,0
  134.       Put Block 2,0,H
  135.    End If 
  136.    If Z=1
  137.       Vrev Block 1
  138.       Vrev Block 2
  139.       Put Block 2,0,0
  140.       Put Block 1,0,H+1
  141.    End If 
  142.    Del Block 1
  143.    Del Block 2
  144.    SC[0]
  145. End Proc
  146. Procedure RGB[N]
  147.    RR=Colour(N)/256
  148.    GG=Colour(N)/16 mod 16
  149.    BB=Colour(N) mod 16
  150. End Proc
  151. Procedure SPAT[N]
  152.    Set Pattern N
  153. End Proc
  154. Procedure SLIN[N]
  155.    Set Line LLI(N)
  156. End Proc
  157. Procedure MKY
  158.    MK=Mouse Key
  159. End Proc
  160. Procedure BL
  161.    Bell 96
  162. End Proc
  163. Procedure XY
  164.    XX=X Screen(X Mouse)
  165.    YY=Y Screen(Y Mouse)
  166. End Proc
  167. Procedure YX
  168.    XX=X Mouse
  169.    YY=Y Mouse
  170. End Proc
  171. Procedure B[X1,Y1,X2,Y2,A$,IN]
  172.    If IN=1
  173.       C1=1
  174.       C2=3
  175.    Else 
  176.       C1=3
  177.       C2=1
  178.    End If 
  179.    Ink 2
  180.    Bar X1,Y1 To X2,Y2
  181.    Ink C1
  182.    Polyline X2,Y1 To X1,Y1 To X1,Y2
  183.    Ink C2
  184.    Polyline X1,Y2 To X2,Y2 To X2,Y1+1
  185.    If A$<>""
  186.       WID=Text Length(A$)
  187.       Ink 3,2
  188.       X7=(((X2-X1)/2)+X1)-(WID/2)
  189.       Text X7,((Y2-Y1)/2)+Y1+3,A$
  190.    End If 
  191. End Proc
  192. Procedure R[X1,Y1,X2,Y2,N]
  193.    AN=0
  194.    XY
  195.    X4=XX
  196.    Y4=YY
  197.    If X4<X1 or X4>X2 or Y4<Y1 or Y4>Y2
  198.       Pop Proc
  199.    End If 
  200.    G[2]
  201.    While Mouse Key>0
  202.       XY
  203.       MKY
  204.       X4=XX
  205.       Y4=YY
  206.       If X4>X1 and X4<X2 and Y4>Y1 and Y4<Y2 and AN=0
  207.          Bar X1,Y1 To X2,Y2
  208.          AN=MK
  209.       End If 
  210.       If AN
  211.          If X4<X1 or X4>X2 or Y4<Y1 or Y4>Y2
  212.             Bar X1,Y1 To X2,Y2
  213.             AN=0
  214.          End If 
  215.       End If 
  216.    Wend 
  217.    If AN>0 and N=0
  218.       Bar X1,Y1 To X2,Y2
  219.    End If 
  220.    G[1]
  221. End Proc
  222. Procedure E[X$,L]
  223.    Screen Open 7,640,26,4,Hires
  224.    Curs Off 
  225.    Flash Off 
  226.    Cls 2
  227.    Screen Display 7,,150,,
  228.    Palette $0,$EEE,$AA6,$222
  229.    QQ=(Len(X$)*8)/2
  230.    W=Screen Width/2
  231.    PP=(L*8)/2
  232.    B[(W-PP)-8,11,(W+PP)+8,24,"",1]
  233.    B[320-QQ-5,1,320+QQ+5,10,X$,1]
  234.    OK=0
  235.    P$=""
  236.    While OK=0
  237.       Cls 2,W-PP,12 To W+PP,23
  238.       Ink 3,2
  239.       Text W-(Len(P$)*8)/2,20,P$
  240.       W$=""
  241.       While W$=""
  242.          W$=Inkey$
  243.       Wend 
  244.       If W$=Chr$(8) and Len(P$)>0
  245.          P$=Left$(P$,Len(P$)-1)
  246.          W$=""
  247.       End If 
  248.       If W$=Chr$(13)
  249.          OK=1
  250.       End If 
  251.       If Asc(W$)>31 and Len(P$)<L
  252.          P$=P$+W$
  253.       End If 
  254.    Wend 
  255.    Screen Close 7
  256. End Proc
  257. Procedure SC[N]
  258.    Screen N
  259. End Proc
  260. Procedure SF[N]
  261.    Screen To Front N
  262. End Proc
  263. Procedure M[N]
  264.    Change Mouse N
  265. End Proc
  266. Procedure SLID[N,P]
  267.    Ink 2
  268.    Z=81-(P*5)
  269.    If N=1
  270.       Bar 360,6 To 369,86
  271.       Screen Copy 0,406,65,414,70 To 0,361,Z
  272.    End If 
  273.    If N=2
  274.       Bar 371,6 To 380,86
  275.       Screen Copy 0,406,65,414,70 To 0,372,Z
  276.    End If 
  277.    If N=3
  278.       Bar 382,6 To 391,86
  279.       Screen Copy 0,406,65,414,70 To 0,383,Z
  280.    End If 
  281. End Proc
  282. Procedure ST
  283.    SC[0]
  284.    SF[0]
  285.    Ink 3,2
  286.    Text 360,99,R$+G$+B$
  287.    Text 421,99,"  "
  288.    Text 421,99,Str$(FC)-" "
  289. End Proc
  290. Procedure SCLN
  291.    YX
  292.    SCI=Scin(XX,YY)
  293. End Proc
  294. Do 
  295.    SCLN
  296.    CHK[34,108]
  297.    If OK=1 and SCI=0
  298.       Q1
  299.    End If 
  300.    CHK[116,178]
  301.    If OK=1 and SCI=0
  302.       Q2
  303.    End If 
  304.    CHK[186,254]
  305.    If OK=1 and SCI=0
  306.       Q3
  307.    End If 
  308.    CHK[262,343]
  309.    If OK=1 and SCI=0
  310.       Q4
  311.    End If 
  312.    CHK[351,444]
  313.    If OK=1 and SCI=0
  314.       Q5
  315.    End If 
  316.    CHK[452,515]
  317.    If OK=1 and SCI=0
  318.       Q6
  319.    End If 
  320.    CHK[523,604]
  321.    If OK=1 and SCI=0
  322.       Q7
  323.    End If 
  324.    If SCI=4
  325.       While SCI=4
  326.          SCLN
  327.          MKY
  328.          SC[4]
  329.          XY
  330.          If MK=1 and YY>0 and YY<Screen Height
  331.             SC[4]
  332.             FC=Point(XX,YY)
  333.             RGB[FC]
  334.             SC[0]
  335.             SLID[1,RR]
  336.             SLID[2,GG]
  337.             SLID[3,BB]
  338.             GST
  339.             ST
  340.             SHOC
  341.          End If 
  342.          If MK=2
  343.             SC[4]
  344.             BC=Point(XX,YY)
  345.             SHOC
  346.          End If 
  347.       Wend 
  348.    End If 
  349.    SC[0]
  350. Loop 
  351. Procedure CHK[X1,X2]
  352.    OK=0
  353.    XY
  354.    If XX>X1 and XX<X2
  355.       OK=1
  356.    End If 
  357. End Proc
  358. ' Disk Op
  359. Procedure Q1
  360.    Do 
  361.       SCLN
  362.       CHK[34,108]
  363.       If OK=0 or SCI>0
  364.          Pop Proc
  365.       End If 
  366.       R[37,5,105,13,0]
  367.       If AN>0
  368.          If AN=1
  369.             F$=Fsel$("","","Load IFF Picture")
  370.          End If 
  371.          If AN=2
  372.             E["Load IFF Picture",60]
  373.             F$=P$
  374.          End If 
  375.          If F$=""
  376.             Pop Proc
  377.          End If 
  378.          If Not Exist(F$)
  379.             Pop Proc
  380.          End If 
  381.          M[3]
  382.          TC["Loading IFF Picture..."]
  383.          Load Iff F$,1
  384.          CLRS=Screen Colour
  385.          FC=1
  386.          BC=0
  387.          RGB[FC]
  388.          GST
  389.          ST
  390.          BL
  391.          SEL[CLRS]
  392.          RER
  393.          SHOC
  394.          SLID[1,RR]
  395.          SLID[2,GG]
  396.          SLID[3,BB]
  397.          M[2]
  398.          TC[""]
  399.       End If 
  400.       R[37,15,105,23,0]
  401.       If AN>0
  402.          If AN=1
  403.             F$=Fsel$("","","Load ABK Picture")
  404.          End If 
  405.          If AN=2
  406.             E["Load ABK Picture",60]
  407.             F$=P$
  408.          End If 
  409.          If F$=""
  410.             Pop Proc
  411.          End If 
  412.          If Not Exist(F$)
  413.             Pop Proc
  414.          End If 
  415.          M[3]
  416.          TC["Loading ABK Picture..."]
  417.          Load F$,6
  418.          TC["Unpacking Picture..."]
  419.          Unpack 6 To 1
  420.          CLRS=Screen Colour
  421.          Erase 6
  422.          FC=1
  423.          BC=0
  424.          RGB[FC]
  425.          GST
  426.          ST
  427.          BL
  428.          SEL[CLRS]
  429.          RER
  430.          SHOC
  431.          SLID[1,RR]
  432.          SLID[2,GG]
  433.          SLID[3,BB]
  434.          M[2]
  435.          TC[""]
  436.       End If 
  437.       R[37,25,105,33,0]
  438.       If AN>0
  439.          If AN=1
  440.             F$=Fsel$("","","Save IFF Picture")
  441.          End If 
  442.          If AN=2
  443.             E["Save IFF Picture",60]
  444.             F$=P$
  445.          End If 
  446.          If F$=""
  447.             Pop Proc
  448.          End If 
  449.          If Exist(F$)
  450.             E["File Already Exist's, Overwrite",1]
  451.             P$=Upper$(P$)
  452.             If P$<>"Y"
  453.                Pop Proc
  454.             End If 
  455.          End If 
  456.          M[3]
  457.          TC["Saving IFF Picture..."]
  458.          SC[1]
  459.          Save Iff F$,0
  460.          BL
  461.          SC[0]
  462.          M[2]
  463.          TC[""]
  464.       End If 
  465.       R[37,35,105,43,0]
  466.       If AN>0
  467.          If AN=1
  468.             F$=Fsel$("","","Save ABK Picture")
  469.          End If 
  470.          If AN=2
  471.             E["Save ABK Picture",60]
  472.             F$=P$
  473.          End If 
  474.          If F$=""
  475.             Pop Proc
  476.          End If 
  477.          If Exist(F$)
  478.             E["File Already Exist's, Overwrite",1]
  479.             P$=Upper$(P$)
  480.             If P$<>"Y"
  481.                Pop Proc
  482.             End If 
  483.          End If 
  484.          M[3]
  485.          TC["Compacting ABK Picture..."]
  486.          Spack 1 To 6
  487.          TC["Saving ABK Picture..."]
  488.          Save F$,6
  489.          Erase 6
  490.          BL
  491.          SC[0]
  492.          M[2]
  493.          TC[""]
  494.       End If 
  495.       R[37,45,105,53,0]
  496.       If AN>0
  497.          If AN=1
  498.             F1$=Fsel$("","","File To Rename")
  499.          End If 
  500.          If AN=2
  501.             E["File To Rename",60]
  502.             F1$=P$
  503.          End If 
  504.          If F1$=""
  505.             Pop Proc
  506.          End If 
  507.          If Not Exist(F1$)
  508.             Pop Proc
  509.          End If 
  510.          If AN=1
  511.             F2$=Fsel$("","","Rename File To")
  512.          End If 
  513.          If AN=2
  514.             E["Rename File To",60]
  515.             F2$=P$
  516.          End If 
  517.          If F2$=""
  518.             Pop Proc
  519.          End If 
  520.          If Exist(F2$)
  521.             Pop Proc
  522.          End If 
  523.          E["Sure (Y/N) ?",1]
  524.          P$=Upper$(P$)
  525.          If P$<>"Y"
  526.             Pop Proc
  527.          End If 
  528.          M[3]
  529.          Rename F1$ To F2$
  530.          BL
  531.          M[2]
  532.       End If 
  533.       R[37,55,105,63,0]
  534.       If AN>0
  535.          If AN=1
  536.             F$=Fsel$("","","File To Delete")
  537.          End If 
  538.          If AN=2
  539.             E["File To Delete",60]
  540.             F$=P$
  541.          End If 
  542.          If F$=""
  543.             Pop Proc
  544.          End If 
  545.          If Not Exist(F$)
  546.             Pop Proc
  547.          End If 
  548.          E["Sure (Y/N) ?",1]
  549.          P$=Upper$(P$)
  550.          If P$<>"Y"
  551.             Pop Proc
  552.          End If 
  553.          M[3]
  554.          Kill F$
  555.          BL
  556.          M[2]
  557.       End If 
  558.       R[37,65,105,73,0]
  559.       If AN>0
  560.          If AN=1
  561.             F$=Fsel$("","","Directory To Create")
  562.          End If 
  563.          If AN=2
  564.             E["Directory To Create",60]
  565.             F$=P$
  566.          End If 
  567.          If F$=""
  568.             Pop Proc
  569.          End If 
  570.          If Exist(F$)
  571.             Pop Proc
  572.          End If 
  573.          E["Sure (Y/N) ?",1]
  574.          P$=Upper$(P$)
  575.          If P$<>"Y"
  576.             Pop Proc
  577.          End If 
  578.          M[3]
  579.          Mkdir F$
  580.          BL
  581.          M[2]
  582.       End If 
  583.       R[37,75,105,83,0]
  584.       If AN>0
  585.          E["Enter Drive Title e.g  DF1:   MyDisk:   Etc!",40]
  586.          If Exist(P$)
  587.             Dir$=P$
  588.             TC["Free Disk Space In "+P$+" Is"+Str$(Dfree)+" Bytes"]
  589.             Dir$="ram:"
  590.          End If 
  591.       End If 
  592.       R[37,85,105,93,0]
  593.       If AN>0
  594.          Q1$="Chip Mem:"+Str$(Chip Free)+"  Fast Mem:"+Str$(Fast Free)
  595.          Q1$=Q1$+"  Sprites:"+Str$(Length(1))+"  Icons:"+Str$(Length(2))
  596.          TC[Q1$]
  597.       End If 
  598.    Loop 
  599. End Proc
  600. ' Screen 
  601. Procedure Q2
  602.    Do 
  603.       SCLN
  604.       CHK[116,178]
  605.       If OK=0 or SCI>0
  606.          Pop Proc
  607.       End If 
  608.       R[119,5,175,13,0]
  609.       If AN>0
  610.          REZ=Lowres
  611.          REZ$="Low"
  612.          WD=320
  613.          HT=200
  614.       End If 
  615.       R[119,15,175,23,0]
  616.       If AN>0
  617.          If CLRS>16
  618.             CLRS=16
  619.          End If 
  620.          REZ=Hires
  621.          REZ$="Medium"
  622.          WD=640
  623.          HT=200
  624.       End If 
  625.       R[119,25,175,33,0]
  626.       If AN>0
  627.          REZ=Lowres+Laced
  628.          REZ$="Interlace"
  629.          WD=320
  630.          HT=200
  631.          TIM=2
  632.       End If 
  633.       R[119,35,175,43,0]
  634.       If AN>0
  635.          If CLRS>16
  636.             CLRS=16
  637.          End If 
  638.          REZ=Hires+Laced
  639.          REZ$="High"
  640.          WD=640
  641.          HT=200
  642.          TIM=2
  643.       End If 
  644.       R[120,45,134,53,0]
  645.       If AN>0
  646.          CLRS=2
  647.       End If 
  648.       R[140,45,154,53,0]
  649.       If AN>0
  650.          CLRS=4
  651.       End If 
  652.       R[160,45,174,53,0]
  653.       If AN>0
  654.          CLRS=8
  655.       End If 
  656.       R[120,55,134,63,0]
  657.       If AN>0
  658.          CLRS=16
  659.       End If 
  660.       R[140,55,154,63,0]
  661.       If AN>0
  662.          CLRS=32
  663.       End If 
  664.       R[160,55,174,63,0]
  665.       If AN>0
  666.          CLRS=64
  667.       End If 
  668.       R[120,65,174,73,0]
  669.       If AN>0
  670.          CLRS=4096
  671.       End If 
  672.       R[120,75,146,83,0]
  673.       If AN>0
  674.          NT=56
  675.       End If 
  676.       R[148,75,174,83,0]
  677.       If AN>0
  678.          NT=0
  679.       End If 
  680.       R[120,85,174,103,0]
  681.       If AN>0
  682.          If REZ=Hires and CLRS>16
  683.             CLRS=16
  684.          End If 
  685.          If REZ=Hires+Laced and CLRS>16
  686.             CLRS=16
  687.          End If 
  688.          Screen Open 1,WD,(HT+NT)*TIM,CLRS,REZ
  689.          Curs Off 
  690.          Flash Off 
  691.          Cls 0
  692.          SEL[CLRS]
  693.          RER
  694.          SHOC
  695.          BL
  696.          Q1$="Screen ( Width:"+Str$(WD)+"  Height:"
  697.          Q1$=Q1$+Str$((HT+NT)*TIM)+"  Colours:"+Str$(CLRS)
  698.          Q1$=Q1$+"  Resolution: "+REZ$+" )"
  699.          TC[Q1$]
  700.       End If 
  701.    Loop 
  702. End Proc
  703. ' Font 
  704. Procedure Q3
  705.    Do 
  706.       SCLN
  707.       CHK[186,254]
  708.       If OK=0 or SCI>0
  709.          Pop Proc
  710.       End If 
  711.       R[189,5,251,13,0]
  712.       If AN>0
  713.          SC[1]
  714.          Set Font SF
  715.          SC[0]
  716.          BL
  717.       End If 
  718.       R[189,15,251,23,0]
  719.       If AN>0
  720.          E["Enter Text",80]
  721.          T$=P$
  722.       End If 
  723.       R[189,25,251,33,0]
  724.       If AN>0
  725.          SC[1]
  726.          SF[1]
  727.          Set Text TEK
  728.          G[2]
  729.          Do 
  730.             XY
  731.             MKY
  732.             If MK=1
  733.                A1=FC
  734.                A2=BC
  735.             End If 
  736.             If MK=2
  737.                A1=BC
  738.                A2=BC
  739.             End If 
  740.             Text XX,YY,T$
  741.             Wait Vbl 
  742.             Text XX,YY,T$
  743.             If MK>0
  744.                G[0]
  745.                If OUT=1 and SHA=1
  746.                   OK2=1
  747.                Else 
  748.                   OK2=0
  749.                End If 
  750.                If OUT=1
  751.                   Ink A2
  752.                   Text XX+1,YY,T$
  753.                   Text XX-1,YY,T$
  754.                   Text XX,YY-1,T$
  755.                   Text XX,YY+1,T$
  756.                   If OK2=1
  757.                      Text XX+1+1,YY+1,T$
  758.                      Text XX+1-1,YY+1,T$
  759.                      Text XX+1,YY+1-1,T$
  760.                      Text XX+1,YY+1+1,T$
  761.                   End If 
  762.                End If 
  763.                If SHA=1 and OK2=0
  764.                   Ink A2
  765.                   Text XX+1,YY+1,T$
  766.                End If 
  767.                Ink A1,A2
  768.                Text XX,YY,T$
  769.                G[2]
  770.             End If 
  771.             If Inkey$=" "
  772.                BL
  773.                RER
  774.                Exit 
  775.             End If 
  776.          Loop 
  777.       End If 
  778.       R[189,35,205,46,1]
  779.       If AN>0
  780.          Bchg 1,TEK
  781.          OK=1
  782.       End If 
  783.       R[212,35,228,46,1]
  784.       If AN>0
  785.          Bchg 2,TEK
  786.          OK=1
  787.       End If 
  788.       R[235,35,251,46,1]
  789.       If AN>0
  790.          Bchg 0,TEK
  791.          OK=1
  792.       End If 
  793.       If OK=1
  794.          SC[1]
  795.          Set Text TEK
  796.          SC[0]
  797.          OK=0
  798.       End If 
  799.       R[200,48,216,59,1]
  800.       If AN>0
  801.          If OUT=1
  802.             OUT=0
  803.          Else 
  804.             OUT=1
  805.          End If 
  806.       End If 
  807.       R[224,48,240,59,1]
  808.       If AN>0
  809.          If SHA=1
  810.             SHA=0
  811.          Else 
  812.             SHA=1
  813.          End If 
  814.       End If 
  815.       R[189,61,218,71,0]
  816.       If AN>0 and SF>1
  817.          Dec SF
  818.          OK3=1
  819.       End If 
  820.       R[222,61,251,71,0]
  821.       If Font$(SF+1)<>"" and AN>0
  822.          Inc SF
  823.          OK3=1
  824.       End If 
  825.       If OK3=1
  826.          TC[Font$(SF)]
  827.          OK3=0
  828.       End If 
  829.    Loop 
  830. End Proc
  831. ' Effects
  832. Procedure Q4
  833.    Do 
  834.       SCLN
  835.       CHK[262,343]
  836.       If OK=0 or SCI>0
  837.          Pop Proc
  838.       End If 
  839.       R[330,5,340,12,0]
  840.       If AN>0 and FP<35
  841.          Inc FP
  842.          OK3=1
  843.       End If 
  844.       R[330,15,340,22,0]
  845.       If AN>0 and FP>0
  846.          Dec FP
  847.          OK3=1
  848.       End If 
  849.       If OK3=1
  850.          SPAT[FP]
  851.          Ink 6,7
  852.          Bar 312,6 To 327,21
  853.          SPAT[0]
  854.          OK3=0
  855.       End If 
  856.       R[330,24,340,31,0]
  857.       If AN>0 and LP<5
  858.          Inc LP
  859.          OK4=1
  860.       End If 
  861.       R[330,34,340,41,0]
  862.       If AN>0 and LP>0
  863.          Dec LP
  864.          OK4=1
  865.       End If 
  866.       If OK4=1
  867.          SLIN[LP]
  868.          Ink 6,7
  869.          Draw 313,26 To 326,39
  870.          SLIN[0]
  871.          OK4=0
  872.       End If 
  873.       R[266,43,340,55,0]
  874.       If AN>0
  875.          FLIP[0]
  876.       End If 
  877.       R[266,57,340,69,0]
  878.       If AN>0
  879.          FLIP[1]
  880.       End If 
  881.       R[266,71,340,88,0]
  882.       If AN>0
  883.          E["Enter Degrees To Rotate (1 To 359 e.g 45.2)",5]
  884.          A#=Val(P$)
  885.          If P$=""
  886.             SC[0]
  887.             Pop Proc
  888.          End If 
  889.          If A#<1 or A#>359
  890.             Pop Proc
  891.          End If 
  892.          SC[1]
  893.          SF[1]
  894.          G[2]
  895.          Repeat 
  896.             MKY
  897.          Until MK>0
  898.          XY
  899.          X1=XX
  900.          Y1=YY
  901.          Repeat 
  902.             XY
  903.             X2=XX
  904.             Y2=YY
  905.             MKY
  906.             Box X1,Y1 To X2,Y2
  907.             Box X1,Y1 To X2,Y2
  908.          Until MK=0
  909.          Plot X1,Y1
  910.          G[1]
  911.          XS=X2-X1
  912.          YS=Y2-Y1
  913.          Z=Sqr(XS*XS+YS*YS)
  914.          Screen Open 2,Z+(3*XS),Z+(3*YS),Screen Colour,Lowres
  915.          Curs Off 
  916.          Flash Off 
  917.          Cls 0
  918.          Get Palette 1
  919.          XRS=XS
  920.          YRS=YS
  921.          SC[2]
  922.          A#=A#/180.0*Pi#
  923.          G#=(A#+Pi#/4.0)
  924.          X=Cos(G#)*64
  925.          Y=Sin(G#)*64
  926.          XOF=80-X
  927.          YOF=68-Y
  928.          LX=XOF
  929.          LY=YOF
  930.          HX=XOF
  931.          HY=YOF
  932.          SC[1]
  933.          For X#=1 To XRS Step 0.7
  934.             For Y#=1 To YRS Step 0.7
  935.                P=Point(X#+X1,Y#+Y1)
  936.                If P>0
  937.                   R#=Sqr(X#*X#+Y#*Y#)
  938.                   Q#=Acos(X#/R#)
  939.                   X=XOF+Cos(Q#+A#)*R#
  940.                   LX=Min(X,LX)
  941.                   HX=Max(X,HX)
  942.                   Y=YOF+Sin(Q#+A#)*R#
  943.                   LY=Min(Y,LY)
  944.                   HY=Max(Y,HY)
  945.                   Screen Copy 1,X#+X1,Y#+Y1,(X#+X1)+1,(Y#+Y1)+1 To 2,X,Y
  946.                End If 
  947.                If Inkey$=Chr$(27)
  948.                   BL
  949.                   Screen Close 2
  950.                   SC[0]
  951.                   SF[0]
  952.                   Direct 
  953.                End If 
  954.             Next 
  955.          Next 
  956.          DX=HX-LX
  957.          DY=HY-LY
  958.          SC[2]
  959.          Get Bob Length(1)+1,LX-1,LY-1 To LX+DX+1,LY+DY+1
  960.          Screen Close 2
  961.          SPO=Length(1)
  962.          PSI[0]
  963.          RER
  964.       End If 
  965.    Loop 
  966. End Proc
  967. ' Palette
  968. Procedure Q5
  969.    Do 
  970.       SCLN
  971.       CHK[351,444]
  972.       If OK=0
  973.          Pop Proc
  974.       End If 
  975.       If FC>31
  976.          FC=FC-32
  977.          OK8=1
  978.       End If 
  979.       If BC>31
  980.          BC=BC-32
  981.          OK9=1
  982.       End If 
  983.       XY
  984.       MKY
  985.       If XX>359 and XX<369 and YY>5 and YY<87 and MK>0
  986.          RR=(90-(YY+6))/5
  987.          SLID[1,RR]
  988.          OK6=1
  989.       End If 
  990.       If XX>370 and XX<381 and YY>5 and YY<87 and MK>0
  991.          GG=(90-(YY+6))/5
  992.          SLID[2,GG]
  993.          OK6=1
  994.       End If 
  995.       If XX>381 and XX<392 and YY>5 and YY<87 and MK>0
  996.          BB=(90-(YY+6))/5
  997.          SLID[3,BB]
  998.          OK6=1
  999.       End If 
  1000.       If OK6=1
  1001.          R$=Hex$(RR)
  1002.          G$=Mid$(Hex$(GG),2,1)
  1003.          B$=Mid$(Hex$(BB),2,1)
  1004.          SC[1]
  1005.          Colour FC,Val(R$+G$+B$)
  1006.          SHOC
  1007.          SC[4]
  1008.          Colour FC,Val(R$+G$+B$)
  1009.          SC[1]
  1010.          OK6=0
  1011.          ST
  1012.       End If 
  1013.       R[417,46,441,65,0]
  1014.       If AN>0
  1015.          SC[1]
  1016.          SF[1]
  1017.          MKY
  1018.          While MK=0
  1019.             MKY
  1020.             XY
  1021.          Wend 
  1022.          FC=Point(XX,YY)
  1023.          RGB[FC]
  1024.          SHOC
  1025.          RER
  1026.          SLID[1,RR]
  1027.          SLID[2,GG]
  1028.          SLID[3,BB]
  1029.          GST
  1030.          ST
  1031.       End If 
  1032.       R[417,68,441,87,0]
  1033.       If AN>0
  1034.          SC[1]
  1035.          SF[1]
  1036.          MKY
  1037.          While MK=0
  1038.             MKY
  1039.             XY
  1040.          Wend 
  1041.          BC=Point(XX,YY)
  1042.          SHOC
  1043.          RER
  1044.       End If 
  1045.       R[403,5,441,13,0]
  1046.       If AN>0
  1047.          TC["Select Another Colour To Spread To"]
  1048.          SC[4]
  1049.          MKY
  1050.          While MK=0
  1051.             MKY
  1052.          Wend 
  1053.          XY
  1054.          TC=FC
  1055.          E=Point(XX,YY)
  1056.          For A=TC+1 To E-1
  1057.             CDIF=E-A+1
  1058.             RDIF=((Colour(E) and 3840)/256)-((Colour(A-1) and 3840)/256)
  1059.             RA=((Colour(A-1) and 3840)/256)+(RDIF/CDIF)
  1060.             GDIF=((Colour(E) and 240)/16)-((Colour(A-1) and 240)/16)
  1061.             GA=((Colour(A-1) and 240)/16)+(GDIF/CDIF)
  1062.             BDIF=(Colour(E) and 15)-(Colour(A-1) and 15)
  1063.             BA=(Colour(A-1) and 15)+(BDIF/CDIF)
  1064.             Colour A,(RA*256+GA*16+BA)
  1065.          Next 
  1066.          SC[1]
  1067.          Get Palette 4
  1068.          SC[0]
  1069.          SHOC
  1070.          TC[""]
  1071.       End If 
  1072.       R[403,15,441,23,0]
  1073.       If AN>0
  1074.          TC["Select Another Colour To Copy To"]
  1075.          SC[4]
  1076.          MKY
  1077.          While MK=0
  1078.             MKY
  1079.          Wend 
  1080.          XY
  1081.          E=Point(XX,YY)
  1082.          Colour(E),Colour(FC)
  1083.          SC[1]
  1084.          Get Palette 4
  1085.          SHOC
  1086.          TC[""]
  1087.       End If 
  1088.       R[403,25,441,33,0]
  1089.       If AN>0
  1090.          TC["Select Another Colour To Swap With"]
  1091.          SC[4]
  1092.          MKY
  1093.          While MK=0
  1094.             MKY
  1095.          Wend 
  1096.          XY
  1097.          A2=Point(XX,YY)
  1098.          TC=Colour(FC)
  1099.          Colour(FC),Colour(A2)
  1100.          Colour(A2),TC
  1101.          SC[1]
  1102.          Get Palette 4
  1103.          SHOC
  1104.          TC[""]
  1105.       End If 
  1106.       R[403,35,421,43,0]
  1107.       If AN>0 and Length(1)>0
  1108.          E["Get Sprite Palette SURE? (Y/N), Can't Undo!",1]
  1109.          P$=Upper$(P$)
  1110.          If P$<>"Y"
  1111.             Pop Proc
  1112.          End If 
  1113.          SC[1]
  1114.          Get Sprite Palette 
  1115.          SC[4]
  1116.          Get Palette 1
  1117.          SHOC
  1118.       End If 
  1119.       R[423,35,441,43,0]
  1120.       If AN>0 and Length(2)>0
  1121.          E["Get Icon Palette SURE? (Y/N), Can't Undo!",1]
  1122.          P$=Upper$(P$)
  1123.          If P$<>"Y"
  1124.             Pop Proc
  1125.          End If 
  1126.          SC[1]
  1127.          Get Icon Palette 
  1128.          SC[4]
  1129.          Get Palette 1
  1130.          SHOC
  1131.       End If 
  1132.       If OK8=1
  1133.          FC=FC+32
  1134.       End If 
  1135.       If OK9=1
  1136.          BC=BC+32
  1137.       End If 
  1138.    Loop 
  1139. End Proc
  1140. ' Tools  
  1141. Procedure Q6
  1142.    Do 
  1143.       SCLN
  1144.       CHK[452,515]
  1145.       If OK=0 or SCI>0
  1146.          Pop Proc
  1147.       End If 
  1148.       R[455,5,467,16,0]
  1149.       If AN>0
  1150.          SC[1]
  1151.          SF[1]
  1152.          Do 
  1153.             If Inkey$=" "
  1154.                RER
  1155.                Pop Proc
  1156.             End If 
  1157.             MKY
  1158.             If MK>0
  1159.                If MK=1
  1160.                   A1=FC
  1161.                   A2=BC
  1162.                Else 
  1163.                   A1=BC
  1164.                   A2=BC
  1165.                End If 
  1166.                Ink A1,A2
  1167.                Repeat 
  1168.                   XY
  1169.                   MKY
  1170.                   Plot XX,YY
  1171.                Until MK=0
  1172.             End If 
  1173.          Loop 
  1174.       End If 
  1175.       R[455,18,467,29,0]
  1176.       If AN>0
  1177.          SC[1]
  1178.          SF[1]
  1179.          Do 
  1180.             If Inkey$=" "
  1181.                RER
  1182.                Pop Proc
  1183.             End If 
  1184.             MKY
  1185.             If MK>0
  1186.                If MK=1
  1187.                   A1=FC
  1188.                   A2=BC
  1189.                Else 
  1190.                   A1=BC
  1191.                   A2=BC
  1192.                End If 
  1193.                Ink A1,A2
  1194.                XY
  1195.                X1=XX
  1196.                Y1=YY
  1197.                Repeat 
  1198.                   XY
  1199.                   MKY
  1200.                   Draw X1,Y1 To XX,YY
  1201.                   X1=XX
  1202.                   Y1=YY
  1203.                Until MK=0
  1204.             End If 
  1205.          Loop 
  1206.       End If 
  1207.       R[455,31,467,42,0]
  1208.       If AN>0
  1209.          SC[1]
  1210.          SF[1]
  1211.          Do 
  1212.             If Inkey$=" "
  1213.                RER
  1214.                Pop Proc
  1215.             End If 
  1216.             MKY
  1217.             If MK>0
  1218.                If MK=1
  1219.                   A1=FC
  1220.                   A2=BC
  1221.                Else 
  1222.                   A1=BC
  1223.                   A2=BC
  1224.                End If 
  1225.                G[2]
  1226.                XY
  1227.                X1=XX
  1228.                Y1=YY
  1229.                Repeat 
  1230.                   MKY
  1231.                   XY
  1232.                   Draw X1,Y1 To XX,YY
  1233.                   Draw X1,Y1 To XX,YY
  1234.                Until MK=0
  1235.                G[1]
  1236.                Ink A1,A2
  1237.                SLIN[LP]
  1238.                Draw X1,Y1 To XX,YY
  1239.                SLIN[0]
  1240.             End If 
  1241.          Loop 
  1242.       End If 
  1243.       R[455,44,467,55,0]
  1244.       If AN>0
  1245.          SC[1]
  1246.          SF[1]
  1247.          Do 
  1248.             If Inkey$=" "
  1249.                RER
  1250.                Pop Proc
  1251.             End If 
  1252.             MKY
  1253.             If MK>0
  1254.                If MK=1
  1255.                   A1=FC
  1256.                   A2=BC
  1257.                Else 
  1258.                   A1=BC
  1259.                   A2=BC
  1260.                End If 
  1261.                G[2]
  1262.                XY
  1263.                X1=XX
  1264.                Y1=YY
  1265.                Repeat 
  1266.                   MKY
  1267.                   XY
  1268.                   Box X1,Y1 To XX,YY
  1269.                   Wait Vbl 
  1270.                   Box X1,Y1 To XX,YY
  1271.                Until MK=0
  1272.                G[1]
  1273.                Ink A1,A2
  1274.                SLIN[LP]
  1275.                Box X1,Y1 To XX,YY
  1276.                SLIN[0]
  1277.             End If 
  1278.          Loop 
  1279.       End If 
  1280.       R[455,57,467,68,0]
  1281.       If AN>0
  1282.          SC[1]
  1283.          SF[1]
  1284.          Do 
  1285.             If Inkey$=" "
  1286.                RER
  1287.                Pop Proc
  1288.             End If 
  1289.             MKY
  1290.             If MK>0
  1291.                If MK=1
  1292.                   A1=FC
  1293.                   A2=BC
  1294.                Else 
  1295.                   A1=BC
  1296.                   A2=BC
  1297.                End If 
  1298.                G[2]
  1299.                XY
  1300.                X1=XX
  1301.                Y1=YY
  1302.                Repeat 
  1303.                   MKY
  1304.                   XY
  1305.                   Box X1,Y1 To XX,YY
  1306.                   Wait Vbl 
  1307.                   Box X1,Y1 To XX,YY
  1308.                Until MK=0
  1309.                G[1]
  1310.                Ink A1,A2
  1311.                If X1>XX
  1312.                   T=X1
  1313.                   X1=XX
  1314.                   XX=T
  1315.                End If 
  1316.                If Y1>YY
  1317.                   T=Y1
  1318.                   Y1=YY
  1319.                   YY=T
  1320.                End If 
  1321.                If X1=XX
  1322.                   XX=XX+2
  1323.                End If 
  1324.                If Y1=YY
  1325.                   YY=YY+2
  1326.                End If 
  1327.                SPAT[FP]
  1328.                Bar X1,Y1 To XX,YY
  1329.                SPAT[0]
  1330.             End If 
  1331.          Loop 
  1332.       End If 
  1333.       R[470,5,482,16,0]
  1334.       If AN>0
  1335.          OK0=1
  1336.       End If 
  1337.       R[470,18,482,29,0]
  1338.       If AN>0
  1339.          OK0=2
  1340.       End If 
  1341.       If OK0>0
  1342.          SC[1]
  1343.          SF[1]
  1344.          Do 
  1345.             If Inkey$=" "
  1346.                RER
  1347.                OK0=0
  1348.                Pop Proc
  1349.             End If 
  1350.             MKY
  1351.             If MK>0
  1352.                If MK=1
  1353.                   A1=FC
  1354.                   A2=BC
  1355.                Else 
  1356.                   A1=BC
  1357.                   A2=BC
  1358.                End If 
  1359.                XY
  1360.                X2=XX
  1361.                Y2=YY
  1362.                X1=X2
  1363.                Y1=Y2
  1364.                G[2]
  1365.                Repeat 
  1366.                   XY
  1367.                   MKY
  1368.                   R1=XX-X1+1
  1369.                   If R1<1
  1370.                      R1=1
  1371.                   End If 
  1372.                   R2=YY-Y1+1
  1373.                   If R2<1
  1374.                      R2=1
  1375.                   End If 
  1376.                   Ellipse X1,Y1,R1,R2
  1377.                   Ellipse X1,Y1,R1,R2
  1378.                Until MK=0
  1379.                G[1]
  1380.                Ink A1,A2
  1381.                If OK0=1
  1382.                   Ellipse X1,Y1,R1,R2
  1383.                End If 
  1384.                If OK0=2
  1385.                   FDX=X1-R1
  1386.                   FDY=Y1-R2
  1387.                   RX=Max(1,Abs(X1-FDX))
  1388.                   RY=Max(1,Abs(Y1-FDY))
  1389.                   X1O=X1
  1390.                   Y1O=Y1
  1391.                   S#=0.1
  1392.                   If RX+RY<16
  1393.                      S#=0.5
  1394.                   End If 
  1395.                   SPAT[FP]
  1396.                   For Q#=0 To 6.59734 Step S#
  1397.                      Polygon X1O,Y1O To X1,Y1 To X1+RX*Cos(Q#),Y1+RY*Sin(Q#)
  1398.                      X1O=X1+RX*Cos(Q#)
  1399.                      Y1O=Y1+RY*Sin(Q#)
  1400.                   Next 
  1401.                   SPAT[0]
  1402.                End If 
  1403.             End If 
  1404.          Loop 
  1405.          OK0=0
  1406.       End If 
  1407.       R[470,31,482,42,0]
  1408.       If AN=1
  1409.          SC[1]
  1410.          SF[1]
  1411.          Do 
  1412.             If Inkey$=" "
  1413.                RER
  1414.                Pop Proc
  1415.             End If 
  1416.             MKY
  1417.             If MK=1
  1418.                A1=FC
  1419.                A2=BC
  1420.             End If 
  1421.             If MK=2
  1422.                A1=BC
  1423.                A2=BC
  1424.             End If 
  1425.             If MK>0
  1426.                Ink A1,A2
  1427.                Repeat 
  1428.                   MKY
  1429.                   XY
  1430.                   If Rnd(DENS)=(DENS)
  1431.                      Plot(XX-Rnd(WDH)/2)+Rnd(WDH),(YY-Rnd(WDH)/2)+Rnd(WDH)
  1432.                   End If 
  1433.                Until MK=0
  1434.             End If 
  1435.          Loop 
  1436.       End If 
  1437.       If AN=2
  1438.          E["Enter Spray Size (1-640)",3]
  1439.          If P$=""
  1440.             Pop Proc
  1441.          End If 
  1442.          X1=Val(P$)
  1443.          If X1<1 or X1>640
  1444.             Pop Proc
  1445.          End If 
  1446.          WDH=X1
  1447.          E["Enter Spray Density (1-50)",2]
  1448.          If P$=""
  1449.             Pop Proc
  1450.          End If 
  1451.          X1=Val(P$)
  1452.          If X1<1 or X1>50
  1453.             Pop Proc
  1454.          End If 
  1455.          DENS=X1
  1456.       End If 
  1457.       R[455,70,467,81,0]
  1458.       If AN>0
  1459.          SC[1]
  1460.          SF[1]
  1461.          Do 
  1462.             If Inkey$=" "
  1463.                RER
  1464.                Pop Proc
  1465.             End If 
  1466.             MKY
  1467.             XY
  1468.             If MK=1
  1469.                Ink FC,BC
  1470.                SPAT[FP]
  1471.                Paint XX,YY
  1472.                SPAT[0]
  1473.             End If 
  1474.             If MK=2
  1475.                Ink BC,BC
  1476.                Paint XX,YY
  1477.             End If 
  1478.          Loop 
  1479.       End If 
  1480.       R[470,44,482,55,0]
  1481.       If AN>0
  1482.          SC[1]
  1483.          SF[1]
  1484.          G[2]
  1485.          Do 
  1486.             If Inkey$=" "
  1487.                RER
  1488.                G[1]
  1489.                Pop Proc
  1490.             End If 
  1491.             MKY
  1492.             XY
  1493.             If MK=1
  1494.                X1=XX
  1495.                Y1=YY
  1496.                Repeat 
  1497.                   XY
  1498.                   MKY
  1499.                   Box X1,Y1 To XX,YY
  1500.                   Box X1,Y1 To XX,YY
  1501.                Until MK=0
  1502.                If X1=XX
  1503.                   X1=X1-2
  1504.                End If 
  1505.                If Y1=YY
  1506.                   Y1=Y1-2
  1507.                End If 
  1508.                Get Bob Length(1)+1,X1,Y1 To XX,YY
  1509.                SPO=Length(1)
  1510.                PSI[0]
  1511.             End If 
  1512.             If MK=2
  1513.                X1=XX
  1514.                Y1=YY
  1515.                Repeat 
  1516.                   XY
  1517.                   MKY
  1518.                   Box X1,Y1 To XX,YY
  1519.                   Box X1,Y1 To XX,YY
  1520.                Until MK=0
  1521.                If X1=XX
  1522.                   X1=X1-2
  1523.                End If 
  1524.                If Y1=YY
  1525.                   Y1=Y1-2
  1526.                End If 
  1527.                Get Bob Length(1)+1,X1,Y1 To XX,YY
  1528.                G[1]
  1529.                Ink BC,BC
  1530.                Bar X1,Y1 To XX,YY
  1531.                SPO=Length(1)
  1532.                PSI[0]
  1533.             End If 
  1534.          Loop 
  1535.       End If 
  1536.       R[470,70,482,81,0]
  1537.       If AN>0
  1538.          SC[1]
  1539.          SF[1]
  1540.          XY
  1541.          Repeat 
  1542.             XY
  1543.             MKY
  1544.          Until MK>0
  1545.          X1=XX
  1546.          Y1=YY
  1547.          Do 
  1548.             If Inkey$=" "
  1549.                RER
  1550.                Pop Proc
  1551.             End If 
  1552.             MKY
  1553.             XY
  1554.             If MK=1
  1555.                SLIN[LP]
  1556.                Ink FC,BC
  1557.                Draw X1,Y1 To XX,YY
  1558.             End If 
  1559.             If MK=2
  1560.                Ink BC,BC
  1561.                Draw X1,Y1 To XX,YY
  1562.             End If 
  1563.          Loop 
  1564.       End If 
  1565.       R[455,83,512,95,0]
  1566.       If AN>0
  1567.          SC[1]
  1568.          SF[1]
  1569.          Repeat 
  1570.             MKY
  1571.             XY
  1572.          Until MK>0
  1573.          X1=XX
  1574.          Y1=YY
  1575.          G[2]
  1576.          Repeat 
  1577.             XY
  1578.             MKY
  1579.             Box X1,Y1 To XX,YY
  1580.             Box X1,Y1 To XX,YY
  1581.          Until MK=0
  1582.          X2=XX
  1583.          Y2=YY
  1584.          If X2<=X1 or Y2<=Y1
  1585.             RER
  1586.             Pop Proc
  1587.          End If 
  1588.          Repeat 
  1589.             MKY
  1590.             XY
  1591.          Until MK>0
  1592.          X3=XX
  1593.          Y3=YY
  1594.          Repeat 
  1595.             XY
  1596.             MKY
  1597.             Box X3,Y3 To XX,YY
  1598.             Box X3,Y3 To XX,YY
  1599.          Until MK=0
  1600.          X4=XX
  1601.          Y4=YY
  1602.          If X4<=X3 or Y4<=Y3
  1603.             RER
  1604.             Pop Proc
  1605.          End If 
  1606.          G[1]
  1607.          Screen Open 2,(X4-X3)+1,(Y4-Y3)+1,Screen Colour,Lowres
  1608.          Curs Off 
  1609.          Flash Off 
  1610.          Cls 0
  1611.          Get Palette 1
  1612.          Zoom 1,X1,Y1,X2,Y2 To 2,0,0,Screen Width-1,Screen Height-1
  1613.          Get Bob Length(1)+1,0,0 To Screen Width,Screen Height
  1614.          Screen Close 2
  1615.          RER
  1616.       End If 
  1617.       R[485,31,512,42,0]
  1618.       If AN>0
  1619.          SC[1]
  1620.          Cls BC
  1621.       End If 
  1622.       R[485,5,512,16,0]
  1623.       If AN>0
  1624.          SC[1]
  1625.          SF[1]
  1626.          Do 
  1627.             G[2]
  1628.             Repeat 
  1629.                If Inkey$=" "
  1630.                   RER
  1631.                   Pop Proc
  1632.                End If 
  1633.                MKY
  1634.                XY
  1635.             Until MK>0
  1636.             X1=XX
  1637.             Y1=YY
  1638.             Repeat 
  1639.                XY
  1640.                MKY
  1641.                Box X1,Y1 To XX,YY
  1642.                Box X1,Y1 To XX,YY
  1643.             Until MK=0
  1644.             G[1]
  1645.             X2=XX
  1646.             Y2=YY
  1647.             For YY=Y1 To Y2
  1648.                For XX=X1 To X2
  1649.                   C=Point(XX,YY)
  1650.                   If C=FC
  1651.                      Plot XX,YY,BC
  1652.                   End If 
  1653.                Next 
  1654.             Next 
  1655.          Loop 
  1656.       End If 
  1657.       R[485,18,512,29,0]
  1658.       If AN>0
  1659.          SC[1]
  1660.          SF[1]
  1661.          Do 
  1662.             G[2]
  1663.             Repeat 
  1664.                If Inkey$=" "
  1665.                   RER
  1666.                   Pop Proc
  1667.                End If 
  1668.                MKY
  1669.                XY
  1670.             Until MK>0
  1671.             X1=XX
  1672.             Y1=YY
  1673.             Repeat 
  1674.                XY
  1675.                MKY
  1676.                Box X1,Y1 To XX,YY
  1677.                Box X1,Y1 To XX,YY
  1678.             Until MK=0
  1679.             G[1]
  1680.             X2=XX
  1681.             Y2=YY
  1682.             For YY=Y1 To Y2
  1683.                For XX=X1 To X2
  1684.                   C=Point(XX,YY)
  1685.                   If C=FC
  1686.                      Plot XX,YY,BC
  1687.                      Goto NXT
  1688.                   End If 
  1689.                   If C=BC
  1690.                      Plot XX,YY,FC
  1691.                   End If 
  1692.                   NXT:
  1693.                Next 
  1694.             Next 
  1695.          Loop 
  1696.       End If 
  1697.       R[470,57,482,68,0]
  1698.       If AN>0
  1699.          SC[1]
  1700.          SF[1]
  1701.          Do 
  1702.             G[2]
  1703.             Repeat 
  1704.                If Inkey$=" "
  1705.                   RER
  1706.                   Pop Proc
  1707.                End If 
  1708.                MKY
  1709.                XY
  1710.             Until MK>0
  1711.             X1=XX
  1712.             Y1=YY
  1713.             Repeat 
  1714.                XY
  1715.                MKY
  1716.                Box X1,Y1 To XX,YY
  1717.                Box X1,Y1 To XX,YY
  1718.             Until MK=0
  1719.             G[1]
  1720.             X2=XX
  1721.             Y2=YY
  1722.             For X=X1 To X2
  1723.                For Y=Y1 To Y2
  1724.                   C=Point(X,Y)
  1725.                   If(C<>BC) and(C<>FC)
  1726.                      Gosub PLT
  1727.                   End If 
  1728.                Next 
  1729.             Next 
  1730.             Goto ED
  1731.             PLT:
  1732.             If Point(X+1,Y)=FC
  1733.                Plot X+1,Y,BC
  1734.             End If 
  1735.             If Point(X-1,Y)=FC
  1736.                Plot X-1,Y,BC
  1737.             End If 
  1738.             If Point(X,Y+1)=FC
  1739.                Plot X,Y+1,BC
  1740.             End If 
  1741.             If Point(X,Y-1)=FC
  1742.                Plot X,Y-1,BC
  1743.             End If 
  1744.             Return 
  1745.             ED:
  1746.          Loop 
  1747.       End If 
  1748.    Loop 
  1749. End Proc
  1750. ' Sp /Ic 
  1751. Procedure Q7
  1752.    Do 
  1753.       SCLN
  1754.       CHK[523,604]
  1755.       If OK=0 or SCI>0
  1756.          Pop Proc
  1757.       End If 
  1758.       R[526,5,602,13,0]
  1759.       If AN>0
  1760.          If AN=1
  1761.             F$=Fsel$("","","Load Sprite Bank")
  1762.             If F$=""
  1763.                Pop Proc
  1764.             End If 
  1765.             If Not Exist(F$)
  1766.                Pop Proc
  1767.             End If 
  1768.          End If 
  1769.          If AN=2
  1770.             E["Load Sprite Bank",60]
  1771.             F$=P$
  1772.             If F$=""
  1773.                Pop Proc
  1774.             End If 
  1775.             If Not Exist(F$)
  1776.                Pop Proc
  1777.             End If 
  1778.          End If 
  1779.          If Length(1)>0
  1780.             E["SURE? (Y/N) Sprites Already In Bank Will Be Lost",1]
  1781.             P$=Upper$(P$)
  1782.             If P$<>"Y"
  1783.                Pop Proc
  1784.             End If 
  1785.          End If 
  1786.          M[3]
  1787.          Load F$,1
  1788.          M[2]
  1789.          BL
  1790.       End If 
  1791.       R[526,57,602,65,0]
  1792.       If AN>0
  1793.          If AN=1
  1794.             F$=Fsel$("","","Load Icon Bank")
  1795.             If F$=""
  1796.                Pop Proc
  1797.             End If 
  1798.             If Not Exist(F$)
  1799.                Pop Proc
  1800.             End If 
  1801.          End If 
  1802.          If AN=2
  1803.             E["Load Icon Bank",60]
  1804.             F$=P$
  1805.             If F$=""
  1806.                Pop Proc
  1807.             End If 
  1808.             If Not Exist(F$)
  1809.                Pop Proc
  1810.             End If 
  1811.          End If 
  1812.          If Length(1)>0
  1813.             E["SURE? (Y/N) Icons Already In Bank Will Be Lost",1]
  1814.             P$=Upper$(P$)
  1815.             If P$<>"Y"
  1816.                Pop Proc
  1817.             End If 
  1818.          End If 
  1819.          M[3]
  1820.          Load F$,2
  1821.          M[2]
  1822.          BL
  1823.       End If 
  1824.       R[593,15,602,25,0]
  1825.       If AN>0 and SPO<Length(1)
  1826.          Inc SPO
  1827.          OK7=1
  1828.       End If 
  1829.       R[593,27,602,37,0]
  1830.       If AN>0 and SPO>1
  1831.          Dec SPO
  1832.          OK7=1
  1833.       End If 
  1834.       If OK7=1
  1835.          PSI[0]
  1836.          OK7=0
  1837.       End If 
  1838.       R[593,67,602,77,0]
  1839.       If AN>0 and ICO<Length(2)
  1840.          Inc ICO
  1841.          OK8=1
  1842.       End If 
  1843.       R[593,79,602,89,0]
  1844.       If AN>0 and ICO>1
  1845.          Dec ICO
  1846.          OK8=1
  1847.       End If 
  1848.       If OK8=1
  1849.          PSI[1]
  1850.          OK8=0
  1851.       End If 
  1852.       R[526,39,602,47,0]
  1853.       If AN>0 and SPO>0
  1854.          PT[0]
  1855.       End If 
  1856.       R[526,91,602,99,0]
  1857.       If AN>0 and ICO>0
  1858.          PT[1]
  1859.       End If 
  1860.       R[532,50,542,54,0]
  1861.       If AN>0 and Length(1)>0
  1862.          E["Delete Sprite Bank, SURE (Y/N)?",1]
  1863.          P$=Upper$(P$)
  1864.          If P$<>"Y"
  1865.             Pop Proc
  1866.          End If 
  1867.          Erase 1
  1868.          SPO=0
  1869.          PSI[0]
  1870.       End If 
  1871.       R[586,50,596,54,0]
  1872.       If AN>0 and Length(2)>0
  1873.          E["Delete Icon Bank, SURE (Y/N)?",1]
  1874.          P$=Upper$(P$)
  1875.          If P$<>"Y"
  1876.             Pop Proc
  1877.          End If 
  1878.          Erase 2
  1879.          ICO=0
  1880.          PSI[1]
  1881.       End If 
  1882.    Loop 
  1883. End Proc
  1884. Procedure PSI[N]
  1885. Screen 0
  1886.    If N=0
  1887.       B[530,27,586,36,Str$(SPO)-" ",0]
  1888.    Else 
  1889.       B[530,79,586,88,Str$(ICO)-" ",0]
  1890.    End If 
  1891. End Proc
  1892. Procedure PT[N]
  1893.    SC[1]
  1894.    SF[1]
  1895.    If N=0
  1896.       TEMP=Sprite Base(SPO)
  1897.       WIDTH=Deek(TEMP)*16
  1898.       HEIGHT=Deek(TEMP+2)
  1899.       LOP=0
  1900.    End If 
  1901.    If N=1
  1902.       TEMP=Icon Base(ICO)
  1903.       WIDTH=Deek(TEMP)*16
  1904.       HEIGHT=Deek(TEMP+2)
  1905.       LOP=1
  1906.    End If 
  1907.    G[2]
  1908.    Do 
  1909.       If Inkey$=" "
  1910.          RER
  1911.          Pop Proc
  1912.       End If 
  1913.       MKY
  1914.       XY
  1915.       Bar XX,YY To XX+WIDTH,YY+HEIGHT
  1916.       Wait Vbl 
  1917.       Bar XX,YY To XX+WIDTH,YY+HEIGHT
  1918.       If MK>0
  1919.          XY
  1920.          MKY
  1921.          If N=0
  1922.             G[1]
  1923.             Paste Bob XX,YY,SPO
  1924.             G[2]
  1925.          End If 
  1926.          If N=1
  1927.             G[1]
  1928.             Paste Icon XX,YY,ICO
  1929.             G[2]
  1930.          End If 
  1931.       End If 
  1932.    Loop 
  1933. End Proc