Listing of file='27B*HOOK' on disk='vmedia/tbo_81.wvd.zip'
# Sector 699, program filename = '27B*HOOK' 0010 REM 27B*HOOK 08/05/77 ---2228/27B HOOK IN TEST---PREPARED BY TYLER OLSEN , WANG LABS R&D 0020 DIM I1$64,I1$(50)64,E$(7)8 : GOTO 520 : REM /SET-UP 0030 DIM C1$(16)16,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,310 0080 $GIO READ STATUS #1 (G1$,A$)S$() 0090 IF S$(3)>HEX(00)THEN 270 : REM /ERROR 0100 IF S$(1)>HEX(00)THEN 280 : 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> : REM ..ERR 98 DENOTES BUFFER OVERFLOW KEY S.F. '10 FOR ANALYSIS 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 C$=I$(A) : AND (C$,7F) : IF C$<>HEX(0D)THEN 70 0240 PRINT 0250 MAT COPY I$()<1,I>TO I1$()<I1,I> : I1=I1+I 0260 INIT(00)I$() : D,I=1 : GOTO 70 0270 PRINT E$(VAL(S$(3))); : GOTO 80 : REM /RCV ERROR 0280 PRINT "...BREAK RECEIVED" : GOTO 70 0290 REM %^******** KEY BOARD LOGIC FOLLOWS 0300 REM I$() INPUT BUFFER IS CLEARED ON KEYBOARD C.R. 0310 SELECT PRINT 005 : KEYIN C$,320,450 0320 ON O GOTO 360 : ON I GOTO 350 0330 $GIO/215(A000,A$)I$()<1,I-1> : I=1 0340 SELECT PRINT 215 : PRINT "<<K.B. RESPONSE>>"; : SELECT PRINT 005 0350 $GIO/215(A000,A$)C$ 0360 IF C$<HEX(20)THEN 400 0370 PRINT C$; 0380 D=D+1 : IF D<65THEN 50 : PRINT : D=1 : GOTO 50 0385 IF I=1THEN 390 : MAT COPY I$()<1,I>TO I1$()<I1,I> : I1=I1+I 0390 PRINT : INIT(00)I$() : D,I=1 : GOTO 50 0400 ON VAL(C$)-7GOTO 420,370,410,50,50,385 : GOTO 50 : REM /'08'THRU'0D' 0410 PRINT C$; : GOTO 50 0420 D=D-1 : IF D>0THEN 430 : D=64 : PRINT HEX(0C); 0430 PRINT HEX(082008); : GOTO 50 0440 REM % SPECIAL FUNCTION PAD 0450 ON VAL(C$)-6GOTO 410,420,370,410,50,50,50,460,480 : GOTO 50 : REM /'07'THRU'0F' 0460 O=-O : PRINT "PRT "; : ON OGOTO 470 : PRINT "ON" : GOTO 70 0470 PRINT "OFF" : GOTO 70 0480 PRINT "....SEND BREAK" : $GIO #1(4407,A$) 0490 GOTO 70 0500 REM %^ INITIALIZATION 0510 REM DEFINE $GIO ARGUMENTS TO OPERATE CONTROLLER 0520 G0$=HEX(4402A000440C) : REM /SET COM. CTRL VECTOR 0530 G1$=HEX(4403C620) : REM /READ COM. STAT VECTOR 0540 G4$=HEX(4404A000440C) : REM /LOAD TX CODE TABLE 0550 G3$=HEX(4405A000440C) : REM /LOAD RX CODE TABLE 0560 G6$=HEX(4408) : REM /START RECEIVE 0570 G7$=HEX(4409C620) : REM /INPUT RECEIVED DATA 0580 G8$=HEX(440AA000440C) : REM /SEND DATA 0590 G9$=HEX(440BA000440C) : REM /SEND-THEN-RECEIVE DATA 0600 SELECT #1 01C : REM / SELECT 2227B AS #1 0610 PRINT HEX(03),,"2227B KEYBOARD/TIME SHARE INTERACTION" 0620 PRINT " THIS PROGRAM IS WRITTEN TO AID IN HOOKIN TO AN UNKNOWN SYSTEM" 0630 PRINT "S.F. '1 = EMULATE TELETYPE 110 BAUD" 0640 PRINT "S.F. '2 = EMULATE TELETYPE 300 BAUD" 0650 PRINT "S.F. '3 = EMULATE TELETYPE 1200 BAUD" 0660 PRINT "S.F. '10 = AFTER CONNECTION TO DETERMINE DATA PATTERN" 0670 PRINT : PRINT "RECEIVED ERRORS WILL DISPLAY AS FOLLOWS:" 0680 REM SET CRT REMARK ON RECEIVE ERRORS 0690 E$(1)="<PAR>" : REM /PARITY ERROR 0700 E$(7),E$(6),E$(3),E$(2)=".OVERRUN." : REM /OVERRUN 0710 E$(5),E$(4)="<FRM>" : REM /FRAMING ERROR 0720 PRINT " PARITY="; : PRINT E$(1) 0730 PRINT " OVERRUN="; : PRINT E$(2) 0740 PRINT " FRAMING="; : PRINT E$(4) 0750 STOP " KEY DESIRED START-UP" 0760 REM %^ DEFINE EMULATOR 0770 DEFFN'1 : REM /110 BAUD 0780 B$(1)=HEX(3321307F) 0790 B$(2)=HEX(00000000) 0800 B$(3)=HEX(1C0C0000) : REM /BREAK SND=200 DET=120 0810 B$(4)=HEX(00000000) 0820 B$(5)=HEX(00000000) 0825 PRINT HEX(03),,"EMULATE TELETYPE" 0830 GOSUB 1070 : REM /SHOW PARAMETERS IN USE 0840 C$=HEX(00) : O,D,I=1 : PRINT 0850 PRINT "S.F. KEYS MAY BE USED TO SEND CONTROL CODE EQUIVALENTS" 0860 PRINT " E.G. '27=HEX(1B)=ESCAPE" 0870 PRINT " '17=HEX(11)=X-ON" 0880 PRINT " S.F. '14 PUTS OUTPUT ON/OFF LINE PRINTER" 0890 PRINT " S.F. '15 IS PROGRAMMED TO SEND A BREAK SIGNAL." 0900 ON Z9GOTO 910 : $GIO RESET #1(4580,A$) 0910 $GIO SET CONTROLS #1 (G0$,A$)B$() 0920 I1=0 : INPUT "KEY 0 FOR NO 1 FOR EVEN 2 FOR ODD PARITY",I1 0930 ON I1GOTO 1260,1380 0940 I1=1 : INIT(20)I1$() 0950 $GIO START RCV #1 (G6$,A$) 0960 PRINT : PRINT : PRINT "KEYBOARD/T.C. NOW ACTIVE" : GOTO 70 0970 DEFFN'2 : REM /300 BAUD 0980 B$(1)=HEX(1721307F) 0990 GOTO 790 1000 DEFFN'3 : REM /1200 BAUD 1010 B$(1)=HEX(1913307F) 1020 GOTO 790 1030 REM %^ PARAMETER DESCRIPTIONS 1040 DEFFN'15 : PRINT : HEXPRINT B$() 1050 DIM P2$(16)4,P3$(4),P4$(4),P6$(4) 1060 REM %..BAUD RATE 1070 P2$(1)="50" : P2$(2)="75" : P2$(3)="100" : P2$(4)="110" 1080 P2$(5)="134" : P2$(6)="150" : P2$(7)="200" : P2$(8)="300" 1090 P2$(9)="600" : P2$(10)="1200" : P2$(11)="1800" : P2$(12)="2400" 1100 P2$(13)="3600" : P2$(14)="4800" : P2$(15)="7200" : P2$(16)="9600" 1110 REM %..MODE 1120 P3$(1)="HALF DUPLEX" : P3$(2)="HALF W/DEL" : P3$(3)="FULL DUPLEX" : P3$(4)="FULL W/DEL" 1130 REM %..BREAK HANDLING 1140 P4$(1)="DISABLE" : P4$(2)="ENABLE T/R" : P4$(3)="BRK ON 2ND" : P4$(4)="BRK INVERTED" 1150 REM %..PARITY 1160 P6$(1)="NO" : P6$(2)="EVEN" : P6$(3)="NO" : P6$(4)="ODD" 1170 C$=STR(B$(1),1) : ROTATE(C$,4) : AND (C$,0F) : PRINT ((VAL(C$)+1))/2;" STOP BITS--"; 1180 C$=STR(B$(1),1) : AND (C$,0F) : PRINT P2$(VAL(C$)+1);" BAUD--"; 1190 C$=STR(B$(1),2) : ROTATE(C$,4) : AND (C$,0F) : PRINT P3$(VAL(C$)+1);" MODE--"; 1200 C$=STR(B$(1),2) : AND (C$,0F) : PRINT P4$(VAL(C$)+1);" BREAK--" 1210 C$=STR(B$(1),3) : ROTATE(C$,4) : AND (C$,0F) : PRINT VAL(C$)+5;" DATA BITS--"; 1220 C$=STR(B$(1),3) : AND (C$,0F) : PRINT P6$(VAL(C$)+1);" PARITY"; 1230 RETURN 1240 REM %^VALUES FOR SEND TRANSLATION 1250 REM TABLE WITH EVEN PARITY 1260 C1$(1),C1$(9) =HEX(008182038405068788090A8B0C8D8E0F) 1270 C1$(2),C1$(10)=HEX(901112931495961798999A1B9C1D1E9F) 1280 C1$(3),C1$(11)=HEX(A02122A324A5A62728A9AA2BAC2D2EAF) 1290 C1$(4),C1$(12)=HEX(30B1B233B43536B7B8393ABB3CBDBE3F) 1300 C1$(5),C1$(13)=HEX(C04142C344C5C64748C9CA4BCC4D4ECF) 1310 C1$(6),C1$(14)=HEX(50D1D253D45556D7D8595ADB5CDDDE5F) 1320 C1$(7),C1$(15)=HEX(60E1E263E46566E7E8696AEB6CEDEE6F) 1330 C1$(8),C1$(16)=HEX(F07172F374F5F67778F9FA7BFC7D7EFF) 1340 GOTO 1460 1350 REM ...............^.....^...^.^.....^.^...^.....^. 1360 REM .................^.^...^.....^.^.....^...^.^... 1370 REM TABLE WITH ODD PARITY 1380 C1$(1),C1$(9) =HEX(800102830485860708898A0B8C0D0E8F) 1390 C1$(2),C1$(10)=HEX(109192139415169798191A9B1C9D9E1F) 1400 C1$(3),C1$(11)=HEX(20A1A223A42526A7A8292AAB2CADAE2F) 1410 C1$(4),C1$(12)=HEX(B03132B334B5B63738B9BA3BBC3D3EBF) 1420 C1$(5),C1$(13)=HEX(40C1C243C44546C7C8494ACB4CCDCE4F) 1430 C1$(6),C1$(14)=HEX(D05152D354D5D65758D9DA5BDC5D5EDF) 1440 C1$(7),C1$(15)=HEX(E06162E364E5E66768E9EA6BEC6D6EEF) 1450 C1$(8),C1$(16)=HEX(70F1F273F47576F7F8797AFB7CFDFE7F) 1460 $GIO SET SEND TABLE #1(G4$,A$)C1$() 1470 GOTO 940 1480 REM %^ANALYZE RESULTS 1490 REM PROGRAM IS SET TO ALWAYS RECEIVE 8 DATA BITS+1 STOP 1500 REM USER SELECTS TRANSMISSION 7+EVEN 7+ODD 7+NO 1510 DEFFN'10 : SELECT PRINT 005 : PRINT HEX(03);"ANALYZE RECEIVED DATA" 1520 IF I1>0THEN 1530 : STOP "NO DATA TO ANALYZE" 1530 IF I1+I<250 THEN 1540 : I=1 : IF I1>250THEN 1540 : I=250-I1 1540 MAT COPY I$()<1,I>TO I1$()<I1,I> : I=1 1550 D=0 : INPUT "KEY 1 FOR HARD COPY",D : IF D=0THEN 1560 : SELECT PRINT 215 : INPUT "COMMENT",I1$ : PRINT HEX(0C0E);"HOOK IN TEST" : PRINT I1$ 1560 I1$=I1$(1) : GOSUB 1570 : GOTO 1680 1570 PRINT "RECEIVED DATA PATTERN IS--"; 1580 A=POS(STR(I1$,1,LEN(I1$))>7F) : IF A=0 THEN 1650 1590 A=POS(STR(I1$,1,LEN(I1$))<80) : IF A=0 THEN 1670 1600 PRINT "7 DATA BITS +PARITY="; : REM /..SOME 80 BITS ON 1610 C$=STR(I1$,LEN(I1$),1) : A=0 : FOR Z=1TO 8 : IF C$<HEX(7F)THEN 1620 : A=A+1 1620 ROTATE(C$,1) : NEXT Z : BIN(C$)=A : AND (C$,01) 1630 IF C$=HEX(01)THEN 1640 : PRINT "EVEN" : RETURN 1640 PRINT "ODD" : RETURN 1650 PRINT "8 DATA BITS +NO PARITY" : RETURN : REM /.NO 80 BITS ON 1660 RETURN 1670 PRINT "7 DATA BITS +STRAPPED 80 BIT" : RETURN 1680 I1$=I1$(I) : PRINT : PRINT "<<<RECEIVED DATA FOR BLOCK ";I : PRINT I1$ 1690 AND (I1$,7F) : PRINT : PRINT "CODES WITH VALUES 00-1F OR 7F" : A=0 1700 FOR A=1 TO LEN(I1$) : C$=STR(I1$,A,1) 1710 IF C$<" "THEN 1720 : IF C$<>HEX(7F)THEN 1730 1720 HEXPRINT C$; : PRINT " "; 1730 NEXT A : PRINT ">>>" 1735 PRINT "DISPLAY IN HEX" : HEXPRINT STR(I1$(I),1,LEN(I1$(I))) 1740 IF I1$(I+1)<>" "THEN 1750 : SELECT PRINT 005 : END 1750 IF D=1THEN 1760 : INPUT "KEY EXEC FOR MORE DATA",I 1760 PRINT : PRINT : PRINT HEX(03) : I=I+1 : GOTO 1680 1800 DEFFN'11 : PRINT "DISPLAY IN HEX" : HEXPRINT STR(I1$(I),1,LEN(I1$(I))) 1810 HEXPRINT STR(I1$,1,LEN(I1$)) : PRINT I1$ : RETURN