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 " "