ZX Chart

Developer(s): James Hill
Date: 1985
Type: Cassette
Platform(s): TS 1000

Draws data charts.

Content

Appears On

Related Products

Related Articles

Related Content

Image Gallery

ZX Chart

Source Code

   1 REM %Z%X% %C%H%A%R%T-(C) 1985 JAMES L. HILL
  20 CLEAR 
  30 LET MENU=2500
  50 LET E$="                                "
  52 LET O$="\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\.."
  54 LET U$="\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''"
 110 CLS 
 130 PRINT "DATA ENTRY",,U$;"DATA ID? (8 CHARACTERS MAX)"
 140 INPUT H$
 160 PRINT AT 2,7;"- ";H$;E$;AT 4,0;"NO. OF PARAMETERS? (18 MAX)"
 170 INPUT NP
 200 LET G=INT (900/NP)
 205 IF G>99 THEN LET G=99
 210 PRINT AT 4,17;"- ";NP;E$;AT 6,0;;"NO. OF CASES? (";G;" MAX)"
 220 INPUT NC
 240 PRINT AT 6,12;"- ";NC;E$;AT 21,0;"ABOVE INFORMATION CORRECT? (Y/N)"
 260 INPUT D$
 270 IF D$="N" THEN GOTO 110
 290 DIM P(NP,NC)
 300 DIM D(NP,4)
 310 DIM N$(NP,5)
 510 CLS 
 520 PRINT "ENTER PARAMETER NAMES-5 CHRS MAX";U$;AT 18,0;O$;"TOUCH <ENTER> TO LEAVE UNCHANGED""M"" = RETURN TO MENU","""A"" = ADVANCE TO DATA ENTRY"
 525 LET G=2
 530 FOR N=1 TO NP
 540 PRINT AT G,0;"PARAMETER ";N;".",N$(N)
 550 INPUT D$
 555 IF D$="M" THEN GOTO 2500
 560 IF D$="A" THEN GOTO 1000
 565 IF D$="" THEN GOTO 580
 570 LET N$(N)=D$
 580 PRINT AT G,16;N$(N)
 582 LET G=G+1
 584 IF G<>12 AND N<>NP THEN GOTO 700
 600 PRINT AT 17,0;"ABOVE INFORMATION CORRECT? (Y/N)"
 610 INPUT D$
 620 IF D$="N" THEN LET N=N-10
 622 IF N<0 THEN LET N=0
 625 FOR G=2 TO 17
 630 PRINT AT G,0;E$
 636 NEXT G
 640 LET G=2
 700 NEXT N
\n1010 FOR P=1 TO NP
\n1020 LET G=4
\n1030 CLS 
\n1040 PRINT "PARAMETER ";P;". ";N$(P),"ENTER VALUES FOR EACH CASE",U$
\n1045 PRINT AT 18,0;O$;"TOUCH <ENTER> TO LEAVE UNCHANGED""M"" = RETURN TO MENU","""A"" = ADVANCE TO NEXT PARAMETER"
\n1050 FOR N=1 TO NC
\n1060 PRINT AT G,0;"CASE NUMBER ";N;"?",P(P,N)
\n1070 INPUT D$
\n1072 IF D$="M" THEN GOTO 2000
\n1074 IF D$="A" THEN GOTO 1230
\n1080 IF D$<>"" THEN LET P(P,N)=VAL D$
\n1090 PRINT AT G,16;P(P,N);E$
\n1100 LET G=G+1
\n1110 IF G<>14 AND N<>NC THEN GOTO 1220
\n1120 PRINT AT 17,0;"ABOVE INFORMATION CORRECT? (Y/N)"
\n1130 INPUT D$
\n1140 IF D$="Y" THEN GOTO 1180
\n1150 IF D$<>"N" THEN GOTO 1130
\n1160 LET N=N-10
\n1170 IF N<0 THEN LET N=0
\n1190 FOR G=4 TO 17
\n1200 PRINT AT G,0;E$
\n1210 NEXT G
\n1215 LET G=4
\n1220 NEXT N
\n1230 NEXT P
\n1240 GOTO 2000
\n1510 CLS 
\n1520 PRINT "MODIFY SPECIFIC ENTRY",U$;"PARAMETER ID NUMBER?"
\n1530 INPUT Y$
\n1540 PRINT AT 2,21;"- ";Y$;AT 6,0;"CASE NUMBER?"
\n1550 INPUT X$
\n1560 PRINT AT 6,11;"- ";X$;AT 10,0;"CURRENT VALUE= ";P(VAL Y$,VAL X$);AT 14,0;"ENTER NEW VALUE   -OR           TOUCH <ENTER> TO LEAVE UNCHANGED"
\n1570 INPUT D$
\n1580 IF D$="" THEN GOTO 1600
\n1590 LET P(VAL Y$,VAL X$)=VAL D$
\n1600 IF D$<>"" THEN PRINT AT 18,0;"NEW VALUE= ";VAL D$
\n1605 PRINT AT 21,0;"ADDITIONAL MODIFICATIONS? (Y/N)"
\n1610 INPUT D$
\n1620 IF D$="N" THEN GOTO 2000
\n1630 GOTO 1500
\n2010 FOR N=1 TO NP
\n2015 FOR M=1 TO NC
\n2016 IF P(N,M)<>-999 THEN GOTO 2020
\n2017 NEXT M
\n2018 LET HM=0
\n2019 GOTO 2030
\n2020 LET HM=P(N,M)
\n2030 LET LM=HM
\n2040 LET TM=0
\n2050 LET S2=0
\n2055 LET G=0
\n2060 FOR M=1 TO NC
\n2070 IF P(N,M)=-999 THEN GOTO 2120
\n2075 LET G=G+1
\n2080 IF P(N,M)>HM THEN LET HM=P(N,M)
\n2090 IF P(N,M)<LM THEN LET LM=P(N,M)
\n2100 LET TM=TM+P(N,M)
\n2110 LET S2=S2+P(N,M)*P(N,M)
\n2120 NEXT M
\n2130 LET D(N,1)=HM
\n2140 LET D(N,2)=LM
\n2150 LET D(N,3)=TM/G
\n2160 LET D(N,4)=SQR ((G*S2-TM*TM)/(G*G))
\n2170 NEXT N
\n2510 CLS 
\n2520 PRINT "   MENU- ENTER CHOICE (1 - 7)   ";U$;"1. SCATTERGRAPH- PARAMETER VS      CASE NUMBER";AT 5,0;"2. SCATTERGRAPH- PARAMETER VS      PARAMETER";AT 8,0;"3. FREQUENCY DISTRIBUTION"
\n2530 PRINT AT 10,0;"4. BAR GRAPH- SELECTED CASE-       PARAMETERS RELATIVE TO          THEIR RESPECTIVE AVERAGES";AT 14,0;"5. ENTER/VIEW/MODIFY DATA";AT 16,0;"6. MODIFY SPECIFIC ENTRY";AT 18,0;"7. SAVE PROGRAM WITH DATA";AT 20,0;"8. CLEAR AND REFORMAT",O$
\n2560 INPUT D$
\n2570 LET D$=D$(1)
\n2590 CLS 
\n2600 GOTO 2610*(D$="8")+9000*(D$="7")+3000*(D$="1")+4000*(D$="2")+5000*(D$="4")+6000*(D$="3")+500*(D$="5")+1500*(D$="6")
\n2610 PRINT "CONFIRM",,"  ""CLEAR AND REFORMAT"" (Y/N)"
\n2620 INPUT D$
\n2630 GOTO (D$="Y")+2500*(D$<>"Y")
\n2700 PRINT AT 12,0;"AUTO-COPY/SCREEN PREVIEW?  (C/S)"
\n2710 INPUT C$
\n2720 IF C$="C" THEN PRINT AT 12,0;"AUTO-COPY";E$
\n2730 IF C$="S" THEN PRINT AT 12,0;"SCREEN PREVIEW";E$
\n2740 PRINT AT 21,0;"ABOVE INFORMATION CORRECT? (Y/N)"
\n2750 INPUT G$
\n2760 IF G$="N" THEN GOTO 2590
\n2770 CLS 
\n2780 RETURN 
\n3010 PRINT "ID NUMBERS OF PARAMETERS TO BE  GRAPHED?",,"(ENTER AS "".NN.NN.ETC"" OR ""ALL"")"
\n3020 INPUT Y$
\n3022 PRINT AT 1,7;"-";E$;AT 2,0;Y$;E$
\n3028 GOSUB 2700
\n3030 FOR Y=1 TO NP*(Y$="ALL")+LEN Y$/3*(Y$<>"ALL")
\n3050 IF Y$="ALL" THEN LET N=Y
\n3060 IF Y$<>"ALL" THEN LET N=VAL Y$(Y*3-1 TO Y*3)
\n3070 CLS 
\n3080 PRINT "%P%A%R%A%M% %V%S% %C%A%S%E DATA ID """;H$;"""";AT 1,0;"MEAN= ";D(N,3);AT 1,16;"S.D.= ";D(N,4);AT 2,0;"RANGE= ";D(N,2);" TO ";D(N,1)
\n3085 PRINT AT 21,5;"NUMBER OF CASES= ";NC
\n3090 GOSUB 3500
\n3140 LET YI=31/((D(N,1)-D(N,2))+(D(N,1)=D(N,2)))
\n3150 LET XI=57/(NC-1)
\n3160 FOR M=1 TO NC
\n3170 IF P(N,M)=-999 THEN GOTO 3190
\n3180 PLOT (M-1)*XI+4,(P(N,M)-D(N,2))*YI+4
\n3190 NEXT M
\n3200 IF C$="C" THEN GOTO 3250
\n3210 INPUT D$
\n3220 IF D$="C" THEN GOTO 3250
\n3230 IF D$="M" THEN GOTO 2500
\n3240 GOTO 3260
\n3250 COPY 
\n3260 CLS 
\n3270 NEXT Y
\n3280 GOTO 2500
\n3500 PRINT AT 4,0;"P";AT 5,0;"A";AT 6,0;"R";AT 7,0;"A";AT 8,0;"M";AT 10,0;INT (N/10);AT 11,0;N-(INT (N/10)*10);AT 13,0;N$(N,1);AT 14,0;N$(N,2);AT 15,0;N$(N,3);AT 16,0;N$(N,4);AT 17,0;N$(N,5)
\n3510 PRINT AT 20,1;"\ '\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\' "
\n3520 FOR G=4 TO 19
\n3530 PRINT AT G,1;"\ :"
\n3540 NEXT G
\n3550 RETURN 
\n4010 PRINT "ID NUMBERS OF PARAMETERS TO BE  PLACED ON Y AXIS?","(ENTER AS "".NN.NN.ETC"" OR ""ALL"")"
\n4020 INPUT Y$
\n4030 PRINT AT 1,16;"- ";E$;AT 2,0;Y$;E$;AT 4,0;"ID NUMBERS OF PARAMETERS TO BE  PLACED ON X AXIS?"
\n4040 INPUT X$
\n4045 PRINT AT 5,16;"- ";E$;AT 6,0;X$;E$
\n4046 GOSUB 2700
\n4050 FOR Y=1 TO NP*(Y$="ALL")+LEN Y$/3*(Y$<>"ALL")
\n4060 IF Y$="ALL" THEN LET N=Y
\n4080 IF Y$<>"ALL" THEN LET N=VAL Y$(Y*3-1 TO Y*3)
\n4090 LET YI=31/((D(N,1)-D(N,2))+(D(N,1)=D(N,2)))
\n4100 FOR X=1 TO NP*(X$="ALL")+LEN X$/3*(X$<>"ALL")
\n4120 IF X$="ALL" THEN LET M=X
\n4130 IF X$<>"ALL" THEN LET M=VAL X$(X*3-1 TO X*3)
\n4140 LET XI=57/((D(M,1)-D(M,2))+(D(M,1)=D(M,2)))
\n4150 PRINT "%P%A%R%A%M% %V%S% %P%A%R%A%M DATA ID ";H$;AT 1,0;"RANGE PARAM ";N;"= ";D(N,2);" TO ";D(N,1);AT 2,0;"RANGE PARAM ";M;"= ";D(M,2);" TO ";D(M,1);AT 21,4;"PARAM ";M;" ";N$(M)
\n4160 GOSUB 3500
\n4190 FOR Q=1 TO NC
\n4200 IF P(N,Q)=-999 OR P(M,Q)=-999 THEN GOTO 4220
\n4210 PLOT (P(M,Q)-D(M,2))*XI+4,(P(N,Q)-D(N,2))*YI+4
\n4220 NEXT Q
\n4230 IF C$="C" THEN GOTO 4280
\n4240 INPUT D$
\n4250 IF D$="C" THEN GOTO 4280
\n4260 IF D$="M" THEN GOTO 2500
\n4270 GOTO 4290
\n4280 COPY 
\n4290 CLS 
\n4300 NEXT X
\n4310 NEXT Y
\n4320 GOTO 2500
\n5002 PRINT "ID NUMBERS OF PARAMETERS TO BE  GRAPHED?",,"(ENTER AS "".NN.NM.ETC"" OR ""ALL"")"
\n5003 INPUT Y$
\n5005 PRINT AT 1,7;"- ";E$;AT 2,0;Y$;E$;AT 4,0;"CASES TO BE GRAPHED?"
\n5006 INPUT X$
\n5007 PRINT AT 4,19;"- ";E$;AT 5,0;X$;E$
\n5008 GOSUB 2700
\n5018 LET G$="\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\.."
\n5020 IF X$="ALL" THEN FOR Q=1 TO NC
\n5025 IF X$<>"ALL" THEN FOR Q=1 TO LEN X$/3
\n5030 IF X$="ALL" THEN LET M=Q
\n5035 IF X$<>"ALL" THEN LET M=VAL X$(Q*3-1 TO Q*3)
\n5080 CLS 
\n5090 PRINT "%P%A%R%A%M% %V%S% %A%V%E DATA ID """;H$;"""";AT 1,0;"CASE NO. ";M
\n5100 FOR N=3 TO 21
\n5110 PRINT AT N,5;"\ :";AT N,18;"."
\n5120 NEXT N
\n5122 PRINT AT 21,6;"%M%I%N\..\..\..\..\..\..\..\..%A%V%E\..\..\..\..\..\..\..\..%M%A%X"
\n5125 IF Y$="ALL" THEN FOR N=1 TO NP
\n5130 IF Y$<>"ALL" THEN FOR N=1 TO LEN Y$/3
\n5133 IF Y$="ALL" THEN LET P=N
\n5136 IF Y$<>"ALL" THEN LET P=VAL Y$(N*3-1 TO N*3)
\n5140 IF P(P,M)=-999 THEN GOTO 5190
\n5150 LET A=ABS (D(P,1)-D(P,3))
\n5160 LET B=ABS (D(P,2)-D(P,3))
\n5170 LET GR=A*(A>=B)+B*(B>A)
\n5175 IF GR=0 THEN LET GR=1
\n5180 PRINT AT P+2,0;N$(P);"\ :";G$( TO 1+((P(P,M)-(D(P,3)-GR))*24/(GR*2)))
\n5190 NEXT N
\n5210 IF C$="C" THEN GOTO 5217
\n5212 INPUT D$
\n5214 IF D$="C" THEN GOTO 5217
\n5215 IF D$="M" THEN GOTO 2500
\n5216 GOTO 5218
\n5217 COPY 
\n5218 CLS 
\n5220 NEXT Q
\n5230 GOTO 2500
\n6010 PRINT "ID NUMBERS OF PARAMETERS TO BE  GRAPHED?",,"(ENTER AS "".NN.NN.ETC"" OR ""ALL"")"
\n6020 INPUT Y$
\n6030 PRINT AT 1,7;"- ";E$;AT 2,0;Y$;E$;AT 4,0;"NUMBER OF DIVISIONS? (2 - 12)"       
\n6040 INPUT ND
\n6050 PRINT AT 4,19;"- ";ND;E$
\n6060 GOSUB 2700
\n6065 LET G$="\ :% % % % % % % % % % % "
\n6070 FOR Y=1 TO NP*(Y$="ALL")+LEN Y$/3*(Y$<>"ALL")
\n6080 IF Y$="ALL" THEN LET N=Y
\n6090 IF Y$<>"ALL" THEN LET N=VAL Y$(Y*3-1 TO Y*3)
\n6100 LET T=0
\n6110 LET GI=(D(N,1)-D(N,2))/ND
\n6120 DIM G(ND,2)
\n6130 FOR M=1 TO NC
\n6135 IF P(N,M)=-999 THEN GOTO 6180
\n6140 FOR D=1 TO ND
\n6150 IF P(N,M)>=D(N,2)+(D-1)*GI AND P(N,M)<D(N,2)+D*GI THEN LET G(D,1)=G(D,1)+1
\n6155 IF D=ND AND P(N,M)=D(N,2)+D*GI THEN LET G(D,1)=G(D,1)+1
\n6160 IF G(D,1)>T THEN LET T=G(D,1)
\n6170 NEXT D
\n6180 NEXT M
\n6190 FOR D=1 TO ND
\n6200 LET G(D,2)=G(D,1)*15/T
\n6210 NEXT D
\n6212 PRINT "%F%R%E%Q% %D%I%S%T DATA ID """;H$;"""";AT 1,0;"PARAMETER NO. ";N;"- ";N$(N);AT 2,0;"%F%R%E%Q";AT 21,0;"%R%A%N%G%E";AT 18,3;"\ '\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''"
\n6214 FOR D=3 TO 17
\n6215 PRINT AT D,3;"\ :........................"
\n6216 NEXT D
\n6220 LET X=19
\n6230 FOR D=1 TO ND
\n6240 LET L=17
\n6250 FOR M=1 TO G(D,2)
\n6260 PRINT AT L,(D-1)*INT (24/ND)+4;G$( TO INT (24/ND))
\n6270 LET L=L-1
\n6280 NEXT M
\n6290 PRINT AT L+1,0;G(D,1)
\n6295 LET X$=STR$ VAL "(D(N,2)+(D-1)*GI)"
\n6296 IF LEN X$>5 THEN LET X$=X$( TO 5)
\n6300 PRINT AT X,(D-1)*INT (24/ND)+4;X$
\n6310 LET X=X+(X<21)-2*(X=21)
\n6320 NEXT D
\n6330 IF C$="C" THEN GOTO 6380
\n6340 INPUT D$
\n6350 IF D$="M" THEN GOTO 2500
\n6360 IF D$="C" THEN GOTO 6380
\n6370 GOTO 6390
\n6380 COPY 
\n6390 CLS 
\n6400 NEXT Y
\n6410 GOTO 2500
\n9000 REM %S%A%V%E
\n9010 CLS 
\n9020 PRINT "PROGRAM AND DATA WILL BE SAVED  UNDER THE NAME """;H$;"""";AT 4,0;"START RECORDER- THEN TOUCH ENTER"
\n9030 INPUT D$
\n9040 SAVE H$
\n9045 LET H$(LEN H$)=CHR$ (CODE H$(LEN H$)-128)
\n9090 CLS 
\n9100 PRINT AT 5,3;"% ";AT 6,3;"% %Z%X% %C%H%A%R%T";AT 7,3;"% \##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##";AT 8,3;"% %(%C%)% %1%9%8%5% %B%Y% %J%A%M%E%S% %L%.% %H%I%L%L";AT 9,3;"% \##\##\##\##\##\##\##\##\##\##\##\##\##";AT 10,3;"% %T%O%U%C%H% %<%E%N%T%E%R%>% %T%O% %B%E%G%I%N";AT 11,3;"% \##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##\##";AT 12,3;U$( TO 26)
\n9105 IF H$<>"ZX CHART" THEN PRINT AT 20,0;"PROGRAM CURRENTLY CONTAINS DATA IDENTIFIED AS """;H$;""""
\n9110 INPUT D$
\n9120 IF H$="ZX CHART" THEN GOTO 1
\n9130 GOTO MENU
Scroll to Top