home *** CD-ROM | disk | FTP | other *** search
/ Collection of Education / collectionofeducationcarat1997.iso / SCIENCE / H_PROG12.ZIP / TERMINAL.BAS < prev   
BASIC Source File  |  1995-03-09  |  3KB  |  89 lines

  1. 'Modified from an Microsoft public domain example file
  2. 'by Ian Musgrave for the purpose of testing the Hitachi F-2000
  3.  
  4.  
  5.  
  6. DEFINT A-Z
  7.  
  8. DECLARE SUB Filter (InString$)
  9.  
  10. COLOR 7, 1                      ' Set screen color.
  11. CLS
  12.  
  13. Quit$ = CHR$(0) + CHR$(16)      ' Value returned by INKEY$
  14.                                 ' when ALT+q is pressed.
  15.  
  16. ' Set up prompt on bottom line of screen and turn cursor on:
  17. LOCATE 24, 1, 1
  18. PRINT STRING$(80, "_");
  19. LOCATE 25, 1
  20. PRINT TAB(30); "Press ALT+q to quit";
  21.  
  22. VIEW PRINT 1 TO 23              ' Print between lines 1 & 23.
  23.  
  24. ' Open communications (4800 baud, no parity, 8-bit data,
  25. ' 1 stop bit, Carrier Detect time out after 400 milliseconds
  26. ' 256-byte input buffer):
  27. ' Please alter as appropriate for your system.
  28.  
  29.  
  30. OPEN "COM1:4800,N,8,1,cs,ds,CD400" FOR RANDOM AS #1 LEN = 256
  31. OPEN "data.txt" FOR OUTPUT AS #2
  32. DO                              ' Main communications loop.
  33.  
  34.    KeyInput$ = INKEY$           ' Check the keyboard.
  35.  
  36.    IF KeyInput$ = Quit$ THEN    ' Exit the loop if the user
  37.       EXIT DO                   ' pressed ALT+q.
  38.  
  39.    ELSEIF KeyInput$ <> "" THEN  ' Otherwise, if the user has
  40.       PRINT #1, KeyInput$;      ' pressed a key, send the
  41.       PRINT KeyInput$;
  42.    END IF                       ' character typed to the modem.
  43.  
  44.    ' Check the modem. If characters are waiting (EOF(1) is
  45.    ' true), get them and print them to the screen:
  46.   
  47.    IF NOT EOF(1) THEN
  48.  
  49.       ' LOC(1) gives the number of characters waiting:
  50.       ModemInput$ = INPUT$(LOC(1), #1)
  51.  
  52.       Filter ModemInput$        ' Filter out line feeds and
  53.       PRINT #2, ModemInput$;        ' backspaces, then print.
  54.       PRINT ModemInput$;
  55.      END IF
  56.  
  57. LOOP
  58.  
  59. CLOSE                           ' End communications.
  60. CLS
  61. END
  62.  
  63. '
  64. ' ========================= FILTER ==========================
  65. '     Filters characters in an input string.
  66. ' ============================================================
  67. '
  68. SUB Filter (InString$) STATIC
  69.  
  70.    ' Look for backspace characters and recode them to
  71.    ' CHR$(29) (the LEFT cursor key):
  72.    DO
  73.       BackSpace = INSTR(InString$, CHR$(8))
  74.       IF BackSpace THEN
  75.          MID$(InString$, BackSpace) = CHR$(29)
  76.       END IF
  77.    LOOP WHILE BackSpace
  78.  
  79.    ' Look for line-feed characters and remove any found:
  80.    DO
  81.       LineFeed = INSTR(InString$, CHR$(10))
  82.       IF LineFeed THEN
  83.          InString$ = LEFT$(InString$, LineFeed - 1) + MID$(InString$, LineFeed + 1)
  84.       END IF
  85.    LOOP WHILE LineFeed
  86.  
  87. END SUB
  88.  
  89.