Listing of file='DISKFLOW' on disk='vmedia/tbo_81.wvd.zip'
# Sector 228, program filename = 'DISKFLOW' 0010 REM "DISKFLOW" 05/11/77 FLOW CHART T.OLSEN WANG 2200 R&D MODIFIED TO "DISKFLOW" BY DON DURNFORD 11/11/76 WANG VENTURA SERVICE OFFICE. T HIS WORKS FROM DISK 0015 REM % SET UP 0020 DIM A$(180)18,D$20,D$(15)18,F$(29)64,F$64,H$1,P$16,C$11,C$(255)10,L$2,B$( 2,255)1,V1$1,A$1,V$1,A4$8,A8(255),A3$(16),A1$2,A2$4,B$1 : C,J,P,P6,L1,L2,L9,M,Z=0 : B=58 0030 RESTORE : FOR Z=128TO 235 : READ C$ : C$(Z)=C$ : NEXT Z : SELECT PRINT 005(64),CO 005(64) : PRINT HEX(03) 0040 PRINT HEX(01);"FLOW CHART MAKER" : INPUT "INPUT DISK ADDRESS 1=(F)310 2=(R)B10 3=(F)B10 4=(R)B20",A$ : ON VAL(A$)-48GOTO 50,60,70,80 : GOTO 40 0050 SELECT #1310 : GOTO 90 0060 SELECT #1B10 : GOTO 90 0070 SELECT #1320 : GOTO 90 0080 SELECT #1B20 : GOTO 90 : REM %^ GET DATE 0090 PRINT HEX(030A0A) : D$=" " : INPUT "DATE",D$ 0100 M=5 : S=0 : PRINT HEX(030A0A) : INPUT "BEGINNING STATEMENT NUMBER OF FLOW CHART(S)",S 0160 X=1 : PRINT HEX(030A0A);"ENTER PROGRAM NAMES (MAX. OF 255 - EXEC TO EXIT)" 0170 PRINT "PROGRAM NUMBER";X : A4$=" " : INPUT A4$ : IF A4$=" "THEN 180 : LIMITS T#1,A4$,A8(X),E,E : X=X+1 : IF X=256THEN 180 : PRINT HEX(0A);TAB(60);HEX(0D0C0C);TAB(20);HEX(0C0D) : GOTO 170 0180 GOSUB 190 : GOTO 500 0190 PRINT HEX(030A0A) : INPUT "PLEASE READY PRINTER. PRESS EXECUTE WHEN READY",J : PRINT HEX(03);"PRINTER NOT READY" : SELECT PRINT 215 : PRINT HEX(0A0C) : SELECT PRINT 005 : PRINT HEX(03) : RETURN 0195 REM %^ SUBROUTINES 0200 Z=LEN(C$) 0210 C=C+Z : IF C<62THEN 220 : F=F+1 : I=1 : C=Z 0220 STR(F$(F),I,Z)=C$ : I=I+Z : RETURN 0230 STR(L$,1,1)=B$(1,J) : STR(L$,2,1)=B$(1,J+1) : J=J+2 0240 IF S=0THEN 260 : UNPACK(####)STR(L$,1,2) TO Z : IF Z>=STHEN 260 : PRINT HEX(0C);"SKIP LINE="; : HEXPRINT L$ 0250 IF B$(1,J)=HEX(0D)THEN 370 : J=J+1 : GOTO 250 : REM %^GET DATA FROM # LINE TO F$() 0260 STR(F$(F),1,1)=HEX(FF) : STR(F$(F),2,2)=L$ : F=F+1 : GOSUB 470 : IF V$=HEX(D8)THEN 450 : IF V$=HEX(97)THEN 450 0270 B$=B$(1,J) : IF B$>=HEX(80)THEN 310 : IF B$=HEX(0D)THEN 710 : IF B$<>":"THEN 290 0280 J=J+1 : GOSUB 470 : J=J-1 : F=F+1 : I,C=1 0290 IF B$=HEX(22)THEN 430 : C$=B$ : GOSUB 200 0300 J=J+1 : GOTO 270 0310 IF B$<>HEX(FF)THEN 320 : C$=B$ : STR(C$,2,1)=B$(1,J+1) : STR(C$,3,1)=B$(1,J+2) : Z=3 : GOSUB 210 : J=J+3 : GOTO 270 0320 IF B$<>HEX(A2)THEN 350 0330 C$=C$(VAL(B$(1,J))) : GOSUB 200 : STR(F$(F),I,1)=" " : C=C+1 : I=I+1 0340 J=J+1 : B$=B$(1,J) : IF B$>HEX(7F)THEN 330 : IF B$=HEX(0D)THEN 710 : IF B$=":"THEN 280 : C$=B$ : GOSUB 200 : GOTO 340 0350 C$=C$(VAL(B$)) : GOSUB 200 0360 IF Z=1THEN 300 : IF STR(C$,Z,1)="("THEN 300 : STR(F$(F),I,1)=" " : C=C+1 : I=I+1 : GOTO 300 0370 F=0 : INIT(20)F$() 0380 F=F+1 : I,C=1 0390 J=J+4 : IF J>256THEN 400 : IF B$(1,J-1)=HEX(FF)THEN 230 0400 IF H$<>HEX(20)THEN 540 0410 SELECT PRINT 005(64) : L9=1 : GOTO 1220 0420 NEXT Y : X3=1 : IF X4>=16THEN 425 : NEXT X4 0425 IF X1>=X2THEN 427 : NEXT X1 0427 SELECT PRINT 215 : PRINT HEX(0C07) : SELECT PRINT 005(64),CO 005(64) : PRINT HEX(030A0A);"***** END OF JOB ******" : END 0430 C$=B$ : GOSUB 200 0440 J=J+1 : C$=B$(1,J) : GOSUB 200 : IF B$(1,J)<>HEX(22)THEN 440 : GOTO 300 0450 REM PRINTUSING IMAGE OR DATA STATEMENT : F=F-1 0460 J=J+1 : IF B$(1,J)=HEX(0D)THEN 390 : GOTO 460 0470 IF B$(1,J)<>" "THEN 480 : J=J+1 : GOTO 470 0480 V1$=V$ : A$,V$=B$(1,J) : RETURN 0490 SELECT PRINT 005(64) : RETURN : REM %SET-UP 0500 FOR Y=1TO X : E=A8(Y) 0510 GOSUB 550 : IF H$<>HEX(40)THEN 1650 : J=1 : INIT(20)P$ 0520 B$=B$(1,J+1) : IF B$=HEX(FF)THEN 530 : STR(P$,J,1)=B$ : J=J+1 : IF J<9THEN 520 0530 PRINT HEX(03);P$ : PRINT : GOSUB 490 : A2=0 : P,F,I=1 : INIT(20)F$() : IF S=0THEN 540 : INPUT "START PAGE",P 0540 GOSUB 550 : J=3 : IF B$(1,1)<>HEX(20)THEN 230 : IF B$(1,2)<>HEX(FE)THEN 230 : GOTO 410 0550 DATA LOAD BA T#1,(E,E)B$() : H$=B$(1,1) : BOOL4(H$,1F) : RETURN 0555 REM % ATOM TABLE 0560 DATA "LIST","CLEAR","RUN","RENUMBER","CONTINUE","SAVE" 0570 DATA "LIMITS","COPY","KEYIN","DSKIP","AND","OR","XOR" 0580 DATA "TEMP","DISK","TAPE","TRACE","LET","DRAM","DIM","ON" 0590 DATA "STOP","END","DATA","READ","INPUT","GOSUB","RETURN" 0600 DATA "GOTO","NEXT","FOR","IF","PRINT","LOAD","REM","RESTORE" 0610 DATA "PLOT","SEL.","COM","PRINTUSING","MAT","REWIND","SKIP" 0620 DATA "B.SPACE","SCRATCH","MOVE","CONVERT","PLOT"," STEP" 0630 DATA " THEN"," TO","BEG","OPEN","CI","R","D","CO"," ","OFF" 0640 DATA "DBACKSPACE","VERIFY","DA","BA","DC","FN","ABS(","SQR(" 0650 DATA "COS(","EXP(","INT(","LOG(","SIN(","SGN(","RND(","TAN(" 0660 DATA "ARC","#PI","TAB(","DEFFN","ARCTAN(","ARCSIN(","ARCCOS(","HEX(" 0670 DATA "STR(","ATN(","LEN(","RE","#","%","P","BT","G","VAL(","NUM(" 0680 DATA "BIN(","POS(","LS=","ALL","PACK","CLOSE","INIT","HEX" 0690 DATA "UNPACK","BOOL","ADD","ROTATE","$","RC" 0700 Z1=Z1+1 : V$=STR(F$,Z1,1) : IF V$=" "THEN 700 : RETURN : %^SET DATA INTO PAGE 0710 REM F$()=# STMT LINE D$()=BLOCK A$()=PAGE 0720 Z9,Z8=F : IF V$=HEX(D8)THEN 722 : IF V$<>HEX(A2)THEN 729 : IF STR(F$(Z9),1,4)="REM/"THEN 728 0722 IF V1$=HEX(9C)THEN 725 : IF V1$=HEX(9B)THEN 725 : IF V1$=HEX(95)THEN 725 : IF V1$<>HEX(A1)THEN 729 0725 Z9=F-1 0728 A$=V1$ 0729 FOR F=1TO Z9 : INIT(20)D$() : D=1 0730 F$=F$(F) : Z=POS(F$=FF) 0740 IF Z<>1THEN 760 : STR(D$(D),4,6)="******" : GOSUB 750 : STR(D$(D),5,4)=C$ : D=D+1 : F=F+1 : GOTO 730 0750 UNPACK(####)STR(F$,Z+1,4)TO C : CONVERT C TO STR(C$,1,4),(####) : RETURN 0760 Z1=1 : IF STR(F$,1,1)<>":"THEN 770 : Z1=2 0770 IF Z<>0THEN 840 : IF STR(F$,Z1,4)="NEXT"THEN 810 : IF STR(F$,Z1,7)="RETURN"THEN 830 : IF STR(F$,Z1,5)="GOSUB"THEN 850 : L1=1+INT(LEN(F$)/11) : IF D+L1<6THEN 790 : GOTO 790 0780 IF L1>5THEN 790 : D=6 : F=F-1 : GOTO 1030 0790 FOR Z=Z1TO LEN(F$)STEP 11 : IF Z>53THEN 800 : STR(D$(D),2,11)=STR(F$,Z,11) : D=D+1 : NEXT Z : GOTO 1030 0800 STR(D$(D),2)=STR(F$,Z,7) : D=D+1 : Z=LEN(F$) : NEXT Z : GOTO 1030 0810 ON DGOTO 820 : IF STR(D$(1),4,1)<>"*"THEN 780 : D$(3)=D$(1) : D$(1)=" " 0820 STR(D$(4),4,11)=STR(F$,Z1,11) : D=6 : GOTO 1030 0830 STR(D$(2),4)="RETURN" : D=4 : GOTO 1030 0840 IF STR(F$,Z1,4)<>"GOTO"THEN 880 : STR(D$(3),5,4)="GOTO" : GOSUB 750 : STR(D$(4),5,4)=C$ : D=6 : GOTO 1030 0850 Z=POS(F$="(") : IF Z>0THEN 860 : STR(D$(2),3)=STR(F$,2) : GOTO 870 0860 STR(D$(2),3)=STR(F$,2,Z-2) : STR(D$(3),3)=STR(F$,Z) 0870 D=D+4 : GOTO 1030 0880 IF STR(D$(1),4,1)<>"*"THEN 890 : D=D+2 : GOTO 900 0890 D=2 0900 IF STR(F$,Z1,2)<>"IF"THEN 970 : STR(D$(D),7,2)="IF" : C=POS(F$="<") : IF C>0THEN 910 : C=POS(F$="=") : IF C>0THEN 910 : C=POS(F$=">") 0910 Z1=Z1+2 : GOSUB 700 : L1=Z-5-Z1 : IF L1<9THEN 950 0920 L1=C-Z1 : IF L1<16THEN 930 : L1=15 0930 L2=Z-5-C : IF L2<16THEN 940 : L2=15 0940 STR(D$(D+2),8-INT(L2/2),L2)=STR(F$,Z1+L1,L2) 0950 STR(D$(D+1),8-INT(L1/2),L1)=STR(F$,Z1,L1) : STR(D$(D+4),9,1)="N" 0960 GOSUB 750 : STR(D$(D+2),15,4)=C$ : STR(D$(D+3),13,1)="Y" : D=D+5 : GOTO 1030 0970 IF STR(F$,Z1,5)="GOSUB"THEN 1020 : STR(D$(D),2)=STR(F$,Z1,Z-Z1) 0980 IF STR(F$,Z,1)<>HEX(FF)THEN 990 : IF STR(F$,Z1,10)="PRINTUSING"THEN 1010 : GOSUB 750 : STR(D$(D+1),15,4)=C$ : D=D+1 : Z=Z+2 0990 Z=Z+1 : IF Z<LEN(F$)THEN 980 1000 D=D+2 : GOTO 1030 1010 GOSUB 750 : STR(D$(D+1),2,4)=C$ : Z1=Z+2 : D=D+2 : GOTO 790 1020 STR(D$(D),4)=STR(F$,Z1,Z-Z1) : GOSUB 750 : STR(D$(D+1),5,4)=C$ : D=6 : %DETERMINE BLOCKING 1030 IF A2+D>3*BTHEN 1220 1040 FOR Z=1TO D : A2=A2+1 : A$(A2)=D$(Z) : PRINT "LINE=";A2,A$(A2) : NEXT Z 1050 IF R1=1THEN 1090 : IF A2<BTHEN 1060 : IF A2<C1+BTHEN 1070 : IF A2<C2+BTHEN 1080 : B3=A2 : GOTO 1210 1060 C1,B1=A2 1070 C2,B2=A2 1080 C3,B3=A2 1090 NEXT F : IF Z9=Z8THEN 1095 : F$=F$(Z8) 1095 INIT(20)F$() : IF A$=HEX(D8)THEN 1150 1100 IF A$=HEX(9C)THEN 1150 : IF A$=HEX(9B)THEN 1150 : IF A$=HEX(95)THEN 1150 : IF A$=HEX(A1)THEN 1150 1110 IF A2<=B1THEN 1120 : IF A2<=B2THEN 1130 : IF A2<B3THEN 1140 : IF A2<=B2+BTHEN 1140 : GOTO 1210 1120 B1=A2 1130 B2=A2 1140 B3=A2 : GOTO 1200 1150 R1=1 : HEXPRINT A$ 1160 IF A2<BTHEN 1170 : IF A2<C1+BTHEN 1180 : IF A2<C2+BTHEN 1190 : GOTO 1210 1170 C1,B1=A2 1180 C2,B2=A2 1190 C3,B3=A2 1200 INIT(00)A$,V$,V1$ : F=0 : PRINT "L.B. AT ";A2,B1;B2;B3,C1;C2;C3 : IF Z9=Z8THEN 380 : F$(1)=F$ : F=1 : GOTO 380 1210 L9=2 1220 PRINT "F,A2=";F,A2,D : R1=0 : IF C1>0THEN 1230 : C1=B1 1230 SELECT PRINT 215(79) : PRINT HEX(0E);TAB(M/2);P$;" PAGE=";P;" ";D$ : PRINT 1240 Z=0 1250 Z=Z+1 : IF Z>C3THEN 1460 : F$=A$(Z) : IF F$<>" "THEN 1310 : IF A$(Z+1)=" "THEN 1270 : IF STR(A$(Z+1),2,3)<>" *"THEN 1260 : STR(A$(Z),7,1)="!" : GOTO 1340 1260 IF R1=0THEN 1250 1270 STR(A$(Z),7,1)="!" : GOTO 1250 1280 STR(A$(R2),7,1)="!" : RETURN 1290 R2=Z 1300 STR(A$(R2),1,1)=STR(L$,1,1) : STR(A$(R2),13,1)=STR(L$,2,1) : RETURN 1310 IF STR(F$,2,3)=" *"THEN 1340 : IF STR(F$,2,7)=" IF"THEN 1370 : IF STR(F$,4,5)="GOSUB"THEN 1380 : IF STR(F$,2,5)="KEYIN"THEN 1390 : IF STR(F$,2,4)="STOP"THEN 1420 1320 IF STR(F$,5,4)="GOTO"THEN 1430 : IF STR(F$,4,6)="RETURN"THEN 1360 : IF STR(F$,4,4)="NEXT"THEN 1350 : IF STR(F$,2,2)="ON"THEN 1400 : IF STR(F$,2,3)="REM"THEN 1410 1330 STR(A$(Z),1,1)="!" : STR(A$(Z),13,1)="!" 1340 R1=1 : GOTO 1250 1350 L$="<>" : GOSUB 1290 : GOTO 1250 : REM NEXT 1360 R2=Z-1 : GOSUB 1280 : L$="()" : GOSUB 1290 : STR(A$(Z+1),3,9)="---------" : GOTO 1440 : REM RETURN 1370 STR(A$(Z),6,3)="/IF" : STR(A$(Z),9,1)=HEX(5C) : STR(A$(Z+2),13,1)="-" : Z=Z+4 : STR(A$(Z),6,3)=HEX(5C202F) : GOTO 1250 : REM IF 1380 L$=HEX(2F5C) : GOSUB 1290 : R2=R2+1 : L$=HEX(5C2F) : GOSUB 1300 : Z=Z+2 : GOTO 1250 : REM GOSUB 1390 STR(A$(Z+1),7,5)="CHAR-" : STR(A$(Z+2),7,5)="S.F.-" : Z=Z+2 : GOTO 1250 : REM KEYIN 1400 IF STR(A$(Z+1),15,1)=" "THEN 1250 : Z=Z+1 : STR(A$(Z),7,1)="-" : GOTO 1400 1410 IF R1<>0THEN 1330 : L$="!!" : GOSUB 1290 : Z=Z+1 : IF A$(Z)<>" "THEN 1410 : GOTO 1250 1420 Z=Z+4 : GOTO 1450 : REM STOP 1430 STR(A$(Z-1),5,4)="--!-" : STR(A$(Z),4,6)="!GOTO!" : STR(A$(Z+2),5,4)="----" 1440 Z=Z+3 1450 R1=0 : GOTO 1250 1460 Z=0 1470 Z=Z+1 : IF Z>C3THEN 1480 : IF STR(A$(Z+1),2,6)<>" !"THEN 1470 : IF STR(A$(Z),2,4)=" "THEN 1470 : STR(A$(Z+1),3,9)="----!----" : Z=Z+1 : GOTO 1470 : %^PRINT FLOW CHART 1480 R1=1 : R2=C1+1 : R3=C2+1 : Z=1 1490 IF A$(R1)<>" "THEN 1500 : IF A$(R2)<>" "THEN 1500 : IF A$(R3)<>" "THEN 1500 : R1=R1+1 : R2=R2+1 : GOTO 1530 1500 IF R1>C1THEN 1510 : PRINT TAB(8);STR(A$(R1),1,18); 1510 R1=R1+1 : IF R2>C2THEN 1520 : PRINT TAB(33);STR(A$(R2),1,18); 1520 R2=R2+1 : IF R3>C3THEN 1530 : PRINT TAB(58);STR(A$(R3),1,18); 1530 PRINT : R3=R3+1 : Z=Z+1 : IF Z<=BTHEN 1490 1540 P=P+1 : SELECT PRINT 005(64) : Z=C3+1 : B1=A2 : A2=1 : A$(1)=" " 1550 A$(A2)=A$(Z) : PRINT "M.LN=";A2,A$(A2) : A2=A2+1 : Z=Z+1 : IF Z<=B1THEN 1550 : Z=A2 1560 A$(Z)=" " : Z=Z+1 : IF Z<3*BTHEN 1560 1570 PRINT "AFTER LINE--";A2,B1;B2;B3,C1;C2;C3 1580 R1,R2=A2-1 : IF A2<BTHEN 1590 : R1=B3-C3 : R2=B1-B3 1590 B1,C1=R1 : B2,C2,B3,C3=R2 : R1,R2=0 1600 PRINT "AFTER RESET-";A2,B1;B2;B3,C1;C2;C3 1610 Z=L9 : L9=0 : ON ZGOTO 420,1200 : GOTO 1040 1620 ON ERRORA1$,A2$GOTO 1630 1630 IF A1$="80"THEN 1640 : IF A1$="48"THEN 1660 : PRINT HEX(030A0A);"AN ERROR ";A1$;" IS ON LINE ";A2$ : END 1640 PRINT HEX(0A);"PROGRAM ";A4$;" DOES NOT EXIST. PLEASE RE-ENTER";HEX(0D0C0 C);" ";HEX(0D0C) : GOTO 170 1650 PRINT HEX(030A0A);"FILE NAME ";A4$;" IS NOT A PROGRAM. SKIPPING" : NEXT Y : PRINT HEX(030A);"***** END OF JOB *****" : END 1660 GOTO 10