home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / telecomm / miniscul / miniscul.lst < prev    next >
Encoding:
File List  |  1989-10-04  |  21.8 KB  |  776 lines

  1. '
  2. ' Miniscule Term
  3. ' by Harry Sarber
  4. ' Started: 9/11/89
  5. '
  6. ' * * * * * * * * * * * * * * * * * * * * * *
  7. ' * This program may be freely distributed  *
  8. ' * as long as credit is given where due    *
  9. ' * and all the docs are included.          *
  10. ' * * * * * * * * * * * * * * * * * * * * * *
  11. '
  12. @Init
  13. @Term
  14. @Gone
  15. '
  16. Procedure Init
  17.   Local I%
  18.   Version$="1.0"                  ! Version number
  19.   Version_date$=" 10/04/89"       ! Version date
  20.   Cls
  21.   Print " Miniscule Term v";Version$ ! Who dun it?
  22.   Print "   By Harry Sarber"
  23.   Print "      ";Version_date$
  24.   Print "Press 'Help' for Help"
  25.   Dim Menu_bar$(60)               ! Menu Bar array
  26.   Dim Name$(60)                   ! Directory names
  27.   Dim Baud%(5)                    ! Baud array
  28.   Restore Baud_data
  29.   For Bd%=1 To 5                  ! Load data for each baud rate shown
  30.     Read I%                       ! 300/1200/2400/4800/9600
  31.     Baud%(Bd%)=I%                 !   9    7    4    2    1
  32.   Next Bd%                        ! If interested, 19200 is 0
  33.   Baud_data:
  34.   Data 9,7,4,2,1
  35.   If Exist("MINISCUL.CFG")        ! If it exists
  36.     Print "Loading configuration..."
  37.     Filename$="MINISCUL.CFG"      ! Load saved configuration file
  38.     @Load_config_file
  39.     @Set_baud(Baud%(Bd%))         ! Set baud accordingly
  40.   Else                            ! Else set defaults
  41.     Echo!=False                   ! Full duplex
  42.     Lf!=False                     ! Linefeeds OFF
  43.     Tone!=True                    ! Tone dialing
  44.     Dial_string$="ATDT"           ! Tone dial string
  45.     Bd%=1                         ! 300 baud
  46.     @Set_baud(Baud%(Bd%))         ! Set baud to 300
  47.     Capture!=False                ! Capture OFF
  48.     Ld_char$="+"                  ! Long distance symbol
  49.   Endif
  50.   If Exist("MINISCUL.DIR")        ! If it exists
  51.     Print "Loading dial directory..."
  52.     Filename$="MINISCUL.DIR"      ! Load saved directory
  53.     @Load_dial_directory
  54.   Else                            ! Else setup defaults
  55.     Ld_string$="1"                ! Long distance string
  56.     For I%=1 To 60                ! Fill names with spaces
  57.       Name$(I%)=""
  58.     Next I%
  59.   Endif
  60.   Hidem                           ! Hide dat mouse
  61.   @Curs_on                        ! Turn cursor on
  62. Return
  63. '
  64. Procedure Term
  65.   Local Cx%,Cy%,I%,C%,Answer%,Void%,Term_screen$
  66.   Repeat
  67.     If Mousek=2                   ! Go to menu bar on right mouse button
  68.       Cy%=Crslin                  ! Present cursor position
  69.       Cx%=Crscol
  70.       @Curs_off                   ! Shut off cursor
  71.       Sget Term_screen$           ! Save the screen
  72.       Showm                       ! Show dat mouse
  73.       Cls                         ! Clear the screen
  74.       Gosub Build_menu_bar        ! Setup menu bar
  75.       On Menu  Gosub Menu_handler
  76.       Leave_menu_bar!=False       ! Don't leave until True
  77.       Do
  78.         On Menu                   ! Wait for menu bar selection
  79.         Exit If Leave_menu_bar!   ! Leave menu bar loop if True
  80.       Loop
  81.       Hidem                       ! Hide dat mouse
  82.       Sput Term_screen$
  83.       Print At(Cx%,Cy%);
  84.       @Curs_on                    ! Turn cursor on
  85.       If Dial_number!             ! Dial a number?
  86.         Dial_number!=False        ! Reset flag
  87.         Print
  88.         Print "Dialing ";Left$(Name$(((Pg%-1)*10)+Number%),26)  ! Who?
  89.         If Mid$(Name$(((Pg%-1)*10)+Number%),27,1)=Ld_char$  ! Long distance?
  90.           Dial$=Dial_string$+Ld_string$+Right$(Name$(((Pg%-1)*10)+Number%),15)
  91.         Else                                       ! Nope
  92.           Dial$=Dial_string$+Right$(Name$(((Pg%-1)*10)+Number%),16)
  93.         Endif
  94.         For I%=1 To Len(Dial$)                     ! Send it out
  95.           Out 1,Asc(Mid$(Dial$,I%,1)) And 127
  96.         Next I%
  97.         Out 1,13                                   ! Carriage return
  98.       Endif
  99.     Endif
  100.     If Inp?(1)<>0                 ! Input from modem?
  101.       C%=Inp(1)                   ! Save it in C%
  102.       Out 2,C% And 127            ! Send to screen
  103.       If C%=13 And Lf!
  104.         Out 2,10
  105.       Endif
  106.       If Capture! And Len(Capture$)<32000  ! Capture ON? and NOT full?
  107.         Capture$=Capture$+Chr$(C% And 127) ! Save it to buffer then
  108.       Endif
  109.     Endif
  110.     If Inp?(2)<>0                 ! Input from keyboard?
  111.       C%=Inp(2)                   ! Save it in C%
  112.       If C%=225                   ! UNDO-Exit
  113.         Alert 2,"Leave Miniscule Term?",1,"Yes|No",Answer%
  114.         If Answer%=1              ! Leave?
  115.           Leave!=True             ! Yep
  116.         Endif
  117.         If Capture$<>""           ! Something in capture buffer?
  118.           @Capture_alert          ! Ask if they want to save it
  119.         Endif
  120.       Else
  121.         If C%>186 And C%<197      ! Function Keys F1-F10
  122.           If C%=187               ! F1-Capture ON
  123.             @Capture_on
  124.           Else
  125.             If C%=188             ! F2-Capture OFF
  126.               Capture!=False
  127.             Endif
  128.           Endif
  129.         Else
  130.           If C%=226               ! HELP Menu
  131.             Showm
  132.             Alert 0,"F1-Capture On  F2-Capture Off| Right mouse button-Menu Bar|          Undo-Exit",1,"Ok",Void%
  133.             Hidem
  134.           Else
  135.             Out 1,C%              ! Output character to modem
  136.             If Echo!              ! Output to screen if half duplex
  137.               Out 2,C%
  138.             Endif
  139.             If C%=13              ! Carriage return
  140.               Out 1,10            ! Send linefeed to modem
  141.               If Lf!              ! Send linefeed to screen if linefeeds on
  142.                 Out 2,10
  143.               Endif
  144.             Endif
  145.             If Capture!           ! Save to capture buffer if on
  146.               Capture$=Capture$+Chr$(C%)
  147.               If Len(Capture$)>31999  ! Full yet?
  148.                 Alert 2,"Capture buffer is full!|Would you like to save it?",1,"Yes|No",Answer%
  149.                 If Answer%=1          ! Yep
  150.                   @Save_capture       ! Ask if they want to save it
  151.                   Capture!=False      ! and turn off capture.
  152.                 Endif
  153.               Endif
  154.             Endif
  155.           Endif
  156.         Endif
  157.       Endif
  158.     Endif
  159.   Until Leave!                      ! Don't leave until it's time
  160. Return
  161. '
  162. Procedure Gone
  163.   @Curs_off                         ! Shut off cursor
  164.   Menu Kill                         ! Clear the menu bar
  165.   Showm                             ! Show dat mouse
  166.   Edit                              ! Take this out prior to compiling
  167.   System                            ! Get out of Dodge
  168. Return
  169. '
  170. ' ************** Menu Stuff *********************************************
  171. '
  172. Procedure Build_menu_bar
  173.   Local I%
  174.   Menu Kill                         ! Kill any previous menu bar
  175.   Restore Main_list_menu_data
  176.   For I%=0 To 59                    ! Load data into menu bar
  177.     Read Menu_bar$(I%)
  178.     Exit If Menu_bar$(I%)="***"
  179.   Next I%
  180.   Let Menu_bar$(I%)=""
  181.   Main_list_menu_data:
  182.   Data Desk,"  Miniscule Term "
  183.   Data -------------------
  184.   Data 1,2,3,4,5,6,""
  185.   Data Options, Terminal ,---------------, Half Duplex , Full Duplex ,---------------, Linefeeds ON , Linefeeds OFF ,---------------, Pulse , Tone ,---------------, Quit ,""
  186.   Data Baud, 300 , 1200 , 2400 , 4800 , 9600 ,""
  187.   Data Capture, On , Off ,--------------, Load Capture , Save Capture ,--------------, View , Print ,--------------, Send ,--------------, Clear ,""
  188.   Data Dialer, Dial ,----------------, Edit Number ,----------------, Load Directory , Save Directory ,----------------, LD String , LD Character ,""
  189.   Data Config, Load Configuration , Save Configuration ,""
  190.   Data ***
  191.   @Clr_screen                       ! Clear lower section of screen
  192.   Menu Menu_bar$()                  ! Put up menu bar
  193.   @Set_checks                       ! Set menu bar selection checks
  194. Return
  195. '
  196. Procedure Menu_handler
  197.   Local M$,N$,Nm$
  198.   Local Answer%,Void%,L%,I%,Abort_capture!,Switched!,N%
  199.   M$=Menu_bar$(Menu(0))             ! What was selected?
  200.   If M$="  Miniscule Term "
  201.     Alert 1,"Miniscule Term v"+Version$+"|  by Harry Sarber|     "+Version_date$,1,"OK",Void%
  202.   Endif
  203.   If M$=" Terminal "                ! Go back to the terminal
  204.     Leave_menu_bar!=True
  205.   Endif
  206.   If M$=" Half Duplex "             ! Set duplex
  207.     Echo!=True
  208.     @Set_checks
  209.   Endif
  210.   If M$=" Full Duplex "
  211.     Echo!=False
  212.     @Set_checks
  213.   Endif
  214.   If M$=" Linefeeds ON "            ! Set linefeeds flag
  215.     Lf!=True
  216.     @Set_checks
  217.   Endif
  218.   If M$=" Linefeeds OFF "
  219.     Lf!=False
  220.     @Set_checks
  221.   Endif
  222.   If M$=" Pulse "                   ! Pulse/Tone flag
  223.     Tone!=False
  224.     @Set_checks
  225.   Endif
  226.   If M$=" Tone "
  227.     Tone!=True
  228.     @Set_checks
  229.   Endif
  230.   If M$=" Quit "                    ! Exit Miniscule Term from Menu Bar
  231.     Alert 2,"Quit Miniscule Term?",1,"Yes|No",Answer%
  232.     If Answer%=1
  233.       @Gone
  234.     Endif
  235.   Endif
  236.   If M$=" 300 "                     ! Set baud
  237.     @Set_baud(Baud%(1))
  238.     Bd%=1
  239.     @Set_checks
  240.   Endif
  241.   If M$=" 1200 "
  242.     @Set_baud(Baud%(2))
  243.     Bd%=2
  244.     @Set_checks
  245.   Endif
  246.   If M$=" 2400 "
  247.     @Set_baud(Baud%(3))
  248.     Bd%=3
  249.     @Set_checks
  250.   Endif
  251.   If M$=" 4800 "
  252.     @Set_baud(Baud%(4))
  253.     Bd%=4
  254.     @Set_checks
  255.   Endif
  256.   If M$=" 9600 "
  257.     @Set_baud(Baud%(5))
  258.     Bd%=5
  259.     @Set_checks
  260.   Endif
  261.   If M$=" On "                      ! Capture on/off
  262.     @Capture_on
  263.     @Set_checks
  264.   Endif
  265.   If M$=" Off "
  266.     Capture!=False
  267.     @Set_checks
  268.   Endif
  269.   If M$=" Load Capture "            ! Load Capture
  270.     Answer%=1
  271.     If Capture$<>""
  272.       Alert 2,"Loading into the buffer|will delete data presently|in the Capture buffer.",1,"Load|Abort",Answer%
  273.     Endif
  274.     If Answer%=1
  275.       @Load_capture
  276.     Endif
  277.   Endif
  278.   If M$=" Save Capture "            ! Save Capture
  279.     If Capture$<>""
  280.       @Capture_alert
  281.     Else
  282.       @Do_alert("save")
  283.     Endif
  284.   Endif
  285.   If M$=" View "                    ! View Capture
  286.     If Capture$<>""
  287.       Menu Kill
  288.       Hidem
  289.       Cls
  290.       Abort_capture!=False
  291.       L%=1
  292.       For I%=1 To Len(Capture$)
  293.         Print Mid$(Capture$,I%,1);
  294.         If Mid$(Capture$,I%,1)=Chr$(13)
  295.           Inc L%
  296.           If L%=24
  297.             L%=1
  298.             Print
  299.             Print
  300.             Print At(19,25);"Left button-Continue    Right button-Abort";
  301.             Repeat
  302.             Until Mousek
  303.             If Mousek=2
  304.               Abort_capture!=True
  305.             Endif
  306.             Print
  307.           Endif
  308.         Endif
  309.         Exit If Abort_capture!
  310.       Next I%
  311.       If Not Abort_capture!
  312.         Print At(27,25);"Any button to continue...";
  313.         Repeat
  314.         Until Mousek=0
  315.         Repeat
  316.         Until Mousek
  317.       Endif
  318.       Cls
  319.       Showm
  320.       Menu Menu_bar$()                    ! Put menu bar back up
  321.       On Menu  Gosub Menu_handler
  322.       @Set_checks                         ! Set menu checks
  323.     Else
  324.       @Do_alert("view")
  325.     Endif
  326.   Endif
  327.   If M$=" Print "                         ! Print Capture
  328.     If Capture$<>""
  329.       Alert 2,"Print out Capture buffer?",1,"Yes|No",Answer%
  330.       If Answer%=1
  331.         Lprint Capture$
  332.       Endif
  333.     Else
  334.       @Do_alert("print")
  335.     Endif
  336.   Endif
  337.   If M$=" Send "                          ! Send Capture over modem
  338.     If Capture$<>""
  339.       Alert 2,"Send Capture buffer to modem?",1,"Yes|No",Answer%
  340.       If Answer%=1
  341.         For I%=1 To Len(Capture$)
  342.           Out 1,Asc(Mid$(Capture$,I%,1)) And 127
  343.         Next I%
  344.       Endif
  345.     Else
  346.       @Do_alert("send")
  347.     Endif
  348.   Endif
  349.   If M$=" Clear "                         ! Clear Capture
  350.     If Capture$<>""
  351.       Alert 2,"Clear the Capture buffer?",2,"Yes|No",Answer%
  352.       If Answer%=1
  353.         Capture$=""
  354.       Endif
  355.     Else
  356.       @Do_alert("clear")
  357.     Endif
  358.   Endif
  359.   If M$=" Dial "                          ! Dial a number
  360.     Dial_number!=False
  361.     Pg%=1
  362.     @Show_prompt("Dial")
  363.     @Show_dialer
  364.     @Show_names
  365.     @Show_page
  366.     @Show_ld_string
  367.     @Get_number
  368.     If Number_picked! And Name$(((Pg%-1)*10)+Number%)<>"" And Not Abort_number!
  369.       Dial_number!=True
  370.       Leave_menu_bar!=True
  371.     Endif
  372.   Endif
  373.   If M$=" Edit Number "                   ! Edit a number
  374.     Pg%=1
  375.     @Show_prompt("Edit")
  376.     @Show_dialer
  377.     @Show_names
  378.     @Show_page
  379.     @Get_number
  380.     If Number_picked! And Not Abort_number!
  381.       Hidem
  382.       If Name$(((Pg%-1)*10)+Number%)<>""
  383.         L%=25
  384.         N$=Left$(Name$(((Pg%-1)*10)+Number%),L%)
  385.         @Parse_line(N$,L%,*L%)
  386.         N$=Left$(N$,L%)
  387.         L%=16
  388.         Nm$=Right$(Name$(((Pg%-1)*10)+Number%),L%)
  389.         @Parse_line(Nm$,L%,*L%)
  390.         Nm$=Left$(Nm$,L%)
  391.       Endif
  392.       @Big_box(134,30,442,40)
  393.       Print At(20,5);"New Name:";
  394.       Form Input 25 As N$
  395.       @Big_box(134,30,442,40)
  396.       Print At(20,5);"New Number:";
  397.       Form Input 16 As Nm$
  398.       N$=N$+Space$(25-Len(N$))
  399.       Nm$=Nm$+Space$(16-Len(Nm$))
  400.       Name$(((Pg%-1)*10)+Number%)=N$+Space$(1)+Nm$
  401.       Deftext 2,,,6
  402.       Text 122,(Number%*10)+49,Name$(((Pg%-1)*10)+Number%)+Space$(42-Len(Name$(((Pg%-1)*10)+Number%)))
  403.       Repeat                                    ! Sort names
  404.         Switched!=False
  405.         For N%=1 To 59
  406.           If Name$(N%+1)<Name$(N%)
  407.             Swap Name$(N%+1),Name$(N%)
  408.             Switched!=True
  409.           Endif
  410.         Next N%
  411.       Until Switched!=False
  412.       For I%=1 To 59
  413.         Exit If Name$(I%)<>""
  414.       Next I%
  415.       If I%>1
  416.         N%=1
  417.         For Num_names%=I% To 60
  418.           Swap Name$(N%),Name$(Num_names%)
  419.           Inc N%
  420.         Next Num_names%
  421.       Endif
  422.       Showm
  423.     Endif
  424.   Endif
  425.   If M$=" Load Directory "                    ! Load Directory
  426.     @Get_filename("DIR","     Load","  Directory")
  427.     If Filename$<>"" And Right$(Filename$,1)<>"\"
  428.       If Exist(Filename$)
  429.         @Load_dial_directory
  430.       Else
  431.         Alert 3,"File does not exist!",1,"Ok",Void%
  432.       Endif
  433.     Endif
  434.   Endif
  435.   If M$=" Save Directory "                    ! Save Directory
  436.     @Get_filename("DIR","     Save","  Directory")
  437.     If Filename$<>"" And Right$(Filename$,1)<>"\"
  438.       Open "O",#1,Filename$
  439.       Print #1;Ld_string$
  440.       For I%=1 To 60
  441.         If Name$(I%)<>""
  442.           Print #1;Name$(I%)
  443.         Endif
  444.       Next I%
  445.       Close #1
  446.     Endif
  447.   Endif
  448.   If M$=" LD String "                         ! Change long distance string
  449.     Hidem
  450.     @Big_box(136,30,442,40)
  451.     Print At(20,5);"New LD String:";
  452.     Form Input 20 As Ld_string$
  453.     Showm
  454.   Endif
  455.   If M$=" LD Character "                      ! Change long distance character
  456.     Hidem
  457.     @Big_box(200,30,380,40)
  458.     Print At(28,5);"New LD Character:";
  459.     Form Input 1 As Ld_char$
  460.     Showm
  461.   Endif
  462.   If M$=" Save Configuration "                ! Save present configuration
  463.     @Get_filename("CFG","    Save","Configuration")
  464.     If Filename$<>"" And Right$(Filename$,1)<>"\"
  465.       Open "O",#1,Filename$
  466.       Print #1;Echo!
  467.       Print #1;Lf!
  468.       Print #1;Tone!
  469.       Print #1;Dial_string$
  470.       Print #1;Bd%
  471.       Print #1;Capture!
  472.       Print #1;Ld_char$
  473.       Close #1
  474.     Endif
  475.   Endif
  476.   If M$=" Load Configuration "                 ! Load configuration from disk
  477.     @Get_filename("CFG","    Load","Configuration")
  478.     If Filename$<>"" And Right$(Filename$,1)<>"\"
  479.       If Exist(Filename$)
  480.         @Load_config_file
  481.       Else
  482.         Alert 3,"That configuration file|does not exist!",1,"Ok",Void%
  483.       Endif
  484.     Endif
  485.   Endif
  486.   Menu Off                                     ! Turn menu selection back off
  487.   Repeat
  488.   Until Mousek=0
  489.   @Clr_screen                                  ! Clear out screen below menu
  490. Return
  491. '
  492. ' ***** Supporting procedures *****
  493. '
  494. '
  495. Procedure Parse_line(L$,Ln%,Last%)
  496.   While Mid$(L$,Ln%,1)=Space$(1) And Ln%<>0
  497.     Dec Ln%
  498.   Wend
  499.   *Last%=Ln%
  500. Return
  501. '
  502. Procedure Do_alert(A$)
  503.   Alert 3,"There is nothing in the|capture buffer to "+A$+"!",1,"Ok",Void%
  504. Return
  505. '
  506. Procedure Clr_screen              ! Filled green box
  507.   Deffill 3,1,1
  508.   Pbox 0,11,639,199
  509. Return
  510. '
  511. Procedure Set_baud(B%)            ! Set baud
  512.   A=Xbios(15,B%,1,-1,-1,-1,-1)
  513. Return
  514. '
  515. Procedure Curs_on
  516.   A=Xbios(21,1,-1)                ! Show cursor
  517.   A=Xbios(21,2,-1)                ! and flash it.
  518. Return
  519. '
  520. Procedure Curs_off
  521.   A=Xbios(21,0,-1)                ! Hide cursor
  522. Return
  523. '
  524. Procedure Capture_alert           ! Save Capture buffer alert
  525.   Local Answer%
  526.   Alert 2,"Save capture buffer?",1,"Yes|No",Answer%
  527.   If Answer%=1
  528.     @Save_capture
  529.   Endif
  530. Return
  531. '
  532. Procedure Get_filename(E$,L1$,L2$)      ! Get a filename with extension E$
  533.   Local I%
  534.   Deftext 1,,,6
  535.   Deffill 0,1,1
  536.   @Big_box(10,50,127,71)
  537.   Text 16,59,L1$
  538.   Text 16,68,L2$
  539.   Path_name$=Space$(64)                     ! Reserve space for path name
  540.   Drive%=Gemdos(&H19)                       ! Get drive number
  541.   Ptr%=Varptr(Path_name$)                   ! Define pointer to variable
  542.   Void Gemdos(&H47,L:Ptr%,W:Drive%+1)
  543.   For I%=1 To 63
  544.     If Asc(Mid$(Path_name$,I%,1))=0
  545.       Path_name$=Left$(Path_name$,I%-1)
  546.       I%=63
  547.     Endif
  548.   Next I%
  549.   D$=Chr$(Drive%+65)+":"+Path_name$+"\*."+E$ ! Path to search
  550.   Fileselect D$,B$,Filename$                 ! Get a filename
  551. Return
  552. '
  553. Procedure Save_capture                           ! Save Capture buffer to file
  554.   @Get_filename("TXT","    Save","   Capture")   ! "TXT" extension
  555.   If Filename$<>"" And Right$(Filename$,1)<>"\"  ! Not "" or 'Cancel'
  556.     Open "O",#1,Filename$                        ! Save it
  557.     Bput #1,Varptr(Capture$),Len(Capture$)
  558.     Close #1
  559.   Endif
  560. Return
  561. '
  562. Procedure Load_capture                           ! Load Capture buffer
  563.   Local Answer%
  564.   @Get_filename("TXT","     Load","   Capture")
  565.   If Filename$<>"" And Right$(Filename$,1)<>"\"  ! Not "" or 'Cancel'
  566.     If Exist(Filename$)
  567.       Open "I",#1,Filename$
  568.       If Lof(#1)>32000
  569.         Alert 2,"File is larger than the|Capture buffer (32000 bytes).|Load partial file?",1,"Yes|Abort",Answer%
  570.         If Answer%=1
  571.           Capture$=Space$(32000)
  572.           Bget #1,Varptr(Capture$),32000
  573.         Endif
  574.       Else
  575.         Capture$=Space$(Lof(#1))
  576.         Bget #1,Varptr(Capture$),Lof(#1)
  577.       Endif
  578.       Close #1
  579.     Else
  580.       Alert 3,"That file does not exist!",1,"Ok",Void%
  581.     Endif
  582.   Endif
  583. Return
  584. '
  585. Procedure Load_dial_directory
  586.   Local I%
  587.   Open "I",#1,Filename$
  588.   Input #1;Ld_string$           ! Long distance string
  589.   Num_names%=1
  590.   While Not Eof(#1) And Num_names%<61
  591.     Input #1;Name$(Num_names%)
  592.     Inc Num_names%
  593.   Wend
  594.   Close #1
  595.   If Num_names%<60
  596.     For I%=Num_names% To 60
  597.       Name$(I%)=""
  598.     Next I%
  599.   Endif
  600. Return
  601. '
  602. Procedure Get_number                 ! Get a number from directory
  603.   Local Mx%,My%
  604.   Number_picked!=False
  605.   Abort_number!=False
  606.   Repeat
  607.     If Mousek=1
  608.       Mx%=Mousex
  609.       My%=Mousey
  610.       Deffill 2,1,1
  611.       If Mx%>489 And Mx%<506
  612.         If My%>85 And My%<96
  613.           Hidem
  614.           Fill 492,88
  615.           Dec Pg%
  616.           If Pg%<1
  617.             Pg%=1
  618.           Endif
  619.           @Redraw_directory
  620.         Else
  621.           If My%>106 And My%<117
  622.             Hidem
  623.             Fill 492,109
  624.             Inc Pg%
  625.             If Pg%>6
  626.               Pg%=6
  627.             Endif
  628.             @Redraw_directory
  629.           Endif
  630.         Endif
  631.         Deffill 0,1,1
  632.         Fill 492,88
  633.         Fill 492,109
  634.         Showm
  635.       Else
  636.         If Mx%>118 And Mx%<460 And My%>51 And My%<151
  637.           Number_picked!=True
  638.           Number%=Int((My%-42)/10)
  639.           Deftext 2,,,6
  640.           Text 122,(Number%*10)+49,Name$(((Pg%-1)*10)+Number%)+Space$(42-Len(Name$(((Pg%-1)*10)+Number%)))
  641.         Else
  642.           Print At(1,1);Chr$(7)
  643.         Endif
  644.       Endif
  645.     Endif
  646.     If Mousek=2
  647.       Abort_number!=True
  648.     Endif
  649.   Until Number_picked! Or Abort_number!
  650. Return
  651. '
  652. Procedure Redraw_directory
  653.   @Show_page
  654.   @Show_names
  655. Return
  656. '
  657. Procedure Set_checks
  658.   If Echo!
  659.     Menu 13,1
  660.     Menu 14,0
  661.   Else
  662.     Menu 13,0
  663.     Menu 14,1
  664.   Endif
  665.   If Lf!
  666.     Menu 16,1
  667.     Menu 17,0
  668.   Else
  669.     Menu 16,0
  670.     Menu 17,1
  671.   Endif
  672.   If Tone!
  673.     Menu 19,0
  674.     Menu 20,1
  675.     Dial_string$="ATDT"
  676.   Else
  677.     Menu 19,1
  678.     Menu 20,0
  679.     Dial_string$="ATDP"
  680.   Endif
  681.   For I%=25 To 29
  682.     Menu I%,0
  683.   Next I%
  684.   Menu 24+Bd%,1
  685.   If Capture!
  686.     Menu 32,1
  687.     Menu 33,0
  688.   Else
  689.     Menu 32,0
  690.     Menu 33,1
  691.   Endif
  692. Return
  693. '
  694. '
  695. Procedure Load_config_file
  696.   Open "I",#1,Filename$
  697.   Input #1;Echo!
  698.   Input #1;Lf!
  699.   Input #1;Tone!
  700.   Input #1;Dial_string$
  701.   Input #1;Bd%
  702.   Input #1;Capture!
  703.   Input #1;Ld_char$
  704.   Close #1
  705.   @Set_checks
  706. Return
  707. '
  708. Procedure Capture_on
  709.   If Len(Capture$)<32000
  710.     Capture!=True
  711.   Else
  712.     Alert 3,"Capture buffer is full!|Save and/or clear the|capture buffer first.",1,"Save|Clear|Abort",Void%
  713.     If Answer%=1
  714.       @Save_capture
  715.     Else
  716.       If Answer%=2
  717.         @Clear_capture
  718.       Endif
  719.     Endif
  720.   Endif
  721. Return
  722. '
  723. Procedure Show_prompt(Prompt$)
  724.   Deftext 2,,,6
  725.   Deffill 0,1,1
  726.   @Big_box(215,30,391,40)
  727.   Text 219,38,"Select Number to "+Prompt$
  728. Return
  729. '
  730. Procedure Show_dialer                        ! Show dial directory
  731.   Local I%
  732.   @Big_box(118,51,460,151)
  733.   For I%=61 To 141 Step 10
  734.     Line 119,I%,460,I%
  735.   Next I%
  736.   @Draw_arrows
  737. Return
  738. '
  739. Procedure Draw_arrows
  740.   Deffill 0,1,1
  741.   @Big_box(489,85,506,117)
  742.   Box 489,96,506,106
  743.   Deftext 1,,,6
  744.   Text 494,93,Chr$(1)
  745.   Text 494,114,Chr$(2)
  746. Return
  747. '
  748. Procedure Show_ld_string
  749.   @Big_box(118,159,460,169)
  750.   Deftext 2,,,6
  751.   Text 122,167,"Long distance string:"+Ld_string$
  752. Return
  753. '
  754. Procedure Show_names
  755.   Local I%
  756.   Deftext 1,,,6
  757.   For I%=1 To 10
  758.     Text 122,(I%*10)+49,Name$(((Pg%-1)*10)+I%)+Space$(42-Len(Name$(((Pg%-1)*10)+I%)))
  759.   Next I%
  760. Return
  761. '
  762. Procedure Show_page
  763.   Deftext 2,,,6
  764.   Text 494,104,Str$(Pg%)
  765. Return
  766. '
  767. Procedure Big_box(Bx1%,By1%,Bx2%,By2%)
  768.   Deffill 0,1,1
  769.   Color 1
  770.   Pbox Bx1%,By1%,Bx2%,By2%
  771.   Box Bx1%,By1%,Bx2%,By2%
  772.   Box Bx1%-1,By1%,Bx2%+1,By2%
  773.   Box Bx1%-2,By1%-1,Bx2%+2,By2%+1
  774.   Box Bx1%-3,By1%-1,Bx2%+3,By2%+1
  775. Return
  776.