home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a081 / 2.ddi / CTFXX.EXE / FOXCOM02.PRG < prev    next >
Encoding:
Text File  |  1993-05-12  |  5.5 KB  |  192 lines

  1. *.............................................................................
  2. *   Program Name: FOXCOM02         Copyright: Magna Carta Software, Inc.
  3. *   Date Created: 06-18-91         Language: FoxPro 2.0
  4. *.............................................................................
  5. * Description: FOXCOM01 plus...
  6. * a) user control of data transfer rate
  7. * b) FoxPro pulldown menu system
  8. *.............................................................................
  9. CLEAR
  10. SET TALK OFF
  11. SET ESCAPE OFF
  12.  
  13. * Load the right library
  14. foxid = VERS()
  15. IF "2.0" $ foxid
  16.     SET LIBR TO ctf                 && Identified FoxPro 2.0
  17. ELSE
  18.     IF "2.5" $ VERS()
  19.         IF "Windows" $ foxid        && Identified FoxPro 2.5 for Windows
  20.             SET LIBR TO ctfw
  21.         ELSE
  22.             SET LIBR TO ctf25       && Identified FoxPro 2.5 for DOS
  23.         ENDIF
  24.     ENDIF
  25. ENDIF
  26.  
  27. DO ctfhdr
  28.  
  29. SET COLOR OF SCHEME 17 TO SCHEME 1  && save default color scheme
  30. SET COLOR OF SCHEME 18 TO SCHEME 2
  31.  
  32. version = 2
  33. portid  = 0
  34.  
  35. * Define Pull-Down Bar
  36. DEFINE MENU main_menu IN SCREEN COLOR SCHEME 3
  37. DEFINE PAD p_ct_quit   OF main_menu PROMPT "\<Quit"      AT 00, 00
  38.     ON SELECTION PAD p_ct_quit OF main_menu =ct_quit(portid)
  39. DEFINE PAD p_ct_online OF main_menu PROMPT "\<Go Online" AT 00, 06
  40.     ON SELECTION PAD p_ct_online OF main_menu =ct_online(portid)
  41. DEFINE PAD p_ct_speed  OF main_menu PROMPT "\<Speed"     AT 00, 17
  42.     ON SELECTION PAD p_ct_speed  OF main_menu =do_speed(portid, 17)
  43.  
  44. * Define Windows
  45. DEFINE WINDOW w_term FROM 01, 00 TO SROWS()-4, SCOLS()-1;
  46.     IN SCREEN;
  47.     TITLE " FoxCom Terminal " DOUBLE COLOR SCHEME 7
  48.  
  49. DEFINE WINDOW w_status FROM SROWS()-3, 00 TO SROWS()-1, 79;
  50.     IN SCREEN;
  51.     TITLE " FoxCom Status " DOUBLE COLOR SCHEME 17
  52.  
  53. ACTIVATE WINDOW w_status
  54. ACTIVATE WINDOW w_term
  55. ret = u8250_init(portid, COM1, 2400, 8, PARITY_NONE, 1) && initialize COM1 (I/O address = 1016)
  56. IF ret < 0
  57.     ? ret
  58.     =INKEY(0)
  59.     CANCEL
  60. ENDIF
  61. ret =install_ipr(portid, RECEIVE, NULL, 2048)  && initialize receive IPR
  62. IF ret < 0
  63.     ? ret-1
  64.     =INKEY(0)
  65.     CANCEL
  66. ENDIF
  67. ret =install_isr(portid, 4, NULL)                    && IRQ4 (use 3 for COM2)
  68. IF ret < 0
  69.     ? ret-2
  70.     =INKEY(0)
  71.     CANCEL
  72. ENDIF
  73.  
  74. @ 00,00 SAY "CommTools Terminal Version " + LTRIM(STR(version)) + ": Press ESC to Exit"
  75.  
  76. ACTIVATE MENU main_menu
  77.  
  78.  
  79.  
  80. FUNCTION ct_online
  81.     PARAMETERS portid
  82.  
  83.     ACTIVATE WINDOW w_term
  84.     =c_term(portid)                 && switch to dumb terminal mode
  85. RETURN (0)
  86.  
  87.  
  88.  
  89. *
  90. * C_TERM -- This is a dumb terminal loop in FoxPro.
  91. * Alternately poll the serial input buffer and the keyboard for data.
  92. *
  93. FUNCTION c_term
  94.     PARAMETERS portid
  95.     PRIVATE c
  96.  
  97.     ?
  98.     DO WHILE .T.
  99.         * CHECK SERIAL PORT FOR BYTE *
  100.         c = c_inchar(portid)                    && check the serial port for a byte
  101.         IF c <> CT_EOF                             && if a valid character display it
  102.             ?? CHR(c)
  103.         ENDIF
  104.         * CHECK KEYBOARD FOR A KEY PRESS *
  105.         c = INKEY()                             && check keyboard for a key
  106.         DO CASE                                 && evaluate the received key
  107.             CASE c == ESC                        && ESC was pressed
  108.                 RETURN (0)
  109.             CASE c <> 0
  110.                 =c_putc(portid, c)
  111.         ENDCASE
  112.     ENDDO                                       && do while .t.
  113. RETURN (0)
  114.  
  115.  
  116.  
  117. FUNCTION ct_quit
  118.     PARAMETERS portid
  119.     =deinit_port(portid)                        && deinitialize the port
  120.     DEACTIVATE WINDOW w_term
  121.     DEACTIVATE WINDOW w_status
  122.     DEACTIVATE MENU main_menu
  123.     CLEAR ALL
  124.     @ 24, 00 SAY "End of CommTools Terminal Version " + LTRIM(STR(version))
  125.     @ 22, 00 SAY PADC("Thank You for Using CommTools", WCOLS())
  126.     EXIT
  127. RETURN (0)
  128.  
  129.  
  130.  
  131. *
  132. * SPEED_MENU(expN portid)
  133. * This menu allows the user to select the data transfer rate.
  134. *
  135. PROCEDURE do_speed
  136.     PARAMETERS portid, col
  137.     PRIVATE speed
  138.  
  139.     DEFINE POPUP pop_speed FROM 01, col;
  140.         IN SCREEN;
  141.         SHADOW
  142.         DEFINE BAR 1  OF pop_speed PROMPT "50"
  143.         DEFINE BAR 2  OF pop_speed PROMPT "75"
  144.         DEFINE BAR 3  OF pop_speed PROMPT "110"
  145.         DEFINE BAR 4  OF pop_speed PROMPT "150"
  146.         DEFINE BAR 5  OF pop_speed PROMPT "300"
  147.         DEFINE BAR 6  OF pop_speed PROMPT "600"
  148.         DEFINE BAR 7  OF pop_speed PROMPT "1200"
  149.         DEFINE BAR 8  OF pop_speed PROMPT "2400"
  150.         DEFINE BAR 9  OF pop_speed PROMPT "4800"
  151.         DEFINE BAR 10 OF pop_speed PROMPT "9600"
  152.         DEFINE BAR 11 OF pop_speed PROMPT "19200"
  153.         DEFINE BAR 12 OF pop_speed PROMPT "38400"
  154.         DEFINE BAR 13 OF pop_speed PROMPT "57600"
  155.         DEFINE BAR 14 OF pop_speed PROMPT "115200"
  156.  
  157.         ON SELECTION POPUP pop_speed =_speed_menu(portid, VAL(PROMPT()))
  158.     speed = get_speed(portid)
  159.     ret=status_msg(0, "Current Speed: " + ALLTRIM(STR(speed)) + " bits-per-second")
  160.     ACTIVATE POPUP pop_speed
  161.     RELEASE pop_speed
  162. RETURN (0)
  163.  
  164.  
  165.  
  166. FUNCTION _speed_menu
  167.     PARAMETERS portid, speed
  168.     PRIVATE ret
  169.  
  170.     ret=status_msg(0, "Current Speed: " + ALLTRIM(STR(speed)) + " bits-per-second")
  171.     ret = set_speed(portid, speed)
  172.     speed = get_speed(portid)
  173. RETURN (ret)
  174.  
  175.  
  176.  
  177. PROCEDURE clear_status_line
  178.     PARAMETERS rstart, rend
  179.     PRIVATE row
  180.     ACTIVATE WINDOW w_status
  181.     row = WROWS() - 1
  182.     @row, rstart CLEAR TO row, rend
  183. RETURN
  184.  
  185.  
  186.  
  187. FUNCTION status_msg
  188.     PARAMETERS col, msg
  189.     =clear_status_line(col, 78)
  190.     @WROWS()-1, col SAY msg
  191. RETURN (0)
  192.