!****************************************************! ! ! ! PLOT PROGRAM FOR HP LASER PRINTER ! ! DONATED TO THE AMUS NETWORK BY NOEL B. BRINKLEY ! ! AND ASOMA INSTRUMENTS ! ! ! !****************************************************! ! THIS PROGRAM PROMPTS FOR COLUMNS TO PLOT ! SKIPS LINES WHERE X OR Y VALUES =999 ! MODIFIED ALSO TO HANDLE AMOSL DATE FORMATS ! HERE IS A SAMPLE FILE WHICH IS USED BY HPLOT. DON'T TRY ! TO COMPILE WITH THIS PART IN THE PROGRAM. UNYANK IT OUT FOR ! TEST PURPOSES. !********************************************************* 26 6 1 0 3071.7 36.8 356.2 1.7 Hematite 2 .2 3313.9 72.9 329.1 1.8 0.20% Ba Hema 3 1 3238.8 220.2 309.0 1.8 1.00% Ba " 5 4 3048.3 700.3 256.7 1.8 4.00% Ba " 5 8 2728.0 1382.2 207.3 1.8 8.00% Ba " 6 10 2657.2 1614.7 193.9 1.8 10.0% Ba " 7 12 2478.9 1834.0 182.0 1.8 12.0% Ba " 8 20 2078.8 2648.6 157.7 1.8 20.0% Ba " 9 30 1788.6 3536.9 145.5 1.8 30.0% Ba " 10 50 1177.7 4734.5 144.8 1.8 50.0% Ba " 11 0 286.9 113.9 975.8 2.0 Granite 12 .2 274.2 269.3 835.7 2.0 0.20% Ba Granite 13 1 309.7 892.0 757.8 2.0 1.00% Ba " 14 4 397.0 2453.5 508.8 2.0 4.00% Ba " 15 8 477.0 3613.2 367.7 1.9 8.00% Ba " 16 10 489.1 3866.0 326.1 1.9 10.0% Ba " 17 12 522.0 4146.8 296.4 1.9 12.0% Ba " 18 20 603.8 4739.8 229.3 1.9 20.0% Ba " 19 30 681.5 5129.0 193.9 1.8 30.0% Ba " 20 50 767.9 5386.1 163.8 1.8 50.0% Ba " 21 0 318.5 187.9 728.2 2.0 Carlin 0 1 22 0 297.4 125.8 705.4 2.0 Cortez 23 0 270.3 111.1 1036.2 2.1 Blank H2O 24 0 272.2 110.6 1055.4 2.1 Salt Water 25 0 192.7 72.7 714.0 2.0 Limestone 26 0 275.7 111.5 1011.6 2.0 Sand Box %Ba Fe Ba BX 6/1 THESE COMMENTS WILL BE HANDLED PROPERLY BY THE HPLOT PROGRAM !*************************************************************** !AMOSL DATE FORMAT MAP1 BINDATE,B,4 MAP1 DUMMY,@BINDATE MAP2 MONTH,B,1 MAP2 DAY,B,1 MAP2 YEAR,B,1 BINDATE=DATE MAP1 TITLE,S,60 MAP1 NEWTITLE,S,60 MAP1 FILNAM,S,20 ! VARIABLE ALLOCATION FOR HP PRINTER MAP1 CR,S,1,CHR(13) MAP1 LF,S,1,CHR(10) MAP1 GOTOCOL5,S,5,"&a5C" MAP1 GOTOCOL6,S,5,"&a6C" MAP1 GOTOCOL7,S,5,"&a7C" MAP1 POSITION,S,3,"&a" MAP1 HORIZONTAL,S,1,"H" MAP1 VERTICAL,S,1,"V" MAP1 HALFDN,S,2,"=" MAP1 HALFUP,S,8,"=&a-1R" MAP1 TWELVE'LPI,S,6,"&l12D" MAP1 SIX'LPI,S,5,"&l6D" MAP1 TWELVE'PITCH,S,38,"&l6d0O(8U(s0p12h10v0s0b8T)s1S&l1H" ! END HP PRINTER VARIABLE ALLOCATION STRSIZ 20 DIM M(150,15) DIM M$(150) NEWFILE: ? TAB(-1,0) IF FILNAM="" GOTO JUMP1 ? FILNAM; ? " IS CURRENT FILE" JUMP1: PRINT "WHAT FILE DO YOU WANT TO TAKE THE DATA FROM?" INPUT LINE FILNAM OPEN #2,FILNAM+".DAT[101,4]",INPUT INPUT #2,NLINES,NNUMB SPCFLG=0 FOR I=1 TO NLINES FOR J=1 TO NNUMB : INPUT #2, M(I,J):NEXT J INPUT LINE #2 M$(I) IF M$(I)[1,1]=CHR(32) ? "COMMENT BEGINS WITH SPACE ON LINE ";I;" PLEASE REMOVE":SPCFLG=1 NEXT I IF SPCFLG=1 END !INPUT #2 PURC,PURB,PURI !IF NNUMB=5 INPUT #2 PURIE !FOR I=1 TO NLINES ! M(I,2)=M(I,2)/PURC ! M(I,3)=M(I,3)/PURB ! M(I,4)=M(I,4)/PURI ! IF NNUMB=5 M(I,5)=M(I,5)/PURIE !NEXT I CLOSE #2 FILCNT=0 RERUN: OPEN #1,"PLOT"+FILCNT+".PRT",OUTPUT K=0 XMAX=0:YMAX=0 IF YAX=O GOTO JUMP2 ? YAX; ? " IS CURRENT SELECTION FOR Y-AXIS" JUMP2: INPUT "COLUMN NO. TO BE PLOTTED ON Y-AXIS?",YAX IF XAX=0 GOTO JUMP3 ? XAX; ? " IS CURRENT SELECTION FOR X-AXIS" JUMP3: INPUT "COLUMN NO. TO BE PLOTTED ON X-AXIS?",XAX DELETES: K=1+K ?DD(K);:?",";:?DU(K);:?" IS CURRENT DELETE BLOCK" INPUT "INDICATE BLOCK TO BE DELETED "DD(K),DU(K) IF DD(K)<=DU(K) GO TO CONTINUE PRINT "UPPER LIMIT MUST NOT BE SMALLER THAN LOWER LIMIT." K=K-1:GO TO DELETES CONTINUE: IF DU(K)<>0 GO TO DELETES IF TITLE="" GOTO JUMP4 ? TITLE;:?" IS CURRENT TITLE" JUMP4: ? "INPUT TITLE IF DESIRED" INPUT LINE NEWTITLE IF NEWTITLE<>"" THEN TITLE=NEWTITLE FOR I=1 TO NLINES SKPFLG=0 FOR J=1 TO K IF I=>DD(J) AND I==YMAX YMAX=Y IF X>=XMAX XMAX=X SKIP: NEXT I PRINT "MAXIMUM VALUE OF X IS ";XMAX PRINT "MAXIMUM VALUE OF Y IS ";YMAX IF XFULL=0 GOTO JUMP5 ? XFULL; YFULL;" ARE CURRENT X AND Y FULL SCALES" JUMP5: INPUT "INPUT FULL SCALE VALUE FOR X AND Y "XFULL,YFULL IF XFULL=0 GOTO JUMP6 XMAX=XFULL:YMAX=YFULL JUMP6: ! HP LASER PRINTER PLOT ROUTINE ! NOW SET XCALE AND YSCALE SO THAT XMAX*XSCALE=THE FULL WIDTH OF THE PLOT ! AND YMAX*YSCALE= THE FULL HEIGHT OF THE PLOT ! THE WIDTH OF THE PLOT IS 4800 ! THE HEIGHT OF THE PLOT IS 6000 XSCALE =4800/XMAX YSCALE =6000/YMAX ?#1, TWELVE'PITCH;TWELVE'LPI; ?#1, GOTOCOL7;TITLE; ?#1," FROM ";FILNAM; ?#1, " "+MONTH+"/"+DAY+"/"+YEAR; ?#1,CR;LF;LF;LF; ! NOW PRINT THE Y AXIS FOR I = 10 TO 1 STEP -1 ! change 10 to # of divisions in ?#1, USING "##.##",YMAX*I/10; ! the Y scale in these two lines ?#1, GOTOCOL5;"---";LF; ! GO TO COL 6 AND PRINT -- FOR J=1 TO 4 :?#1,GOTOCOL7;"-";LF; :NEXT J ! PRINT . ?#1,GOTOCOL6;"--";LF; FOR J=1 TO 4 :?#1,GOTOCOL7;"-";LF; :NEXT J ! PRINT . ?#1,CR; NEXT I ! NOW PRINT THE X AXIS ?#1," 0 ";POSITION;"436";HORIZONTAL;"+"; ?#1,POSITION;"-24";VERTICAL; FOR I=1 TO 8 ! 8 = number of X divisions FOR J = 1 TO 4 ?#1,"."; NEXT J ?#1,"!"; FOR J=1 TO 4 ?#1,"."; NEXT J ?#1,CHR(124); NEXT I ?#1,CR;LF;LF;POSITION;"436";HORIZONTAL;"0 "; ! NOW THE X AXIS LABELS FOR I=1 TO 8 ! 8 = # of X divisions ?#1,USING "###.##",I*XMAX/ 8; ! 8 = # of X divisions ?#1," "; NEXT I ! NOW PRINT THE POINTS FOR I=1 TO NLINES SKPFLG=0 FOR J=1 TO K IF I=>DD(J) AND I=5280 GO TO SKIPS ?#1 POSITION;X;HORIZONTAL; Y=6230-INT(YSCALE*Y +.5) IF Y<=0 GO TO SKIPS IF Y>7200 GO TO SKIPS ?#1 POSITION;Y;VERTICAL;LEFT(M$(I),1); SKIPS: NEXT I INPUT "DO YOU WANT TO PLOT A FUNCTION? ",QA$ IF UCS(QA$[1,1])<>"Y" GO TO ENDIT PCH$="." INPUT "ENTER CHARACTER FOR FUNCTION PLOT. DEFAULT IS PERIOD ",PCH$ ? "FUNCTION IS (A+B*X)/1+C*X)" INPUT "ENTER A,B,C "AVAL,BVAL,CVAL CHPOS=28 IF PCH$[1,1]<>"." CHPOS=0 FOR I=1 TO 81 X=(I-1)*XMAX/80 Y=(AVAL+BVAL*X)/(1+CVAL*X) IF X=999 OR Y=999 GO TO SKIP2 X=436+INT(XSCALE*X+.5) IF X>5280 GO TO SKIP2 ?#1 POSITION;X;HORIZONTAL; Y=6230-INT(YSCALE*Y +.5)-CHPOS IF Y<=0 GO TO SKIP2 IF Y>7200 GO TO SKIP2 ?#1 POSITION;Y;VERTICAL;PCH$[1,1]; SKIP2: NEXT I ! END OF PRINTER SPECIFIC CODE. XYFIND AND MOVE ROUTINES HAVE BEEN ELIMINATED. ENDIT: ?#1,CHR(13);CHR(12); CLOSE #1 XCALL SPOOL, "PLOT"+FILCNT+".PRT","QUME" INPUT "DO YOU WANT TO DO ANOTHER PLOT WITH THIS FILE? " DESIRE$ IF UCS(DESIRE$[1,1]) = "Y" FILCNT=FILCNT+1: GOTO RERUN INPUT "DO YOU WANT TO PLOT SOMETHING FROM ANOTHER FILE? "WANT$ IF UCS(WANT$[1,1]) = "Y" FILCNT=FILCNT+1: GOTO NEWFILE END