Listing of file='UTB.LIST' on disk='vmedia/toolbox.wvd.zip'
# Sector 161, program filename = 'UTB.LIST'
0010 REM UTB.LIST 06/01/82 OFF LINE LIST OF SPOOLED T.C. FILES
0020 COM F$8,F1$8, V$(12,2)50,H
0030 IF D1$(10)=" "THEN LOAD T#0,"TBODISKS"8000,8800 BEG 40
0040 SELECT #4 005, #5 215
0050 M=1
0060 DIM A$(4)62,B$(1)1, O$(140)1, M$(1)2, B$1, C$1,D9$3,D5$20
0070 H$=HEX(020402000E)
: REM /.Highlight
0080 DIM S$20
: REM /VERTICAL SKIP PARAMETERS
0090 DIM C$(1)24
: REM /CONTROL VALUES
0100 GOTO 910
: REM /GOTO SETUP
0110 REM %VARIABLE MEANINGS
0120 REM %0 A$( READ BLOCK AREA, B$ B$1, B$( ONE BYTE
0130 REM %0 C$( CONTROL VALUES, C9 #CONTROL VALUES
0140 REM %0 O$( OUTPUT AREA, F$ FILE NAME
0150 REM %0 M$( MATCH ARRAY
0160 REM %0 A FIRST REC PTR, D9 DEVICE FLAG
0170 REM %0 Y1 COUNT, Y2 NB BYTES IN BLK, Y3 PTR IN BLK
0180 REM %0 D CURRENT LINE, E LINES PER PAGE
0190 REM %0 S$ VERTICAL SKIP, T$( VERTICAL TAB
0200 REM %0 V$( VCT TABLE, Z$ PRT.ARG2
0210 REM % SPECIAL FUNCTIONS
0220 REM %0 '3 DISPLAY VCT
0230 REM %^.Mainline
0240 KEYIN B$,260,260
0250 RETURN
0260 KEYIN B$,250,270
: GOTO 260
0270 IF B$>HEX(03)THEN RETURN
: IF B$=HEX(00)THEN RETURN
: M=VAL(B$)
: PRINT "Now mode = ";M
: RETURN CLEAR
: GOTO 300
0280 REM %. READ/PRINT LOOP
0290 DATA LOAD DC #1, A$()
: REM ^ERR 58 SAYS WRONG FORMAT
0300 Y2=VAL(STR(A$(1),2))
0310 Y3=3
0320 MAT COPY A$()<Y3,1> TO B$()<1,1>
: Y1=VAL(B$(1))
: REM /.Count
0330 ON M GOSUB 410,380,390
: GOSUB 240
0340 Y3=Y3+Y1+1
: IF Y3<>Y2 THEN 320
0350 IF STR(A$(1),1,1)<>HEX(F0)THEN 290
0360 RETURN
0370 REM %.List w/o Controls
0380 PRINT STR(A$(),Y3+1,Y1)
: RETURN
0390 PRINT "<<Record in Hex notation from file = ";F$;" >>"
: PRINT HEXOF(STR(A$(),Y3+1,Y1))
: PRINT
: RETURN
0400 REM %.List with line control
0410 Y1=Y1-1
: REM /.Count
0420 MAT COPY A$()<Y3+1,1>TO B$()<1,1>
: REM /.Isolate line control
0430 B$=B$(1)
: REM /Vertical line control
0440 PRINT "<<Line control >> = ";B$;
0445 IF B$<"/"OR B$>"M"THEN PRINT " = x'";HEXOF(B$);"' is invalid";
: PRINT
0450 MAT COPY A$()<Y3+2,Y1>TO O$()<1,Y1>
: REM /.Copy data
0460 IF O$(1)<>HEX(0C)THEN 470
: PRINT "<<<NEW PAGE>>>"
: PRINT
0470 SELECT PRINT 005(L)
: PRINT STR(O$(),1,Y1+1)
0480 IF H=1 THEN 640
: REM /.Jump if CRT output only
0490 MAT SEARCH C$()<1,C9>,=B$ TO M$()
: REM /Find TAB value
0500 B=VAL(STR(M$(1),2))
: REM /POSITION OF FOUND VERTICAL TAB
0510 ON B GOTO 580,580,580,580,580,580,580,580,580,580,580
0520 REM ........../...0...1...2...3...4...5...6...7...8...9
0530 ON B-11 GOTO 630,660,660,660,660,660,660,660,660,660,660,660
0540 REM ..........A...B...C...D...E...F...G...H...I...J...K...L
0550 IF B$="@"THEN 790
: REM /VERTICAL FORMAT CONTROL RECORD
0560 STOP "NO LINE CONTROL IN RECORD"
0570 REM %^SKIP LINES PRINT LOGIC
: REM CONTROL= /.123456789
0580 $GIO#5(A000,Z$)O$()<1,Y1>
0590 I=VAL(STR(S$,B,1))
: IF I=0 THEN 640
0600 IF I+D>ETHEN 630
0610 $GIO#5(400D,Z$)
: D=D+I
: IF I=1 THEN 640
0620 FOR B=2 TO I
: $GIO#5(400A,Z$)
: NEXT B
: GOTO 640
0630 $GIO#5(A000400D400C,Z$)O$()<1,Y1>
: D=1
0640 Y1=Y1+1
: RETURN
0650 REM % SKIP CHANNEL PRINT LOGIC
: REM CONTROL= ABCDEFGHIJKL
0660 $GIO#5(A000,Z$)O$()<1,Y1>
0670 REM B$ = CONTROL BYTE
0680 I=VAL(B$)-64
: B=100*I-99
0690 MAT SEARCH V$()<B+D,100-D >, =B$ TO M$()
0700 I=VAL(STR(M$(1),2))+D
0710 IF I<D THEN 730
: I=I-D
0720 GOTO 600
0730 PRINT "PRINTER IS AT OR PAST THIS POINT"
: GOTO 600
0740 REM %^ FORMS CONTROL FROM DATA RECORD
0750 REM BYTE 1 OF RECORD WILL CONTAIN @ AT SYMBOL
0760 REM %0 I PRINT LINE, C$ TAB VALUE
0770 REM Position of non-spaces denotes vertical tab control.
0780 REM Vertical tab values--ABCDEFGHIJKL
0790 B$=" "
: I=1
: INIT(".")V$()
: REM /CLEAR VCT ARRAY
0800 $GIO/005(A000,Z$)O$()<1,64>
: PRINT
0810 MAT SEARCH O$()<I+1,Y1-I>,<>B$TO M$()
: REM /FIND NON SPACE
0820 B=VAL(STR(M$(1),2))
: IF B=0THEN 640
: REM /B IS REL LINE
0830 I=I+B
: C$=O$(I)
0840 B=VAL(C$)-64
0850 C=I
: A=1
: IF I<51THEN 860
: C=I-50
: A=2
: IF C>50THEN 880
0860 IF B<1THEN 890
: IF B>12THEN 870
: STR(V$(B,A),C,1)=C$
: GOTO 810
0870 IF C$<>"M"THEN 890
: E=I
: GOTO 810
0880 PRINT "ILLEGAL LINE=";I
: STOP "700"
0890 PRINT
: PRINT "ILLEGAL TAB VALUE=";
: HEXPRINT C$
: STOP "710"
0900 REM %^ INITIALIZATION
0910 SELECT PRINT 005
: PRINT HEX(03);H$,"LIST the stored telecommunications data files";HEX(0F)
0920 REM .?1
0930 A$="LIST FROM disk ="
: PRINT AT(3,0,20*80);A$
: GOSUB '98
: SELECT #1<D1$(D9)>
0940 PRINT AT(1,0,80);A$;" ";D9$
0950 REM .?2
0960 A$="OUTPUT TO ="
: PRINT AT(3,0,20*80);A$;" 1=CRT 2=Printer"
: C$="1"
: IF H=0THEN C$="2"
0965 LINPUT -C$
: D4$="CRT"
: H=1
: IF C$="1"THEN 970
: D4$="Printer"
: H=0
0970 PRINT AT(1,40);A$;" ";D4$
: IF H=1THEN 1020
0980 A$="PRINTER ="
: PRINT AT(3,0,20*80);
: A=0
: RESTORE LINE2050
0985 READ P1$
: IF P1$=" "THEN 990
: A=A+1
: PRINT A;" for ";P1$
: GOTO 985
0990 LINPUT C$
: CONVERT C$TO C
: ERRORGOTO 980
0992 IF C<1THEN 980
: IF C>ATHEN 980
: RESTORE LINE 2050,C
: READ P1$
: GOSUB 2000
: IF P2$=" "THEN 980
0995 PRINT AT(6,0)
: PRINT H$;"READY LINE PRINTER ";P1$;HEX(0F)
0998 STOP #
1000 $GIO TOP OF FORM #5(400D 400C)
1010 REM .?3
1020 A$="DATA FILE NAME ="
: PRINT AT(3,0,20*80);A$
1030 F$=F1$
: LINPUT -F$
: F1$=F$
: D=1
1040 PRINT AT(2,0,80);A$;" ";F$
1050 REM .?4
1060 A$="OUTPUT MODE ="
: PRINT AT(3,0,20*80);A$
1070 M=1
: INPUT "MODE 1=With line control 2=w/o line control 3=hex notation "M
1080 M=INT(M)
: IF M<1OR M>3THEN 1060
: RESTORE LINE1080,M
1090 READ D5$
: DATA "With line control","w/o line control","hex notation"
1100 PRINT AT(2,40);A$;M;"=";D5$
: PRINT AT(3,0,20*80)
1110 PRINT
: PRINT H$,"<<<<<< TRYING TO READ FILE = ";F$;" >>>>>>";HEX(0F)
1120 E=66
: REM /LINES PER PAGE
1130 DATA LOAD DC OPEN T #1,F$
: REM .ERR 80 NO SUCH FILE
1140 A=0
1150 REM VERTICAL SKIP PARAMETERS
1160 C$(1)="/0123456789ABCDEFGHIJKL@"
1170 C9=LEN(C$(1))
: REM /NUMBER OF CONTROL VALUES
1180 REM S$ NUMBER OF SKIP LINES
1190 S$=HEX(0000010203040506070809)
1200 REM ..../.0.1.2.3.4.5.6.7.8.9
1210 REM VCT TABLE IS 100 ITEMS (LINES) LONG
1220 REM EACH ITEM = CHANNELS PUNCHED AT LINE POSITION
1230 GOSUB 290
1240 F9$=F$
1250 IF NUM(STR(F$,7,2))=2 THEN 1260
: GOTO 1420
1260 ADD(STR(F$,8,1),01)
: IF STR(F$,8,1)<HEX(3A)THEN 1110
1270 STR(F$,8,1)="0"
: ADD(STR(F$,7,1),01)
: GOTO 1110
1280 REM %^DISPLAY VIRTUAL CARRIAGE TAPE
1290 %# ! # ! # ! # ! # ! ## PRINT LINE 1---!---
-0----!----0----!----0----!----0----!----0 CHANNEL
1300 DEFFN'4
: PRINT HEX(03);" CARRIAGE TAPE =";M$
1310 PRINTUSING 1290,0,1,2,3,4,"5"
1320 FOR A=1 TO 12
: PRINT STR(V$(A,1),1,50);" ";A
: NEXT A
1330 INPUT "KEY CONTINUE FOR MORE",A
1340 PRINTUSING 1290,5,6,7,8,9,10
1350 FOR A=1 TO 12
: PRINT STR(V$(A,2),1,50);" ";A
: NEXT A
1360 RETURN
1370 REM %0 A A, B B, C C, A$ A$64, B$ B$1, C$ C$1
1380 ON ERROR E$,L$GOTO 1390
1390 IF E$="D82"THEN 1400
: PRINT "ERR ";E$;" LINE = ";L$;" NOT TRAPPED"
: END
1400 F$=F9$
: PRINT "LAST FILE PROCESSED = ";F$
1410 PRINT "NO MORE FILES SEQUENTIALLY STORED"
1420 STOP "KEY '0 TO EXIT OR RUN (EXEC) TO RERUN JOB"
1430 DEFFN'0
: LOAD DC T#0,"START"
2000 P2$=STR(P1$,1,3)
: P4$=STR(P1$,5,5)
: P5$=STR(P1$,11,2)
2010 SELECT #5<P2$>
: $IF OFF #5,2045
: ERRORRETURN
2020 $OPEN #5
: $IF OFF #5,2045
2040 IF P4$="2281"THEN GOSUB 2130
: IF P4$="2235"THEN GOSUB 2230
: RETURN
2045 P2$=" "
: RETURN
2050 DATA "215.2221..11","204.2281..11","216.2231..11"," "
2130 F$=HEX(0D0C020D0C030F)
: CONVERT STR(P5$,1,3)TO A
: IF A=11 THEN 2140
: F$=HEX(020C010200000F)
: STR(F$,5,2)=BIN(A*48,2)
2140 $GIO#5(010302801212A000,Z$)F$<1,7>
: RETURN
2230 F$=HEX(0D0C020D0C030F)
: CONVERT STR(P5$,1,3)TO A
: IF A=11 THEN 2240
: F$=HEX(020C010200000F)
: STR(F$,5,2)=BIN(A*48,2)
2240 $GIO#5(010302801212A000,Z$)F$<1,7>
: RETURN
2830 STOP