0 REM *GRAPH.BA V2.2* 1 REM *COPYRIGHT FRED BROWN [73267,2450] 1987* 2 CLS:CLEAR500:SCREEN0,0:DEFSNGA-W:DEFINTX,Y,Z 3 ONERRORGOTO300 4 XL=50:YL=50:XT=5:YT=5 5 CS$=CHR$(27)+"J":VP$=CHR$(27)+"p":VQ$=CHR$(27)+"q" 6 BS$="FILE: [......]"+CHR$(8)+CHR$(8)+CHR$(8)+CHR$(8)+CHR$(8)+CHR$(8)+CHR$(8) 7 GOSUB400 10 PRINT@12,VP$;" GRAPH.BA V2.2 ";VQ$:PRINT@55,DATE$ 11 DV=2:INPUT"FILES: 1=RAM 2=DISC (DEFAULT=2)";DV 20 REM *INPUT* 21 PRINT@80,CS$;:IFDV=2THENLFILESELSEFILES 22 INPUT"Number of Files";NF 23 DIMF$(NF),S$(NF),NP(NF) 24 FORI=1TONF 25 PRINT@560,I;BS$;:LINEINPUTF$ 26 IFDV=2THENF$(I)="0:"+F$ELSEF$(I)=F$ 27 NEXTI 28 PRINT@560,CS$;"Working..." 29 OPENF$(NF)FORINPUTAS1:INPUT#1,A1,B1,A2,B2:CLOSE#1 30 FORI=1TONF 31 OPENF$(I)FORINPUTAS1 32 IFEOF(1)THEN37 33 INPUT#1,A,B:NP(I)=NP(I)+1 34 IFAA2THENA2=A 35 IFBB2THENB2=B 36 GOTO32 37 CLOSE#1 38 IFNP(I)>NPTHENNP=NP(I) 39 PRINT@80,CS$;F$(I):PRINT"X:";A1,A2:PRINT"Y:";B1,B2:PRINT"MAX POINTS:";NP 40 NEXTI 45 DIM A(NF,NP),B(NF,NP) 50 FORI=1TONF 51 OPENF$(I)FORINPUTAS1 52 PRINT@560,F$(I) 53 S$(I)=CHR$(I+64) 54 FORI1=1TONP(I) 55 INPUT#1,A(I,I1),B(I,I1) 56 NEXTI1 57 CLOSE#1 58 NEXTI 59 PRINT@560,CS$ 100 REM *PIXEL MAP* 101 CX=XL/(A2-A1):CY=YL/(B2-B1) 102 PRINT@40,CS$;T$:PRINTS$ 103 LINE(150-XL,90-YL)-(150,90),1,B 104 PRINT@226,B2:PRINT@466,B1 105 PRINT@504,A2:PRINT@495,A1 106 FORI=0TOXLSTEPXL/XT:PSET(150-XL+I,91):NEXT 107 FORI=0TOYLSTEPYL/YT:PSET(151,90-YL+I):NEXT 108 FORI1=1TONF 109 FORI2=1TONP(I1) 110 Y=90-(B(I1,I2)-B1)*CY:X=150-XL+(A(I1,I2)-A1)*CX 111 IFX>150ORX<100ORY>90ORY<40THENBEEP:GOTO113 112 PSET(X,Y) 113 NEXTI2 114 NEXTI1 115 PRINT@200,"X-TICK:";XT 116 PRINT"Y-TICK:";YT 117 PRINT"HORZ: ";XL 118 PRINT"VERT: ";YL 150 REM *FUNCTION KEYS* 151 KEYON:PRINT@560,CS$ 152 PRINT@600,"LIST GRAPH RUN QUIT SCALE 0:TOP";CHR$(27)"H" 153 ONKEYGOSUB155,200,,1,195,170,,190:GOTO153 155 REM *LIST* 156 PRINT@560,CS$;"Listing..." 157 LPRINT:LPRINTTAB(10);T$:LPRINTTAB(10);S$ 158 FORI=1TONF 159 LPRINT 160 LPRINTTAB(12);F$(I) 161 FORI1=1TONP(I) 162 LPRINTTAB(12);I1;TAB(15);A(I,I1);TAB(25);B(I,I1) 163 NEXTI1 164 NEXTI 165 GOTO150 170 REM *SCALE* 171 PRINT@40,CS$ 172 PRINT"X-MIN:";A1;TAB(20);"X-MAX:";A2 174 PRINT"Y-MIN:";B1;TAB(20);"Y-MAX:";B2 175 PRINT"X-TICKS:";XT;TAB(20);"Y-TICKS:";YT 176 PRINT"HORIZONTAL:";XL;TAB(20);"VERTICAL:";YL 179 PRINTTAB(10)" TO SKIP." 180 INPUT"X-MIN";A1:INPUT"X-MAX";A2 181 INPUT"Y-MIN";B1:INPUT"Y-MAX";B2 182 INPUT"X-TICKS";XT:INPUT"Y-TICKS";YT 183 INPUT"HORIZONTAL";XL:INPUT"VERTICAL";YL 189 GOTO100 190 RUN"0:TOP" 195 MENU 200 REM *PRINT ROUTINE* 201 PRINT@80,CS$ 202 INPUT"Title";T$:INPUT"Subtitle";S$ 203 INPUT"X-Axis Label";X$:INPUT"Y-Axis Label";Y$ 204 PRINT@560,CS$;"Printing..." 205 L=1:YC=YL:Z$="" 206 FORI=1TOLEN(Y$):Z$=Z$+" "+MID$(Y$,I,1):NEXTI:Z$=SPACE$(INT(YL/10))+Z$ 207 LPRINTP1$ 208 LPRINTTAB(10);"GRAPH.BA V2.2 ":LPRINTTAB(10);DATE$ 209 LPRINTTAB(10);T$:LPRINTTAB(10);S$ 210 LPRINTP2$ 211 LPRINTP3$ 212 LPRINTTAB(10-LEN(STR$(B2)));B2 213 FORI=YLTO0STEP-1:PRINT@575,I 214 IFL60THENBEEP:PRINT@560,"Out of Range":GOTO223 222 IFY=ITHENLPRINTTAB(X);S$(I1);CR$ 223 NEXTI2 224 NEXTI1 225 IFI<>0THEN228 226 LPRINTTAB(9-LEN(STR$(B1)));B1;STRING$(XL+1,C3$) 227 FORI2=0TOXLSTEPXL/XT:LPRINTTAB(10+I2);C4$:NEXT 228 LPRINTLF$:L=L+1 229 NEXTI 230 LPRINTTAB(9);A1;TAB(XL+9);A2;LF$ 231 LPRINTTAB(10+XL*.20);X$ 232 LPRINTP4$;P5$;P6$ 233 FORI=1TONF:LPRINTTAB(10);S$(I);") ";F$(I):NEXTI 234 GOTO100 300 REM *ERROR ROUTINE* 301 PRINT@540,CS$ 302 IFERR=07THENPRINT@520,CS$;VP$;"Out of Memory";VQ$:RESUME150 303 IFERR=52THENPRINT@520,CS$;VP$;".DO File Not Found";VQ$:RESUME150 304 IFERR=55THENPRINT@520,CS$;VP$;"Bad File Name";VQ$:RESUME150 305 IFERR=18THENPRINT@520,VP$;"Disc Error";VQ$:RESUME150 309 PRINT@520,CS$;VP$;"ERROR:";ERR;ERL;VQ$:END 400 REM *PRINTER SETTINGS* 401 P1$=CHR$(27)+CHR$(23) 'COMPRESSED 402 P2$=CHR$(27)+CHR$(28) 'HALF LF 403 P3$=CHR$(27)+CHR$(21) 'CR=CR 404 P4$=CHR$(27)+CHR$(22) 'CR=CR+LF 405 P5$=CHR$(27)+CHR$(19) 'STANDARD 406 P6$=CHR$(27)+CHR$(54) 'FULL LF 407 CR$=CHR$(13) 'CR 408 LF$=CHR$(10) 'LF 409 C1$=CHR$(245) 'VERT LINE 410 C2$=CHR$(249) 'VERT TICK 411 C3$=CHR$(241) 'HORZ LINE 412 C4$=CHR$(243) 'HORZ TICK 419 RETURN