home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / various / diskutil.amos / diskutil.amosSourceCode
AMOS Source Code  |  1991-08-01  |  20KB  |  698 lines

  1. Screen Open 0,640,256,8,Hires : Paper 0 : Curs Off : Cls 
  2. Palette $0,$222,$444,$666,$888,$AAA,$CCC,$FFF
  3. Reserve Zone 10
  4. Dim DEV$(15),FILE$(100,2),T(2),P(2),TITLE$(2),PATH$(2)
  5. Dim LINE$(5),BUTTON$(5),PAGESTART(100),PAGEEND(100)
  6. Dim MK(100,2),NUM(2)
  7. Global T(),DEV$(),DEVS,FILE$(),P(),WIN,TITLE$(),PATH$(),MK(),NUM()
  8. Global LINE$(),BUTTON$(),TEMP1,TEMP2
  9. Limit Mouse 128,40 To 448,296
  10. Set Dir ,""
  11. SREEN
  12. DEVREAD
  13. DISPCOM
  14. TEMP1=0 : TEMP2=0
  15. NUM(1)=0 : NUM(2)=0
  16. P(1)=1 : P(2)=1
  17. WIN=1
  18. Window 1
  19. Do 
  20.    Z=Mouse Zone : K=Mouse Click : K1=Mouse Key
  21.    XX=X Screen(0,X Mouse) : YY=Y Screen(0,Y Mouse)
  22.    WW=1-(Z=8)
  23.    If(Z=6 or Z=8) and P(WIN)>1 and WIN=WW and K1=1
  24.       Dec P(WIN) : Locate 0,0 : Vscroll 1 : DISPLN[0] : SLIDER : Wait 2
  25.    End If 
  26.    WW=1-(Z=9)
  27.    If(Z=7 or Z=9) and P(WIN)+22<T(WIN) and WIN=WW and K1=1
  28.       Inc P(WIN) : Locate 0,22 : Vscroll 3 : DISPLN[22] : SLIDER : Wait 2
  29.    End If 
  30.    WW=1-(Z=5)
  31.    If(Z=4 or Z=5) and WIN=WW and K1=1
  32.       P(WIN)=((YY-24)*(T(WIN)-22)/176.0)+1 : Clw : DISP : SLIDER
  33.    End If 
  34.    If Z>0 and Z<3 and K1=2
  35.       FILE=(YY-24)/8
  36.       If MK(FILE+P(WIN),WIN)<>-1
  37.          Inc NUM(WIN)
  38.          MK(FILE+P(WIN),WIN)=-1
  39.       End If 
  40.       Repeat 
  41.          YY=Y Screen(0,Y Mouse)
  42.          FILE=(YY-24)/8
  43.          Locate 0,FILE
  44.          Inverse On 
  45.          DISPLN[FILE]
  46.          Inverse Off 
  47.          If MK(FILE+P(WIN),WIN)<>-1
  48.             Inc NUM(WIN)
  49.             MK(FILE+P(WIN),WIN)=-1
  50.          End If 
  51.       Until Mouse Key=0
  52.    End If 
  53.    If Z>0 and Z<3
  54.       FILE=(YY-24)/8+1
  55.       If WIN<>Z
  56.          WIN=Z
  57.          TITLE$(Z)="~S~ "+Mid$(TITLE$(Z),5)
  58.          TITLE$(3-Z)="~D~ "+Mid$(TITLE$(3-Z),5)
  59.          Window 3-Z : Title Top TITLE$(3-Z)
  60.          Window Z : Title Top TITLE$(Z)
  61.       Else 
  62.          If FILE>0 and FILE<T(WIN)+1
  63.             Window WIN : Dec FILE
  64.             Inverse On : Locate 0,FILE : DISPLN[FILE] : Inverse Off 
  65.             Repeat 
  66.                K=Mouse Click
  67.                FF=(Y Screen(0,Y Mouse)-24)/8+1
  68.                ZZ=Mouse Zone
  69.             Until K<>0 or FF<>FILE+1 or ZZ<>Z
  70.             If MK(FILE+P(WIN),WIN)=0
  71.                Locate 0,FILE : DISPLN[FILE]
  72.             End If 
  73.             If Left$(FILE$(FILE+P(WIN),WIN),1)="*" and K=1
  74.                DCLICK : If Param
  75.                PATH$(WIN)=PATH$(WIN)+Mid$(FILE$(FILE+P(WIN),WIN),2)-" "+"/"
  76.                DDREAD
  77.                K=0
  78.                End If 
  79.             End If 
  80.             If K=1
  81.                TEMP=FILE+P(WIN)
  82.                If MK(FILE+P(WIN),WIN)<>-1
  83.                   MK(FILE+P(WIN),WIN)=-1 : Inc NUM(WIN)
  84.                   Inverse On 
  85.                   Locate 0,FILE
  86.                   DISPLN[FILE]
  87.                   Inverse Off 
  88.                Else 
  89.                   MK(FILE+P(WIN),WIN)=0 : Dec NUM(WIN)
  90.                   Locate 0,FILE : DISPLN[FILE]
  91.                End If 
  92.             End If 
  93.          End If 
  94.       End If 
  95.    End If 
  96.    COM=(YY-24)/8+1 : If COM>24 : COM=24 : End If 
  97.    If Z=3 and OCOM<>COM
  98.       Gr Writing 3
  99.       Ink 0,7
  100.       Bar 288,COM*8+16 To 352,COM*8+23
  101.       If OCOM<>0
  102.       Bar 288,OCOM*8+16 To 352,OCOM*8+23
  103.       End If 
  104.       Gr Writing 1
  105.       OCOM=COM
  106.    End If 
  107.    If Z=3 and K<>0 : 
  108.       COM=(YY-24)/8+1
  109.       If COM<=DEVS
  110.       If K=1
  111.          PATH$(WIN)=DEV$(COM)
  112.          DDREAD
  113.       Else 
  114.          DEVREAD : OCOM=0
  115.          DISPCOM
  116.       End If 
  117.       End If 
  118.       If COM=14
  119.          If NUM(WIN)=0
  120.             LINE$(0)="You must Select a File to Run"
  121.             BUTTON$(0)="Sorry" : ALERT[1,1]
  122.          Else 
  123.             If NUM(WIN)<>1
  124.                LINE$(0)="Only 1 File must be selected"
  125.                BUTTON$(0)="Sorry" : ALERT[1,1]
  126.             Else 
  127.                J=1 : Do : If MK(J,WIN)=-1 : Exit : End If : Inc J : Loop 
  128.                CON[FILE$(J,WIN)] : F$=Param$
  129.                Run PATH$(WIN)+F$
  130.             End If 
  131.          End If 
  132.       End If 
  133.       If COM=11
  134.          If NUM(WIN)=0
  135.             LINE$(0)="No Files Have Been Selected"
  136.             BUTTON$(0)="O.K." : ALERT[1,1]
  137.          Else 
  138.             J=1 : COUNTER=0
  139.             Do 
  140.                Do : If MK(J,WIN)=-1 : Inc COUNTER : Exit : End If : Inc J : Loop 
  141.                CON[FILE$(J,WIN)] : F$=Param$
  142.                If Left$(F$,1)<>"*"
  143.                MESSAGE["Reading Picture: "+F$]
  144.                Open In 1,PATH$(WIN)+F$ : A$=Input$(1,4)
  145.                Pof(1)=12 : B$=Input$(1,6) : Close 
  146.                If A$="FORM"
  147.                   Load Iff PATH$(WIN)+F$,1
  148.                End If 
  149.                If B$="Pac.Pi"
  150.                   Load PATH$(WIN)+F$,6 : Unpack 6 To 1 : Erase 6
  151.                End If 
  152.                If(A$="FORM") or(B$="Pac.Pi")
  153.                   Screen To Front 1
  154.                   Hide On 
  155.                   Repeat : K=Mouse Click : Until K<>0
  156.                   Fade 5 : Wait 5*15
  157.                   Screen To Front 0 : Screen Close 1
  158.                   Show On 
  159.                End If 
  160.                End If 
  161.                If K=2 : Exit : End If 
  162.                Inc J
  163.                If COUNTER=NUM(WIN) : Exit : End If 
  164.             Loop 
  165.             Window 4 : Clw : Curs On : Window WIN
  166.          End If 
  167.       End If 
  168.       If COM=12
  169.          If NUM(WIN)=0
  170.             LINE$(0)="You need to Select a file"
  171.             BUTTON$(0)="O.K." : ALERT[1,1]
  172.          Else 
  173.             If NUM(WIN)<>1
  174.                LINE$(0)="Please Select only one File"
  175.                BUTTON$(0)="O.K." : ALERT[1,1]
  176.             Else 
  177.             J=1 : Do : If MK(J,WIN)=-1 : Exit : End If : Inc J : Loop 
  178.                CON[FILE$(J,WIN)] : F$=Param$
  179.                If Left$(F$,1)<>"*"
  180.                   Open In 1,PATH$(WIN)+F$ : LE=Lof(1) : Close 
  181.                   Reserve As Data 10,LE
  182.                      Bload PATH$(WIN)+F$,Start(10)
  183.                      Paper 0 : Cls : Pen 7
  184.                      FILE_PROCESS
  185.                      Do 
  186.                      Do 
  187.                         K$=Inkey$
  188.                         If K$=Chr$(31) and CURRENT_PAGE<PAGE_NUM-1
  189.                            Inc CURRENT_PAGE : Exit 
  190.                         End If 
  191.                         If K$=Chr$(30) and CURRENT_PAGE>0
  192.                            Dec CURRENT_PAGE : Exit 
  193.                         End If 
  194.                         If(K$=Chr$(27)) or(Upper$(K$)="Q")
  195.                            Exit 2
  196.                         End If 
  197.                      Loop 
  198.                         PAGE_SHOW[CURRENT_PAGE]
  199.                      Loop 
  200.                   Erase 10
  201.                   Cls 
  202.                   SREEN : DISPCOM
  203.                   WW=WIN : WIN=3-WW : Window WIN : DISP
  204.                   WIN=WW : Window WIN : DISP
  205.                End If 
  206.             End If 
  207.          End If 
  208.       End If 
  209.        If COM=13
  210.          If NUM(WIN)=0
  211.             LINE$(0)="You must select a file for this option"
  212.             BUTTON$(0)="O.K." : ALERT[1,1]
  213.          Else 
  214.             NU=1 : COUNTER=0
  215.             Do 
  216.             Do : If MK(NU,WIN)=-1 : Inc COUNTER : Exit : End If : Inc NU : Loop 
  217.             CON[FILE$(NU,WIN)] : F$=Param$
  218.             If Left$(F$,1)<>"*"
  219.             Open In 1,PATH$(WIN)+F$
  220.                A$=Input$(1,12) : A$=Input$(1,6)
  221.                Pof(1)=$14 : B$=Input$(1,2)
  222.                BE=Asc(Left$(B$,1))*256+Asc(Right$(B$,1))
  223.                LE=Lof(1)
  224.             Close 
  225.             If A$="Music "
  226.                Load PATH$(WIN)+F$
  227.                MESSAGE["Press Any Button to Stop Music"]
  228.                Mvolume 63 : Music 1
  229.                Repeat : K=Mouse Click : Until K
  230.                For N=63 To 0 Step -1 : Mvolume N : Wait Vbl : Next 
  231.                Music Off 
  232.                Erase 3
  233.                Clw : Curs On : Window WIN
  234.             End If 
  235.             If A$="Sample"
  236.                MESSAGE["LEFT BUTTON - Next Sample    RIGHT BUTTON - Exit"]
  237.                Load PATH$(WIN)+F$
  238.                Mvolume 63
  239.                J=1
  240.                Do 
  241.                Sam Play J
  242.                Repeat : K=Mouse Click : Until K
  243.                If K>1 : Exit : End If 
  244.                Add J,1,1 To BE
  245.                Loop 
  246.                Dec K
  247.                Clw : Curs On : Window WIN
  248.                Erase 5
  249.             End If 
  250.             If(A$<>"Music ") and(A$<>"Sample")
  251.                MESSAGE["Loading Data"]
  252.                Reserve As Chip Data 10,LE
  253.                Bload PATH$(WIN)+F$,Start(10)
  254.                Mvolume 63
  255.                EE=8000
  256.                Do 
  257.                Window 4 : Curs On 
  258.                Clw 
  259.                Pen 5 : Print "Raw Sample (Enter Playback Speed 501 - 30000): ";Pen$(7);
  260.                IPUT[Str$(EE)-" ",6,False] : EE=Val(Param$)
  261.                If EE<501 or EE>30000 : Exit : End If 
  262.                MESSAGE["Playing Sample, Press Mouse Button to Exit"]
  263.                Sam Raw 15,Start(10),Length(10),EE
  264.                A=Timer
  265.                Do 
  266.                   If(Timer-A)>((Length(10))/EE)*50 : Exit : End If 
  267.                   K=Mouse Click : If K<>0 : Exit : End If 
  268.                Loop 
  269.                If K<>0 : Exit : End If 
  270.                Loop 
  271.                Mvolume 0
  272.                Window 4
  273.                Clw : Curs On : Window WIN
  274.                Erase 10
  275.                End If 
  276.             End If 
  277.             End If 
  278.             If K>1 : Exit : End If 
  279.             Inc NU
  280.             If COUNTER=NUM(WIN) : Exit : End If 
  281.          Loop 
  282.       End If 
  283.       If COM=15
  284.          LINE$(0)="Do you really want to quit?"
  285.          BUTTON$(0)="Yes" : BUTTON$(1)="No" : ALERT[2,1] : If Param=1 : End : End If 
  286.       End If 
  287.       If COM=16
  288.          FPARENT
  289.          If PATH$(WIN)<>"" : DDREAD : End If 
  290.       End If 
  291.       If COM=17
  292.          Window 4 : Clw : Pen 2 : Print "Enter New Directory: ";
  293.          IPUT["",30,False] : ND$=Param$
  294.          If Not Exist(PATH$(WIN)+ND$)
  295.             Mkdir PATH$(WIN)+ND$
  296.             DDREAD
  297.          End If 
  298.          Window 4 : Clw : Curs On : Window WIN
  299.       End If 
  300.       If COM=19
  301.          For J=1 To T(WIN)
  302.             MK(J,WIN)=-1
  303.          Next J
  304.          NUM(WIN)=T(WIN)
  305.          Clw : DISP
  306.       End If 
  307.       If COM=20
  308.          For J=1 To T(WIN)
  309.             MK(J,WIN)=0
  310.          Next J
  311.          NUM(WIN)=0
  312.          Clw : DISP
  313.       End If 
  314.       If COM=21
  315.          TEMP1=TEMP
  316.          If TEMP2>TEMP1
  317.             For J=TEMP1 To TEMP2
  318.                If MK(J,WIN)<>-1
  319.                   MK(J,WIN)=-1 : Inc NUM(WIN)
  320.                End If 
  321.             Next J
  322.          Clw : DISP
  323.          End If 
  324.       End If 
  325.       If COM=22
  326.          TEMP2=TEMP
  327.          If TEMP1<TEMP2
  328.             For J=TEMP1 To TEMP2
  329.                If MK(J,WIN)<>-1
  330.                   MK(J,WIN)=-1 : Inc NUM(WIN)
  331.                End If 
  332.             Next J
  333.          Clw : DISP
  334.          End If 
  335.       End If 
  336.       If COM=23
  337.          If NUM(WIN)<>0
  338.             COUNTER=0 : J=1
  339.             Do 
  340.             Do 
  341.                If MK(J,WIN)=-1 : Inc COUNTER : Exit : End If : Inc J
  342.             Loop 
  343.             MESSAGE[PATH$(WIN)+F$+" to "+PATH$(3-WIN)+F$]
  344.             DCOPY[J]
  345.             Inc J
  346.             If COUNTER=NUM(WIN) : Exit : End If 
  347.             Loop 
  348.             Window 4 : Curs On : Clw : Window WIN
  349.             For J=1 To T(WIN) : MK(J,WIN)=0 : Next : NUM(WIN)=0 : Clw : DISP
  350.             WIN=3-WIN
  351.             Window WIN
  352.             DDREAD
  353.             WIN=3-WIN
  354.             Window WIN
  355.          End If 
  356.       End If 
  357.       If COM=24
  358.          If NUM(WIN)<>0
  359.             If NUM(WIN)<>1
  360.                LINE$(0)="Please only select 1 file to Rename"
  361.                BUTTON$(0)="Opps! Sorry"
  362.                ALERT[1,1]
  363.             Else 
  364.                J=1 : Do : If MK(J,WIN)=-1 : Exit : End If : Inc J : Loop 
  365.                CON[FILE$(J,WIN)] : F$=Param$
  366.                IPUT[F$,32,False] : NAME$=Param$
  367.                   Rename PATH$(WIN)+F$ To PATH$(WIN)+NAME$
  368.                   DDREAD
  369.             End If 
  370.          End If 
  371.       End If 
  372.       If COM=18
  373.          If NUM(WIN)<>0
  374.             J=1 : COUNTER=0
  375.             Do 
  376.             Do : If MK(J,WIN)=-1 : Inc COUNTER : Exit : End If : Inc J : Loop 
  377.             DKILL[J]
  378.             Inc J
  379.             If COUNTER=NUM(WIN) : Exit : End If 
  380.             Loop 
  381.             DDREAD
  382.          End If 
  383.       End If 
  384.    End If 
  385. Loop 
  386. Procedure DDREAD
  387.    For J=1 To T(WIN) : MK(J,WIN)=0 : Next J
  388.    NUM(WIN)=0
  389.    TITLE$(WIN)="~S~ "+PATH$(WIN)
  390.    TITLE$(3-WIN)="~D~ "+Mid$(TITLE$(3-WIN),5)
  391.    Window 3-WIN : Title Top TITLE$(3-WIN)
  392.    Window WIN : Title Top TITLE$(WIN)
  393.    Clw 
  394.    Pen 3 : Centre "Reading Dir" : Pen 7
  395.    P(WIN)=1
  396.    FILE$(1,WIN)=Dir First$(PATH$(WIN))
  397.    K=2
  398.    Do 
  399.       FILE$(K,WIN)=Dir Next$
  400.       If FILE$(K,WIN)="" : Dec K : Exit : End If 
  401.       Inc K
  402.    Loop 
  403.    T(WIN)=K
  404.    Clw 
  405.    DISP
  406.    SLIDER
  407. End Proc
  408. Procedure DISPLN[J]
  409.    If MK(J+P(WIN),WIN)=-1 Then Inverse On 
  410.    Print Left$(FILE$(J+P(WIN),WIN),18)+Right$(FILE$(J+P(WIN),WIN),10);
  411.    If J<>22 : Print : End If 
  412.    Inverse Off 
  413. End Proc
  414. Procedure DISP
  415.    For J=0 To Min(22,T(WIN)-1)
  416.       DISPLN[J]
  417.    Next J
  418.    If PATH$(WIN)<>""
  419.       Dir$=Left$(PATH$(WIN),Instr(PATH$(WIN),":"))
  420.       Title Bottom(Str$(Dfree)-" ")+" Bytes Free."
  421.    End If 
  422. End Proc
  423. Procedure SLIDER
  424. If T(1)<22
  425.    Vslider 272,24 To 280,200,176,0,176
  426. Else 
  427.    Vslider 272,24 To 280,200,T(1),P(1)-1,(T(1)-22/176)
  428. End If 
  429. If T(2)<22
  430.    Vslider 358,24 To 366,200,176,0,176
  431. Else 
  432.    Vslider 358,24 To 366,200,T(2),P(2)-1,(T(2)-22/176)
  433. End If 
  434. End Proc
  435. Procedure SREEN
  436.    Shared OCOM
  437.       OCOM=0
  438.    Set Slider 4,5,6,1,1,0,2,1
  439.    Bar 272,16 To 280,23
  440.    Bar 358,16 To 366,23
  441.    Bar 272,201 To 280,208
  442.    Bar 358,201 To 366,208
  443.    Vslider 272,24 To 280,200,176,0,176
  444.    Vslider 358,24 To 366,200,176,0,176
  445.    Wind Open 1,0,16,32,25,1
  446.    Curs Off 
  447.    Title Top "~S~ "
  448.    Border 1,0,7
  449.    Wind Open 2,368,16,32,25,1
  450.    Curs Off 
  451.    Title Top "~D~ "
  452.    Wind Open 3,288,24,8,24
  453.    Curs Off 
  454.    Wind Open 4,0,220,79,3,1
  455.    Set Zone 1,16,16 To 252,206
  456.    Set Zone 2,384,16 To 620,206
  457.    Set Zone 3,288,24 To 352,224
  458.    Set Zone 4,272,24 To 280,200
  459.    Set Zone 5,358,24 To 366,200
  460.    Set Zone 6,272,16 To 280,23
  461.    Set Zone 7,272,201 To 280,208
  462.    Set Zone 8,358,16 To 366,23
  463.    Set Zone 9,358,201 To 366,208
  464. End Proc
  465. Procedure FPARENT
  466.    If PATH$(WIN)="" Then Pop Proc
  467.    F$=Flip$(PATH$(WIN))
  468.    D=2
  469.    Do 
  470.       If(Mid$(F$,D,1)="/") or(Mid$(F$,D,1)=":") Then Exit 
  471.       If D>Len(F$) Then Exit 
  472.       Inc D
  473.    Loop 
  474.    If D>Len(F$) Then Pop Proc
  475.    F$=Mid$(F$,D)
  476.    PATH$(WIN)=Flip$(F$)
  477. End Proc
  478. Procedure DEVREAD
  479. ' could use this but I dont like it! 
  480. '   DEV$(1)=Dev First$("*")-" "
  481. '   K=2
  482. '   Do 
  483. '      DEV$(K)=Dev Next$-" " 
  484. '      If DEV$(K)="" Then Exit 
  485. '      Inc K : If K>10 Then Exit 
  486. '   Loop 
  487. '   DEVS=K-1 
  488. DEV$="Df1Df2Df3Dh0Dh1Di0Di1Ram"
  489. J=2 : DEV$(1)="Df0:"
  490.    Do 
  491.       DE$=Left$(DEV$,3)+":" : DEV$=Mid$(DEV$,4)
  492.       If Exist(DE$) : DEV$(J)=DE$ : Inc J : End If 
  493.       If DEV$="" : Exit : End If 
  494.    Loop 
  495. DEVS=J-1
  496. End Proc
  497. Procedure DISPCOM
  498.    Window 3
  499.    Clw 
  500.    Pen 7
  501.    For J=1 To DEVS : Print DEV$(J) : Next 
  502.    Print At(0,10);
  503.    Print "  VIEW "
  504.    Print "  READ "
  505.    Print "  HEAR "
  506.    Print "  PRUN "
  507.    Print "  QUIT"
  508.    Print " PARENT"
  509.    Print " MK-DIR"
  510.    Print " DELETE"
  511.    Print " SELECT"
  512.    Print "DESELECT";
  513.    Print " BSTART"
  514.    Print "  BEND "
  515.    Print "  COPY "
  516.    Print " RENAME";
  517. End Proc
  518. Procedure DKILL[X]
  519. Shared FF$,F$
  520.    CON[FILE$(X,WIN)]
  521.    F$=Param$
  522.    If Left$(F$,1)="*"
  523.       LINE$(0)="You Have Sleceted a Directory"
  524.       LINE$(1)="I Can't Get Amos to kill a Directory - Sorry"
  525.       BUTTON$(0)="O.K." : ALERT[1,2]
  526.       F$=""
  527.    End If 
  528.    If F$<>""
  529.    LINE$(0)="Do you want to Delete "+F$
  530.    LINE$(1)="Remember once deleted you cant retrieve"
  531.    BUTTON$(0)="DELETE" : BUTTON$(1)="CANCEL"
  532.    ALERT[2,2] : AA=Param
  533.    If AA=1 : Kill PATH$(WIN)+F$ : End If 
  534.    End If 
  535. End Proc
  536. Procedure CON[F$]
  537.    F$=Left$(F$,30)
  538.    F$=F$-" "
  539. End Proc[F$]
  540. Procedure DCOPY[X]
  541.    CON[FILE$(X,WIN)]
  542.    F$=Param$
  543.    Open In 1,PATH$(WIN)+F$
  544.       L=Lof(1)
  545.    Close 
  546.    Reserve As Work 10,L
  547.    Bload PATH$(WIN)+F$,Start(10)
  548.    If Exist(PATH$(3-WIN)+F$)
  549.       LINE$(0)="FILE ALREADY EXISTS"
  550.       LINE$(1)="OVEWRITE?"
  551.       BUTTON$(0)="YES" : BUTTON$(1)="NO"
  552.       ALERT[2,2]
  553.       If Param=2
  554.          Erase 10 : Pop Proc
  555.       End If 
  556.    End If 
  557.          Bsave PATH$(3-WIN)+F$,Start(10) To Start(10)+Length(10)
  558.    Erase 10
  559. End Proc
  560. Procedure ALERT[NB,NL]
  561.    Shared LINE$(),BUTTON$()
  562.    Screen Open 7,580,64,4,Hires : Flash Off : Palette $0,$F80,$FFF,$3F
  563.    Reserve Zone 10
  564.    Curs Off : Paper 0 : Cls : Pen 2
  565.    Screen Display 7,144,128,560,64
  566.    Ink 3 : Bar 0,0 To 560,44
  567.    TEMP=0
  568.    NL=Min(NL,5)
  569.    NB=Min(7,NB)
  570.    Ink 2,3
  571.    While TEMP<>NL
  572.       T=Text Length(LINE$(TEMP)) : Text 280-(T/2),10+TEMP*8,LINE$(TEMP)
  573.       Inc TEMP
  574.    Wend 
  575.    Ink 1 : Bar 0,44 To 560,64
  576.    WIDTH=560/NB : TEMP=0 : COUNT=0
  577.    Ink 2,1
  578.    While TEMP<560
  579.          Bar TEMP-1,44 To TEMP+1,64
  580.       Add TEMP,WIDTH
  581.       Set Zone COUNT+1,TEMP-WIDTH,44 To TEMP-1,64 : Inc COUNT
  582.    Wend 
  583.    Draw 0,44 To 560,44
  584.    Box 0,0 To 560,63
  585.    Ink 0
  586.    COUNT=0 : TEMP=0
  587.    While TEMP<560
  588.       W=Text Length(BUTTON$(COUNT))
  589.       W1=(WIDTH/2)-(W/2) : Text W1+TEMP,57,BUTTON$(COUNT)
  590.       Inc COUNT : Add TEMP,WIDTH
  591.    Wend 
  592.    Repeat 
  593.    Repeat : Until Mouse Click and Mouse Key=1
  594.       TEMP=Mouse Zone
  595.    Until TEMP<>0
  596.    Screen Close 7
  597. End Proc[TEMP]
  598. Procedure IPUT[T$,LLEN,CASE]
  599.    Window 4 : Pen 6
  600.    XX=X Curs : YY=Y Curs : If YY>0 : YY=0 : End If 
  601.    Print At(XX,YY);T$; : ZZ=Len(T$)
  602.    Do 
  603.    Repeat 
  604.       A$=Inkey$ : If CASE : A$=Upper$(A$) : End If 
  605.       SC=Scancode
  606.    Until A$<>""
  607.    If A$=Chr$(8) and ZZ>0 : T$=Left$(T$,ZZ-1)+Mid$(T$,ZZ+1) : Dec ZZ : End If 
  608.    If SC=70 : T$=Left$(T$,ZZ)+Mid$(T$,ZZ+2) : End If 
  609.    If A$=Chr$(28) and ZZ<Len(T$) : Inc ZZ : End If 
  610.    If A$=Chr$(29) and ZZ>0 : Dec ZZ : End If 
  611.    If A$=Chr$(27) : T$="" : Exit : End If 
  612.    If A$=Chr$(13) : Exit : End If 
  613.    If A$>=" " : T$=Left$(T$,ZZ)+A$+Mid$(T$,ZZ+1) : Inc ZZ : End If 
  614.    T$=Left$(T$,LLEN)
  615.    If ZZ>Len(T$) : ZZ=Len(T$) : End If : If ZZ<0 : ZZ=0 : End If 
  616.    Print At(XX,YY);Left$(T$+Space$(LLEN),LLEN); : Locate XX+ZZ,0
  617.    Loop 
  618.       Clw 
  619.    Window WIN
  620. End Proc[T$]
  621. Procedure DCLICK
  622.    A=Timer
  623.    Do 
  624.    If Timer-A>12 : Exit : End If 
  625.    K=Mouse Click
  626.    If K : Exit : End If 
  627.    Loop 
  628. End Proc[K]
  629. Procedure MESSAGE[B$]
  630.    Window 4 : Clw : Curs Off 
  631.    Pen 3
  632.    Centre B$
  633. End Proc
  634. Procedure NOBUT
  635.    Repeat : Until Mouse Click=0
  636. End Proc
  637. Procedure FILE_PROCESS
  638.    Shared PAGESTART(),PAGEEND(),PAGE_NUM,CURRENT_PAGE
  639.    PAGE_NUM=0
  640.    LINES=-1
  641.    TEMP=0
  642.    COUNT=0
  643.    Pen 3 : Centre At(,25)+"Please Wait, Paginating Document"+Pen$(7)
  644.    ST=Start(10)
  645.    EN=Start(10)+Length(10)
  646.    COUNT=ST
  647.    Wait 10
  648.    Repeat 
  649.       If PAGE_NUM=0
  650.          PAGESTART(PAGE_NUM)=ST
  651.       Else 
  652.          PAGESTART(PAGE_NUM)=COUNT+1
  653.       End If 
  654.       LINES=0
  655.       Repeat 
  656.          Inc LINES
  657.          Inc COUNT
  658.          TEMP=False
  659.          Repeat 
  660.             A=Hunt(COUNT To EN,Chr$(10))
  661.             If(A-COUNT>78) or A=0
  662.                Add COUNT,78
  663.                TEMP=True
  664.             Else 
  665.                COUNT=A
  666.             End If 
  667.          Until COUNT=>EN or A<>0 or TEMP=True
  668.       Until LINES=25 or COUNT=>EN
  669.       PAGEEND(PAGE_NUM)=COUNT
  670.       Inc PAGE_NUM
  671.    Until COUNT=>EN
  672.    PAGEEND(PAGE_NUM-1)=EN
  673.    PAGE_SHOW[0]
  674.    CURRENT_PAGE=0
  675. End Proc
  676. Procedure PAGE_SHOW[NUM]
  677.    Shared PAGESTART(),PAGEEND(),PAGE_NUM
  678.    Cls 
  679.    Inverse On 
  680.    Centre At(,26)+"~~~~~~~~ PAGE:"+Str$(NUM+1)+" ~~~~~~~~"
  681.    Inverse Off 
  682.    Centre At(,28)+Pen$(3)+"Q or ESC - Exit,  Cursor Down - Next Page,  Cursor Up - Page Up."+Pen$(7)
  683.    Home 
  684.    ST=Start(10)
  685.    Z=0 : Print " ";
  686.    For LOP=PAGESTART(NUM) To PAGEEND(NUM)
  687.       A=Peek(LOP)
  688.       Print Chr$(A);
  689.       If A=9 : Add Z,3 : End If 
  690.       If(Z>78) or(A=13) or(A=10)
  691.          If A<>13 and A<>10
  692.             Print Chr$(13) : Print "~ "; : Z=1
  693.          Else 
  694.             Print Chr$(13); : Print " "; : Z=0
  695.          End If 
  696.       End If 
  697.    Next LOP
  698. End Proc