home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 326-350 / apd345 / selector.amos / selector.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1992-09-02  |  65.0 KB  |  2,313 lines

  1. '
  2. Rem             ** Selector1200 **   
  3. Rem        ** Bill Currie 1991/93 **   
  4. '
  5. Set Buffer 32
  6. '
  7. Global F$
  8. '
  9. Dim LQZ$(200),MITQZ$(70)
  10. Global LQZ$(),FLEQZ$,MITQZ$(),LLQZ$
  11. Global DRECTORYQZ$,MESSAGE1QZ$,MESSAGE2QZ$
  12. Global NQZ,XQZ,IQZ,CRQZ
  13. CRQZ=0
  14. '
  15. Global AMOSMUSIC,AMOSMUSIC$,TRACKERMUSIC,TRACKERMUSIC$,MEDMUSIC,MEDMUSIC$
  16. Global FFMUSIC,FFMUSIC$,RAWMUSIC,RAWMUSIC$
  17. Global MUZIC,MUZIC$
  18. Set Dir ,""
  19. '
  20. Global SECS,IP,KEY
  21. Global KX,ZNE,CBO,XL,YL,WRD$
  22. Procedure PBT[XL,YL,WRD$,ZNE,CBO]
  23.    Locate XL,YL
  24.    Pen CBO : Ink CBO
  25.    UD[ZNE] : L=Len(WRD$)
  26.    If(ZNE<>0) Then Print Zone$(WRD$,ZNE);
  27.    If ZNE=0 Then Print WRD$;
  28.    XB1=X Graphic(X Curs-L) : YB1=Y Graphic(Y Curs)
  29.    XB2=X Graphic(X Curs) : YB2=Y Graphic(Y Curs+1)-1
  30.    Box XB1-2,YB1 To XB2+2,YB2
  31. End Proc
  32. Procedure UD[KX]
  33.    If KX=Mouse Zone Then Inverse On 
  34.    If KX<>Mouse Zone Then Inverse Off 
  35.    If KX=0 Then Inverse Off 
  36. End Proc
  37. '  
  38. Music Off : Track Stop : Erase 6 : Erase 5 : Erase 3 : Erase 7
  39. Global MM,FQ,VL,VC$
  40. MM=0 : FQ=12000 : VL=63 : VC$="1100"
  41. FF$=Dir$ : GG$=Dir$
  42. '  
  43. N=0
  44. '  
  45. Rem Selector Variables   
  46. '  
  47. Dim L$(200),FLE$(200),L2$(200),FLE2$(200),MIT$(70)
  48. Global L$(),FLE$(),L2$(),FLE2$(),MIT$()
  49. '
  50. Global DRECTORY$,DRECTORY1$,DRECTORY2$,MESSAGE1$
  51. Global M,KEEPX1,KEEPX2,KEEPY1,KEEPY2,CASE
  52. Global M2,N2,SOURCE,VIFF,FIFF$,VASC,FASC$,TALKING,MM,TLOLD
  53. Global KEEPN,KEEPN2
  54. '
  55. ZP
  56. Procedure ZP
  57.    VIFF=0 : VASC=0
  58.    If MUZIC=1 Then MUZIC=0 : MM=0 : Music Off : Track Stop : Erase 3 : Erase 7 : CLEAN_UP
  59.    AMOSMUSIC=0 : TRACKERMUSIC=0 : MEDMUSIC=0 : FFMUSIC=0 : RAWMUSIC=0
  60. End Proc
  61. '
  62. FIFF$="" : FASC$=""
  63. '
  64. RESET
  65. Procedure RESET
  66.    For I=1 To 200 : L$(I)="" : L2$(I)="" : FLE$(I)="" : FLE2$(I)="" : Next I
  67.    CASE=0
  68. End Proc
  69. Procedure RESET1
  70.    For I=1 To 200 : L$(I)="" : Next I
  71. End Proc
  72. Procedure RESET2
  73.    For I=1 To 200 : L2$(I)="" : Next I
  74. End Proc
  75. '
  76. DRECTORY1$=Dir$
  77. DRECTORY2$=Dir$
  78. DRECTORY$=DRECTORY1$
  79. MESSAGE1$=""
  80. '
  81. N=0
  82. '
  83. Rem !!Some!! Globals for FileManager (FM)  
  84. '
  85. Global F$,G$,FF$,GG$
  86. Global H,W,N,X,I,Y
  87. '
  88. Rem !!Some!! Globals for Page Editor (QP)  
  89. '
  90. Global CN,GRABBED,GX1,GY1,GX2,GY2,X1,Y1,X2,Y2,REZ
  91. Global TX,KK$,PX,PY,KEEPINK,PCL,DR
  92. Global D,YRM,KM,NDIR$,FTYP$
  93. Global MZ
  94. '
  95. Rem Globals for colour mix 
  96. '
  97. Dim FSC(4)
  98. Global NWFSC,FSC()
  99. NWFSC=0
  100. '
  101. DRECTORY1$=Dir$
  102. DRECTORY2$=Dir$
  103. DRECTORY$=DRECTORY1$
  104. MESSAGE1$=""
  105. INITDIRS
  106. Procedure INITDIRS
  107.    DD1$=Dir$ : DD2$=Dir$
  108.    If Exist("df0:")
  109.       Dir$="df0:"
  110.       If DD2$<>Dir$
  111.          DD2$=Dir$ : Goto MISSREST
  112.       End If 
  113.    End If 
  114.    If Exist("df1:")
  115.       Dir$="df1:"
  116.       If DD2$<>Dir$
  117.          DD2$=Dir$ : Goto MISSREST
  118.       End If 
  119.    End If 
  120.    If Exist("dh1:")
  121.       Dir$="dh1:"
  122.       If DD2$<>Dir$
  123.          DD2$=Dir$ : Goto MISSREST
  124.       End If 
  125.    End If 
  126.    If Exist("dh2:")
  127.       Dir$="dh2:"
  128.       If DD2$<>Dir$
  129.          DD2$=Dir$ : Goto MISSREST
  130.       End If 
  131.    End If 
  132.    If Exist("dh0:")
  133.       Dir$="dh0:"
  134.       If DD2$<>Dir$
  135.          DD2$=Dir$ : Goto MISSREST
  136.       End If 
  137.    End If 
  138.    MISSREST:
  139.    DRECTORY2$=DD2$
  140.    Dir$=DD1$
  141. End Proc
  142. WN1DIR
  143. WN2DIR
  144. '
  145. Rem AMOS copyright notice  
  146. AMOSC
  147. Procedure AMOSC
  148.    Screen Open 0,320,256,32,Lowres
  149.    CB[0] : Curs Off : Paper 0 : Cls 0 : Print 
  150.    Get Icon Palette 
  151.    Locate 0,1
  152.    Centre ">>> Program by Bill Currie <<<"
  153.    Flash 3,"(f00,32)(f80,32)(ff0,32)(0f0,32)(08f,32)(88f,32)(f0f,32)"
  154.    Pen 3 : Ink 3 : Box 50,40 To 270,150
  155.    Locate 0,11
  156.    Centre Border$("Selector",1)
  157.    Ink 0 : Pen 2
  158.    Paste Icon 220,20,2
  159.    _SMALL_COPYRIGHT[225]
  160.    Cls 0
  161. End Proc
  162. '
  163. Procedure _SMALL_COPYRIGHT[YDISPLAY]
  164.    Auto View Off 
  165.    Screen Open 7,320,24,16,0 : Curs Off : Flash Off : Cls 0
  166.    Screen Display 7,,-100,,
  167.    Paste Bob 260,3,1
  168.    Paper 0 : Pen 7 : Print At(1,1);"This program was written using"
  169.    Get Sprite Palette 
  170.    View : Wait Vbl 
  171.    For Y=1 To Screen Height/2
  172.       Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
  173.       Screen Offset 7,,Screen Height/2-Y
  174.       View : Wait Vbl 
  175.    Next 
  176.    Do 
  177.       If Mouse Key=1 Then Exit 
  178.    Loop 
  179.    For Y=Screen Height/2 To 0 Step -1
  180.       Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
  181.       Screen Offset 7,,Screen Height/2-Y
  182.       View : Wait Vbl 
  183.    Next 
  184.    Screen Close 7
  185.    Auto View On 
  186. End Proc
  187. '
  188. Limit Mouse 
  189. INFO
  190. Procedure INFO
  191.    While Mouse Key<>0 : Wend 
  192.    Cls 
  193.    Locate 0,10
  194.    Centre "Selector"
  195.    Print : Centre "**********"
  196.    Print : Print : Print : Print : Pen 1 : Centre "Other AMOS Program Disks available :"
  197.    Print : Print : Pen 3 : 
  198.    Centre "NoteBook: Loose-leaf NoteBook"
  199.    Print : Centre "ScrapBook: Loose-leaf ScrapBook"
  200.    Locate 0,15
  201.    Do 
  202.       If Mouse Key=1 Then Exit 
  203.    Loop 
  204. End Proc
  205. '
  206. Rem         ## Selector ## 
  207. '
  208. FILESELECT
  209. '
  210. Procedure FILESELECT
  211.    On Error Goto ER
  212.    Goto OK
  213.    ER:
  214.    ERR
  215.    Resume XIT
  216.    OK:
  217.    Screen Open 0,640,256,4,Hires
  218.    Flash Off : Curs Off : Paper 0 : Cls 0 : Colour 3,$FF0
  219.    CB[0]
  220.    Double Buffer : 
  221.    Locate 35,12 : Centre Border$("Selector",1)
  222.    Paste Icon 120,60,25
  223.    Wait 50
  224.    SCN3
  225.    KEY=1
  226.    SELECTOR_WINDOWS
  227.    XIT:
  228. End Proc
  229. Procedure SCN3
  230.    On Error Goto ER
  231.    Goto OK
  232.    ER:
  233.    ERR
  234.    Resume XIT
  235.    OK:
  236.    Screen Open 0,640,256,4,Hires
  237.    Flash Off : Curs Off : Paper 0 : Cls 0 : Colour 3,$FF0
  238.    If NWFSC=1 Then For III=0 To 3 : Colour III,FSC(III) : Next III
  239.    CB[0]
  240.    Double Buffer : 
  241.    Wind Open 1,0,0,40,24 : Paper 0 : Curs Off 
  242.    Wind Open 2,320,0,40,24 : Paper 0 : Curs Off 
  243.    Wind Open 3,0,192,80,8 : Paper 0 : Curs Off 
  244.    Pen 1 : Locate 0,7 : Centre "(Multiple) File Selector : Directory Manager"
  245.    XIT:
  246. End Proc
  247. Procedure WN1DIR
  248.    On Error Goto ER
  249.    Goto OK
  250.    ER:
  251.    ERR
  252.    Resume XIT
  253.    OK:
  254.    M=0
  255.    RESET1
  256.    N=1
  257.    FF$=DRECTORY1$
  258.    L$(1)=Dir First$(DRECTORY1$)
  259.    Do 
  260.       N=N+1
  261.       L$(N)=Dir Next$
  262.       If L$(N)="" Then N=N-1 : Exit 
  263.    Loop 
  264.    KEEPN=N
  265.    KEEPY1=1
  266.    DRECTORY$=DRECTORY1$
  267.    XIT:
  268. End Proc
  269. Procedure WN2DIR
  270.    On Error Goto ER
  271.    Goto OK
  272.    ER:
  273.    ERR
  274.    Resume XIT
  275.    OK:
  276.    M2=0
  277.    RESET2
  278.    N2=1
  279.    FF$=DRECTORY2$
  280.    L2$(1)=Dir First$(DRECTORY2$)
  281.    Do 
  282.       N2=N2+1
  283.       L2$(N2)=Dir Next$
  284.       If L2$(N2)="" Then N2=N2-1 : Exit 
  285.    Loop 
  286.    KEEPN2=N2
  287.    KEEPY2=1
  288.    DRECTORY$=DRECTORY2$
  289.    XIT:
  290. End Proc
  291. Procedure SELECTOR_WINDOWS
  292.    On Error Goto ER
  293.    Goto OK
  294.    ER:
  295.    ERR
  296.    Resume XIT
  297.    OK:
  298.    KEY=1
  299.    WN1:
  300.    DRECTORY$=DRECTORY1$
  301.    REASYLOOK:
  302.    SOURCE=1
  303.    Autoback 1
  304.    Window 1 : Locate 0,0 : Cline : Pen 1 : Centre "  Source   " : Ink 1 : Box 126,0 To 178,7
  305.    Window 2 : Locate 0,0 : Cline : Pen 2 : Centre "Destination" : Ink 2 : Box 430,0 To 522,7
  306.    Window 1 : Pen 1
  307.    MESSAGE1$=Left$(DRECTORY1$,30)+"..."
  308.    Pen 1 : Locate 0,22 : Cline : Centre MESSAGE1$
  309.    MAKEFSZONES[0]
  310.    If(VIFF=1) and(KEY<>5) Then MAKEFSZONES[31]
  311.    If(VASC=1) and(KEY<>5) Then MAKEFSZONES[35]
  312.    Pen 2
  313.    Autoback 0
  314.    Rem main loop
  315.    Y=KEEPY1
  316.    N=KEEPN
  317.    Do 
  318.       If Key State(95)=True Then HELPSELECTOR
  319.       X=1+Int((N*Y)/170) : KEEPX1=X
  320.       Rem Read mouse 
  321.       If Mouse Zone=1 and Mouse Key Then Y=Y Screen(Y Mouse) : KEEPY1=Y
  322.       For I=2 To 21
  323.          If Mouse Zone=I and Mouse Key and VIFF=1 and X+I-2<N+1 Then M=M+1 : GTFILE[1] : FIFF$=FLE$(M) : SCN : DISPLAYIFF : SCN3 : M=M-1 : KEY=4 : Goto REASYLOOK2
  324.          If Mouse Zone=I and Mouse Key and VASC=1 and X+I-2<N+1 Then M=M+1 : GTFILE[1] : FASC$=FLE$(M) : SCN : DISPLAYASCII : SCN3 : M=M-1 : KEY=4 : Goto REASYLOOK2
  325.          '
  326.          If Mouse Zone=I and Mouse Key and AMOSMUSIC=1 and X+I-2<N+1 Then M=M+1 : GTFILE[1] : AMOSMUSIC$=FLE$(M) : MUZIC$=AMOSMUSIC$ : SOUNDSAMOS : M=M-1 : ZP
  327.          If Mouse Zone=I and Mouse Key and TRACKERMUSIC=1 and X+I-2<N+1 Then M=M+1 : GTFILE[1] : TRACKERMUSIC$=FLE$(M) : MUZIC$=TRACKERMUSIC$ : SOUNDSTRACKER : M=M-1 : ZP
  328.          'If Mouse Zone=I and Mouse Key and MEDMUSIC=1 and X+I-2<N+1 Then M=M+1 : GTFILE[1] : MEDMUSIC$=FLE$(M) : MUZIC$=MEDMUSIC$ : SOUNDSMED : M=M-1 : ZP 
  329.          If Mouse Zone=I and Mouse Key and FFMUSIC=1 and X+I-2<N+1 Then M=M+1 : GTFILE[1] : FFMUSIC$=FLE$(M) : MUZIC$=FFMUSIC$ : SOUNDSIFF["Music"] : M=M-1 : ZP
  330.          If Mouse Zone=I and Mouse Key and RAWMUSIC=1 and X+I-2<N+1 Then M=M+1 : GTFILE[1] : RAWMUSIC$=FLE$(M) : MUZIC$=RAWMUSIC$ : SOUNDSIFF["Music"] : M=M-1 : ZP
  331.          If Mouse Zone=I and Mouse Key and MUZIC=1 and X+I-2<N+1 Then M=M+1 : GTFILE[1] : MUZIC$=FLE$(M) : SOUNDSIFF["Sound"] : M=M-1
  332.          '
  333.          If Mouse Zone=I and Mouse Key and Instr(L$(X+I-2)," ")=1 Then M=M+1 : GTFILE[1] : L$(X+I-2)=">"+Mid$(Str$(M),2)+"<"+L$(X+I-2)
  334.          If Mouse Zone=I and Mouse Key and Instr(L$(X+I-2),"*")=1 Then GTDIREC : DRECTORY1$=DRECTORY$ : RESET1 : WN1DIR : Goto REASYLOOK
  335.       Next I
  336.       If Mouse Zone=22 and Mouse Key Then ZP : MAKEFSZONES[0] : RESET1 : WN1DIR : Goto REASYLOOK
  337.       If Mouse Zone=23 and Mouse Key Then ZP : MAKEFSZONES[0] : Goto WN2
  338.       If Mouse Zone=24 and Mouse Key Then MAKEFSZONES[24] : ZP : DRECTORY$=DRECTORY1$ : GTPAR : DRECTORY1$=DRECTORY$ : RESET1 : WN1DIR : Goto REASYLOOK
  339.       If Mouse Zone=25 and Mouse Key Then MAKEFSZONES[25] : ZP : GTNEWDRECTORY : DRECTORY1$=DRECTORY$ : RESET1 : WN1DIR : Goto REASYLOOK
  340.       If Mouse Zone=26 and Mouse Key Then MAKEFSZONES[26] : ZP : MDIR : MAKEFSZONES[0]
  341.       If Mouse Zone=27 and Mouse Key Then MAKEFSZONES[27] : ZP : ERASDIR : MAKEFSZONES[0]
  342.       If Mouse Zone=28 and Mouse Key Then MAKEFSZONES[28] : ZP : CPYFILES : MAKEFSZONES[0]
  343.       If Mouse Zone=29 and Mouse Key Then MAKEFSZONES[29] : ZP : KLLFILES : MAKEFSZONES[0]
  344.       If Mouse Zone=30 and Mouse Key Then MAKEFSZONES[30] : ZP : RETITLE : MAKEFSZONES[0]
  345.       If(Mouse Zone=31) and(Mouse Key) and(VIFF=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[31] : VIFF=1
  346.       If(Mouse Zone=31) and(Mouse Key) and(VIFF=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  347.       If Mouse Zone=32 and Mouse Key Then MAKEFSZONES[32] : ZP : AUTOVIEW : KEY=4 : Goto REASYLOOK2
  348.       If Mouse Zone=33 and Mouse Key Then While Mouse Key<>0 : Wend : MAKEFSZONES[33] : ZP : MUSI : MAKEFSZONES[0]
  349.       If(Mouse Zone=34) and(Mouse Key) and(MUZIC=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[34] : CLARIFY : MUZIC=1
  350.       If(Mouse Zone=34) and(Mouse Key) and(MUZIC=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  351.       If(Mouse Zone=35) and(Mouse Key) and(VASC=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[35] : VASC=1
  352.       If(Mouse Zone=35) and(Mouse Key) and(VASC=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  353.       If Mouse Zone=36 and Mouse Key Then MAKEFSZONES[36] : ZP : BYFREE : MAKEFSZONES[0]
  354.       If Mouse Zone=41 and Mouse Key Then MAKEFSZONES[41] : ZP : EXTRA : MAKEFSZONES[0]
  355.       If Mouse Zone=42 and Mouse Key Then MAKEFSZONES[42] : ZP : RNFILE : MAKEFSZONES[0]
  356.       If Mouse Zone=43 and Mouse Key Then MAKEFSZONES[43] : ZP : GTCOLOUR : MIX : For III=0 To 3 : FSC(III)=Colour(III) : Next III : NWFSC=1 : CB[0]
  357.       If Mouse Zone=44 and Mouse Key Then MAKEFSZONES[44] : ZP : HELPSELECTOR : MAKEFSZONES[0]
  358.       If Mouse Zone=45 and Mouse Key Then MAKEFSZONES[45] : ZP : SCN : AMOSC : Goto XIT
  359.       X=KEEPX1 : Y=KEEPY1
  360.       If Y>170 Then Y=170
  361.       Rem If slider has moved change it  
  362.       If Y<>YM and Mouse Key=1 : YM=Y : End If 
  363.       Rem Update display 
  364.       For I=1 To 20
  365.          Locate 2,I : Cline 
  366.          If(KEY<>1) and(KEY<>5) Then UD[I+1]
  367.          Print Left$(L$(X+I-1),38);
  368.          Inverse Off 
  369.       Next I
  370.       VSLIDE[Y]
  371.       Rem Double buffering smooths the effect  
  372.       Screen Swap : Wait Vbl 
  373.       For I=1 To 20
  374.          Locate 2,I
  375.          If(KEY<>1) and(KEY<>5) Then UD[I+1]
  376.          Print Left$(L$(X+I-1),38);
  377.          Inverse Off 
  378.       Next I
  379.       VSLIDE[Y]
  380.       If KEY=1 Then Goto WN2
  381.       If KEY=5 Then KEY=0 : Goto WN2
  382.    Loop 
  383.    WN2:
  384.    DRECTORY$=DRECTORY2$
  385.    REASYLOOK2:
  386.    SOURCE=2
  387.    Autoback 1
  388.    Window 1 : Locate 0,0 : Cline : Pen 2 : Centre "Destination" : Ink 2 : Box 110,0 To 202,7
  389.    Window 2 : Locate 0,0 : Cline : Pen 1 : Centre "  Source   " : Ink 1 : Box 446,0 To 498,7
  390.    Window 2 : Pen 2
  391.    MESSAGE1$=Left$(DRECTORY2$,30)+"..."
  392.    Pen 1 : Locate 0,22 : Cline : Centre MESSAGE1$
  393.    MAKEFSZONES[0]
  394.    If(VIFF=1) and(KEY<>4) Then MAKEFSZONES[31]
  395.    If(VASC=1) and(KEY<>4) Then MAKEFSZONES[35]
  396.    Pen 2
  397.    Autoback 0
  398.    Rem main loop
  399.    N2=KEEPN2
  400.    Y=KEEPY2
  401.    Do 
  402.       If Key State(95)=True Then HELPSELECTOR
  403.       X=1+Int((N2*Y)/170) : KEEPX2=X
  404.       Rem Read mouse 
  405.       If Mouse Zone=1 and Mouse Key Then Y=Y Screen(Y Mouse) : KEEPY2=Y
  406.       For I=2 To 21
  407.          If Mouse Zone=I and Mouse Key and VIFF=1 and X+I-2<N2+1 Then M2=M2+1 : GTFILE[2] : FIFF$=FLE2$(M2) : SCN : DISPLAYIFF : SCN3 : M2=M2-1 : KEY=5 : Goto REASYLOOK
  408.          If Mouse Zone=I and Mouse Key and VASC=1 and X+I-2<N2+1 Then M2=M2+1 : GTFILE[2] : FASC$=FLE2$(M2) : SCN : DISPLAYASCII : SCN3 : M2=M2-1 : KEY=5 : Goto REASYLOOK
  409.          '
  410.          If Mouse Zone=I and Mouse Key and AMOSMUSIC=1 and X+I-2<N2+1 Then M2=M2+1 : GTFILE[2] : AMOSMUSIC$=FLE2$(M2) : MUZIC$=AMOSMUSIC$ : SOUNDSAMOS : M2=M2-1 : ZP
  411.          If Mouse Zone=I and Mouse Key and TRACKERMUSIC=1 and X+I-2<N2+1 Then M2=M2+1 : GTFILE[2] : TRACKERMUSIC$=FLE2$(M2) : MUZIC$=TRACKERMUSIC$ : SOUNDSTRACKER : M2=M2-1 : ZP
  412.          'If Mouse Zone=I and Mouse Key and MEDMUSIC=1 and X+I-2<N2+1 Then M2=M2+1 : GTFILE[2] : MEDMUSIC$=FLE2$(M2) : MUZIC$=MEDMUSIC$ : SOUNDSMED : M2=M2-1 : ZP
  413.          If Mouse Zone=I and Mouse Key and FFMUSIC=1 and X+I-2<N2+1 Then M2=M2+1 : GTFILE[2] : FFMUSIC$=FLE2$(M2) : MUZIC$=FFMUSIC$ : SOUNDSIFF["Music"] : M2=M2-1 : ZP
  414.          If Mouse Zone=I and Mouse Key and RAWMUSIC=1 and X+I-2<N2+1 Then M2=M2+1 : GTFILE[2] : RAWMUSIC$=FLE2$(M2) : MUZIC$=RAWMUSIC$ : SOUNDSIFF["Music"] : M2=M2-1 : ZP
  415.          If Mouse Zone=I and Mouse Key and MUZIC=1 and X+I-2<N2+1 Then M2=M2+1 : GTFILE[2] : MUZIC$=FLE2$(M2) : SOUNDSIFF["Sound"] : M2=M2-1
  416.          '
  417.          If Mouse Zone=I and Mouse Key and Instr(L2$(X+I-2)," ")=1 Then M2=M2+1 : GTFILE[2] : L2$(X+I-2)=">"+Mid$(Str$(M2),2)+"<"+L2$(X+I-2)
  418.          If Mouse Zone=I and Mouse Key and Instr(L2$(X+I-2),"*")=1 Then GTDIREC2 : DRECTORY2$=DRECTORY$ : RESET2 : WN2DIR : Goto REASYLOOK2
  419.       Next I
  420.       If Mouse Zone=22 and Mouse Key Then ZP : MAKEFSZONES[0] : Goto WN1
  421.       If Mouse Zone=23 and Mouse Key Then ZP : MAKEFSZONES[0] : RESET2 : WN2DIR : Goto REASYLOOK2
  422.       If Mouse Zone=24 and Mouse Key Then MAKEFSZONES[24] : ZP : GTPAR : DRECTORY2$=DRECTORY$ : RESET2 : WN2DIR : Goto REASYLOOK2
  423.       If Mouse Zone=25 and Mouse Key Then MAKEFSZONES[25] : ZP : GTNEWDRECTORY : DRECTORY2$=DRECTORY$ : RESET2 : WN2DIR : Goto REASYLOOK2
  424.       If Mouse Zone=26 and Mouse Key Then MAKEFSZONES[26] : ZP : MDIR : MAKEFSZONES[0]
  425.       If Mouse Zone=27 and Mouse Key Then MAKEFSZONES[27] : ZP : ERASDIR : MAKEFSZONES[0]
  426.       If Mouse Zone=28 and Mouse Key Then MAKEFSZONES[28] : ZP : CPYFILES : MAKEFSZONES[0]
  427.       If Mouse Zone=29 and Mouse Key Then MAKEFSZONES[29] : ZP : KLLFILES : MAKEFSZONES[0]
  428.       If Mouse Zone=30 and Mouse Key Then MAKEFSZONES[30] : ZP : RETITLE : MAKEFSZONES[0]
  429.       If(Mouse Zone=31) and(Mouse Key) and(VIFF=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[31] : VIFF=1
  430.       If(Mouse Zone=31) and(Mouse Key) and(VIFF=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  431.       If Mouse Zone=32 and Mouse Key Then MAKEFSZONES[32] : ZP : AUTOVIEW : KEY=5 : Goto REASYLOOK
  432.       If Mouse Zone=33 and Mouse Key Then While Mouse Key<>0 : Wend : MAKEFSZONES[33] : ZP : MUSI : MAKEFSZONES[0]
  433.       If(Mouse Zone=34) and(Mouse Key) and(MUZIC=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[34] : CLARIFY : MUZIC=1
  434.       If(Mouse Zone=34) and(Mouse Key) and(MUZIC=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  435.       If(Mouse Zone=35) and(Mouse Key) and(VASC=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[35] : VASC=1
  436.       If(Mouse Zone=35) and(Mouse Key) and(VASC=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  437.       If Mouse Zone=36 and Mouse Key Then MAKEFSZONES[36] : ZP : BYFREE : MAKEFSZONES[0]
  438.       If Mouse Zone=41 and Mouse Key Then MAKEFSZONES[41] : ZP : EXTRA : MAKEFSZONES[0]
  439.       If Mouse Zone=42 and Mouse Key Then MAKEFSZONES[42] : ZP : RNFILE : MAKEFSZONES[0]
  440.       If Mouse Zone=43 and Mouse Key Then MAKEFSZONES[43] : ZP : GTCOLOUR : MIX : For III=0 To 3 : FSC(III)=Colour(III) : Next III : NWFSC=1 : CB[0]
  441.       If Mouse Zone=44 and Mouse Key Then MAKEFSZONES[44] : ZP : HELPSELECTOR : MAKEFSZONES[0]
  442.       If Mouse Zone=45 and Mouse Key Then MAKEFSZONES[45] : ZP : SCN : AMOSC : Goto XIT
  443.       X=KEEPX2 : Y=KEEPY2
  444.       If Y>170 Then Y=170
  445.       Rem If slider has moved change it  
  446.       If Y<>YM and Mouse Key=1 : YM=Y : End If 
  447.       Rem Update display 
  448.       For I=1 To 20
  449.          Locate 2,I : Cline 
  450.          If(KEY<>1) and(KEY<>4) Then UD[I+1]
  451.          Print Left$(L2$(X+I-1),38);
  452.          Inverse Off 
  453.       Next I
  454.       VSLIDE[Y]
  455.       Rem Double buffering smooths the effect  
  456.       Screen Swap : Wait Vbl 
  457.       For I=1 To 20
  458.          Locate 2,I
  459.          If(KEY<>1) and(KEY<>4) Then UD[I+1]
  460.          Print Left$(L2$(X+I-1),38);
  461.          Inverse Off 
  462.       Next I
  463.       VSLIDE[Y]
  464.       If KEY=1 Then KEY=2 : Goto WN1
  465.       If KEY=4 Then KEY=0 : Goto WN1
  466.       XIT9:
  467.    Loop 
  468.    XIT:
  469. End Proc
  470. Procedure MAKEFSZONES[PL]
  471.    Autoback 1
  472.    On Error Goto ER
  473.    Goto OK
  474.    ER:
  475.    ERR
  476.    Resume XIT
  477.    OK:
  478.    MIT$(24)="Parent"
  479.    MIT$(25)="New Directory"
  480.    MIT$(26)="Make Dir"
  481.    MIT$(27)="Erase Dir"
  482.    MIT$(28)="Copy"
  483.    MIT$(29)="Delete /!\"
  484.    MIT$(30)="Rename"
  485.    MIT$(31)="Picture.IFF"
  486.    MIT$(32)="AutoView"
  487.    MIT$(33)="Music"
  488.    MIT$(34)="Sounds"
  489.    MIT$(35)="TextASCII"
  490.    MIT$(36)="Memory"
  491.    MIT$(41)="eXtra"
  492.    MIT$(42)="[Run]   /!\"
  493.    MIT$(43)="Colours"
  494.    MIT$(44)="Help"
  495.    MIT$(45)="End"
  496.    Reserve Zone 
  497.    Reserve Zone 46
  498.    Set Zone 22,112,0 To 200,7
  499.    Set Zone 23,432,0 To 520,7
  500.    Set Zone 1,0,0 To 10,170
  501.    Writing 1
  502.    For I=2 To 21
  503.       Locate 3,I-1
  504.       Print Zone$("           ",I)
  505.    Next I
  506.    Writing 0
  507.    Window 3
  508.    For II=24 To 30
  509.       CL=3
  510.       If II=PL Then CL=1
  511.       PBT[5,(II-24),MIT$(II),II,CL]
  512.    Next II
  513.    For II=31 To 36
  514.       CL=3
  515.       If II=PL Then CL=1
  516.       PBT[21,(II-31),MIT$(II),II,CL]
  517.    Next II
  518.    For II=41 To 45
  519.       CL=3
  520.       If II=PL Then CL=1
  521.       PBT[41,(II-41),MIT$(II),II,CL]
  522.    Next II
  523.    Autoback 0
  524.    Window SOURCE
  525.    Pen 2
  526.    XIT:
  527. End Proc
  528. Procedure VSLIDEFS[Y]
  529.    Set Slider 0,1,3,1,0,3,3,1
  530.    Vslider 0,0 To 10,170,170,Y,5
  531. End Proc
  532. '
  533. Procedure GTFILE[TIPE]
  534.    On Error Goto ER
  535.    Goto OK
  536.    ER:
  537.    ERR
  538.    Resume XIT
  539.    OK:
  540.    Rem Assuming file {L$(X+I-2)} has no 'double-space' !  
  541.    If TIPE=1
  542.       POSN=Instr(L$(X+I-2),"  ")
  543.       LL$=Left$(L$(X+I-2),POSN-1)
  544.    End If 
  545.    If TIPE=2
  546.       POSN=Instr(L2$(X+I-2),"  ")
  547.       LL$=Left$(L2$(X+I-2),POSN-1)
  548.    End If 
  549.    POSN=Instr(LL$," ") : LL$=Mid$(LL$,POSN+1)
  550.    If(TIPE=1) and(Right$(DRECTORY$,1)=":") Then FLE$(M)=DRECTORY$+LL$ : Goto XIT
  551.    If(TIPE=1) and(Right$(DRECTORY$,1)<>":") Then FLE$(M)=DRECTORY$+"/"+LL$ : Goto XIT
  552.    If(TIPE=2) and(Right$(DRECTORY$,1)=":") Then FLE2$(M2)=DRECTORY$+LL$ : Goto XIT
  553.    If(TIPE=2) and(Right$(DRECTORY$,1)<>":") Then FLE2$(M2)=DRECTORY$+"/"+LL$ : Goto XIT
  554.    XIT:
  555. End Proc
  556. Procedure GTDIREC
  557.    On Error Goto ER
  558.    Goto OK
  559.    ER:
  560.    ERR
  561.    Resume XIT
  562.    OK:
  563.    Rem Assuming directory has no 'double space' ! 
  564.    POSN=Instr(L$(X+I-2),"  ")
  565.    If Right$(DRECTORY$,1)=":" Then DRECTORY$=DRECTORY$+Mid$(L$(X+I-2),2,POSN-2) : Goto XIT
  566.    If Right$(DRECTORY$,1)<>":" Then DRECTORY$=DRECTORY$+"/"+Mid$(L$(X+I-2),2,POSN-2)
  567.    XIT:
  568. End Proc
  569. Procedure GTDIREC2
  570.    On Error Goto ER
  571.    Goto OK
  572.    ER:
  573.    ERR
  574.    Resume XIT
  575.    OK:
  576.    Rem Assuming directory has no 'double space' ! 
  577.    POSN=Instr(L2$(X+I-2),"  ")
  578.    If Right$(DRECTORY$,1)=":" Then DRECTORY$=DRECTORY$+Mid$(L2$(X+I-2),2,POSN-2) : Goto XIT
  579.    If Right$(DRECTORY$,1)<>":" Then DRECTORY$=DRECTORY$+"/"+Mid$(L2$(X+I-2),2,POSN-2)
  580.    XIT:
  581. End Proc
  582. Procedure GTPAR
  583.    On Error Goto ER
  584.    Goto OK
  585.    ER:
  586.    ERR
  587.    Resume XIT
  588.    OK:
  589.    If Right$(DRECTORY$,1)=":" Then Goto XIT
  590.    POSION=Instr(Flip$(DRECTORY$),"/")
  591.    POSION2=Instr(Flip$(DRECTORY$),":")
  592.    If POSION<>0 Then DRECTORY$=Left$(DRECTORY$,Len(DRECTORY$)-POSION)
  593.    If POSION=0 Then DRECTORY$=Left$(DRECTORY$,Len(DRECTORY$)-POSION2+1)
  594.    XIT:
  595. End Proc
  596. Procedure GTNEWDRECTORY
  597.    Dim DIT$(11)
  598.    On Error Goto ER
  599.    Goto OK
  600.    ER:
  601.    ERR
  602.    Resume XIT
  603.    OK:
  604.    Screen Open 1,320,56,4,Hires
  605.    Screen Display 1,200,100,320,56
  606.    Curs Off : Cls 1 : Colour 0,$70
  607.    Print : Centre "Select New Directory"
  608.    DIT$(1)="DF0:"
  609.    DIT$(2)="DF1:"
  610.    DIT$(3)="DH0:"
  611.    DIT$(4)="DH1:"
  612.    DIT$(5)="DH2:"
  613.    DIT$(6)="DH3:"
  614.    DIT$(7)="DH4:"
  615.    DIT$(8)="DH5:"
  616.    DIT$(9)="DH6:"
  617.    DIT$(10)="DH7:"
  618.    DIT$(11)="Other"
  619.    Reserve Zone 
  620.    Reserve Zone 11
  621.    Paper 0 : Locate 0,3
  622.    For II=1 To 6
  623.       If Exist(DIT$(II)) Then Cright : Print Zone$(DIT$(II),II);
  624.    Next II
  625.    Locate 0,5
  626.    For II=7 To 10
  627.       If Exist(DIT$(II)) Then Cright : Print Zone$(DIT$(II),II);
  628.    Next II
  629.    Locate 30,5
  630.    Print Zone$(DIT$(11),11)
  631.    Do 
  632.       For I=1 To 10
  633.          If Mouse Zone=I and Mouse Key
  634.             If Exist(DIT$(I))
  635.                DRECTORY$=DIT$(I) : Dir$=DIT$(I) : Goto XIT
  636.             End If 
  637.          End If 
  638.       Next I
  639.       If Mouse Zone=11 and Mouse Key Then Exit 
  640.    Loop 
  641.    Cls 1 : Paper 1 : Home 
  642.    Locate 0,2 : Centre "Directory Change"
  643.    RETRY:
  644.    Locate 0,4 : Input " Enter New Directory ";DRECTORY3$
  645.    If(DRECTORY3$="") or(DRECTORY3$=":") Then Goto XIT
  646.    If Instr(DRECTORY3$,":")=0 Then Cls : Locate 0,1 : Centre "Error - No ':' detected" : Goto RETRY
  647.    If Right$(DRECTORY3$,1)="/" Then DRECTORY3$=Left$(DRECTORY3$,Len(DRECTORY3$)-1)
  648.    If Not Exist(DRECTORY3$) Then Cls : Locate 0,1 : Centre "Directory Not Found" : Goto RETRY
  649.    DRECTORY$=DRECTORY3$
  650.    XIT:
  651.    Screen Close 1
  652. End Proc
  653. Procedure CPYFILES
  654.    On Error Goto ER
  655.    Goto OK
  656.    ER:
  657.    ERR
  658.    Resume XIT
  659.    OK:
  660.    If SOURCE=1
  661.       For III=1 To M
  662.          Erase 6
  663.          F$=FLE$(III)
  664.          ALTERF$
  665.          If Right$(DRECTORY2$,1)=":"
  666.             G$=DRECTORY2$+F$
  667.          End If 
  668.          If Right$(DRECTORY2$,1)<>":"
  669.             G$=DRECTORY2$+"/"+F$
  670.          End If 
  671.          Open In 1,FLE$(III) : LFILE=Lof(1) : Close 1
  672.          Reserve As Work 6,LFILE
  673.          Bload FLE$(III),Start(6)
  674.          Bsave G$,Start(6) To Start(6)+LFILE
  675.       Next III
  676.    End If 
  677.    If SOURCE=2
  678.       For III=1 To M2
  679.          Erase 6
  680.          F$=FLE2$(III)
  681.          ALTERF$
  682.          If Right$(DRECTORY1$,1)=":"
  683.             G$=DRECTORY1$+F$
  684.          End If 
  685.          If Right$(DRECTORY1$,1)<>":"
  686.             G$=DRECTORY1$+"/"+F$
  687.          End If 
  688.          Open In 1,FLE2$(III) : LFILE=Lof(1) : Close 1
  689.          Reserve As Work 6,LFILE
  690.          Bload FLE2$(III),Start(6)
  691.          Bsave G$,Start(6) To Start(6)+LFILE
  692.       Next III
  693.    End If 
  694.    XIT:
  695.    Erase 6
  696. End Proc
  697. Procedure KLLFILES
  698.    On Error Goto ER
  699.    Goto OK
  700.    ER:
  701.    ERR
  702.    Resume XIT
  703.    OK:
  704.    Screen Open 1,320,48,4,Hires
  705.    Screen Display 1,200,100,320,48
  706.    Curs Off : Cls 1 : Flash Off : Colour 3,$FF0
  707.    Print : Centre "/!\ All Marked Files Will be Deleted /!\"
  708.    Print : Print 
  709.    Reserve Zone 
  710.    Reserve Zone 2
  711.    Pen 3
  712.    Locate 10,3 : Print Border$(Zone$("Confirm",1),1)
  713.    Locate 25,3 : Print Border$(Zone$("Cancel",2),1)
  714.    Do 
  715.       If Mouse Zone=2 and Mouse Key Then Screen Close 1 : Goto XIT
  716.       If Mouse Zone=1 and Mouse Key Then Screen Close 1 : Exit 
  717.    Loop 
  718.    If SOURCE=1
  719.       For III=1 To M
  720.          Kill FLE$(III)
  721.       Next III
  722.    End If 
  723.    If SOURCE=2
  724.       For III=1 To M2
  725.          Kill FLE2$(III)
  726.       Next III
  727.    End If 
  728.    XIT:
  729. End Proc
  730. Procedure RETITLE
  731.    On Error Goto ER
  732.    Goto OK
  733.    ER:
  734.    ERR
  735.    Resume XIT
  736.    OK:
  737.    FG$=FF$
  738.    Dir$=FF$
  739.    RETIT:
  740.    FILESELECTQZ[FG$,"SWITCH"," Select File to Retitle"," Quit to Leave "]
  741.    If F$="" Then Goto XIT
  742.    '
  743.    Rem Temp Dir Change
  744.    FG$=Flip$(Dir$)
  745.    If Instr(FG$,"/")<>0
  746.       FG$=Mid$(FG$,Instr(FG$,"/")) : FG$=Flip$(FG$) : Goto OK2
  747.    End If 
  748.    If Instr(FG$,":")<>0
  749.       FG$=Mid$(FG$,Instr(FG$,":")) : FG$=Flip$(FG$) : Goto OK2
  750.    End If 
  751.    OK2:
  752.    '
  753.    L=Len(F$)
  754.    If L<=28 Then A$=" ReName: "+F$
  755.    If L>28 Then A$=" ReName: ... "+Right$(F$,25)
  756.    KEEPKEEPF$=F$
  757.    FILESELECTQZ[FG$,"SWITCH",A$," as . . ."]
  758.    G$=F$
  759.    F$=KEEPKEEPF$
  760.    If G$="" Then Goto XIT
  761.    Rename F$ To G$
  762.    Goto RETIT
  763.    XIT:
  764.    Curs Off 
  765. End Proc
  766. Procedure RNFILE
  767.    On Error Goto ER
  768.    Goto OK
  769.    ER:
  770.    ERR
  771.    Resume XIT
  772.    OK:
  773.    Screen Open 1,320,48,4,Hires
  774.    Screen Display 1,200,100,320,48
  775.    Curs Off : Cls 1 : Flash Off : Colour 3,$FF0
  776.    Centre "/!\ Current Program will be Lost /!\"
  777.    Print : Centre "FOR COMPILED AMOS PROGRAMS"
  778.    Print : Centre "Eg ScrapBook,NoteBook,Evaluator"
  779.    Reserve Zone 
  780.    Reserve Zone 2
  781.    Pen 3
  782.    Locate 10,4 : Print Border$(Zone$("Confirm",1),1)
  783.    Locate 25,4 : Print Border$(Zone$("Cancel",2),1)
  784.    Do 
  785.       If Mouse Zone=2 and Mouse Key Then Screen Close 1 : Goto XIT
  786.       If Mouse Zone=1 and Mouse Key Then Screen Close 1 : Exit 
  787.    Loop 
  788.    FILESELECTQZ[DRECTORY$,"SWITCH","Select New Program",""]
  789.    If F$="" Then Goto XIT
  790.    Run F$
  791.    Wait 50
  792.    XIT:
  793. End Proc
  794. Procedure BYFREE
  795.    Clear Key 
  796.    On Error Goto ER
  797.    Goto OK
  798.    ER:
  799.    ERR
  800.    Resume XIT
  801.    OK:
  802.    Screen Open 1,320,48,4,Hires
  803.    Screen Display 1,200,100,320,48
  804.    Curs Off : Cls 1
  805.    KEEPDIR$=Dir$
  806.    If SOURCE=0 Then Dir$=FF$
  807.    If SOURCE=1 Then Dir$=DRECTORY1$
  808.    If SOURCE=2 Then Dir$=DRECTORY2$
  809.    Print : Centre " Free Memory (bytes) "
  810.    Print : Print : Centre " Disk "+Str$(Dfree)
  811.    Print : Centre "{"+"Chip:"+Str$(Chip Free)+"   "+"Fast:"+Str$(Fast Free)+"}"
  812.    Wait 50
  813.    Do : Exit If Mouse Key=1 : Loop 
  814.    Screen Close 1
  815.    Dir$=KEEPDIR$
  816.    XIT:
  817. End Proc
  818. Procedure DISPLAYIFF
  819.    On Error Goto ER
  820.    Goto OK
  821.    ER:
  822.    ERR
  823.    Resume XIT
  824.    OK:
  825.    If Exist(FIFF$) Then Load Iff FIFF$,0 : CB[0] : Goto OK2
  826.    Cls 0
  827.    Locate 0,8 : Centre "File"
  828.    Locate 0,10 : Centre FIFF$
  829.    Print : Print : Centre "does not exist"
  830.    Wait 50
  831.    While Mouse Key<>1 : Wend 
  832.    Goto XIT
  833.    OK2:
  834.    PCL=0
  835.    Pen PCL
  836.    CHANGEPEN[1,0]
  837.    BEGINNINGS:
  838.    Menu Del 
  839.    Menu$(1)=" Options "
  840.    Menu$(1,1)=" Print Screen "
  841.    Menu$(1,2)=" Exit "
  842.    Menu$(1,3)="  [(LO24,0)(SS6)A(LO36,0)(SS0)A]><Prefs "
  843.    Do 
  844.       KK$=""
  845.       Menu Off 
  846.       Menu On 
  847.       While KK$="" and Mouse Key<>1 and Choice<>-1
  848.          KK$=Inkey$
  849.          If Key State(37) Then Hide On : While Key State(37) : Wend : Clear Key : Wait 50 : While(Inkey$="") and(Mouse Key=0) and(Key Shift=0) : Wend : While Scancode=37 : Clear Key : Wait 9 : Wend : Show On 
  850.       Wend 
  851.       If Mouse Key=1 Then Exit 
  852.       If KK$<>"" Then Goto NCH
  853.       If Choice(1)=1 and Choice(2)=1 Then PRNTOUT[0]
  854.       If Choice(1)=1 and Choice(2)=2 Then Exit 
  855.       NCH:
  856.       S=Scancode
  857.       CN=Screen Colour
  858.       If Key State(95) Then HELPSELECTOR : Goto BEGINNINGS
  859.       If Key State(90) Then PCL=(PCL+1) mod CN : Pen PCL : Goto BEGINNINGS
  860.       If Key State(82) Then PCL=(PCL+1) mod CN : Pen PCL : Goto BEGINNINGS
  861.       If Key State(24) Then PCL=(PCL+1) mod CN : Pen PCL : Goto BEGINNINGS
  862.       If Key State(93) Then PRNTOUT[0] : Goto BEGINNINGS
  863.       If Key State(80) Then PRNTOUT[0] : Goto BEGINNINGS
  864.       If S=29 Then Exit 
  865.       If S=93 Then PRNTOUT[0]
  866.    Loop 
  867.    XIT:
  868.    SCN
  869. End Proc
  870. Procedure CHANGEPEN[XPAP,YPEN]
  871.    A=Colour(XPAP)
  872.    D=0
  873.    SC=Screen Colour
  874.    If SC=4096 Then SC=16
  875.    For I=0 To SC-1
  876.       B=Colour(I)
  877.       A1=A mod 16 : A2=(A mod 256)/16 : A3=A/256
  878.       B1=B mod 16 : B2=(B mod 256)/16 : B3=B/256
  879.       C=Abs(B1-A1)+Abs(B2-A2)+Abs(B3-A3)
  880.       If C>D
  881.          D=C
  882.          IS=I
  883.       End If 
  884.    Next I
  885.    PCL=IS : KEEPPEN=IS : Pen IS
  886.    Ink IS : KEEPINK=IS
  887.    Paper XPAP : KEEPPAPER=XPAP
  888. End Proc
  889. Procedure DISPLAYASCII
  890.    TALKIN=0
  891.    On Error Goto ER
  892.    Goto OK
  893.    ER:
  894.    TALKING=0
  895.    ERR
  896.    Resume XIT
  897.    OK:
  898.    If Exist(FASC$) Then Goto OK2
  899.    Cls 0
  900.    Locate 0,8 : Centre "File"
  901.    Locate 0,10 : Centre FASC$
  902.    Print : Print : Centre "does not exist"
  903.    Wait 50
  904.    While Mouse Key<>1 : Wend 
  905.    Goto XIT
  906.    OK2:
  907.    Screen Open 0,640,256,2,Hires
  908.    Colour 0,0 : Colour 1,$FF0
  909.    If NWFSC=1 Then For III=0 To 1 : Colour III,FSC(III) : Next III
  910.    Flash Off : Curs Off : Paper 0 : Cls 0
  911.    Wait 25
  912.    While Mouse Key<>0 : Wend 
  913.    TLK:
  914.    Cls 0
  915.    Open In 1,FASC$
  916.    If Lof(1)>=16 Then A$=Input$(1,16) : If(Mid$(A$,1,13)="*NB*NB*NB*NB*") Then Pof(1)=16 : LFILE=Lof(1)-16 : Goto OK3
  917.    Pof(1)=0
  918.    If Lof(1)>=13 Then A$=Input$(1,13) : If(Mid$(A$,1,10)="*NB*NB*NB*") Then Pof(1)=13 : LFILE=Lof(1)-13 : Goto OK3
  919.    Pof(1)=0 : LFILE=Lof(1)
  920.    OK3:
  921.    COUNTMAX=LFILE/400
  922.    COUNT=0
  923.    While Mouse Key<>0 : Wend 
  924.    COUNTMKR=0
  925.    Do 
  926.       If COUNTMKR=1 Then COUNTMKR=0 : Exit 
  927.       COUNT=COUNT+1
  928.       LREM=400
  929.       If COUNT>COUNTMAX Then LREM=LFILE-400*COUNTMAX : COUNTMKR=1
  930.       A$=Input$(1,LREM)
  931.       For I=1 To LREM
  932.          If Asc(Mid$(A$,I,1))=10 Then Print Chr$(10);Chr$(13); : Goto XX
  933.          If Asc(Mid$(A$,I,1))<=31 Then Goto XX
  934.          If(X Curs>70) and(Mid$(A$,I,1)=" ") and(Instr(Mid$(A$,I+1,80-X Curs)," ")=0) Then Print Chr$(10);Chr$(13); : Goto XX
  935.          If(X Curs=0) and(Mid$(A$,I,1)=" ") and(Mid$(A$,I+1,1)<>" ") Then Goto XX
  936.          Print Mid$(A$,I,1);
  937.          If TALKING=1 Then SY$=SY$+Mid$(A$,I,1)
  938.          XX:
  939.          If Y Curs>30 Then While Mouse Key<>1 : Wend : While Mouse Key<>0 : Wend : For J=1 To 27 : Print : Next J : Cmove 0,-27
  940.       Next I
  941.       If TALKING=1 Then Say SY$ : SY$=""
  942.       Clear Key 
  943.       While Mouse Key=0
  944.          If Key State(95)=True Then HELPSELECTOR
  945.       Wend 
  946.       If Mouse Key=2 Then Exit 
  947.    Loop 
  948.    Close 1
  949.    Wait 50
  950.    Print : Print : Centre "!!! End !!!"
  951.    Print : Centre "( Right Mouse - Menu : Left Mouse - Exit )"
  952.    Wait 50
  953.    BEGINNINGS:
  954.    Pen 1 : Paper 0
  955.    Menu Del 
  956.    Menu$(1)=" Options "
  957.    Menu$(1,1)=" Print "
  958.    '''''''''''''''''''''''''''''' 
  959.    On Error Goto ERSAY
  960.    Goto OKSAY
  961.    ERSAY:
  962.    Resume NOSAY
  963.    OKSAY:
  964.    Set Talk ,,,
  965.    Menu$(1,2)=" Say "
  966.    NOSAY:
  967.    '''''''''''''''''''''''''''''
  968.    '   Menu$(1,2)=" Say " 
  969.    Menu$(1,3)=" End "
  970.    Do 
  971.       TALKING=0
  972.       KK$=""
  973.       Menu Off 
  974.       Menu On 
  975.       While Mouse Key<>1 and Choice<>-1
  976.       Wend 
  977.       If Mouse Key=1 Then Exit 
  978.       If KK$<>"" Then Goto NCH
  979.       If Choice(1)=1 and Choice(2)=1 Then PRASC
  980.       If Choice(1)=1 and Choice(2)=2 Then TALK
  981.       If TALKING=1 Then Home : Goto TLK
  982.       If Choice(1)=1 and Choice(2)=3 Then Exit 
  983.       NCH:
  984.    Loop 
  985.    XIT:
  986. End Proc
  987. Procedure AUTOVIEW
  988.    On Error Goto ER
  989.    Goto OK
  990.    ER:
  991.    ERR
  992.    Resume XIT
  993.    OK:
  994.    Screen Open 1,320,48,4,Hires
  995.    Screen Display 1,200,100,320,48
  996.    Curs Off : Cls 1 : Flash Off : Colour 3,$FF0 : Colour 2,$A
  997.    Reserve Zone 
  998.    Reserve Zone 5
  999.    Pen 3
  1000.    Print : Centre "Time"
  1001.    MN#=0 : SE#=30
  1002.    Do 
  1003.       Paper 1 : Locate 2,3 : Print "Mins";
  1004.       Paper 2 : Locate 7,3 : Print MN#;" ";
  1005.       Locate 12,3 : Print Zone$(Chr$(147)+Chr$(148),1);
  1006.       Locate 18,3 : Print Zone$(Chr$(149)+Chr$(150),2);
  1007.       Paper 1 : Locate 2,4 : Print "Secs";
  1008.       Paper 2 : Locate 7,4 : Print SE#;" ";
  1009.       Locate 12,4 : Print Zone$(Chr$(147)+Chr$(148),3);
  1010.       Locate 18,4 : Print Zone$(Chr$(149)+Chr$(150),4);
  1011.       Locate 25,4 : Print Zone$("Exit",5);
  1012.       If Mouse Zone=1 and Mouse Key Then MN#=MN#+1 : Wait 10 : If MN#>60 Then MN#=60
  1013.       If Mouse Zone=2 and Mouse Key Then MN#=MN#-1 : Wait 10 : If MN#<0 Then MN#=0
  1014.       If Mouse Zone=3 and Mouse Key Then SE#=SE#+1 : Wait 10 : If SE#>60 Then SE#=60
  1015.       If Mouse Zone=4 and Mouse Key Then SE#=SE#-1 : Wait 10 : If SE#<0 Then SE#=0
  1016.       If Mouse Zone=5 and Mouse Key Then Exit 
  1017.    Loop 
  1018.    WT#=SE#*50+MN#*60*50
  1019.    WT=1+Int(WT#)
  1020.    Screen Close 1
  1021.    SCN
  1022.    Do 
  1023.       If SOURCE=1
  1024.          H=0
  1025.          For III=1 To M
  1026.             Load Iff FLE$(III),0
  1027.             For IJ=1 To WT
  1028.                Wait Vbl 
  1029.                If Mouse Key=1 : Goto XIT : End If 
  1030.                KH$=Inkey$
  1031.                If(KH$="H") or(KH$="h")
  1032.                   H=H+1
  1033.                   If H mod 2=1
  1034.                      Hide 
  1035.                   Else Show 
  1036.                   End If 
  1037.                   While Inkey$<>"" : Wend : Clear Key 
  1038.                End If 
  1039.             Next IJ
  1040.          Next III
  1041.       End If 
  1042.       If SOURCE=2
  1043.          H=0
  1044.          For III=1 To M2
  1045.             Load Iff FLE2$(III),0
  1046.             For IJ=1 To WT
  1047.                Wait Vbl 
  1048.                If Mouse Key=1 : Goto XIT : End If 
  1049.                KH$=Inkey$
  1050.                If(KH$="H") or(KH$="h")
  1051.                   H=H+1
  1052.                   If H mod 2=1
  1053.                      Hide 
  1054.                   Else Show 
  1055.                   End If 
  1056.                   While Inkey$<>"" : Wend : Clear Key 
  1057.                End If 
  1058.             Next IJ
  1059.          Next III
  1060.       End If 
  1061.    Loop 
  1062.    XIT:
  1063.    Clear Key 
  1064.    Show 
  1065.    SCN3
  1066. End Proc
  1067. '
  1068. Procedure MUSI
  1069.    MM=MM+1
  1070.    If(MM mod 2)<>1
  1071.       Music Off : Track Stop : Erase 3 : Erase 7
  1072.       Goto XIT
  1073.    End If 
  1074.    On Error Goto ER
  1075.    Goto OK
  1076.    ER:
  1077.    ERR
  1078.    Resume XIT
  1079.    OK:
  1080.    Screen Open 1,320,48,4,Hires
  1081.    Screen Display 1,200,100,320,48
  1082.    Curs Off : Cls 1 : Colour 0,$77
  1083.    Print : Centre "*** Music ***"
  1084.    Reserve Zone 
  1085.    Reserve Zone 6
  1086.    Paper 0
  1087.    Locate 1,3 : Print Zone$("Amos",1)
  1088.    Locate 7,3 : Print Zone$("Tracker",2)
  1089.    Rem Locate 16,3 : Print Zone$("Med",3) 
  1090.    Locate 21,3 : Print Zone$("IFF",4)
  1091.    Locate 26,3 : Print Zone$("Raw",5)
  1092.    Locate 33,3 : Print Zone$("Quit",6)
  1093.    Do 
  1094.       If Mouse Zone=1 and Mouse Key Then AMOSMUSIC=1 : Exit 
  1095.       If Mouse Zone=2 and Mouse Key Then TRACKERMUSIC=1 : Exit 
  1096.       If Mouse Zone=3 and Mouse Key Then MEDMUSIC=1 : Exit 
  1097.       If Mouse Zone=4 and Mouse Key Then FFMUSIC=1 : Exit 
  1098.       If Mouse Zone=5 and Mouse Key Then RAWMUSIC=1 : Exit 
  1099.       If Mouse Zone=6 and Mouse Key Then Exit 
  1100.    Loop 
  1101.    Screen Close 1
  1102.    XIT:
  1103. End Proc
  1104. Procedure SOUNDSAMOS
  1105.    On Error Goto ER
  1106.    Goto OK
  1107.    ER:
  1108.    ERR
  1109.    Resume XIT
  1110.    OK:
  1111.    Screen Open 1,320,64,4,Hires
  1112.    Screen Display 1,200,100,320,64
  1113.    Curs Off : Cls 1 : Colour 0,$77
  1114.    Paper 0
  1115.    Locate 0,3 : Centre "AMOS Music Player"
  1116.    On Error Goto ER2
  1117.    Goto OK2
  1118.    ER2:
  1119.    Erase 3
  1120.    Screen Close 1
  1121.    CLEAN_UP
  1122.    ERR
  1123.    Resume XIT
  1124.    OK2:
  1125.    Load MUZIC$
  1126.    Music 1
  1127.    Cls 1 : Home 
  1128.    Paper 1 : Locate 0,2 : Centre "Keep Parameters ?"
  1129.    Reserve Zone 
  1130.    Reserve Zone 2
  1131.    Paper 0
  1132.    Locate 13,4 : Print Zone$("Yes",1)
  1133.    Locate 24,4 : Print Zone$("No",2)
  1134.    Do 
  1135.       If Mouse Zone=1 and Mouse Key Then Goto XIT2
  1136.       If Mouse Zone=2 and Mouse Key Then Goto MPRMS
  1137.    Loop 
  1138.    MPRMS:
  1139.    Paper 1 : Cls : Home : Print : Centre "Sound & Music"
  1140.    Print : Centre "To Keep Parameters Press [Enter]"
  1141.    Print : Input " Tempo 1-100 ? ";SS
  1142.    If(SS>=1) and(SS<=100)
  1143.       Tempo SS
  1144.    End If 
  1145.    Input " Volume 1-63 ? ";VV
  1146.    If(VV>=1) and(VV<=63)
  1147.       Mvolume VV
  1148.    End If 
  1149.    Clear Key 
  1150.    Print : Input " OK (y/n) ? ";O$
  1151.    If(O$="Y") or(O$="y") or(O$="")
  1152.       Goto XIT2
  1153.    End If 
  1154.    Goto MPRMS
  1155.    XIT2:
  1156.    Screen Close 1
  1157.    XIT:
  1158. End Proc
  1159. Procedure SOUNDSTRACKER
  1160.    On Error Goto ER
  1161.    Goto OK
  1162.    ER:
  1163.    ERR
  1164.    Resume XIT
  1165.    OK:
  1166.    Screen Open 1,320,64,4,Hires
  1167.    Screen Display 1,200,100,320,64
  1168.    Curs Off : Cls 1 : Colour 0,$77
  1169.    Paper 0
  1170.    Locate 0,3 : Centre "Tracker Music Player"
  1171.    On Error Goto ER2
  1172.    Goto OK2
  1173.    ER2:
  1174.    Erase 3
  1175.    Screen Close 1
  1176.    CLEAN_UP
  1177.    ERR
  1178.    Resume XIT
  1179.    OK2:
  1180.    Track Loop On 
  1181.    Track Load MUZIC$,3
  1182.    Track Play 3
  1183.    Wait 200
  1184.    Screen Close 1
  1185.    XIT:
  1186. End Proc
  1187. '
  1188. Procedure CLARIFY
  1189.    On Error Goto ER
  1190.    Goto OK
  1191.    ER:
  1192.    ERR
  1193.    Resume XIT
  1194.    OK:
  1195.    Screen Open 1,320,48,4,Hires
  1196.    Screen Display 1,200,100,320,48
  1197.    Curs Off : Cls : Colour 0,$77
  1198.    Cls 1 : Music Off : Track Stop : Erase 3 : MM=0 : Erase 7 : CLEAN_UP
  1199.    Paper 0
  1200.    Print : Print : Centre "RAW / IFF Sound Player"
  1201.    Wait 100
  1202.    Screen Close 1
  1203.    XIT:
  1204. End Proc
  1205. Procedure SOUNDSIFF[TIPE$]
  1206.    On Error Goto ER
  1207.    Goto OK
  1208.    ER:
  1209.    ERR
  1210.    Resume XIT
  1211.    OK:
  1212.    Screen Open 1,320,64,4,Hires
  1213.    Screen Display 1,200,100,320,64
  1214.    Curs Off : Cls 1 : Colour 0,$77
  1215.    If TIPE$="Sound" Then MM=0
  1216.    Music Off : Track Stop : Erase 3 : Erase 7
  1217.    Paper 0
  1218.    Locate 0,3 : Centre "RAW / IFF "+TIPE$+" Player"
  1219.    On Error Goto ER2
  1220.    Goto OK2
  1221.    ER2:
  1222.    Screen Close 1
  1223.    ERR
  1224.    Resume XIT
  1225.    OK2:
  1226.    Open In 1,MUZIC$
  1227.    LMUSF=Lof(1)
  1228.    Close 1
  1229.    CLEAN_UP
  1230.    If Chip Free<LMUSF-10000 Then Screen Close 1 : ERR : Goto XIT
  1231.    Reserve As Chip Work 7,LMUSF
  1232.    Bload MUZIC$,Start(7)
  1233.    FIRST=Hunt(Start(7) To Start(7)+50,"FORM")
  1234.    If FIRST=Start(7) Then FQ=Deek(Start(7)+32)
  1235.    If(FQ<3000) or(FQ>50000) Then ERR : FQ=12000
  1236.    Sam Loop On 
  1237.    Volume VL
  1238.    VC=0 : For I=1 To 4 : VC=VC+Instr("1",Mid$(VC$,I,1))*2^(4-I) : Next I
  1239.    Sam Raw VC,Start(7),Length(7),FQ
  1240.    Paper 1 : Cls 1 : Home 
  1241.    If FIRST=Start(7) Then Locate 0,1 : Centre "IFF"
  1242.    If FIRST<>Start(7) Then Locate 0,1 : Centre "RAW"
  1243.    Locate 0,2 : Centre "Keep Parameters ?"
  1244.    Paper 0
  1245.    Reserve Zone 
  1246.    Reserve Zone 2
  1247.    Paper 0
  1248.    Locate 13,4 : Print Zone$("Yes",1)
  1249.    Locate 24,4 : Print Zone$("No",2)
  1250.    Do 
  1251.       If Mouse Zone=1 and Mouse Key Then Screen Close 1 : Goto XIT
  1252.       If Mouse Zone=2 and Mouse Key Then Goto GPRMS
  1253.    Loop 
  1254.    GPRMS:
  1255.    R$="y"
  1256.    '
  1257.    On Error Goto ER1
  1258.    Goto PRMS
  1259.    ER1:
  1260.    Screen Hide 1
  1261.    ERR
  1262.    Screen Show 1
  1263.    VLL=VL : VCC$=VC$ : FQQ=FQ
  1264.    Volume VLL
  1265.    Sam Raw VCC,Start(7),Length(7),FQQ
  1266.    Resume PRMS
  1267.    '
  1268.    PRMS:
  1269.    Paper 1 : Cls 1 : Home 
  1270.    If FIRST=Start(7) Then Centre "Iff Sound & Music"
  1271.    If FIRST<>Start(7) Then Centre "Raw Sound & Music"
  1272.    Print : Print " Volume ";VL; : Input " : Requd 1-63 ";VLL
  1273.    If(VLL<=0) or(VLL>=64) Then VLL=VL
  1274.    Print " Voices ";VC$; : Input " : Requd LRLR 0,1 ";VCC$
  1275.    If Len(VCC$)<>4 Then VCC$=VC$
  1276.    If Instr(VCC$,"1")=0 Then VCC$=VC$
  1277.    For I=1 To 4 : If Instr("01",Mid$(VCC$,I,1))=0 Then VCC$=VC$ : Next I
  1278.    Print " Rate ";FQ; : Input " : Requd 3000-50000 ";FQQ
  1279.    If(FQQ<3000) or(FQQ>50000) Then FQQ=FQ
  1280.    Print " Repeat ";R$; : Input " : Requd y/n ? ";RR$
  1281.    If(RR$="y") or(RR$="Y") Then Sam Loop On : R$="y"
  1282.    If(RR$="n") or(RR$="N") Then Sam Loop Off : R$="n"
  1283.    Volume VLL
  1284.    Music Off : Track Stop 
  1285.    VCC=0 : For I=1 To 4 : VCC=VCC+Instr("1",Mid$(VCC$,I,1))*2^(4-I) : Next I
  1286.    Sam Raw VCC,Start(7),Length(7),FQQ
  1287.    VL=VLL : VC$=VCC$ : FQ=FQQ
  1288.    Print : Input " OK (y/n) ? ";O$
  1289.    If(O$="Y") or(O$="y") or(O$="") Then Screen Close 1 : Goto XIT
  1290.    Goto PRMS
  1291.    XIT:
  1292. End Proc
  1293. Procedure CLEAN_UP
  1294.    On Error Goto ER
  1295.    Goto OK
  1296.    ER:
  1297.    Resume OK2
  1298.    OK:
  1299.    Reserve As Chip Data 10,1000000000
  1300.    OK2:
  1301.    On Error Goto ER3
  1302.    Goto OK3
  1303.    ER3:
  1304.    Resume OK4
  1305.    OK3:
  1306.    Reserve As Data 10,1000000000
  1307.    OK4:
  1308. End Proc
  1309. '
  1310. Procedure PRASC
  1311.    Open In 1,FASC$
  1312.    Open Port 2,"PRT:"
  1313.    If Lof(1)>=16 Then A$=Input$(1,16) : If(Mid$(A$,1,13)="*NB*NB*NB*NB*") Then Pof(1)=16 : LFILE=Lof(1)-16 : Goto OK3
  1314.    Pof(1)=0
  1315.    If Lof(1)>=13 Then A$=Input$(1,13) : If(Mid$(A$,1,10)="*NB*NB*NB*") Then Pof(1)=13 : LFILE=Lof(1)-13 : Goto OK3
  1316.    Pof(1)=0 : LFILE=Lof(1)
  1317.    OK3:
  1318.    COUNTMAX=LFILE/400
  1319.    COUNT=0
  1320.    While Mouse Key<>0 : Wend 
  1321.    COUNTMKR=0
  1322.    Do 
  1323.       If COUNTMKR=1 Then COUNTMKR=0 : Exit 
  1324.       COUNT=COUNT+1
  1325.       LREM=400
  1326.       If COUNT>COUNTMAX Then LREM=LFILE-400*COUNTMAX : COUNTMKR=1
  1327.       A$=Input$(1,LREM)
  1328.       For I=1 To LREM
  1329.          If Asc(Mid$(A$,I,1))=10 Then Print #2,Chr$(10);Chr$(13); : Goto XX
  1330.          If Asc(Mid$(A$,I,1))<=31 Then Goto XX
  1331.          If(X Curs>70) and(Mid$(A$,I,1)=" ") and(Instr(Mid$(A$,I+1,80-X Curs)," ")=0) Then Print #2,Chr$(10);Chr$(13); : Goto XX
  1332.          If(X Curs=0) and(Mid$(A$,I,1)=" ") and(Mid$(A$,I+1,1)<>" ") Then Goto XX
  1333.          Print #2,Mid$(A$,I,1);
  1334.          XX:
  1335.       Next I
  1336.    Loop 
  1337.    Close 1
  1338.    Close 2
  1339.    XIT:
  1340. End Proc
  1341. Procedure TALK
  1342.    TALKING=0
  1343.    Clear Key 
  1344.    On Error Goto ER
  1345.    Goto OK
  1346.    ER:
  1347.    TALKING=0
  1348.    ERR
  1349.    Resume XIT
  1350.    OK:
  1351.    Screen Open 1,320,56,4,Hires
  1352.    Screen Display 1,200,100,320,56
  1353.    Curs Off : Cls 1
  1354.    Print : Centre "Enter TALK parameters"
  1355.    Print 
  1356.    Input "Sex Male(0)  Female(1)  ";S1
  1357.    Input "Mode Normal(0)  Rythmic(1) ";S2
  1358.    Input "Pitch Low(65) -  High(320)  ";S3
  1359.    Input "Speed Words/Minute 40 - 400 ";S4
  1360.    Curs Off 
  1361.    Screen Close 1
  1362.    If(S1<>0) and(S1<>1) Then S1=0
  1363.    If(S2<>0) and(S2<>1) Then S2=0
  1364.    If(S3>320) or(S3<65) Then S3=150
  1365.    If(S4<40) or(S4>400) Then S4=150
  1366.    Set Talk S1,S2,S3,S4
  1367.    TALKING=1
  1368.    XIT:
  1369. End Proc
  1370. Procedure SECSGET
  1371.    On Error Goto ER
  1372.    Goto OK
  1373.    ER:
  1374.    ERR
  1375.    Resume XIT
  1376.    OK:
  1377.    Screen Open 2,320,56,4,Hires
  1378.    Screen Display 2,200,100,320,56
  1379.    Curs Off : Cls 1 : Flash Off : Colour 3,$F
  1380.    Print : Centre "Select Time (Seconds)"
  1381.    Reserve Zone 13
  1382.    Pen 2 : Paper 3
  1383.    For IV=1 To 12
  1384.       Locate 3*IV,3 : Print Zone$(Str$(IV*5)-" ",IV);
  1385.    Next IV
  1386.    Locate 3*6,5 : Print Zone$("Other",13);
  1387.    Do 
  1388.       MZ=Mouse Zone
  1389.       If(Mouse Key=1) and(MZ>=1) and(MZ<=13) Then Exit 
  1390.    Loop 
  1391.    SECS=MZ*5
  1392.    If MZ=13
  1393.       RETRY:
  1394.       Paper 1 : Cls : Locate 5,3 : Input "Seconds : ";SECS
  1395.       If SECS<=0 : Goto RETRY : End If 
  1396.    End If 
  1397.    Cls : Screen Close 2 : Screen 0
  1398.    While Mouse Key<>0 : Wend 
  1399.    XIT:
  1400. End Proc
  1401. Procedure ERRTIMED
  1402.    On Error Goto ER
  1403.    Goto OK
  1404.    ER:
  1405.    Resume XIT
  1406.    OK:
  1407.    Screen Open 3,320,56,4,Hires
  1408.    Screen Display 3,200,100,320,56
  1409.    Curs Off : Cls 1
  1410.    Print : Centre "Error - Out of Memory/Range?"
  1411.    Print : Print : Centre "Press Left Mouse Key"
  1412.    Print : Centre "once-Continue twice-Selector"
  1413.    Print : Centre "or wait 5 minutes"
  1414.    Wait 50 : TIMED=0
  1415.    Do : Wait 25 : TIMED=TIMED+1 : Exit If(Mouse Key=1) or(TIMED=600) : Loop 
  1416.    Screen Close 3
  1417.    XIT:
  1418. End Proc
  1419. '
  1420. Procedure PRNTOUT[SCR]
  1421.    On Error Goto ER
  1422.    Goto OK
  1423.    ER:
  1424.    ERR
  1425.    Resume XIT
  1426.    OK:
  1427.    SO=Screen
  1428.    Screen SCR
  1429.    Screen Show SCR
  1430.    SBSE=Screen Base+72
  1431.    VM=Deek(SBSE) : DEPTH=Deek(SBSE+8) : SW=Screen Width : SH=Screen Height
  1432.    '''''''''''''''''''''''''''''''''''''''''''''''''''''
  1433.    Screen Open 5,320,48,4,Hires
  1434.    Screen Display 5,200,100,320,48
  1435.    Curs Off : Cls 1 : Flash Off : Colour 3,$FF0
  1436.    Print : Centre "Select"
  1437.    Reserve Zone 
  1438.    Reserve Zone 4
  1439.    '   Pen 3 : Locate 0,2 : Centre "Mem: Chip "+Str$(Chip Free)+" Fast "+Str$(Fast Free)
  1440.    '   Locate 0,3 : Centre " Screen "+Str$(DEPTH*SW*SH/8) 
  1441.    '   If Chip Free<((DEPTH*SW*SH/2)+10000) Then Close 5 : ERR : Goto XIT 
  1442.    Pen 3 : Paper 0
  1443.    Set Zone 1,0,0 To 150,6 : Ink 2 : Box 1,1 To 150,3
  1444.    Locate 7,4 : Print Zone$("All",2)
  1445.    Locate 17,4 : Print Zone$("Part",3)
  1446.    Locate 27,4 : Print Zone$("Cancel",4)
  1447.    Do 
  1448.       If(Mouse Zone=1) and Mouse Key Then While Mouse Key<>0 : Screen Display 5,200,Y Mouse,320,48 : Wend 
  1449.       If Mouse Zone=2 and Mouse Key Then Screen Close 5 : CASE=1 : Exit 
  1450.       If Mouse Zone=3 and Mouse Key Then Screen Close 5 : CASE=2 : Exit 
  1451.       If Mouse Zone=4 and Mouse Key Then Screen Close 5 : Goto XIT
  1452.    Loop 
  1453.    While Mouse Key<>0 : Wend : Wait 25
  1454.    If CASE=2
  1455.       GROWBOX
  1456.    End If 
  1457.    If CASE=1
  1458.       GX1=0 : GX2=SW : GY1=0 : GY2=SH
  1459.    End If 
  1460.    If GX2-GX1<1 or GY2-GY1<1 Then ERR : Goto XIT
  1461.    '''''''''''''''''''''''''''''''''''''''''''''''''''
  1462.    '        Create Claire's screen table
  1463.    If Btst(13,VM) Then VMODE=2 : Rem Lowres 
  1464.    If Btst(15,VM) Then VMODE=32770 : Rem Hires
  1465.    If Btst(11,VM) Then VMODE=2050 : Rem Ham
  1466.    If Btst(2,VM) Then VMODE=VMODE+4 : Rem Laced  
  1467.    SN$="Claire's Screen "
  1468.    Erase 5
  1469.    Reserve As Work 5,32
  1470.    WSBSE=Start(5)
  1471.    '           Create ExtIO 
  1472.    Loke WSBSE+$0,0 : Rem xpos & ypos
  1473.    Doke WSBSE+$4,SW : Rem width
  1474.    Doke WSBSE+$6,SH : Rem height 
  1475.    Doke WSBSE+$8,DEPTH : Rem Bitplanes  
  1476.    Doke WSBSE+$A,0
  1477.    Doke WSBSE+$C,VMODE : Rem View modes 
  1478.    Doke WSBSE+$E,15 : Rem Screen type 'custom' 
  1479.    Loke WSBSE+16,0 : Rem Fonts
  1480.    Loke WSBSE+20,Varptr(SN$) : Rem Point to screen name 
  1481.    Loke WSBSE+24,0 : Rem No gadgets 
  1482.    Loke WSBSE+28,0 : Rem No bitmap
  1483.    '         Create Claire's screen 
  1484.    Areg(0)=WSBSE
  1485.    SCRH=Intcall(-198) : Rem screen handle
  1486.    Areg(0)=SCRH : H=Intcall(-246) : Rem move Claire's screen to back 
  1487.    '          Copy over bitplanes 
  1488.    H=$C0
  1489.    For X=0 To DEPTH-1
  1490.       '      Loke(SCRH+H),Logbase(X) 
  1491.       Copy Logbase(X),Logbase(X)+((SW*SH)/8) To Leek(SCRH+H)
  1492.       Add H,4
  1493.    Next X
  1494.    '           Setup Printer Dump 
  1495.    VPORT=SCRH+44 : Rem View Port
  1496.    RPORT=SCRH+84 : Rem Rast Port
  1497.    SCM=Leek(VPORT+4) : Rem Colour Map 
  1498.    VMODE=Deek(VPORT+32) : Rem viewModes
  1499.    '            Set RGB Palette 
  1500.    For X=0 To(2^DEPTH)-1
  1501.       RGB$=Hex$(Colour(X),3)
  1502.       Areg(0)=VPORT : Dreg(0)=X
  1503.       Dreg(1)=Val("$"+Mid$(RGB$,2,1))
  1504.       Dreg(2)=Val("$"+Mid$(RGB$,3,1))
  1505.       Dreg(3)=Val("$"+Mid$(RGB$,4,1))
  1506.       H=Gfxcall(-288)
  1507.    Next 
  1508.    '             Create Port
  1509.    Dreg(0)=-1 : SIGBIT=Execall(-330) : Rem Sig bit
  1510.    Dreg(0)=40 : Dreg(1)=65537
  1511.    MSGPORT=Execall(-198) : Rem Reserve 40 Bytes of Memory for MsgPort details 
  1512.    If MSGPORT=0 Then SCR=-2 : Goto XIT4
  1513.    Poke MSGPORT+8,4 : Rem Type=NT_MSGPORT
  1514.    Poke MSGPORT+9,0 : Rem Priority 
  1515.    '   PNAME$="Claire's Printer Port " : Rem printer port name
  1516.    PNAME$="Prt:" : Rem printer port name
  1517.    Loke MSGPORT+10,Varptr(PNAME$) : Rem Pass adr. of port name 
  1518.    Poke MSGPORT+14,0 : Rem flags
  1519.    Poke MSGPORT+15,SIGBIT : Rem sig bit
  1520.    Areg(1)=0 : SIGTASK=Execall(-294) : Rem get sigtask
  1521.    Loke MSGPORT+16,SIGTASK : Rem Pass Sigtask 
  1522.    Areg(1)=MSGPORT : H=Execall(-354) : Rem Add Port 
  1523.    '            Create ExtIO
  1524.    Dreg(0)=64 : Dreg(1)=65537
  1525.    IOREQUEST=Execall(-198) : Rem Reserve 64 bytes for IoRequest details 
  1526.    If IOREQUEST=0 Then SCR=-2 : Goto XIT3
  1527.    Poke IOREQUEST+8,5 : Rem Type=NT_MESSAGE
  1528.    Poke IOREQUEST+9,0 : Rem Priority 
  1529.    Loke IOREQUEST+14,MSGPORT
  1530.    '             Open the Printer Device  
  1531.    DEVNAME$="printer.device"+Chr$(0)
  1532.    Areg(0)=Varptr(DEVNAME$) : Dreg(0)=0 : Areg(1)=IOREQUEST : Dreg(1)=0
  1533.    PERROR=Execall(-444) : Rem Open Printer (device)
  1534.    If PERROR<>0 Then SCR=-2 : Goto XIT2
  1535.    '              Dump the RastPort 
  1536.    Doke IOREQUEST+28,11 : Rem command
  1537.    Loke IOREQUEST+32,RPORT : Rem rastport 
  1538.    Loke IOREQUEST+36,SCM : Rem colourMap
  1539.    Loke IOREQUEST+40,VMODE : Rem viewmodes
  1540.    Doke IOREQUEST+44,GX1 : Rem  Xpos    
  1541.    Doke IOREQUEST+46,GY1 : Rem  Ypos    
  1542.    Doke IOREQUEST+48,GX2-GX1 : Rem Width  
  1543.    Doke IOREQUEST+50,GY2-GY1 : Rem Length   
  1544.    Loke IOREQUEST+52,0 : Rem destCol  
  1545.    Loke IOREQUEST+56,0 : Rem destRow  
  1546.    Doke IOREQUEST+60,$84 : Rem FullCol Aspect 
  1547.    Areg(1)=IOREQUEST
  1548.    IOERROR=Execall(-456) : Rem pass IOrequest table - Send Screen to Printer  
  1549.    If IOERROR<>0 Then SCR=-2 : Goto XIT1
  1550.    '              Close up printer dump 
  1551.    XIT1: Rem close printer device 
  1552.    Areg(1)=IOREQUEST : H=Execall(-450)
  1553.    XIT2: Rem Delete ExtIO 
  1554.    Poke IOREQUEST+3,$FF
  1555.    Loke IOREQUEST+20,-1
  1556.    Loke IOREQUEST+24,-1
  1557.    Areg(1)=IOREQUEST : Dreg(0)=64 : H=Execall(-210)
  1558.    XIT3: Rem Delete port
  1559.    Areg(1)=MSGPORT : H=Execall(-360)
  1560.    Poke MSGPORT+8,$FF
  1561.    Loke MSGPORT+20,-1
  1562.    Dreg(0)=SIGBIT : H=Execall(-336)
  1563.    Areg(1)=MSGPORT : Dreg(0)=40 : H=Execall(-210)
  1564.    XIT4: Rem Close Dummy screen 
  1565.    Areg(0)=SCRH
  1566.    H=Intcall(-66)
  1567.    XIT:
  1568.    Erase 5
  1569.    Screen SO : H=Free
  1570.    Screen Show SO
  1571. End Proc[SCR]
  1572. Procedure GROWBOX
  1573.    On Error Goto ER
  1574.    Goto OK
  1575.    ER:
  1576.    ERR
  1577.    Resume OK
  1578.    OK:
  1579.    Change Mouse 2
  1580.    GRABBED=False
  1581.    Gr Writing 2
  1582.    Repeat 
  1583.       Rem Wait until the left mouse button is pressed  
  1584.       If Mouse Key=1
  1585.          GX1=X Screen(X Mouse) : GY1=Y Screen(Y Mouse) : GX2=GX1 : GY2=GY1
  1586.          C=Point(GX1,GY1)
  1587.          Box GX1,GY1 To GX2,GY2
  1588.          While Mouse Key=1
  1589.             Box GX1,GY1 To GX2,GY2
  1590.             GX2=X Screen(X Mouse) : GY2=Y Screen(Y Mouse)
  1591.             Box GX1,GY1 To GX2,GY2
  1592.          Wend 
  1593.          Box GX1,GY1 To GX2,GY2
  1594.          GRABBED=True
  1595.          Plot GX1,GY1,C
  1596.          Ink KEEPINK
  1597.          If GX1>GX2 : T=GX1 : GX1=GX2 : GX2=T : End If 
  1598.          If GY1>GY2 : T=GY1 : GY1=GY2 : GY2=T : End If 
  1599.       End If 
  1600.    Until GRABBED
  1601.    If KM=0 Then Change Mouse 1
  1602.    Gr Writing 1
  1603.    If GX2<GX1+1 Then GX2=GX1+1
  1604.    If GY2<GY1+1 Then GY2=GY1+1
  1605.    Gr Writing 1
  1606. End Proc
  1607. '
  1608. Procedure ERR
  1609.    On Error Goto ER
  1610.    Goto OK
  1611.    ER:
  1612.    Resume XIT
  1613.    OK:
  1614.    Screen Open 3,320,48,4,Hires
  1615.    Screen Display 3,200,100,320,48
  1616.    Curs Off : Cls 1
  1617.    Print : Centre "Error - Out of Memory/Range?"
  1618.    Print : Print : Centre "Press Left Mouse Key"
  1619.    Wait 50
  1620.    Do : Exit If Mouse Key=1 : Loop 
  1621.    Screen Close 3
  1622.    XIT:
  1623. End Proc
  1624. '
  1625. Procedure HELPSELECTOR
  1626.    On Error Goto ER
  1627.    Goto OK
  1628.    ER:
  1629.    ERR
  1630.    Resume XIT
  1631.    OK:
  1632.    Screen Open 2,640,256,4,Hires
  1633.    Curs Off : Paper 0 : Cls 0
  1634.    Colour 1,$FF0 : Set Tab 7
  1635.    Print 
  1636.    Print : Centre "***** HELP *****"
  1637.    Print : Centre " Selector - Multiple File Handler"
  1638.    Print : Print 
  1639.    Print Tab$+" Files - Delete,Rename,Copy Files"
  1640.    Print Tab$+"       - use eXtra to Delete or Copy Single Files"
  1641.    Print Tab$+"         Make,Erase Directory. Display Free bytes"
  1642.    Print Tab$+"         L.Amiga A to toggle WB for Format,Disk Copy etc"
  1643.    Print 
  1644.    Print Tab$+" DisplayIFF - use Left Mouse Key to Exit"
  1645.    Print Tab$+"              use Right Mouse Key for all/part Screen Printout"
  1646.    Print Tab$+" AutoView   - use Left Mouse Key to Exit"
  1647.    Print Tab$+" Music      - Toggles Music (AMOS/Tracker module/Raw/IFF) on/off"
  1648.    Print Tab$+" Sounds     - Raw/IFF Music Sample Player"
  1649.    Print Tab$+" TextASCII  - Left Mouse to continue, Right Mouse to interrupt"
  1650.    Print Tab$+"            - At end - Left Mouse to exit"
  1651.    Print Tab$+"                     - Right Mouse for Speech/Printout Menu"
  1652.    Print 
  1653.    Print Tab$+" Print - (Display IFF menu) needs WorkBench Preferences"
  1654.    Print Tab$+"         L.Amiga A to toggle Prefs & change "
  1655.    Print Tab$+"       - (ASCII menu) - prints ASCII text"
  1656.    Flash 3,"(f00,32)(f80,32)(ff0,32)(0f0,32)(08f,32)(88f,32)(f0f,32)"
  1657.    Print : Centre "If Display IFF Picture Menu is unreadable"
  1658.    Pen 3
  1659.    Print : Centre "[O] or [NumL] or [F3]"
  1660.    Pen 2
  1661.    Print : Centre "cycle pen colours"
  1662.    Ink 1 : Box 50,10 To 580,220
  1663.    While Mouse Key<>0 : Wend 
  1664.    While Key State(95)<>False : Wend 
  1665.    Do 
  1666.       If(Mouse Key=1) or(Key State(95)) Then Exit 
  1667.    Loop 
  1668.    Wait 50
  1669.    Screen Close 2
  1670.    XIT:
  1671. End Proc
  1672. Procedure SCN
  1673.    On Error Goto ER
  1674.    Goto OK
  1675.    ER:
  1676.    ERR
  1677.    Resume XIT
  1678.    OK:
  1679.    Screen Open 0,320,256,8,Lowres
  1680.    Curs Off : Cls 0 : Paper 0 : Cls 0
  1681.    Colour 7,$FF0
  1682.    Flash 3,"(f00,32)(f80,32)(ff0,32)(0f0,32)(08f,32)(88f,32)(f0f,32)"
  1683.    Screen 0
  1684.    Limit Mouse 128,42 To 448,298
  1685.    Menu Off 
  1686.    XIT:
  1687. End Proc
  1688. Procedure ALTERF$
  1689.    Shared F$
  1690.    Do 
  1691.       A=0
  1692.       A=Instr(F$,"/")
  1693.       If A<>0 Then F$=Mid$(F$,A+1,Len(F$))
  1694.       If A=0 Then Exit 
  1695.    Loop 
  1696.    Do 
  1697.       A=0
  1698.       A=Instr(F$,":")
  1699.       If A<>0 Then F$=Mid$(F$,A+1,Len(F$))
  1700.       If A=0 Then Exit 
  1701.    Loop 
  1702.    A$=Right$(F$,4)
  1703.    If A$=".IFF" Then F$=F$-A$
  1704.    If A$=".iff" Then F$=F$-A$
  1705.    If A$=".Iff" Then F$=F$-A$
  1706. End Proc
  1707. Procedure VSLIDE[Y]
  1708.    Set Slider 0,1,7,5,0,7,7,1
  1709.    Vslider 0,0 To 10,170,170,Y,5
  1710. End Proc
  1711. Procedure TEXPT
  1712.    On Error Goto ER
  1713.    Goto OK
  1714.    ER:
  1715.    ERR
  1716.    Resume XIT
  1717.    OK:
  1718.    Open In 1,F$
  1719.    On Error Goto ER2
  1720.    Goto OK2
  1721.    ER2:
  1722.    ERR
  1723.    Close 1
  1724.    Resume XIT
  1725.    OK2:
  1726.    Open Port 2,"PRT:"
  1727.    Print #2,""
  1728.    Do 
  1729.       If Eof(1) Then Exit 
  1730.       Line Input #1,TE$
  1731.       Print #2,TE$
  1732.    Loop 
  1733.    Print #2,""
  1734.    Close 1
  1735.    Close 2
  1736.    XIT:
  1737. End Proc
  1738. '
  1739. Procedure REZGET[SCN]
  1740.    Screen SCN
  1741.    AMOS=Screen Base+72
  1742.    VM=Deek(AMOS)
  1743.    If Btst(13,VM) Then REZ=Lowres
  1744.    If Btst(15,VM) Then REZ=Hires
  1745.    If Btst(11,VM) Then REZ=Lowres : Rem HAM  
  1746.    If Btst(2,VM) Then REZ=REZ+Laced
  1747. End Proc
  1748. '
  1749. Procedure GTCOLOUR
  1750.    On Error Goto ER
  1751.    Goto OK
  1752.    ER:
  1753.    ERR
  1754.    Resume XIT
  1755.    OK:
  1756.    CN=Screen Colour
  1757.    If CN=4096 Then CN=16
  1758.    If CN=64 Then CN=32
  1759.    Screen Open 1,160,56,32,Lowres
  1760.    Screen Display 1,200,100,320,56
  1761.    Flash Off 
  1762.    Curs Off : Get Palette 0 : Cls 2
  1763.    Reserve Zone CN+1
  1764.    Paper 2 : Pen 1
  1765.    Locate 0,2
  1766.    Print "Select colour:"
  1767.    Print : Print "   ";
  1768.    For I=1 To Int(CN/2)
  1769.       Paper I-1 : Print Zone$(" ",I);
  1770.    Next I
  1771.    Paper 2 : Print : Print "   ";
  1772.    For I=Int(CN/2)+1 To CN
  1773.       Paper I-1 : Print Zone$(" ",I);
  1774.    Next I
  1775.    Set Zone CN+1,0,0 To 150,6 : Ink 1 : Box 1,1 To 150,3
  1776.    RETRY:
  1777.    Do 
  1778.       If Mouse Key=1 and(Mouse Zone>0) and(Mouse Zone<=CN) Then C1=Mouse Zone : Locate 15,2 : Paper C1-1 : Print " "; : Wait 50 : Clear Key : Exit 
  1779.       If(Mouse Zone=CN+1) and(Mouse Key=1) Then Ink 0 : Box 1,1 To 150,3 : Do : Screen Display 1,200,Y Mouse,160,56 : Exit If Mouse Key=2 : Loop : Ink 1 : Box 1,1 To 150,3
  1780.    Loop 
  1781.    DR=C1-1
  1782.    XIT:
  1783. End Proc
  1784. Procedure MIX
  1785.    If Screen Colour=4096 and DR>16 Then Goto XIT
  1786.    If Screen Colour=64 and DR>32 Then Goto XIT
  1787.    On Error Goto ER
  1788.    Goto OK
  1789.    ER:
  1790.    ERR
  1791.    Resume XIT
  1792.    OK:
  1793.    Screen Open 1,320,56,16,Hires
  1794.    Screen Display 1,200,100,320,56
  1795.    Curs Off : Flash Off 
  1796.    Reserve Zone 6
  1797.    Set Zone 1,20,10 To 180,15
  1798.    Set Zone 2,20,26 To 180,31
  1799.    Set Zone 3,20,42 To 180,47
  1800.    Locate 34,1 : Print Border$(Zone$("Undo",5),1);
  1801.    Locate 34,5 : Print Border$(Zone$("Exit",4),1);
  1802.    Set Zone 6,0,0 To 320,6 : Ink 2 : Box 1,1 To 250,3
  1803.    Screen 0 : C=Colour(DR) : Screen 1
  1804.    RETRY:
  1805.    C1=Int(C/256) : C2=Int((C-256*C1)/16) : C3=C mod 16
  1806.    KEEPCOLOUR=C
  1807.    Colour 5,C : Paper 5 : Locate 34,3 : Print "  " : Paper 1
  1808.    Locate 25,1 : Print "Red";
  1809.    Locate 25,3 : Print "Green";
  1810.    Locate 25,5 : Print "Blue";
  1811.    Hslider 20,10 To 180,15,16,C1,1
  1812.    Hslider 20,26 To 180,31,16,C2,1
  1813.    Hslider 20,42 To 180,47,16,C3,1
  1814.    Do 
  1815.       X=X Screen(X Mouse) : X=Int((X-20)/10)
  1816.       If(Mouse Zone=1) and(Mouse Key=1)
  1817.          Hslider 20,10 To 180,15,16,X,1 : C1=X
  1818.       End If 
  1819.       If(Mouse Zone=2) and(Mouse Key=1)
  1820.          Hslider 20,26 To 180,31,16,X,1 : C2=X
  1821.       End If 
  1822.       If(Mouse Zone=3) and(Mouse Key=1)
  1823.          Hslider 20,42 To 180,47,16,X,1 : C3=X
  1824.       End If 
  1825.       If(Mouse Zone=4) and(Mouse Key=1) Then Exit 
  1826.       If(Mouse Zone=5) and(Mouse Key=1) Then C=KEEPCOLOUR : Goto RETRY
  1827.       If(Mouse Zone=6) and(Mouse Key=1) Then Ink 0 : Box 1,1 To 250,3 : Do : Screen Display 1,200,Y Mouse,320,56 : Exit If Mouse Key=2 : Loop : Ink 2 : Box 1,1 To 250,3
  1828.       C=C1*256+C2*16+C3
  1829.       Colour 5,C : Paper 5 : Locate 34,3 : Print "    " : Paper 1
  1830.       Screen 0 : Colour DR,C
  1831.       If DR=0
  1832.          CB[0]
  1833.       End If 
  1834.       Screen 1
  1835.    Loop 
  1836.    Screen Close 1
  1837.    XIT:
  1838.    Ink KEEPINK
  1839. End Proc
  1840. Procedure CB[I]
  1841.    On Error Goto ER
  1842.    Goto OK
  1843.    ER:
  1844.    ERR
  1845.    Resume XIT
  1846.    OK:
  1847.    Colour Back(Colour(I))
  1848.    Screen Open 6,16,8,2,Lowres
  1849.    Screen Display 6,0,0,16,8
  1850.    Screen Close 6
  1851.    XIT:
  1852. End Proc
  1853. '
  1854. Rem Procedures shared by FileManager and PageEditor
  1855. '
  1856. Procedure MDIR
  1857.    Clear Key 
  1858.    On Error Goto ER
  1859.    Goto OK
  1860.    ER:
  1861.    ERR
  1862.    Resume XIT
  1863.    OK:
  1864.    Screen Open 1,320,56,4,Hires
  1865.    Screen Display 1,200,100,320,56
  1866.    Curs Off : Cls 1
  1867.    Print : Centre "Make Directory"
  1868.    Print : Print : Centre "Enter new directory {eg df0:new}"
  1869.    Print : Print 
  1870.    Input " ";NDIR$
  1871.    Curs Off 
  1872.    On Error Goto ER2
  1873.    Goto OK2
  1874.    ER2:
  1875.    Screen Close 1
  1876.    ERR
  1877.    Resume XIT
  1878.    OK2:
  1879.    Mkdir NDIR$
  1880.    Screen Close 1
  1881.    XIT:
  1882. End Proc
  1883. Procedure ERASDIR
  1884.    Clear Key 
  1885.    On Error Goto ER
  1886.    Goto OK
  1887.    ER:
  1888.    ERR
  1889.    Resume XIT
  1890.    OK:
  1891.    Screen Open 1,320,48,4,Hires
  1892.    Screen Display 1,200,100,320,48
  1893.    Curs Off : Cls 1
  1894.    Print : Centre "Enter EMPTY directory {eg df0:new}"
  1895.    Print : Print 
  1896.    Input " Erase ";NDIR$
  1897.    Curs Off 
  1898.    Dreg(1)=Varptr(NDIR$)
  1899.    H=Doscall(-72)
  1900.    If H<>0 Then Goto XIT2
  1901.    If H=0 Then Centre "Not Done."
  1902.    Do : Exit If Mouse Key=1 : Loop 
  1903.    XIT2:
  1904.    Wait 50
  1905.    Screen Close 1
  1906.    XIT:
  1907. End Proc
  1908. '
  1909. Rem Single file operations 
  1910. '
  1911. Procedure EXTRA
  1912.    Clear Key 
  1913.    On Error Goto ER
  1914.    Goto OK
  1915.    ER:
  1916.    ERR
  1917.    Resume XIT
  1918.    OK:
  1919.    Screen Open 4,320,48,4,Hires
  1920.    Screen Display 4,200,100,320,48
  1921.    Curs Off : Cls 1
  1922.    Flash Off : Colour 3,$A4
  1923.    KEEPDIR$=Dir$
  1924.    Reserve Zone 
  1925.    Reserve Zone 3
  1926.    Locate 0,1 : Centre "eXtra"
  1927.    Locate 0,2 : Centre "'Single' operations"
  1928.    Paper 3
  1929.    PBT[2,4,"Delete",1,2]
  1930.    PBT[17,4,"Copy",2,2]
  1931.    PBT[30,4,"Quit",3,2]
  1932.    Do 
  1933.       If Mouse Zone=1 and Mouse Key=1 : RUBOUT : End If 
  1934.       If Mouse Zone=2 and Mouse Key=1 : CPY : End If 
  1935.       If Mouse Zone=3 and Mouse Key=1 : Exit : End If 
  1936.    Loop 
  1937.    Screen Close 4
  1938.    XIT:
  1939.    Dir$=KEEPDIR$
  1940. End Proc
  1941. Procedure RUBOUT
  1942.    On Error Goto ER
  1943.    Goto OK
  1944.    ER:
  1945.    ERR
  1946.    Resume XIT
  1947.    OK:
  1948.    Do 
  1949.       FILESELECTQZ[FF$,"SWITCH","Delete a File","IRREVERSIBLE - Quit to leave"] : SD
  1950.       If F$="" Then Goto XIT
  1951.       Kill F$
  1952.    Loop 
  1953.    XIT:
  1954. End Proc
  1955. Procedure CPY
  1956.    Clear Key 
  1957.    On Error Goto ER
  1958.    Goto OK
  1959.    ER:
  1960.    ERR
  1961.    Resume XIT
  1962.    OK:
  1963.    Do 
  1964.       Erase 6
  1965.       FILESELECTQZ[FF$,"SWITCH","Select File to Copy",""] : SD
  1966.       If F$="" Then Goto XIT
  1967.       KEEPKEEPF$=F$
  1968.       FILESELECTQZ[GG$,"SWITCH",Right$(F$,38),"Copy to"] : SDG
  1969.       G$=F$
  1970.       F$=KEEPKEEPF$
  1971.       SDG
  1972.       If G$="" Then Goto XIT
  1973.       Open In 1,F$ : LFILE=Lof(1) : Close 1
  1974.       Reserve As Work 6,LFILE
  1975.       Bload F$,Start(6)
  1976.       Bsave G$,Start(6) To Start(6)+LFILE
  1977.    Loop 
  1978.    XIT:
  1979.    Erase 6
  1980. End Proc
  1981. '
  1982. Procedure SD
  1983.    If F$="" Then Goto XIT
  1984.    KEEPFF$=FF$
  1985.    FF$=F$
  1986.    I10=Instr(FF$,":")
  1987.    FF2$=Right$(FF$,Len(FF$)-I10)
  1988.    If Instr(FF2$,":")<>0 Then FF$=KEEPFF$ : Goto XIT
  1989.    FF$=Flip$(FF$)
  1990.    I11=Instr(FF$,"/")
  1991.    If I11=0 Then FF$=Left$(Flip$(FF$),I10) : Goto XIT
  1992.    FF$=Left$(Flip$(FF$),(Len(FF$)-I11+1))
  1993.    XIT:
  1994. End Proc
  1995. Procedure SDG
  1996.    If G$="" Then Goto XIT
  1997.    KEEPGG$=GG$
  1998.    GG$=G$
  1999.    I10=Instr(GG$,":")
  2000.    GG2$=Right$(GG$,Len(GG$)-I10)
  2001.    If Instr(GG2$,":")<>0 Then GG$=KEEPGG$ : Goto XIT
  2002.    GG$=Flip$(GG$)
  2003.    I11=Instr(GG$,"/")
  2004.    If I11=0 Then GG$=Left$(Flip$(GG$),I10) : Goto XIT
  2005.    GG$=Left$(Flip$(GG$),(Len(GG$)-I11+1))
  2006.    XIT:
  2007. End Proc
  2008. '
  2009. '
  2010. Rem Own File Selector
  2011. '
  2012. 'Global F$ 
  2013. '
  2014. 'Dim LQZ$(200),MITQZ$(70)
  2015. 'Global LQZ$(),FLEQZ$,MITQZ$(),LLQZ$ 
  2016. 'Global DRECTORYQZ$,MESSAGE1QZ$,MESSAGE2QZ$
  2017. 'Global NQZ,XQZ,IQZ,CRQZ 
  2018. 'CRQZ=0
  2019. '
  2020. 'FILESELECTQZ[Dir$,"SWITCH","Please Select","a File"]  
  2021. Procedure FILESELECTQZ[DRECTORYQZ$,SWITCH$,MESSAGE1QZ$,MESSAGE2QZ$]
  2022.    '''''''''''''''''''''''''''''''''''''''''''''' 
  2023.    If Not Exist(DRECTORYQZ$) Then ERR : Goto XIT5
  2024.    If SWITCH$="-AMOS-"
  2025.       F$=Fsel$(DRECTORYQZ$,"",MESSAGE1QZ$,MESSAGE2QZ$) : Goto XIT5
  2026.    End If 
  2027.    If SWITCH$="CUSTOM"
  2028.       Goto FRESH
  2029.    End If 
  2030.    MARKQZ$=""
  2031.    On Error Goto ER3
  2032.    Goto OK3
  2033.    ER3:
  2034.    ERR
  2035.    MARKQZ$="SP"
  2036.    Resume XIT4
  2037.    OK3:
  2038.    Screen Open 1,320,56,4,Hires
  2039.    Screen Display 1,200,100,320,56
  2040.    Curs Off : Cls 1 : Colour 0,$70
  2041.    Locate 0,1 : Centre "Single File Selector"
  2042.    Locate 0,5 : Centre "Choose Preferred"
  2043.    Reserve Zone 
  2044.    Reserve Zone 2
  2045.    Paper 0
  2046.    Locate 12,3 : Print Zone$("-AMOS-",1);
  2047.    Locate 22,3 : Print Zone$("CUSTOM",2)
  2048.    Do 
  2049.       If Mouse Zone=1 and Mouse Key Then Screen Close 1 : F$=Fsel$(DRECTORYQZ$,"",MESSAGE1QZ$,MESSAGE2QZ$) : Goto XIT5
  2050.       If Mouse Zone=2 and Mouse Key Then Exit 
  2051.    Loop 
  2052.    Screen Close 1
  2053.    '''''''''''''''''''''''''''''''''''''''''''''''''''''
  2054.    FRESH:
  2055.    If Right$(DRECTORYQZ$,1)="/" Then DRECTORYQZ$=Left$(DRECTORYQZ$,Len(DRECTORYQZ$)-1)
  2056.    NQZ=0
  2057.    On Error Goto ER
  2058.    Goto OK
  2059.    ER:
  2060.    ERR
  2061.    Resume XIT
  2062.    OK:
  2063.    FLEQZ$=""
  2064.    Gosub WN1DIR
  2065.    Screen Open 2,640,192,4,Hires
  2066.    Flash Off : Curs Off 
  2067.    If CRQZ=0 : Colour 0,$7A : End If 
  2068.    If CRQZ=1 : Colour 0,$390 : End If 
  2069.    If CRQZ=2 : Colour 0,$A77 : End If 
  2070.    If CRQZ=3 : Colour 0,$BB5 : End If 
  2071.    Colour 1,$700 : Paper 0 : Cls 0 : Colour 3,$FF0
  2072.    Screen Display 2,140,65,320,192
  2073.    Wind Open 1,0,0,40,24 : Paper 0 : Curs Off 
  2074.    '   Wind Open 2,320,0,40,24 : Paper 0 : Curs Off 
  2075.    Wind Open 2,320,0,40,24 : Paper 0 : Curs Off 
  2076.    Gosub SELECTOR_WINDOWS
  2077.    WN1DIR:
  2078.    Gosub RESET
  2079.    NQZ=1
  2080.    FFQZ$=DRECTORYQZ$
  2081.    LQZ$(1)=Dir First$(DRECTORYQZ$)
  2082.    Do 
  2083.       NQZ=NQZ+1
  2084.       LQZ$(NQZ)=Dir Next$
  2085.       If LQZ$(NQZ)="" Then NQZ=NQZ-1 : Exit 
  2086.    Loop 
  2087.    Return 
  2088.    SELECTOR_WINDOWS:
  2089.    RESTART:
  2090.    Y Mouse=Y Hard(0)
  2091.    WN1:
  2092.    XQZ=1
  2093.    REASYLOOK:
  2094.    Window 2 : Pen 1
  2095.    Locate 0,0 : Cline : Pen 1 : Centre "Single File Selector"
  2096.    Locate 0,2 : Cline : Centre MESSAGE1QZ$
  2097.    Locate 0,3 : Cline : Centre MESSAGE2QZ$
  2098.    Window 1 : Pen 1
  2099.    Locate 0,0 : Cline : Centre "Source" : Ink 3 : Box 1,1 To 30,3
  2100.    WN12:
  2101.    XQZ=1
  2102.    MESSAGEQZ$=Left$(DRECTORYQZ$,30)+"..."
  2103.    Locate 0,22 : Cline : Pen 1 : Centre MESSAGEQZ$
  2104.    REASYLOOK2:
  2105.    XKQZ=0
  2106.    PLQZ=0 : Gosub MAKEFSZONES
  2107.    Pen 2
  2108.    Rem main loop
  2109.    Do 
  2110.       For IQZ=2 To 21
  2111.          '
  2112.          If Mouse Zone=IQZ and Mouse Key and Instr(LQZ$(XQZ+IQZ-2)," ")=1 Then Gosub GTFILE : Gosub SEEFILE : Goto REASYLOOK2
  2113.          If Mouse Zone=IQZ and Mouse Key and Instr(LQZ$(XQZ+IQZ-2),"*")=1 Then Gosub GTDIREC : Gosub RESET : Gosub SEEFILE : Gosub WN1DIR : Y Mouse=Y Hard(0) : Goto WN12
  2114.       Next IQZ
  2115.       If Mouse Zone=22 and Mouse Key Then While Mouse Key<>0 : Screen Display 2,140,Y Mouse,320,192 : Wend 
  2116.       If Mouse Zone=23 and Mouse Key
  2117.          CRQZ=(CRQZ+1) mod 4
  2118.          If CRQZ=0 : Colour 0,$7A : End If 
  2119.          If CRQZ=1 : Colour 0,$390 : End If 
  2120.          If CRQZ=2 : Colour 0,$A77 : End If 
  2121.          If CRQZ=3 : Colour 0,$BB5 : End If 
  2122.          While Mouse Key<>0 : Wend 
  2123.       End If 
  2124.       If Mouse Zone=24 and Mouse Key Then PLQZ=24 : Gosub MAKEFSZONES : Gosub GTPAR : Gosub RESET : Gosub SEEFILE : Gosub WN1DIR : Goto WN12
  2125.       If Mouse Zone=25 and Mouse Key Then PLQZ=25 : Gosub MAKEFSZONES : GTNEWDRECTORYQZ : Gosub RESET : Gosub SEEFILE : Gosub WN1DIR : Y Mouse=Y Hard(0) : Goto WN12
  2126.       If Mouse Zone=26 and Mouse Key Then PLQZ=26 : Gosub MAKEFSZONES : GTANOTHERFILEQZ : PLQZ=0 : Gosub MAKEFSZONES : Gosub SEEFILE : Goto REASYLOOK2
  2127.       If Mouse Zone=27 and Mouse Key Then F$=FLEQZ$ : Goto XIT
  2128.       If Mouse Zone=28 and Mouse Key Then F$="" : Goto XIT
  2129.       If Mouse Zone=29 and Mouse Key and XQZ<NQZ-15 Then XQZ=XQZ+1
  2130.       If Mouse Zone=30 and Mouse Key and XQZ>1 Then XQZ=XQZ-1
  2131.       Rem Update display 
  2132.       If XQZ<>XKQZ
  2133.          XKQZ=XQZ
  2134.          For IQZ=1 To 20
  2135.             Locate 2,IQZ : Cline 
  2136.             If Mouse Zone=IQZ+1
  2137.                Inverse On 
  2138.             End If 
  2139.             Print Left$(LQZ$(XQZ+IQZ-1),38);
  2140.             Inverse Off 
  2141.          Next IQZ
  2142.       End If 
  2143.    Loop 
  2144.    Return 
  2145.    MAKEFSZONES:
  2146.    MITQZ$(24)="    Parent   "
  2147.    MITQZ$(25)="New Directory"
  2148.    MITQZ$(26)="   New File  "
  2149.    MITQZ$(27)="     Ok      "
  2150.    MITQZ$(28)="     Quit    "
  2151.    Reserve Zone 
  2152.    Reserve Zone 30
  2153.    Set Zone 22,0,0 To 25,5
  2154.    Writing 1
  2155.    For IQZ=2 To 21
  2156.       Locate 3,IQZ-1
  2157.       Print Zone$("           ",IQZ)
  2158.    Next IQZ
  2159.    Writing 0
  2160.    Window 2
  2161.    For IIQZ=24 To 28
  2162.       Pen 3 : Ink 3
  2163.       If IIQZ=PLQZ Then Pen 1 : Ink 1
  2164.       Locate 14,(IIQZ-24)*2+6 : Print Zone$(MITQZ$(IIQZ),IIQZ);
  2165.       L=Len(MITQZ$(IIQZ))
  2166.       XB1QZ=X Graphic(X Curs-L) : YB1QZ=Y Graphic(Y Curs)
  2167.       XB2QZ=X Graphic(X Curs) : YB2QZ=Y Graphic(Y Curs+1)-1
  2168.       Box XB1QZ-2,YB1QZ To XB2QZ+2,YB2QZ
  2169.    Next IIQZ
  2170.    Window 1
  2171.    Pen 3
  2172.    Locate 5,0 : Print Zone$(Chr$(147)+Chr$(148),29);
  2173.    Locate 8,0 : Print Zone$(Chr$(149)+Chr$(150),30);
  2174.    Locate 12,0 : Print Zone$("*",23);
  2175.    Pen 2
  2176.    Return 
  2177.    RESET:
  2178.    For IQZ=1 To 200 : LQZ$(IQZ)="" : Next IQZ
  2179.    FLEQZ$="" : LLQZ$=""
  2180.    Return 
  2181.    SEEFILE:
  2182.    Window 2
  2183.    Pen 2
  2184.    Locate 0,22 : Autoback 1 : Cline 
  2185.    Centre LLQZ$ : F$=FLEQZ$
  2186.    Pen 3
  2187.    Window 1
  2188.    Return 
  2189.    GTFILE:
  2190.    Rem Assuming file {lqz$(xqz+iqz-2)} has no 'double-space' !  
  2191.    POSN=Instr(LQZ$(XQZ+IQZ-2),"  ")
  2192.    LLQZ$=Left$(LQZ$(XQZ+IQZ-2),POSN-1)
  2193.    POSN=Instr(LLQZ$," ") : LLQZ$=Mid$(LLQZ$,POSN+1)
  2194.    If(Right$(DRECTORYQZ$,1)=":") Then FLEQZ$=DRECTORYQZ$+LLQZ$ : Goto XITGTFILE
  2195.    If(Right$(DRECTORYQZ$,1)="/") Then FLEQZ$=DRECTORYQZ$+LLQZ$ : Goto XITGTFILE
  2196.    If(Right$(DRECTORYQZ$,1)<>":") Then FLEQZ$=DRECTORYQZ$+"/"+LLQZ$ : Goto XITGTFILE
  2197.    XITGTFILE:
  2198.    Return 
  2199.    GTPAR:
  2200.    If Right$(DRECTORYQZ$,1)=":" Then Goto XITGTPAR
  2201.    POSIONQZ=Instr(Flip$(DRECTORYQZ$),"/")
  2202.    POSION2QZ=Instr(Flip$(DRECTORYQZ$),":")
  2203.    If POSIONQZ<>0 Then DRECTORYQZ$=Left$(DRECTORYQZ$,Len(DRECTORYQZ$)-POSIONQZ)
  2204.    If POSIONQZ=0 Then DRECTORYQZ$=Left$(DRECTORYQZ$,Len(DRECTORYQZ$)-POSION2QZ+1)
  2205.    XITGTPAR:
  2206.    Return 
  2207.    GTDIREC:
  2208.    Rem Assuming directory has no 'double space' ! 
  2209.    POSN=Instr(LQZ$(XQZ+IQZ-2),"  ")
  2210.    If Right$(DRECTORYQZ$,1)=":" Then DRECTORYQZ$=DRECTORYQZ$+Mid$(LQZ$(XQZ+IQZ-2),2,POSN-2) : Goto XITGTDIREC
  2211.    If Right$(DRECTORYQZ$,1)<>":" Then DRECTORYQZ$=DRECTORYQZ$+"/"+Mid$(LQZ$(XQZ+IQZ-2),2,POSN-2)
  2212.    XITGTDIREC:
  2213.    Return 
  2214.    XIT:
  2215.    If Not Exist(DRECTORYQZ$) Then ERR : Goto RESTART
  2216.    While Mouse Key<>0 : Wend 
  2217.    Screen Close 2
  2218.    XIT4:
  2219.    If MARKQZ$="SP"
  2220.       On Error Goto ER5
  2221.       Goto OK5
  2222.       ER5:
  2223.       ERR
  2224.       Resume XIT5
  2225.       OK5:
  2226.       F$=Fsel$(DRECTORYQZ$,"",MESSAGE1QZ$,MESSAGE2QZ$)
  2227.    End If 
  2228.    XIT5:
  2229.    While Mouse Key<>0 : Wend 
  2230. End Proc
  2231. Procedure GTANOTHERFILEQZ
  2232.    Clear Key 
  2233.    On Error Goto ER
  2234.    Goto OK
  2235.    ER:
  2236.    ERR
  2237.    Resume XIT
  2238.    OK:
  2239.    Screen Open 1,320,48,4,Hires
  2240.    Screen Display 1,200,100,320,48
  2241.    Curs Off : Cls 1 : Colour 0,$70
  2242.    Print : Centre "Enter file name required"
  2243.    Print : Print 
  2244.    Wind Open 1,32,32,30,1 : Paper 2 : Pen 1 : Clw 
  2245.    Input " ";LLQZ$
  2246.    Curs Off 
  2247.    '   Wait 50
  2248.    If LLQZ$="" Then Goto XIT2
  2249.    If(Right$(DRECTORYQZ$,1)=":") Then FLEQZ$=DRECTORYQZ$+LLQZ$ : Goto XIT2
  2250.    If(Right$(DRECTORYQZ$,1)<>":") Then FLEQZ$=DRECTORYQZ$+"/"+LLQZ$ : Goto XIT2
  2251.    XIT2:
  2252.    Screen Close 1
  2253.    XIT:
  2254. End Proc
  2255. Procedure GTNEWDRECTORYQZ
  2256.    Dim DITQZ$(11)
  2257.    On Error Goto ER
  2258.    Goto OK
  2259.    ER:
  2260.    ERR
  2261.    Resume XIT
  2262.    OK:
  2263.    Screen Open 1,320,56,4,Hires
  2264.    Screen Display 1,200,100,320,56
  2265.    Curs Off : Cls 1 : Colour 0,$70
  2266.    Print : Centre "Select New Directory"
  2267.    DITQZ$(1)="DF0:"
  2268.    DITQZ$(2)="DF1:"
  2269.    DITQZ$(3)="DH0:"
  2270.    DITQZ$(4)="DH1:"
  2271.    DITQZ$(5)="DH2:"
  2272.    DITQZ$(6)="DH3:"
  2273.    DITQZ$(7)="DH4:"
  2274.    DITQZ$(8)="DH5:"
  2275.    DITQZ$(9)="DH6:"
  2276.    DITQZ$(10)="DH7:"
  2277.    DITQZ$(11)="Other"
  2278.    Reserve Zone 
  2279.    Reserve Zone 11
  2280.    Paper 0 : Locate 0,3
  2281.    For IIQZ=1 To 6
  2282.       If Exist(DITQZ$(IIQZ)) Then Cright : Print Zone$(DITQZ$(IIQZ),IIQZ);
  2283.    Next IIQZ
  2284.    Locate 0,5
  2285.    For IIQZ=7 To 10
  2286.       If Exist(DITQZ$(IIQZ)) Then Cright : Print Zone$(DITQZ$(IIQZ),IIQZ);
  2287.    Next IIQZ
  2288.    Locate 30,5
  2289.    Print Zone$(DITQZ$(11),11)
  2290.    Do 
  2291.       For IQZ=1 To 10
  2292.          If Mouse Zone=IQZ and Mouse Key
  2293.             If Exist(DITQZ$(IQZ))
  2294.                DRECTORYQZ$=DITQZ$(IQZ) : Dir$=DITQZ$(IQZ) : Goto XIT
  2295.             End If 
  2296.          End If 
  2297.       Next IQZ
  2298.       If Mouse Zone=11 and Mouse Key Then Exit 
  2299.    Loop 
  2300.    Cls 1 : Paper 1 : Home 
  2301.    Locate 0,2 : Centre "Directory Change"
  2302.    RETRY:
  2303.    Locate 0,4 : Input " Enter New Directory ";DRECTORY3QZ$
  2304.    If(DRECTORY3QZ$="") or(DRECTORY3QZ$=":") Then Goto XIT
  2305.    If Instr(DRECTORY3QZ$,":")=0 Then Cls : Locate 0,1 : Centre "Error - No ':' detected" : Goto RETRY
  2306.    If Right$(DRECTORY3QZ$,1)="/" Then DRECTORY3QZ$=Left$(DRECTORY3QZ$,Len(DRECTORY3QZ$)-1)
  2307.    If Not Exist(DRECTORY3QZ$) Then Cls : Locate 0,1 : Centre "Directory Not Found" : Goto RETRY
  2308.    DRECTORYQZ$=DRECTORY3QZ$
  2309.    XIT:
  2310.    Screen Close 1
  2311. End Proc
  2312. '
  2313. Rem                 ** End **