home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 451-475 / apd463 / amos1.34_progs / temp_conv.amos / temp_conv.amosSourceCode < prev   
AMOS Source Code  |  1993-01-17  |  62KB  |  2,574 lines

  1. '*****************************************************************************   
  2. '*                             NCOMMAND v2.03b              Last Updated     *   
  3. '*                    (c) Copyright 1992 Dennis Leech         02/03/92       *       
  4. '*                   (c) Copyright 1992 Oasis Software         2:07pm        *     
  5. '*****************************************************************************   
  6. Set Buffer 30 : NEWCSETUP : Dim N0(50),N1$(50),N2(50),N3(50),N4$(50),N5(50),N6$(50),NR$(50),N7$(50),N8$(10,10),N9(10,10),N10(10,10),RADIO(10),N11(50),CYCLIC(50),CHECKBOX(50),N12(1,50)
  7. Dim N13$(7,50),NR#(50),N15$(10,10),N16(50),N17(50),N18$(50,10),N19(50),N20(50),N21$(3,100),FILENAME$(100),N22$(2,3)
  8. Dim N23#(7,10),N14(7,10),N24(7,10),N25(7,10),N26(7,10),N27(7,10),N28(7,10),HPOS(7,5),VPOS(7,5),N29(7,10,2),SBOXH(10),SBOXV(10),N30$(7,50)
  9. Global N31,N1$(),N2(),N3(),N4$(),N5(),N6$(),NR$(),N0(),N32$,N7$(),BUTTON,N33,CHANGEMADE,N8$(),N9(),N10(),RADIO(),N11(),CYCLIC(),N34,N36,CHECKBOX(),N12(),N37
  10. Global N13$(),NR#(),N15$(),N16(),N17(),N18$(),N19(),MK_PRESSED,N20(),N21$(),FILENAME$,FILENAMES,FILENAME$(),V#,N23#(),N14(),N24(),N25(),N26(),N27(),N28(),HPOS(),VPOS(),N38
  11. Global N39,N40,N41#,LAST_VPOS,LAST_HPOS,N42,N35,N29(),SBOXH(),SBOXV(),N22$(),N30$()
  12. Close Editor 
  13. '***************************************************************************** 
  14. ' PLACE YOUR PROGRAM BELOW HERE
  15. '***************************************************************************** 
  16. '
  17. '  Escape Quits
  18. '  Enter your desired temperature in the box to the right
  19. '  after selecting the desired scale 
  20. '
  21. Global DC#,DF#,DK#
  22. NR#(1)=20.0
  23. '
  24. NSCREEN[0,10,35,4]
  25. NBOX[10,3,75,9,"o"]
  26. CYCLIC[1,12,6,"Scale","Celsius||Fahrenheit||Kelvin",1]
  27. NINP[60,6,"",20,6,1,"b"]
  28. CALCULATE
  29. PRESULT
  30. NFADE_IN
  31. '
  32. Do 
  33.    '
  34.    If Key State(69) Then Proc FINISH
  35.    If Mouse Key
  36.       MOUSE_TEST
  37.       CALCULATE
  38.       PRESULT
  39.    End If 
  40.    '
  41. Loop 
  42. '
  43. Procedure CALCULATE
  44.    Fix(2)
  45.    If CYCLIC(1)=1
  46.       DC#=NR#(1)
  47.       DF#=((NR#(1)*9)/5)+32
  48.       DK#=NR#(1)+273.2
  49.    End If 
  50.    If CYCLIC(1)=2
  51.       DC#=((NR#(1)-32)*5)/9
  52.       DF#=NR#(1)
  53.       DK#=(((NR#(1)-32)*5)/9)+273.2
  54.    End If 
  55.    If CYCLIC(1)=3
  56.       DC#=NR#(1)-273.2
  57.       DF#=(((NR#(1)-273.2)*9)/5)+32
  58.       DK#=NR#(1)
  59.    End If 
  60. End Proc
  61. Procedure PRESULT
  62.    LOC[37,5,"                  ",1]
  63.    LOC[37,6,"                  ",1]
  64.    LOC[37,7,"                  ",1]
  65.    LOC[37,5,"Kelvin     "+Str$(DK#),1]
  66.    LOC[37,6,"Celsius    "+Str$(DC#),1]
  67.    LOC[37,7,"Fahrenheit "+Str$(DF#),1]
  68. End Proc
  69. Procedure FINISH
  70.    Default 
  71.    Edit 
  72. End Proc
  73. '
  74. '***************************************************************************** 
  75. ' PLACE YOUR PROGRAM ABOVE HERE
  76. '***************************************************************************** 
  77. Edit 
  78. End 
  79. Procedure NEWCSETUP
  80.    Screen Open 0,680,256,4,Hires
  81.    Screen Hide 0
  82.    Flash Off 
  83.    Curs Off 
  84.    Cls 0
  85.    Default Palette ,,,,,,,,,,,,,,,,$999,$458,$0,$FFF
  86.    If Exist("ram:temp.amos")
  87.       Kill "ram:temp.amos"
  88.    End If 
  89.    Limit Mouse 10,46 To 680,300
  90.    N31=0
  91.    Get Rom Fonts 
  92.    Set Font 2
  93.    N32$="*"
  94.    OB$=""
  95.    OB$=OB$+"0003333333333000"
  96.    OB$=OB$+"0033000000002200"
  97.    OB$=OB$+"0330000000000220"
  98.    OB$=OB$+"3300000000000022"
  99.    OB$=OB$+"3300000000000022"
  100.    OB$=OB$+"0330000000000220"
  101.    OB$=OB$+"0033000000002200"
  102.    OB$=OB$+"0002222222222000"
  103.    For A=1 To Len(OB$) Step 16
  104.       For B=0 To 15
  105.          Y=A/16
  106.          NVAL[Mid$(OB$,A+B,1)]
  107.          Ink V#
  108.          Plot B+50,Y+50
  109.       Next B
  110.    Next A
  111.    Get Icon 1,50,50 To 50+16,50+8
  112.    Screen Close 0
  113.    N35=1
  114.    Screen Open 0,50,50,2,Lowres
  115.    Screen Hide 0
  116. End Proc
  117. Procedure NBOX[X1,Y1,X2,Y2,T$]
  118.    On Error Proc PERROR
  119.    Resume Label E1
  120.    T$=Upper$(T$)
  121.    XX1=(X1*8)
  122.    YY1=(Y1*8)+4
  123.    XX2=(X2*8)+6
  124.    YY2=(Y2*8)+4
  125.    If(T$="BO") or(T$="BI")
  126.       YY1=YY1+1
  127.       YY2=YY2-2
  128.       XX1=XX1+2
  129.       XX2=XX2-2
  130.    End If 
  131.    '1st corner  
  132.    If(T$="O") or(T$="") or(T$="BO")
  133.       Ink 3
  134.    Else 
  135.       Ink 2
  136.    End If 
  137.    Draw XX1,YY1+0 To XX2-0,YY1
  138.    Draw XX1+0,YY1 To XX1+0,YY2-1
  139.    '2nd corner  
  140.    If(T$="O") or(T$="") or(T$="BO")
  141.       Ink 2
  142.    Else 
  143.       Ink 3
  144.    End If 
  145.    Draw XX1+0,YY2-1 To XX2,YY2-1
  146.    Draw XX2-0,YY2-1 To XX2-0,YY1
  147.    E1:
  148.    Ink 0
  149.    Paper 0 : Pen 2
  150. End Proc
  151. Procedure IBOX[X1,Y1,X2,Y2]
  152.    On Error Proc PERROR
  153.    Resume Label E2
  154.    XX1=(X1*8)
  155.    YY1=(Y1*8)+4
  156.    XX2=(X2*8)+6
  157.    YY2=(Y2*8)+4
  158.    '
  159.    '  draw 1st corner of box
  160.    '
  161.    Ink 3
  162.    Draw XX1,YY1+0 To XX2-0,YY1
  163.    Ink 2
  164.    Draw XX1,YY1+1 To XX2-0,YY1+1
  165.    Ink 3
  166.    '
  167.    Draw XX1+0,YY1 To XX1+0,YY2-1
  168.    Draw XX1+1,YY1 To XX1+1,YY2-1
  169.    Ink 2
  170.    Draw XX1+2,YY1+1 To XX1+2,YY2-1
  171.    Draw XX1+3,YY1+1 To XX1+3,YY2-1
  172.    '
  173.    '  draw 2nd corner of box
  174.    '
  175.    Ink 2
  176.    Draw XX1+0,YY2-1 To XX2,YY2-1
  177.    Ink 3
  178.    Draw XX1+3,YY2-2 To XX2-3,YY2-2
  179.    Ink 2
  180.    '
  181.    Draw XX2-0,YY2-1 To XX2-0,YY1
  182.    Draw XX2-1,YY2-1 To XX2-1,YY1+1
  183.    Ink 3
  184.    Draw XX2-2,YY2-2 To XX2-2,YY1
  185.    Draw XX2-3,YY2-2 To XX2-3,YY1+1
  186.    '
  187.    E2:
  188.    Ink 0
  189.    Paper 0 : Pen 2
  190. End Proc
  191. Procedure BBOX[NUM,X1,Y1,X2,Y2,T$]
  192.    On Error Proc PERROR
  193.    Resume Label E3
  194.    If NUM>0
  195.       N$=Right$(Str$(X1),2)
  196.       N$=N$+Right$(Str$(Y1),2)
  197.       N$=N$+Right$(Str$(X2),2)
  198.       N$=N$+Right$(Str$(Y2),2)
  199.       N$=N$+"1"
  200.       N$=N$+Right$(Str$(Len(T$)),2)
  201.       N$=N$+T$
  202.       If NUM<51
  203.          N13$(Screen,NUM)=N$
  204.       End If 
  205.       Ink 2,0
  206.       CENT=((X2-X1)*4)-(Len(T$)*4)
  207.       T1$=Upper$(T$)
  208.       If(T1$<>"#UP#") and(T1$<>"#DOWN#") and(T1$<>"#LEFT#") and(T1$<>"#RIGHT#") and(Left$(T1$,7)<>"#BLANK#")
  209.          If Left$(T1$,9)<>"#NOCLICK#"
  210.             Text(X1+1)*8+CENT-4,(Y1+2)*8-2,T$
  211.          Else 
  212.             CENT=((X2-X1)*4)-(Len(Right$(T$,Len(T$)-9))*4)
  213.             Text(X1+1)*8+CENT-4,(Y1+2)*8-2,Right$(T$,Len(T$)-9)
  214.          End If 
  215.       End If 
  216.       If T1$="#UP#"
  217.          Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,5
  218.       End If 
  219.       If T1$="#DOWN#"
  220.          Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,6
  221.       End If 
  222.       If T1$="#LEFT#"
  223.          Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,7
  224.       End If 
  225.       If T1$="#RIGHT#"
  226.          Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,8
  227.       End If 
  228.       If Left$(T1$,7)<>"#BLANK#"
  229.          NBOX[X1,Y1,X2,Y2,"bo"]
  230.          If Left$(T1$,9)<>"#NOCLICK#"
  231.             Set Zone NUM,X1*8,Y1*8+4 To X2*8+6,Y2*8+4
  232.          End If 
  233.       End If 
  234.    End If 
  235.    E3:
  236. End Proc
  237. Procedure NVAL[N$]
  238.    On Error Proc PERROR
  239.    Resume Label E4
  240.    V=0
  241.    P=1
  242.    M=0
  243.    DP=Instr(Flip$(N$),".")
  244.    If DP>0 : Dec DP : End If 
  245.    DP#=1 : A=0 : While A<DP : DP#=DP#*10 : Inc A : Wend 
  246.    Repeat 
  247.       If(Mid$(N$,P,1)>="0") and(Mid$(N$,P,1)<="9")
  248.          V=V*10+Asc(Mid$(N$,P,1))-48
  249.       Else 
  250.          If Mid$(N$,P,1)="-"
  251.             M=1
  252.          End If 
  253.       End If 
  254.       Inc P
  255.    Until P>Len(N$) or P=10
  256.    If M : V=-V : End If 
  257.    V#=V/DP#
  258.    E4:
  259. End Proc
  260. Procedure PRNT_BUTTON[NUM]
  261.    On Error Proc PERROR
  262.    Resume Label E5
  263.    Rem biggest number used to be 202
  264.    If(NUM>0) and(NUM<51)
  265.       N$=N13$(Screen,NUM)
  266.       NVAL[Mid$(N$,1,2)]
  267.       X1=V#
  268.       NVAL[Mid$(N$,3,2)]
  269.       Y1=V#
  270.       NVAL[Mid$(N$,5,2)]
  271.       X2=V#
  272.       NVAL[Mid$(N$,7,2)]
  273.       Y2=V#
  274.       NVAL[Mid$(N$,9,1)]
  275.       STAT=V#
  276.       NVAL[Mid$(N$,10,2)]
  277.       L=V#
  278.       T$=Right$(N$,L)
  279.       '
  280.       XX1=(X1*8)
  281.       YY1=(Y1*8)+4
  282.       XX2=(X2*8)+6
  283.       YY2=(Y2*8)+4
  284.       '
  285.       N$=Right$(Str$(X1),2)
  286.       N$=N$+Right$(Str$(Y1),2)
  287.       N$=N$+Right$(Str$(X2),2)
  288.       N$=N$+Right$(Str$(Y2),2)
  289.       If STAT=1
  290.          N$=N$+"0"
  291.       Else 
  292.          N$=N$+"1"
  293.       End If 
  294.       N$=N$+Right$(Str$(Len(T$)),2)
  295.       N$=N$+T$
  296.       N13$(Screen,NUM)=N$
  297.       If STAT=1
  298.          NBOX[X1,Y1,X2,Y2,"bi"]
  299.          Ink 1
  300.          Bar XX1+2+2,YY1+1+1 To XX2-3-2,YY2-2-2
  301.          Ink 3,1
  302.          CENT=((X2-X1)*4)-(Len(T$)*4)
  303.          T1$=Upper$(T$)
  304.          If(T1$<>"#UP#") and(T1$<>"#DOWN#") and(T1$<>"#LEFT#") and(T1$<>"#RIGHT#")
  305.             Text(X1+1)*8+CENT-4,(Y1+2)*8-2,T$
  306.          End If 
  307.          If T1$="#UP#"
  308.             Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,9
  309.          End If 
  310.          If T1$="#DOWN#"
  311.             Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,10
  312.          End If 
  313.          If T1$="#LEFT#"
  314.             Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,11
  315.          End If 
  316.          If T1$="#RIGHT#"
  317.             Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,12
  318.          End If 
  319.       Else 
  320.          NBOX[X1,Y1,X2,Y2,"bo"]
  321.          Ink 0
  322.          Bar XX1+2+2,YY1+1+1 To XX2-3-2,YY2-2-2
  323.          Ink 2,0
  324.          CENT=((X2-X1)*4)-(Len(T$)*4)
  325.          T1$=Upper$(T$)
  326.          If(T1$<>"#UP#") and(T1$<>"#DOWN#") and(T1$<>"#LEFT#") and(T1$<>"#RIGHT#")
  327.             Text(X1+1)*8+CENT-4,(Y1+2)*8-2,T$
  328.          End If 
  329.          If T1$="#UP#"
  330.             Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,5
  331.          End If 
  332.          If T1$="#DOWN#"
  333.             Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,6
  334.          End If 
  335.          If T1$="#LEFT#"
  336.             Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,7
  337.          End If 
  338.          If T1$="#RIGHT#"
  339.             Paste Icon(X1+1)*8+((X2-X1)*4)-12,(Y1+1)*8,8
  340.          End If 
  341.       End If 
  342.    End If 
  343.    E5:
  344. End Proc
  345. Procedure LOC[X1,Y1,T$,P]
  346.    On Error Proc PERROR
  347.    Resume Label E6
  348.    If P=1
  349.       Pen 1
  350.    Else 
  351.       Pen 2
  352.    End If 
  353.    Paper 0
  354.    Locate X1,Y1 : Print T$
  355.    Pen 2
  356.    E6:
  357. End Proc
  358. Procedure NFADE_IN
  359.    Fade 1,$999,$458,$0,$FFF
  360.    Wait 30
  361. End Proc
  362. Procedure NFADE_OUT
  363.    Fade 1,$999,$999,$999,$999
  364.    Wait 30
  365. End Proc
  366. Procedure NREAD
  367.    NR[1,1]
  368.    If N33>0
  369.       BUTTON=N33
  370.    End If 
  371. End Proc
  372. Procedure NR[XC,YC]
  373.    On Error Proc PERROR
  374.    Resume Label E7
  375.    Paper 2
  376.    Pen 0
  377.    Gosub P3
  378.    K$=""
  379.    While YC<=N31
  380.       Repeat 
  381.          K$=Inkey$
  382.          S=Scancode
  383.          N37=Mouse Key
  384.          MZ=Mouse Zone
  385.          K=Key Shift
  386.          If(K$<>"") and(K=128)
  387.             For A=1 To 50
  388.                Exit If N30$(Screen,A)=Upper$(K$)
  389.             Next A
  390.             If A<51
  391.                MZ=A
  392.                N37=1
  393.             End If 
  394.          End If 
  395.          If(N37=1 or N37=2) and MZ>0
  396.             Gosub P1
  397.             N33=MZ
  398.             YC=N31
  399.             K$=Chr$(13)
  400.          End If 
  401.          If N37=1 or N37=2 and MZ=0
  402.             Gosub MOUSE_CO
  403.          End If 
  404.          N37=0
  405.          KK=Key Shift
  406.       Until K$<>"" or S=70
  407.       '
  408.       If S=65 Then K$=Chr$(8)
  409.       If S=76 Then K$=Chr$(30)
  410.       If S=77 Then K$=Chr$(31)
  411.       If S=78 Then K$=Chr$(28)
  412.       If S=79 Then K$=Chr$(29)
  413.       '***** del ***** 
  414.       If(S=70) and(N5(YC)>1)
  415.          If(N6$(YC)<>"D") and(N6$(YC)<>"T") and(N20(YC)=0)
  416.             TT$=Right$(N4$(YC),N5(YC)-XC)
  417.             TT$=TT$+" "
  418.             TT=Len(TT$)
  419.             TT1$=Left$(N4$(YC),XC-1)
  420.             N4$(YC)=TT1$+TT$
  421.          End If 
  422.          If N20(YC)>0
  423.             If N20(YC)<XC
  424.                N4$(YC)=Left$(N4$(YC),XC-1)+Right$(N4$(YC),N5(YC)-XC)+" "
  425.             End If 
  426.             If N20(YC)>XC
  427.                TT$=Left$(N4$(YC),XC-1)
  428.                TT1$=Mid$(N4$(YC),XC+1,N20(YC)-XC-1)+" "
  429.                N4$(YC)=TT$+TT1$+Right$(N4$(YC),N5(YC)-N20(YC)+1)
  430.             End If 
  431.          End If 
  432.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=1)
  433.             N4$(YC)=Mid$(N4$(YC),2,1)+" "+Right$(N4$(YC),6)
  434.          End If 
  435.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=2)
  436.             N4$(YC)=Left$(N4$(YC),1)+" "+Right$(N4$(YC),6)
  437.          End If 
  438.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=4)
  439.             N4$(YC)=Left$(N4$(YC),3)+Mid$(N4$(YC),5,1)+" "+Right$(N4$(YC),3)
  440.          End If 
  441.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=5)
  442.             N4$(YC)=Left$(N4$(YC),4)+" "+Right$(N4$(YC),3)
  443.          End If 
  444.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=7)
  445.             N4$(YC)=Left$(N4$(YC),6)+Right$(N4$(YC),1)+" "
  446.          End If 
  447.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=8)
  448.             N4$(YC)=Left$(N4$(YC),7)+" "
  449.          End If 
  450.          Gosub P2
  451.          K$="" : K=0 : S=0 : 
  452.       End If 
  453.       '***** del ***** 
  454.       If(S=70) and(N5(YC)=1) and(N6$(YC)<>"F")
  455.          N4$(YC)=" "
  456.          Gosub P2
  457.          K$="" : K=0 : S=0
  458.       End If 
  459.       '***** ctrl-x *****
  460.       If(KK=128) and(K$="x") and(N6$(YC)<>"F")
  461.          N4$(YC)=String$(" ",N5(YC))
  462.          If N6$(YC)="D"
  463.             N4$(YC)="  /  /  "
  464.          End If 
  465.          If N6$(YC)="T"
  466.             N4$(YC)="00:00.00"
  467.          End If 
  468.          If N20(YC)>0
  469.             N4$(YC)=Space$(N20(YC)-1)+"."+Space$(N5(YC)-N20(YC))
  470.          End If 
  471.          Paper 0 : Pen 2 : Locate N2(YC)+1,N3(YC) : Print N4$(YC) : Paper 0 : Pen 2
  472.          K$="" : K=0 : S=0 : XC=1
  473.       End If 
  474.       '***** ctrl-X *****
  475.       If(KK=132) and(K$="X") and(N6$(YC)<>"F")
  476.          N4$(YC)=String$(" ",N5(YC))
  477.          If N6$(YC)="D"
  478.             N4$(YC)="  /  /  "
  479.          End If 
  480.          If N6$(YC)="T"
  481.             N4$(YC)="00:00.00"
  482.          End If 
  483.          If N20(YC)>0
  484.             N4$(YC)=Space$(N20(YC)-1)+"."+Space$(N5(YC)-N20(YC))
  485.          End If 
  486.          Inverse On : Locate N2(YC)+1,N3(YC) : Print N4$(YC) : Inverse Off 
  487.          K$="" : K=0 : S=0 : XC=1
  488.       End If 
  489.       '***** ctrl-X *****
  490.       If(KK=128) and(K$="x") and(N6$(YC)="F")
  491.          K$=" " : CM=1
  492.       End If 
  493.       '***** ctrl-x *****
  494.       If(KK=132) and(K$="X") and(N6$(YC)="F")
  495.          K$=" " : CM=1
  496.       End If 
  497.       '
  498.       K=Asc(K$)
  499.       If N7$(YC)="U"
  500.          If(K>96) and(K<123)
  501.             K$=Upper$(K$)
  502.          End If 
  503.       End If 
  504.       If(N1$(YC)<>"") and(N6$(YC)="F") and(K<>13) and(K<>30) and(K<>31) and(S<>70) and(K<>8)
  505.          XX=Instr(N1$(YC),K$)
  506.          If XX=0
  507.             K$="" : K=0 : S=0
  508.          End If 
  509.       End If 
  510.       '***** escape *****
  511.       If K=27
  512.          Gosub P1
  513.          YC=N31
  514.          K=13
  515.       End If 
  516.       '***** cursor left ***** 
  517.       If(K=29) and(XC>1)
  518.          If(N6$(YC)="D") or(N6$(YC)="T")
  519.             If(XC=4) or(XC=7)
  520.                Gosub P1
  521.                Dec XC
  522.             End If 
  523.          End If 
  524.          If N20(YC)>1
  525.             If XC=N20(YC)+1
  526.                Gosub P1
  527.                Dec XC
  528.             End If 
  529.          End If 
  530.          Gosub P1
  531.          Dec XC
  532.          K$="" : K=0 : S=0
  533.       End If 
  534.       '
  535.       If(K=29) and(XC=1)
  536.          K$="" : K=0 : S=0
  537.       End If 
  538.       '***** cursor right *****
  539.       If(K=28) and(XC<N5(YC))
  540.          If(N6$(YC)="D") or(N6$(YC)="T")
  541.             If(XC=2) or(XC=5)
  542.                Gosub P1
  543.                Inc XC
  544.             End If 
  545.          End If 
  546.          If N20(YC)<N5(YC)-1
  547.             If XC=N20(YC)-1
  548.                Gosub P1
  549.                Inc XC
  550.             End If 
  551.          End If 
  552.          Gosub P1
  553.          Inc XC
  554.          K$="" : K=0 : S=0
  555.       End If 
  556.       '
  557.       If(K=28) and(XC=N5(YC))
  558.          K$="" : K=0 : S=0
  559.       End If 
  560.       '***** cursor up ***** 
  561.       If(K=30) and(YC>1)
  562.          If(N6$(YC)="D") and(N4$(YC)<>"  /  /  ")
  563.             Gosub VDATE
  564.          End If 
  565.          If(N6$(YC)="T") and(N4$(YC)<>"00:00.00")
  566.             Gosub VTIME
  567.          End If 
  568.          If EF=0
  569.             Gosub P1
  570.             Dec YC
  571.             If(N6$(YC)="D") or(N6$(YC)="T")
  572.                If XC=3 or XC=6
  573.                   Gosub P1
  574.                   XC=XC-2
  575.                End If 
  576.             End If 
  577.             If N20(YC)=XC
  578.                If XC=N20(YC)
  579.                   Gosub P1
  580.                   Dec XC
  581.                End If 
  582.             End If 
  583.             K$="" : K=0 : S=0
  584.             If N5(YC)<XC
  585.                XC=N5(YC)
  586.             End If 
  587.          End If 
  588.          If EF=1
  589.             Gosub P1
  590.             XC=1
  591.          End If 
  592.          K$="" : K=0 : S=0
  593.       End If 
  594.       '
  595.       If(K=30) and(YC=1)
  596.          K$="" : K=0 : S=0
  597.       End If 
  598.       '***** cursor down ***** 
  599.       If(K=31) and(YC<N31)
  600.          If(N6$(YC)="D") and(N4$(YC)<>"  /  /  ")
  601.             Gosub VDATE
  602.          End If 
  603.          If(N6$(YC)="T") and(N4$(YC)<>"00:00.00")
  604.             Gosub VTIME
  605.          End If 
  606.          If EF=0
  607.             Gosub P1
  608.             Inc YC
  609.             If(N6$(YC)="D") or(N6$(YC)="T")
  610.                If XC=3 or XC=6
  611.                   Gosub P1
  612.                   XC=XC-2
  613.                End If 
  614.             End If 
  615.             If N20(YC)=XC
  616.                If XC=N20(YC)
  617.                   Gosub P1
  618.                   Dec XC
  619.                End If 
  620.             End If 
  621.             If N5(YC)<XC
  622.                XC=N5(YC)
  623.             End If 
  624.          End If 
  625.          If EF=1
  626.             Gosub P1
  627.             XC=1
  628.          End If 
  629.          K$="" : K=0 : S=0
  630.       End If 
  631.       '
  632.       If(K=31) and(YC=N31)
  633.          K$="" : K=0 : S=0
  634.       End If 
  635.       '***** return *****
  636.       If K=13
  637.          If(N6$(YC)="D") and(N4$(YC)<>"  /  /  ")
  638.             Gosub VDATE
  639.          End If 
  640.          If(N6$(YC)="T") and(N4$(YC)<>"00:00.00")
  641.             Gosub VTIME
  642.          End If 
  643.          If EF=0
  644.             Gosub P1
  645.             If CM=0
  646.                Inc YC
  647.             End If 
  648.             If CM=1
  649.                CM=0
  650.             End If 
  651.          End If 
  652.          If EF=1
  653.             Gosub P1
  654.          End If 
  655.          K$="" : K=0 : S=0 : XC=1
  656.       End If 
  657.       '***** backspace ***** 
  658.       If(K=8) and(XC>1)
  659.          If(N6$(YC)<>"D") and(N6$(YC)<>"T") and(N20(YC)=0)
  660.             TT$=Right$(N4$(YC),N5(YC)-XC+1)
  661.             TT$=TT$+" "
  662.             TT=Len(TT$)
  663.             TT1$=Left$(N4$(YC),XC-2)
  664.             N4$(YC)=TT1$+TT$
  665.          End If 
  666.          '** dec point ** 
  667.          If N20(YC)>0
  668.             If N20(YC)=XC
  669.                N4$(YC)=Left$(N4$(YC),N20(YC)-2)+" ."+Right$(N4$(YC),N5(YC)-N20(YC))
  670.                Gosub P2
  671.                Dec XC
  672.             End If 
  673.             If N20(YC)<XC
  674.                TT$=Right$(N4$(YC),N5(YC)-XC+1)
  675.                TT$=TT$+" "
  676.                TT=Len(TT$)
  677.                TT1$=Left$(N4$(YC),XC-2)
  678.                N4$(YC)=TT1$+TT$
  679.                If N20(YC)=XC-1
  680.                   Dec XC
  681.                   N4$(YC)=Left$(N4$(YC),N20(YC)-1)+"."+Right$(N4$(YC),N5(YC)-N20(YC))
  682.                End If 
  683.             End If 
  684.             If N20(YC)>XC
  685.                TYU$=Left$(N4$(YC),N20(YC)-1)
  686.                TT$=Right$(TYU$,Len(TYU$)-XC+1)
  687.                TT$=TT$+" "
  688.                TT=Len(TT$)
  689.                TT1$=Left$(TYU$,XC-2)
  690.                TYU$=TT1$+TT$
  691.                N4$(YC)=TYU$+"."+Right$(N4$(YC),N5(YC)-N20(YC))
  692.             End If 
  693.          End If 
  694.          '** date & time ** 
  695.          If(N6$(YC)="D") and(XC=2)
  696.             N4$(YC)=Mid$(N4$(YC),2,1)+" /"+Mid$(N4$(YC),4,5)
  697.          End If 
  698.          If(N6$(YC)="T") and(XC=2)
  699.             N4$(YC)=Mid$(N4$(YC),2,1)+" :"+Mid$(N4$(YC),4,5)
  700.          End If 
  701.          '
  702.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=4)
  703.             N4$(YC)=Left$(N4$(YC),3)+Mid$(N4$(YC),5,1)+" "+Right$(N4$(YC),3)
  704.             Gosub P2
  705.             Dec XC
  706.          End If 
  707.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=5)
  708.             N4$(YC)=Left$(N4$(YC),3)+Mid$(N4$(YC),5,1)+" "+Right$(N4$(YC),3)
  709.          End If 
  710.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=7)
  711.             N4$(YC)=Left$(N4$(YC),6)+Mid$(N4$(YC),8,1)+" "
  712.             Gosub P2
  713.             Dec XC
  714.          End If 
  715.          If((N6$(YC)="D") or(N6$(YC)="T")) and(XC=8)
  716.             N4$(YC)=Left$(N4$(YC),6)+Mid$(N4$(YC),8,1)+" "
  717.          End If 
  718.          Gosub P2
  719.          Dec XC
  720.          K$="" : K=0 : S=0
  721.       End If 
  722.       '
  723.       If(K=8) and(XC=1)
  724.          K$="" : K=0 : S=0
  725.       End If 
  726.       '
  727.       If((S>79) and(S<90)) or(K=9)
  728.          K$="" : K=0 : S=0
  729.       End If 
  730.       '
  731.       If K>0
  732.          If(N6$(YC)="A")
  733.             If((K<65) or(K>90)) and((K<97) or(K>122)) and(K<>32)
  734.                K$="" : K=0 : S=0
  735.             End If 
  736.          End If 
  737.          If(N6$(YC)="N")
  738.             If((K<48) or(K>57)) and(K<>46) and(K<>32)
  739.                K$="" : K=0 : S=0
  740.             End If 
  741.          End If 
  742.          If(N6$(YC)="D") or(N6$(YC)="T")
  743.             If(K<48) or(K>57)
  744.                K$="" : K=0 : S=0
  745.             End If 
  746.          End If 
  747.       End If 
  748.       '
  749.       If K>0
  750.          If(N20(YC)>0) and(K$=".")
  751.             T1$=Left$(N4$(YC),N20(YC)-1)
  752.             NVAL[T1$]
  753.             V=V#
  754.             T1$=Right$(Str$(V),Len(Str$(V))-1)
  755.             T1=Len(T1$)
  756.             If T1<N20(YC)-1
  757.                T1$=Space$(N20(YC)-T1-1)+T1$+"."
  758.             End If 
  759.             N4$(YC)=T1$+Right$(N4$(YC),N5(YC)-N20(YC))
  760.             Gosub P2
  761.             XC=N20(YC)
  762.          End If 
  763.          If(N0(YC)=0) or(K$=" ")
  764.             Locate N2(YC)+XC,N3(YC) : Inverse On : Print K$
  765.          End If 
  766.          If(N0(YC)=1) and(K$<>" ")
  767.             Locate N2(YC)+XC,N3(YC) : Inverse On : Print Left$(N32$,1)
  768.          End If 
  769.          If(N6$(YC)<>"D") and(N6$(YC)<>"T") and(N20(YC)=0)
  770.             D1$=N4$(YC)
  771.             T1$=Right$(D1$,N5(YC)-XC+1)
  772.             T2$=Left$(T1$,Len(T1$)-1)
  773.             T3$=Left$(D1$,XC-1)
  774.             N4$(YC)=T3$+K$+T2$
  775.          End If 
  776.          If(N6$(YC)="D") or(N6$(YC)="T") or(N20(YC)>0)
  777.             D1$=N4$(YC)
  778.             T1$=Right$(D1$,N5(YC)-XC)
  779.             T2$=Left$(T1$,Len(T1$)-1)
  780.             T3$=Left$(D1$,XC-1)
  781.             N4$(YC)=T3$+K$+T1$
  782.          End If 
  783.          Gosub P2
  784.          K$="" : K=0 : S=0
  785.          Inc XC
  786.          If N6$(YC)="D"
  787.             If Mid$(N4$(YC),XC,1)="/"
  788.                Gosub P2
  789.                Inc XC
  790.             End If 
  791.          End If 
  792.          If N6$(YC)="T"
  793.             If(Mid$(N4$(YC),XC,1)=":") or(Mid$(N4$(YC),XC,1)=".")
  794.                Gosub P2
  795.                Inc XC
  796.             End If 
  797.          End If 
  798.          If N20(YC)>0
  799.             If Mid$(N4$(YC),XC,1)="."
  800.                Gosub P2
  801.                Inc XC
  802.             End If 
  803.          End If 
  804.          If XC>N5(YC)
  805.             K$=Chr$(13) : K=13
  806.             XC=N5(YC)
  807.          End If 
  808.       End If 
  809.       '
  810.       Gosub P3
  811.    Wend 
  812.    Inverse Off 
  813.    Paper 0
  814.    Pen 2
  815.    CHANGEMADE=1
  816.    For A=1 To N31
  817.       NR$(A)=N4$(A)
  818.       If N19(A)=1
  819.          T$=NR$(A)
  820.          L=Len(T$)
  821.          If L>0
  822.             For B=L To 1 Step -1
  823.                Exit If Mid$(T$,B,1)<>" "
  824.             Next B
  825.             If B=>1
  826.                T$=Left$(T$,B)
  827.             Else 
  828.                T$=""
  829.             End If 
  830.          End If 
  831.          NR$(A)=T$
  832.       End If 
  833.       NVAL[NR$(A)]
  834.       NR#(A)=V#
  835.    Next A
  836.    Pop Proc
  837.    P1:
  838.    If XC>0
  839.       If(N0(YC)=0) or(Mid$(N4$(YC),XC,1)=" ")
  840.          Locate N2(YC)+XC,N3(YC) : Paper 0 : Pen 2 : Print Mid$(N4$(YC),XC,1)
  841.       End If 
  842.       If(XC<=N5(YC)) and(N0(YC)=1) and(Mid$(N4$(YC),XC,1)<>" ")
  843.          Locate N2(YC)+XC,N3(YC) : Paper 0 : Pen 2 : Print Left$(N32$,1)
  844.       End If 
  845.    End If 
  846.    Return 
  847.    P2:
  848.    If(N0(YC)=0)
  849.       Paper 0 : Pen 2 : Locate N2(YC)+1,N3(YC) : Print N4$(YC)
  850.    End If 
  851.    If(N0(YC)=1)
  852.       Paper 0 : Pen 2 : Locate N2(YC)+1,N3(YC)
  853.       For AA=1 To Len(N4$(YC))
  854.          If Mid$(N4$(YC),AA,1)<>" "
  855.             Locate N2(YC)+AA,N3(YC) : Print N32$
  856.          Else 
  857.             Locate N2(YC)+AA,N3(YC) : Print " "
  858.          End If 
  859.       Next AA
  860.    End If 
  861.    Return 
  862.    P3:
  863.    If(N0(YC)=0) or(Mid$(N4$(YC),XC,1)=" ")
  864.       Paper 1 : Pen 3 : Locate N2(YC)+XC,N3(YC) : Print Mid$(N4$(YC),XC,1) : Paper 0 : Rem Inverse On 
  865.    End If 
  866.    If(N0(YC)=1) and(Mid$(N4$(YC),XC,1)<>" ")
  867.       Paper 1 : Pen 3 : Locate N2(YC)+XC,N3(YC) : Print Left$(N32$,1) : Paper 0 : Rem Inverse On   
  868.    End If 
  869.    Paper 0 : Pen 2 : Inverse Off 
  870.    Return 
  871.    VDATE:
  872.    VDATE[N4$(YC)]
  873.    EF=N38
  874.    Return 
  875.    VTIME:
  876.    VTIME[N4$(YC)]
  877.    EF=N38
  878.    Return 
  879.    MOUSE_CO:
  880.    XM=X Mouse
  881.    YM=Y Mouse
  882.    MXC=X Screen(XM)/8
  883.    MYC=Y Screen(YM)/8
  884.    For ABC=1 To N31
  885.       If(N3(ABC)=MYC) and(MXC-N2(ABC)<=N5(ABC)) and(MXC-N2(ABC)>0)
  886.          CHM=0 : Rem ** NO CHANGE MADE ** 
  887.          If YC<>ABC
  888.             CHM=1
  889.          End If 
  890.          If XC<>MXC-N2(ABC)
  891.             CHM=1
  892.          End If 
  893.          If CHM=1
  894.             Gosub P1
  895.             YC=ABC : XC=MXC-N2(ABC)-1
  896.             If N6$(YC)="F"
  897.                XC=1
  898.             End If 
  899.             K$=Chr$(28)
  900.          End If 
  901.       End If 
  902.    Next ABC
  903.    Return 
  904.    E7:
  905. End Proc
  906. Procedure UNREAD
  907.    For A=1 To 50
  908.       N1$(A)=""
  909.       NR$(A)=""
  910.       N4$(A)=""
  911.       N0(A)=0
  912.       N20(A)=0
  913.    Next A
  914.    N31=0
  915. End Proc
  916. Procedure TINP[X,Y,M$,T$,L,T1$,TT$]
  917.    On Error Proc PERROR
  918.    Resume Label E8
  919.    If Len(T$)>L
  920.       T$=Left$(T$,L)
  921.    End If 
  922.    T1$=Upper$(T1$)
  923.    TT$=Upper$(TT$)
  924.    Inc N31
  925.    Rem ** check for trim ** 
  926.    FOUND$="T"
  927.    FOUND=Instr(TT$,FOUND$)
  928.    If FOUND<>0
  929.       N19(N31)=1
  930.    Else 
  931.       N19(N31)=0
  932.    End If 
  933.    FOUND$="P"
  934.    FOUND=Instr(TT$,FOUND$)
  935.    If FOUND<>0
  936.       N0(N31)=1
  937.    Else 
  938.       N0(N31)=0
  939.    End If 
  940.    Rem ** print text ** 
  941.    Pen 2
  942.    Locate X,Y
  943.    Print M$;
  944.    Paper 0
  945.    Pen 2
  946.    XC=X Curs
  947.    Locate XC,Y : Print Space$(L)
  948.    Rem ** validate time **
  949.    If T1$="T"
  950.       L=8
  951.       VTIME[T$]
  952.       EF=N38
  953.       If EF=0
  954.          T$=Right$(Str$(HH),2)+":"+Right$(Str$(MM),2)+"."+Right$(Str$(SS),2)
  955.          If HH<10
  956.             T$="0"+Right$(T$,7)
  957.          End If 
  958.       Else 
  959.          T$="00:00.00"
  960.       End If 
  961.    End If 
  962.    Rem ** validate date **
  963.    If T1$="D"
  964.       L=8
  965.       VDATE[T$]
  966.       EF=N38
  967.       If EF=1
  968.          T$="  /  /  "
  969.       End If 
  970.    End If 
  971.    Rem ** turn text upper case ** 
  972.    FOUND$="U"
  973.    FOUND=Instr(TT$,FOUND$)
  974.    If FOUND<>0
  975.       T$=Upper$(T$)
  976.       N7$(N31)="U"
  977.    Else 
  978.       N7$(N31)=""
  979.    End If 
  980.    Rem ** use a filter with the text ** 
  981.    If T1$="F"
  982.       L=1
  983.       T$=Left$(T$,1)
  984.       IT=Instr(N1$(N31),T$)
  985.       If IT=0
  986.          T$=" "
  987.       End If 
  988.    End If 
  989.    XL=Instr(N1$(N31),T$)
  990.    If(XL<>0) and(T1$="F")
  991.       Locate XC,Y
  992.       Print T$
  993.    End If 
  994.    Inverse Off 
  995.    Rem ** put a box around the input box ** 
  996.    Paper 0
  997.    Pen 3
  998.    FOUND$="B"
  999.    FOUND=Instr(TT$,FOUND$)
  1000.    If FOUND<>0
  1001.       MM=Len(M$)
  1002.       IBOX[X+MM-1,Y-1,X+MM+L,Y+1]
  1003.    End If 
  1004.    Paper 0
  1005.    Pen 2
  1006.    Rem ** check for a decimal point **
  1007.    If T1$="N"
  1008.       FOUND$="."
  1009.       FOUND=Instr(T$,FOUND$)
  1010.       If FOUND<>0
  1011.          Fix(N42)
  1012.          NVAL[T$]
  1013.          T#=V#
  1014.          T$=Str$(T#)
  1015.          T$=Right$(T$,Len(T$)-1)
  1016.          T$=Left$(T$,FOUND+N42)
  1017.          TL=Len(T$)
  1018.          If TL<L
  1019.             T$=Space$(L-TL)+T$
  1020.          End If 
  1021.          If TL>L
  1022.             T$=Right$(T$,L)
  1023.          End If 
  1024.          FOUND$="."
  1025.          FOUND=Instr(T$,FOUND$)
  1026.          N20(N31)=FOUND
  1027.          Fix(8)
  1028.       End If 
  1029.    End If 
  1030.    Rem *******************************
  1031.    N32$=Left$(N32$,1)
  1032.    If T1$<>"F"
  1033.       If N0(N31)=1
  1034.          For AA=1 To Len(T$)
  1035.             Locate XC+AA-1,Y
  1036.             If((Mid$(T$,AA,1)<>" ") and(Len(T$)>0))
  1037.                Print N32$
  1038.             Else 
  1039.                Print " "
  1040.             End If 
  1041.          Next AA
  1042.       Else 
  1043.          Locate XC,Y
  1044.          Print T$;
  1045.       End If 
  1046.    End If 
  1047.    N2(N31)=XC-1
  1048.    N3(N31)=Y
  1049.    D1$=String$(" ",L)
  1050.    D2=Len(T$)
  1051.    Left$(D1$,D2)=T$
  1052.    N4$(N31)=D1$
  1053.    N5(N31)=L
  1054.    N6$(N31)=T1$
  1055.    E8:
  1056. End Proc
  1057. Procedure NINP[X,Y,M$,T#,L,DP,TT$]
  1058.    N42=DP
  1059.    LL=Len(Str$(T#))-1
  1060.    T$=Right$(Str$(T#),LL)
  1061.    If DP>0
  1062.       FOUND$="."
  1063.       FOUND=Instr(T$,FOUND$)
  1064.       If FOUND=0
  1065.          T$=T$+".0"
  1066.       End If 
  1067.    End If 
  1068.    TINP[X,Y,M$,T$,L,"n",TT$+"t"]
  1069.    N42=0
  1070. End Proc
  1071. Procedure FILT[T$]
  1072.    N1$(N31+1)=T$
  1073. End Proc
  1074. Procedure TBROWSE[NUM,T$]
  1075.    On Error Proc PERROR
  1076.    Resume Label E9
  1077.    X=N2(NUM)
  1078.    Y=N3(NUM)
  1079.    L=N5(NUM)
  1080.    LLL=L-Len(T$)
  1081.    If Len(T$)>L
  1082.       T$=Left$(T$,L)
  1083.    End If 
  1084.    If LLL>0
  1085.       T$=T$+Space$(LLL)
  1086.    End If 
  1087.    If T$=""
  1088.       T$=Space$(L)
  1089.    End If 
  1090.    T1$=N6$(NUM)
  1091.    FOUND$="P"
  1092.    FOUND=Instr(TT$,FOUND$)
  1093.    If FOUND<>0
  1094.       N0(NUM)=1
  1095.    End If 
  1096.    Paper 0
  1097.    Pen 2
  1098.    XC=X+1
  1099.    If T1$="D"
  1100.       L=8
  1101.       VDATE[T$]
  1102.       EF=N38
  1103.       '
  1104.       If(Mid$(T$,3,1)<>"/") or(Mid$(T$,6,1)<>"/") or(EF=1)
  1105.          T$="  /  /  "
  1106.       End If 
  1107.    End If 
  1108.    FOUND$="U"
  1109.    FOUND=Instr(TT$,FOUND$)
  1110.    If FOUND<>0
  1111.       T$=Upper$(T$)
  1112.       N7$(NUM)="U"
  1113.    End If 
  1114.    If T1$="F"
  1115.       L=1
  1116.       T$=Left$(T$,1)
  1117.    End If 
  1118.    XL=Instr(N1$(NUM),T$)
  1119.    If(XL<>0) and(T1$="F")
  1120.       Locate XC,Y
  1121.       Print T$
  1122.    End If 
  1123.    N32$=Left$(N32$,1)
  1124.    If T1$<>"F"
  1125.       If N0(NUM)=1
  1126.          For AA=1 To Len(T$)
  1127.             Locate XC+AA-1,Y
  1128.             If((Mid$(T$,AA,1)<>" ") and(Len(T$)>0))
  1129.                Print N32$
  1130.             Else 
  1131.                Print " "
  1132.             End If 
  1133.          Next AA
  1134.       Else 
  1135.          Locate XC,Y
  1136.          Print T$;
  1137.       End If 
  1138.    End If 
  1139.    D1$=String$(" ",L)
  1140.    D2=Len(T$)
  1141.    Left$(D1$,D2)=T$
  1142.    N4$(NUM)=D1$
  1143.    Inverse Off 
  1144.    Paper 0
  1145.    Pen 2
  1146.    E9:
  1147. End Proc
  1148. Procedure NBROWSE[NUM,T#]
  1149.    If Int(T#)<>T#
  1150.       L=Len(Str$(T#))-1
  1151.       T$=Right$(Str$(T#),L)
  1152.    Else 
  1153.       T=T#
  1154.       L=Len(Str$(T))-1
  1155.       T$=Right$(Str$(T),L)
  1156.    End If 
  1157.    TBROWSE[NUM,T$]
  1158. End Proc
  1159. Procedure TITLE[T1$,T2$,T3$,B,Y]
  1160.    Paper 0
  1161.    Ink 2
  1162.    Pen 2
  1163.    SH=(Screen Height-14)/8
  1164.    SH=SH
  1165.    If B>0
  1166.       NUM=202+Screen
  1167.       N$=Right$(Str$(X1),2)
  1168.       N$=N$+Right$(Str$(Y1),2)
  1169.       N$=N$+Right$(Str$(X2),2)
  1170.       N$=N$+Right$(Str$(Y2),2)
  1171.       N$=N$+"1"
  1172.       N$=N$+Right$(Str$(Len(T$)),2)
  1173.       N$=N$+T$
  1174.       If NUM<51
  1175.          N13$(Screen,NUM)=N$
  1176.       End If 
  1177.       Ink 2,0
  1178.       Set Zone NUM,(2*8)+2,((1+Y)*8)+2 To(82*8)+4,(3*8)-3
  1179.    End If 
  1180.    '
  1181.    XX1=(2*8)+2
  1182.    YY1=((1+Y)*8)
  1183.    XX2=(82*8)+4
  1184.    YY2=(3*8)-3
  1185.    '1st corner  
  1186.    Ink 3
  1187.    Draw XX1,YY1+0 To XX2-0,YY1
  1188.    Draw XX1+0,YY1 To XX1+0,YY2-1
  1189.    '2nd corner  
  1190.    Ink 2
  1191.    Draw XX1+0,YY2-1 To XX2,YY2-1
  1192.    Draw XX2-0,YY2-1 To XX2-0,YY1
  1193.    Ink 0
  1194.    Paper 0 : Pen 2
  1195.    '
  1196.    Ink 1
  1197.    Paint 30,12+(Y*8),1
  1198.    Paper 1
  1199.    Pen 2
  1200.    Ink 2,1
  1201.    Text 24,14+(Y*8)+3,T1$
  1202.    TL=Text Length(T2$)
  1203.    Text 328-(TL/2),14+(Y*8)+3,T2$
  1204.    Text 656-Text Length(T3$),14+(Y*8)+3,T3$
  1205.    Paper 0
  1206.    Pen 2
  1207.    Ink 2,0
  1208.    NBOX[2,2+Y,82,SH,"bo"]
  1209. End Proc
  1210. Procedure RADIO[NUM,X,Y,T$,V$,STRT]
  1211.    On Error Proc PERROR
  1212.    Resume Label E10
  1213.    If NUM<1 or NUM>10
  1214.       Pop Proc
  1215.    End If 
  1216.    If Right$(T$,2)<>"||"
  1217.       T$=T$+"||"
  1218.    End If 
  1219.    SPAC=N35+1
  1220.    CNT=1
  1221.    NW=0
  1222.    For A=1 To 10
  1223.       N8$(NUM,A)=""
  1224.    Next A
  1225.    For A=1 To Len(T$)
  1226.       If Mid$(T$,A,2)<>"||" and CNT<10
  1227.          N8$(NUM,CNT)=N8$(NUM,CNT)+Mid$(T$,A,1)
  1228.       End If 
  1229.       If Mid$(T$,A,2)="||" and CNT<10
  1230.          OL=Len(N8$(NUM,CNT))
  1231.          ' ** check to see if length is more than biggest one 
  1232.          If OL>NW
  1233.             NW=OL
  1234.          End If 
  1235.          Inc CNT
  1236.          Inc A
  1237.       End If 
  1238.    Next A
  1239.    If Upper$(V$)<>"H"
  1240.       ' *************************************************
  1241.       ' ** now right justify all text and print verticaly
  1242.       ' *************************************************
  1243.       Dec CNT
  1244.       For AA=1 To CNT
  1245.          N8$(NUM,AA)=Space$(NW-Len(N8$(NUM,AA)))+N8$(NUM,AA)
  1246.          Locate X,Y+(AA*SPAC-(SPAC-1)) : Print N8$(NUM,AA)
  1247.       Next AA
  1248.       For AA=1 To CNT
  1249.          LL=Len(N8$(NUM,AA))+1
  1250.          N9(NUM,AA)=LL+X+1
  1251.          N10(NUM,AA)=Y+1
  1252.          Paste Icon(LL*8)+X*8,Y*8+8,1
  1253.          '
  1254.          XN=(50+((NUM-1)*10))+AA
  1255.          XC=(LL*8)+X*8
  1256.          YC=(Y*8+8)
  1257.          Set Zone XN,XC,YC To XC+16,YC+8
  1258.          Y=Y+SPAC
  1259.       Next AA
  1260.       RADIO(NUM)=STRT
  1261.       Pen 2
  1262.       Paste Icon N9(NUM,STRT)*8-8,N10(NUM,STRT)*8,2
  1263.    End If 
  1264.    If Upper$(V$)="H"
  1265.       ' ***************************************************
  1266.       ' ** now right justify all text and print horizontaly
  1267.       ' ***************************************************
  1268.       Dec X
  1269.       Dec CNT
  1270.       For AA=1 To CNT
  1271.          N8$(NUM,AA)=Space$(NW-Len(N8$(NUM,AA)))+N8$(NUM,AA)
  1272.          LE=Len(N8$(NUM,AA))
  1273.          Locate X+(AA*(LE+5))-LE-2-(CNT-AA),Y : Print N8$(NUM,AA)
  1274.       Next AA
  1275.       OFSET=3-CNT
  1276.       For AA=1 To CNT
  1277.          LL=Len(N8$(NUM,AA))+1
  1278.          N9(NUM,AA)=LL+X+2+OFSET
  1279.          N10(NUM,AA)=Y
  1280.          Paste Icon N9(NUM,AA)*8-8,Y*8,1
  1281.          '
  1282.          XN=(50+((NUM-1)*10))+AA
  1283.          '         XC=(LL*8)+X*8
  1284.          XC=N9(NUM,AA)*8-8
  1285.          YC=(Y*8)
  1286.          Set Zone XN,XC,YC To XC+16,YC+8
  1287.          X=X+(LL+5)
  1288.       Next AA
  1289.       RADIO(NUM)=STRT
  1290.       Pen 2
  1291.       Paste Icon N9(NUM,STRT)*8-8,N10(NUM,STRT)*8,2
  1292.    End If 
  1293.    Paper 0
  1294.    Pen 2
  1295.    E10:
  1296. End Proc
  1297. Procedure CYCLIC[NUM,X,Y,M$,T$,STRT]
  1298.    On Error Proc PERROR
  1299.    Resume Label E11
  1300.    '***** if num is out of range then exit procedure *****
  1301.    If NUM<1 or NUM>49
  1302.       Pop Proc
  1303.    End If 
  1304.    '******************************************************
  1305.    '
  1306.    '***** clear old variables ***** 
  1307.    For A=0 To 10
  1308.       N18$(NUM,A)=""
  1309.    Next A
  1310.    '******************************* 
  1311.    Paper 0 : Pen 2
  1312.    Locate X,Y : Print M$
  1313.    X=X+Len(M$)+1
  1314.    TX=X*8+8
  1315.    TY=Y*8
  1316.    Paste Icon TX,TY,3
  1317.    BN=100+NUM-1
  1318.    If Right$(T$,2)<>"||"
  1319.       T$=T$+"||"
  1320.    End If 
  1321.    CNT=1
  1322.    NW=0
  1323.    For A=1 To Len(T$)
  1324.       If Mid$(T$,A,2)<>"||" and CNT<10
  1325.          N18$(NUM,CNT)=N18$(NUM,CNT)+Mid$(T$,A,1)
  1326.       End If 
  1327.       If Mid$(T$,A,2)="||" and CNT<10
  1328.          OL=Len(N18$(NUM,CNT))
  1329.          ' ** check to see if length is more than biggest one 
  1330.          If OL>NW
  1331.             NW=OL
  1332.          End If 
  1333.          Inc CNT
  1334.          Inc A
  1335.       End If 
  1336.    Next A
  1337.    For AA=1 To CNT
  1338.       N18$(NUM,AA)=Space$(NW-Len(N18$(NUM,AA)))+N18$(NUM,AA)
  1339.    Next AA
  1340.    N18$(NUM,0)=Space$(NW)
  1341.    N11(NUM)=CNT-1
  1342.    BBOX[BN,X,Y-1,X+NW+5,Y+1,""]
  1343.    N16(NUM)=X+4
  1344.    N17(NUM)=Y
  1345.    Locate N16(NUM),N17(NUM) : Print N18$(NUM,STRT)
  1346.    CYCLIC(NUM)=STRT
  1347.    E11:
  1348. End Proc
  1349. Procedure CHECKBOX[NUM,X,Y,T$,TICK]
  1350.    On Error Proc PERROR
  1351.    Resume Label E12
  1352.    If NUM<1 or NUM>50
  1353.       Pop Proc
  1354.    End If 
  1355.    Paper 0 : Ink 2
  1356.    Locate X,Y : Print T$
  1357.    L=Len(T$)
  1358.    BBOX[NUM+150,X+L+2,Y-1,X+L+5,Y+1,""]
  1359.    If TICK=1
  1360.       CHECKBOX(NUM)=1
  1361.       Paste Icon(X+L+3)*8,Y*8,4
  1362.       N12(0,NUM)=(X+L+3)*8
  1363.       N12(1,NUM)=Y*8
  1364.    Else 
  1365.       CHECKBOX(NUM)=0
  1366.       N12(0,NUM)=(X+L+3)*8
  1367.       N12(1,NUM)=Y*8
  1368.    End If 
  1369.    E12:
  1370. End Proc
  1371. Procedure NSCREEN[NUM,HEIGHT,Y_OFFSET,_COLS]
  1372.    On Error Proc PERROR
  1373.    Resume Label E13
  1374.    '************************************************* 
  1375.    '** check to see if screen has to be interlaced ** 
  1376.    If HEIGHT<100
  1377.       _LACE=0
  1378.    Else 
  1379.       _LACE=1
  1380.       HEIGHT=HEIGHT-100
  1381.    End If 
  1382.    '*****************************************************   
  1383.    '** check to see if a valid colour has been entered ** 
  1384.    _COLOURS=4
  1385.    If _COLS=4 or _COLS=8 or _COLS=16
  1386.       _COLOURS=_COLS
  1387.    End If 
  1388.    '***************************************************** 
  1389.    HEIGHT=HEIGHT*8
  1390.    HEIGHT=HEIGHT+15
  1391.    If _LACE=0
  1392.       Screen Open NUM,675,HEIGHT,_COLOURS,Hires
  1393.    Else 
  1394.       Screen Open NUM,675,HEIGHT,_COLOURS,Hires+Laced
  1395.    End If 
  1396.    Screen Offset NUM,,8
  1397.    Screen Display NUM,,Y_OFFSET,,HEIGHT-20
  1398.    Flash Off 
  1399.    Curs Off 
  1400.    Get Sprite Palette 
  1401.    Palette $999,$458,$0,$FFF
  1402.    Cls 0
  1403.    Paper 0
  1404.    Pen 2
  1405.    Palette $999,$999,$999,$999
  1406.    Change Mouse 12
  1407.    '
  1408.    Reserve Zone 270
  1409.    E13:
  1410. End Proc
  1411. Procedure VTIME[T$]
  1412.    NVAL[Left$(T$,2)]
  1413.    HH=V#
  1414.    NVAL[Mid$(T$,4,2)]
  1415.    MM=V#
  1416.    NVAL[Right$(T$,2)]
  1417.    SS=V#
  1418.    EF=0 : Rem er = error flag
  1419.    If HH<1 or HH>24
  1420.       EF=1
  1421.    End If 
  1422.    If MM<0 or MM>59
  1423.       EF=1
  1424.    End If 
  1425.    If SS<0 or SS>59
  1426.       EF=1
  1427.    End If 
  1428.    N38=EF
  1429. End Proc
  1430. Procedure VDATE[T$]
  1431.    NVAL[Left$(T$,2)]
  1432.    DD=V#
  1433.    NVAL[Mid$(T$,4,2)]
  1434.    MM=V#
  1435.    NVAL[Right$(T$,2)]
  1436.    YY=V#
  1437.    EF=0
  1438.    If YY<1
  1439.       EF=1
  1440.    End If 
  1441.    YY$=Str$(YY)+".0"
  1442.    NVAL[YY$]
  1443.    Y1#=V#/4
  1444.    NVAL[YY$]
  1445.    Y2=Int(V#)/4
  1446.    If Y2=Y1#
  1447.       LYEAR=1
  1448.    End If 
  1449.    If Y2<>Y1#
  1450.       LYEAR=0
  1451.    End If 
  1452.    If(DD<1) or(DD>31)
  1453.       EF=1
  1454.    End If 
  1455.    If(MM<1) or(MM>12)
  1456.       EF=1
  1457.    End If 
  1458.    If(MM=1) or(MM=3) or(MM=5) or(MM=7) or(MM=8) or(MM=10) or(MM=12)
  1459.       If(DD<1) or(DD>31)
  1460.          EF=1
  1461.       End If 
  1462.    End If 
  1463.    If(MM=4) or(MM=6) or(MM=9) or(MM=11)
  1464.       If(DD<1) or(DD>30)
  1465.          EF=1
  1466.       End If 
  1467.    End If 
  1468.    If(MM=2) and(LYEAR=0)
  1469.       If(DD<1) or(DD>28)
  1470.          EF=1
  1471.       End If 
  1472.    End If 
  1473.    If(MM=2) and(LYEAR=1)
  1474.       If(DD<1) or(DD>29)
  1475.          EF=1
  1476.       End If 
  1477.    End If 
  1478.    N38=EF
  1479. End Proc
  1480. Procedure CLEAR
  1481.    Reset Zone 
  1482.    Cls 0
  1483.    UNREAD
  1484.    BUTTON=-1
  1485. End Proc
  1486. Procedure NMENU[STRT,X,Y,T$,XN36,YN36]
  1487.    On Error Proc PERROR
  1488.    Resume Label E14
  1489.    Inc XN36
  1490.    Rem **** clear old menu **** 
  1491.    For A=1 To 10
  1492.       For B=1 To 10
  1493.          N15$(A,B)=""
  1494.       Next B
  1495.    Next A
  1496.    Rem **** find number of Y's **** 
  1497.    L=Len(T$)
  1498.    YW=1
  1499.    For LP=1 To L
  1500.       If Mid$(T$,LP,2)="\\"
  1501.          Inc YW
  1502.       End If 
  1503.    Next LP
  1504.    Rem **** find width of X's ****
  1505.    BIGX=0
  1506.    XX=1
  1507.    For LP=1 To L
  1508.       If Mid$(T$,LP,2)="||"
  1509.          Inc XX
  1510.          If XX>BIGX
  1511.             BIGX=XX
  1512.          End If 
  1513.       End If 
  1514.       If Mid$(T$,LP,2)="\\"
  1515.          XX=1
  1516.       End If 
  1517.    Next LP
  1518.    XX=1
  1519.    YY=1
  1520.    X1=X
  1521.    Y1=Y
  1522.    BIGGEST=0
  1523.    '
  1524.    For A=1 To L
  1525.       LLL=Len(N15$(XX,YY))
  1526.       M$=Upper$(N15$(XX,YY))
  1527.       If(Mid$(T$,A,2)="||") or(Mid$(T$,A,2)="\\")
  1528.          If Left$(M$,9)="#NOCLICK#"
  1529.             LLL=Len(M$)-9
  1530.          End If 
  1531.          If Left$(M$,7)="#BLANK#"
  1532.             LLL=Len(M$)-7
  1533.          End If 
  1534.          If(M$="#UP#") or(M$="#DOWN#") or(M$="#LEFT#") or(M$="#RIGHT#")
  1535.             LLL=2
  1536.          End If 
  1537.          If LLL>BIGGEST
  1538.             BIGGEST=LLL
  1539.          End If 
  1540.       End If 
  1541.       If Mid$(T$,A,2)="||"
  1542.          Inc XX
  1543.       End If 
  1544.       If Mid$(T$,A,2)="\\"
  1545.          XX=1
  1546.          Inc YY
  1547.       End If 
  1548.       If(Mid$(T$,A,1)<>"|") and(Mid$(T$,A,1)<>"\")
  1549.          N15$(XX,YY)=N15$(XX,YY)+Mid$(T$,A,1)
  1550.       End If 
  1551.       LLL=Len(N15$(XX,YY))
  1552.       M$=Upper$(N15$(XX,YY))
  1553.    Next A
  1554.    M$=Upper$(N15$(XX,YY))
  1555.    LLL=Len(M$)
  1556.    If Left$(M$,9)="#NOCLICK#"
  1557.       LLL=Len(M$)-9
  1558.    End If 
  1559.    If Left$(M$,7)="#BLANK#"
  1560.       LLL=Len(M$)-7
  1561.    End If 
  1562.    If(M$="#UP#") or(M$="#DOWN#") or(M$="#LEFT#") or(M$="#RIGHT#")
  1563.       LLL=2
  1564.    End If 
  1565.    If LLL>BIGGEST
  1566.       BIGGEST=LLL
  1567.    End If 
  1568.    '
  1569.    YCO=Y1
  1570.    For Y=1 To YW
  1571.       XCO=X1
  1572.       For X=1 To BIGX
  1573.          BBOX[STRT,XCO,YCO,XCO+BIGGEST+1,YCO+2,N15$(X,Y)]
  1574.          Inc STRT
  1575.          XCO=XCO+BIGGEST+1+XN36
  1576.       Next X
  1577.       YCO=YCO+2+YN36
  1578.    Next Y
  1579.    E14:
  1580. End Proc
  1581. Procedure REQUEST[T$,M$,LIST$]
  1582.    SCR=Screen
  1583.    NSCREEN[7,10,46,4]
  1584.    NBOX[3,3,81,7,"bi"]
  1585.    TITLE["",T$,"",1,0]
  1586.    '
  1587.    M$=M$+"||"
  1588.    MC=0
  1589.    ST=1
  1590.    Ink 2,0
  1591.    For A=1 To Len(M$)
  1592.       If Mid$(M$,A,2)="||"
  1593.          Inc MC
  1594.          If MC<4
  1595.             N22$(1,MC)=Mid$(M$,ST,A-ST)
  1596.             Add A,2
  1597.             ST=A
  1598.          End If 
  1599.       End If 
  1600.    Next A
  1601.    '
  1602.    '
  1603.    LIST$=LIST$+"||"
  1604.    LC=0
  1605.    ST=1
  1606.    BIGR=0
  1607.    For A=1 To Len(LIST$)
  1608.       If Mid$(LIST$,A,2)="||"
  1609.          Inc LC
  1610.          If LC<4
  1611.             N22$(2,LC)=Mid$(LIST$,ST,A-ST)
  1612.             If Len(N22$(2,LC))>BIGR
  1613.                BIGR=Len(N22$(2,LC))
  1614.             End If 
  1615.             Add A,2
  1616.             ST=A
  1617.          End If 
  1618.       End If 
  1619.    Next A
  1620.    Add BIGR,2
  1621.    If MC>3
  1622.       MC=3
  1623.    End If 
  1624.    If LC>3
  1625.       LC=3
  1626.    End If 
  1627.    If MC=1
  1628.       X=(3*8)+4
  1629.       Y=((3+1)*8)+6+8
  1630.       L=Text Length(N22$(1,1))
  1631.       Text 328-(L/2),Y,N22$(1,1)
  1632.    End If 
  1633.    If MC=2
  1634.       For A=1 To 2
  1635.          X=(3*8)+4
  1636.          Y=((3+A)*8)+6+4
  1637.          L=Text Length(N22$(1,A))
  1638.          Text 328-(L/2),Y,N22$(1,A)
  1639.       Next A
  1640.    End If 
  1641.    If MC=3
  1642.       For A=1 To 3
  1643.          X=(3*8)+4
  1644.          Y=((3+A)*8)+6
  1645.          L=Text Length(N22$(1,A))
  1646.          Text 328-(L/2),Y,N22$(1,A)
  1647.       Next A
  1648.    End If 
  1649.    If LC=1
  1650.       BBOX[1,40-(BIGR/2),6,40+(BIGR/2),8,N22$(2,1)]
  1651.    End If 
  1652.    If LC=2
  1653.       BBOX[1,4,7,4+BIGR,9,N22$(2,1)]
  1654.       BBOX[2,80-BIGR,7,80,9,N22$(2,2)]
  1655.    End If 
  1656.    If LC=3
  1657.       BBOX[1,4,7,4+BIGR,9,N22$(2,1)]
  1658.       BBOX[2,40-(BIGR/2),7,40+(BIGR/2),9,N22$(2,2)]
  1659.       BBOX[3,80-BIGR,7,80,9,N22$(2,3)]
  1660.    End If 
  1661.    '  
  1662.    Set Pattern 2
  1663.    Ink 3,0
  1664.    Paint 22,22
  1665.    Ink 2,0
  1666.    Set Pattern 0
  1667.    '
  1668.    Y1=Y Hard(Screen)
  1669.    NFADE_IN
  1670.    BUTTON=0
  1671.    Do 
  1672.       MZ=Mouse Zone
  1673.       If MZ=202+Screen and(Mouse Key=1 or Mouse Key=2)
  1674.          SC=Screen
  1675.          Limit Mouse X Hard(SC),40 To X Hard(SC)+(Screen Width/2),295
  1676.          Repeat 
  1677.             Screen Display SC,,Y Mouse-5,,
  1678.             Wait Vbl 
  1679.          Until Mouse Key=0
  1680.       End If 
  1681.       If Mouse Key=1 or Mouse Key=2
  1682.          BUTTON=MZ
  1683.       End If 
  1684.       If BUTTON>0 and BUTTON<50
  1685.          PRNT_BUTTON[BUTTON]
  1686.          Wait 10
  1687.          PRNT_BUTTON[BUTTON]
  1688.       End If 
  1689.       Exit If BUTTON>0 and BUTTON<50
  1690.    Loop 
  1691.    NFADE_OUT
  1692.    Screen Close 7
  1693.    Screen SCR
  1694. End Proc
  1695. Procedure MOUSE_TEST
  1696.    On Error Proc PERROR
  1697.    Resume Label E15
  1698.    CHANGEMADE=0
  1699.    LAST_VPOS=0
  1700.    LAST_HPOS=0
  1701.    If N33<=0
  1702.       BUTTON=0
  1703.    Else 
  1704.       N33=0
  1705.    End If 
  1706.    N37=Mouse Key
  1707.    MK_PRESSED=N37
  1708.    K=Key Shift
  1709.    K$=Upper$(Inkey$)
  1710.    If N37=1 or N37=2 or N39>0 or N40>0 or K<>0
  1711.       XM=X Mouse
  1712.       YM=Y Mouse
  1713.       MZ=Mouse Zone
  1714.       If(K$<>"") and(K=128)
  1715.          For A=1 To 50
  1716.             Exit If N30$(Screen,A)=K$
  1717.          Next A
  1718.          If A<51
  1719.             MZ=A
  1720.          End If 
  1721.       End If 
  1722.       If N39>0
  1723.          MZ=259+N39
  1724.       End If 
  1725.       If N40>0
  1726.          MZ=259+N40+5
  1727.       End If 
  1728.       Rem **** MULTI-READ **** 
  1729.       If N31>0
  1730.          MXC=X Screen(XM)/8
  1731.          MYC=Y Screen(YM)/8
  1732.          For ABC=1 To N31
  1733.             If(N3(ABC)=MYC) and(MXC-N2(ABC)<=N5(ABC)) and(MXC-N2(ABC)>0)
  1734.                CHM=0 : Rem ** NO CHANGE MADE ** 
  1735.                If YC<>ABC
  1736.                   CHM=1
  1737.                End If 
  1738.                If XC<>MXC-N2(ABC)
  1739.                   CHM=1
  1740.                End If 
  1741.                If CHM=1
  1742.                   YC=ABC : XC=MXC-N2(ABC)-1
  1743.                   Clear Key 
  1744.                   If(N6$(ABC)="D") and((XC=2) or(XC=5))
  1745.                      Inc XC
  1746.                   End If 
  1747.                End If 
  1748.             End If 
  1749.          Next ABC
  1750.          If(XC>-1) and(YC>0)
  1751.             BUTTON=0
  1752.             NR[XC+1,YC]
  1753.             BUTTON=N33
  1754.          End If 
  1755.       End If 
  1756.       Rem **** test radio **** 
  1757.       N=MZ
  1758.       Pen 2
  1759.       NUM=N
  1760.       If NUM>50 and NUM<100
  1761.          NUM=NUM-50
  1762.          NUM=NUM/10
  1763.          NUM=NUM+1
  1764.          N=N-50
  1765.          N=N-((NUM-1)*10)
  1766.          If N=0
  1767.             N=10
  1768.          End If 
  1769.          B=RADIO(NUM)
  1770.          If NUM<11
  1771.             If B<>N
  1772.                Paste Icon N9(NUM,B)*8-8,N10(NUM,B)*8,1
  1773.                Paste Icon N9(NUM,N)*8-8,N10(NUM,N)*8,2
  1774.                RADIO(NUM)=N
  1775.             End If 
  1776.          End If 
  1777.          Paper 0
  1778.          Pen 2
  1779.       End If 
  1780.       Rem **** test cyclic ****  
  1781.       N=MZ
  1782.       Paper 0 : Pen 2
  1783.       NUM=N
  1784.       If NUM>99 and NUM<151
  1785.          NUM=N-99
  1786.          N=N-99
  1787.          '
  1788.          N34=CYCLIC(NUM)
  1789.          Inc N34
  1790.          If N34>N11(NUM) or N34=0
  1791.             N34=1
  1792.          End If 
  1793.          CYCLIC(NUM)=N34
  1794.          Locate N16(NUM),N17(NUM) : Print N18$(NUM,0)
  1795.          Ink 1
  1796.          Paint N16(NUM)*8,N17(NUM)*8
  1797.          TX=(N16(NUM)*8)-32
  1798.          TY=N17(NUM)*8
  1799.          Paste Icon TX+8,TY,13
  1800.          NBOX[TX/8,(TY/8)-1,(TX/8)+Len(N18$(NUM,0))+5,(TY/8)+1,"bi"]
  1801.          Ink 0
  1802.          Pen 3 : Paper 1
  1803.          Locate N16(NUM),N17(NUM) : Print N18$(NUM,N34)
  1804.          Pen 2 : Paper 0
  1805.          Repeat 
  1806.          Until Mouse Key=0 or Mouse Key=1
  1807.          Ink 0
  1808.          Paint(N16(NUM)*8)-4,N17(NUM)*8
  1809.          Paste Icon TX+8,TY,3
  1810.          NBOX[TX/8,(TY/8)-1,(TX/8)+Len(N18$(NUM,0))+5,(TY/8)+1,"bo"]
  1811.          Locate N16(NUM),N17(NUM) : Print N18$(NUM,N34)
  1812.          Ink 2
  1813.       End If 
  1814.       Rem **** scrll menu **** 
  1815.       If MZ=202+Screen
  1816.          SC=Screen
  1817.          Limit Mouse X Hard(SC),40 To X Hard(SC)+(Screen Width/2),295
  1818.          Repeat 
  1819.             Screen Display SC,,Y Mouse-5,,
  1820.             Wait Vbl 
  1821.          Until Mouse Key=0
  1822.       End If 
  1823.       Rem **** rbutton ****
  1824.       BUTTON=0
  1825.       If MZ>0 and MZ<51
  1826.          BUTTON=MZ
  1827.          Repeat 
  1828.          Until Mouse Key=0 or Mouse Key=1
  1829.          If Mouse Key=1
  1830.             Wait 5
  1831.          End If 
  1832.       End If 
  1833.       Rem **** test tick ****
  1834.       Paper 0 : Ink 2
  1835.       M=MZ
  1836.       If M>150 and M<202
  1837.          While Mouse Key<>0
  1838.          Wend 
  1839.          NUM=M-150
  1840.          X=N12(0,NUM)/8
  1841.          Y=N12(1,NUM)/8
  1842.          If CHECKBOX(NUM)=1
  1843.             Locate X,Y : Print "  "
  1844.             CHECKBOX(NUM)=0
  1845.             Wait 5
  1846.             Pop Proc
  1847.          End If 
  1848.          If CHECKBOX(NUM)=0
  1849.             Paste Icon X*8,Y*8,4
  1850.             CHECKBOX(NUM)=1
  1851.             Wait 5
  1852.             Pop Proc
  1853.          End If 
  1854.       End If 
  1855.       Rem **** slide box ****
  1856.       If M>219 and M<230
  1857.          N=M-219
  1858.          X1=N29(Screen,N,1)
  1859.          Y1=N29(Screen,N,2)
  1860.          X=X Screen(X Mouse)
  1861.          Y=Y Screen(Y Mouse)
  1862.          NUMX=(X-X1)/8
  1863.          NUMY=(Y-Y1)/8
  1864.          SBOXH(N)=NUMX
  1865.          SBOXV(N)=NUMY
  1866.       End If 
  1867.       Rem **** slide bars **** 
  1868.       If MZ>259 and MZ<271
  1869.          If N24(Screen,MZ-259)>1
  1870.             '
  1871.             OFFSET=259
  1872.             X=X Screen(X Mouse)
  1873.             Y=Y Screen(Y Mouse)
  1874.             MZ=MZ-OFFSET
  1875.             '
  1876.             If MZ<6
  1877.                '            HP=hpos(screen,MZ)  
  1878.                If X-N27(Screen,MZ)>10 and X-N27(Screen,MZ)<23
  1879.                   SLIDEH[MZ,HPOS(Screen,MZ)]
  1880.                   FLAG=-1
  1881.                End If 
  1882.                If X-N27(Screen,MZ)>22
  1883.                   SLIDEH[MZ,HPOS(Screen,MZ)+1]
  1884.                   FLAG=1
  1885.                End If 
  1886.                LAST_HPOS=1
  1887.             Else 
  1888.                VP=VPOS(Screen,MZ-5)
  1889.                If Y-N27(Screen,MZ)>4 and Y-N27(Screen,MZ)<12
  1890.                   SLIDEV[MZ-5,VPOS(Screen,MZ-5)]
  1891.                   FLAG=-1
  1892.                End If 
  1893.                If Y-N27(Screen,MZ)>11
  1894.                   SLIDEV[MZ-5,VPOS(Screen,MZ-5)+1]
  1895.                   FLAG=1
  1896.                End If 
  1897.                LAST_VPOS=1
  1898.             End If 
  1899.             '
  1900.             If N39>0
  1901.                X=N14(Screen,MZ)+N41#+FLAG
  1902.                If X<N14(Screen,MZ)
  1903.                   X=N14(Screen,MZ)
  1904.                End If 
  1905.                If X>N27(Screen,MZ)
  1906.                   X=N27(Screen,MZ)
  1907.                End If 
  1908.                Y=ST_Y
  1909.                N39=0
  1910.             End If 
  1911.             If N40>0
  1912.                Y=N25(Screen,MZ)+N41#+FLAG
  1913.                If Y<N25(Screen,MZ)
  1914.                   Y=N25(Screen,MZ)
  1915.                End If 
  1916.                If Y>N27(Screen,MZ)
  1917.                   Y=N27(Screen,MZ)
  1918.                End If 
  1919.                X=ST_X
  1920.                N40=0
  1921.             End If 
  1922.             '
  1923.             If N28(Screen,MZ)=1
  1924.                XXX=N14(Screen,MZ)-X
  1925.                If XXX>N23#(Screen,MZ)*N24(Screen,MZ)
  1926.                   XXX=N23#(Screen,MZ)*N24(Screen,MZ)
  1927.                End If 
  1928.                If XXX<1
  1929.                   '*** make xxx a positive number ***
  1930.                   XXX=XXX-XXX-XXX
  1931.                End If 
  1932.                XXX=XXX*1
  1933.                POS=XXX/N23#(Screen,MZ)
  1934.                Inc POS
  1935.                If POS>N24(Screen,MZ)
  1936.                   POS=N24(Screen,MZ)
  1937.                End If 
  1938.                HPOS(Screen,MZ)=POS
  1939.                X1=N14(Screen,MZ)+XXX+1
  1940.                Y1=N25(Screen,MZ)+1
  1941.                If N23#(Screen,MZ)<8.0
  1942.                   SS#=8.0
  1943.                Else 
  1944.                   SS#=N23#(Screen,MZ)
  1945.                End If 
  1946.                If X1>N27(Screen,MZ)-SS#-1
  1947.                   X1=N27(Screen,MZ)-SS#-1
  1948.                End If 
  1949.                If N26(Screen,MZ)<>X1
  1950.                   Bob 0+MZ,X1+2,Y1+5,MZ+11
  1951.                   N26(Screen,MZ)=X1
  1952.                End If 
  1953.             End If 
  1954.             '
  1955.             If N28(Screen,MZ)=2
  1956.                YYY=Y-N25(Screen,MZ)
  1957.                If YYY>N23#(Screen,MZ)*N24(Screen,MZ)
  1958.                   YYY=N23#(Screen,MZ)*N24(Screen,MZ)
  1959.                End If 
  1960.                If YYY<1
  1961.                   '*** make yyy a positive number ***
  1962.                   YYY=YYY-YYY-YYY
  1963.                End If 
  1964.                YYY=YYY*1
  1965.                POS=YYY/N23#(Screen,MZ)
  1966.                Inc POS
  1967.                If POS>N24(Screen,MZ)
  1968.                   POS=N24(Screen,MZ)
  1969.                End If 
  1970.                VPOS(Screen,MZ-5)=POS
  1971.                X1=N14(Screen,MZ)+1
  1972.                Y1=N25(Screen,MZ)+YYY+1
  1973.                If N23#(Screen,MZ)<8.0
  1974.                   SS#=8.0
  1975.                Else 
  1976.                   SS#=N23#(Screen,MZ)
  1977.                End If 
  1978.                If Y1>N27(Screen,MZ)-SS#+2
  1979.                   Y1=N27(Screen,MZ)-SS#+2
  1980.                End If 
  1981.                If N26(Screen,MZ)<>Y1
  1982.                   Bob 0+MZ,X1+2,Y1,MZ+11
  1983.                   N26(Screen,MZ)=Y1
  1984.                End If 
  1985.             End If 
  1986.          End If 
  1987.       End If 
  1988.       '
  1989.    End If 
  1990.    E15:
  1991. End Proc
  1992. '
  1993. '***** New Commands Since v2.02 *****  
  1994. '  
  1995. Procedure HOTKEY[NUM,K$]
  1996.    N30$(Screen,NUM)=Upper$(K$)
  1997. End Proc
  1998. Procedure DISABLE_BUTTON[NUM]
  1999.    Reset Zone NUM
  2000. End Proc
  2001. Procedure ENABLE_BUTTON[NUM]
  2002.    If(NUM>0) and(NUM<51)
  2003.       N$=N13$(Screen,NUM)
  2004.       NVAL[Mid$(N$,1,2)]
  2005.       X1=V#
  2006.       NVAL[Mid$(N$,3,2)]
  2007.       Y1=V#
  2008.       NVAL[Mid$(N$,5,2)]
  2009.       X2=V#
  2010.       NVAL[Mid$(N$,7,2)]
  2011.       Y2=V#
  2012.       NVAL[Mid$(N$,9,1)]
  2013.       STAT=V#
  2014.       NVAL[Mid$(N$,10,2)]
  2015.       L=V#
  2016.       T$=Right$(N$,L)
  2017.       N$=Right$(Str$(X1),2)
  2018.       N$=N$+Right$(Str$(Y1),2)
  2019.       N$=N$+Right$(Str$(X2),2)
  2020.       N$=N$+Right$(Str$(Y2),2)
  2021.       N$=N$+"0"
  2022.       N$=N$+Right$(Str$(Len(T$)),2)
  2023.       N$=N$+T$
  2024.       N13$(Screen,NUM)=N$
  2025.       PRNT_BUTTON[NUM]
  2026.       BBOX[NUM,X1,Y1,X2,Y2,T$]
  2027.    End If 
  2028. End Proc
  2029. Procedure FSEL[SOURCE$,FILE$,TITLE$]
  2030.    FS[SOURCE$,FILE$,TITLE$,1]
  2031. End Proc
  2032. Procedure MFSEL[SOURCE$,TITLE$]
  2033.    FILENAMES=0
  2034.    For A=1 To 100 : FILENAME$(A)="" : Next A
  2035.    FS[SOURCE$,"",TITLE$,2]
  2036. End Proc
  2037. Procedure FS[SOURCE$,FILE$,TITLE$,TYPE]
  2038.    FILENAME$=FILE$
  2039.    Rem ** split wild card from source$ ** 
  2040.    If(Right$(SOURCE$,1)="/") or(Right$(SOURCE$,1)=":")
  2041.       WILDCARD$=""
  2042.    Else 
  2043.       L=Len(SOURCE$)
  2044.       For A=L To 1 Step -1
  2045.          Exit If Mid$(SOURCE$,A,1)="/"
  2046.          Exit If Mid$(SOURCE$,A,1)=":"
  2047.       Next A
  2048.       If A>1
  2049.          WILDCARD$=Right$(SOURCE$,L-A)
  2050.          SOURCE$=Left$(SOURCE$,L)
  2051.       Else 
  2052.          If Left$(SOURCE$,2)="*."
  2053.             WILDCARD$=SOURCE$
  2054.             SOURCE$=Dir$
  2055.          End If 
  2056.       End If 
  2057.    End If 
  2058.    If SOURCE$<>""
  2059.       If Exist(SOURCE$)
  2060.          Dir$=SOURCE$
  2061.       Else 
  2062.          SOURCE$=Dir$
  2063.       End If 
  2064.    Else 
  2065.       SOURCE$=Dir$
  2066.    End If 
  2067.    SCR=Screen
  2068.    DEVDISP=0 : Rem ** devices are not currently beeing displayed ** 
  2069.    NSCREEN[7,16,46,4]
  2070.    HEIGHT=7
  2071.    XX=5
  2072.    YY=6
  2073.    WILDCARD$=Upper$(WILDCARD$)
  2074.    '
  2075.    UNREAD
  2076.    TINP[67,4,"",WILDCARD$,12,"b","tu"]
  2077.    UNREAD
  2078.    Rem ** set up areas for file requestor **
  2079.    For A=1 To HEIGHT
  2080.       XX1=(XX-1)*8 : YY1=(5+A)*8
  2081.       XX2=(XX+55)*8 : YY2=YY1+8
  2082.       Set Zone A+19,XX1,YY1 To XX2,YY2
  2083.    Next A
  2084.    '
  2085.    NMENU[8,66,3,"            ",0,0]
  2086.    IBOX[66,3,79,5]
  2087.    UNREAD
  2088.    TINP[67,4,"",WILDCARD$,12,"b","tu"]
  2089.    UNREAD
  2090.    NMENU[9,66,7,"OK\\   Parent   \\Quit",0,0]
  2091.    '
  2092.    TITLE["",TITLE$,"",1,0]
  2093.    IBOX[XX-1,3,XX+57,5]
  2094.    IBOX[XX-1,5,XX+55,13]
  2095.    UNREAD
  2096.    TINP[XX,14,"",FILE$,55,"b",""]
  2097.    IBOX[XX-1,13,XX+55,15]
  2098.    If TYPE=2
  2099.       UNREAD
  2100.    End If 
  2101.    VSLIDE[5,56+XX,5,10,1]
  2102.    '
  2103.    NFADE_IN
  2104.    '
  2105.    Gosub _GETDIRECTORY
  2106.    Do 
  2107.       Do 
  2108.          MOUSE_TEST
  2109.          If CHANGEMADE
  2110.             FILENAME$=NR$(1)
  2111.          End If 
  2112.          Exit If BUTTON<>0 or LAST_VPOS=1
  2113.       Loop 
  2114.       If BUTTON>8 and BUTTON<12
  2115.          PRNT_BUTTON[BUTTON]
  2116.          Wait 10
  2117.          PRNT_BUTTON[BUTTON]
  2118.       End If 
  2119.       '
  2120.       If LAST_VPOS=1
  2121.          SP=VPOS(Screen,5) : EP=SP+6
  2122.          If EP>CNT-1
  2123.             EP=CNT-1
  2124.             SP=EP-6
  2125.          End If 
  2126.          For A=SP To EP
  2127.             If N21$(3,A)="Y"
  2128.                Pen 3
  2129.             Else 
  2130.                Pen 2
  2131.             End If 
  2132.             F$=N21$(0,A)+N21$(1,A)+N21$(2,A)
  2133.             Locate 0+XX,0+A-SP+YY : Print F$
  2134.             Pen 2
  2135.          Next A
  2136.       End If 
  2137.       '
  2138.       If BUTTON=8
  2139.          DISABLE_BUTTON[8]
  2140.          UNREAD
  2141.          TINP[67,4,"",WILDCARD$,12,"b","tu"]
  2142.          NREAD
  2143.          ENABLE_BUTTON[8]
  2144.          IBOX[66,3,79,5]
  2145.          If(Left$(NR$(1),2)<>"*.") and(NR$(1)<>"")
  2146.             Locate 67,4 : Print Space$(12) : Locate 67,4 : Print Upper$(WILDCARD$)
  2147.             If TYPE=1
  2148.                UNREAD
  2149.                TINP[XX,14,"",FILE$,55,"b",""]
  2150.             End If 
  2151.          Else 
  2152.             WILDCARD$=NR$(1)
  2153.             Locate 67,4 : Print Space$(12) : Locate 67,4 : Print Upper$(WILDCARD$)
  2154.             If TYPE=1
  2155.                UNREAD
  2156.                TINP[XX,14,"",FILE$,55,"b",""]
  2157.             End If 
  2158.             Gosub _GETDIRECTORY
  2159.          End If 
  2160.       End If 
  2161.       Rem ** ok ** 
  2162.       If BUTTON=9
  2163.          If TYPE=1
  2164.             F$=Dir$+FILENAME$
  2165.             L=Len(F$)
  2166.             For A=L To 1 Step -1
  2167.                Exit If Mid$(F$,A,1)<>" "
  2168.             Next A
  2169.             If A>0
  2170.                FILENAME$=Left$(F$,A)
  2171.                If Right$(FILENAME$,1)=":"
  2172.                   FILENAME$=""
  2173.                End If 
  2174.             Else 
  2175.                FILENAME$=""
  2176.             End If 
  2177.          Else 
  2178.             CNT=1 : FILENAMES=0
  2179.             For AQ=1 To 100
  2180.                If N21$(3,AQ)<>""
  2181.                   F$=N21$(1,AQ)
  2182.                   L=Len(F$)
  2183.                   For A=L To 1 Step -1
  2184.                      Exit If Mid$(F$,A,1)<>" "
  2185.                   Next A
  2186.                   If A>0
  2187.                      FILENAME$=Dir$+Left$(F$,A)
  2188.                      If Right$(FILENAME$,1)=":"
  2189.                         FILENAME$=""
  2190.                      End If 
  2191.                   Else 
  2192.                      FILENAME$=""
  2193.                   End If 
  2194.                   If FILENAME$<>""
  2195.                      FILENAME$(CNT)=FILENAME$
  2196.                      Inc FILENAMES
  2197.                      Inc CNT
  2198.                   End If 
  2199.                End If 
  2200.             Next AQ
  2201.          End If 
  2202.          NFADE_OUT : Screen Close 7 : Screen SCR : BUTTON=0
  2203.          Pop Proc
  2204.       End If 
  2205.       '
  2206.       If BUTTON=10
  2207.          If Right$(Dir$,1)<>":"
  2208.             Dir$="/"
  2209.             Gosub _GETDIRECTORY
  2210.          End If 
  2211.       End If 
  2212.       '
  2213.       If BUTTON=11
  2214.          FILENAME$="" : NFADE_OUT : Screen Close 7 : Screen SCR : BUTTON=0 : UNREAD
  2215.          Pop Proc
  2216.       End If 
  2217.       '
  2218.       Rem *** get devices ***
  2219.       If BUTTON=>20 and MK_PRESSED=2 and DEVDISP=1
  2220.          DEVDISP=0 : BUTTON=0
  2221.          Gosub _GETDIRECTORY
  2222.       End If 
  2223.       If BUTTON=>20 and MK_PRESSED=2 and DEVDISP=0
  2224.          DEVDISP=1
  2225.          For AA=1 To 100
  2226.             N21$(0,AA)=" "
  2227.             N21$(1,AA)=Space$(46)
  2228.             N21$(2,AA)=Space$(8)
  2229.             N21$(3,AA)=""
  2230.          Next AA
  2231.          F$=Dev First$("")
  2232.          CNT=1
  2233.          While F$<>""
  2234.             Q$=Mid$(F$,2,6)
  2235.             If(Q$<>"C:    ") and(Q$<>"DEVS: ") and(Q$<>"FONTS:") and(Q$<>"L:    ") and(Q$<>"LIBS: ") and(Q$<>"S:    ") and(Q$<>"SYS:  ")
  2236.                N21$(0,CNT)=Left$(F$,1)
  2237.                N21$(1,CNT)=Mid$(F$,2,46)
  2238.                FT$=Right$(F$,8)
  2239.                For AA=8 To 1 Step -1
  2240.                   Exit If Mid$(FT$,AA,1)<>" "
  2241.                Next AA
  2242.                N21$(2,CNT)=Space$(8-AA)+Left$(FT$,AA)
  2243.                Inc CNT
  2244.             End If 
  2245.             F$=Dev Next$
  2246.          Wend 
  2247.          VSLIDE[5+100,56+XX,5,10,CNT-7]
  2248.          Paper 1
  2249.          Pen 2
  2250.          Ink 2,1
  2251.          T1$="Devs :"+Str$(CNT-1)+"    "
  2252.          T3$="         Disk Free : 0"
  2253.          Text 24,14+(Y*8)+3,T1$
  2254.          Text 656-Text Length(T3$),14+(Y*8)+3,T3$
  2255.          Paper 0
  2256.          Pen 2
  2257.          Ink 2,0
  2258.          STRT=1
  2259.          SP=1
  2260.          For A=1 To HEIGHT
  2261.             If A<=CNT
  2262.                F$=N21$(0,A)+N21$(1,A)+N21$(2,A)
  2263.                Locate 0+XX,0+A+YY-1 : Print F$
  2264.                EP=A
  2265.             Else 
  2266.                Locate 0+XX,0+A+YY-1 : Print Space$(55)
  2267.             End If 
  2268.          Next A
  2269.       End If 
  2270.       '  
  2271.       Rem ** get device name **
  2272.       If BUTTON>=20 and MK_PRESSED=1 and DEVDISP=1
  2273.          DEVDISP=0
  2274.          F$=(N21$(1,SP+BUTTON-20))
  2275.          For AA=Len(F$) To 1 Step -1
  2276.             Exit If Mid$(F$,AA,1)<>" "
  2277.          Next AA
  2278.          F$=Left$(F$,AA)
  2279.          Dir$=F$
  2280.          Gosub _GETDIRECTORY
  2281.          BUTTON=0
  2282.       End If 
  2283.       '
  2284.       Rem ** get file name or change directory **
  2285.       If BUTTON>=20 and MK_PRESSED=1 and DEVDISP=0
  2286.          If N21$(0,SP+BUTTON-20)<>"*"
  2287.             If NR$(1)=N21$(1,SP+BUTTON-20) and TYPE=1
  2288.                F$=Dir$+FILENAME$
  2289.                L=Len(F$)
  2290.                For A=L To 1 Step -1
  2291.                   Exit If Mid$(F$,A,1)<>" "
  2292.                Next A
  2293.                If A>0
  2294.                   FILENAME$=Left$(F$,A)
  2295.                Else 
  2296.                   FILENAME$=""
  2297.                End If 
  2298.                NFADE_OUT : Screen Close 7 : Screen SCR : BUTTON=0
  2299.                Pop Proc
  2300.             End If 
  2301.             '
  2302.             Rem ** print text on file requestor black or white **
  2303.             If(TYPE=2) and(N21$(3,SP+BUTTON-20)="")
  2304.                N21$(3,SP+BUTTON-20)="Y"
  2305.                Pen 3
  2306.                F$=N21$(0,SP+BUTTON-20)+N21$(1,SP+BUTTON-20)+N21$(2,SP+BUTTON-20)
  2307.                Locate 0+XX,0+BUTTON-20+YY : Print F$
  2308.                Pen 2
  2309.                Do 
  2310.                   Exit If Mouse Key=0
  2311.                Loop 
  2312.             Else 
  2313.                N21$(3,SP+BUTTON-20)=""
  2314.                Pen 2
  2315.                F$=N21$(0,SP+BUTTON-20)+N21$(1,SP+BUTTON-20)+N21$(2,SP+BUTTON-20)
  2316.                Locate 0+XX,0+BUTTON-20+YY : Print F$
  2317.                Do 
  2318.                   Exit If Mouse Key=0
  2319.                Loop 
  2320.             End If 
  2321.             '
  2322.             UNREAD
  2323.             FILENAME$=N21$(1,SP+BUTTON-20)
  2324.             NR$(1)=N21$(1,SP+BUTTON-20)
  2325.             If TYPE=1
  2326.                TINP[XX,14,"",N21$(1,SP+BUTTON-20),55,"b",""]
  2327.                Do 
  2328.                   Exit If Mouse Key=0
  2329.                Loop 
  2330.             End If 
  2331.          Else 
  2332.             F$=(N21$(1,SP+BUTTON-20))
  2333.             For AA=Len(F$) To 1 Step -1
  2334.                Exit If Mid$(F$,AA,1)<>" "
  2335.             Next AA
  2336.             F$=Left$(F$,AA)
  2337.             Dir$=F$
  2338.             Gosub _GETDIRECTORY
  2339.          End If 
  2340.       End If 
  2341.       '
  2342.    Loop 
  2343.    NFADE_OUT: Screen Close 7 : Screen SCR : BUTTON=0
  2344.    Pop Proc
  2345.    '
  2346.    _GETDIRECTORY:
  2347.    For A=1 To HEIGHT
  2348.       Locate 0+XX,0+A+YY-1 : Print Space$(55)
  2349.    Next A
  2350.    Locate XX,4 : Print Space$(55)
  2351.    Locate XX,4 : Print Left$(Dir$+WILDCARD$,55)
  2352.    Locate XX+10,9 : Print "Please Wait - Reading Directory..."
  2353.    Set Dir 100,"*.info"
  2354.    For AA=1 To 100
  2355.       N21$(0,AA)=" "
  2356.       N21$(1,AA)=Space$(46)
  2357.       N21$(2,AA)=Space$(8)
  2358.       N21$(3,AA)=""
  2359.    Next AA
  2360.    F$=Dir First$(WILDCARD$)
  2361.    CNT=1
  2362.    FCNT=0 : Rem ** file count ** 
  2363.    While F$<>""
  2364.       N21$(0,CNT)=Left$(F$,1)
  2365.       N21$(1,CNT)=Mid$(F$,2,46)
  2366.       FT$=Right$(F$,8)
  2367.       For AA=8 To 1 Step -1
  2368.          Exit If Mid$(FT$,AA,1)<>" "
  2369.       Next AA
  2370.       N21$(2,CNT)=Space$(8-AA)+Left$(FT$,AA)
  2371.       If N21$(0,CNT)=" " : Inc FCNT : End If 
  2372.       Inc CNT
  2373.       F$=Dir Next$
  2374.    Wend 
  2375.    VSLIDE[5+100,56+XX,5,10,CNT-7]
  2376.    Paper 1
  2377.    Pen 2
  2378.    Ink 2,1
  2379.    T1$="Files :"+Str$(FCNT)+"   "
  2380.    T3$="       Disk Free :"+Str$(Dfree)
  2381.    Text 24,14+(Y*8)+3,T1$
  2382.    Text 656-Text Length(T3$),14+(Y*8)+3,T3$
  2383.    Paper 0
  2384.    Pen 2
  2385.    Ink 2,0
  2386.    STRT=1
  2387.    SP=1
  2388.    For A=1 To HEIGHT
  2389.       If A<=CNT
  2390.          If N21$(3,A)="Y"
  2391.             Pen 3
  2392.          Else 
  2393.             Pen 2
  2394.          End If 
  2395.          F$=N21$(0,A)+N21$(1,A)+N21$(2,A)
  2396.          Locate 0+XX,0+A+YY-1 : Print F$
  2397.          EP=A
  2398.       Else 
  2399.          Locate 0+XX,0+A+YY-1 : Print Space$(55)
  2400.       End If 
  2401.    Next A
  2402.    Pen 2
  2403.    Return 
  2404. End Proc
  2405. Procedure HSLIDE[NUM,X1,Y1,WIDTH,_TOTAL#]
  2406.    If NUM>100 and NUM<106
  2407.       EDFLAG=1
  2408.       NUM=NUM-100
  2409.    End If 
  2410.    '  
  2411.    If NUM<1 or NUM>5
  2412.       Pop Proc
  2413.    End If 
  2414.    '
  2415.    WIDTH=WIDTH-4
  2416.    X2=WIDTH
  2417.    HPOS(Screen,NUM)=1
  2418.    '  
  2419.    If _TOTAL#<=0
  2420.       _TOTAL#=1
  2421.    End If 
  2422.    OFFSET=259
  2423.    X1=X1*8
  2424.    X2=(X2*8)+X1
  2425.    Y1=Y1*8
  2426.    Ink 2
  2427.    Paste Bob X2+7,Y1+4,2
  2428.    If EDFLAG=0
  2429.       IBOX[X1/8,Y1/8,X2/8,(Y1+8)/8]
  2430.    End If 
  2431.    Set Zone NUM+OFFSET,X1,Y1+5 To X2+36,Y1+7+5
  2432.    N27(Screen,NUM)=X2
  2433.    Ink 3
  2434.    SH=Screen Height-8
  2435.    SIZE#=(X2-X1)/_TOTAL#
  2436.    If SIZE#>8
  2437.       XX1=X1+Int(SIZE#)
  2438.       Ink 0
  2439.       Bar 0,0+SH To 0+Int(SIZE#),4+SH
  2440.       Ink 3
  2441.       Draw 0,0+SH To 0+Int(SIZE#),0+SH
  2442.       Draw 0,0+SH To 0,3+SH
  2443.       Ink 2
  2444.       Draw 1,3+SH To 0+Int(SIZE#),3+SH
  2445.       Draw 0+Int(SIZE#),0+SH To 0+Int(SIZE#),3+SH
  2446.       Get Bob NUM+11,0,0+SH To 0+Int(SIZE#)+1,4+SH
  2447.    End If 
  2448.    If SIZE#<=8
  2449.       XX1=X1+8
  2450.       Draw 0,0+SH To 8,0+SH
  2451.       Draw 0,0+SH To 0,3+SH
  2452.       Ink 2
  2453.       Draw 1,3+SH To 8,3+SH
  2454.       Draw 8,0+SH To 8,3+SH
  2455.       Get Bob NUM+11,0,0+SH To 8+1,4+SH
  2456.    End If 
  2457.    Bob 0+NUM,X1+2,Y1+1+5,NUM+11
  2458.    N23#(Screen,NUM)=SIZE#
  2459.    N14(Screen,NUM)=X1
  2460.    N25(Screen,NUM)=Y1
  2461.    N24(Screen,NUM)=_TOTAL#
  2462.    N26(Screen,NUM)=1
  2463.    N28(Screen,NUM)=1
  2464. End Proc
  2465. Procedure VSLIDE[NUM,X1,Y1,HEIGHT,_TOTAL#]
  2466.    If NUM>100 and NUM<106
  2467.       EDFLAG=1
  2468.       NUM=NUM-100
  2469.    End If 
  2470.    If NUM<1 or NUM>5
  2471.       Pop Proc
  2472.    End If 
  2473.    HEIGHT=HEIGHT-2
  2474.    Y2=HEIGHT
  2475.    VPOS(Screen,NUM)=1
  2476.    '  
  2477.    If _TOTAL#<=0
  2478.       _TOTAL#=1
  2479.    End If 
  2480.    OFFSET=259
  2481.    NUM=NUM+5
  2482.    X1=X1*8
  2483.    Y1=Y1*8
  2484.    Y2=(Y2*8)+Y1
  2485.    Ink 2
  2486.    Paste Bob X1,4+Y2,1
  2487.    If EDFALG=0
  2488.       IBOX[X1/8,Y1/8,(X1+8)/8,Y2/8]
  2489.    End If 
  2490.    '
  2491.    Y1=Y1+5
  2492.    '
  2493.    Set Zone NUM+OFFSET,X1,Y1 To X1+12,Y2+20
  2494.    N27(Screen,NUM)=Y2
  2495.    Ink 3
  2496.    SW=1
  2497.    SIZE#=(Y2-Y1)/_TOTAL#
  2498.    If SIZE#>8
  2499.       XX1=X1+Int(SIZE#)
  2500.       Draw 0+SW,0 To 0+SW,0+Int(SIZE#)
  2501.       Draw 0+SW,0 To 5+SW,0
  2502.       Ink 2
  2503.       Draw 5+SW,1 To 5+SW,0+Int(SIZE#)
  2504.       Draw 0+SW,0+Int(SIZE#) To 5+SW,0+Int(SIZE#)
  2505.       Get Bob NUM+11,0+SW-1,0 To 6+SW,0+Int(SIZE#)+1
  2506.       Ink 0
  2507.       Bar 0+SW,0 To 5+SW,Int(SIZE#)
  2508.       Ink 2
  2509.    End If 
  2510.    If SIZE#<=8
  2511.       XX1=X1+8
  2512.       Draw 0+SW,0 To 0+SW,7
  2513.       Draw 0+SW,0 To 5+SW,0
  2514.       Ink 2
  2515.       Draw 3+SW,1 To 5+SW,7
  2516.       Draw 0+SW,7 To 5+SW,7
  2517.       Get Bob NUM+11,0+SW-1,0 To 6+SW,7+1
  2518.       Ink 0
  2519.       Bar 0+SW,0 To 5+SW,7
  2520.       Ink 2
  2521.    End If 
  2522.    Bob 0+NUM,X1+2,Y1+1,NUM+11
  2523.    N23#(Screen,NUM)=SIZE#
  2524.    N14(Screen,NUM)=X1
  2525.    N25(Screen,NUM)=Y1
  2526.    N24(Screen,NUM)=_TOTAL#
  2527.    N26(Screen,NUM)=1
  2528.    N28(Screen,NUM)=2
  2529. End Proc
  2530. Procedure SLIDEH[NUM,ITEM]
  2531.    N39=NUM
  2532.    N41#=(N23#(Screen,NUM)*ITEM)-N23#(Screen,NUM)
  2533. End Proc
  2534. Procedure SLIDEV[NUM,ITEM]
  2535.    N40=NUM
  2536.    N41#=(N23#(Screen,NUM+5)*ITEM)-N23#(Screen,NUM+5)
  2537. End Proc
  2538. Procedure SBOX[NUM,X1,Y1,X2,Y2,NUMH,NUMV]
  2539.    IBOX[X1,Y1,X2,Y2]
  2540.    Set Zone 219+NUM,X1*8,Y1*8+4 To X2*8+6,Y2*8+4
  2541.    N29(Screen,NUM,1)=X1*8
  2542.    N29(Screen,NUM,2)=Y1*8
  2543.    If NUMH>0
  2544.       HSLIDE[NUM,X1,Y2,X2-X1,NUMH]
  2545.    End If 
  2546.    If NUMV>0
  2547.       VSLIDE[NUM,X2+1,Y1,Y2-Y1,NUMV]
  2548.    End If 
  2549.    If NUMH>0 and NUMV>0
  2550.       NBOX[X2+1,Y2,X2+2,Y2+1,"o"]
  2551.    End If 
  2552. End Proc
  2553. Procedure DELETE[F$]
  2554.    MFSEL[F$,"Delete File(s)"]
  2555.    If FILENAMES>0
  2556.       For A=1 To FILENAMES
  2557.          Kill FILENAME$(A)
  2558.       Next A
  2559.    End If 
  2560. End Proc
  2561. Procedure SNOOZE_ON
  2562.    Change Mouse 13
  2563. End Proc
  2564. Procedure SNOOZE_OFF
  2565.    Change Mouse 12
  2566. End Proc
  2567. Procedure NFADE_HALF
  2568.    Fade 1,$999,$667,$444,$BBB
  2569.    Wait 30
  2570. End Proc
  2571. '
  2572. Procedure PERROR
  2573.    Resume Label 
  2574. End Proc