=====Simple Terminal Program=====
//by Colin McDonagh, April 2007//\\ \\ In my work, I often need to communicate with older pieces of equipment via **RS232** cables. Of course there are many such applications available, but it's quite easy in BBC BASIC. First we set up the com port we want to use, in this case com1.\\
REM a simple terminal program.
Port% = OPENUP "COM1: baud=9600 parity=N data=8 stop=1"
REM Port% is a global variable
IF Port% = 0 PRINT "Could not open COM1" : END
PRINT "We are using port number: ", Port% : REM Prints the port number 1 to 4.
DIM commtimeouts{rit%, rttm%, rttc%, wttm%, wttc%}
SYS "SetCommTimeouts", @hfile%(Port%), commtimeouts{}
If the com port is being used by another application, you will get **//"Could not open COM1"//**. The main body of the program is an infinite loop.\\
REM chars% This is the number of characters.
REPEAT
REM get the number of characters.
chars% = EXT#Port%
**chars%** is the number characters waiting to be read. If there are no characters in the serial buffer, the keyboard is read with **INKEY**.\\
REM Number of characters waiting in the serial input buffer, for a read action.
IF chars%=0 THEN
k% = INKEY(1)
ELSE
PROCSendToVDU(chars%)
k% = INKEY(0)
ENDIF
If **k% = -1** nothing was entered on the keyboard.\\
REM If a character has been entered via keyboard, send it to serial output buffer
IF k%>-1 THEN BPUT#Port%,k%
UNTIL FALSE
END
Otherwise the number of characters, is passed as a parameter to **PROCSendToVDU**\\
DEF PROCSendToVDU(chrs%)
LOCAL index%, Data%
IF chrs% > 0 THEN
REM Get each character in turn and send to the VDU
FOR index% = 1 TO chrs%
Data% = BGET#Port%
VDU Data%
NEXT index%
ENDIF
ENDPROC