home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / bas / pcl4b42 / term_io.bas < prev    next >
BASIC Source File  |  1994-09-05  |  3KB  |  117 lines

  1. '  -- TERM_IO.PAS --
  2. '
  3. '  This program is donated to the Public
  4. '  Domain by MarshallSoft Computing, Inc.
  5. '  It is provided as an example of the use
  6. '  of the Personal Communications Library.
  7. '
  8.  
  9. DEFINT A-Z
  10.  
  11. '$INCLUDE: 'PCL4B.BI'
  12. '$INCLUDE: 'TERM_IO.BI'
  13.  
  14. CONST CR = 13, ESC = 27, BS = 8
  15. CONST BLK = 32, CAN = 24
  16.  
  17. CONST LowVideo =  7
  18. CONST HighVideo = 1
  19.  
  20. '** match baud rate string
  21.  
  22. FUNCTION MatchBaud(BaudString$)
  23.   MatchBaud = -1
  24.   IF BaudString$ = "300" THEN MatchBaud = 0
  25.   IF BaudString$ = "600" THEN MatchBaud = 1
  26.   IF BaudString$ = "1200" THEN MatchBaud = 2
  27.   IF BaudString$ = "2400" THEN MatchBaud = 3
  28.   IF BaudString$ = "4800" THEN MatchBaud = 4
  29.   IF BaudString$ = "9600" THEN MatchBaud = 5
  30.   IF BaudString$ = "19200" THEN MatchBaud = 6
  31.   IF BaudString$ = "38400" THEN MatchBaud = 7
  32.   IF BaudString$ = "57600" THEN MatchBaud = 8
  33.   IF BaudString$ = "115200" THEN MatchBaud = 9
  34. END FUNCTION
  35.  
  36. '** Transmits CAN's **
  37.  
  38. SUB TxCAN(BYVAL Port)
  39.   FOR I = 1 TO 6
  40.     Code = SioPutc(Port, CAN)
  41.   NEXT I
  42. END SUB
  43.  
  44. '** read message form line 25 **
  45.  
  46. SUB ReadMsg(MsgString$, BYVAL StartCol, BYVAL MaxLength)
  47.   I = 0
  48.   Row = CSRLIN
  49.   Col = POS(0)
  50.   VIEW PRINT 25 TO 25
  51.   COLOR HighVideo
  52.   MsgString$ = ""
  53.   'input text from user
  54.   LOCATE 25, StartCol, 1
  55.   DO
  56.     AnyKey$ = INKEY$
  57.     IF AnyKey$ <> "" THEN
  58.       SELECT CASE LEFT$(AnyKey$, 1)
  59.         CASE CHR$(13)
  60.           COLOR LowVideo
  61.           VIEW PRINT 1 TO 24
  62.           LOCATE Row, Col, 1
  63.           EXIT SUB
  64.         CASE CHR$(27)  'Escape
  65.           'return empty string
  66.           MsgString$ = ""
  67.           COLOR LowVideo
  68.           VIEW PRINT 1 TO 24
  69.           LOCATE Row, Col, 1
  70.           EXIT SUB
  71.         CASE CHR$(8) 'backspace
  72.           'back up if can
  73.           IF I > 0 THEN
  74.             'adjust buffer
  75.             I = I - 1
  76.             MsgString$ = LEFT$(MsgString$, LEN(MsgString$) - 1)
  77.             'write blank at cursor
  78.             LOCATE 25, StartCol + I, 1
  79.             PRINT " ";
  80.             LOCATE 25, StartCol + I, 1
  81.           END IF
  82.         CASE ELSE 'not one of above special chars
  83.           'display on bottom line
  84.           LOCATE 25, StartCol + I, 1
  85.           PRINT AnyKey$;
  86.           'save character
  87.           I = I + 1
  88.           MsgString$ = MsgString$ + AnyKey$
  89.           'done ?
  90.           IF I >= MaxLength THEN
  91.             VIEW PRINT 1 TO 24
  92.             COLOR LowVideo
  93.             LOCATE Row, Col, 1
  94.             EXIT SUB
  95.           END IF
  96.       END SELECT
  97.     END IF
  98.   LOOP
  99. END SUB
  100.  
  101. '** write onto line 25
  102.  
  103. SUB WriteMsg(MsgString$, BYVAL StartCol)
  104.   Col = POS(0)
  105.   Row = CSRLIN
  106.   VIEW PRINT 25 TO 25
  107.   COLOR HighVideo
  108.   LOCATE 25, StartCol, 1
  109.   PRINT STRING$(40," ");
  110.   LOCATE 25, StartCol, 1
  111.   PRINT MsgString$;
  112.   VIEW PRINT 1 TO 24
  113.   COLOR LowVideo
  114.   LOCATE Row, Col, 1
  115. END SUB
  116.  
  117.