Listing of file='PROGCOMP' on disk='vmedia/tbo_81.wvd.zip'
# Sector 273, program filename = 'PROGCOMP'
0010 REM "PROGCOMP" WITH VP VERBS T.OLSEN 11/13/80 PROG/SYSTEM COMPARE
0020 REM %REQUIREMENTS
: REM %0 /215 PRINTER, #0 (CASSETTE)
0030 REM %0 #1 PROG #1 DISK, #2 PROG #2 DISK, OP5 SORT ROM
0040 DIM D$(10)64,E$42, E$(50)42,A1$(4)64, A2$(4)64, B1$(255)1, B2$(255)1, H1$
1, H2$1
0050 P,P9,L,L1,L2,M=0
: DIM D$64,D0$1,H$1,P$8,C$11,C$(128)10,M$(1)2,L1$2,L2$2,L$2,B$(255)1,V$1,Q$
4,B$1
: C,J,Z=0
: GOTO 740
: REM %LIST LOGIC VARIABLES
0060 REM %0 P$( PROGRAM NAMES, P8 # PROGRAMS, P7 PROGRAM #
0070 REM %0 B$ B$1, B$( TEXT AREA, C COLUMN CTR, C$ PRT. WORD
0080 REM %0 C$( ATOM TABLE, D$( PRINTER COMMENTS, H$ HEADER BYTE, J PTR
0090 REM %0 L LINES/PAGE, L$ STMT LINE, L1 L1, L2 L2, M MARGIN
0100 REM %0 P PAGE, P$ PROGRAM NAME, N # COPIES, P6 MODE
0110 REM %0 P9 CURRENT LINE #, V$ VERB ATOM, Z Z
: REM %LIST LOGIC
0120 Z=LEN(C$)
: C=C+Z
: IF C<78THEN 130
: PRINT
: PRINT TAB(M);
: C=M+Z
0130 PRINT C$;
: RETURN
0140 GOSUB 350
: PRINT L$;"--";
: J=2
: STR(L$,1,1)=B$(J)
: STR(L$,2,1)=B$(J+1)
: J=J+2
0150 GOSUB 330
: C=M+6
: PRINT TAB(M);
: HEXPRINT L$;
: IF V$=HEX(D8)THEN 310
: PRINT TAB(M+6);
: GOTO 170
0160 J=J+3
0170 B$=B$(J)
: IF B$>=HEX(80)THEN 210
: IF B$=HEX(0D)THEN 280
0180 IF B$=HEX(22)THEN 290
0190 C$=B$
: GOSUB 120
0200 J=J+1
: GOTO 170
0210 IF B$<>HEX(FF)THEN 230
: UNPACK(##)B$(J+1)TO L1
: UNPACK(##)B$(J+2)TO L2
: CONVERT L2+L1*100TO Q$,(####)
: Q$=STR(Q$,POS(Q$<>"0"))
: IF Q$<>" "THEN 220
: Q$="0"
0220 C$=Q$
: GOSUB 120
: GOTO 160
0230 IF B$=HEX(A2)THEN 240
: IF B$<>HEX(D8)THEN 260
0240 B$=B$(J)
: AND (B$,7F)
: C$=C$(VAL(B$)+1)
: GOSUB 120
: PRINT " ";
: C=C+1
0250 J=J+1
: B$=B$(J)
: IF B$>HEX(7F)THEN 240
: IF B$=HEX(0D)THEN 280
: IF B$=":"THEN 170
: C$=B$
: GOSUB 120
: GOTO 250
0260 AND (B$,7F)
: C$=C$(VAL(B$)+1)
: GOSUB 120
0270 IF Z=1THEN 200
: IF STR(C$,Z,1)="("THEN 200
: PRINT " ";
: C=C+1
: GOTO 200
0280 PRINT
: RETURN
0290 PRINT HEX(22);
0300 J=J+1
: PRINT B$(J);
: IF B$(J)<>HEX(22)THEN 300
: GOTO 200
0310 PRINT " %";
0320 J=J+1
: IF B$(J)=HEX(0D)THEN 280
: PRINT B$(J);
: IF B$(J)<>":"THEN 320
: RETURN
0330 IF B$(J)<>" "THEN 340
: J=J+1
: GOTO 330
0340 V$=B$(J)
: PRINT
: RETURN
0350 IF H9=0THEN 355
: SELECT PRINT 215(79)
0355 RETURN
0360 SELECT PRINT 005
: IF L$="#1"THEN 370
: PRINT TAB(32);
0370 PRINT L$;" IS ON LINE=";
: STR(L$,1)=B$(2)
: STR(L$,2)=B$(3)
: HEXPRINT L$
: RETURN
0380 REM %BUFFER LOGIC
: REM %BUFFER VARIABLES
0390 REM %0 D DEVICE, D0$ HEX(0D), E END FLAG, M$( SEARCH RESULT
0400 REM %0 A1$( #1 READ AREA, A2$( #2 READ AREA
0410 REM %0 A1 #1 SECTOR, A2 #2 SECTOR
0420 REM %0 B1$( #1 TEXT, B2$( #2 TEXT, B1 #1 PTR, B2 #2 PTR
0430 REM %0 D1 #1 DEVICE, D2 #2 DEVICE
0440 REM %0 H1$ #1 HEADER BYTE, H2$ #2 HEADER BYTE
0450 REM %0 L1$ #1 LINE, L2$ #2 LINE, Z1 #1 W/A, Z2 #2 W/A
0460 REM %0 P1$ #1 NAME, P2$ #2 NAME
0470 IF B1=2THEN 480
: IF B1$(B1)=HEX(FD)THEN 480
: IF B1$(B1)=HEX(FE)THEN 560
: MAT COPY B1$()<B1,256-B1>TO B1$()
: B1=2
: RETURN
0480 B1=2
: IF D1=0THEN 490
: DATA LOAD BA T#1,(A1,A1)A1$()
: GOTO 500
0490 DATA LOAD BTA1$()
0500 MAT COPY A1$()<2,255>TO B1$()
: H1$=A1$(1)
: AND (H1$,F0)
: RETURN
0510 IF B2=2THEN 520
: IF B2$(B2)=HEX(FD)THEN 520
: IF B2$(B2)=HEX(FE)THEN 570
: MAT COPY B2$()<B2,256-B2>TO B2$()
: B2=2
: RETURN
0520 B2=2
: IF D2=0THEN 530
: DATA LOAD BA T#2,(A2,A2)A2$()
: GOTO 540
0530 DATA LOAD BTA2$()
0540 MAT COPY A2$()<2,255>TO B2$()
: H2$=A2$(1)
: AND (H2$,F0)
: RETURN
0550 B2=B2+1
: MAT COPY B2$()<B2,256-B2>TO B2$()
: RETURN
0560 L$="#1"
: GOTO 580
0570 L$="#2"
0580 PRINT "EOF ";L$
: GOSUB 350
: PRINT "EOF ";L$
: SELECT PRINT 005(64)
: ON EGOTO 730
: E=1
: RETURN
0590 MAT COPY B1$() TO B$()
: L$="#1"
: GOSUB 140
: B1=J+3
: GOSUB 470
: RETURN
0600 MAT COPY B2$() TO B$()
: L$="#2"
: GOSUB 140
: B2=J+3
: GOSUB 510
: RETURN
: REM %MAIN LOOP
0610 MAT COPY B1$()TO B$()
: L$="#1"
: GOSUB 360
: L1$=L$
0620 MAT COPY B2$()TO B$()
: L$="#2"
: GOSUB 360
: L2$=L$
0630 IF STR(L1$,1,2)<STR(L2$,1,2)THEN 710
0640 IF STR(L1$,1,2)>STR(L2$,1,2)THEN 720
0650 REM SAME LINE NUMBER
0660 MAT SEARCHB1$()<1,255>,=D0$TO M$()
: Z1=256*VAL(M$(1))+VAL(STR(M$(1),2))
: IF Z1=0THEN 1220
0670 MAT SEARCHB2$()<1,255>,=D0$TO M$()
: Z2=256*VAL(M$(1))+VAL(STR(M$(1),2))
: IF Z2=0THEN 1220
0680 IF Z1<>Z2THEN 700
: FOR Z=1 TO Z1
: IF B1$(Z)<>B2$(Z)THEN 690
: NEXT Z
: B1=B1+Z+1
: B2=B2+Z+1
: GOSUB 470
: GOSUB 510
: GOTO 610
0690 Z=Z1
: NEXT Z
0700 GOSUB 590
: GOSUB 600
: GOTO 721
0710 REM #1 REFERENCE IS LOWER
: GOSUB 590
: GOTO 721
0720 REM #2 REFERENCE IS LOWER
: GOSUB 600
0721 ON H9GOTO 610
: SELECT PRINT 005
: PRINT
: PRINT "Pause in ";P1$;"---";P2$;HEX(0D);
0722 $IF OFF /001,722
: PRINT TAB(8);HEX(0D)
: KEYIN R$,723,723
0723 GOTO 610
0730 E=0
: IF P7+1<P8THEN 1280
: P7=1
: N=N-1
: IF N>0THEN 735
: STOP "END OF JOB"
0735 ON P6 GOTO 1270
: J=0
: LIMITS T#1,P1$,A1,Z1,Z2
: LIMITS T#2,P2$,A2,Z1,Z2
: GOTO 990
0740 SELECT PRINT 005(64),INPUT 001
: PRINT HEX(03);"PROGRAM COMPARISON"
: PRINT " NOTE-- TO COMPARE SYSTEMS WITH INPUT VIA DATA STATMENTS "
: PRINT " ENTER THE NAME DATA AS THE 1ST PROGRAM NAME FOR #1"
0745 PRINT "Key S.F. '1 to pickup in entry of program names"
: RESTORE
: Z=1
0750 READ C$
: C$(Z)=C$
: Z=Z+1
: IF Z<129THEN 750
: C$="DEFAULT="
0760 N,H9,Z=1
: INIT(20)D$()
0763 INPUT "KEY 0 if output to CRT",H9
: IF H9=0THEN 770
0764 INPUT "# OF COPIES",N
0765 INPUT "COMMENT",D$(Z)
: IF D$(Z)=" "THEN 770
: Z=Z+1
: IF Z<11THEN 765
0770 DEFFN'1
: PRINT "FIRST PROGRAM---#1"
0780 D1=0
: D=1
: PRINT "0=TAPE OR DISKS"
: PRINT "1=(F)310 2=(R)B10 3=(F)320 4=(R)B20 5=(F)330 6=(R)B30 7=(T)350",C$
;D;
: INPUT D
: ON D+1GOTO 860,790,800,810,811,812,813,820
: GOTO 780
0790 SELECT #1 310
: GOTO 830
0800 SELECT #1 B10
: GOTO 830
0810 SELECT #1 320
: GOTO 830
0811 SELECT #1 B20
: GOTO 830
0812 SELECT #1 330
: GOTO 830
0813 SELECT #1 B30
: GOTO 830
0820 SELECT #1 350
0830 D1=1
: INPUT "PROGRAM #1 NAME",P1$
0840 IF P1$="DATA" THEN 860
0850 LIMITS T #1,P1$,A1,Z1,Z2
0860 PRINT "SECOND PROGRAM--#2"
0870 D2=0
: D=3
: PRINT "0=TAPE OR DISKS"
: PRINT "1=(F)310 2=(R)B10 3=(F)320 4=(R)B20 5=(F)330 6=(R)B30 7=(T)350",C$
;D;
: INPUT D
: ON D+1GOTO 940,880,890,900,901,902,903,910
: GOTO 870
0880 SELECT #2 310
: GOTO 920
0890 SELECT #2 B10
: GOTO 920
0900 SELECT #2 320
: GOTO 920
0901 SELECT #2 B20
: GOTO 920
0902 SELECT #2 330
: GOTO 920
0903 SELECT #2 B30
: GOTO 920
0910 SELECT #2 350
0920 D2=1
: IF P1$="DATA"THEN 1240
: P2$=P1$
: INPUT "PROGRAM #2 NAME",P2$
0930 LIMITS T #2,P2$,A2,Z1,Z2
0940 REM
0950 L=55
: REM /LINES/PAGE
: M=5
: REM /MARGIN
0980 PRINT "READY LINE PRINTER"
0990 Z=1
: GOSUB 350
: PRINT HEX(0C0E);"PROGRAM COMPARISON"
: PRINT
1000 IF D$(Z)=" "THEN 1010
: PRINT TAB(5);D$(Z)
: Z=Z+1
: IF Z<11THEN 1000
1010 PRINT
: PRINT HEX(0E);" ** PROGRAM **"
: PRINT
: PRINT TAB(20);"#1=";P1$
: PRINT TAB(20);"#2=";P2$
1020 SELECT PRINT 005
: D0$=HEX(0D)
: P=0
: B1,B2=2
: GOSUB 470
: GOSUB 510
: B1,B2=2
: GOSUB 470
: GOSUB 510
1030 GOTO 610
1040 DATA "LIST","CLEAR","RUN","RENUMBER","CONTINUE","SAVE"
1050 DATA "LIMITS","COPY","KEYIN","DSKIP","AND","OR","XOR"
1060 DATA "TEMP","DISK","TAPE","TRACE","LET","FIX(","DIM","ON"
1070 DATA "STOP","END","DATA","READ","INPUT","GOSUB","RETURN"
1080 DATA "GOTO","NEXT","FOR","IF","PRINT","LOAD","REM","RESTORE"
1090 DATA "PLOT","SELECT","COM","PRINTUSING","MAT","REWIND","SKIP"
1100 DATA "BACKSPACE","SCRATCH","MOVE","CONVERT","PLOT"," STEP"
1110 DATA " THEN"," TO","BEG","OPEN","CI","R","D","CO"," ","OFF"
1120 DATA "DBACKSPACE","VERIFY","DA","BA","DC","FN","ABS(","SQR("
1130 DATA "COS(","EXP(","INT(","LOG(","SIN(","SGN(","RND(","TAN("
1140 DATA "ARC","#PI","TAB(","DEFFN","TAN(","SIN(","COS(","HEX("
1150 DATA "STR(","ATN(","LEN(","RE","#","%","P","BT","G","VAL(","NUM("
1160 DATA "BIN(","POS(","LS=","ALL","PACK","CLOSE","INIT","HEX"
1170 DATA "UNPACK","BOOL","ADD","ROTATE","$"
1180 DATA "ERROR","ERR","DAC","DSC","SUB"
1190 DATA "LINPUT","VER(","ELSE","SPACE","ROUND"
1200 DATA "AT(","HEXOF","MAX(","MIN(","MOD("
1210 DATA "???","???","???","???","???","???"
1220 STOP "3500--ILLOGICAL NO CR ON RECORD"
1230 REM % PROCESSING OF SYSTEM USING STORED DATA STATEMENTS
1240 P6,P7,P8=1
: PRINT "SYSTEM COMPARISON USING DATA STATEMENTS"
1250 READ E$
: P$=E$
: PRINT P8;E$
: IF P$=" "THEN 1260
: GOSUB 1340
: E$(P8)=E$
: P8=P8+1
: GOTO 1250
1260 PRINT "READY LINE PRINTER"
1270 P7,J=0
: IF P6=0THEN 990
: GOSUB 350
: PRINT HEX(0C0E);"SYSTEM COMPARISON"
: PRINT
: Z=1
1275 IF D$(Z)=" "THEN 1280
: PRINT TAB(5);D$(Z)
: Z=Z+1
: IF Z<11THEN 1275
1280 P7=P7+1
1290 P$,E$=E$(P7)
: P1$,P2$=P$
: J=0
: GOSUB 1340
: PRINT
: PRINT HEX(0E);" ** PROGRAMS **"
1300 SELECT PRINT 005
: PRINT HEX(03);
: GOSUB 1330
: GOSUB 350
: IF P7>1THEN 1320
1310 FOR P7=1 TO P8-1
: PRINT P7;E$(P7)
: NEXT P7
: P7=1
: PRINT
1320 GOSUB 1330
: GOTO 1020
1330 PRINT
: PRINT HEX(0E);"PROGRAM=";P7;P$
: PRINT E$
: PRINT
: SELECT PRINT 005
: RETURN
1340 LIMITS T#1,P$,A1,Z1,Z2
: LIMITS T#2,P$,A2,Z1,Z2
: RETURN
9000 DATA "CIO*010 DISK SEND"
9010 DATA "CIO*040 DISK RCV"
9020 DATA " "