100 REM SAMPLE PROGRAM AND SUBROU-110 REM TINE FOR PRODUCING A BAR120 REM CHART.    WRITTEN BY130 REM THOMAS P. NEWDOME140 REM INITIALIZE CHARACTER SET150 DIM DAT(32),TITLE$(30)160 GRAPHICS 0:CB=57344:NB=(PEEK(742)-4)*256170 GRAPHICS 17:POSITION 4,10:? #6;"INITIALIZING"180 FOR II=0 TO 58:XX=II*8190 A1=CB+XX:A2=NB+XX200 FOR JJ=0 TO 7210 POKE A2+JJ,PEEK(A1+JJ)220 NEXT JJ:NEXT II230 GRAPHICS 17:POSITION 6,10:? #6;"STANDBY"240 ME=NB+512250 RESTORE 290260 FOR II=0 TO 20:A2=ME+II*8270 FOR JJ=0 TO 7:READ CH:POKE A2+JJ,CH280 NEXT JJ:NEXT II290 DATA 255,255,24,24,24,24,24,24300 DATA 255,255,24,24,0,0,0,0310 DATA 255,255,0,0,0,0,0,0320 DATA 3,3,3,3,3,3,3,31330 DATA 3,3,3,3,3,3,3,127340 DATA 0,0,0,0,0,0,0,0350 DATA 0,0,0,0,0,0,0,126360 DATA 0,0,0,0,0,0,126,126370 DATA 0,0,0,0,0,126,126,126380 DATA 0,0,0,0,126,126,126,126390 DATA 0,0,0,126,126,126,126,126400 DATA 0,0,126,126,126,126,126,126410 DATA 0,126,126,126,126,126,126,126420 DATA 126,126,126,126,126,126,126,126430 DATA 126,126,126,126,126,126,126,0440 DATA 126,126,126,126,126,126,0,0450 DATA 126,126,126,126,126,0,0,0460 DATA 126,126,126,126,0,0,0,0470 DATA 126,126,126,0,0,0,0,0480 DATA 126,126,0,0,0,0,0,0490 DATA 126,0,0,0,0,0,0,0500 REM BRANCH TO USERS PROGRAM510 GOTO 1480520 REM BAR CHART SUBROUTINE530 REM ARRAY DAT() AND TITLE$540 REM SHOULD BE PREPARED BY THE550 REM USERS PROGRAM560 PT=INT(DAT(2)):YR=DAT(1):LO=DAT(3)565 IF PT<1 OR PT>3 THEN ? "PLOT TYPE MUST BE 1,2, OR 3":STOP 570 VI=DAT(4):HF=36:LI=PT+1575 IF VI<0.01 THEN ? "THE RANGE FOR EACH VERTICAL MARK MUST BE > .01":STOP 580 IF PT=2 THEN HF=38590 IF PT=1 THEN HF=34:LI=11600 GRAPHICS 0:POKE 756,NB/256:POKE 755,0610 REM HORIZONTAL AXIS620 POSITION 10,20:? CHR$(2)630 POSITION 11,20640 ? CHR$(0);650 IF PEEK(91)>=HF THEN 710660 FOR XX=1 TO LI670 ? CHR$(1);680 NEXT XX690 GOTO 640700 REM HORIZONTAL LABELS710 HZ=11720 IF PT>1 THEN 780730 POSITION HZ,21740 ? "JFMAMJJASONDJFMAMJJASOND"750 POSITION HZ,22:? YR760 POSITION 23,22:? YR+1770 GOTO 830780 POSITION HZ,21:? YR790 IF PT=2 THEN YR=YR+1:HZ=HZ+4800 IF PT=3 THEN YR=YR+5:HZ=HZ+5810 IF YR>=100 THEN YR=YR-100820 IF PEEK(91)<35 THEN 780830 POSITION 24-(LEN(TITLE$))/2,23:? TITLE$;840 REM VERTICAL AXIS850 FOR XX=0 TO 19860 POSITION 9,XX:? CHR$(3)870 NEXT XX880 VA=0:MB=0:V2=VI*2890 ZE=19+INT(LO/VI)900 IF LO>=VI THEN ZE=19:VA=LO:MB=LO/VI910 IF ZE<0 THEN ZE=0920 VT=ZE:GOSUB 1380930 VT=VT+2940 IF VT>19 THEN 980950 VA=VA-V2960 GOSUB 1380970 GOTO 930980 VA=0:VT=ZE990 IF LO>=VI THEN VA=LO1000 VT=VT-21010 IF VT<0 THEN 10601020 VA=VA+V21030 GOSUB 13801040 GOTO 10001050 REM PLOT DATA1060 FOR II=11 TO HF1070 BK=DAT(II-6)/VI-MB1080 SN=SGN(BK):BK=ABS(BK)1090 IF SN=-1 AND ZE+BK>19 THEN BK=19-ZE1100 IF SN=1 AND ZE-BK<-1 THEN BK=ZE+11110 FB=INT(BK)1120 XX=(BK-FB)*81130 PB=INT(XX)1140 IF (XX-PB)>=0.5 THEN PB=PB+11150 IF PB=8 THEN FB=FB+1:PB=01160 IF SN=-1 THEN 12401170 IF FB=0 THEN 12201180 FOR JJ=0 TO FB-11190 POSITION II,ZE-JJ1200 ? CHR$(13):NEXT JJ1210 IF ZE-BK<=-1 THEN 13201220 POSITION II,ZE-FB:? CHR$(6+PB)1230 GOTO 13201240 POSITION II,ZE:? CHR$(6)1250 IF FB=0 THEN 12901260 FOR JJ=1 TO FB1270 POSITION II,ZE+JJ1280 ? CHR$(13):NEXT JJ1290 IF PB=0 THEN 13201300 POSITION II,ZE+FB+11310 ? CHR$(21-PB)1320 NEXT II1330 POKE 764,2551340 IF PEEK(764)=255 THEN 13401350 RETURN 1360 REM SUBROUTINE FOR RIGHT1370 REM JUSTIFICATION1380 IF VA>999999.99 OR VA<-99999.99 THEN STOP 1390 V3=ABS(VA):HZ=51400 IN=INT(V3):FA=INT((V3-IN)*100)1410 IF IN=0 THEN 14301420 HZ=5-INT(CLOG(IN))1430 IF VA<0 THEN 14501440 POSITION HZ,VT:? IN;".";FA;"0";:GOTO 14601450 POSITION HZ-1,VT:? "-";IN;".";FA;"0"1460 POSITION 9,VT:? CHR$(4)1470 RETURN 1480 REM BEGINNING OF USER PROGRAM1490 RESTORE 15201500 FOR X=1 TO 32:READ DATA1510 DAT(X)=DATA:NEXT X1520 DATA 80,1,-5,21530 DATA 0,.25,.5,.75,1,1.25,1.5,1.75,21540 DATA 0,-1,-2,-3,-4,-51550 DATA 0,4,6,8,10,12,24,32,12,10,9,8,61560 TITLE$="PLOT TYPE 1 - HIT ANY KEY"1570 GOSUB 5601580 DAT(2)=2:TITLE$="PLOT TYPE 2":GOSUB 5601590 DAT(2)=3:TITLE$="PLOT TYPE 3":GOSUB 5601600 GRAPHICS 0