Apsuvax.1031 net.micro utcsrgv!utzoo!decvax!ucbvax!ihnss!mhtsa!allegra!psuvax!mansfiel Thu Mar 11 16:08:56 1982 Basic terminal program 11 march 1982 I have a BASIC program which operates my TRS-80 as a full duplex terminal at 300 Bd. The idea is contained in this trivial program. 10 OUT 232,0: OUT 233,85: OUT 234,165; PRINT CHR$(14) 20 ON ERROR GOTO 30 30 RESUME 40 40 IF INP(234) AND 128 PRINT CHR$(INP(235)); 50 IF INP(234) AND 64 OUT 235,ASC(INKEY$) 60 GOTO 40 The first line sets 300 Bd. even parity ASCII with one stop bit and seven data bits. This program and an RS232 board makes a model I or III TRS-80 into a reliable full duplex terminal. Owing to the eccentricities of the keyboard, however, it has some deficiencies. e.g. can't send BREAK or DEL, the shift key is needed for lower case, etc., etc. My solution is to vector both in and out. I initialize vectors A and V and change INP(235) to V(INP(235)) and change ASC(INKEY$) to A(ASC(INKEY$)). Line 55 would make shift @ into BREAK. However UNIX doesn't need BREAK so I decided to save the key. Here is the program. 10 GOTO 65 30 RESUME 40 40 IF INP(234) AND 128 PRINT CHR$(V(INP(235))); 50 IF INP(234) AND 64 OUT 235,A(ASC(INKEY$)) 55 REM IF PEEK(14337) AND PEEK(14464) OUT 234,161: FOR I=1 TO 250: NEXT I: OUT 234,165 60 GOTO 40 65 DEFINT A-Z 70 OUT 232,0: OUT 233,85: OUT 234,165: PRINT CHR$(14) 80 DIM A(127),V(127) 90 FOR I=1 TO 23: V(I)=0: NEXT I 100 V(8)=8: V(13)=13 110 FOR I=24 TO 127: V(I)=I: NEXT I 120 V(94)=141: V(124)=91: V(123)=174: V(125)=157: V(91)=183: V(93)=187: V(96)=130 130 FOR I=0 TO 127: a(I)=I: NEXT I 140 A(26)=0 150 FOR I=65 TO 90: A(I)=I+32: NEXT I 160 FOR I=97 TO 122: A(I)=I-32: NEXT I 170 A(2)=26: A(24)=127: A(25)=94: A(91)=124: A(10)=92: A(9)=126 180 ON ERROR GOTO 30 200 GOTO 40 I have used control B to mean control Z, right arrow to mean ~, up arrow to mean |, down arrow to mean \, shift left arrow to mean DEL, and with ASCII codes 1,2,9,10,24,25,28,29,30,and the characters [,],{, } not capable of being sent. As the FORTRAN language does not use these symbols, they will not be missed. Several incoming characters are represented by graphics codes and several incoming control signals are NULLed. The TERMCAP entry should be trs|am:bs:cd=^/:ce=^.:ho=^,:do=^Z:nd=^Y:up=\33:li#16:co#64 Richard Mansfield 1000 W. Beaver Ave. State College, Pa. 16801 ----------------------------------------------------------------- gopher://quux.org/ conversion by John Goerzen of http://communication.ucsd.edu/A-News/ This Usenet Oldnews Archive article may be copied and distributed freely, provided: 1. There is no money collected for the text(s) of the articles. 2. The following notice remains appended to each copy: The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996 Bruce Jones, Henry Spencer, David Wiseman.