forked from robhagemans/basicode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathA09_Diagrammen.bc3
305 lines (304 loc) · 11.3 KB
/
A09_Diagrammen.bc3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
1000 A=500:GOTO20:REM DIAGRAMMEN
1010 HB=HO+1:VH=VE-4:BR=INT((HB-8)/3):S$=" "
1020 SP$=S$+" ":CN=0:P1=3.14159:UW=1-1/HG
1030 TG=.82:REM ***TG=.895-3/AANTAL KAR. OP HI-RES***
1040 DIMBR(3),HO(3),IN$(3,VH+1),KE$(20),PR(VH)
1050 HO(0)=0:HO(1)=7:FORI=2 TO3:HO(I)=(I-1)*BR+HO(1):NEXTI
1060 BR(0)=3:FORI=1 TO3:BR(I)=BR-4:NEXTI
1070 FORI=0 TO20:READKE$(I):NEXTI
1080 READTE$:READA$:TE$=TE$+A$
1090 FORY=0 TO3:FORX=0 TO3:READIN$(X,Y):NEXTX:NEXTY
1100 FL=0:SR$="<<<DIAGRAMMEN>>>":GOSUB3220
1110 YB=0:YE=5:GOSUB2950
1120 ONVE-5 GOSUB1260,1140,2720,2790,2860,950
1130 GOTO1100
1140 SR$="SOORT DIAGRAM":GOSUB3220:YB=6:YE=8:GOSUB2950
1150 IFVE=YE-YB+7 THENRETURN
1160 ONVE-5 GOTO1170,1200,2520
1170 SR$="SOORT STAAFDIAGRAM":GOSUB3220:YB=9:YE=11
1180 GOSUB2950:IFVE=YE-YB+7 THENRETURN
1190 ONVE-5 GOTO1830,1930,2060
1200 SR$="SOORT LIJNDIAGRAM":GOSUB3220:YB=12:YE=14
1210 GOSUB2950:IFVE=YE-YB+7 THENRETURN
1220 ONVE-5 GOTO2190,2300,2420
1230 SR$="ABSOLUUT OF PERCENTUEEL":GOSUB3220:YB=15:YE=16
1240 GOSUB2950:AP=1:IFVE=6 THENAP=0
1250 RETURN
1260 GOSUB100:PRINT" X ";:H=(BR(1)+4)/2:FORI=1 TO3
1270 HO=HO(I)+H:VE=0:GOSUB110:PRINT"Y";I;:NEXTI
1280 PRINT:GOSUB3310
1290 FORY=0 TOVH:FORX=0 TO3
1300 VE=Y+2:H$=IN$(X,Y):IFLEN(H$)<=BR(X) THEN1320
1310 H$=LEFT$(H$,BR(X))
1320 HO=HO(X)+3+BR(X)/2-LEN(H$)/2:GOSUB110:PRINTH$
1330 NEXTX:NEXTY:VE=2:HO=0:X=0:Y=0:XX=0:YY=0
1340 T=HO(X)+3:TT=0:TB=1:GOTO1620
1350 GOSUB200:IFIN=0 THEN1350
1360 H$=IN$(X,Y):IFIN=36 THEN1700
1370 IF(IN>27)AND(IN<32) THEN1480
1380 IFIN=35 THENIN$(X,Y)="":T=HO(X)+3:TT=0:TB=1:GOTO1620
1390 IFIN=94 THENRETURN
1400 IF(IN=60)AND(TT>0) THENT=T-1:TT=TT-1:GOTO1620
1410 IF(IN=62)AND(TT<LEN(H$)) THENT=T+1:TT=TT+1:GOTO1620
1420 IFIN=127 THEN1770
1430 IFIN=37 THEN1820
1440 IF(IN<32)OR(IN>127)OR(IN=60)OR(IN=62) THEN1350
1450 T=T+1:TT=TT+1:H=LEN(H$)
1460 IFTT=LEN(H$)+1 THENIN$(X,Y)=H$+IN$:GOTO1620
1470 IN$(X,Y)=LEFT$(H$,TT-1)+IN$+RIGHT$(H$,H-TT):GOTO1620
1480 IFIN=28 THENX=X-1
1490 IFIN=29 THENX=X+1
1500 IFIN=30 THENY=Y+1
1510 IFIN=31 THENY=Y-1
1520 IFX=-1 THENX=3
1530 IFX=4 THENX=0
1540 IFY=-1 THENY=VH
1550 IFY=VH+1 THENY=0
1560 HX=X:HY=Y:X=XX:Y=YY:SR$=IN$(X,Y)
1570 IFLEN(SR$)>=BR(X) THENH$="":GOTO1590
1580 H$=LEFT$(SP$,BR(X)/2-LEN(SR$)/2):GOSUB1660
1590 SR$=" "+H$+LEFT$(SR$,BR(X)-LEN(H$))+" "
1600 HO=HO(X):VE=Y+2:GOSUB110:X=HX:Y=HY
1610 PRINTSR$;:XX=X:YY=Y:T=HO(X)+3:TB=1:TT=0
1620 GOSUB1640:HO=HO(X):VE=Y+2:GOSUB110
1630 GOSUB150:HO=T:GOSUB110:GOTO1350
1640 SR$=IN$(X,Y):IFLEN(SR$)=BR(X) THENRETURN
1650 IFLEN(SR$)>BR(X) THEN1670
1660 FORI=LEN(SR$)+1 TOBR(X):SR$=SR$+" ":NEXTI:RETURN
1670 IFT<HO(X)+3 THENTB=TB-1:T=HO(X)+3
1680 IFT>HO(X)+BR(X)+3 THENTB=TB+1:T=HO(X)+BR(X)+3
1690 SR$=MID$(IN$(X,Y),TB,BR(X)):RETURN
1700 GOSUB1760:PRINT"Begin: ";:INPUTH$:H=VAL(H$)
1710 GOSUB1760:PRINT"Eind: ";:INPUTHH$:HH=VAL(HH$)
1720 GOSUB1760:PRINT"Stap: ";:INPUTJ$:J=VAL(J$)
1730 Y=0:FORI=H TOHH STEPJ:SR=I:GOSUB300:IN$(X,Y)=SR$
1740 Y=Y+1:IFY>VH THENI=HH+1
1750 NEXTI:GOTO1260
1760 HO=0:VE=0:GOSUB110:PRINTSP$:GOSUB110:RETURN
1770 IFTT=0 THEN1350
1780 H=LEN(H$):IFH=1 THENH1$=" ":GOTO1810
1790 IFRIGHT$(H$,1)=" " THEN1350
1800 H1$=LEFT$(H$,TT-1)+" "
1810 IN$(X,Y)=H1$:T=T-1:TT=TT-1:GOTO1620
1820 FORY=0 TOVH:FORX=0 TO3:IN$(X,Y)=""
1825 NEXTX:NEXTY:GOTO1260
1830 FL=2:GOSUB1930:IF(VE=YE-YB+7)OR(G=0) THENRETURN
1840 HO=.125:VE=.92:GOSUB620
1850 FORI=0 TOY:HO=.15+(I/(Y+1)*.84)+.5*BR
1860 IFAP=0 THENVE=.92-VAL(IN$(1,I))/H*.92:GOTO1880
1870 VE=.92-VAL(IN$(1,I))/G*.92
1880 GOSUB630:NEXTI:HO=.99:VE=.92:GOSUB630
1890 GOSUB200:IFIN=0 THEN1890
1900 IFIN=83 THEN GOSUB20050:GOTO1890
1910 IFIN=84 THEN GOSUB3320:GOTO1890
1920 RETURN
1930 GOSUB1230:IFVE=YE-YB+7 THENRETURN
1940 GOSUB3240:IFG=0 THENRETURN
1950 GOSUB3560:BR=(1/(Y+1)*.84)-.02
1960 IFFL=2 THENBR=(1/(Y+1)*.84)
1970 FORI=0 TOY:HO=.15+(I/(Y+1)*.84):VE=.92:V=VE:GOSUB620
1980 IFAP=0 THENVE=.92-VAL(IN$(1,I))/H*.92:GOTO2000
1990 VE=.92-VAL(IN$(1,I))/G*.92
2000 GOSUB630:HO=HO+BR:GOSUB630:VE=.92:GOSUB630
2010 NEXTI:IFFL=2 THENRETURN
2020 GOSUB200:IFIN=0 THEN2020
2030 IFIN=83 THEN GOSUB20050:GOTO2020
2040 IFIN=84 THEN GOSUB3320:GOTO2020
2050 RETURN
2060 GOSUB1230:IFVE=YE-YB+7 THENRETURN
2070 GOSUB3640:IFG=0 THENRETURN
2080 GOSUB3560:BR=.13+(1/(Y+1)*.84)-.15
2090 FORI=0 TOY:HH=.15+(I/(Y+1)*.84):VE=.92:V=VE
2100 FORX=1 TO3:HO=HH:VE=V:GOSUB620
2110 IFAP=0 THENVE=ABS(V-VAL(IN$(X,I))/PR(I)*.92):GOTO2130
2120 VE=ABS(V-VAL(IN$(X,I))/G*.92)
2130 GOSUB630:HO=HO+BR:GOSUB630:J=VE:VE=V
2140 GOSUB630:V=J:NEXTX:NEXTI
2150 GOSUB200:IFIN=0 THEN2150
2160 IFIN=83 THEN GOSUB20050:GOTO2150
2170 IFIN=84 THEN GOSUB3320:GOTO2150
2180 RETURN
2190 GOSUB1230:IFVE=YE-YB+7 THENRETURN
2200 GOSUB3240:IFG=0 THENRETURN
2210 FL=1:GOSUB3560
2220 HO=.1:VE=.92:GOSUB620:FORI=0 TOY:HO=I/Y*.89+.1
2230 IFAP=0 THENVE=.92-VAL(IN$(1,I))/H*.92:GOTO2250
2240 VE=.92-VAL(IN$(1,I))/G*.92
2250 GOSUB630:NEXTI
2260 GOSUB200:IFIN=0 THEN2260
2270 IFIN=83 THEN GOSUB20050:GOTO2260
2280 IFIN=84 THEN GOSUB3320:GOTO2260
2290 RETURN
2300 GOSUB1230:IFVE=YE-YB+7 THENRETURN
2310 GOSUB3640:IFG=0 THENRETURN
2320 FL=1:GOSUB3560:FORX=1 TO3:HO=.1:VE=.92:GOSUB620
2330 FORI=0 TOY:HO=I/Y*.89+.1:HH=0:FORJ=1 TOX
2340 HH=HH+VAL(IN$(J,I)):NEXTJ
2350 IFAP=0 THENVE=ABS(.92-HH/PR(I)*.92):GOTO2370
2360 VE=ABS(.92-HH/G*.92)
2370 GOSUB630:NEXTI:NEXTX
2380 GOSUB200:IFIN=0 THEN2380
2390 IFIN=83 THEN GOSUB20050:GOTO2380
2400 IFIN=84 THEN GOSUB3320:GOTO2380
2410 RETURN
2420 GOSUB1230:IFVE=YE-YB+7 THENRETURN
2430 GOSUB3240:IFG=0 THENRETURN
2440 FL=1:GOSUB3560:HO=.1:VE=.92:GOSUB620
2450 VE=.92:FORI=0 TOY:HO=I/Y*.89+.1
2460 VE=ABS(VE-VAL(IN$(1,I))/H*.92)
2470 GOSUB630:NEXTI
2480 GOSUB200:IFIN=0 THEN2480
2490 IFIN=83 THEN GOSUB20050:GOTO2480
2500 IFIN=84 THEN GOSUB3320:GOTO2480
2510 RETURN
2520 GOSUB1230:IFVE=YE-YB+7 THENRETURN
2530 GOSUB3240:IFG=0 THENRETURN
2540 GOSUB600:HO=.875:VE=.5:GOSUB620
2560 FORI=0 TO6.31 STEP.1
2570 HO=.5+.375*COS(I):VE=.5+.5*SIN(I):GOSUB630
2580 NEXTI:HO=.5:VE=.5:GOSUB620:HO=.875:GOSUB630
2590 T=0:FORI=0 TOY:HK=VAL(IN$(1,I))/H*2*P1:T=T+HK
2600 HO=.5+.375*COS(T):VE=.5+.5*SIN(T):GOSUB620
2610 HO=.5:VE=.5:GOSUB630:HO=.5+.25*COS(T-.5*HK)
2620 VE=.5+.3125*SIN(T-.5*HK):SR$=IN$(0,I):GOSUB650
2630 IFAP=1 THEN2670
2640 SR=VAL(IN$(1,I))/H*100:CT=2:GOSUB310
2650 HO=.5+.15*COS(T-.5*HK):VE=.5+.1875*SIN(T-.5*HK)
2660 SR$=SR$+"%":GOSUB650
2670 NEXTI
2680 GOSUB200:IFIN=0 THEN2680
2690 IFIN=83 THEN GOSUB20050:GOTO2680
2700 IFIN=84 THEN GOSUB3320:GOTO2680
2710 RETURN
2720 SR$=" X "+S$+"Y1"+S$+S$+"Y2"+S$+S$+"Y3"
2730 GOSUB350:GOSUB360:GOSUB360
2740 FORY=0 TO2:FORX=0 TO3:H=24:IFX=0 THENH=7
2750 H$=IN$(X,Y):IFLEN(H$)>H-2 THENH$=LEFT$(H$,H-2)
2760 SR$=LEFT$(SP$,H/2-LEN(H$)/2)+H$
2770 SR$=SR$+LEFT$(SP$,H-LEN(SR$)):GOSUB350:NEXTX
2780 GOSUB360:NEXTY:GOSUB360:RETURN
2790 SR$="VAN WELK MEDIUM":GOSUB3220:YB=18:YE=20
2800 GOSUB2950:IFVE=YE-YB+7 THENRETURN
2810 GOSUB100:PRINT:PRINT"Wat is de naam van het bestand ";
2820 INPUTNF$:NF=(VE-6)*2:GOSUB500:PRINT:PRINT"Laden...";
2830 FORY=0 TOVH:FORX=0 TO3:GOSUB540:IFIN=-1 THEN2850
2840 IN$(X,Y)=IN$:NEXTX:NEXTY:GOSUB580:RETURN
2850 PRINT:PRINT"Leesfout geconstateerd":GOTO950
2860 SR$="OP WELK MEDIUM":GOSUB3220:YB=18:YE=20
2870 GOSUB2950:IFVE=YE-YB+7 THENRETURN
2880 GOSUB100:PRINT
2890 PRINT"Onder welke naam moet ik het saven ";:INPUTNF$
2900 IFLEN(NF$)<8 THEN2920
2910 NF$=LEFT$(NF$,7)
2920 NF=(VE-6)*2+1:GOSUB500:PRINT:PRINT"Saven..."
2930 FORY=0 TOVH:FORX=0 TO3:SR$=IN$(X,Y)
2935 GOSUB560:NEXTX:NEXTY
2940 GOSUB580:RETURN
2950 VE=6:FORI=YB TOYE:HO=HB/2-LEN(KE$(I))/2
2960 GOSUB110:VE=VE+1:PRINTKE$(I):NEXTI
2970 IFYB<>0 THENHO=HB/2-5:GOSUB110:PRINTKE$(17)
2980 J=3:IFHB>75 THENJ=2
2990 VE=VE+3:HO=0:GOSUB110:FORI=0 TOJ:GOSUB3310:NEXTI
3000 IFJ=2 THENSR$=TE$:GOTO3050
3010 SR$=LEFT$(TE$,HB):I=HB
3020 IFMID$(SR$,I,1)<>" " THENI=I-1:GOTO3020
3030 SR$=LEFT$(TE$,I-1):HO=HB/2-LEN(SR$)/2:VE=VE+1:GOSUB110
3040 PRINTSR$:SR$=RIGHT$(TE$,I-1)
3050 HO=HB/2-LEN(SR$)/2:VE=VE+1:GOSUB110:PRINTSR$
3060 YT=YB:VE=6:GOSUB3200
3070 GOSUB200:IFIN=0 THEN3070
3080 IFIN=13 THENRETURN
3090 IF(IN<>30)AND(IN<>31) THEN3070
3100 IFVE=YE-YB+7 THENH$=KE$(17):GOTO3120
3110 H$=KE$(YT)
3120 GOSUB110:PRINT" ";H$;" ";
3130 IFIN=30 THENYT=YT+1:VE=VE+1
3140 IFIN=31 THENYT=YT-1:VE=VE-1
3150 IF(YT>YE)AND(YB=0) THENYT=YB:VE=6:GOTO3180
3160 IFVE>YE-YB+7 THENYT=YB:VE=6
3170 IFYT<YB THENYT=YE+SGN(YB):VE=6+SGN(YB)+YE-YB
3180 H=YT:IFVE=YE-YB+7 THENYT=17
3190 GOSUB3200:YT=H:GOTO3070
3200 SR$=KE$(YT):HO=HB/2-LEN(SR$)/2-3:GOSUB110:GOSUB150
3210 RETURN
3220 GOSUB100:FORI=0 TO2:GOSUB3310
3225 NEXTI:HO=HB/2-LEN(SR$)/2
3230 VE=1:GOSUB110:PRINTSR$:RETURN
3240 H=0:Y=0:G=0
3250 HH=VAL(IN$(1,Y)):IFIN$(0,Y)="" THEN3280
3260 H=H+HH:Y=Y+1:IFHH>G THENG=HH
3270 GOTO3250
3280 Y=Y-1:IFG<>0 THENRETURN
3290 GOSUB100:PRINT"U heeft geen gegevens ingevoerd!!!"
3300 PRINT:PRINT"<<<Druk een toets>>>";:GOSUB210:RETURN
3310 FORX=1 TOHB:PRINT"-";:NEXTX:RETURN
3320 HO=0:VE=1/22:GOSUB620:SR$="":FL=0
3330 SD=1:GOSUB450:IFIN<>0 THEN3360
3340 CN=1-CN:IFFL=0 THEN GOSUB620
3350 GOTO3330
3360 IFFL=0 THENCN=1:GOSUB620
3370 CN=0:IFIN=13 THENRETURN
3380 IFIN=35 THENFL=1-FL:GOTO3330
3390 IF(IN<28)OR(IN>31) THEN3500
3400 SR$="":IFIN=28 THENHO=HO-2/HG
3410 IFIN=29 THENHO=HO+2/HG
3420 IFIN=30 THENVE=VE+2/VG
3430 IFIN=31 THENVE=VE-2/VG
3440 IFHO>=1 THENHO=0
3450 IFHO<0 THENHO=1-2/HG
3460 IFVE>=1 THENVE=0
3470 IFVE<0 THENVE=1-2/VG
3480 IFFL=0 THEN GOSUB620
3490 GOTO3330
3500 IF(IN=127)AND(LEN(SR$)=0) THEN3330
3510 IFIN=127 THENCN=1:GOTO3530
3520 SR$=SR$+IN$
3530 VE=VE-1/24:GOSUB650:VE=VE+1/24:IFIN<>127 THEN3330
3540 SR$=LEFT$(SR$,LEN(SR$)-1):VE=VE-1/24:CN=0:GOSUB650
3550 VE=VE+1/24:GOTO3330
3560 GOSUB600:HO=.1:VE=.92:GOSUB620:HO=UW:GOSUB630
3570 VE=.92:HO=.1:GOSUB620:VE=0:GOSUB630
3580 IFFL=1 THEN GOSUB3720:GOTO3610
3590 FORI=0 TOY:HO=.17+(I/(Y+1)*.84):VE=.93
3600 SR$=IN$(0,I):GOSUB650:NEXTI:SR=G:CT=3:GOSUB310
3610 SR=G:CT=3:GOSUB310:IF(SR$="***")AND(AP=1) THENRETURN
3620 FORI=4 TO0 STEP-1:SR=G*I/4:IFAP=0 THENSR=100-(4-I)*25
3630 GOSUB310:HO=0:VE=(4-I)/4.5:GOSUB650:NEXTI:RETURN
3640 FORI=0 TOVH:PR(I)=0:NEXTI
3650 Y=0:G=0
3660 IFIN$(0,Y)="" THEN3700
3670 FORX=1 TO3:PR(Y)=PR(Y)+VAL(IN$(X,Y)):NEXTX
3680 IFPR(Y)>G THENG=PR(Y)
3690 Y=Y+1:GOTO3660
3700 Y=Y-1:IFG<>0 THENRETURN
3710 GOTO3290
3720 FORI=0 TOY:HO=I/Y*TG+.1:SR$=IN$(0,I)
3730 VE=.93:GOSUB650:NEXTI:RETURN
20000 REM VANAF REGEL 20050 KUNT U EEN
20010 REM SCREENDUMPPROGRAMMA PLAATSEN.
20020 REM HET PROGRAMMA SPRINGT NAAR DEZE
20030 REM REGEL, NADAT U 'S' HEBT INGEDRUKT
20040 REM ALS EEN GRAFIEK IS GETEKEND.
20050 HO=HO
20060 REM
20070 RETURN
25000 DATA"Invoer","Uitvoer","Printen","Laden","Saven"
25010 DATA"Stoppen","Staafdiagram","Lijndiagram"
25020 DATA"Cirkeldiagram","Polygoon","Enkel staafdiagram"
25030 DATA"Samengesteld staafdiagram","Enkel lijndiagram"
25040 DATA"Samengesteld lijndiagram"
25050 DATA"Cumulatieve frequentiepolygoon","Percentueel"
25060 DATA"Absoluut","Hoofdmenu","Basicode","Cassette"
25070 DATA"Disk-drive"
25080 DATA"Maak uw keuze met de cursortoetsen en bevestig"
25090 DATA" uw keuze met de invoertoets."
25100 DATA"'60","453","342","143","'65","503","369","203"
25110 DATA"'70","564","403","254","'75","603","436","251"
32000 REM -----------------------------
32010 REM DOOR RONALD VAN VUGT, PA3EAH
32020 REM
32030 REM POSTBUS 160, 5580 AD, WAALRE
32040 REM
32050 REM SEPTEMBER 1987 V1.3
32060 REM -----------------------------
32070 REM TROS-RADIO dd 870930