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›