home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 326-350 / apd347 / notebook.amos / notebook.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1992-09-02  |  106.1 KB  |  3,672 lines

  1. Rem                    ********  
  2. Rem  *************** NoteBook1200 ***************    
  3. Rem   ********** Bill Currie 1991/93 ********* 
  4. Rem              ******************* 
  5. '
  6. Set Buffer 60
  7. Music Off : Track Stop : Erase 6 : Erase 5 : Erase 3 : Erase 7
  8. '
  9. Global F$
  10. Dim LQZ$(200),MITQZ$(70)
  11. Global LQZ$(),FLEQZ$,MITQZ$(),LLQZ$
  12. Global DRECTORYQZ$,MESSAGE1QZ$,MESSAGE2QZ$
  13. Global NQZ,XQZ,IQZ,CRQZ
  14. CRQZ=0
  15. '
  16. Global PLTYPE$,TXTNEWMARKER$
  17. PLTYPE$="" : TXTNEWMARKER$="no"
  18. Global TRY$
  19. Global AMOSMUSIC,AMOSMUSIC$,TRACKERMUSIC,TRACKERMUSIC$,MEDMUSIC,MEDMUSIC$
  20. Global FFMUSIC,FFMUSIC$,RAWMUSIC,RAWMUSIC$
  21. Global MUZIC,MUZIC$
  22. Global MM,FQ,VL,VC$
  23. MM=0 : FQ=12000 : VL=63 : VC$="1100"
  24. FF$=Dir$ : GG$=Dir$
  25. Global IBOOK,I2BOOK,MTCH,MTCH1,S$
  26. '
  27. Set Dir ,""
  28. Rem Globals for colour mix 
  29. '
  30. Dim FSC(4)
  31. Global NWFSC,FSC(),IV
  32. NWFSC=0
  33. '
  34. Global SECS,IP,KEY
  35. Global KX,ZNE,CBO,XL,YL,WRD$
  36. Procedure PBT[XL,YL,WRD$,ZNE,CBO]
  37.    Locate XL,YL
  38.    Pen CBO : Ink CBO
  39.    UD[ZNE] : L=Len(WRD$)
  40.    If(ZNE<>0) Then Print Zone$(WRD$,ZNE);
  41.    If ZNE=0 Then Print WRD$;
  42.    XB1=X Graphic(X Curs-L) : YB1=Y Graphic(Y Curs)
  43.    XB2=X Graphic(X Curs) : YB2=Y Graphic(Y Curs+1)-1
  44.    Box XB1-2,YB1 To XB2+2,YB2
  45. End Proc
  46. Procedure UD[KX]
  47.    If KX=Mouse Zone Then Inverse On 
  48.    If KX<>Mouse Zone Then Inverse Off 
  49.    If KX=0 Then Inverse Off 
  50. End Proc
  51. '
  52. NWTYPE
  53. Procedure NWTYPE
  54.    BV=0 : BD=0 : BN=0 : BMI=0
  55. End Proc
  56. N=0
  57. '
  58. Dim L$(200),FLE$(200),L2$(200),FLE2$(200),MIT$(70)
  59. Global L$(),L2$(),DRECTORY$,DRECTORY1$,DRECTORY2$,MESSAGE1$
  60. Global M,FLE$()
  61. Global KEEPX1,KEEPX2,KEEPY1,KEEPY2,KEEPN,KEEPN2,CASE
  62. Global M2,N2,FLE2$()
  63. Global MIT$()
  64. Global SOURCE,VIFF,FIFF$,VASC,FASC$,BV
  65. Global TALKING
  66. Global GX1,GY1,GX2,GY2,KM
  67. Global FF$,GG$
  68. ZP
  69. Procedure ZP
  70.    BV=0 : VIFF=0 : VASC=0
  71.    If MUZIC=1 Then MUZIC=0 : MM=0 : Music Off : Track Stop : Erase 3 : Erase 7 : CLEAN_UP
  72.    AMOSMUSIC=0 : TRACKERMUSIC=0 : MEDMUSIC=0 : FFMUSIC=0 : RAWMUSIC=0
  73. End Proc
  74. FIFF$="" : FASC$=""
  75. '
  76. RESET
  77. Procedure RESET
  78.    For I=1 To 200 : L$(I)="" : L2$(I)="" : FLE$(I)="" : FLE2$(I)="" : Next I
  79.    CASE=0
  80. End Proc
  81. Procedure RESET1
  82.    For I=1 To 200 : L$(I)="" : Next I
  83. End Proc
  84. Procedure RESET2
  85.    For I=1 To 200 : L2$(I)="" : Next I
  86. End Proc
  87. '
  88. DRECTORY1$=Dir$
  89. DRECTORY2$=Dir$
  90. DRECTORY$=DRECTORY1$
  91. MESSAGE1$=""
  92. INITDIRS
  93. Procedure INITDIRS
  94.    DD1$=Dir$ : DD2$=Dir$
  95.    If Exist("df0:")
  96.       Dir$="df0:"
  97.       If DD2$<>Dir$
  98.          DD2$=Dir$ : Goto MISSREST
  99.       End If 
  100.    End If 
  101.    If Exist("df1:")
  102.       Dir$="df1:"
  103.       If DD2$<>Dir$
  104.          DD2$=Dir$ : Goto MISSREST
  105.       End If 
  106.    End If 
  107.    If Exist("dh1:")
  108.       Dir$="dh1:"
  109.       If DD2$<>Dir$
  110.          DD2$=Dir$ : Goto MISSREST
  111.       End If 
  112.    End If 
  113.    If Exist("dh2:")
  114.       Dir$="dh2:"
  115.       If DD2$<>Dir$
  116.          DD2$=Dir$ : Goto MISSREST
  117.       End If 
  118.    End If 
  119.    If Exist("dh0:")
  120.       Dir$="dh0:"
  121.       If DD2$<>Dir$
  122.          DD2$=Dir$ : Goto MISSREST
  123.       End If 
  124.    End If 
  125.    MISSREST:
  126.    DRECTORY2$=DD2$
  127.    Dir$=DD1$
  128. End Proc
  129. WN1DIR
  130. WN2DIR
  131. '
  132. Rem AMOS copyright notice  
  133. AMOSC
  134. Procedure AMOSC
  135.    Screen Open 0,320,256,32,Lowres
  136.    Curs Off : Paper 0 : Cls 0 : Print 
  137.    Get Icon Palette 
  138.    Locate 0,1
  139.    Centre ">>> Program by Bill Currie <<<"
  140.    Flash 3,"(f00,32)(f80,32)(ff0,32)(0f0,32)(08f,32)(88f,32)(f0f,32)"
  141.    Pen 3 : Ink 3 : Box 50,40 To 270,150
  142.    Locate 0,11
  143.    Centre Border$("NoteBook",1)
  144.    Ink 0 : Pen 2
  145.    Paste Icon 230,20,2
  146.    _SMALL_COPYRIGHT[225]
  147. End Proc
  148. Procedure _SMALL_COPYRIGHT[YDISPLAY]
  149.    '
  150.    Auto View Off 
  151.    '  
  152.    Screen Open 7,320,24,16,0 : Curs Off : Flash Off : Cls 0
  153.    Screen Display 7,,-100,,
  154.    Paste Bob 260,3,1
  155.    Paper 0 : Pen 7 : Print At(1,1);"This program was written using"
  156.    Get Sprite Palette 
  157.    View : Wait Vbl 
  158.    '
  159.    For Y=1 To Screen Height/2
  160.       Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
  161.       Screen Offset 7,,Screen Height/2-Y
  162.       View : Wait Vbl 
  163.    Next 
  164.    '
  165.    Do 
  166.       If Mouse Key=1 Then Exit 
  167.    Loop 
  168.    '
  169.    For Y=Screen Height/2 To 0 Step -1
  170.       Screen Display 7,,YDISPLAY+Screen Height/2-Y,,Y*2
  171.       Screen Offset 7,,Screen Height/2-Y
  172.       View : Wait Vbl 
  173.    Next 
  174.    '
  175.    Screen Close 7
  176.    Auto View On 
  177.    '
  178.    Cls 
  179. End Proc
  180. INFO
  181. Procedure INFO
  182.    Cls 
  183.    Locate 0,10
  184.    Centre "NoteBook"
  185.    Print : Centre "**********"
  186.    Print : Print : Print : Print : Pen 1 : Centre "Other AMOS Program Disks available :"
  187.    Print : Print : Pen 3 : 
  188.    Centre "ScrapBook: Loose-leaf ScrapBook "
  189.    Print : Centre "Evaluator: EVALuates formulae"
  190.    Locate 0,15
  191.    Do 
  192.       If Mouse Key=1 Then Exit 
  193.    Loop 
  194. End Proc
  195. '
  196. Rem ################## Selector SubSystem ###################### 
  197. '
  198. Procedure MAKEBOOK
  199.    On Error Goto ER
  200.    Goto OK
  201.    ER:
  202.    ERR
  203.    Resume XIT
  204.    OK:
  205.    FILESELECT
  206.    If SOURCE=1
  207.       For II=1 To M
  208.          F$=FLE$(II)
  209.          J$(II)=F$
  210.          ALTERF$
  211.          K$(II)=F$
  212.       Next II
  213.       N=M
  214.    End If 
  215.    If SOURCE=2
  216.       For II=1 To M2
  217.          F$=FLE2$(II)
  218.          J$(II)=F$
  219.          ALTERF$
  220.          K$(II)=F$
  221.       Next II
  222.       N=M2
  223.    End If 
  224.    BN=1 : EASYLOOK
  225.    XIT:
  226. End Proc
  227. Procedure MULTIPLEPGINSERT
  228.    On Error Goto ER
  229.    Goto OK
  230.    ER:
  231.    ERR
  232.    Resume XIT
  233.    OK:
  234.    Cls 0
  235.    KEEEPN=N : KEEEPX=X : KEEEPI=I
  236.    If N<200 Then Goto PRCEED
  237.    Locate 0,10 : Centre "No more pages - max 200"
  238.    Locate 0,15 : Centre "RIGHT mouse key to continue"
  239.    While Mouse Key<>2 : Wend 
  240.    Wait 50
  241.    Goto XIT
  242.    PRCEED:
  243.    MESSAGE1$="Select Pages to insert,after"
  244.    FILESELECT
  245.    If SOURCE=1
  246.       If FLE$(1)=""
  247.          Goto XIT
  248.       End If 
  249.       N=KEEEPN : X=KEEEPX : I=KEEEPI
  250.       II=1
  251.       Do 
  252.          If N=200
  253.             ERR : Exit 
  254.          End If 
  255.          If II>M
  256.             Exit 
  257.          End If 
  258.          F$=FLE$(II)
  259.          NN=X+KEEEPI-2
  260.          I=N
  261.          Do 
  262.             If NN=N
  263.                Exit 
  264.             End If 
  265.             J$(I+1)=J$(I)
  266.             K$(I+1)=K$(I)
  267.             I=I-1
  268.             If I=NN
  269.                Exit 
  270.             End If 
  271.          Loop 
  272.          N=N+1 : X=X+1 : II=II+1
  273.          NN=NN+1
  274.          J$(NN)=F$
  275.          ALTERF$
  276.          K$(NN)=F$
  277.       Loop 
  278.    End If 
  279.    If SOURCE=2
  280.       If FLE2$(1)=""
  281.          Goto XIT
  282.       End If 
  283.       N=KEEEPN : X=KEEEPX : I=KEEEPI
  284.       II=1
  285.       Do 
  286.          If N=200
  287.             ERR : Exit 
  288.          End If 
  289.          If II>M2
  290.             Exit 
  291.          End If 
  292.          F$=FLE2$(II)
  293.          NN=X+KEEEPI-2
  294.          I=N
  295.          Do 
  296.             If NN=N
  297.                Exit 
  298.             End If 
  299.             J$(I+1)=J$(I)
  300.             K$(I+1)=K$(I)
  301.             I=I-1
  302.             If I=NN
  303.                Exit 
  304.             End If 
  305.          Loop 
  306.          N=N+1 : X=X+1 : II=II+1
  307.          NN=NN+1
  308.          J$(NN)=F$
  309.          ALTERF$
  310.          K$(NN)=F$
  311.       Loop 
  312.    End If 
  313.    XIT:
  314. End Proc
  315. '
  316. Procedure FILESELECT
  317.    On Error Goto ER
  318.    Goto OK
  319.    ER:
  320.    ERR
  321.    Resume XIT
  322.    OK:
  323.    Screen Open 0,640,256,4,Hires
  324.    Flash Off : Curs Off : Paper 0 : Cls 0 : Colour 3,$FF0
  325.    CB[0]
  326.    Double Buffer : 
  327.    Locate 35,12 : Centre Border$("Selector",1)
  328.    Wait 50
  329.    SCN3
  330.    KEY=1
  331.    SELECTOR_WINDOWS
  332.    XIT:
  333. End Proc
  334. Procedure SCN3
  335.    On Error Goto ER
  336.    Goto OK
  337.    ER:
  338.    ERR
  339.    Resume XIT
  340.    OK:
  341.    Screen Open 0,640,256,4,Hires
  342.    Flash Off : Curs Off : Paper 0 : Cls 0 : Colour 3,$FF0
  343.    If NWFSC=1 Then For III=0 To 3 : Colour III,FSC(III) : Next III
  344.    CB[0]
  345.    Double Buffer : 
  346.    Wind Open 1,0,0,40,24 : Paper 0 : Curs Off 
  347.    Wind Open 2,320,0,40,24 : Paper 0 : Curs Off 
  348.    Wind Open 3,0,192,80,8 : Paper 0 : Curs Off 
  349.    Pen 1 : Locate 0,7 : Centre "(Multiple) File Selector : Directory Manager"
  350.    XIT:
  351. End Proc
  352. Procedure WN1DIR
  353.    On Error Goto ER
  354.    Goto OK
  355.    ER:
  356.    ERR
  357.    Resume XIT
  358.    OK:
  359.    M=0
  360.    RESET1
  361.    N=1
  362.    FF$=DRECTORY1$
  363.    L$(1)=Dir First$(DRECTORY1$)
  364.    Do 
  365.       N=N+1
  366.       L$(N)=Dir Next$
  367.       If L$(N)="" Then N=N-1 : Exit 
  368.    Loop 
  369.    KEEPY1=1
  370.    KEEPN=N
  371.    DRECTORY$=DRECTORY1$
  372.    XIT:
  373. End Proc
  374. Procedure WN2DIR
  375.    On Error Goto ER
  376.    Goto OK
  377.    ER:
  378.    ERR
  379.    Resume XIT
  380.    OK:
  381.    M2=0
  382.    RESET2
  383.    N2=1
  384.    FF$=DRECTORY2$
  385.    L2$(1)=Dir First$(DRECTORY2$)
  386.    Do 
  387.       N2=N2+1
  388.       L2$(N2)=Dir Next$
  389.       If L2$(N2)="" Then N2=N2-1 : Exit 
  390.    Loop 
  391.    KEEPY2=1
  392.    KEEPN2=N2
  393.    DRECTORY$=DRECTORY2$
  394.    XIT:
  395. End Proc
  396. '
  397. Procedure SELECTOR_WINDOWS
  398.    On Error Goto ER
  399.    Goto OK
  400.    ER:
  401.    ERR
  402.    Resume XIT
  403.    OK:
  404.    KEY=1
  405.    WN1:
  406.    DRECTORY$=DRECTORY1$
  407.    REASYLOOK:
  408.    SOURCE=1
  409.    Autoback 1
  410.    Window 1 : Locate 0,0 : Cline : Pen 1 : Centre "  Source   " : Ink 1 : Box 126,0 To 178,7
  411.    Window 2 : Locate 0,0 : Cline : Pen 2 : Centre "Destination" : Ink 2 : Box 430,0 To 522,7
  412.    Window 1 : Pen 1
  413.    MESSAGE1$=Left$(DRECTORY1$,30)+"..."
  414.    Pen 1 : Locate 0,22 : Cline : Centre MESSAGE1$
  415.    MAKEFSZONES[0]
  416.    If(VIFF=1) and(KEY<>5) Then MAKEFSZONES[31]
  417.    If(VASC=1) and(KEY<>5) Then MAKEFSZONES[35]
  418.    If(BV=1) and(KEY<>5) Then MAKEFSZONES[41]
  419.    Pen 2
  420.    Autoback 0
  421.    Rem main loop
  422.    Y=KEEPY1
  423.    N=KEEPN
  424.    Do 
  425.       If Key State(95)=True Then HELPSELECTOR
  426.       X=1+Int((N*Y)/170) : KEEPX1=X
  427.       Rem Read mouse 
  428.       If Mouse Zone=1 and Mouse Key Then Y=Y Screen(Y Mouse) : KEEPY1=Y
  429.       For I=2 To 21
  430.          If Mouse Zone=I and Mouse Key and BV=1 and X+I-2<N+1 Then M=M+1 : GTFILE[1] : J$(X+I-2)=FLE$(M) : SCN : PROG$="PE" : DISPLAY : PROG$="FS" : SCN3 : M=M-1 : KEY=4 : Goto REASYLOOK2
  431.          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
  432.          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
  433.          '
  434.          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
  435.          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
  436.          '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 
  437.          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
  438.          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
  439.          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
  440.          '
  441.          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)
  442.          If Mouse Zone=I and Mouse Key and Instr(L$(X+I-2),"*")=1 Then GTDIREC : DRECTORY1$=DRECTORY$ : RESET1 : WN1DIR : Goto REASYLOOK
  443.       Next I
  444.       If Mouse Zone=22 and Mouse Key Then ZP : MAKEFSZONES[0] : RESET1 : WN1DIR : Goto REASYLOOK
  445.       If Mouse Zone=23 and Mouse Key Then ZP : MAKEFSZONES[0] : Goto WN2
  446.       If Mouse Zone=24 and Mouse Key Then MAKEFSZONES[24] : ZP : DRECTORY$=DRECTORY1$ : GTPAR : DRECTORY1$=DRECTORY$ : RESET1 : WN1DIR : Goto REASYLOOK
  447.       If Mouse Zone=25 and Mouse Key Then MAKEFSZONES[25] : ZP : GTNEWDRECTORY : DRECTORY1$=DRECTORY$ : RESET1 : WN1DIR : Goto REASYLOOK
  448.       If Mouse Zone=26 and Mouse Key Then MAKEFSZONES[26] : ZP : MDIR : MAKEFSZONES[0]
  449.       If Mouse Zone=27 and Mouse Key Then MAKEFSZONES[27] : ZP : ERASDIR : MAKEFSZONES[0]
  450.       If Mouse Zone=28 and Mouse Key Then MAKEFSZONES[28] : ZP : CPYFILES : MAKEFSZONES[0]
  451.       If Mouse Zone=29 and Mouse Key Then MAKEFSZONES[29] : ZP : KLLFILES : MAKEFSZONES[0]
  452.       If Mouse Zone=30 and Mouse Key Then MAKEFSZONES[30] : ZP : RETITLE : MAKEFSZONES[0]
  453.       If(Mouse Zone=31) and(Mouse Key) and(VIFF=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[31] : VIFF=1
  454.       If(Mouse Zone=31) and(Mouse Key) and(VIFF=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  455.       If Mouse Zone=32 and Mouse Key Then MAKEFSZONES[32] : ZP : AUTOVIEW : KEY=4 : Goto REASYLOOK2
  456.       If Mouse Zone=33 and Mouse Key Then While Mouse Key<>0 : Wend : MAKEFSZONES[33] : ZP : MUSI : MAKEFSZONES[0]
  457.       If(Mouse Zone=34) and(Mouse Key) and(MUZIC=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[34] : CLARIFY : MUZIC=1
  458.       If(Mouse Zone=34) and(Mouse Key) and(MUZIC=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  459.       If(Mouse Zone=35) and(Mouse Key) and(VASC=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[35] : VASC=1
  460.       If(Mouse Zone=35) and(Mouse Key) and(VASC=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  461.       If Mouse Zone=36 and Mouse Key Then MAKEFSZONES[36] : ZP : BYFREE : MAKEFSZONES[0]
  462.       If(Mouse Zone=41) and(Mouse Key) and(BV=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[41] : BV=1
  463.       If(Mouse Zone=41) and(Mouse Key) and(BV=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  464.       If Mouse Zone=42 and Mouse Key Then MAKEFSZONES[42] : ZP : RNFILE : MAKEFSZONES[0]
  465.       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]
  466.       If Mouse Zone=44 and Mouse Key Then MAKEFSZONES[44] : ZP : HELPSELECTOR : MAKEFSZONES[0]
  467.       If Mouse Zone=45 and Mouse Key Then MAKEFSZONES[45] : ZP : SCN : Goto XIT
  468.       X=KEEPX1 : Y=KEEPY1
  469.       If Y>170 Then Y=170
  470.       Rem If slider has moved change it  
  471.       If Y<>YM and Mouse Key=1 : YM=Y : End If 
  472.       Rem Update display 
  473.       For I=1 To 20
  474.          Locate 2,I : Cline 
  475.          If(KEY<>1) and(KEY<>5) Then UD[I+1]
  476.          Print Left$(L$(X+I-1),38);
  477.          Inverse Off 
  478.       Next I
  479.       VSLIDE[Y]
  480.       Rem Double buffering smooths the effect  
  481.       Screen Swap : Wait Vbl 
  482.       For I=1 To 20
  483.          Locate 2,I
  484.          If(KEY<>1) and(KEY<>5) Then UD[I+1]
  485.          Print Left$(L$(X+I-1),38);
  486.          Inverse Off 
  487.       Next I
  488.       VSLIDE[Y]
  489.       If KEY=1 Then Goto WN2
  490.       If KEY=5 Then KEY=0 : Goto WN2
  491.    Loop 
  492.    WN2:
  493.    DRECTORY$=DRECTORY2$
  494.    REASYLOOK2:
  495.    SOURCE=2
  496.    Autoback 1
  497.    Window 1 : Locate 0,0 : Cline : Pen 2 : Centre "Destination" : Ink 2 : Box 110,0 To 202,7
  498.    Window 2 : Locate 0,0 : Cline : Pen 1 : Centre "  Source   " : Ink 1 : Box 446,0 To 498,7
  499.    Window 2 : Pen 2
  500.    MESSAGE1$=Left$(DRECTORY2$,30)+"..."
  501.    Pen 1 : Locate 0,22 : Cline : Centre MESSAGE1$
  502.    MAKEFSZONES[0]
  503.    If(VIFF=1) and(KEY<>4) Then MAKEFSZONES[31]
  504.    If(VASC=1) and(KEY<>4) Then MAKEFSZONES[35]
  505.    If(BV=1) and(KEY<>4) Then MAKEFSZONES[41]
  506.    Pen 2
  507.    Autoback 0
  508.    Rem main loop
  509.    N2=KEEPN2
  510.    Y=KEEPY2
  511.    Do 
  512.       If Key State(95)=True Then HELPSELECTOR
  513.       X=1+Int((N2*Y)/170) : KEEPX2=X
  514.       Rem Read mouse 
  515.       If Mouse Zone=1 and Mouse Key Then Y=Y Screen(Y Mouse) : KEEPY2=Y
  516.       For I=2 To 21
  517.          If Mouse Zone=I and Mouse Key and BV=1 and X+I-2<N2+1 Then M2=M2+1 : GTFILE[2] : J$(X+I-2)=FLE2$(M2) : SCN : PROG$="PE" : DISPLAY : PROG$="FS" : SCN3 : M2=M2-1 : KEY=5 : Goto REASYLOOK
  518.          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
  519.          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
  520.          '
  521.          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
  522.          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
  523.          '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
  524.          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
  525.          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
  526.          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
  527.          '
  528.          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)
  529.          If Mouse Zone=I and Mouse Key and Instr(L2$(X+I-2),"*")=1 Then GTDIREC2 : DRECTORY2$=DRECTORY$ : RESET2 : WN2DIR : Goto REASYLOOK2
  530.       Next I
  531.       If Mouse Zone=22 and Mouse Key Then ZP : MAKEFSZONES[0] : Goto WN1
  532.       If Mouse Zone=23 and Mouse Key Then ZP : MAKEFSZONES[0] : RESET2 : WN2DIR : Goto REASYLOOK2
  533.       If Mouse Zone=24 and Mouse Key Then MAKEFSZONES[24] : ZP : GTPAR : DRECTORY2$=DRECTORY$ : RESET2 : WN2DIR : Goto REASYLOOK2
  534.       If Mouse Zone=25 and Mouse Key Then MAKEFSZONES[25] : ZP : GTNEWDRECTORY : DRECTORY2$=DRECTORY$ : RESET2 : WN2DIR : Goto REASYLOOK2
  535.       If Mouse Zone=26 and Mouse Key Then MAKEFSZONES[26] : ZP : MDIR : MAKEFSZONES[0]
  536.       If Mouse Zone=27 and Mouse Key Then MAKEFSZONES[27] : ZP : ERASDIR : MAKEFSZONES[0]
  537.       If Mouse Zone=28 and Mouse Key Then MAKEFSZONES[28] : ZP : CPYFILES : MAKEFSZONES[0]
  538.       If Mouse Zone=29 and Mouse Key Then MAKEFSZONES[29] : ZP : KLLFILES : MAKEFSZONES[0]
  539.       If Mouse Zone=30 and Mouse Key Then MAKEFSZONES[30] : ZP : RETITLE : MAKEFSZONES[0]
  540.       If(Mouse Zone=31) and(Mouse Key) and(VIFF=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[31] : VIFF=1
  541.       If(Mouse Zone=31) and(Mouse Key) and(VIFF=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  542.       If Mouse Zone=32 and Mouse Key Then MAKEFSZONES[32] : ZP : AUTOVIEW : KEY=5 : Goto REASYLOOK
  543.       If Mouse Zone=33 and Mouse Key Then While Mouse Key<>0 : Wend : MAKEFSZONES[33] : ZP : MUSI : MAKEFSZONES[0]
  544.       If(Mouse Zone=34) and(Mouse Key) and(MUZIC=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[34] : CLARIFY : MUZIC=1
  545.       If(Mouse Zone=34) and(Mouse Key) and(MUZIC=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  546.       If(Mouse Zone=35) and(Mouse Key) and(VASC=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[35] : VASC=1
  547.       If(Mouse Zone=35) and(Mouse Key) and(VASC=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  548.       If Mouse Zone=36 and Mouse Key Then MAKEFSZONES[36] : ZP : BYFREE : MAKEFSZONES[0]
  549.       If(Mouse Zone=41) and(Mouse Key) and(BV=0) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[41] : BV=1
  550.       If(Mouse Zone=41) and(Mouse Key) and(BV=1) Then ZP : While Mouse Key<>0 : Wend : MAKEFSZONES[0]
  551.       If Mouse Zone=42 and Mouse Key Then MAKEFSZONES[42] : ZP : RNFILE : MAKEFSZONES[0]
  552.       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]
  553.       If Mouse Zone=44 and Mouse Key Then MAKEFSZONES[44] : ZP : HELPSELECTOR : MAKEFSZONES[0]
  554.       If Mouse Zone=45 and Mouse Key Then MAKEFSZONES[45] : ZP : SCN : Goto XIT
  555.       X=KEEPX2 : Y=KEEPY2
  556.       If Y>170 Then Y=170
  557.       Rem If slider has moved change it  
  558.       If Y<>YM and Mouse Key=1 : YM=Y : End If 
  559.       Rem Update display 
  560.       For I=1 To 20
  561.          Locate 2,I : Cline 
  562.          If(KEY<>1) and(KEY<>4) Then UD[I+1]
  563.          Print Left$(L2$(X+I-1),38);
  564.          Inverse Off 
  565.       Next I
  566.       VSLIDE[Y]
  567.       Rem Double buffering smooths the effect  
  568.       Screen Swap : Wait Vbl 
  569.       For I=1 To 20
  570.          Locate 2,I
  571.          If(KEY<>1) and(KEY<>4) Then UD[I+1]
  572.          Print Left$(L2$(X+I-1),38);
  573.          Inverse Off 
  574.       Next I
  575.       VSLIDE[Y]
  576.       If KEY=1 Then KEY=2 : Goto WN1
  577.       If KEY=4 Then KEY=0 : Goto WN1
  578.    Loop 
  579.    XIT:
  580. End Proc
  581. Procedure MAKEFSZONES[PL]
  582.    Autoback 1
  583.    On Error Goto ER
  584.    Goto OK
  585.    ER:
  586.    ERR
  587.    Resume XIT
  588.    OK:
  589.    MIT$(24)="Parent"
  590.    MIT$(25)="New Directory"
  591.    MIT$(26)="Make Dir"
  592.    MIT$(27)="Erase Dir"
  593.    MIT$(28)="Copy"
  594.    MIT$(29)="Delete /!\"
  595.    MIT$(30)="Rename"
  596.    MIT$(31)="Picture.IFF"
  597.    MIT$(32)="AutoView"
  598.    MIT$(33)="Music"
  599.    MIT$(34)="Sounds"
  600.    MIT$(35)="Text ASCII"
  601.    MIT$(36)="Memory"
  602.    MIT$(41)="ViewPage"
  603.    MIT$(42)="[Run]   /!\"
  604.    MIT$(43)="Colours"
  605.    MIT$(44)="Help"
  606.    MIT$(45)="End"
  607.    Reserve Zone 
  608.    Reserve Zone 46
  609.    Set Zone 22,112,0 To 200,7
  610.    Set Zone 23,432,0 To 520,7
  611.    Set Zone 1,0,0 To 10,170
  612.    Writing 1
  613.    For I=2 To 21
  614.       Locate 3,I-1
  615.       Print Zone$("           ",I)
  616.    Next I
  617.    Writing 0
  618.    Window 3
  619.    For II=24 To 30
  620.       CL=3
  621.       If II=PL Then CL=1
  622.       PBT[5,(II-24),MIT$(II),II,CL]
  623.    Next II
  624.    For II=31 To 36
  625.       CL=3
  626.       If II=PL Then CL=1
  627.       PBT[21,(II-31),MIT$(II),II,CL]
  628.    Next II
  629.    For II=41 To 45
  630.       CL=3
  631.       If II=PL Then CL=1
  632.       PBT[41,(II-41),MIT$(II),II,CL]
  633.    Next II
  634.    Autoback 0
  635.    Window SOURCE
  636.    Pen 2
  637.    XIT:
  638. End Proc
  639. Procedure VSLIDEFS[Y]
  640.    Set Slider 0,1,3,1,0,3,3,1
  641.    Rem Display a slider bar using the Vslider command 
  642.    Vslider 0,0 To 10,170,170,Y,5
  643. End Proc
  644. '
  645. Procedure HELPSELECTOR
  646.    On Error Goto ER
  647.    Goto OK
  648.    ER:
  649.    ERR
  650.    Resume XIT
  651.    OK:
  652.    Screen Open 2,640,256,4,Hires
  653.    Curs Off : Paper 0 : Cls 0
  654.    Colour 1,$FF0 : Set Tab 7
  655.    Print 
  656.    Print : Centre "***** HELP *****"
  657.    Print : Centre " Selector - Multiple File Handler"
  658.    Print : Print 
  659.    Print Tab$+" Files - Delete,Rename,Copy Files"
  660.    Print Tab$+"       - use NoteBook to Delete or Copy Single Files"
  661.    Print Tab$+"         Make,Erase Directory. Display Free bytes"
  662.    Print Tab$+"         L.Amiga A to toggle WB for Format,Disk Copy etc"
  663.    Print 
  664.    Print Tab$+" DisplayIFF - Pictures. Use Left Mouse Key to Exit"
  665.    Print Tab$+"              Use Right Mouse Key for all/part Screen Printout"
  666.    Print Tab$+" AutoView   - for IFF Pictures Use Left Mouse Key to Exit"
  667.    Print Tab$+" Music      - Toggles Music (AMOS/Tracker module/Raw/IFF) on/off"
  668.    Print Tab$+" Sounds     - Raw/IFF Music Sample Player"
  669.    Print Tab$+" Text.ASCII - Left Mouse to continue, Right Mouse to interrupt"
  670.    Print Tab$+"            - At End - Left Mouse to exit"
  671.    Print Tab$+"                     - Right Mouse for Speech/Printout Menu"
  672.    Print Tab$+" ViewPage   - for NoteBook Text and Main NoteBook Menu"
  673.    Print 
  674.    Print Tab$+" Print - (Display IFF menu) needs WorkBench Preferences"
  675.    Print Tab$+"         L.Amiga A to toggle Prefs & change "
  676.    Print Tab$+"       - (ASCII menu) - prints ASCII text"
  677.    Flash 3,"(f00,32)(f80,32)(ff0,32)(0f0,32)(08f,32)(88f,32)(f0f,32)"
  678.    Print : Centre "If Display IFF Picture Menu is unreadable"
  679.    Pen 3
  680.    Print : Centre "[O] or [NumL] or [F3]"
  681.    Pen 2
  682.    Print : Centre "cycle pen colours"
  683.    Ink 1 : Box 50,10 To 580,220
  684.    While Mouse Key<>0 : Wend 
  685.    While Key State(90)=True : Wend 
  686.    Do 
  687.       If(Mouse Key=1) or(Key State(95)) Then Exit 
  688.    Loop 
  689.    Screen Close 2
  690.    Wait 50
  691.    XIT:
  692. End Proc
  693. Procedure GTFILE[TIPE]
  694.    On Error Goto ER
  695.    Goto OK
  696.    ER:
  697.    ERR
  698.    Resume XIT
  699.    OK:
  700.    Rem Assuming file {L$(X+I-2)} has no 'double-space' !!!  
  701.    If TIPE=1
  702.       POSN=Instr(L$(X+I-2),"  ")
  703.       LL$=Left$(L$(X+I-2),POSN-1)
  704.    End If 
  705.    If TIPE=2
  706.       POSN=Instr(L2$(X+I-2),"  ")
  707.       LL$=Left$(L2$(X+I-2),POSN-1)
  708.    End If 
  709.    POSN=Instr(LL$," ") : LL$=Mid$(LL$,POSN+1)
  710.    If(TIPE=1) and(Right$(DRECTORY$,1)=":") Then FLE$(M)=DRECTORY$+LL$ : Goto XIT
  711.    If(TIPE=1) and(Right$(DRECTORY$,1)<>":") Then FLE$(M)=DRECTORY$+"/"+LL$ : Goto XIT
  712.    If(TIPE=2) and(Right$(DRECTORY$,1)=":") Then FLE2$(M2)=DRECTORY$+LL$ : Goto XIT
  713.    If(TIPE=2) and(Right$(DRECTORY$,1)<>":") Then FLE2$(M2)=DRECTORY$+"/"+LL$ : Goto XIT
  714.    XIT:
  715. End Proc
  716. Procedure GTDIREC
  717.    On Error Goto ER
  718.    Goto OK
  719.    ER:
  720.    ERR
  721.    Resume XIT
  722.    OK:
  723.    Rem Assuming directory has no 'double space' !!! 
  724.    POSN=Instr(L$(X+I-2),"  ")
  725.    If Right$(DRECTORY$,1)=":" Then DRECTORY$=DRECTORY$+Mid$(L$(X+I-2),2,POSN-2) : Goto XIT
  726.    If Right$(DRECTORY$,1)<>":" Then DRECTORY$=DRECTORY$+"/"+Mid$(L$(X+I-2),2,POSN-2)
  727.    XIT:
  728. End Proc
  729. Procedure GTDIREC2
  730.    On Error Goto ER
  731.    Goto OK
  732.    ER:
  733.    ERR
  734.    Resume XIT
  735.    OK:
  736.    Rem Assuming directory has no 'double space' !!! 
  737.    POSN=Instr(L2$(X+I-2),"  ")
  738.    If Right$(DRECTORY$,1)=":" Then DRECTORY$=DRECTORY$+Mid$(L2$(X+I-2),2,POSN-2) : Goto XIT
  739.    If Right$(DRECTORY$,1)<>":" Then DRECTORY$=DR$+"/"+Mid$(L2$(X+I-2),2,POSN-2)
  740.    XIT:
  741. End Proc
  742. Procedure GTPAR
  743.    On Error Goto ER
  744.    Goto OK
  745.    ER:
  746.    ERR
  747.    Resume XIT
  748.    OK:
  749.    If Right$(DRECTORY$,1)=":" Then Goto XIT
  750.    POSION=Instr(Flip$(DRECTORY$),"/")
  751.    POSION2=Instr(Flip$(DRECTORY$),":")
  752.    If POSION<>0 Then DRECTORY$=Left$(DRECTORY$,Len(DRECTORY$)-POSION)
  753.    If POSION=0 Then DRECTORY$=Left$(DRECTORY$,Len(DRECTORY$)-POSION2+1)
  754.    XIT:
  755. End Proc
  756. Procedure GTNEWDRECTORY
  757.    Dim DIT$(11)
  758.    On Error Goto ER
  759.    Goto OK
  760.    ER:
  761.    ERR
  762.    Resume XIT
  763.    OK:
  764.    Screen Open 1,320,56,4,Hires
  765.    Screen Display 1,200,100,320,56
  766.    Curs Off : Cls 1 : Colour 0,$70
  767.    Print : Centre "Select New Directory"
  768.    DIT$(1)="DF0:"
  769.    DIT$(2)="DF1:"
  770.    DIT$(3)="DH0:"
  771.    DIT$(4)="DH1:"
  772.    DIT$(5)="DH2:"
  773.    DIT$(6)="DH3:"
  774.    DIT$(7)="DH4:"
  775.    DIT$(8)="DH5:"
  776.    DIT$(9)="DH6:"
  777.    DIT$(10)="DH7:"
  778.    DIT$(11)="Other"
  779.    Reserve Zone 
  780.    Reserve Zone 11
  781.    Paper 0 : Locate 0,3
  782.    For II=1 To 6
  783.       If Exist(DIT$(II)) Then Cright : Print Zone$(DIT$(II),II);
  784.    Next II
  785.    Locate 0,5
  786.    For II=7 To 10
  787.       If Exist(DIT$(II)) Then Cright : Print Zone$(DIT$(II),II);
  788.    Next II
  789.    Locate 30,5
  790.    Print Zone$(DIT$(11),11)
  791.    Do 
  792.       For I=1 To 10
  793.          If Mouse Zone=I and Mouse Key
  794.             If Exist(DIT$(I))
  795.                DRECTORY$=DIT$(I) : Dir$=DIT$(I) : Goto XIT
  796.             End If 
  797.          End If 
  798.       Next I
  799.       If Mouse Zone=11 and Mouse Key Then Exit 
  800.    Loop 
  801.    Cls 1 : Paper 1 : Home 
  802.    Locate 0,2 : Centre "Directory Change"
  803.    RETRY:
  804.    Locate 0,4 : Input " Enter New Directory ";DRECTORY3$
  805.    If(DRECTORY3$="") or(DRECTORY3$=":") Then Goto XIT
  806.    If Instr(DRECTORY3$,":")=0 Then Cls : Locate 0,1 : Centre "Error - No ':' detected" : Goto RETRY
  807.    If Right$(DRECTORY3$,1)="/" Then DRECTORY3$=Left$(DRECTORY3$,Len(DRECTORY3$)-1)
  808.    If Not Exist(DRECTORY3$) Then Cls : Locate 0,1 : Centre "Directory Not Found" : Goto RETRY
  809.    DRECTORY$=DRECTORY3$
  810.    XIT:
  811.    Screen Close 1
  812. End Proc
  813. Procedure CPYFILES
  814.    On Error Goto ER
  815.    Goto OK
  816.    ER:
  817.    ERR
  818.    Resume XIT
  819.    OK:
  820.    If SOURCE=1
  821.       For III=1 To M
  822.          Erase 6
  823.          F$=FLE$(III)
  824.          ALTERF$
  825.          If Right$(DRECTORY2$,1)=":"
  826.             G$=DRECTORY2$+F$
  827.          End If 
  828.          If Right$(DRECTORY2$,1)<>":"
  829.             G$=DRECTORY2$+"/"+F$
  830.          End If 
  831.          Open In 1,FLE$(III) : LFILE=Lof(1) : Close 1
  832.          Reserve As Work 6,LFILE
  833.          Bload FLE$(III),Start(6)
  834.          Bsave G$,Start(6) To Start(6)+LFILE
  835.       Next III
  836.    End If 
  837.    If SOURCE=2
  838.       For III=1 To M2
  839.          Erase 6
  840.          F$=FLE2$(III)
  841.          ALTERF$
  842.          If Right$(DRECTORY1$,1)=":"
  843.             G$=DRECTORY1$+F$
  844.          End If 
  845.          If Right$(DRECTORY1$,1)<>":"
  846.             G$=DRECTORY1$+"/"+F$
  847.          End If 
  848.          Open In 1,FLE2$(III) : LFILE=Lof(1) : Close 1
  849.          Reserve As Work 6,LFILE
  850.          Bload FLE2$(III),Start(6)
  851.          Bsave G$,Start(6) To Start(6)+LFILE
  852.       Next III
  853.    End If 
  854.    XIT:
  855.    Erase 6
  856. End Proc
  857. Procedure KLLFILES
  858.    On Error Goto ER
  859.    Goto OK
  860.    ER:
  861.    ERR
  862.    Resume XIT
  863.    OK:
  864.    Screen Open 1,320,48,4,Hires
  865.    Screen Display 1,200,100,320,48
  866.    Curs Off : Cls 1 : Flash Off : Colour 3,$FF0
  867.    Print : Centre "/!\ All Marked Files Will be Deleted /!\"
  868.    Print : Print 
  869.    Reserve Zone 
  870.    Reserve Zone 2
  871.    Pen 3
  872.    Locate 10,3 : Print Border$(Zone$("Confirm",1),1)
  873.    Locate 25,3 : Print Border$(Zone$("Cancel",2),1)
  874.    Do 
  875.       If Mouse Zone=2 and Mouse Key Then Screen Close 1 : Goto XIT
  876.       If Mouse Zone=1 and Mouse Key Then Screen Close 1 : Exit 
  877.    Loop 
  878.    If SOURCE=1
  879.       For III=1 To M
  880.          Kill FLE$(III)
  881.       Next III
  882.    End If 
  883.    If SOURCE=2
  884.       For III=1 To M2
  885.          Kill FLE2$(III)
  886.       Next III
  887.    End If 
  888.    XIT:
  889. End Proc
  890. Procedure RETITLE
  891.    On Error Goto ER
  892.    Goto OK
  893.    ER:
  894.    ERR
  895.    Resume XIT
  896.    OK:
  897.    FG$=FF$
  898.    Dir$=FF$
  899.    RETIT:
  900.    FILESELECTQZ[FG$,"SWITCH"," Select File to Retitle"," Quit to Leave "]
  901.    If F$="" Then Goto XIT
  902.    '
  903.    Rem Temp Dir Change
  904.    FG$=Flip$(Dir$)
  905.    If Instr(FG$,"/")<>0
  906.       FG$=Mid$(FG$,Instr(FG$,"/")) : FG$=Flip$(FG$) : Goto OK2
  907.    End If 
  908.    If Instr(FG$,":")<>0
  909.       FG$=Mid$(FG$,Instr(FG$,":")) : FG$=Flip$(FG$) : Goto OK2
  910.    End If 
  911.    OK2:
  912.    '
  913.    L=Len(F$)
  914.    If L<=28 Then A$=" ReName: "+F$
  915.    If L>28 Then A$=" ReName: ... "+Right$(F$,25)
  916.    KEEPKEEPF$=F$
  917.    '   If FGMARKER=1 Then FGMARKER=2 : GF$=FG$
  918.    FILESELECTQZ[FG$,"SWITCH",A$," as . . ."]
  919.    G$=F$
  920.    F$=KEEPKEEPF$
  921.    If G$="" Then Goto XIT
  922.    Rename F$ To G$
  923.    Goto RETIT
  924.    XIT:
  925.    Curs Off 
  926. End Proc
  927. Procedure BYFREE
  928.    Clear Key 
  929.    On Error Goto ER
  930.    Goto OK
  931.    ER:
  932.    ERR
  933.    Resume XIT
  934.    OK:
  935.    Screen Open 1,320,48,4,Hires
  936.    Screen Display 1,200,100,320,48
  937.    Curs Off : Cls 1
  938.    KEEPDIR$=Dir$
  939.    If SOURCE=1 Then Dir$=DRECTORY1$
  940.    If SOURCE=2 Then Dir$=DRECTORY2$
  941.    If SOURCE=0 Then Dir$=FF$
  942.    Print 
  943.    Print : Centre " Free Memory (bytes) "
  944.    Print 
  945.    Print : Centre " Disk "+Str$(Dfree)
  946.    Print : Centre "{"+"Chip:"+Str$(Chip Free)+"   "+"Fast:"+Str$(Fast Free)+"}"
  947.    Print 
  948.    Wait 50
  949.    Do : Exit If Mouse Key=1 : Loop 
  950.    Screen Close 1
  951.    XIT:
  952.    Dir$=KEEPDIR$
  953. End Proc
  954. Procedure DISPLAYIFF
  955.    On Error Goto ER
  956.    Goto OK
  957.    ER:
  958.    ERR
  959.    Resume XIT
  960.    OK:
  961.    If Exist(FIFF$) Then Load Iff FIFF$,0 : Goto OK2
  962.    Cls 0
  963.    Locate 0,8
  964.    Centre "File"
  965.    Locate 0,10
  966.    Centre FIFF$
  967.    Print 
  968.    Print 
  969.    Centre "does not exist"
  970.    Wait 50
  971.    While Mouse Key<>1 : Wend 
  972.    Goto XIT
  973.    OK2:
  974.    PCL=0
  975.    Pen PCL
  976.    CHANGEPEN[1,0]
  977.    BEGINNINGS:
  978.    Menu Del 
  979.    Menu$(1)=" Options "
  980.    Menu$(1,1)=" Print Screen "
  981.    Menu$(1,2)=" Exit "
  982.    Menu$(1,3)="  [(LO24,0)(SS6)A(LO36,0)(SS0)A]><Prefs "
  983.    Do 
  984.       KK$=""
  985.       Menu Off 
  986.       Menu On 
  987.       While KK$="" and Mouse Key<>1 and Choice<>-1
  988.          KK$=Inkey$
  989.          If Key State(37)=True Then Hide On : While Key State(37)=True : 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 
  990.       Wend 
  991.       If Mouse Key=1 Then Exit 
  992.       If KK$<>"" Then Goto NCH
  993.       If Choice(1)=1 and Choice(2)=1 Then PRNTOUT[0]
  994.       If Choice(1)=1 and Choice(2)=2 Then Exit 
  995.       NCH:
  996.       S=Scancode
  997.       CN=Screen Colour
  998.       If Key State(95)=True Then HELPSELECTOR : Goto BEGINNINGS
  999.       If Key State(90)=True Then PCL=(PCL+1) mod CN : Pen PCL : Goto BEGINNINGS
  1000.       If Key State(82)=True Then PCL=(PCL+1) mod CN : Pen PCL : Goto BEGINNINGS
  1001.       If Key State(24)=True Then PCL=(PCL+1) mod CN : Pen PCL : Goto BEGINNINGS
  1002.       If Key State(93)=True Then PRNTOUT[0] : Goto BEGINNINGS
  1003.       If Key State(87)=True Then PRNTOUT[0] : Goto BEGINNINGS
  1004.       If S=29 Then Exit 
  1005.       If S=86 Then Exit 
  1006.       If S=93 Then PRNTOUT[0]
  1007.       If S=87 Then PRNTOUT[0]
  1008.    Loop 
  1009.    XIT:
  1010.    SCN
  1011. End Proc
  1012. Procedure DISPLAYASCII
  1013.    TALKING=0
  1014.    On Error Goto ER
  1015.    Goto OK
  1016.    ER:
  1017.    TALKING=0
  1018.    ERR
  1019.    Resume XIT
  1020.    OK:
  1021.    If Exist(FASC$) Then Goto OK2
  1022.    Cls 0
  1023.    Locate 0,8
  1024.    Centre "File"
  1025.    Locate 0,10
  1026.    Centre FASC$
  1027.    Print 
  1028.    Print 
  1029.    Centre "does not exist"
  1030.    Wait 50
  1031.    While Mouse Key<>1 : Wend 
  1032.    Goto XIT
  1033.    OK2:
  1034.    Screen Open 0,640,256,2,Hires
  1035.    Curs Off : Colour 1,$FF0 : Cls 0
  1036.    Wait 25
  1037.    While Mouse Key<>0 : Wend 
  1038.    TLK:
  1039.    Cls 0
  1040.    Open In 1,FASC$
  1041.    Rem Old NoteBook Codes could be Page Numbers - so next four lines ignored !
  1042.    '   If Lof(1)>=3 Then A$=Input$(1,3) : If(Instr("12",Mid$(A$,1,1))<>0) and(Instr("01",Mid$(A$,2,1))<>0) and Asc(Mid$(A$,3,1))=13 Then Pof(1)=3 : LFILE=Lof(1)-3 : Goto OK3 
  1043.    '   Pof(1)=0 
  1044.    '   If Lof(1)>=5 Then A$=Input$(1,5) : If(Instr("12",Mid$(A$,2,1))<>0) and(Instr("01",Mid$(A$,4,1))<>0) and Asc(Mid$(A$,5,1))=13 Then Pof(1)=5 : LFILE=Lof(1)-5 : Goto OK3 
  1045.    '   Pof(1)=0 
  1046.    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
  1047.    Pof(1)=0
  1048.    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
  1049.    Pof(1)=0 : LFILE=Lof(1)
  1050.    OK3:
  1051.    COUNTMAX=LFILE/400
  1052.    COUNT=0
  1053.    While Mouse Key<>0 : Wend 
  1054.    COUNTMKR=0
  1055.    Do 
  1056.       If COUNTMKR=1 Then COUNTMKR=0 : Exit 
  1057.       COUNT=COUNT+1
  1058.       LREM=400
  1059.       If COUNT>COUNTMAX Then LREM=LFILE-400*COUNTMAX : COUNTMKR=1
  1060.       A$=Input$(1,LREM)
  1061.       For I=1 To LREM
  1062.          If Asc(Mid$(A$,I,1))=10 Then Print Chr$(10);Chr$(13); : Goto XX
  1063.          If Asc(Mid$(A$,I,1))<=31 Then Goto XX
  1064.          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
  1065.          If(X Curs=0) and(Mid$(A$,I,1)=" ") and(Mid$(A$,I+1,1)<>" ") Then Goto XX
  1066.          Print Mid$(A$,I,1);
  1067.          If TALKING=1 Then SY$=SY$+Mid$(A$,I,1)
  1068.          XX:
  1069.          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
  1070.       Next I
  1071.       If TALKING=1 Then Say SY$ : SY$=""
  1072.       Clear Key 
  1073.       While Mouse Key=0
  1074.          If Key State(95)=True Then HELPSELECTOR
  1075.       Wend 
  1076.       If Mouse Key=2 Then Exit 
  1077.    Loop 
  1078.    Close 1
  1079.    Wait 50
  1080.    Print : Print : Centre "!!!!!!!!! End !!!!!!!!!"
  1081.    Print : Centre "( Right Mouse - Menu : Left Mouse - Exit )"
  1082.    Wait 50
  1083.    BEGINNINGS:
  1084.    Pen 1 : Paper 0
  1085.    Menu Del 
  1086.    Menu$(1)=" Options "
  1087.    Menu$(1,1)=" Print "
  1088.    '''''''''''''''''''''''''''''' 
  1089.    On Error Goto ERSAY
  1090.    Goto OKSAY
  1091.    ERSAY:
  1092.    Resume NOSAY
  1093.    OKSAY:
  1094.    Set Talk ,,,
  1095.    Menu$(1,2)=" Say "
  1096.    NOSAY:
  1097.    '''''''''''''''''''''''''''''
  1098.    '   Menu$(1,2)=" Say " 
  1099.    Menu$(1,3)=" End "
  1100.    Do 
  1101.       TALKING=0
  1102.       KK$=""
  1103.       Menu Off 
  1104.       Menu On 
  1105.       While Mouse Key<>1 and Choice<>-1
  1106.       Wend 
  1107.       If Mouse Key=1 Then Exit 
  1108.       If KK$<>"" Then Goto NCH
  1109.       If Choice(1)=1 and Choice(2)=1 Then PRASC
  1110.       If Choice(1)=1 and Choice(2)=2 Then TALK
  1111.       If TALKING=1 Then Home : Goto TLK
  1112.       If Choice(1)=1 and Choice(2)=3 Then Exit 
  1113.       NCH:
  1114.    Loop 
  1115.    XIT:
  1116. End Proc
  1117. Procedure PRASC
  1118.    Open In 1,FASC$
  1119.    Open Port 2,"PRT:"
  1120.    Rem Old NoteBook Codes could be Page Numbers - so next four lines ignored !
  1121.    '   If Lof(1)>=3 Then A$=Input$(1,3) : If(Instr("12",Mid$(A$,1,1))<>0) and(Instr("01",Mid$(A$,2,1))<>0) and Asc(Mid$(A$,3,1))=13 Then Pof(1)=3 : LFILE=Lof(1)-3 : Goto OK3 
  1122.    '   Pof(1)=0 
  1123.    '   If Lof(1)>=5 Then A$=Input$(1,5) : If(Instr("12",Mid$(A$,2,1))<>0) and(Instr("01",Mid$(A$,4,1))<>0) and Asc(Mid$(A$,5,1))=13 Then Pof(1)=5 : LFILE=Lof(1)-5 : Goto OK3 
  1124.    '   Pof(1)=0 
  1125.    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
  1126.    Pof(1)=0
  1127.    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
  1128.    Pof(1)=0 : LFILE=Lof(1)
  1129.    OK3:
  1130.    COUNTMAX=LFILE/400
  1131.    COUNT=0
  1132.    While Mouse Key<>0 : Wend 
  1133.    COUNTMKR=0
  1134.    Do 
  1135.       If COUNTMKR=1 Then COUNTMKR=0 : Exit 
  1136.       COUNT=COUNT+1
  1137.       LREM=400
  1138.       If COUNT>COUNTMAX Then LREM=LFILE-400*COUNTMAX : COUNTMKR=1
  1139.       A$=Input$(1,LREM)
  1140.       For I=1 To LREM
  1141.          If Asc(Mid$(A$,I,1))=10 Then Print #2,Chr$(10);Chr$(13); : Goto XX
  1142.          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
  1143.          If(X Curs=0) and(Mid$(A$,I,1)=" ") and(Mid$(A$,I+1,1)<>" ") Then Goto XX
  1144.          Print #2,Mid$(A$,I,1);
  1145.          XX:
  1146.       Next I
  1147.    Loop 
  1148.    Close 1
  1149.    Close 2
  1150.    XIT:
  1151. End Proc
  1152. Procedure TALK
  1153.    TALKING=0
  1154.    Clear Key 
  1155.    On Error Goto ER
  1156.    Goto OK
  1157.    ER:
  1158.    TALKING=0
  1159.    ERR
  1160.    Resume XIT
  1161.    OK:
  1162.    Screen Open 1,320,56,4,Hires
  1163.    Screen Display 1,200,100,320,56
  1164.    Curs Off : Cls 1
  1165.    Print : Centre "Enter TALK parameters"
  1166.    Print 
  1167.    Input " Sex Male(0)  Female(1)  ";S1
  1168.    Input " Mode Normal(0)  Rythmic(1) ";S2
  1169.    Input " Pitch Low(65) -  High(320)  ";S3
  1170.    Input " Speed Words/Minute 40 - 400 ";S4;
  1171.    Curs Off 
  1172.    Screen Close 1
  1173.    If(S1<>0) and(S1<>1) Then S1=0
  1174.    If(S2<>0) and(S2<>1) Then S2=0
  1175.    If(S3>320) or(S3<65) Then S3=150
  1176.    If(S4<40) or(S4>400) Then S4=150
  1177.    Set Talk S1,S2,S3,S4
  1178.    TALKING=1
  1179.    XIT:
  1180. End Proc
  1181. Procedure AUTOVIEW
  1182.    On Error Goto ER
  1183.    Goto OK
  1184.    ER:
  1185.    ERR
  1186.    Resume XIT
  1187.    OK:
  1188.    Screen Open 1,320,48,4,Hires
  1189.    Screen Display 1,200,100,320,48
  1190.    Curs Off : Cls 1 : Flash Off : Colour 3,$FF0 : Colour 2,$A
  1191.    Reserve Zone 
  1192.    Reserve Zone 5
  1193.    Pen 3
  1194.    Print : Centre "Time"
  1195.    MN#=0 : SE#=30
  1196.    Do 
  1197.       Paper 1 : Locate 2,3 : Print "Mins";
  1198.       Paper 2 : Locate 7,3 : Print MN#;" ";
  1199.       Locate 12,3 : Print Zone$(Chr$(147)+Chr$(148),1);
  1200.       Locate 18,3 : Print Zone$(Chr$(149)+Chr$(150),2);
  1201.       Paper 1 : Locate 2,4 : Print "Secs";
  1202.       Paper 2 : Locate 7,4 : Print SE#;" ";
  1203.       Locate 12,4 : Print Zone$(Chr$(147)+Chr$(148),3);
  1204.       Locate 18,4 : Print Zone$(Chr$(149)+Chr$(150),4);
  1205.       Locate 25,4 : Print Zone$("Exit",5);
  1206.       If Mouse Zone=1 and Mouse Key Then MN#=MN#+1 : Wait 10 : If MN#>60 Then MN#=60
  1207.       If Mouse Zone=2 and Mouse Key Then MN#=MN#-1 : Wait 10 : If MN#<0 Then MN#=0
  1208.       If Mouse Zone=3 and Mouse Key Then SE#=SE#+1 : Wait 10 : If SE#>60 Then SE#=60
  1209.       If Mouse Zone=4 and Mouse Key Then SE#=SE#-1 : Wait 10 : If SE#<0 Then SE#=0
  1210.       If Mouse Zone=5 and Mouse Key Then Exit 
  1211.    Loop 
  1212.    WT#=SE#*50+MN#*60*50
  1213.    WT=1+Int(WT#)
  1214.    Screen Close 1
  1215.    SCN
  1216.    Do 
  1217.       If SOURCE=1
  1218.          H=0
  1219.          For III=1 To M
  1220.             Load Iff FLE$(III),0
  1221.             For IJ=1 To WT
  1222.                Wait Vbl 
  1223.                If Mouse Key=1 : Goto XIT : End If 
  1224.                KH$=Inkey$
  1225.                If(KH$="H") or(KH$="h")
  1226.                   H=H+1
  1227.                   If H mod 2=1
  1228.                      Hide 
  1229.                   Else Show 
  1230.                   End If 
  1231.                   While Inkey$<>"" : Wend : Clear Key 
  1232.                End If 
  1233.             Next IJ
  1234.          Next III
  1235.       End If 
  1236.       If SOURCE=2
  1237.          H=0
  1238.          For III=1 To M2
  1239.             Load Iff FLE2$(III),0
  1240.             For IJ=1 To WT
  1241.                Wait Vbl 
  1242.                If Mouse Key=1 : Goto XIT : End If 
  1243.                KH$=Inkey$
  1244.                If(KH$="H") or(KH$="h")
  1245.                   H=H+1
  1246.                   If H mod 2=1
  1247.                      Hide 
  1248.                   Else Show 
  1249.                   End If 
  1250.                   While Inkey$<>"" : Wend : Clear Key 
  1251.                End If 
  1252.             Next IJ
  1253.          Next III
  1254.       End If 
  1255.    Loop 
  1256.    XIT:
  1257.    Clear Key 
  1258.    Show 
  1259.    SCN3
  1260. End Proc
  1261. Procedure RNFILE
  1262.    On Error Goto ER
  1263.    Goto OK
  1264.    ER:
  1265.    ERR
  1266.    Resume XIT
  1267.    OK:
  1268.    Screen Open 1,320,48,4,Hires
  1269.    Screen Display 1,200,100,320,48
  1270.    Curs Off : Cls 1 : Flash Off : Colour 3,$FF0
  1271.    Centre "/!\ Current Program will be Lost /!\"
  1272.    Print : Centre "FOR COMPILED AMOS PROGRAMS"
  1273.    Print : Centre "Eg ScrapBook,NoteBook,Evaluator"
  1274.    Reserve Zone 
  1275.    Reserve Zone 2
  1276.    Pen 3
  1277.    Locate 10,4 : Print Border$(Zone$("Confirm",1),1)
  1278.    Locate 25,4 : Print Border$(Zone$("Cancel",2),1)
  1279.    Do 
  1280.       If Mouse Zone=2 and Mouse Key Then Screen Close 1 : Goto XIT
  1281.       If Mouse Zone=1 and Mouse Key Then Screen Close 1 : Exit 
  1282.    Loop 
  1283.    FILESELECTQZ[DRECTORY$,"SWITCH","Select New Program",""]
  1284.    If F$="" Then Goto XIT
  1285.    Run F$
  1286.    Wait 50
  1287.    XIT:
  1288. End Proc
  1289. '
  1290. Procedure MUSI
  1291.    MM=MM+1
  1292.    If(MM mod 2)<>1
  1293.       Music Off : Track Stop : Erase 3 : Erase 7
  1294.       Goto XIT
  1295.    End If 
  1296.    On Error Goto ER
  1297.    Goto OK
  1298.    ER:
  1299.    ERR
  1300.    Resume XIT
  1301.    OK:
  1302.    Screen Open 1,320,48,4,Hires
  1303.    Screen Display 1,200,100,320,48
  1304.    Curs Off : Cls 1 : Colour 0,$77
  1305.    Print : Centre "*** Music ***"
  1306.    Reserve Zone 
  1307.    Reserve Zone 6
  1308.    Paper 0
  1309.    Locate 1,3 : Print Zone$("Amos",1)
  1310.    Locate 7,3 : Print Zone$("Tracker",2)
  1311.    Rem Locate 16,3 : Print Zone$("Med",3) 
  1312.    Locate 21,3 : Print Zone$("IFF",4)
  1313.    Locate 26,3 : Print Zone$("Raw",5)
  1314.    Locate 33,3 : Print Zone$("Quit",6)
  1315.    Do 
  1316.       If Mouse Zone=1 and Mouse Key Then AMOSMUSIC=1 : Exit 
  1317.       If Mouse Zone=2 and Mouse Key Then TRACKERMUSIC=1 : Exit 
  1318.       If Mouse Zone=3 and Mouse Key Then MEDMUSIC=1 : Exit 
  1319.       If Mouse Zone=4 and Mouse Key Then FFMUSIC=1 : Exit 
  1320.       If Mouse Zone=5 and Mouse Key Then RAWMUSIC=1 : Exit 
  1321.       If Mouse Zone=6 and Mouse Key Then Exit 
  1322.    Loop 
  1323.    Screen Close 1
  1324.    XIT:
  1325. End Proc
  1326. Procedure SOUNDSAMOS
  1327.    On Error Goto ER
  1328.    Goto OK
  1329.    ER:
  1330.    ERR
  1331.    Resume XIT
  1332.    OK:
  1333.    Screen Open 1,320,64,4,Hires
  1334.    Screen Display 1,200,100,320,64
  1335.    Curs Off : Cls 1 : Colour 0,$77
  1336.    Paper 0
  1337.    Locate 0,3 : Centre "AMOS Music Player"
  1338.    On Error Goto ER2
  1339.    Goto OK2
  1340.    ER2:
  1341.    Erase 3
  1342.    Screen Close 1
  1343.    CLEAN_UP
  1344.    ERR
  1345.    Resume XIT
  1346.    OK2:
  1347.    Load MUZIC$
  1348.    Music 1
  1349.    Cls 1 : Home 
  1350.    Paper 1 : Locate 0,2 : Centre "Keep Parameters ?"
  1351.    Reserve Zone 
  1352.    Reserve Zone 2
  1353.    Paper 0
  1354.    Locate 13,4 : Print Zone$("Yes",1)
  1355.    Locate 24,4 : Print Zone$("No",2)
  1356.    Do 
  1357.       If Mouse Zone=1 and Mouse Key Then Goto XIT2
  1358.       If Mouse Zone=2 and Mouse Key Then Goto MPRMS
  1359.    Loop 
  1360.    MPRMS:
  1361.    Paper 1 : Cls : Home : Print : Centre "Sound & Music"
  1362.    Print : Centre "To Keep Parameters Press [Enter]"
  1363.    Print : Input " Tempo 1-100 ? ";SS
  1364.    If(SS>=1) and(SS<=100)
  1365.       Tempo SS
  1366.    End If 
  1367.    Input " Volume 1-63 ? ";VV
  1368.    If(VV>=1) and(VV<=63)
  1369.       Mvolume VV
  1370.    End If 
  1371.    Clear Key 
  1372.    Print : Input " OK (y/n) ? ";O$
  1373.    If(O$="Y") or(O$="y") or(O$="")
  1374.       Goto XIT2
  1375.    End If 
  1376.    Goto MPRMS
  1377.    XIT2:
  1378.    Screen Close 1
  1379.    XIT:
  1380. End Proc
  1381. Procedure SOUNDSTRACKER
  1382.    On Error Goto ER
  1383.    Goto OK
  1384.    ER:
  1385.    ERR
  1386.    Resume XIT
  1387.    OK:
  1388.    Screen Open 1,320,64,4,Hires
  1389.    Screen Display 1,200,100,320,64
  1390.    Curs Off : Cls 1 : Colour 0,$77
  1391.    Paper 0
  1392.    Locate 0,3 : Centre "Tracker Music Player"
  1393.    On Error Goto ER2
  1394.    Goto OK2
  1395.    ER2:
  1396.    Erase 3
  1397.    Screen Close 1
  1398.    CLEAN_UP
  1399.    ERR
  1400.    Resume XIT
  1401.    OK2:
  1402.    Track Loop On 
  1403.    Track Load MUZIC$,3
  1404.    Track Play 3
  1405.    Wait 200
  1406.    Screen Close 1
  1407.    XIT:
  1408. End Proc
  1409. '
  1410. Procedure CLARIFY
  1411.    On Error Goto ER
  1412.    Goto OK
  1413.    ER:
  1414.    ERR
  1415.    Resume XIT
  1416.    OK:
  1417.    Screen Open 1,320,48,4,Hires
  1418.    Screen Display 1,200,100,320,48
  1419.    Curs Off : Cls : Colour 0,$77
  1420.    Cls 1 : Music Off : Track Stop : Erase 3 : MM=0 : Erase 7 : CLEAN_UP
  1421.    Paper 0
  1422.    Print : Print : Centre "RAW / IFF Sound Player"
  1423.    Wait 100
  1424.    Screen Close 1
  1425.    XIT:
  1426. End Proc
  1427. Procedure SOUNDSIFF[TIPE$]
  1428.    On Error Goto ER
  1429.    Goto OK
  1430.    ER:
  1431.    ERR
  1432.    Resume XIT
  1433.    OK:
  1434.    Screen Open 1,320,64,4,Hires
  1435.    Screen Display 1,200,100,320,64
  1436.    Curs Off : Cls 1 : Colour 0,$77
  1437.    If TIPE$="Sound" Then MM=0
  1438.    Music Off : Track Stop : Erase 3 : Erase 7
  1439.    Paper 0
  1440.    Locate 0,3 : Centre "RAW / IFF "+TIPE$+" Player"
  1441.    On Error Goto ER2
  1442.    Goto OK2
  1443.    ER2:
  1444.    Screen Close 1
  1445.    ERR
  1446.    Resume XIT
  1447.    OK2:
  1448.    Open In 1,MUZIC$
  1449.    LMUSF=Lof(1)
  1450.    Close 1
  1451.    CLEAN_UP
  1452.    If Chip Free<LMUSF-10000 Then Screen Close 1 : ERR : Goto XIT
  1453.    Reserve As Chip Work 7,LMUSF
  1454.    Bload MUZIC$,Start(7)
  1455.    FIRST=Hunt(Start(7) To Start(7)+50,"FORM")
  1456.    If FIRST=Start(7) Then FQ=Deek(Start(7)+32)
  1457.    If(FQ<3000) or(FQ>50000) Then ERR : FQ=12000
  1458.    Sam Loop On 
  1459.    Volume VL
  1460.    VC=0 : For I=1 To 4 : VC=VC+Instr("1",Mid$(VC$,I,1))*2^(4-I) : Next I
  1461.    Sam Raw VC,Start(7),Length(7),FQ
  1462.    Paper 1 : Cls 1 : Home 
  1463.    If FIRST=Start(7) Then Locate 0,1 : Centre "IFF"
  1464.    If FIRST<>Start(7) Then Locate 0,1 : Centre "RAW"
  1465.    Locate 0,2 : Centre "Keep Parameters ?"
  1466.    Paper 0
  1467.    Reserve Zone 
  1468.    Reserve Zone 2
  1469.    Paper 0
  1470.    Locate 13,4 : Print Zone$("Yes",1)
  1471.    Locate 24,4 : Print Zone$("No",2)
  1472.    Do 
  1473.       If Mouse Zone=1 and Mouse Key Then Screen Close 1 : Goto XIT
  1474.       If Mouse Zone=2 and Mouse Key Then Goto GPRMS
  1475.    Loop 
  1476.    GPRMS:
  1477.    R$="y"
  1478.    '
  1479.    On Error Goto ER1
  1480.    Goto PRMS
  1481.    ER1:
  1482.    Screen Hide 1
  1483.    ERR
  1484.    Screen Show 1
  1485.    VLL=VL : VCC$=VC$ : FQQ=FQ
  1486.    Volume VLL
  1487.    Sam Raw VCC,Start(7),Length(7),FQQ
  1488.    Resume PRMS
  1489.    '
  1490.    PRMS:
  1491.    Paper 1 : Cls 1 : Home 
  1492.    If FIRST=Start(7) Then Centre "Iff Sound & Music"
  1493.    If FIRST<>Start(7) Then Centre "Raw Sound & Music"
  1494.    Print : Print " Volume ";VL; : Input " : Requd 1-63 ";VLL
  1495.    If(VLL<=0) or(VLL>=64) Then VLL=VL
  1496.    Print " Voices ";VC$; : Input " : Requd LRLR 0,1 ";VCC$
  1497.    If Len(VCC$)<>4 Then VCC$=VC$
  1498.    If Instr(VCC$,"1")=0 Then VCC$=VC$
  1499.    For I=1 To 4 : If Instr("01",Mid$(VCC$,I,1))=0 Then VCC$=VC$ : Next I
  1500.    Print " Rate ";FQ; : Input " : Requd 3000-50000 ";FQQ
  1501.    If(FQQ<3000) or(FQQ>50000) Then FQQ=FQ
  1502.    Print " Repeat ";R$; : Input " : Requd y/n ? ";RR$
  1503.    If(RR$="y") or(RR$="Y") Then Sam Loop On : R$="y"
  1504.    If(RR$="n") or(RR$="N") Then Sam Loop Off : R$="n"
  1505.    Volume VLL
  1506.    Music Off : Track Stop 
  1507.    VCC=0 : For I=1 To 4 : VCC=VCC+Instr("1",Mid$(VCC$,I,1))*2^(4-I) : Next I
  1508.    Sam Raw VCC,Start(7),Length(7),FQQ
  1509.    VL=VLL : VC$=VCC$ : FQ=FQQ
  1510.    Print : Input " OK (y/n) ? ";O$
  1511.    If(O$="Y") or(O$="y") or(O$="") Then Screen Close 1 : Goto XIT
  1512.    Goto PRMS
  1513.    XIT:
  1514. End Proc
  1515. Procedure CLEAN_UP
  1516.    On Error Goto ER
  1517.    Goto OK
  1518.    ER:
  1519.    Resume OK2
  1520.    OK:
  1521.    Reserve As Chip Data 10,1000000000
  1522.    OK2:
  1523.    On Error Goto ER3
  1524.    Goto OK3
  1525.    ER3:
  1526.    Resume OK4
  1527.    OK3:
  1528.    Reserve As Data 10,1000000000
  1529.    OK4:
  1530. End Proc
  1531. '
  1532. Procedure MDIR
  1533.    Clear Key 
  1534.    On Error Goto ER
  1535.    Goto OK
  1536.    ER:
  1537.    ERR
  1538.    Resume XIT
  1539.    OK:
  1540.    Screen Open 1,320,56,4,Hires
  1541.    Screen Display 1,200,100,320,56
  1542.    Curs Off : Cls 1
  1543.    Print : Centre "Make Directory"
  1544.    Print : Print : Centre "Enter new directory {eg df0:new}"
  1545.    Print : Print 
  1546.    Input " ";NDIR$
  1547.    Curs Off 
  1548.    On Error Goto ER2
  1549.    Goto OK2
  1550.    ER2:
  1551.    Screen Close 1
  1552.    ERR
  1553.    Resume XIT
  1554.    OK2:
  1555.    Mkdir NDIR$
  1556.    Screen Close 1
  1557.    XIT:
  1558. End Proc
  1559. Procedure ERASDIR
  1560.    Clear Key 
  1561.    On Error Goto ER
  1562.    Goto OK
  1563.    ER:
  1564.    ERR
  1565.    Resume XIT
  1566.    OK:
  1567.    Screen Open 1,320,48,4,Hires
  1568.    Screen Display 1,200,100,320,48
  1569.    Curs Off : Cls 1
  1570.    Print : Centre "Enter EMPTY directory {eg df0:new}"
  1571.    Print : Print 
  1572.    Input " Erase ";NDIR$
  1573.    Curs Off 
  1574.    Dreg(1)=Varptr(NDIR$)
  1575.    H=Doscall(-72)
  1576.    If H<>0 Then Goto XIT2
  1577.    If H=0 Then Centre "Not Done."
  1578.    Do : Exit If Mouse Key=1 : Loop 
  1579.    XIT2:
  1580.    Wait 50
  1581.    Screen Close 1
  1582.    XIT:
  1583. End Proc
  1584. '
  1585. Procedure PRNTOUT[SCR]
  1586.    On Error Goto ER
  1587.    Goto OK
  1588.    ER:
  1589.    ERR
  1590.    Resume XIT
  1591.    OK:
  1592.    SO=Screen
  1593.    Screen SCR
  1594.    Screen Show SCR
  1595.    SBSE=Screen Base+72
  1596.    VM=Deek(SBSE) : DEPTH=Deek(SBSE+8) : SW=Screen Width : SH=Screen Height
  1597.    '''''''''''''''''''''''''''''''''''''''''''''''''''''
  1598.    Screen Open 5,320,48,4,Hires
  1599.    Screen Display 5,200,100,320,48
  1600.    Curs Off : Cls 1 : Flash Off : Colour 3,$FF0
  1601.    Print : Centre "Select"
  1602.    Reserve Zone 
  1603.    Reserve Zone 4
  1604.    '   Pen 3 : Locate 0,2 : Centre "Mem: Chip "+Str$(Chip Free)+" Fast "+Str$(Fast Free)
  1605.    '   Locate 0,3 : Centre " Screen "+Str$(DEPTH*SW*SH/8) 
  1606.    '   If Chip Free<((DEPTH*SW*SH/2)+10000) Then Close 5 : ERR : Goto XIT 
  1607.    Pen 3 : Paper 0
  1608.    Set Zone 1,0,0 To 150,6 : Ink 2 : Box 1,1 To 150,3
  1609.    Locate 7,4 : Print Zone$("All",2)
  1610.    Locate 17,4 : Print Zone$("Part",3)
  1611.    Locate 27,4 : Print Zone$("Cancel",4)
  1612.    Do 
  1613.       If(Mouse Zone=1) and Mouse Key Then While Mouse Key<>0 : Screen Display 5,200,Y Mouse,320,48 : Wend 
  1614.       If Mouse Zone=2 and Mouse Key Then Screen Close 5 : CASE=1 : Exit 
  1615.       If Mouse Zone=3 and Mouse Key Then Screen Close 5 : CASE=2 : Exit 
  1616.       If Mouse Zone=4 and Mouse Key Then Screen Close 5 : Goto XIT
  1617.    Loop 
  1618.    While Mouse Key<>0 : Wend : Wait 25
  1619.    If CASE=2
  1620.       GROWBOX
  1621.    End If 
  1622.    If CASE=1
  1623.       GX1=0 : GX2=SW : GY1=0 : GY2=SH
  1624.    End If 
  1625.    If GX2-GX1<1 or GY2-GY1<1 Then ERR : Goto XIT
  1626.    '''''''''''''''''''''''''''''''''''''''''''''''''''
  1627.    '        Create Claire's screen table
  1628.    If Btst(13,VM) Then VMODE=2 : Rem Lowres 
  1629.    If Btst(15,VM) Then VMODE=32770 : Rem Hires
  1630.    If Btst(11,VM) Then VMODE=2050 : Rem Ham
  1631.    If Btst(2,VM) Then VMODE=VMODE+4 : Rem Laced  
  1632.    SN$="Claire's Screen "
  1633.    Erase 5
  1634.    Reserve As Work 5,32
  1635.    WSBSE=Start(5)
  1636.    '           Create ExtIO 
  1637.    Loke WSBSE+$0,0 : Rem xpos & ypos
  1638.    Doke WSBSE+$4,SW : Rem width
  1639.    Doke WSBSE+$6,SH : Rem height 
  1640.    Doke WSBSE+$8,DEPTH : Rem Bitplanes  
  1641.    Doke WSBSE+$A,0
  1642.    Doke WSBSE+$C,VMODE : Rem View modes 
  1643.    Doke WSBSE+$E,15 : Rem Screen type 'custom' 
  1644.    Loke WSBSE+16,0 : Rem Fonts
  1645.    Loke WSBSE+20,Varptr(SN$) : Rem Point to screen name 
  1646.    Loke WSBSE+24,0 : Rem No gadgets 
  1647.    Loke WSBSE+28,0 : Rem No bitmap
  1648.    '         Create Claire's screen 
  1649.    Areg(0)=WSBSE
  1650.    SCRH=Intcall(-198) : Rem screen handle
  1651.    Areg(0)=SCRH : H=Intcall(-246) : Rem move Claire's screen to back 
  1652.    '          Copy over bitplanes 
  1653.    H=$C0
  1654.    For X=0 To DEPTH-1
  1655.       '      Loke(SCRH+H),Logbase(X) 
  1656.       Copy Logbase(X),Logbase(X)+((SW*SH)/8) To Leek(SCRH+H)
  1657.       Add H,4
  1658.    Next X
  1659.    '           Setup Printer Dump 
  1660.    VPORT=SCRH+44 : Rem View Port
  1661.    RPORT=SCRH+84 : Rem Rast Port
  1662.    SCM=Leek(VPORT+4) : Rem Colour Map 
  1663.    VMODE=Deek(VPORT+32) : Rem viewModes
  1664.    '            Set RGB Palette 
  1665.    For X=0 To(2^DEPTH)-1
  1666.       RGB$=Hex$(Colour(X),3)
  1667.       Areg(0)=VPORT : Dreg(0)=X
  1668.       Dreg(1)=Val("$"+Mid$(RGB$,2,1))
  1669.       Dreg(2)=Val("$"+Mid$(RGB$,3,1))
  1670.       Dreg(3)=Val("$"+Mid$(RGB$,4,1))
  1671.       H=Gfxcall(-288)
  1672.    Next 
  1673.    '             Create Port
  1674.    Dreg(0)=-1 : SIGBIT=Execall(-330) : Rem Sig bit
  1675.    Dreg(0)=40 : Dreg(1)=65537
  1676.    MSGPORT=Execall(-198) : Rem Reserve 40 Bytes of Memory for MsgPort details 
  1677.    If MSGPORT=0 Then SCR=-2 : Goto XIT4
  1678.    Poke MSGPORT+8,4 : Rem Type=NT_MSGPORT
  1679.    Poke MSGPORT+9,0 : Rem Priority 
  1680.    '   PNAME$="Claire's Printer Port " : Rem printer port name
  1681.    PNAME$="Prt:" : Rem printer port name
  1682.    Loke MSGPORT+10,Varptr(PNAME$) : Rem Pass adr. of port name 
  1683.    Poke MSGPORT+14,0 : Rem flags
  1684.    Poke MSGPORT+15,SIGBIT : Rem sig bit
  1685.    Areg(1)=0 : SIGTASK=Execall(-294) : Rem get sigtask
  1686.    Loke MSGPORT+16,SIGTASK : Rem Pass Sigtask 
  1687.    Areg(1)=MSGPORT : H=Execall(-354) : Rem Add Port 
  1688.    '            Create ExtIO
  1689.    Dreg(0)=64 : Dreg(1)=65537
  1690.    IOREQUEST=Execall(-198) : Rem Reserve 64 bytes for IoRequest details 
  1691.    If IOREQUEST=0 Then SCR=-2 : Goto XIT3
  1692.    Poke IOREQUEST+8,5 : Rem Type=NT_MESSAGE
  1693.    Poke IOREQUEST+9,0 : Rem Priority 
  1694.    Loke IOREQUEST+14,MSGPORT
  1695.    '             Open the Printer Device  
  1696.    DEVNAME$="printer.device"+Chr$(0)
  1697.    Areg(0)=Varptr(DEVNAME$) : Dreg(0)=0 : Areg(1)=IOREQUEST : Dreg(1)=0
  1698.    PERROR=Execall(-444) : Rem Open Printer (device)
  1699.    If PERROR<>0 Then SCR=-2 : Goto XIT2
  1700.    '              Dump the RastPort 
  1701.    Doke IOREQUEST+28,11 : Rem command
  1702.    Loke IOREQUEST+32,RPORT : Rem rastport 
  1703.    Loke IOREQUEST+36,SCM : Rem colourMap
  1704.    Loke IOREQUEST+40,VMODE : Rem viewmodes
  1705.    Doke IOREQUEST+44,GX1 : Rem  Xpos    
  1706.    Doke IOREQUEST+46,GY1 : Rem  Ypos    
  1707.    Doke IOREQUEST+48,GX2-GX1 : Rem Width  
  1708.    Doke IOREQUEST+50,GY2-GY1 : Rem Length   
  1709.    Loke IOREQUEST+52,0 : Rem destCol  
  1710.    Loke IOREQUEST+56,0 : Rem destRow  
  1711.    Doke IOREQUEST+60,$84 : Rem FullCol Aspect 
  1712.    Areg(1)=IOREQUEST
  1713.    IOERROR=Execall(-456) : Rem pass IOrequest table - Send Screen to Printer  
  1714.    If IOERROR<>0 Then SCR=-2 : Goto XIT1
  1715.    '              Close up printer dump 
  1716.    XIT1: Rem close printer device 
  1717.    Areg(1)=IOREQUEST : H=Execall(-450)
  1718.    XIT2: Rem Delete ExtIO 
  1719.    Poke IOREQUEST+3,$FF
  1720.    Loke IOREQUEST+20,-1
  1721.    Loke IOREQUEST+24,-1
  1722.    Areg(1)=IOREQUEST : Dreg(0)=64 : H=Execall(-210)
  1723.    XIT3: Rem Delete port
  1724.    Areg(1)=MSGPORT : H=Execall(-360)
  1725.    Poke MSGPORT+8,$FF
  1726.    Loke MSGPORT+20,-1
  1727.    Dreg(0)=SIGBIT : H=Execall(-336)
  1728.    Areg(1)=MSGPORT : Dreg(0)=40 : H=Execall(-210)
  1729.    XIT4: Rem Close Dummy screen 
  1730.    Areg(0)=SCRH
  1731.    H=Intcall(-66)
  1732.    XIT:
  1733.    Erase 5
  1734.    Screen SO : H=Free
  1735.    Screen Show SO
  1736. End Proc[SCR]
  1737. Procedure GROWBOX
  1738.    On Error Goto ER
  1739.    Goto OK
  1740.    ER:
  1741.    ERR
  1742.    ' Wait 50
  1743.    Resume OK
  1744.    OK:
  1745.    Change Mouse 2
  1746.    GRABBED=False
  1747.    Gr Writing 2
  1748.    Repeat 
  1749.       Rem Wait until the left mouse button is pressed  
  1750.       If Mouse Key=1
  1751.          Rem Get coordinates of top corner
  1752.          GX1=X Screen(X Mouse) : GY1=Y Screen(Y Mouse) : GX2=GX1 : GY2=GY1
  1753.          C=Point(GX1,GY1)
  1754.          Box GX1,GY1 To GX2,GY2
  1755.          While Mouse Key=1
  1756.             Rem Drag box around with the mouse 
  1757.             Box GX1,GY1 To GX2,GY2
  1758.             GX2=X Screen(X Mouse) : GY2=Y Screen(Y Mouse)
  1759.             Box GX1,GY1 To GX2,GY2
  1760.          Wend 
  1761.          Box GX1,GY1 To GX2,GY2
  1762.          GRABBED=True
  1763.          Rem Make GX1,GY1 the coords of the TOP left corner   
  1764.          Plot GX1,GY1,C
  1765.          Ink KEEPINK
  1766.          If GX1>GX2 : T=GX1 : GX1=GX2 : GX2=T : End If 
  1767.          If GY1>GY2 : T=GY1 : GY1=GY2 : GY2=T : End If 
  1768.       End If 
  1769.       Rem Wait until mouse button is released
  1770.    Until GRABBED
  1771.    Rem Restore writing mode to normal 
  1772.    If KM=0 Then Change Mouse 1
  1773.    Gr Writing 1
  1774.    If GX2<GX1+1 Then GX2=GX1+1
  1775.    If GY2<GY1+1 Then GY2=GY1+1
  1776.    Rem Box GX1,GY1 To GX2,GY2 
  1777.    Gr Writing 1
  1778. End Proc
  1779. '
  1780. Procedure ERR
  1781.    On Error Goto ER
  1782.    Goto OK
  1783.    ER:
  1784.    Resume XIT
  1785.    OK:
  1786.    Screen Open 3,320,48,4,Hires
  1787.    Screen Display 3,200,100,320,48
  1788.    Curs Off : Cls 1
  1789.    Print : Centre "Error - Out of Memory/Range?"
  1790.    Print 
  1791.    Print : Centre "Press Left Mouse Key"
  1792.    Wait 50
  1793.    Do : Exit If Mouse Key=1 : Loop 
  1794.    Screen Close 3
  1795.    XIT:
  1796. End Proc
  1797. '
  1798. Procedure REZGET[SCN]
  1799.    Screen SCN
  1800.    AMOS=Screen Base+72
  1801.    VM=Deek(AMOS)
  1802.    If Btst(13,VM) Then REZ=Lowres
  1803.    If Btst(15,VM) Then REZ=Hires
  1804.    If Btst(11,VM) Then REZ=Lowres : Rem HAM  
  1805.    If Btst(2,VM) Then REZ=REZ+Laced
  1806. End Proc
  1807. '
  1808. Procedure GTCOLOUR
  1809.    On Error Goto ER
  1810.    Goto OK
  1811.    ER:
  1812.    ERR
  1813.    Resume XIT
  1814.    OK:
  1815.    CN=Screen Colour
  1816.    If CN=4096 Then CN=16
  1817.    If CN=64 Then CN=32
  1818.    Screen Open 1,160,56,32,Lowres
  1819.    Screen Display 1,200,100,320,56
  1820.    Flash Off 
  1821.    Curs Off : Get Palette 0 : Cls 2
  1822.    Reserve Zone CN+1
  1823.    Paper 2 : Pen 1
  1824.    Locate 0,2
  1825.    Print "Select colour:"
  1826.    Print : Print "   ";
  1827.    For I=1 To Int(CN/2)
  1828.       Paper I-1 : Print Zone$(" ",I);
  1829.    Next I
  1830.    Paper 2 : Print : Print "   ";
  1831.    For I=Int(CN/2)+1 To CN
  1832.       Paper I-1 : Print Zone$(" ",I);
  1833.    Next I
  1834.    Set Zone CN+1,0,0 To 150,6 : Ink 1 : Box 1,1 To 150,3
  1835.    RETRY:
  1836.    Do 
  1837.       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 
  1838.       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
  1839.    Loop 
  1840.    DR=C1-1
  1841.    XIT:
  1842. End Proc
  1843. Procedure MIX
  1844.    If Screen Colour=4096 and DR>16 Then Goto XIT
  1845.    If Screen Colour=64 and DR>32 Then Goto XIT
  1846.    On Error Goto ER
  1847.    Goto OK
  1848.    ER:
  1849.    ERR
  1850.    Resume XIT
  1851.    OK:
  1852.    Screen Open 1,320,56,16,Hires
  1853.    Screen Display 1,200,100,320,56
  1854.    Curs Off : Flash Off 
  1855.    Reserve Zone 6
  1856.    Set Zone 1,20,10 To 180,15
  1857.    Set Zone 2,20,26 To 180,31
  1858.    Set Zone 3,20,42 To 180,47
  1859.    Locate 34,1 : Print Border$(Zone$("Undo",5),1);
  1860.    Locate 34,5 : Print Border$(Zone$("Exit",4),1);
  1861.    Set Zone 6,0,0 To 320,6 : Ink 2 : Box 1,1 To 250,3
  1862.    Screen 0 : C=Colour(DR) : Screen 1
  1863.    RETRY:
  1864.    C1=Int(C/256) : C2=Int((C-256*C1)/16) : C3=C mod 16
  1865.    KEEPCOLOUR=C
  1866.    Colour 5,C : Paper 5 : Locate 34,3 : Print "  " : Paper 1
  1867.    Locate 25,1 : Print "Red";
  1868.    Locate 25,3 : Print "Green";
  1869.    Locate 25,5 : Print "Blue";
  1870.    Hslider 20,10 To 180,15,16,C1,1
  1871.    Hslider 20,26 To 180,31,16,C2,1
  1872.    Hslider 20,42 To 180,47,16,C3,1
  1873.    Do 
  1874.       X=X Screen(X Mouse) : X=Int((X-20)/10)
  1875.       If(Mouse Zone=1) and(Mouse Key=1)
  1876.          Hslider 20,10 To 180,15,16,X,1 : C1=X
  1877.       End If 
  1878.       If(Mouse Zone=2) and(Mouse Key=1)
  1879.          Hslider 20,26 To 180,31,16,X,1 : C2=X
  1880.       End If 
  1881.       If(Mouse Zone=3) and(Mouse Key=1)
  1882.          Hslider 20,42 To 180,47,16,X,1 : C3=X
  1883.       End If 
  1884.       If(Mouse Zone=4) and(Mouse Key=1) Then Exit 
  1885.       If(Mouse Zone=5) and(Mouse Key=1) Then C=KEEPCOLOUR : Goto RETRY
  1886.       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
  1887.       C=C1*256+C2*16+C3
  1888.       Colour 5,C : Paper 5 : Locate 34,3 : Print "    " : Paper 1
  1889.       Screen 0 : Colour DR,C
  1890.       If DR=0
  1891.          CB[0]
  1892.       End If 
  1893.       Screen 1
  1894.    Loop 
  1895.    Screen Close 1
  1896.    XIT:
  1897.    Ink KEEPINK
  1898. End Proc
  1899. Procedure CB[IV]
  1900.    On Error Goto ER
  1901.    Goto OK
  1902.    ER:
  1903.    ERR
  1904.    Resume XIT
  1905.    OK:
  1906.    Colour Back(Colour(IV))
  1907.    Screen Open 6,16,8,2,Lowres
  1908.    Screen Display 6,0,0,16,8
  1909.    Screen Close 6
  1910.    XIT:
  1911. End Proc
  1912. '
  1913. Rem ##########  Selector Subsystem End  ################ 
  1914. '
  1915. Rem ###################  NoteBook  ##################### 
  1916. '
  1917. Global FR,FR$,FAC,FAC$,PC,PNC
  1918. FR=1 : FR$="1" : FAC=0 : FAC$="0" : PC=0 : PNC=2
  1919. '
  1920. Rem FR = 1 for Lowres, 2 for Hires - (Scaling factor)
  1921. Rem FAC = 0 for 'normal' screens, 1 for Interlace
  1922. Rem PC = Page Colour (ie Paper), PNC = Pen Colour (ie Pen) 
  1923. '
  1924. Global MOSTPAGES
  1925. MOSTPAGES=10
  1926. Dim K$(200) : Dim J$(200) : Dim TX$(MOSTPAGES,60)
  1927. Global K$(),J$(),TX$()
  1928. Global F$,G$
  1929. Global BV,BMI,BD,BN,MARKER,MF$,I,X,N,NN,KEEPY
  1930. Global KK$
  1931. Global PAGE,PL,PMAX,MERGECD
  1932. MERGECD=0
  1933. Global TYPE,KEEPPAGE,LEAF,LW,WRAP$,NWRAPLINES
  1934. Global FF$,GG$
  1935. Global CR,DR
  1936. Dim PLTC(8)
  1937. Global PLTC()
  1938. Global NDIR$
  1939. PAL[3]
  1940. WRAP$="No" : NWRAPLINES=-1
  1941. '
  1942. NTEBOOK
  1943. Procedure NTEBOOK
  1944.    BEGINOVER:
  1945.    PAGE=1 : PL=1 : PMAX=1
  1946.    BN=0 : BV=0 : BMI=0 : BD=0 : MARKER=0 : N=0 : FR=1
  1947.    SCN2
  1948.    CB[0]
  1949.    THEMENU
  1950.    Do 
  1951.       Menu Off 
  1952.       Menu On 
  1953.       BL=0
  1954.       If Key State(95)=True Then SCN : HELP : SCN2
  1955.       If Choice<>-1 Then Goto NOCHOICE
  1956.       Rem   If Choice=-1 : Rem and Choice(1)=1 Then  
  1957.       If Choice(1)=1 and Choice(2)=1 Then SCN : BV=1 : BOOK : Goto BEGINOVER
  1958.       If Choice(1)=1 and Choice(2)=2 Then SCN : MAKEBOOK : Goto BEGINOVER
  1959.       If Choice(1)=1 and Choice(2)=3 Then SCN : FILESELECT : Goto BEGINOVER
  1960.       If Choice(1)=1 and Choice(2)=4 Then SCN : HELP : SCN2
  1961.       If Choice(1)=1 and Choice(2)=5 Then SCN : AMOSC : End 
  1962.       If Choice(1)=2 and Choice(2)=1 Then TXTLOAD : SCN : TXTNEW[1,0] : FR=1 : FAC=0 : Goto BEGINOVER
  1963.       If Choice(1)=3 and Choice(2)=1 and Choice(3)=1 Then FR=1 : FAC=0 : SCN : TXTNEW[2,2] : FR=1 : FAC=0 : TYP3=0 : Goto BEGINOVER
  1964.       If Choice(1)=3 and Choice(2)=1 and Choice(3)=2 Then FR=1 : FAC=1 : SCN : TXTNEW[2,2] : FR=1 : FAC=0 : TYP3=0 : Goto BEGINOVER
  1965.       If Choice(1)=3 and Choice(2)=1 and Choice(3)=3 Then FR=2 : FAC=0 : SCN : TXTNEW[2,2] : FR=1 : FAC=0 : TYP3=0 : Goto BEGINOVER
  1966.       If Choice(1)=3 and Choice(2)=1 and Choice(3)=4 Then FR=2 : FAC=1 : SCN : TXTNEW[2,2] : FR=1 : FAC=0 : TYP3=0 : Goto BEGINOVER
  1967.       If Choice(1)=3 and Choice(2)=2 Then TXTLOAD : SCN : TXTNEW[2,2] : FR=1 : FAC=0 : TYP3=0 : Goto BEGINOVER
  1968.       Rem For the Colour Menu
  1969.       If Choice(1)=4 and Choice(2)=1 Then CR=Choice(3) : DR=CR-1 : PNC=DR
  1970.       If Choice(1)=4 and Choice(2)=2 Then CR=Choice(3) : DR=CR-1 : PC=DR
  1971.       Rem For Files Menu 
  1972.       If Choice(1)=5 and Choice(2)=1 Then SCN : RUBOUT : SCN2
  1973.       If Choice(1)=5 and Choice(2)=2 Then SCN : RETITLE : SCN2
  1974.       If Choice(1)=5 and Choice(2)=3 Then SCN : CPY : SCN2
  1975.       If Choice(1)=5 and Choice(2)=4 Then SCN : MDIR : SCN2
  1976.       If Choice(1)=5 and Choice(2)=5 Then SCN : ERASDIR : SCN2
  1977.       If Choice(1)=5 and Choice(2)=7 Then SCN : SOURCE=0 : BYFREE : SCN2
  1978.       NOCHOICE:
  1979.    Loop 
  1980. End Proc
  1981. Procedure THEMENU
  1982.    Menu Del 
  1983.    Menu$(1)=" Options "
  1984.    Menu$(1,1)=" Load Book  "
  1985.    Menu$(1,2)=" Make Book "
  1986.    Menu$(1,3)=" Selector "
  1987.    Menu$(1,4)=" Help      "
  1988.    Menu$(1,5)=' Quit      '
  1989.    Menu$(2)=" Print "
  1990.    Menu$(2,1)=" Text "
  1991.    Menu$(3)=' Pages '
  1992.    Menu$(3,1)=' New  '
  1993.    Menu$(3,1,1)=" Large print "
  1994.    Menu$(3,1,2)=" Half-large  "
  1995.    Menu$(3,1,3)=" Small print "
  1996.    Menu$(3,1,4)=" Half-small "
  1997.    Menu$(3,2)=' Load '
  1998.    Menu$(4)=" Colour "
  1999.    Menu$(4,1)=" Pen    "
  2000.    Menu$(4,2)=" Paper  "
  2001.    Rem Create a colour bar
  2002.    For C=1 To 8
  2003.       D=C-1
  2004.       Menu$(4,1,C)="(IN 1,"+Str$(D)-""+")(BA 20,10)"
  2005.       Menu$(4,2,C)="(IN 1,"+Str$(D)-""+")(BA 20,10)"
  2006.    Next C
  2007.    Menu$(5)=" Files "
  2008.    Menu$(5,1)="Delete"
  2009.    Menu$(5,2)="ReName"
  2010.    Menu$(5,3)="Copy"
  2011.    Menu$(5,4)="MakeDir"
  2012.    Menu$(5,5)="EraseDir"
  2013.    Menu$(5,6)="(IN1,1)(SS 6)A(SS 0)(LO10,0)A><WB(IN1,0)"
  2014.    Menu$(5,7)="Memory"
  2015. End Proc
  2016. '
  2017. Procedure SCN
  2018.    If PLTYPE$=""
  2019.       '   Screen Close 0 
  2020.       Screen Open 0,320*FR,256*(FAC+1),8,32768*(FR-1)+4*FAC
  2021.       Curs Off : Cls 0 : Paper 0 : Pen 2 : Cls 0
  2022.       Colour 7,$FF0
  2023.       Screen 0
  2024.       CB[0]
  2025.       Limit Mouse 128,42 To 320*FR+128,44+256*(FAC+1)
  2026.       Menu Off 
  2027.       '   MOSTPAGESCALC
  2028.    End If 
  2029. End Proc
  2030. Procedure SCN2
  2031.    Screen Close 0
  2032.    Screen Open 0,320*FR,256,8,32768*(FR-1)
  2033.    Curs Off : Cls 0 : Paper 0 : Pen 2 : Cls 0
  2034.    Colour 7,$FF0
  2035.    Screen 0
  2036.    Limit Mouse 128,42 To 320*FR+128,44+256
  2037.    Menu Off 
  2038.    Paste Icon 49,49,3
  2039.    Locate 0,10
  2040.    Centre Border$("NoteBook",2)
  2041.    Ink 4
  2042.    Ellipse 160*FR,84,50*FR,30
  2043.    Ink 7
  2044.    Ellipse 160*FR,84,60*FR,40
  2045. End Proc
  2046. '
  2047. Procedure BOOK
  2048.    On Error Goto ERBOOK
  2049.    A$="Please select Book" : B$="of your choice"
  2050.    MAKEBOOK:
  2051.    N=0
  2052.    FILESELECTQZ[FF$,"SWITCH",A$,B$] : SD
  2053.    If F$="" Then Goto BKENDS
  2054.    If Len(F$)<5 Then A$="Not a ... .book" : B$="ReSelect or Quit" : Goto MAKEBOOK
  2055.    If Right$(F$,5)<>".book" Then A$="Not a ... .book" : B$="ReSelect or Quit" : Goto MAKEBOOK
  2056.    Open In 1,F$
  2057.    Input #1,N
  2058.    For I=1 To N
  2059.       Input #1,J$(I)
  2060.       Input #1,K$(I)
  2061.    Next I
  2062.    Close 1
  2063.    EASYLOOK
  2064.    Goto BKENDS
  2065.    ERBOOK:
  2066.    A$="Error! Retry/Quit" : B$="Select Book"
  2067.    Resume MAKEBOOK
  2068.    BKENDS:
  2069. End Proc
  2070. Procedure ALTERF$
  2071.    Shared F$
  2072.    Do 
  2073.       A=0
  2074.       A=Instr(F$,"/")
  2075.       If A<>0 Then F$=Mid$(F$,A+1,Len(F$))
  2076.       If A=0 Then Exit 
  2077.    Loop 
  2078.    Do 
  2079.       A=0
  2080.       A=Instr(F$,":")
  2081.       If A<>0 Then F$=Mid$(F$,A+1,Len(F$))
  2082.       If A=0 Then Exit 
  2083.    Loop 
  2084.    A$=Right$(F$,4)
  2085.    If A$=".IFF" Then F$=F$-A$
  2086.    If A$=".iff" Then F$=F$-A$
  2087.    If A$=".Iff" Then F$=F$-A$
  2088. End Proc
  2089. '
  2090. Procedure EASYLOOK
  2091.    On Error Goto ER
  2092.    Goto OK
  2093.    ER:
  2094.    ERR
  2095.    Resume XLOOK
  2096.    OK:
  2097.    KEEPY=1
  2098.    REASY:
  2099.    SCN
  2100.    Double Buffer : 
  2101.    Cls 0
  2102.    Curs Off 
  2103.    Autoback 1
  2104.    Pen 7
  2105.    Under On : Locate 0,0 : Centre "Fast File Finder" : Under Off 
  2106.    Locate 0,20 : Centre "Select page"
  2107.    If BV=1 Then Locate 0,22 : Centre "to view"
  2108.    If BN=1 Then Locate 0,22 : Centre "to view"
  2109.    If BMI=1 Then Locate 0,22 : Centre "to insert, after"
  2110.    If BD=1 Then Locate 0,22 : Centre "to remove"
  2111.    Pen 2
  2112.    MAKEZONES
  2113.    Autoback 0
  2114.    Rem main loop
  2115.    Y=KEEPY
  2116.    Do 
  2117.       X=1+Int((N*Y)/170)
  2118.       Rem Read mouse 
  2119.       If Mouse Zone=1 and Mouse Key Then Y=Y Screen(Y Mouse) : KEEPY=Y
  2120.       For I=2 To 16
  2121.          If Mouse Zone=I and Mouse Key and X+I-2<N+1 and BV=1 Then SCN : DISPLAY : Goto REASY
  2122.          If Mouse Zone=I and Mouse Key and X+I-2<N+1 and BN=1 Then SCN : DISPLAY : Goto REASY
  2123.          If Mouse Zone=I and Mouse Key and X+I-2<N+1 and BMI=1 Then SCN : MULTIPLEPGINSERT : Goto REASY
  2124.          If Mouse Zone=I and Mouse Key and X+I-2<N+1 and BD=1 Then SCN : TXTDEL : Goto REASY
  2125.       Next I
  2126.       If Mouse Zone=17 and Mouse Key Then NWTYPE : BV=1 : Goto REASY
  2127.       If Mouse Zone=18 and Mouse Key Then NWTYPE : BMI=1 : Goto REASY
  2128.       If Mouse Zone=19 and Mouse Key Then NWTYPE : BD=1 : Goto REASY
  2129.       If Mouse Zone=20 and Mouse Key Then BOOKSAVE : Goto REASY
  2130.       If Mouse Zone=21 and Mouse Key Then BOOKSAVE : SCN : Goto XLOOK
  2131.       If Mouse Zone=22 and Mouse Key Then BOOKSORT : SCN : Goto REASY
  2132.       If Mouse Zone=23 and Mouse Key Then BOOKSEARCH : SCN : Goto REASY
  2133.       If Y>170 Then Y=170
  2134.       Rem If slider has moved change it  
  2135.       If Y<>YM and Mouse Key=1 : YM=Y : End If 
  2136.       Rem Update display 
  2137.       For I=1 To 15
  2138.          Locate 5,I+1 : Cline 
  2139.          If X+I-1<=N Then UD[I+1] : Print Left$(K$(X+I-1),25); : Inverse Off 
  2140.       Next I
  2141.       VSLIDE[Y]
  2142.       Rem Double buffering smooths the effect  
  2143.       Screen Swap : Wait Vbl 
  2144.       For I=1 To 15
  2145.          Locate 5,I+1
  2146.          If X+I-1<=N Then UD[I+1] : Print Left$(K$(X+I-1),25); : Inverse Off 
  2147.       Next I
  2148.       VSLIDE[Y]
  2149.    Loop 
  2150.    XLOOK:
  2151.    If N=0 Then Goto XIT
  2152.    For I=1 To N
  2153.       J$(I)=""
  2154.       K$(I)=""
  2155.    Next I
  2156.    XIT:
  2157. End Proc
  2158. Procedure MAKEZONES
  2159.    Reserve Zone 23
  2160.    Set Zone 1,0,0 To 10,170
  2161.    For I=2 To 16
  2162.       Locate 5,I
  2163.       Print Zone$("          ",I)
  2164.    Next I
  2165.    Pen 5
  2166.    Locate 1,26 : Print Border$(Zone$("Display",17),1)
  2167.    Locate 10,26 : Print Border$(Zone$("Insert",18),1)
  2168.    Locate 18,26 : Print Border$(Zone$("Delete",19),1)
  2169.    Locate 26,26 : Print Border$(Zone$("Save",20),1)
  2170.    Locate 32,26 : Print Border$(Zone$("End",21),1)
  2171.    Locate 1,29 : Print Border$(Zone$("Sort",22),1)
  2172.    Locate 7,29 : Print Border$(Zone$("Search",23),1)
  2173.    Pen 2
  2174. End Proc
  2175. Procedure VSLIDE[Y]
  2176.    Set Slider 0,1,7,5,0,7,7,1
  2177.    Rem Display a slider bar using the Vslider command 
  2178.    Vslider 0,0 To 10,170,170,Y,5
  2179. End Proc
  2180. '  
  2181. Procedure BOOKSORT
  2182.    On Error Goto ER
  2183.    Goto OK
  2184.    ER:
  2185.    ERR
  2186.    Resume XIT
  2187.    OK:
  2188.    For IBOOK=1 To N
  2189.       K$(IBOOK)=K$(IBOOK)+Space$(50-Len(K$(IBOOK)))+J$(IBOOK)
  2190.    Next IBOOK
  2191.    Sort K$(0)
  2192.    IBOOK=0
  2193.    Do 
  2194.       If K$(IBOOK)<>"" Then Exit 
  2195.       Inc IBOOK
  2196.    Loop 
  2197.    For I2BOOK=1 To N
  2198.       K$(I2BOOK)=K$(I2BOOK+IBOOK-1)
  2199.    Next I2BOOK
  2200.    For IBOOK=N+1 To 200
  2201.       K$(IBOOK)=""
  2202.    Next IBOOK
  2203.    For IBOOK=1 To N
  2204.       J$(IBOOK)=Mid$(K$(IBOOK),51)
  2205.    Next IBOOK
  2206.    For IBOOK=1 To N
  2207.       F$=J$(IBOOK)
  2208.       ALTERF$
  2209.       K$(IBOOK)=F$
  2210.    Next IBOOK
  2211.    XIT:
  2212. End Proc
  2213. Procedure BOOKSEARCH
  2214.    On Error Goto ER
  2215.    Goto OK
  2216.    ER:
  2217.    ERR
  2218.    Resume XIT
  2219.    OK:
  2220.    Screen Open 4,320,56,4,Hires
  2221.    Screen Display 4,200,100,320,56
  2222.    Curs Off : Cls 1 : Flash Off : Colour 3,88
  2223.    Print : Centre "Search"
  2224.    Reserve Zone 
  2225.    Reserve Zone 2
  2226.    Paper 3
  2227.    Locate 5,4 : Print Zone$("New",1)
  2228.    Locate 15,4 : Print Zone$("Continue",2)
  2229.    Paper 1
  2230.    Do 
  2231.       If Mouse Key<>0 and Mouse Zone=1 Then Exit 
  2232.       If Mouse Key<>0 and Mouse Zone=2 Then Goto XIT2
  2233.    Loop 
  2234.    Cls : Print : Centre "Search"
  2235.    Print : Print : Centre "[Enter] String to Search For"
  2236.    Print : Print : Input " Find ";S$
  2237.    Curs Off 
  2238.    IBOOK=0 : MTCH=0
  2239.    XIT2:
  2240.    KEEPMTCH=MTCH
  2241.    Do 
  2242.       Inc IBOOK
  2243.       If IBOOK>N Then Exit 
  2244.       If Instr(K$(IBOOK),S$)<>0 Then MTCH=IBOOK : Exit 
  2245.    Loop 
  2246.    If MTCH=KEEPMTCH Then Cls : Print : Print : Centre "Not Found" : Wait 100
  2247.    Screen Close 4
  2248.    MTCH1=Int(((MTCH-1)*170)/N)
  2249.    Y Mouse=Y Hard(MTCH1) : X Mouse=X Hard(50)
  2250.    Y=Y Screen(Y Mouse)
  2251.    KEEPY=Y
  2252.    X=1+Int((N*Y)/170)
  2253.    For I=1 To 15
  2254.       Locate 5,I+1 : Cline 
  2255.       If X+I-1<=N Then UD[I+1] : Print Left$(K$(X+I-1),25); : Inverse Off 
  2256.       If X+I-1=MTCH Then Y Mouse=Y Hard(8*(I+2)-4)
  2257.    Next I
  2258.    VSLIDE[Y]
  2259.    Rem Double buffering smooths the effect  
  2260.    Screen Swap : Wait Vbl 
  2261.    For I=1 To 15
  2262.       Locate 5,I+1
  2263.       If X+I-1<=N Then UD[I+1] : Print Left$(K$(X+I-1),25); : Inverse Off 
  2264.    Next I
  2265.    VSLIDE[Y]
  2266.    XIT:
  2267. End Proc
  2268. '
  2269. Procedure BOOKSAVE
  2270.    TRY$="ok"
  2271.    If N=0 Then Goto XIT
  2272.    On Error Goto ER
  2273.    Goto OK
  2274.    ER:
  2275.    ERR
  2276.    Goto XIT
  2277.    OK:
  2278.    A$="Save as ..." : B$="... .book"
  2279.    RETRYSAVE:
  2280.    FILESELECTQZ[FF$,"SWITCH",A$,B$] : SD
  2281.    If F$="" Then Goto XIT
  2282.    EXCLUDE_FROM_SAVE[F$]
  2283.    If TRY$="not ok"
  2284.       If Len(F$)<33
  2285.          A$=F$
  2286.       End If 
  2287.       If Len(F$)>=30
  2288.          A$="..."+Right$(F$,30)
  2289.       End If 
  2290.       B$="Disallowed ! Try Again !" : Goto RETRYSAVE
  2291.    End If 
  2292.    If Right$(F$,5)<>".book" Then F$=F$+".book"
  2293.    If Exist(F$) Then OVERWRITE
  2294.    If TRY$="not ok"
  2295.       If Len(F$)<33
  2296.          A$=F$
  2297.       End If 
  2298.       If Len(F$)>=30
  2299.          A$="..."+Right$(F$,30)
  2300.       End If 
  2301.       B$="Already Exists ! Try Again !" : Goto RETRYSAVE
  2302.    End If 
  2303.    Open Out 1,F$
  2304.    Print #1,N
  2305.    For I=1 To N
  2306.       Print #1,J$(I)
  2307.       Print #1,K$(I)
  2308.    Next I
  2309.    Close 1
  2310.    XIT:
  2311. End Proc
  2312. '
  2313. Procedure DISPLAY
  2314.    If Exist(J$(X+I-2)) Then Goto OKT
  2315.    While Mouse Key<>0 : Wend 
  2316.    Locate 0,10 : Centre "File"
  2317.    Locate 0,12 : Centre J$(X+I-2)
  2318.    Print : Print : Centre "does not exist"
  2319.    While Mouse Key<>1 : Wend 
  2320.    Goto XIT
  2321.    OKT:
  2322.    On Error Goto ER
  2323.    Goto OK
  2324.    ER:
  2325.    ERR
  2326.    Resume XIT
  2327.    OK:
  2328.    Open In 1,J$(X+I-2)
  2329.    On Error Goto ER2
  2330.    Goto OK2
  2331.    ER2:
  2332.    ERR
  2333.    Close 1
  2334.    Resume XIT
  2335.    OK2:
  2336.    MARKER=3 : TXTLOAD : SCN : TXTNEW[2,0]
  2337.    XIT:
  2338.    FR=1 : FAC=0
  2339.    SCN
  2340. End Proc
  2341. '
  2342. Procedure TXTINS
  2343.    Cls 0
  2344.    If N<200 Then Goto PRCEED
  2345.    Locate 0,10 : Centre "No more pages - max 200"
  2346.    Locate 0,15 : Centre "RIGHT mouse key to continue"
  2347.    While Mouse Key<>2 : Wend 
  2348.    Wait 50
  2349.    Goto XIT
  2350.    PRCEED:
  2351.    On Error Goto ERTXTINS
  2352.    Goto OKTXTINS
  2353.    ERTXTINS:
  2354.    A$="Error! Retry/Quit" : B$="Select Page to insert,after"
  2355.    Resume MAKETXTINS
  2356.    OKTXTINS:
  2357.    A$="Select Page" : B$="to insert,after"
  2358.    MAKETXTINS:
  2359.    FILESELECTQZ[FF$,"SWITCH","Select Page","to insert,after"] : SD
  2360.    If F$="" Then Goto XIT
  2361.    NN=X+I-2
  2362.    I=N
  2363.    Do 
  2364.       If NN=N Then Exit 
  2365.       J$(I+1)=J$(I)
  2366.       K$(I+1)=K$(I)
  2367.       I=I-1
  2368.       If I=NN Then Exit 
  2369.    Loop 
  2370.    N=N+1
  2371.    NN=NN+1
  2372.    J$(NN)=F$
  2373.    ALTERF$
  2374.    K$(NN)=F$
  2375.    XIT:
  2376. End Proc
  2377. Procedure TXTDEL
  2378.    For I=(X+I-2) To(N-1)
  2379.       J$(I)=J$(I+1)
  2380.       K$(I)=K$(I+1)
  2381.    Next I
  2382.    J$(N)=""
  2383.    K$(N)=""
  2384.    N=N-1
  2385.    Bob Update Off 
  2386. End Proc
  2387. '
  2388. Procedure HELP
  2389.    On Error Goto ER
  2390.    Goto OK
  2391.    ER:
  2392.    ERR
  2393.    Resume XIT
  2394.    OK:
  2395.    Screen Open 2,640,256,4,Hires
  2396.    Curs Off : Paper 0 : Cls 0
  2397.    Flash Off : Colour 3,$FF0
  2398.    Set Tab 10
  2399.    Print : Print 
  2400.    Print Tab$+"                ***** HELP *****"
  2401.    Print 
  2402.    Print Tab$+" Load Book - Load an existing Book File to"
  2403.    Print Tab$+"      - Display - view pages"
  2404.    Print Tab$+"      - Insert  - insert page(s),after"
  2405.    Print Tab$+"      - Delete  - remove page(s) (from the book)"
  2406.    Print Tab$+"      - Save    - Save as ...  .book appended"
  2407.    Print Tab$+"      - Sort    - Sort Files"
  2408.    Print Tab$+"      - Search  - Find File(s) containing a String"
  2409.    Print 
  2410.    Print Tab$+" New Book  - Create a new NoteBook of up to 200 (sets of) pages"
  2411.    Print Tab$+"           - (loads Selector for Page Selection from Source)"
  2412.    Print Tab$+"           - ([End] when finished selection)"
  2413.    Print Tab$+"           - (Use presented options)"
  2414.    Print 
  2415.    Print Tab$+" Selector  - Loads Multiple File Handler & Directory Manager"
  2416.    Print 
  2417.    Print Tab$+" Print     - Text - Print page(s) to printer"
  2418.    Print 
  2419.    Print Tab$+" Page(s)   - New  - Enter new (set of) notes"
  2420.    Print Tab$+"           - Load - Load a (set of) pages"
  2421.    Print 
  2422.    Print Tab$+" Colour    - Select Colours for Text Display"
  2423.    Print 
  2424.    Print Tab$+" Files     - L.Amiga A toggles WB for Format,Disk Copy etc"
  2425.    Print 
  2426.    Ink 3 : Box 20,1 To 600,235
  2427.    While Mouse Key<>0 : Wend 
  2428.    While Key State(90)=True : Wend 
  2429.    Do : Exit If(Mouse Key=1) or(Key State(95)=True) : Loop 
  2430.    Clear Key 
  2431.    Screen Close 2
  2432.    Wait 50
  2433.    XIT:
  2434. End Proc
  2435. Procedure HELPTXT
  2436.    On Error Goto ER
  2437.    Goto OK
  2438.    ER:
  2439.    ERR
  2440.    Resume XIT
  2441.    OK:
  2442.    Screen Open 2,640,256,4,Hires
  2443.    Curs Off : Paper 0 : Cls 0
  2444.    Flash Off : Colour 3,$FF0
  2445.    Set Tab 10
  2446.    Print 
  2447.    Print Tab$+"                  ***** HELP *****"
  2448.    Print 
  2449.    Print Tab$+" Options ";
  2450.    Print " Save Text  - Save pages"
  2451.    Set Tab 19
  2452.    Print Tab$+" Print Text - Print page(s) to printer"
  2453.    Print Tab$+" New        - Create new page(s)"
  2454.    Print Tab$+" Load Text  - Load new pages"
  2455.    Print Tab$+" Quit       - [End][F7] - (Save) & Exit"
  2456.    Set Tab 10
  2457.    Print Tab$+" Page     ";
  2458.    Print "Forward             - [PgDn][F2],- Next Page"
  2459.    Set Tab 19
  2460.    Print Tab$+" Back                - [PgUp][F1] - Previous Page"
  2461.    Print Tab$+" Insert Blank, after - Insert a blank page"
  2462.    Print Tab$+" Delete              - Delete current page"
  2463.    Print Tab$+" Merge, after        - Merge pages in "
  2464.    Set Tab 10
  2465.    Print Tab$+" Lines   ";
  2466.    Print " Insert, before - [Ins][F4] - Insert a line before"
  2467.    Set Tab 19
  2468.    Print Tab$+" Delete         - [Del][F5] - Delete current line"
  2469.    Print Tab$+" WrapRound      - Yes - Select Number of lines"
  2470.    Print Tab$+"                - No  - No WrapRound"
  2471.    Set Tab 10
  2472.    Print Tab$+" Colour  ";
  2473.    Print " Pen     - Select Colour   "
  2474.    Set Tab 19
  2475.    Print Tab$+" Paper   - Select Colour "
  2476.    Print Tab$+" Remix   - Change current colours"
  2477.    Print Tab$+" Palette - Save - Save current colours in memory"
  2478.    Print Tab$+"           Use  - Use colours saved to memory"
  2479.    Pen 3
  2480.    Set Tab 10
  2481.    Print 
  2482.    Print Tab$+" Steady (or Double Click) Left Mouse to save or quit a page"
  2483.    Print Tab$+"     Quick Left Mouse click to position cursor"
  2484.    Print Tab$+"           [Home][F6] - Cursor to Start"
  2485.    Pen 2
  2486.    Print 
  2487.    Print Tab$+"          Max pages in group = 10"
  2488.    Ink 3 : Box 20,1 To 600,235
  2489.    While Mouse Key<>0 : Wend 
  2490.    While Key State(90)=True : Wend 
  2491.    Do : Exit If(Mouse Key=1) or(Key State(95)=True) : Loop 
  2492.    Clear Key 
  2493.    Screen Close 2
  2494.    Wait 50
  2495.    XIT:
  2496. End Proc
  2497. '
  2498. Procedure TXTNEW[PRTYPE,SVETYPE]
  2499.    TXTNEWMARKER$="yes"
  2500.    NEWSTART:
  2501.    If PLTYPE$=""
  2502.       WRAP$="No" : Cls : PAGE=1 : LEAF=1
  2503.       PL=27*(FAC+1)+3*FAC : Rem Page length
  2504.       LW=34*FR+6*(FR-1) : Rem Line width 
  2505.    End If 
  2506.    NEWPAGE:
  2507.    If PLTYPE$=""
  2508.       If PMAX<PAGE : PMAX=PAGE : End If 
  2509.       If MARKER=2 : Goto UNDESIRED : End If 
  2510.       Paper PC : Pen PNC
  2511.       LEAF=PAGE
  2512.       Wind Open LEAF,0,0,39*FR,30*(FAC+1),1
  2513.    End If 
  2514.    If PRTYPE=1 Then PLTYPE$="" : Locate 1,1 : TXPR : KK$="" : Wind Close : Goto XTXTNEW
  2515.    If PLTYPE$=""
  2516.       Home : For I=1 To PL : Print " ";TX$(LEAF,I) : Next I : Locate 1,1
  2517.    End If 
  2518.    PLTYPE$=""
  2519.    MISSOUT:
  2520.    Menu Del 
  2521.    Menu$(1)=" Options "
  2522.    Menu$(1,1)=" Save Text "
  2523.    Menu$(1,2)=" Print Text "
  2524.    Menu$(1,3)=' New  '
  2525.    Menu$(1,3,1)=" Large print "
  2526.    Menu$(1,3,2)=" Half-large  "
  2527.    Menu$(1,3,3)=" Small print "
  2528.    Menu$(1,3,4)=" Half-small "
  2529.    Menu$(1,4)=" Load Text "
  2530.    Menu$(1,5)=" Quit "
  2531.    Menu$(1,6)=" Help "
  2532.    Menu$(2)=" Page "
  2533.    Menu$(2,1)=" Forward "
  2534.    Menu$(2,2)=" Back "
  2535.    Menu$(2,3)=" Insert Blank, after "
  2536.    Menu$(2,4)=" Delete "
  2537.    Menu$(2,5)=" Merge, after "
  2538.    Menu$(3)=" Lines "
  2539.    Menu$(3,1)=" Insert, before "
  2540.    Menu$(3,2)=" Delete "
  2541.    Menu$(3,3)=" WrapRound "
  2542.    Menu$(3,3,1)=" Yes "
  2543.    Menu$(3,3,2)=" No  "
  2544.    Menu$(4)=" Colour "
  2545.    Menu$(4,1)=" Pen    "
  2546.    Menu$(4,2)=" Paper  "
  2547.    Menu$(4,3)=" Remix  "
  2548.    Menu$(4,4)=" Palette "
  2549.    Menu$(4,4,1)=" Save "
  2550.    Menu$(4,4,2)=" Use "
  2551.    Rem Create a colour bar
  2552.    For C=1 To 8
  2553.       D=C-1
  2554.       Menu$(4,1,C)="(IN 1,"+Str$(D)-""+")(BA 20,10)"
  2555.       Menu$(4,2,C)="(IN 1,"+Str$(D)-""+")(BA 20,10)"
  2556.       Menu$(4,3,C)="(IN 1,"+Str$(D)-""+")(BA 20,10)"
  2557.    Next C
  2558.    Do 
  2559.       Menu Off 
  2560.       Menu On 
  2561.       JUDGEMENT=0
  2562.       While KK$="" and Choice<>-1 and Mouse Key<>1
  2563.          KK$=Inkey$
  2564.       Wend 
  2565.       If Mouse Key=1 Then JUDGEMENT=1 : Wait 10 : If Mouse Key=1 and SVETYPE=2 Then Goto XXTXTNEW
  2566.       If Mouse Key=1 Then JUDGEMENT=1 : Wait 10 : If Mouse Key=1 and SVETYPE<>2 Then Goto XTXTNEW
  2567.       If JUDGEMENT=1 Then Locate X Text(X Screen(X Mouse)),Y Text(Y Screen(Y Mouse)) : Goto LEAVE
  2568.       If KK$<>"" Then Goto NCH
  2569.       If Choice(1)=1 and Choice(2)=1 Then TXTSAVE : KK$="" : Goto MISSOUT
  2570.       If Choice(1)=1 and Choice(2)=2 Then KEEPPAGE=PAGE : TXPR : KK$="" : Wind Close : PAGE=KEEPPAGE : Goto NEWPAGE
  2571.       If Choice(1)=1 and Choice(2)=3 and Choice(3)=1 Then FR=1 : FAC=0 : SCN : For PAGE=1 To PMAX : For I=1 To PL : TX$(PAGE,I)="" : Next I : Next PAGE : PMAX=1 : Goto NEWSTART
  2572.       If Choice(1)=1 and Choice(2)=3 and Choice(3)=2 Then FR=1 : FAC=1 : SCN : For PAGE=1 To PMAX : For I=1 To PL : TX$(PAGE,I)="" : Next I : Next PAGE : PMAX=1 : Goto NEWSTART
  2573.       If Choice(1)=1 and Choice(2)=3 and Choice(3)=3 Then FR=2 : FAC=0 : SCN : For PAGE=1 To PMAX : For I=1 To PL : TX$(PAGE,I)="" : Next I : Next PAGE : PMAX=1 : Goto NEWSTART
  2574.       If Choice(1)=1 and Choice(2)=3 and Choice(3)=4 Then FR=2 : FAC=1 : SCN : For PAGE=1 To PMAX : For I=1 To PL : TX$(PAGE,I)="" : Next I : Next PAGE : PMAX=1 : Goto NEWSTART
  2575.       If Choice(1)=1 and Choice(2)=4 Then KK$="" : For PAGE=1 To PMAX : For I=1 To PL : TX$(PAGE,I)="" : Next I : Next PAGE : TXTLOAD : SCN : Goto NEWSTART
  2576.       If Choice(1)=1 and Choice(2)=5 and SVETYPE=2 Then KK$="" : Goto XXTXTNEW
  2577.       If Choice(1)=1 and Choice(2)=5 and SVETYPE<>2 Then KK$="" : Goto XTXTNEW
  2578.       If Choice(1)=1 and Choice(2)=6 Then HELPTXT : Goto LEAVE
  2579.       If Choice(1)=2 and Choice(2)=1 and PAGE=PMAX Then KK$="" : Locate 0,0 : Centre "Last Page !" : Curs Off : Wait 100 : Cline : Locate 1,1 : Curs On : Goto LEAVE
  2580.       If Choice(1)=2 and Choice(2)=1 Then PAGE=PAGE+1 : KK$="" : Wind Close : Goto NEWPAGE
  2581.       If Choice(1)=2 and Choice(2)=2 and PAGE>1 Then PAGE=PAGE-1 : KK$="" : Wind Close : Goto NEWPAGE
  2582.       If Choice(1)=2 and Choice(2)=2 and PAGE=1 Then KK$="" : Locate 0,0 : Centre "First Page !" : Curs Off : Wait 100 : Cline : Locate 1,1 : Curs On : Goto LEAVE
  2583.       If Choice(1)=2 and Choice(2)=3 Then INSERTPAGE : Goto LEAVE : Rem Wind Close : Goto NEWPAGE
  2584.       If Choice(1)=2 and Choice(2)=4 Then OMITPAGE : Goto LEAVE
  2585.       If Choice(1)=2 and Choice(2)=5 Then MERGEPAGES : Goto LEAVE
  2586.       If Choice(1)=3 and Choice(2)=1 Then INSERTLINE : Goto LEAVE
  2587.       If Choice(1)=3 and Choice(2)=2 Then OMITLINE : Goto LEAVE
  2588.       If Choice(1)=3 and Choice(2)=3 and Choice(3)=1 Then WRAP$="Yes" : WRAPLINES : Goto LEAVE
  2589.       If Choice(1)=3 and Choice(2)=3 and Choice(3)=2 Then WRAP$="No" : Goto LEAVE
  2590.       Rem For the Colour Menu
  2591.       If Choice(1)=4 and Choice(2)=1 Then CR=Choice(3) : DR=CR-1 : PNC=DR : Pen PNC : Memorize X : Memorize Y : Clw : For I=1 To PL : Print " ";TX$(PAGE,I) : Next I : Remember X : Remember Y : Goto MISSOUT
  2592.       If Choice(1)=4 and Choice(2)=2 Then CR=Choice(3) : DR=CR-1 : PC=DR : Paper PC : Memorize X : Memorize Y : Clw : For I=1 To PL : Print " ";TX$(PAGE,I) : Next I : Remember X : Remember Y : Goto MISSOUT
  2593.       If Choice(1)=4 and Choice(2)=3 Then CR=Choice(3) : DR=CR-1 : Memorize X : Memorize Y : MIX : Remember X : Remember Y : Goto MISSOUT
  2594.       If Choice(1)=4 and Choice(2)=4 and Choice(3)=1 Then PAL[1]
  2595.       If Choice(1)=4 and Choice(2)=4 and Choice(3)=2 Then PAL[2]
  2596.       NCH:
  2597.       S=Scancode
  2598.       '
  2599.       If S=95 Then HELPTXT : Clear Key : Goto LEAVE
  2600.       '
  2601.       Rem Page Forward 
  2602.       If((S=31) or(S=81)) and(PAGE=PMAX) Then KK$="" : Locate 0,0 : Centre "Last Page !" : Curs Off : Wait 200 : Cline : Locate 1,1 : Curs On : Goto LEAVE
  2603.       If((S=31) or(S=81)) Then PAGE=PAGE+1 : KK$="" : Wind Close : Goto NEWPAGE
  2604.       '
  2605.       Rem Page Back
  2606.       If((S=63) or(S=80)) and(PAGE>1) Then PAGE=PAGE-1 : KK$="" : Wind Close : Goto NEWPAGE
  2607.       If((S=63) or(S=80)) and(PAGE=1) Then KK$="" : Locate 0,0 : Centre "First Page !" : Curs Off : Wait 200 : Cline : Locate 1,1 : Curs On : Goto LEAVE
  2608.       '
  2609.       If S=29 Then KK$="" : Goto XXTXTNEW
  2610.       If S=86 Then KK$="" : Goto XXTXTNEW
  2611.       If S=61 Then Locate 1,1 : Goto LEAVE
  2612.       If S=85 Then Locate 1,1 : Goto LEAVE
  2613.       If S=65 Then CHARACTERDELLEFT : Goto LEAVE
  2614.       If S=70 Then CHARACTERDEL : Goto LEAVE
  2615.       '
  2616.       If(S=68) or(S=67) or(S=69) Then Locate 1,Y Curs+1 : Goto LEAVE
  2617.       If(S=76 or S=62) and Y Curs=1 Then Goto LEAVE
  2618.       If(S=76 or S=62) and Y Curs<>1 Then Cup : Goto LEAVE
  2619.       If(S=77 or S=30) and Y Curs=PL Then Goto LEAVE
  2620.       If(S=77 or S=30) and Y Curs<>PL Then Cdown : Goto LEAVE
  2621.       If(S=79 or S=45) and X Curs=1 and Y Curs=1 Then Goto LEAVE
  2622.       If(S=79 or S=45) and(X Curs=1) and(Y Curs>1) Then Locate LW,Y Curs-1 : Goto LEAVE
  2623.       If(S=79 or S=45) and X Curs<>1 Then Cleft : Goto LEAVE
  2624.       If(S=78 or S=47) and(X Curs=LW) and Y Curs=PL-1 Then Goto LEAVE
  2625.       If(S=78 or S=47) and(X Curs=LW) and Y Curs<PL-1 Then Locate 1,Y Curs+1 : Goto LEAVE
  2626.       If(S=78 or S=47) and X Curs<>LW Then Cright : Goto LEAVE
  2627.       If S=15 Then INSERTLINE : Goto LEAVE
  2628.       If S=83 Then INSERTLINE : Goto LEAVE
  2629.       If S=60 Then OMITLINE : Goto LEAVE
  2630.       If S=84 Then OMITLINE : Goto LEAVE
  2631.       CHINS
  2632.       LEAVE:
  2633.       KK$=""
  2634.       If Y Curs=PL Then Cup 
  2635.    Loop 
  2636.    XXTXTNEW:
  2637.    TXTSAVE
  2638.    If(Right$(F$,4)=":XXX") or(Right$(F$,4)="/XXX") Then F$="" : Goto MISSOUT
  2639.    If(Right$(F$,4)=":xxx") or(Right$(F$,4)="/xxx") Then F$="" : Goto MISSOUT
  2640.    XTXTNEW:
  2641.    Cls 
  2642.    Border 0,,
  2643.    UNDESIRED:
  2644.    MARKER=0
  2645.    For PAGE=1 To PMAX : For I=1 To PL : TX$(PAGE,I)="" : Next I : Next PAGE
  2646.    TXTNEWMARKER$="no"
  2647. End Proc
  2648. Procedure CHARACTERDEL
  2649.    LEAF=PAGE
  2650.    TX$(LEAF,Y Curs+1)=Left$(TX$(LEAF,Y Curs+1),X Curs-1)+Mid$(TX$(LEAF,Y Curs+1),X Curs+1)
  2651.    TX$(LEAF,Y Curs+1)=Left$(TX$(LEAF,Y Curs+1),LW)
  2652.    Memorize X : Memorize Y : Locate 1,Y Curs : Cline : Print TX$(LEAF,Y Curs+1);
  2653.    Remember X : Remember Y 
  2654.    If WRAP$="Yes" Then WRAPAROUND[2,NWRAPLINES]
  2655. End Proc
  2656. Procedure CHARACTERDELLEFT
  2657.    LEAF=PAGE
  2658.    If X Curs=1 Then Goto XIT
  2659.    TX$(LEAF,Y Curs+1)=Left$(TX$(LEAF,Y Curs+1),X Curs-2)+Mid$(TX$(LEAF,Y Curs+1),X Curs)
  2660.    Memorize X : Memorize Y : Locate 1,Y Curs : Cline : Print TX$(LEAF,Y Curs+1);
  2661.    Remember X : Remember Y : Cleft 
  2662.    If WRAP$="Yes" Then WRAPAROUND[2,NWRAPLINES]
  2663.    XIT:
  2664. End Proc
  2665. Procedure CHINS
  2666.    LEAF=PAGE
  2667.    If WRAP$="Yes" Then WRAPAROUND[1,NWRAPLINES]
  2668.    L=Len(TX$(LEAF,Y Curs+1))
  2669.    If L<X Curs+1 Then TX$(LEAF,Y Curs+1)=TX$(LEAF,Y Curs+1)+Space$(X Curs+1-L)
  2670.    TX$(LEAF,Y Curs+1)=Left$(TX$(LEAF,Y Curs+1),X Curs-1)+KK$+Mid$(TX$(LEAF,Y Curs+1),X Curs)
  2671.    TX$(LEAF,Y Curs+1)=Left$(TX$(LEAF,Y Curs+1),LW)
  2672.    Memorize X : Memorize Y : Locate 1,Y Curs : Cline : Print TX$(LEAF,Y Curs+1);
  2673.    Remember X : Remember Y : Cright 
  2674.    If X Curs=LW-1 Then Bell 
  2675.    If Y Curs<>PL-1 and X Curs=LW+1 Then Locate 1,Y Curs+1
  2676.    If Y Curs=PL-1 and X Curs=LW+1 Then Remember X : Remember Y 
  2677. End Proc
  2678. Procedure INSERTLINE
  2679.    LEAF=PAGE
  2680.    For N=PL To Y Curs+1 Step -1
  2681.       TX$(LEAF,N)=TX$(LEAF,N-1)
  2682.    Next N
  2683.    TX$(LEAF,Y Curs+1)=""
  2684.    RY=Y Curs
  2685.    Clw 
  2686.    Home 
  2687.    For N=1 To PL
  2688.       Print " ";TX$(LEAF,N)
  2689.    Next N
  2690.    Locate 1,RY
  2691. End Proc
  2692. Procedure OMITLINE
  2693.    LEAF=PAGE
  2694.    For N=Y Curs+1 To 27*(FAC+1)+3*FAC
  2695.       TX$(LEAF,N)=TX$(LEAF,N+1)
  2696.    Next N
  2697.    TX$(LEAF,PL)=""
  2698.    RY=Y Curs
  2699.    Clw 
  2700.    Home 
  2701.    For N=1 To 27*(FAC+1)+3*FAC
  2702.       Print " ";TX$(LEAF,N)
  2703.    Next N
  2704.    Locate 1,RY
  2705. End Proc
  2706. '
  2707. Procedure WRAPAROUND[INSDELTYP,NWRAPLINES]
  2708.    VPLACE=Y Curs
  2709.    Curs Off 
  2710.    Memorize X : Memorize Y 
  2711.    NUM=VPLACE+NWRAPLINES
  2712.    If NWRAPLINES=-1 Then NUM=PL
  2713.    If NUM>PL Then NUM=PL
  2714.    If INSDELTYP=1 Then Goto T1
  2715.    If INSDELTYP=2 Then Goto T2
  2716.    T1:
  2717.    For III=NUM To VPLACE+1 Step -1
  2718.       X$=Mid$(TX$(LEAF,III),LW,1)
  2719.       If X$="" Then X$=" "
  2720.       If III=PL Then X$=" "
  2721.       TX$(LEAF,III+1)=X$+Left$(TX$(LEAF,III+1),LW-1)
  2722.       Locate 1,III : Cline : Print TX$(LEAF,III+1);
  2723.    Next III
  2724.    Goto XIT
  2725.    '
  2726.    T2:
  2727.    L=Len(TX$(LEAF,VPLACE+1))
  2728.    If L<LW Then TX$(LEAF,VPLACE+1)=TX$(LEAF,VPLACE+1)+Space$(LW-L)
  2729.    TX$(LEAF,VPLACE+1)=Left$(TX$(LEAF,VPLACE+1),LW-1)+Mid$(TX$(LEAF,VPLACE+2),1,1) : Locate 1,VPLACE : Cline : Print TX$(LEAF,VPLACE+1);
  2730.    If NUM<>PL Then NUM=NUM+1
  2731.    For III=VPLACE+1 To NUM-1
  2732.       L=Len(TX$(LEAF,III+1))
  2733.       If L<LW Then TX$(LEAF,III+1)=TX$(LEAF,III+1)+Space$(LW-L)
  2734.       X$=Mid$(TX$(LEAF,III+2),1,1)
  2735.       If III=(NUM-1) Then X$=" "
  2736.       TX$(LEAF,III+1)=Mid$(TX$(LEAF,III+1),2)+X$ : Locate 1,III : Cline : Print TX$(LEAF,III+1);
  2737.    Next III
  2738.    Goto XIT
  2739.    '
  2740.    XIT:
  2741.    Remember X : Remember Y 
  2742.    Curs On 
  2743. End Proc
  2744. Procedure WRAPLINES
  2745.    While Mouse Key<>0 : Wend 
  2746.    Screen Open 1,300,56,4,Hires
  2747.    Screen Display 1,200,100,320,56
  2748.    Curs Off : Cls : Flash Off : Colour 3,$70
  2749.    Reserve Zone 3
  2750.    Set Zone 1,0,0 To 150,6 : Ink 2 : Box 1,1 To 150,3
  2751.    Paper 3
  2752.    Locate 9,3 : Print Zone$(" All  ",2)
  2753.    Locate 21,3 : Print Zone$(" Part ",3)
  2754.    Paper 1 : Pen 2
  2755.    Do 
  2756.       If Mouse Key=1 and Mouse Zone=1 Then Ink 0 : Box 1,1 To 150,3 : While Mouse Key=1 : Screen Display 1,200,Y Mouse,160,56 : Wend : Ink 2 : Box 1,1 To 150,3
  2757.       If Mouse Key and Mouse Zone=2 Then While Mouse Key<>0 : Wend : NWRAPLINES=-1 : Exit 
  2758.       If Mouse Key and Mouse Zone=3 Then While Mouse Key<>0 : Wend : MAKECHOICE : Exit 
  2759.    Loop 
  2760.    Screen Close 1
  2761.    Wait 50
  2762. End Proc
  2763. Procedure MAKECHOICE
  2764.    Cls 
  2765.    Wind Open 1,48,24,25,1
  2766.    Window 1
  2767.    Paper 2 : Pen 1 : Clw 
  2768.    Input " Number of lines : ";NWRAPLINES;
  2769.    Curs Off 
  2770.    If NWRAPLINES<=0 Then WRAP$="No"
  2771.    Wait 50
  2772. End Proc
  2773. '
  2774. '
  2775. Procedure TXTSAVE
  2776.    TRY$="ok"
  2777.    Clear Key 
  2778.    On Error Goto ER
  2779.    A$="Save as ..." : B$="Quit text or XXX & OK to resume text"
  2780.    Goto OK
  2781.    ER:
  2782.    A$="/!\Error!  Save as .... "
  2783.    Resume OK
  2784.    OK:
  2785.    RETRYSAVE:
  2786.    '
  2787.    If Exist(FF$)
  2788.       FILESELECTQZ[FF$,"SWITCH",A$,B$] : SD : Goto OK2
  2789.    End If 
  2790.    FILESELECTQZ[Dir$,"SWITCH",A$,B$] : SD : Goto OK2
  2791.    OK2:
  2792.    If F$="" Then Goto XIT
  2793.    If(Right$(F$,4)=":XXX") or(Right$(F$,4)="/XXX") Then Goto XIT
  2794.    If(Right$(F$,4)=":xxx") or(Right$(F$,4)="/xxx") Then Goto XIT
  2795.    '
  2796.    EXCLUDE_FROM_SAVE[F$]
  2797.    If TRY$="not ok"
  2798.       If Len(F$)<33
  2799.          A$=F$
  2800.       End If 
  2801.       If Len(F$)>=30
  2802.          A$="..."+Right$(F$,30)
  2803.       End If 
  2804.       B$="Disallowed ! Try Again !" : Goto RETRYSAVE
  2805.    End If 
  2806.    If Exist(F$) Then OVERWRITE
  2807.    If TRY$="not ok"
  2808.       If Len(F$)<33
  2809.          A$=F$
  2810.       End If 
  2811.       If Len(F$)>=30
  2812.          A$="..."+Right$(F$,30)
  2813.       End If 
  2814.       B$="Already Exists ! Try Again !" : Goto RETRYSAVE
  2815.    End If 
  2816.    If TRY$="not ok" Then Goto RETRYSAVE
  2817.    Open Out 1,F$
  2818.    '
  2819.    Rem Creating a String of codes to allow for updates
  2820.    CODELINE$="*NB*NB*NB*NB*"
  2821.    If FR=1 Then CODELINE$=CODELINE$+"1"
  2822.    If FR=2 Then CODELINE$=CODELINE$+"2"
  2823.    If FAC=0 Then CODELINE$=CODELINE$+"0"
  2824.    If FAC=1 Then CODELINE$=CODELINE$+"1"
  2825.    Print #1,CODELINE$
  2826.    '
  2827.    For PAGE=1 To PMAX
  2828.       LEAF=PAGE
  2829.       For I=1 To PL
  2830.          Print #1,TX$(LEAF,I)
  2831.       Next I
  2832.    Next PAGE
  2833.    Close 1
  2834.    XIT:
  2835. End Proc
  2836. Procedure EXCLUDE_FROM_SAVE[F$]
  2837.    IX=Instr(F$,":")
  2838.    If IX=0 Then TRY$="not ok" : Goto XIT
  2839.    FX$=Mid$(F$,IX+1)
  2840.    Restore NEWDATA
  2841.    Read NX
  2842.    IX=0
  2843.    Do 
  2844.       IX=IX+1
  2845.       Read A$
  2846.       If FX$=A$ Then TRY$="not ok" : Exit 
  2847.       If IX=NX Then TRY$="ok" : Exit 
  2848.    Loop 
  2849.    NEWDATA:
  2850.    Data 53
  2851.    Data ".info","Disk.info","CLI","CLI.info"
  2852.    Data "Prefs.info","PrReadMe","PrReadMe.info"
  2853.    Data "NoteBook","NoteBook.info","NoteBook.AMOS","NbReadMe","NbReadMe.info"
  2854.    Data "Shopper","Shopper.info","Shopper.AMOS","ShReadMe","ShReadMe.info"
  2855.    Data "c/endcli","c/LoadWB","c/path","c/ppmore","c/Run"
  2856.    Data "devs/clipboard.device","devs/Mountlist","devs/narrator.device"
  2857.    Data "devs/parallel.device","devs/printer.device","devs/ramdrive.device"
  2858.    Data "devs/serial.device","devs/system-configuration"
  2859.    Data "devs/printers/custom","devs/printers/generic"
  2860.    Data "l/Disk-Validator","l/FastFileSystem","l/Port-Handler"
  2861.    Data "l/ram-handler","l/Speak-Handler"
  2862.    Data "libs/diskfont.library","libs/icon.library","libs/info.library"
  2863.    Data "libs/mathieeedoubbas.library","mathtrans.library","translator.library"
  2864.    Data "Prefs/.info","Prefs/Pointer.info","Prefs/Preferences"
  2865.    Data "Prefs/Preferences.info","Prefs/Printer.info","Prefs/Serial.info"
  2866.    Data "s/startup-sequence"
  2867.    Data "System/DiskCopy","System/FastMemFirst","System/Format"
  2868.    XIT:
  2869. End Proc
  2870. Procedure OVERWRITE
  2871.    On Error Goto ER
  2872.    Goto OK
  2873.    ER:
  2874.    ERR
  2875.    Resume XIT
  2876.    OK:
  2877.    Screen Open 1,320,56,4,Hires
  2878.    Screen Display 1,200,100,320,56
  2879.    Curs Off : Cls 1 : Colour 0,$A5
  2880.    If Len(F$)>43 Then Locate 0,1 : Centre "..."+Right$(F$,40)
  2881.    If Len(F$)<=43 Then Locate 0,1 : Centre F$
  2882.    Print : Print : Centre "/!\ file already exits /!\"
  2883.    Reserve Zone 
  2884.    Reserve Zone 2
  2885.    Paper 0
  2886.    Locate 5,5 : Print Zone$("Overwrite",1)
  2887.    Locate 25,5 : Print Zone$("  Retry  ",2)
  2888.    Do 
  2889.       If Mouse Zone=1 and Mouse Key Then TRY$="ok" : Exit 
  2890.       If Mouse Zone=2 and Mouse Key Then TRY$="not ok" : Exit 
  2891.    Loop 
  2892.    Screen Close 1
  2893.    XIT:
  2894. End Proc
  2895. '
  2896. Procedure TXTLOAD
  2897.    If MARKER=3 Then Goto SHWOFF
  2898.    On Error Goto ER
  2899.    A$="Select" : B$="a text file"
  2900.    Goto OK
  2901.    ER:
  2902.    A$="Error! Retry?" : B$="Select a text file or Quit"
  2903.    Resume OK
  2904.    OK:
  2905.    MARKER=1
  2906.    FILESELECTQZ[FF$,"SWITCH",A$,B$] : SD
  2907.    If(F$="") and(TXTNEWMARKER$="no") Then MARKER=2 : Goto XIT
  2908.    If(F$="") and(TXTNEWMARKER$="yes") Then MARKER=2 : PLTYPE$="nl" : Goto XIT
  2909.    If(Right$(F$,5)=".info") and(TXTNEWMARKER$="no") Then ERR : MARKER=2 : Goto XIT
  2910.    If(Right$(F$,5)=".info") and(TXTNEWMARKER$="yes") Then ERR : MARKER=2 : PLTYPE$="nl" : Goto XIT
  2911.    '
  2912.    Open In 1,F$
  2913.    '
  2914.    SHWOFF:
  2915.    MARKER=1
  2916.    '
  2917.    Rem Code Line {first effort} - allows for upgrades with more codes 
  2918.    Rem            code$(i) as mid$(codelines,i*2-1,2) etc ........  
  2919.    Rem            remembering that single digit +ve nos are preceded by a space   
  2920.    '
  2921.    Rem CodeLine - most recent versions begin with *NB*NB*NB* or *NB*NB*NB*NB* and are completely string$  
  2922.    '
  2923.    Rem Current version no.s are 1, First (or external!) version no.s are 2 (back to front?)   
  2924.    '
  2925.    VERSION=1
  2926.    '
  2927.    On Error Goto ER2
  2928.    Goto OK2
  2929.    ER2:
  2930.    ERR
  2931.    Close 1
  2932.    Resume XIT
  2933.    OK2:
  2934.    '
  2935.    Line Input #1,CODELINE$
  2936.    '
  2937.    If Left$(CODELINE$,13)="*NB*NB*NB*NB*"
  2938.       '
  2939.       If Mid$(CODELINE$,14,1)="1" : FR=1 : End If 
  2940.       If Mid$(CODELINE$,14,1)="2" : FR=2 : End If 
  2941.       If Mid$(CODELINE$,15,1)="0" : FAC=0 : End If 
  2942.       If Mid$(CODELINE$,15,1)="1" : FAC=1 : End If 
  2943.       Goto CODESDONE
  2944.    End If 
  2945.    '
  2946.    If Left$(CODELINE$,10)="*NB*NB*NB*"
  2947.       '
  2948.       If Mid$(CODELINE$,11,1)="1" : FR=1 : End If 
  2949.       If Mid$(CODELINE$,11,1)="2" : FR=2 : End If 
  2950.       If Mid$(CODELINE$,12,1)="0" : FAC=0 : End If 
  2951.       If Mid$(CODELINE$,12,1)="1" : FAC=1 : End If 
  2952.       Goto CODESDONE
  2953.    End If 
  2954.    '
  2955.    If Len(CODELINE$)<>4 and Len(CODELINE$)<>2 Then TX$(1,1)=CODELINE$ : VERSION=2 : FAC=0 : FR=2 : Goto CODESDONE
  2956.    '
  2957.    If Len(CODELINE$)=4 Then FR=Val(Mid$(CODELINE$,1,2)) : FAC=Val(Mid$(CODELINE$,3,2))
  2958.    If Len(CODELINE$)=2 Then FR=Val(Mid$(CODELINE$,1,2))
  2959.    '
  2960.    If(FR<>1 and FR<>2) or(FAC<>0 and FAC<>1) Then TX$(1,1)=CODELINE$ : VERSION=2 : FAC=0 : FR=2 : Goto CODESDONE
  2961.    '  
  2962.    CODESDONE:
  2963.    '
  2964.    SCN
  2965.    WRAP$="No"
  2966.    Cls 
  2967.    PAGE=1
  2968.    LEAF=PAGE
  2969.    PL=27*(FAC+1)+3*FAC : Rem Page length
  2970.    LW=34*FR+6*(FR-1) : Rem Line width 
  2971.    '   MOSTPAGESCALC
  2972.    PMAX=PAGE
  2973.    Paper PC : Pen PNC
  2974.    Wind Open LEAF,0,0,39*FR,30*(FAC+1),1
  2975.    I=VERSION
  2976.    NXPG:
  2977.    Clw : Home 
  2978.    Do 
  2979.       If Eof(1) Then Goto NMR
  2980.       Line Input #1,TX$(LEAF,I)
  2981.       '
  2982.       Rem Correction for previous NoteBook Files, removing space at line start 
  2983.       If Left$(CODELINE$,13)<>"*NB*NB*NB*NB*" Then TX$(LEAF,I)=Mid$(TX$(LEAF,I),2)
  2984.       '
  2985.       Print " ";TX$(LEAF,I)
  2986.       If Eof(1) Then Goto NMR
  2987.       If I=PL Then Exit 
  2988.       I=I+1
  2989.    Loop 
  2990.    LEAF=LEAF+1
  2991.    If LEAF>MOSTPAGES Then ERR : LEAF=LEAF-1 : Goto NMR
  2992.    I=1
  2993.    Goto NXPG
  2994.    NMR:
  2995.    If I=1 Then LEAF=LEAF-1
  2996.    PMAX=LEAF
  2997.    Close 1
  2998.    If PMAX=1 Then PLTYPE$="1P" : Locate 1,1
  2999.    XIT:
  3000. End Proc
  3001. Procedure MERGEPAGES
  3002.    Memorize X : Memorize Y : Locate 0,0 : Cline : Curs Off 
  3003.    If PMAX=MOSTPAGES
  3004.       Centre "No More Pages Allowed - 10 Pages Maximum" : Wait 100
  3005.       Locate 0,0 : Cline : Remember X : Remember Y : Curs On 
  3006.       Goto XIT
  3007.    End If 
  3008.    Centre "Merge after THIS page ? y/n"
  3009.    Do 
  3010.       A$=Inkey$
  3011.       If(A$="Y") or(A$="y") Then Exit 
  3012.       If(A$="N") or(A$="n")
  3013.          Locate 0,0 : Cline : Remember X : Remember Y : Curs On 
  3014.          Goto XIT
  3015.       End If 
  3016.    Loop 
  3017.    Locate 0,0 : Cline 
  3018.    '
  3019.    A$="Select" : B$="a text file"
  3020.    On Error Goto ERMERGEPAGES
  3021.    Goto MAKEPAGES
  3022.    ERMERGEPAGES:
  3023.    A$="Error! Retry?" : B$="Select a text file or Quit"
  3024.    Resume MAKEPAGES
  3025.    '
  3026.    MAKEPAGES:
  3027.    FILESELECTQZ[FF$,"SWITCH",A$,B$] : SD
  3028.    If F$="" Then Remember X : Remember Y : Curs On : Goto XIT
  3029.    On Error Goto ER
  3030.    Goto OK
  3031.    ER:
  3032.    ERR
  3033.    Resume XIT
  3034.    OK:
  3035.    Open In 1,F$
  3036.    On Error Goto ER2
  3037.    Goto OK2
  3038.    ER2:
  3039.    ERR
  3040.    Resume NMR
  3041.    OK2:
  3042.    '
  3043.    Rem Code Line {first effort} - allows for upgrades with more codes 
  3044.    Rem            code$(i) as mid$(codelines,i*2-1,2) etc ........  
  3045.    Rem            remembering that single digit +ve nos are preceded by a space   
  3046.    '
  3047.    Rem CodeLine - most recent versions begin with *NB*NB*NB* or *NB*NB*NB*NB* and are completely string$  
  3048.    '
  3049.    Rem Current version no.s are 1, First (or external!) version no.s are 2 (back to front?)   
  3050.    '
  3051.    VERSION=1
  3052.    '
  3053.    Line Input #1,CODELINE$
  3054.    '
  3055.    If Left$(CODELINE$,13)="*NB*NB*NB*NB*"
  3056.       '
  3057.       If Mid$(CODELINE$,14,1)="1" : MERGEFR=1 : End If 
  3058.       If Mid$(CODELINE$,14,1)="2" : MERGEFR=2 : End If 
  3059.       If Mid$(CODELINE$,15,1)="0" : MERGEFAC=0 : End If 
  3060.       If Mid$(CODELINE$,15,1)="1" : MERGEFAC=1 : End If 
  3061.       Goto CODESDONE
  3062.    End If 
  3063.    '
  3064.    If Left$(CODELINE$,10)="*NB*NB*NB*"
  3065.       '
  3066.       If Mid$(CODELINE$,11,1)="1" : MERGEFR=1 : End If 
  3067.       If Mid$(CODELINE$,11,1)="2" : MERGEFR=2 : End If 
  3068.       If Mid$(CODELINE$,12,1)="0" : MERGEFAC=0 : End If 
  3069.       If Mid$(CODELINE$,12,1)="1" : MERGEFAC=1 : End If 
  3070.       Goto CODESDONE
  3071.    End If 
  3072.    '
  3073.    If Len(CODELINE$)<>4 and Len(CODELINE$)<>2 Then TX$(1,1)=CODELINE$ : VERSION=2 : MERGEFAC=0 : MERGEFR=2 : Goto CODESDONE
  3074.    '
  3075.    If Len(CODELINE$)=4 Then MERGEFR=Val(Mid$(CODELINE$,1,2)) : MERGEFAC=Val(Mid$(CODELINE$,3,2))
  3076.    If Len(CODELINE$)=2 Then MERGEFR=Val(Mid$(CODELINE$,1,2))
  3077.    '
  3078.    If(FR<>1 and FR<>2) or(FAC<>0 and FAC<>1) Then TX$(1,1)=CODELINE$ : VERSION=2 : MERGEFAC=0 : MERGEFR=2 : Goto CODESDONE
  3079.    '  
  3080.    CODESDONE:
  3081.    '
  3082.    If(FAC<>MERGEFAC) or(FR<>MERGEFR) Then Locate 0,0 : Cline : Centre "Not Done, Different Page-Types" : Wait 100 : Locate 0,0 : Cline : Curs On : Remember X : Remember Y : Close 1 : Goto XIT
  3083.    '
  3084.    PL=27*(FAC+1)+3*FAC
  3085.    '
  3086.    KI=VERSION
  3087.    NXPG:
  3088.    If PMAX=MOSTPAGES Then Locate 0,0 : Curs Off : Cline : Centre "No more Pages" : Wait 100 : Locate 0,0 : Cline : Locate 1,1 : Curs On : Goto NMR
  3089.    MERGECD=1
  3090.    INSERTPAGE
  3091.    Clw : Home 
  3092.    Do 
  3093.       If Eof(1) Then Goto NMR
  3094.       Line Input #1,TX$(PAGE,KI)
  3095.       '
  3096.       Rem Correction for previous NoteBook Files, removing space at line start 
  3097.       If Left$(CODELINE$,13)<>"*NB*NB*NB*NB*" Then TX$(PAGE,KI)=Mid$(TX$(PAGE,KI),2)
  3098.       '
  3099.       Print " ";TX$(PAGE,KI)
  3100.       If Eof(1) Then Goto NMR
  3101.       If KI=PL Then Goto NMRR
  3102.       KI=KI+1
  3103.    Loop 
  3104.    NMRR:
  3105.    KI=1 : Goto NXPG
  3106.    NMR:
  3107.    Locate 1,1
  3108.    Close 1
  3109.    XIT:
  3110.    MERGECD=0
  3111. End Proc
  3112. '
  3113. Procedure INSERTPAGE
  3114.    Memorize X : Memorize Y : Locate 0,0 : Cline : Curs Off 
  3115.    If PMAX=MOSTPAGES
  3116.       Centre Str$(MOSTPAGES)+" Pages Maximum" : Wait 100
  3117.       Locate 0,0 : Cline : Remember X : Remember Y : Curs On 
  3118.       KK$=""
  3119.       Goto XXINSERTPAGE
  3120.    End If 
  3121.    If MERGECD=1 Then MERGECD=0 : Goto NOCHOICE
  3122.    Centre "New Page After This ? y/n"
  3123.    Do 
  3124.       A$=Inkey$
  3125.       If A$="Y" Then Exit 
  3126.       If A$="y" Then Exit 
  3127.       If A$="N" Then Goto XINSERTPAGE
  3128.       If A$="n" Then Goto XINSERTPAGE
  3129.    Loop 
  3130.    NOCHOICE:
  3131.    Locate 0,0 : Cline 
  3132.    Curs On 
  3133.    PMAX=PMAX+1
  3134.    For LEAF=PMAX To PAGE+2 Step -1
  3135.       For I=1 To PL
  3136.          TX$(LEAF,I)=TX$(LEAF-1,I)
  3137.       Next I
  3138.    Next LEAF
  3139.    For I=1 To PL
  3140.       TX$(PAGE+1,I)=""
  3141.    Next I
  3142.    PAGE=PAGE+1
  3143.    Clw : Home 
  3144.    For I=1 To PL : Print " ";TX$(PAGE,I) : Next I : Locate 1,1
  3145.    Goto XXINSERTPAGE
  3146.    XINSERTPAGE:
  3147.    Locate 0,0 : Cline 
  3148.    Curs On 
  3149.    Remember X : Remember Y 
  3150.    XXINSERTPAGE:
  3151. End Proc
  3152. Procedure OMITPAGE
  3153.    Memorize X : Memorize Y : Locate 0,0 : Cline : Curs Off 
  3154.    Centre "Lose THIS page ? y/n"
  3155.    Do 
  3156.       A$=Inkey$
  3157.       If A$="Y" Then Exit 
  3158.       If A$="y" Then Exit 
  3159.       If A$="N" Then Goto XOMITPAGE
  3160.       If A$="n" Then Goto XOMITPAGE
  3161.    Loop 
  3162.    Locate 0,0 : Cline : Curs On 
  3163.    '
  3164.    If PAGE<PMAX
  3165.       PMAX=PMAX-1
  3166.       For LEAF=PAGE To PMAX
  3167.          For I=1 To PL
  3168.             TX$(LEAF,I)=TX$(LEAF+1,I)
  3169.          Next I
  3170.       Next LEAF
  3171.       For I=1 To PL
  3172.          TX$(PMAX+1,I)=""
  3173.       Next I
  3174.       Clw : Home 
  3175.       For I=1 To PL : Print " ";TX$(PAGE,I) : Next I : Locate 1,1
  3176.       Goto XXOMITPAGE
  3177.    End If 
  3178.    '
  3179.    If(PAGE=PMAX) and(PMAX>1)
  3180.       For I=1 To PL
  3181.          TX$(PMAX,I)=""
  3182.       Next I
  3183.       PMAX=PMAX-1
  3184.       PAGE=PAGE-1
  3185.       Clw : Home 
  3186.       For I=1 To PL : Print " ";TX$(PAGE,I) : Next I : Locate 1,1
  3187.       Goto XXOMITPAGE
  3188.    End If 
  3189.    '
  3190.    If(PAGE=PMAX) and(PMAX=1)
  3191.       '
  3192.       For I=1 To PL
  3193.          TX$(PMAX,I)=""
  3194.       Next I
  3195.       Clw : Home : Locate 1,1
  3196.       Goto XXOMITPAGE
  3197.       '
  3198.    End If 
  3199.    '  
  3200.    XOMITPAGE:
  3201.    Locate 0,0 : Cline : Curs On : Remember X : Remember Y 
  3202.    XXOMITPAGE:
  3203. End Proc
  3204. '
  3205. Procedure TXPR
  3206.    On Error Goto ER
  3207.    Goto OK
  3208.    ER:
  3209.    ERR
  3210.    Resume XIT
  3211.    OK:
  3212.    Open Port 1,"PRT:"
  3213.    Curs Off 
  3214.    MEMPG=PAGE
  3215.    If PMAX=0 Then Goto XIT
  3216.    Memorize X : Memorize Y 
  3217.    Clw 
  3218.    PAGE=1
  3219.    NEXPG:
  3220.    Clw 
  3221.    For I=1 To PL
  3222.       Print " ";TX$(PAGE,I)
  3223.    Next I
  3224.    Locate 0,0
  3225.    Centre "Print THIS page? y/n"
  3226.    Do 
  3227.       A$=Inkey$
  3228.       If A$="Y" Then Exit 
  3229.       If A$="y" Then Exit 
  3230.       If A$="N" Then Goto NPR
  3231.       If A$="n" Then Goto NPR
  3232.    Loop 
  3233.    Locate 0,0 : Cline 
  3234.    For I=1 To PL
  3235.       '      Lprint TX$(PAGE,I)
  3236.       Print #1,TX$(PAGE,I)
  3237.    Next I
  3238.    Locate 0,0
  3239.    NPR:
  3240.    PAGE=PAGE+1
  3241.    If PAGE<=PMAX Then Goto NEXPG
  3242.    Close 1
  3243.    PAGE=MEMPG
  3244.    Curs On 
  3245.    Remember X : Remember Y 
  3246.    XIT:
  3247. End Proc
  3248. '
  3249. Rem Files
  3250. '
  3251. Procedure RUBOUT
  3252.    RBOUT:
  3253.    A$="Select File to Delete" : B$="IRREVERSIBLE - Quit to Leave"
  3254.    On Error Goto ER
  3255.    Goto OK
  3256.    ER:
  3257.    A$="/!\Error! Select File to Delete"
  3258.    Resume OK
  3259.    OK:
  3260.    FILESELECTQZ[FF$,"SWITCH",A$,B$] : SD
  3261.    If F$="" Then Goto XIT
  3262.    Kill F$
  3263.    Goto RBOUT
  3264.    XIT:
  3265. End Proc
  3266. Procedure CPY
  3267.    Clear Key 
  3268.    On Error Goto ER
  3269.    Goto OK
  3270.    ER:
  3271.    ERR
  3272.    Resume XIT
  3273.    OK:
  3274.    Do 
  3275.       Erase 6
  3276.       FILESELECTQZ[FF$,"SWITCH","Select File to Copy",""] : SD
  3277.       If F$="" Then Goto XIT
  3278.       KEEPKEEPF$=F$
  3279.       FILESELECTQZ[GG$,"SWITCH",Right$(F$,38),"Copy to"]
  3280.       G$=F$
  3281.       F$=KEEPKEEPF$
  3282.       SDG
  3283.       If G$="" Then Goto XIT
  3284.       Open In 1,F$ : LFILE=Lof(1) : Close 1
  3285.       Reserve As Work 6,LFILE
  3286.       Bload F$,Start(6)
  3287.       Bsave G$,Start(6) To Start(6)+LFILE
  3288.    Loop 
  3289.    XIT:
  3290.    Erase 6
  3291. End Proc
  3292. '
  3293. Procedure SD
  3294.    Rem Automatic Directory Setter 
  3295.    Rem Global FF$ : FF$=Dir$ needed at start    
  3296.    Rem After file selector {using Fsel$...} append : SD 
  3297.    If F$="" Then Goto XIT
  3298.    KEEPFF$=FF$
  3299.    FF$=F$
  3300.    I10=Instr(FF$,":")
  3301.    FF2$=Right$(FF$,Len(FF$)-I10)
  3302.    If Instr(FF2$,":")<>0 Then FF$=KEEPFF$ : Goto XIT
  3303.    FF$=Flip$(FF$)
  3304.    I11=Instr(FF$,"/")
  3305.    If I11=0 Then FF$=Left$(Flip$(FF$),I10) : Goto XIT
  3306.    FF$=Left$(Flip$(FF$),(Len(FF$)-I11+1))
  3307.    XIT:
  3308. End Proc
  3309. Procedure SDG
  3310.    If G$="" Then Goto XIT
  3311.    KEEPGG$=GG$
  3312.    GG$=G$
  3313.    I10=Instr(GG$,":")
  3314.    GG2$=Right$(GG$,Len(GG$)-I10)
  3315.    If Instr(GG2$,":")<>0 Then GG$=KEEPGG$ : Goto XIT
  3316.    GG$=Flip$(GG$)
  3317.    I11=Instr(GG$,"/")
  3318.    If I11=0 Then GG$=Left$(Flip$(GG$),I10) : Goto XIT
  3319.    GG$=Left$(Flip$(GG$),(Len(GG$)-I11+1))
  3320.    XIT:
  3321. End Proc
  3322. '
  3323. '
  3324. Procedure PAL[PLT]
  3325.    If PLT=1 Then For IPT=0 To 7 : PLTC(IPT)=Colour(IPT) : Next IPT
  3326.    If PLT=3 Then For IPT=0 To 7 : PLTC(IPT)=Colour(IPT)*0.7 : Next IPT : PLTC(1)=$FFF : PLTC(7)=$80
  3327.    If PLT=2 Then For IPT=0 To 7 : Colour IPT,PLTC(IPT) : Next IPT : CB[0]
  3328. End Proc
  3329. Rem
  3330. Procedure ERRING
  3331.    On Error Goto ER
  3332.    Goto OK
  3333.    ER:
  3334.    ERR
  3335.    Resume XIT
  3336.    OK:
  3337.    XIT:
  3338. End Proc
  3339. Rem
  3340. Procedure MOSTPAGESCALC
  3341.    MOSTPAGES=10
  3342.    If(FR=2) or(FAC=1) Then MOSTPAGES=6
  3343.    If(FR=2) and(FAC=1) Then MOSTPAGES=3
  3344. End Proc
  3345. Rem
  3346. Procedure CHANGEPEN[XPAP,YPEN]
  3347.    A=Colour(XPAP)
  3348.    D=0
  3349.    SC=Screen Colour
  3350.    If SC=4096 Then SC=16
  3351.    For I=0 To SC-1
  3352.       B=Colour(I)
  3353.       A1=A mod 16 : A2=(A mod 256)/16 : A3=A/256
  3354.       B1=B mod 16 : B2=(B mod 256)/16 : B3=B/256
  3355.       C=Abs(B1-A1)+Abs(B2-A2)+Abs(B3-A3)
  3356.       If C>D
  3357.          D=C
  3358.          IS=I
  3359.       End If 
  3360.    Next I
  3361.    PCL=IS : KEEPPEN=IS : Pen IS
  3362.    Ink IS : KEEPINK=IS
  3363.    Paper XPAP : KEEPPAPER=XPAP
  3364. End Proc
  3365. '
  3366. Rem Own File Selector
  3367. '
  3368. 'Global F$ 
  3369. '
  3370. 'Dim LQZ$(200),MITQZ$(70)
  3371. 'Global LQZ$(),FLEQZ$,MITQZ$(),LLQZ$ 
  3372. 'Global DRECTORYQZ$,MESSAGE1QZ$,MESSAGE2QZ$
  3373. 'Global NQZ,XQZ,IQZ,CRQZ 
  3374. 'CRQZ=0
  3375. '
  3376. 'FILESELECTQZ[Dir$,"SWITCH","Please Select","a File"]  
  3377. Procedure FILESELECTQZ[DRECTORYQZ$,SWITCH$,MESSAGE1QZ$,MESSAGE2QZ$]
  3378.    '''''''''''''''''''''''''''''''''''''''''''''' 
  3379.    If Not Exist(DRECTORYQZ$) Then ERR : Goto XIT5
  3380.    If SWITCH$="-AMOS-"
  3381.       F$=Fsel$(DRECTORYQZ$,"",MESSAGE1QZ$,MESSAGE2QZ$) : Goto XIT5
  3382.    End If 
  3383.    If SWITCH$="CUSTOM"
  3384.       Goto FRESH
  3385.    End If 
  3386.    MARKQZ$=""
  3387.    On Error Goto ER3
  3388.    Goto OK3
  3389.    ER3:
  3390.    ERR
  3391.    MARKQZ$="SP"
  3392.    Resume XIT4
  3393.    OK3:
  3394.    Screen Open 1,320,56,4,Hires
  3395.    Screen Display 1,200,100,320,56
  3396.    Curs Off : Cls 1 : Colour 0,$70
  3397.    Locate 0,1 : Centre "Single File Selector"
  3398.    Locate 0,5 : Centre "Choose Preferred"
  3399.    Reserve Zone 
  3400.    Reserve Zone 2
  3401.    Paper 0
  3402.    Locate 12,3 : Print Zone$("-AMOS-",1);
  3403.    Locate 22,3 : Print Zone$("CUSTOM",2)
  3404.    Do 
  3405.       If Mouse Zone=1 and Mouse Key Then Screen Close 1 : F$=Fsel$(DRECTORYQZ$,"",MESSAGE1QZ$,MESSAGE2QZ$) : Goto XIT5
  3406.       If Mouse Zone=2 and Mouse Key Then Exit 
  3407.    Loop 
  3408.    Screen Close 1
  3409.    '''''''''''''''''''''''''''''''''''''''''''''''''''''
  3410.    FRESH:
  3411.    If Right$(DRECTORYQZ$,1)="/" Then DRECTORYQZ$=Left$(DRECTORYQZ$,Len(DRECTORYQZ$)-1)
  3412.    NQZ=0
  3413.    On Error Goto ER
  3414.    Goto OK
  3415.    ER:
  3416.    ERR
  3417.    Resume XIT
  3418.    OK:
  3419.    FLEQZ$=""
  3420.    Gosub WN1DIR
  3421.    Screen Open 2,640,192,4,Hires
  3422.    Flash Off : Curs Off 
  3423.    If CRQZ=0 : Colour 0,$7A : End If 
  3424.    If CRQZ=1 : Colour 0,$390 : End If 
  3425.    If CRQZ=2 : Colour 0,$A77 : End If 
  3426.    If CRQZ=3 : Colour 0,$BB5 : End If 
  3427.    Colour 1,$700 : Paper 0 : Cls 0 : Colour 3,$FF0
  3428.    Screen Display 2,140,65,320,192
  3429.    Wind Open 1,0,0,40,24 : Paper 0 : Curs Off 
  3430.    '   Wind Open 2,320,0,40,24 : Paper 0 : Curs Off 
  3431.    Wind Open 2,320,0,40,24 : Paper 0 : Curs Off 
  3432.    Gosub SELECTOR_WINDOWS
  3433.    WN1DIR:
  3434.    Gosub RESET
  3435.    NQZ=1
  3436.    FFQZ$=DRECTORYQZ$
  3437.    LQZ$(1)=Dir First$(DRECTORYQZ$)
  3438.    Do 
  3439.       NQZ=NQZ+1
  3440.       LQZ$(NQZ)=Dir Next$
  3441.       If LQZ$(NQZ)="" Then NQZ=NQZ-1 : Exit 
  3442.    Loop 
  3443.    Return 
  3444.    SELECTOR_WINDOWS:
  3445.    RESTART:
  3446.    Y Mouse=Y Hard(0)
  3447.    WN1:
  3448.    XQZ=1
  3449.    REASYLOOK:
  3450.    Window 2 : Pen 1
  3451.    Locate 0,0 : Cline : Pen 1 : Centre "Single File Selector"
  3452.    Locate 0,2 : Cline : Centre MESSAGE1QZ$
  3453.    Locate 0,3 : Cline : Centre MESSAGE2QZ$
  3454.    Window 1 : Pen 1
  3455.    Locate 0,0 : Cline : Centre "Source" : Ink 3 : Box 1,1 To 30,3
  3456.    WN12:
  3457.    XQZ=1
  3458.    MESSAGEQZ$=Left$(DRECTORYQZ$,30)+"..."
  3459.    Locate 0,22 : Cline : Pen 1 : Centre MESSAGEQZ$
  3460.    REASYLOOK2:
  3461.    XKQZ=0
  3462.    PLQZ=0 : Gosub MAKEFSZONES
  3463.    Pen 2
  3464.    Rem main loop
  3465.    Do 
  3466.       For IQZ=2 To 21
  3467.          '
  3468.          If Mouse Zone=IQZ and Mouse Key and Instr(LQZ$(XQZ+IQZ-2)," ")=1 Then Gosub GTFILE : Gosub SEEFILE : Goto REASYLOOK2
  3469.          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
  3470.       Next IQZ
  3471.       If Mouse Zone=22 and Mouse Key Then While Mouse Key<>0 : Screen Display 2,140,Y Mouse,320,192 : Wend 
  3472.       If Mouse Zone=23 and Mouse Key
  3473.          CRQZ=(CRQZ+1) mod 4
  3474.          If CRQZ=0 : Colour 0,$7A : End If 
  3475.          If CRQZ=1 : Colour 0,$390 : End If 
  3476.          If CRQZ=2 : Colour 0,$A77 : End If 
  3477.          If CRQZ=3 : Colour 0,$BB5 : End If 
  3478.          While Mouse Key<>0 : Wend 
  3479.       End If 
  3480.       If Mouse Zone=24 and Mouse Key Then PLQZ=24 : Gosub MAKEFSZONES : Gosub GTPAR : Gosub RESET : Gosub SEEFILE : Gosub WN1DIR : Goto WN12
  3481.       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
  3482.       If Mouse Zone=26 and Mouse Key Then PLQZ=26 : Gosub MAKEFSZONES : GTANOTHERFILEQZ : PLQZ=0 : Gosub MAKEFSZONES : Gosub SEEFILE : Goto REASYLOOK2
  3483.       If Mouse Zone=27 and Mouse Key Then F$=FLEQZ$ : Goto XIT
  3484.       If Mouse Zone=28 and Mouse Key Then F$="" : Goto XIT
  3485.       If Mouse Zone=29 and Mouse Key and XQZ<NQZ-15 Then XQZ=XQZ+1
  3486.       If Mouse Zone=30 and Mouse Key and XQZ>1 Then XQZ=XQZ-1
  3487.       Rem Update display 
  3488.       If XQZ<>XKQZ
  3489.          XKQZ=XQZ
  3490.          For IQZ=1 To 20
  3491.             Locate 2,IQZ : Cline 
  3492.             If Mouse Zone=IQZ+1
  3493.                Inverse On 
  3494.             End If 
  3495.             Print Left$(LQZ$(XQZ+IQZ-1),38);
  3496.             Inverse Off 
  3497.          Next IQZ
  3498.       End If 
  3499.    Loop 
  3500.    Return 
  3501.    MAKEFSZONES:
  3502.    MITQZ$(24)="    Parent   "
  3503.    MITQZ$(25)="New Directory"
  3504.    MITQZ$(26)="   New File  "
  3505.    MITQZ$(27)="     Ok      "
  3506.    MITQZ$(28)="     Quit    "
  3507.    Reserve Zone 
  3508.    Reserve Zone 30
  3509.    Set Zone 22,0,0 To 25,5
  3510.    Writing 1
  3511.    For IQZ=2 To 21
  3512.       Locate 3,IQZ-1
  3513.       Print Zone$("           ",IQZ)
  3514.    Next IQZ
  3515.    Writing 0
  3516.    Window 2
  3517.    For IIQZ=24 To 28
  3518.       Pen 3 : Ink 3
  3519.       If IIQZ=PLQZ Then Pen 1 : Ink 1
  3520.       Locate 14,(IIQZ-24)*2+6 : Print Zone$(MITQZ$(IIQZ),IIQZ);
  3521.       L=Len(MITQZ$(IIQZ))
  3522.       XB1QZ=X Graphic(X Curs-L) : YB1QZ=Y Graphic(Y Curs)
  3523.       XB2QZ=X Graphic(X Curs) : YB2QZ=Y Graphic(Y Curs+1)-1
  3524.       Box XB1QZ-2,YB1QZ To XB2QZ+2,YB2QZ
  3525.    Next IIQZ
  3526.    Window 1
  3527.    Pen 3
  3528.    Locate 5,0 : Print Zone$(Chr$(147)+Chr$(148),29);
  3529.    Locate 8,0 : Print Zone$(Chr$(149)+Chr$(150),30);
  3530.    Locate 12,0 : Print Zone$("*",23);
  3531.    Pen 2
  3532.    Return 
  3533.    RESET:
  3534.    For IQZ=1 To 200 : LQZ$(IQZ)="" : Next IQZ
  3535.    FLEQZ$="" : LLQZ$=""
  3536.    Return 
  3537.    SEEFILE:
  3538.    Window 2
  3539.    Pen 2
  3540.    Locate 0,22 : Autoback 1 : Cline 
  3541.    Centre LLQZ$ : F$=FLEQZ$
  3542.    Pen 3
  3543.    Window 1
  3544.    Return 
  3545.    GTFILE:
  3546.    Rem Assuming file {lqz$(xqz+iqz-2)} has no 'double-space' !  
  3547.    POSN=Instr(LQZ$(XQZ+IQZ-2),"  ")
  3548.    LLQZ$=Left$(LQZ$(XQZ+IQZ-2),POSN-1)
  3549.    POSN=Instr(LLQZ$," ") : LLQZ$=Mid$(LLQZ$,POSN+1)
  3550.    If(Right$(DRECTORYQZ$,1)=":") Then FLEQZ$=DRECTORYQZ$+LLQZ$ : Goto XITGTFILE
  3551.    If(Right$(DRECTORYQZ$,1)="/") Then FLEQZ$=DRECTORYQZ$+LLQZ$ : Goto XITGTFILE
  3552.    If(Right$(DRECTORYQZ$,1)<>":") Then FLEQZ$=DRECTORYQZ$+"/"+LLQZ$ : Goto XITGTFILE
  3553.    XITGTFILE:
  3554.    Return 
  3555.    GTPAR:
  3556.    If Right$(DRECTORYQZ$,1)=":" Then Goto XITGTPAR
  3557.    POSIONQZ=Instr(Flip$(DRECTORYQZ$),"/")
  3558.    POSION2QZ=Instr(Flip$(DRECTORYQZ$),":")
  3559.    If POSIONQZ<>0 Then DRECTORYQZ$=Left$(DRECTORYQZ$,Len(DRECTORYQZ$)-POSIONQZ)
  3560.    If POSIONQZ=0 Then DRECTORYQZ$=Left$(DRECTORYQZ$,Len(DRECTORYQZ$)-POSION2QZ+1)
  3561.    XITGTPAR:
  3562.    Return 
  3563.    GTDIREC:
  3564.    Rem Assuming directory has no 'double space' ! 
  3565.    POSN=Instr(LQZ$(XQZ+IQZ-2),"  ")
  3566.    If Right$(DRECTORYQZ$,1)=":" Then DRECTORYQZ$=DRECTORYQZ$+Mid$(LQZ$(XQZ+IQZ-2),2,POSN-2) : Goto XITGTDIREC
  3567.    If Right$(DRECTORYQZ$,1)<>":" Then DRECTORYQZ$=DRECTORYQZ$+"/"+Mid$(LQZ$(XQZ+IQZ-2),2,POSN-2)
  3568.    XITGTDIREC:
  3569.    Return 
  3570.    XIT:
  3571.    If Not Exist(DRECTORYQZ$) Then ERR : Goto RESTART
  3572.    While Mouse Key<>0 : Wend 
  3573.    Screen Close 2
  3574.    XIT4:
  3575.    If MARKQZ$="SP"
  3576.       On Error Goto ER5
  3577.       Goto OK5
  3578.       ER5:
  3579.       ERR
  3580.       Resume XIT5
  3581.       OK5:
  3582.       F$=Fsel$(DRECTORYQZ$,"",MESSAGE1QZ$,MESSAGE2QZ$)
  3583.    End If 
  3584.    XIT5:
  3585.    While Mouse Key<>0 : Wend 
  3586. End Proc
  3587. Procedure GTANOTHERFILEQZ
  3588.    Clear Key 
  3589.    On Error Goto ER
  3590.    Goto OK
  3591.    ER:
  3592.    ERR
  3593.    Resume XIT
  3594.    OK:
  3595.    Screen Open 1,320,48,4,Hires
  3596.    Screen Display 1,200,100,320,48
  3597.    Curs Off : Cls 1 : Colour 0,$70
  3598.    Print : Centre "Enter file name required"
  3599.    Print : Print 
  3600.    Wind Open 1,32,32,30,1 : Paper 2 : Pen 1 : Clw 
  3601.    Input " ";LLQZ$
  3602.    Curs Off 
  3603.    '   Wait 50
  3604.    If LLQZ$="" Then Goto XIT2
  3605.    If(Right$(DRECTORYQZ$,1)=":") Then FLEQZ$=DRECTORYQZ$+LLQZ$ : Goto XIT2
  3606.    If(Right$(DRECTORYQZ$,1)<>":") Then FLEQZ$=DRECTORYQZ$+"/"+LLQZ$ : Goto XIT2
  3607.    XIT2:
  3608.    Screen Close 1
  3609.    XIT:
  3610. End Proc
  3611. Procedure GTNEWDRECTORYQZ
  3612.    Dim DITQZ$(11)
  3613.    On Error Goto ER
  3614.    Goto OK
  3615.    ER:
  3616.    ERR
  3617.    Resume XIT
  3618.    OK:
  3619.    Screen Open 1,320,56,4,Hires
  3620.    Screen Display 1,200,100,320,56
  3621.    Curs Off : Cls 1 : Colour 0,$70
  3622.    Print : Centre "Select New Directory"
  3623.    DITQZ$(1)="DF0:"
  3624.    DITQZ$(2)="DF1:"
  3625.    DITQZ$(3)="DH0:"
  3626.    DITQZ$(4)="DH1:"
  3627.    DITQZ$(5)="DH2:"
  3628.    DITQZ$(6)="DH3:"
  3629.    DITQZ$(7)="DH4:"
  3630.    DITQZ$(8)="DH5:"
  3631.    DITQZ$(9)="DH6:"
  3632.    DITQZ$(10)="DH7:"
  3633.    DITQZ$(11)="Other"
  3634.    Reserve Zone 
  3635.    Reserve Zone 11
  3636.    Paper 0 : Locate 0,3
  3637.    For IIQZ=1 To 6
  3638.       If Exist(DITQZ$(IIQZ)) Then Cright : Print Zone$(DITQZ$(IIQZ),IIQZ);
  3639.    Next IIQZ
  3640.    Locate 0,5
  3641.    For IIQZ=7 To 10
  3642.       If Exist(DITQZ$(IIQZ)) Then Cright : Print Zone$(DITQZ$(IIQZ),IIQZ);
  3643.    Next IIQZ
  3644.    Locate 30,5
  3645.    Print Zone$(DITQZ$(11),11)
  3646.    Do 
  3647.       For IQZ=1 To 10
  3648.          If Mouse Zone=IQZ and Mouse Key
  3649.             If Exist(DITQZ$(IQZ))
  3650.                DRECTORYQZ$=DITQZ$(IQZ) : Dir$=DITQZ$(IQZ) : Goto XIT
  3651.             End If 
  3652.          End If 
  3653.       Next IQZ
  3654.       If Mouse Zone=11 and Mouse Key Then Exit 
  3655.    Loop 
  3656.    Cls 1 : Paper 1 : Home 
  3657.    Locate 0,2 : Centre "Directory Change"
  3658.    RETRY:
  3659.    Locate 0,4 : Input " Enter New Directory ";DRECTORY3QZ$
  3660.    If(DRECTORY3QZ$="") or(DRECTORY3QZ$=":") Then Goto XIT
  3661.    If Instr(DRECTORY3QZ$,":")=0 Then Cls : Locate 0,1 : Centre "Error - No ':' detected" : Goto RETRY
  3662.    If Right$(DRECTORY3QZ$,1)="/" Then DRECTORY3QZ$=Left$(DRECTORY3QZ$,Len(DRECTORY3QZ$)-1)
  3663.    If Not Exist(DRECTORY3QZ$) Then Cls : Locate 0,1 : Centre "Directory Not Found" : Goto RETRY
  3664.    DRECTORYQZ$=DRECTORY3QZ$
  3665.    XIT:
  3666.    Screen Close 1
  3667. End Proc
  3668. '
  3669. Rem
  3670. Rem                    *********** 
  3671. Rem                   **** End ****  
  3672. Rem ***************************************************