Listing of file='27B*TTY' on disk='vmedia/tbo_81.wvd.zip'
# Sector 18, program filename = '27B*TTY'
0010 REM 27B*TTY 11/04/76 -WITH PRT---2227B TTY EMULATOR---PREPARED BY TYLER O
LSEN, WANG LABS R&D
0020 DIM E$(7)8
: GOTO 530
: REM /SET-UP
0030 DIM C2$(16)16, I$(250)1, B$1,C$1, B$(5)4, S$(6)1
0040 REM % OUTPUT KEYED DATA TO 2227B
0050 $GIO SEND DATA #1(G9$,A$)C$
0060 REM %KEYBOARD/T.C. TEST LOOP
0070 $IF ON /001,320
0080 $GIO READ STATUS #1 (G1$,A$)S$()
0090 IF S$(3)>HEX(00)THEN 280
: REM /ERROR
0100 IF S$(1)>HEX(00)THEN 290
: REM /TEST BREAK
0110 IF S$(4)=HEX(00)THEN 70
: REM / TEST COUNT
0120 $GIO INPUT RCVD DATA #1 (G7$,A$) I$()<I>
0130 A= VAL(STR(A$,10))
0140 IF A+D>64THEN 180
0150 $GIO /005(A000,A$)I$()<I,A>
0160 D=D+A
: GOTO 220
0170 REM DISPLAY OVERRUN
0180 B=65-D
0190 $GIO /005(A000 400D 400A,A$)I$()<I,B>
0200 D=A-B
0210 $GIO /005(A000,A$)I$()<I+B,D>
0220 I=I+A
: A=I-1
0230 IF I$(A)<>HEX(0D)THEN 70
0240 PRINT
0250 ON O GOTO 270
: REM /PRINTER ON FLAG
0260 $GIO/215(A000,A$)I$()<1,A>
0270 INIT(00)I$()
: D,I=1
: GOTO 70
0280 PRINT E$(VAL(S$(3)));
: GOTO 80
: REM /RCV ERROR
0290 PRINT "...BREAK RECEIVED"
: GOTO 70
0300 REM %^******** KEY BOARD LOGIC FOLLOWS
0310 REM I$() INPUT BUFFER IS CLEARED ON KEYBOARD C.R.
0320 SELECT PRINT 005
: KEYIN C$,330,460
0330 ON O GOTO 370
: ON I GOTO 360
0340 $GIO/215(A000,A$)I$()<1,I-1>
: I=1
0350 SELECT PRINT 215
: PRINT "<<K.B. RESPONSE>>";
: SELECT PRINT 005
0360 $GIO/215(A000,A$)C$
0370 IF C$<HEX(20)THEN 410
0380 PRINT C$;
0390 D=D+1
: IF D<65THEN 50
: PRINT
: D=1
: GOTO 50
0400 PRINT
: INIT(00)I$()
: D,I=1
: GOTO 50
0410 ON VAL(C$)-7GOTO 430,380,420,50,50,400
: GOTO 50
: REM /'08'THRU'0D'
0420 PRINT C$;
: GOTO 50
0430 D=D-1
: IF D>0THEN 440
: D=64
: PRINT HEX(0C);
0440 PRINT HEX(082008);
: GOTO 50
0450 REM % SPECIAL FUNCTION PAD
0460 ON VAL(C$)-6GOTO 420,430,380,420,50,50,50,470,490
: GOTO 50
: REM /'07'THRU'0F'
0470 O=-O
: PRINT "PRT ";
: ON OGOTO 480
: PRINT "ON"
: GOTO 70
0480 PRINT "OFF"
: GOTO 70
0490 PRINT "....SEND BREAK"
: $GIO #1(4407,A$)
0500 GOTO 70
0510 REM %^ INITIALIZATION
0520 REM DEFINE $GIO ARGUMENTS TO OPERATE CONTROLLER
0530 G0$=HEX(45804402A000440C)
: REM /SET COM. CTRL VECTOR
0540 G1$=HEX(4403C620)
: REM /READ COM. STAT VECTOR
0560 G3$=HEX(4405A000440C)
: REM /LOAD RX CODE TABLE
0590 G6$=HEX(4408)
: REM /START RECEIVE
0600 G7$=HEX(4409C620)
: REM /INPUT RECEIVED DATA
0620 G9$=HEX(440BA000440C)
: REM /SEND-THEN-RECEIVE DATA
0630 SELECT #1 01C
: REM / SELECT 2227B AS #1
0680 REM % VALUES FOR RCV TRANSLATION
0690 REM VALUE 7F (RUBOUT) CONVERT TO NULL
0700 REM VALUE 0D (RETURN) SET AS TERMINATOR
0710 REM VALUE 11 (X-ON) SET AS TERMINATOR/SHOW AS SPACE
0720 C2$(1),C2$(9) =HEX(00010203040506070809000B0C8D0E0F)
0730 C2$(2),C2$(10)=HEX(10A012131415161718191A1B1C1D1E1F)
0740 C2$(3),C2$(11)=HEX(202122232425262728292A2B2C2D2E2F)
0750 C2$(4),C2$(12)=HEX(303132333435363738393A3B3C3D3E3F)
0760 C2$(5),C2$(13)=HEX(404142434445464748494A4B4C4D4E4F)
0770 C2$(6),C2$(14)=HEX(505152535455565758595A5B5C5D5E5F)
0780 C2$(7),C2$(15)=HEX(606162636465666768696A6B6C6D6E6F)
0790 C2$(8),C2$(16)=HEX(707172737475767778797A7B7C7D7E00)
0800 O=1
: REM /PRINTER FLAG -1=ON +1=OFF
0830 PRINT HEX(03),,"2227B KEYBOARD/TIME SHARE INTERACTION"
0840 PRINT "S.F. '1 = EMULATE TELETYPE 110 BAUD"
0850 PRINT "S.F. '2 = EMULATE TELETYPE 300 BAUD"
0860 PRINT "S.F. '3 = EMULATE TELETYPE 1200 BAUD"
0870 PRINT "S.F. '14 = PRINTER ON/OFF LINE FLAG"
0880 PRINT
: PRINT "RECEIVED ERRORS WILL DISPLAY AS FOLLOWS:"
0882 REM SET CRT REMARK ON RECEIVE ERRORS
0884 E$(1)=HEX(7E)
: REM /PARITY ERROR
0886 E$(7),E$(6),E$(3),E$(2)=".OVERRUN."
: REM /OVERRUN
0888 E$(5),E$(4)=HEX(7F)
: REM /FRAMING ERROR
0890 PRINT " PARITY=";
: PRINT E$(1)
0900 PRINT " OVERRUN=";
: PRINT E$(2)
0910 PRINT " FRAMING=";
: PRINT E$(4)
0920 STOP " KEY DESIRED START-UP"
0925 REM %^ DEFINE EMULATOR
0930 DEFFN'1
: PRINT HEX(03),,"EMULATE TTY 110 BAUD"
0940 B$(1)=HEX(3311217F)
0950 B$(2)=HEX(00010000)
0960 B$(3)=HEX(1C0C0000)
: REM /BREAK SND=200 DET=120
0970 B$(4)=HEX(00000000)
0980 B$(5)=HEX(00000000)
0990 GOSUB 1200
: REM /SHOW PARAMETERS IN USE
1000 C$=HEX(00)
: D,I=1
: PRINT
1010 PRINT "S.F. KEYS MAY BE USED TO SEND CONTROL CODE EQUIVALENTS"
1020 PRINT " E.G. '27=HEX(1B)=ESCAPE"
1030 PRINT " '17=HEX(11)=X-ON"
1040 PRINT " S.F. '14 PUTS OUTPUT ON/OFF LINE PRINTER"
1050 PRINT " S.F. '15 IS PROGRAMMED TO SEND A BREAK SIGNAL."
1060 $GIO RESET #1(4580,A$)
1070 $GIO SET CONTROLS #1 (G0$,A$)B$()
1080 $GIO SET RCV TABLE #1(G3$,A$)C2$()
1090 $GIO START RCV #1 (G6$,A$)
1100 PRINT
: PRINT
: PRINT "KEYBOARD/T.C. NOW ACTIVE"
: GOTO 70
1110 DEFFN'2
: PRINT HEX(03),,"EMULATE TTY 300 BAUD"
1120 B$(1)=HEX(1711217F)
1130 GOTO 950
1140 DEFFN'3
: PRINT HEX(03),,"EMULATE TTY 1200 BAUD"
1150 B$(1)=HEX(1913217F)
1160 GOTO 950
1170 REM %^ PARAMETER DESCRIPTIONS
1180 DIM P2$(16)4,P3$(4),P4$(4),P6$(4)
1190 REM %..BAUD RATE
1200 P2$(1)="50"
: P2$(2)="75"
: P2$(3)="100"
: P2$(4)="110"
1210 P2$(5)="134"
: P2$(6)="150"
: P2$(7)="200"
: P2$(8)="300"
1220 P2$(9)="600"
: P2$(10)="1200"
: P2$(11)="1800"
: P2$(12)="2400"
1230 P2$(13)="3600"
: P2$(14)="4800"
: P2$(15)="7200"
: P2$(16)="9600"
1240 REM %..MODE
1250 P3$(1)="HALF DUPLEX"
: P3$(2)="HALF W/DEL"
: P3$(3)="FULL DUPLEX"
: P3$(4)="FULL W/DEL"
1260 REM %..BREAK HANDLING
1270 P4$(1)="DISABLE"
: P4$(2)="ENABLE T/R"
: P4$(3)="BRK ON 2ND"
: P4$(4)="BRK INVERTED"
1280 REM %..PARITY
1290 P6$(1)="NO"
: P6$(2)="EVEN"
: P6$(3)="NO"
: P6$(4)="ODD"
1300 C$=STR(B$(1),1)
: ROTATE(C$,4)
: AND (C$,0F)
: PRINT ((VAL(C$)+1))/2;" STOP BITS--";
1310 C$=STR(B$(1),1)
: AND (C$,0F)
: PRINT P2$(VAL(C$)+1);" BAUD--";
1320 C$=STR(B$(1),2)
: ROTATE(C$,4)
: AND (C$,0F)
: PRINT P3$(VAL(C$)+1);" MODE--";
1330 C$=STR(B$(1),2)
: AND (C$,0F)
: PRINT P4$(VAL(C$)+1);" BREAK--"
1340 C$=STR(B$(1),3)
: ROTATE(C$,4)
: AND (C$,0F)
: PRINT VAL(C$)+5;" DATA BITS--";
1350 C$=STR(B$(1),3)
: AND (C$,0F)
: PRINT P6$(VAL(C$)+1);" PARITY";
1360 RETURN
1370 REM % DESCRIPTION OF 2227B TELETYPE EMULATOR
1380 REM PROGRAM REQUIRES WANG SYSTEM WITH OPTION 2 I/O ROM.
1390 REM LOWER KEYBOARD TRANSMITS ASCII CHARACTERS.
1400 REM S.F. PAD TRANSMITS HEX EQUIVALENTS E.G. CONTROL CODES.
1410 REM EXCEPTIONS--
1420 REM S.F. '12 RESERVED FOR SENDING A DISK DATA FILE.
1430 REM ...DISK FILE TRANSMISSION IS KEYBOARD SUBSTITUTE.
1440 REM S.F. '13 RESERVED FOR RECVING A DISK DATA FILE.
1450 REM ...LINES RECEIVED WITHOUT C.R. ARE NOT SAVED ON DISK.
1460 REM ...KEYBOARD RESPONSE IS NOT SAVED ON DISK.
1470 REM S.F. '14 IS PRINTER ON/OFF FLAG.
1480 REM ...THIS ALLOWS CAPTURE OF DATA ON-LINE.
1490 REM ...PRINTER LOGS ALL DATA RECEIVED.
1500 REM ...KEYBOARD RESPONSE IS SEPARATED ON THE LISTING.
1510 REM S.F. '15 TRANSMITS A BREAK INDICATION.