5 DIM Y9$(50),Y7$(32),X7$(32),C6(54) 6 DIM V9$(56),Z9$(56),C6$(2) 7 LET V9$="---|---|---|---|---|---|---|---|---|---|---|---|---|---|" 8 FILL Z9$," " 10 REM****************************************************** 20 REM 30 REM-- PROGRAM NAME: HGRAPH:S 40 REM-- AUTHOR: L.D.Johnson REV: 1.1 01/19/79 50 REM 60 REM******************************************************* 70 REM 80 REM-- FNX$= PLOTS THE X-AXIS PARAMETERS 85 REM-- FNX$("X-LABEL",STEP START #,STEP SIZE,# OF STEPS) 87 REM 90 REM-- FNY$= PLOTS THE Y-AXIS PARAMETERS 95 REM-- FNY$("Y-LABEL",STEP START #,STEP SIZE,# OF STEPS) 97 REM 100 REM-- FNP$= PLOTS THE Y-AXIS STEPS + THE POINT PLOT 105 REM-- FNP$(MEDIAN,STEP SIZE,# OF STEPS,"PLOT CHARACTER") 107 REM-- C6(1-->54)= PLOT ARRAY (0 TO 13 MAX) 108 REM-- IF # OF STEPS=0 THEN NO Y-AXIS CHANGE 109 REM 110 REM-- FNL$= PLOTS THE GRID 115 REM-- FNL$(PLOT & GRID CONTROL) 117 REM-- FNL$(0)===> ADD GRID 120 REM-- FNL$(1)===> CLEAR OLD PLOT 125 REM-- FNL$(2)===> REMOVE GRID AND PLOT 130 REM 999 REM=== EXAMPLE MAIN PROGRAM USING THE PLOT FUNCTIONS === 1020 PRINT "\K";TAB(26);"SAMPLE GRAPH"; 1030 LET Y9$=FNY$("FREQUENCY",0,.6,13) 1050 LET X9$=FNX$("DNA AREA",0,.4,14) 1055 LET L9$=FNL$(2) 1060 FOR T=1 TO 54 1062 LET C6(T)=INT(13*RND(0)) 1064 NEXT 1070 LET P$=FNP$(3.5,0,14," ") 1080 LET L$=FNL$(0) 1100 FOR T=15 TO 35 1102 LET C6(T)=INT(8*RND(0)) 1104 NEXT 1110 LET P$=FNP$(1.5,.5,14,"\E") 1120 FOR T=1 TO 54 1130 LET C6(T)=INT(6*RND(0)) 1140 NEXT 1150 LET P$=FNP$(0,0,0,"*") 2000 GOTO 1055 9999 END 14999 REM=========PLOT=======FUNCTIONS===================== 15000 DEF FNY$(Y7$,Y7,Y8,Y9) 15010 REM-- Y7$= Y-AXIS LABEL 15020 REM-- Y7= Y-START, Y8= Y-STEP, Y9= Y- # OF STEPS 15030 IF LEN(Y7$)>15 THEN 15260 15040 LET Y6=7-INT(LEN(Y7$)/2) 15050 FOR Y5=Y6 TO LEN(Y7$)+2 15060 CURSOR Y5,0: PRINT Y7$(Y5-Y6+1,Y5-Y6+1); 15070 NEXT 15080 GOTO 15200 15200 IF Y7+Y8+Y9>999 THEN 15260 15205 LET Y4=14: FILL Y9$," " 15206 SET CP=1: CURSOR 14,3: PRINT " "; 15210 FOR Y5=1 TO Y9 15215 SET CP=1 15220 CURSOR Y4-Y5,3: PRINT %4F2;Y7; 15230 LET Y7=Y7+Y8 15240 NEXT 15250 GOTO 15270 15260 PRINT "Y-AXIS ERROR": STOP 15270 SET CP=0 15275 RETURN Y9$ 15280 FNEND 15299 REM=================================================== 15300 DEF FNX$(X7$,X7,X8,X9) 15310 REM--X7$= X-AXIS LABEL 15320 REM-- X7= X-START VALUE, X8= X-STEP SIZE, X9= X- # OF STEPS 15330 IF LEN(X7$)>63 THEN 15480 15340 LET X6=32-LEN(X7$)/2 15345 SET CP=0 15350 CURSOR 15,X6: PRINT X7$; 15400 IF X7+X8*X9>999 THEN 15480 15410 LET X4=5: FILL X9$," " 15420 FOR X5=1 TO X9*4 STEP 4 15425 SET CP=1 15430 CURSOR 13,X4+X5: IF X7<=-1 OR X7>=0 THEN 15436 15434 PRINT " -0 ";: GOTO 15438 15436 PRINT " ";%2I;INT(X7);" "; 15438 CURSOR 14,X4+X5: PRINT %4F2;ABS(X7-INT(X7));" "; 15440 LET X7=X7+X8 15460 NEXT 15462 CURSOR 13,X4+X5+1: PRINT " "; 15464 SET CP=0 15470 GOTO 15490 15480 PRINT "X-AXIS ERROR": STOP 15490 RETURN X9$ 15495 FNEND 15499 REM============================================= 15500 DEF FNP$(C9,C8,C7,C6$) 15510 REM--C9= CENTER POINT, C8= STEP SIZE 15515 REM--C6$=GRAPHIC CHARACTER 15520 REM--C7= # OF BLOCKS, C6= POINT ARRAY 15525 REM-- (IF C8=0 FOR A PLOT ONLY) 15530 LET X4=5: LET C4=C9-7*C8 15535 IF C8=0 THEN 15600: REM-- PLOT ONLY 15540 FOR C5=1 TO 14*4 STEP 4 15545 SET CP=1 15550 CURSOR 13,X4+C5: IF C4<=-1 OR C4>=0 THEN 15554 15552 PRINT " -0 ";: GOTO 15555 15554 PRINT " ";%2I;INT(C4);" "; 15555 CURSOR 14,X4+C5: PRINT %4F2;ABS(C4-INT(C4));" "; 15560 LET C4=C4+C8 15570 NEXT 15575 CURSOR 13,X4+C5+1: PRINT " "; 15600 SET CP=1 15605 FOR T9=1 TO 54 15610 IF C6(T9)=0 THEN 15635 15615 FOR T8=1 TO C6(T9) 15620 CURSOR 13-T8,T9+7: PRINT C6$; 15630 NEXT 15635 NEXT 15640 SET CP=0 15645 RETURN C9$ 15646 FNEND 15649 REM=================================================== 15650 DEF FNL$(Z9) 15660 REM-- FNL$= GRID PLOT & PLOT CLEANUP 15670 REM-- Z9=0 PLOT GRID 15680 REM-- Z9=1 OLD PLOT CLEANUP 15690 REM-- Z9=2 REMOVE GRID & PLOT 15750 SET CM=0 15755 IF Z9=0 THEN 15860 15757 IF Z9=2 THEN 15900 15760 FOR T9=1 TO 54 15765 IF C6(T9)=0 THEN 15790 15770 FOR T8=1 TO C6(T9) 15775 CURSOR 13-T8,T9+7: PRINT " "; 15780 NEXT 15790 NEXT 15800 GOTO 15950 15860 FOR C5=12 TO 1 STEP -1 15865 CURSOR C5,7: PRINT V9$; 15870 NEXT 15895 GOTO 15950 15900 FOR T8=1 TO 12 15920 CURSOR 13-T8,7: PRINT Z9$; 15930 NEXT 15940 SET CP=0 15950 RETURN C9$ 15960 FNEND