This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM D itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"C Skip to contentSkip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
D Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
F itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"C itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"D itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"E Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
B Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
B Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
B Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
BA Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
AEBAAFBA\CD\B2 Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
BAF Skip to contentForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.
D\E7AD\D0\EDB\EDAD\B8\C9 itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"D itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"C itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"D itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"E itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"C itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"D itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"E itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"F itemtype='https://schema.org/Blog' itemscope='itemscope' class="wp-singular computer_media-template-default single single-computer_media postid-58376 wp-custom-logo wp-theme-astra wp-child-theme-astra-child ast-desktop ast-separate-container ast-left-sidebar astra-4.10.0 group-blog ast-blog-single-style-1 ast-custom-post-type ast-single-post ast-inherit-site-logo-transparent ast-hfb-header ast-full-width-primary-header ast-box-layout ast-normal-title-enabled astra-addon-4.10.0"C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN \n1010 FOR J=O1 TO OG \n1020 LET P(J)=T(I,J) \n1030 NEXT J \n1099 RETURN \n1110 LET SQ=O0 \n1120 LET SU=O0 \n1130 FOR J=O1 TO PER \n1140 LET SU=SU+T(I,J) \n1150 LET SQ=SQ+T(I,J)**O2 \n1160 NEXT J \n1170 LET AV=SU/PER \n1180 LET DEV=SQR (SQ/PER-AV**O2) \n1199 RETURN \n1600 PAUSE OB \n1610 POKE OH,OI \n1699 RETURN \n2010 CLS \n2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " \n2030 FOR K=O1 TO O6 \n2040 PRINT " ";K;". ";O$(K);,,, \n2050 NEXT K \n2060 PRINT ,,TAB O5;"ENTER OPTION." \n2070 LET Z$=INKEY$ \n2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 \n2090 CLS \n2100 GOTO VAL Z$*OU+OA \n3020 GOSUB OB \n3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" \n3060 INPUT I \n3070 IF I>OD THEN GOTO 3060 \n3100 PRINT AT 18,OD;I \n3130 IF T$(I)=M$ THEN GOTO 3200 \n3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" \n3150 GOSUB OE \n3160 IF Z$="N" THEN GOTO OA \n3200 CLS \n3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ \n3220 INPUT Y$ \n3230 IF LEN Y$>19 THEN GOTO 3220 \n3280 PRINT AT O6,O2;Y$ \n3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" \n3330 INPUT X$ \n3340 IF LEN X$>O7 THEN GOTO 3330 \n3380 PRINT AT O9,O2;X$ \n3400 PRINT ,," ACCEPT ?" \n3410 GOSUB OE \n3420 IF Z$="N" THEN GOTO 3200 \n3430 LET T$(I)=Y$ \n3440 LET P$(I)=X$ \n3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" \n3455 FAST \n3460 FOR J=O1 TO OG \n3470 LET T(I,J)=O0 \n3480 NEXT J \n3485 SLOW \n3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" \n3500 PAUSE OB \n3510 POKE OH,OI \n3999 GOTO OA \n4010 PRINT H$ \n4015 GOSUB OJ \n4020 GOSUB OK \n4030 SCROLL \n4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" \n4050 INPUT Y \n4060 IF Y>OG THEN GOTO 4050 \n4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" \n4110 INPUT STA \n4120 IF STA<O1 OR STA>OG THEN GOTO 4110 \n4200 FOR J=STA TO STA+Y-1 \n4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) \n4220 INPUT X \n4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 \n4240 PRINT AT OT,OL;X \n4260 PRINT AT OT,18;"ACCEPT ?" \n4270 GOSUB OE \n4280 IF Z$="N" THEN GOTO 4210 \n4290 LET T(I,J)=X \n4300 LET Y$=" " \n4310 LET Z$=STR$ T(I,J) \n4320 LET L=LEN Z$ \n4330 LET Y$(O8-L TO )=Z$ \n4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ \n4350 NEXT J \n4500 CLS \n4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" \n4520 GOSUB OE \n4530 IF Z$="N" THEN GOTO OA \n4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" \n4550 INPUT Y \n4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 \n4570 PRINT AT O9,O0;Y \n4590 INPUT X$ \n4600 IF LEN X$>15 THEN GOTO 4590 \n4620 PRINT AT O9,O5;X$ \n4640 PRINT ,,"ACCEPT ?" \n4650 GOSUB OE \n4660 IF Z$="N" THEN GOTO 4500 \n4670 LET Q(I)=Y \n4680 LET Q$(I)=X$ \n4999 GOTO OA \n5005 CLS \n5010 PRINT H$,,TAB OW;"OPTIONS", \n5020 FOR K=O7 TO 15 \n5030 PRINT " ";K-O6;". ";O$(K) \n5040 NEXT K \n5050 PRINT ,,"ENTER OPTION" \n5060 INPUT Z \n5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 \n5092 LET O=Z+6 \n5095 GOTO Z*OE+OM \n5100 GOSUB OJ \n5102 IF I>OD THEN GOTO 5100 \n5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" \n5106 INPUT PER \n5108 IF PER>30 THEN GOTO 5106 \n5110 PRINT AT O3,O8;PER \n5120 FAST \n5126 GOSUB ON \n5128 FOR J=PER TO OG \n5130 FOR K=O1 TO PER \n5132 LET P(J)=P(J)+T(I,J-K+O1) \n5134 NEXT K \n5136 NEXT J \n5138 SLOW \n5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ \n5150 GOSUB OX \n5199 GOTO OM \n5200 GOSUB OP \n5204 GOSUB ON \n5205 FAST \n5206 FOR J=O1 TO OG \n5207 IF T(I,J)=O0 THEN LET P(J)=999999 \n5208 IF T(I,J)=O0 THEN GOTO 5210 \n5209 LET P(J)=T(A,J)*OE/T(I,J) \n5210 NEXT J \n5212 SLOW \n5214 PRINT "PERCENTAGES";A$ \n5216 GOSUB OX \n5299 GOTO OM \n5300 GOSUB OJ \n5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" \n5304 INPUT LAG \n5310 PRINT AT O5,27;LAG \n5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 \n5317 FAST \n5318 GOSUB ON \n5320 FOR J=O1+LAG TO OG \n5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 \n5322 IF NOT T(I,J-LAG) THEN GOTO 5324 \n5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE \n5324 NEXT J \n5325 SLOW \n5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ \n5328 GOSUB OX \n5399 GOTO OM \n5400 GOSUB OJ \n5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" \n5404 INPUT Y \n5406 IF Y>=OG THEN GOTO 5404 \n5410 PRINT AT O5,26;Y \n5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" \n5418 LET Z$=INKEY$ \n5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 \n5422 IF Z$="<" THEN LET Y=Y*-O1 \n5424 PRINT AT O8,18;Z$ \n5426 PRINT ,,"ACCEPT ?" \n5428 GOSUB OE \n5430 IF Z$="N" THEN GOTO 5400 \n5431 FAST \n5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) \n5434 LET T(I,J)=T(I,J-Y) \n5436 NEXT J \n5437 SLOW \n5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" \n5440 GOSUB OX \n5499 GOTO OM \n5500 GOSUB OP \n5502 IF A>OD OR I>OD THEN GOTO 5500 \n5504 FAST \n5506 LET B=I \n5508 LET I=A \n5509 LET PER=OG \n5510 GOSUB OR \n5512 LET AA=AV \n5514 LET SA=DEV \n5516 LET I=B \n5518 GOSUB OR \n5520 LET AB=AV \n5522 LET SB=DEV \n5524 LET Z=O0 \n5526 FOR J=O1 TO OG \n5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) \n5530 NEXT J \n5532 LET Z=Z/OG \n5533 SLOW \n5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z \n5538 PRINT K$ \n5540 IF INKEY$="" THEN GOTO 5540 \n5599 GOTO OM \n5600 GOSUB OJ \n5602 GOSUB OK \n5603 SCROLL \n5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" \n5606 LET Z$=INKEY$ \n5608 IF Z$="" THEN GOTO 5606 \n5610 IF Z$="C" THEN COPY \n5699 GOTO OM \n5700 GOSUB OJ \n5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" \n5704 INPUT Y \n5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 \n5708 FAST \n5710 IF Y=O2 THEN GOTO 5716 \n5712 GOSUB OU \n5714 GOTO 5722 \n5716 FOR J=O1 TO OG \n5718 LET T(I,J)=P(J) \n5720 NEXT J \n5722 PRINT ,,"SERIES COPIED" \n5723 SLOW \n5724 GOSUB OX \n5799 GOTO OM \n5800 GOSUB OJ \n5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" \n5804 INPUT PER \n5806 IF PER>OG THEN GOTO 5804 \n5808 PRINT ,PER \n5814 FAST \n5816 GOSUB OR \n5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV \n5820 SLOW \n5828 PRINT K$ \n5830 IF INKEY$="" THEN GOTO 5830 \n5899 GOTO OM \n5900 GOTO OA \n6100 CLS \n6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; \n6120 INPUT STA \n6155 PRINT STA \n6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 \n6180 PRINT ,,"NUMBER OF PERIODS ? "; \n6190 INPUT PER \n6230 PRINT PER \n6250 IF STA+PER-O1>OG THEN GOTO 6100 \n6260 LET Y=P(STA) \n6270 LET Z=P(STA) \n6280 FOR K=STA TO STA+PER-O1 \n6290 IF P(K)<Y THEN LET Y=P(K) \n6300 IF P(K)>Z THEN LET Z=P(K) \n6310 NEXT K \n6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; \n6330 INPUT X \n6340 PRINT X \n6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; \n6360 INPUT W \n6370 PRINT W \n6390 IF X>Y OR W<Z THEN GOTO 6100 \n6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" \n6410 GOSUB OE \n6420 IF Z$="N" THEN GOTO 6000 \n6430 CLS \n6435 FAST \n6440 LET F=(W-X)/36 \n6450 FOR K=STA TO STA+PER-O1 \n6460 LET Z=INT ((P(K)-X)/F) \n6470 IF Z<O1 THEN LET Z=O1 \n6480 POKE (16521+K-STA),Z+O2 \n6490 NEXT K \n6500 POKE 16518,PER \n6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) \n6507 POKE 16516,Y \n6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) \n6520 POKE 16519,Z \n6525 SLOW \n6530 RAND USR 16581 \n6540 LET X=INT (Y/O2) \n6550 IF X<3 THEN GOTO 6630 \n6560 FOR K=18 TO O0 STEP -O2 \n6565 LET X$=M$( TO X-O1) \n6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) \n6571 IF LEN Z$>=X THEN GOTO 6574 \n6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ \n6573 GOTO 6575 \n6574 LET X$=Z$( TO X-O1) \n6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" \n6580 PRINT AT K+O3,X-O1;"\@@" \n6590 NEXT K \n6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" \n6640 INPUT Z$ \n6650 LET L=INT ((LEN Z$)/O2) \n6660 PRINT AT O0,O0;" " \n6670 PRINT AT O0,16-L;Z$ \n6672 INPUT Z$ \n6674 PRINT AT OT,O0;Z$ \n6760 LET Z$=INKEY$ \n6770 IF Z$="C" THEN COPY \n6790 IF CODE Z$<>OV THEN GOTO 6760 \n6800 GOTO OA \n7010 GOSUB OJ \n7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" \n7030 INPUT W \n7040 IF W>30 THEN GOTO 7030 \n7060 PRINT AT O6,O8;W \n7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" \n7100 INPUT PER \n7130 PRINT AT O9,OL;PER \n7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" \n7170 INPUT X \n7200 PRINT AT OW,OL;X \n7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 \n7240 PRINT "PARAMETERS DO NOT FIT" \n7250 GOSUB OX \n7265 GOTO 7000 \n7270 FAST \n7280 GOSUB ON \n7300 LET FZ=O0 \n7310 LET FX=O0 \n7320 FOR K=O1 TO W \n7330 LET FZ=FZ+K**O2 \n7340 LET FX=FX+K \n7350 NEXT K \n7355 LET Z=I \n7360 FOR J=O1 TO W \n7370 LET MA=O0 \n7380 FOR K=O1 TO W \n7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) \n7400 NEXT K \n7410 LET P(X-W+J-O1)=MA \n7420 NEXT J \n7430 FOR I=1 TO PER \n7440 LET SY=O0 \n7450 LET SX=O0 \n7460 FOR K=O1 TO W \n7470 LET SY=SY+P(X+I-W+K-O2) \n7480 LET SX=SX+P(X+I-W+K-O2)*K \n7490 NEXT K \n7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) \n7510 LET IN=(SY-SL*FX)/W \n7520 LET MA=SL*(W+I)+IN \n7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) \n7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) \n7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) \n7555 LET SOS=V1+V2+V3 \n7560 LET MB=MA+SOS \n7570 LET P(X+I-O1)=MB \n7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) \n7590 NEXT I \n7595 SLOW \n7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" \n7610 PAUSE OB \n7620 POKE OH,OI \n7630 GOTO OA \n8000 PRINT H$,,"SAVE REQUIRED ?" \n8010 GOSUB OE \n8020 IF Z$="N" THEN GOTO 9999 \n8030 PRINT "ENTER NAME" \n8040 INPUT Z$ \n8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" \n8060 IF INKEY$="" THEN GOTO 8060 \n8070 SAVE Z$ \n8075 SLOW \n8080 GOTO OA \n9999 STOPForecasting Graph
This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.
- FC-Grph.z81 is an EightyOne emulator snapshot of the running program.
- FC-Grph.wav has been edited to remove noise and provide more of a square wave signal.
- FC-Grph.b81 is an EightyOne emulator text listing.
Content
Source Code
10 REM \8D\40\1C\00\00\03\00\03\03\03\03\03\03\03\03\03\03\03\08\03\03\03\03\03\03\03\03\08\05\09\0D\0F\13\16\1C\16\16\14\17\18\1D\22\20\20\1E\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\21\86\40\00\00\2B\2B\00\00\2B\36\40\2B\36\89\3A\87\40\32\88\40\2A\82\40\5E\7B\32\85\40\3A\85\40\47\3A\84\40\4F\16\9B\7A\CD\B2\0B\3A\85\40\4F\0D\79\32\85\40\20\E7\21\84\40\56\14\72\3A\88\40\3D\32\88\40\20\D0\ED\5B\82\40\13\ED\53\82\40\3A\86\40\3D\32\86\40\20\B8\C9\1D\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C\1D\1E\1F\20\21\22\23\24\25\1C 15 REM SZX-TSA V2820605 20 GOTO OA 110 LET Z$=INKEY$ 120 IF Z$="" OR Z$<>"Y" AND Z$<>"N" THEN GOTO 110 199 RETURN 203 FAST 205 PRINT H$;TAB O8;"%D%E%S%C%R%I%P%T%I%O%N %P%E%R%I%O%D" 210 FOR K=O1 TO OD 220 PRINT TAB O1;K;".";TAB O4;T$(K);" ";P$(K) 230 NEXT K 240 SLOW 299 RETURN 300 FAST 307 PRINT AT O1,O0;I;" ";T$(K);" ";P$(K) 310 FOR J=O1 TO OC 315 FOR L=O0 TO 40 STEP OC 320 LET Z$=" " 325 LET Y$=STR$ T(I,J+L) 330 IF LEN Y$>=O7 THEN GOTO 345 335 LET Z$(O7-LEN Y$ TO O7)=Y$ 340 GOTO 350 345 LET Z$=Y$( TO O7) 350 PRINT J+L; 355 IF J+L<10 THEN PRINT " "; 360 PRINT "\##";Z$; 365 IF L<30 THEN PRINT "% "; 370 NEXT L 375 NEXT J 380 SLOW 399 RETURN 410 FOR K=O1 TO OG 420 LET P(K)=O0 430 NEXT K 499 RETURN 510 LET Z$=INKEY$ 520 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 THEN GOTO 510 530 LET Y$=Y$+Z$ 599 RETURN 610 LET Z$=INKEY$ 620 IF Z$="" OR CODE Z$<28 AND Z$<>"." OR CODE Z$>37 AND CODE Z$<>114 AND CODE Z$<>118 THEN GOTO 610 630 IF CODE Z$=114 THEN GOTO 2000 640 IF CODE Z$=118 THEN GOTO 690 650 LET Y$=Y$+Z$ 660 RETURN 690 LET L=O7 699 RETURN 705 CLS 720 GOSUB OB 730 PRINT ,,"WHICH TIME SERIES DO YOU WISH TO USE ? \##\##" 740 INPUT Y 750 IF Y>OD THEN GOTO 740 760 PRINT AT OC,O8;Y 770 LET I=Y 780 LET K=Y 790 PRINT "ACCEPT ?" 800 GOSUB OE 810 IF Z$="N" THEN GOTO 700 820 CLS 899 RETURN 910 CLS 920 PRINT H$,,O$(O),,,"ENTER NO. OF SERIES %A" 930 INPUT A 940 IF A>OD THEN GOTO 930 945 PRINT AT O5,OF;A 950 PRINT ,,"ENTER NO. OF SERIES %B" 960 INPUT I 970 IF I>OD THEN GOTO 960 980 PRINT AT O7,OF;I 999 RETURN 1010 FOR J=O1 TO OG 1020 LET P(J)=T(I,J) 1030 NEXT J 1099 RETURN 1110 LET SQ=O0 1120 LET SU=O0 1130 FOR J=O1 TO PER 1140 LET SU=SU+T(I,J) 1150 LET SQ=SQ+T(I,J)**O2 1160 NEXT J 1170 LET AV=SU/PER 1180 LET DEV=SQR (SQ/PER-AV**O2) 1199 RETURN 1600 PAUSE OB 1610 POKE OH,OI 1699 RETURN 2010 CLS 2020 PRINT H$,,TAB OW;"%O%P%T%I%O%N%S"," " 2030 FOR K=O1 TO O6 2040 PRINT " ";K;". ";O$(K);,,, 2050 NEXT K 2060 PRINT ,,TAB O5;"ENTER OPTION." 2070 LET Z$=INKEY$ 2080 IF Z$="" OR CODE Z$<29 OR CODE Z$>34 THEN GOTO 2070 2090 CLS 2100 GOTO VAL Z$*OU+OA 3020 GOSUB OB 3050 PRINT ,,"ENTER NO. OF SERIES TO BE SET UP" 3060 INPUT I 3070 IF I>OD THEN GOTO 3060 3100 PRINT AT 18,OD;I 3130 IF T$(I)=M$ THEN GOTO 3200 3140 PRINT "TIME SERIES ";I;" IN USE - PROCEED ?" 3150 GOSUB OE 3160 IF Z$="N" THEN GOTO OA 3200 CLS 3210 PRINT H$,," TIME SERIES NUMBER ";I,,," TIME SERIES NAME (MAX 19 CHR$ )",,," ";M$ 3220 INPUT Y$ 3230 IF LEN Y$>19 THEN GOTO 3220 3280 PRINT AT O6,O2;Y$ 3310 PRINT ,," PERIOD DEFINITION (MAX 7 CHR$ )" 3330 INPUT X$ 3340 IF LEN X$>O7 THEN GOTO 3330 3380 PRINT AT O9,O2;X$ 3400 PRINT ,," ACCEPT ?" 3410 GOSUB OE 3420 IF Z$="N" THEN GOTO 3200 3430 LET T$(I)=Y$ 3440 LET P$(I)=X$ 3450 LET Q$(I)="\##\##\##\##\##\##\##\##\##\##" 3455 FAST 3460 FOR J=O1 TO OG 3470 LET T(I,J)=O0 3480 NEXT J 3485 SLOW 3490 PRINT ,,,," SERIES NOW SET UP WITH 60 BLANK PERIODS" 3500 PAUSE OB 3510 POKE OH,OI 3999 GOTO OA 4010 PRINT H$ 4015 GOSUB OJ 4020 GOSUB OK 4030 SCROLL 4040 PRINT "NO. OF PERIODS DATA TO ENTER? \@@\@@" 4050 INPUT Y 4060 IF Y>OG THEN GOTO 4050 4100 PRINT AT OT,O0;Y;" PERIODS STARTING PERIOD ? \@@\@@" 4110 INPUT STA 4120 IF STA<O1 OR STA>OG THEN GOTO 4110 4200 FOR J=STA TO STA+Y-1 4210 PRINT AT OT,O0;"PERIOD ";J;" \##\##\##\##\##\##\##";M$( TO 15) 4220 INPUT X 4230 IF LEN (STR$ X)>O7 THEN GOTO 4220 4240 PRINT AT OT,OL;X 4260 PRINT AT OT,18;"ACCEPT ?" 4270 GOSUB OE 4280 IF Z$="N" THEN GOTO 4210 4290 LET T(I,J)=X 4300 LET Y$=" " 4310 LET Z$=STR$ T(I,J) 4320 LET L=LEN Z$ 4330 LET Y$(O8-L TO )=Z$ 4340 PRINT AT J-OC*(J>OC)-OC*(J>40),O2+11*(J>OC)+11*(J>40);Y$ 4350 NEXT J 4500 CLS 4510 PRINT H$,,"PERIOD ";Q(I);" CURRENTLY IDENTIFIED AS ";Q$(I),"CHANGE THIS ? \@@" 4520 GOSUB OE 4530 IF Z$="N" THEN GOTO OA 4540 PRINT ;,,"ENTER NEW PERIOD AND IDENTIFY",,,"\@@\@@ \@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@\@@" 4550 INPUT Y 4560 IF LEN (STR$ Y)>O2 THEN GOTO 4550 4570 PRINT AT O9,O0;Y 4590 INPUT X$ 4600 IF LEN X$>15 THEN GOTO 4590 4620 PRINT AT O9,O5;X$ 4640 PRINT ,,"ACCEPT ?" 4650 GOSUB OE 4660 IF Z$="N" THEN GOTO 4500 4670 LET Q(I)=Y 4680 LET Q$(I)=X$ 4999 GOTO OA 5005 CLS 5010 PRINT H$,,TAB OW;"OPTIONS", 5020 FOR K=O7 TO 15 5030 PRINT " ";K-O6;". ";O$(K) 5040 NEXT K 5050 PRINT ,,"ENTER OPTION" 5060 INPUT Z 5070 IF Z<O1 OR Z>O9 THEN GOTO 5060 5092 LET O=Z+6 5095 GOTO Z*OE+OM 5100 GOSUB OJ 5102 IF I>OD THEN GOTO 5100 5104 PRINT TAB O5;O$(O7),,,"HOW MANY PERIODS IN MOVING AVERAGE ? \@@\@@" 5106 INPUT PER 5108 IF PER>30 THEN GOTO 5106 5110 PRINT AT O3,O8;PER 5120 FAST 5126 GOSUB ON 5128 FOR J=PER TO OG 5130 FOR K=O1 TO PER 5132 LET P(J)=P(J)+T(I,J-K+O1) 5134 NEXT K 5136 NEXT J 5138 SLOW 5140 PRINT ,,"MOVING AVERAGE OF SERIES ";I;A$ 5150 GOSUB OX 5199 GOTO OM 5200 GOSUB OP 5204 GOSUB ON 5205 FAST 5206 FOR J=O1 TO OG 5207 IF T(I,J)=O0 THEN LET P(J)=999999 5208 IF T(I,J)=O0 THEN GOTO 5210 5209 LET P(J)=T(A,J)*OE/T(I,J) 5210 NEXT J 5212 SLOW 5214 PRINT "PERCENTAGES";A$ 5216 GOSUB OX 5299 GOTO OM 5300 GOSUB OJ 5302 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS LAG \@@\@@" 5304 INPUT LAG 5310 PRINT AT O5,27;LAG 5316 IF LAG<O1 OR LAG>58 THEN GOTO 5300 5317 FAST 5318 GOSUB ON 5320 FOR J=O1+LAG TO OG 5321 IF NOT T(I,J-LAG) THEN LET P(J)=999999 5322 IF NOT T(I,J-LAG) THEN GOTO 5324 5323 LET P(J)=T(I,J)*OE/T(I,J-LAG)-OE 5324 NEXT J 5325 SLOW 5326 PRINT ,,"GROWTH RATES COMPUTED AND";A$ 5328 GOSUB OX 5399 GOTO OM 5400 GOSUB OJ 5402 PRINT H$,,O$(O),,,"ENTER NO.OF PERIODS SHIFT \@@\@@" 5404 INPUT Y 5406 IF Y>=OG THEN GOTO 5404 5410 PRINT AT O5,26;Y 5416 PRINT ,,"DIRECTION OF SHIFT?",,"LEFT%< OR RIGHT %> \@@" 5418 LET Z$=INKEY$ 5420 IF Z$<>"<" AND Z$<>">" THEN GOTO 5418 5422 IF Z$="<" THEN LET Y=Y*-O1 5424 PRINT AT O8,18;Z$ 5426 PRINT ,,"ACCEPT ?" 5428 GOSUB OE 5430 IF Z$="N" THEN GOTO 5400 5431 FAST 5432 FOR J=O0+O1*(Y<O0)+OG*(Y>O0) TO (O1*(Y>O0)+Y*(Y>O0))+(OG+Y)*(Y<O0) STEP -O1*(SGN Y) 5434 LET T(I,J)=T(I,J-Y) 5436 NEXT J 5437 SLOW 5438 PRINT ,,"SERIES NO. ";I;" SHIFTED ";Y;" PERIODS" 5440 GOSUB OX 5499 GOTO OM 5500 GOSUB OP 5502 IF A>OD OR I>OD THEN GOTO 5500 5504 FAST 5506 LET B=I 5508 LET I=A 5509 LET PER=OG 5510 GOSUB OR 5512 LET AA=AV 5514 LET SA=DEV 5516 LET I=B 5518 GOSUB OR 5520 LET AB=AV 5522 LET SB=DEV 5524 LET Z=O0 5526 FOR J=O1 TO OG 5528 LET Z=Z+((T(A,J)-AA)/SA)*((T(B,J)-AB)/SB) 5530 NEXT J 5532 LET Z=Z/OG 5533 SLOW 5534 PRINT ,,"CORRELATION COEFFICIENT IS ";Z 5538 PRINT K$ 5540 IF INKEY$="" THEN GOTO 5540 5599 GOTO OM 5600 GOSUB OJ 5602 GOSUB OK 5603 SCROLL 5604 PRINT "PRESS %C TO COPY-ANY TO RETURN" 5606 LET Z$=INKEY$ 5608 IF Z$="" THEN GOTO 5606 5610 IF Z$="C" THEN COPY 5699 GOTO OM 5700 GOSUB OJ 5702 PRINT H$,,O$(O),,,"ENTER %1 TO COPY TO OR %2 TO COPY FROM THE UTILITY SERIES" 5704 INPUT Y 5706 IF Y<O1 OR Y>O2 THEN GOTO 5704 5708 FAST 5710 IF Y=O2 THEN GOTO 5716 5712 GOSUB OU 5714 GOTO 5722 5716 FOR J=O1 TO OG 5718 LET T(I,J)=P(J) 5720 NEXT J 5722 PRINT ,,"SERIES COPIED" 5723 SLOW 5724 GOSUB OX 5799 GOTO OM 5800 GOSUB OJ 5802 PRINT H$,,O$(O),"ENTER NUMBER OF RELEVANT PERIODS" 5804 INPUT PER 5806 IF PER>OG THEN GOTO 5804 5808 PRINT ,PER 5814 FAST 5816 GOSUB OR 5818 PRINT ,,"STANDARD DEVIATION IS ";DEV,"MEAN IS ";AV 5820 SLOW 5828 PRINT K$ 5830 IF INKEY$="" THEN GOTO 5830 5899 GOTO OM 5900 GOTO OA 6100 CLS 6110 PRINT H$,," %G%R%A%P%H% %P%L%O%T",,,"NUMBER OF START PERIOD ? "; 6120 INPUT STA 6155 PRINT STA 6170 IF STA<O1 OR STA>=OG THEN GOTO 6100 6180 PRINT ,,"NUMBER OF PERIODS ? "; 6190 INPUT PER 6230 PRINT PER 6250 IF STA+PER-O1>OG THEN GOTO 6100 6260 LET Y=P(STA) 6270 LET Z=P(STA) 6280 FOR K=STA TO STA+PER-O1 6290 IF P(K)<Y THEN LET Y=P(K) 6300 IF P(K)>Z THEN LET Z=P(K) 6310 NEXT K 6320 PRINT ,,"MAXIMUM VALUE IN RANGE IS ";Z,"MINIMUM VALUE IN RANGE IS ";Y,"RANGE IS ";Z-Y,,"ENTER BASE VALUE FOR PIXEL 0 "; 6330 INPUT X 6340 PRINT X 6350 PRINT "ENTER TOP VALUE FOR PIXEL 36 "; 6360 INPUT W 6370 PRINT W 6390 IF X>Y OR W<Z THEN GOTO 6100 6400 PRINT "%B%A%S%E% %V%A%L%U%E% %I%S ";X,"%M%I%N%I%M%U%M% %V%A%L%U%E% %I%S ";Y,"%M%A%X%I%M%U%M% %V%A%L%U%E% %I%S ";Z,"%T%O%P% %O%F% %G%R%A%P%H% %I%S ";W,"ACCEPT ?" 6410 GOSUB OE 6420 IF Z$="N" THEN GOTO 6000 6430 CLS 6435 FAST 6440 LET F=(W-X)/36 6450 FOR K=STA TO STA+PER-O1 6460 LET Z=INT ((P(K)-X)/F) 6470 IF Z<O1 THEN LET Z=O1 6480 POKE (16521+K-STA),Z+O2 6490 NEXT K 6500 POKE 16518,PER 6505 LET Y=O4+12*(PER<OS)+INT (.5*(OG-PER)*(PER<OG AND PER>25)) 6507 POKE 16516,Y 6510 LET Z=O1*(PER>24)+O2*(PER<OS)+O1*(PER<15) 6520 POKE 16519,Z 6525 SLOW 6530 RAND USR 16581 6540 LET X=INT (Y/O2) 6550 IF X<3 THEN GOTO 6630 6560 FOR K=18 TO O0 STEP -O2 6565 LET X$=M$( TO X-O1) 6570 LET Z$=STR$ (W-(F*((K*O2)-O1))) 6571 IF LEN Z$>=X THEN GOTO 6574 6572 LET X$((X-O1)-LEN Z$ TO X-O1)=Z$ 6573 GOTO 6575 6574 LET X$=Z$( TO X-O1) 6575 PRINT AT K+O2,O0;X$;TAB X-O1;"\##" 6580 PRINT AT K+O3,X-O1;"\@@" 6590 NEXT K 6630 PRINT AT O0,O0;"%E%N%T%E%R% %T%I%T%L%E" 6640 INPUT Z$ 6650 LET L=INT ((LEN Z$)/O2) 6660 PRINT AT O0,O0;" " 6670 PRINT AT O0,16-L;Z$ 6672 INPUT Z$ 6674 PRINT AT OT,O0;Z$ 6760 LET Z$=INKEY$ 6770 IF Z$="C" THEN COPY 6790 IF CODE Z$<>OV THEN GOTO 6760 6800 GOTO OA 7010 GOSUB OJ 7020 PRINT H$,," %F%O%R%E%C%A%S%T%I%N%G",,,"ENTER NO. OF PERIODS IN MOVING AVERAGE" 7030 INPUT W 7040 IF W>30 THEN GOTO 7030 7060 PRINT AT O6,O8;W 7090 PRINT ,,"ENTER NO. OF PERIODS TO BE FORECAST" 7100 INPUT PER 7130 PRINT AT O9,OL;PER 7160 PRINT ,,"ENTER NO. OF START PERIOD FOR FORECAST" 7170 INPUT X 7200 PRINT AT OW,OL;X 7230 IF X-W*O2>=O1 AND X+PER<=OG THEN GOTO 7270 7240 PRINT "PARAMETERS DO NOT FIT" 7250 GOSUB OX 7265 GOTO 7000 7270 FAST 7280 GOSUB ON 7300 LET FZ=O0 7310 LET FX=O0 7320 FOR K=O1 TO W 7330 LET FZ=FZ+K**O2 7340 LET FX=FX+K 7350 NEXT K 7355 LET Z=I 7360 FOR J=O1 TO W 7370 LET MA=O0 7380 FOR K=O1 TO W 7390 LET MA=MA+T(Z,J+X-O2*W+K-O1) 7400 NEXT K 7410 LET P(X-W+J-O1)=MA 7420 NEXT J 7430 FOR I=1 TO PER 7440 LET SY=O0 7450 LET SX=O0 7460 FOR K=O1 TO W 7470 LET SY=SY+P(X+I-W+K-O2) 7480 LET SX=SX+P(X+I-W+K-O2)*K 7490 NEXT K 7500 LET SL=(SY*FX/W-SX)/((FX**O2)/W-FZ) 7510 LET IN=(SY-SL*FX)/W 7520 LET MA=SL*(W+I)+IN 7530 LET V1=.5*(P(X+I-O2)-(SL*(W+I-O1)+IN)) 7540 LET V2=.25*(P(X+I-O3)-(SL*(W+I-O2)+IN)) 7550 LET V3=.25*(P(X+I-O4)-(SL*(W+I-O3)+IN)) 7555 LET SOS=V1+V2+V3 7560 LET MB=MA+SOS 7570 LET P(X+I-O1)=MB 7580 LET T(Z,X+I-O1)=T(Z,X+I-O1-W)+(P(X+I-O1)-P(X+I-O2)) 7590 NEXT I 7595 SLOW 7600 PRINT "FORECAST IS NOW IN SERIES ";Z,"AND MOVING AVERAGE OF FORECAST","IS IN UTILITY ARRAY" 7610 PAUSE OB 7620 POKE OH,OI 7630 GOTO OA 8000 PRINT H$,,"SAVE REQUIRED ?" 8010 GOSUB OE 8020 IF Z$="N" THEN GOTO 9999 8030 PRINT "ENTER NAME" 8040 INPUT Z$ 8050 PRINT "%S%T%A%R%T% %T%A%P%E% %T%H%E%N% %P%R%E%S%S% %A%N%Y% %K%E%Y" 8060 IF INKEY$="" THEN GOTO 8060 8070 SAVE Z$ 8075 SLOW 8080 GOTO OA 9999 STOPPeople
No people associated with this content.