forked from robhagemans/basicode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWiderstaende.b3c
217 lines (217 loc) · 7.77 KB
/
Widerstaende.b3c
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
1000 A=1000:GOTO 20:REM # WIDERSTAENDE #
1010 DIM WR(23):DIM WP(23):DIM FC$(11):DIM CC(1)
1020 DEF FN F(N)=INT (N*10^3+.5)/10^3
1030 X1$=" "
1040 X2$=" Widerstaende "
1050 CC(0)=5:CC(1)=0:GOSUB 100:CC(0)=3:GOSUB 2380
1060 HO=18:VE=10:GOSUB 110
1070 PRINT "by":HO=13:VE=15:GOSUB 110:PRINT "Michael Paeke"
1080 GOSUB 2430:SD=500:GOSUB 450
1090 CC(0)=7:GOSUB 100:CC(0)=3:GOSUB 2380
1100 HO=5:VE=10:GOSUB 110
1110 PRINT "1 = Farbcode"
1120 VE=12:GOSUB 110:PRINT "2 = Widerstand, parallel"
1130 VE=14:GOSUB 110:PRINT "3 = Widerstand, reihe"
1140 VE=16:GOSUB 110:PRINT "0 = Ende"
1150 HO=0:VE=20:GOSUB 110:PRINT "Ihre Wahl ? ";
1160 GOSUB 210:IF (IN<48) OR (IN>51) THEN GOSUB 250:GOTO 1160
1170 IF IN=48 THEN GOTO 950
1180 ON IN-48 GOSUB 1210,1550,1990
1190 X2$=" Widerstaende ":GOTO 1090
1200 REM FARBCODE -> WERT
1210 CC(0)=5:GOSUB 100:VE=-2
1220 FOR I=0 TO 11
1230 IF I=10 THEN PRINT " G - ";:GOTO 1260
1240 IF I=11 THEN PRINT " S - ";:GOTO 1260
1250 PRINT I;:PRINT "- ";
1260 PRINT FC$(I):PRINT
1270 NEXT I
1280 HO=15:VE=-2:CC(0)=6
1290 FOR I=1 TO 3
1300 VE=VE+2:GOSUB 110:SR=I:GOSUB 300:SR$=SR$+". Ring"
1310 GOSUB 150
1320 NEXT I
1330 HO=27:VE=0:GOSUB 110
1340 GOSUB 210:IF (IN<48) OR (IN>57) THEN GOSUB 250:GOTO 1330
1350 R1$=IN$:PRINT FC$(IN-48)
1360 VE=2:GOSUB 110
1370 GOSUB 210:IF (IN<48) OR (IN>57) THEN GOSUB 250:GOTO 1360
1380 R2$=IN$:PRINT FC$(IN-48)
1390 VE=4:GOSUB 110
1400 GOSUB 210:IF IN=71 THEN IN=58:GOTO 1430
1410 IF IN=83 THEN IN=59:GOTO 1430
1420 IF (IN<48) OR (IN>54) THEN GOSUB 250:GOTO 1390
1430 R3=IN-48:PRINT FC$(R3)
1440 IF (R3=2) OR (R3=5) OR (R3=10) THEN RX$=R1$+"."+R2$:GOTO 1470
1450 RX$=R1$+R2$:IF (R3=1) OR (R3=4) THEN RX$=RX$+"0"
1460 IF R3=11 THEN RX$="0."+RX$
1470 RX=VAL (RX$)
1480 IF (R3<2) OR (R3>9) THEN RW$=" Ohm":GOTO 1510
1490 IF R3>4 THEN RW$=" MOhm":GOTO 1510
1500 RW$=" kOhm"
1510 HO=15:VE=10:GOSUB 110:SR$="Wert:":CC(0)=4:GOSUB 150
1520 PRINT RX;:PRINT RW$
1530 HO=17:VE=12:GOSUB 110:SD=2000:GOSUB 450:RETURN
1540 REM PARALLEL
1550 CC(0)=7:GOSUB 100
1560 X2$=" Widerstand parallel":CC(0)=6:GOSUB 2380
1570 HO=0:VE=8:GOSUB 110
1580 PRINT " Fuer einen einzugebenden Widerstand"
1590 PRINT " werden zwei parallel geschaltete"
1600 PRINT " Widerstaende berechnet.":PRINT
1610 PRINT " (0.455 Ohm bis 45.5 MOhm)":PRINT :PRINT
1620 H=0:CC(0)=5:SR$="Widerstand in Ohm":GOSUB 150
1630 PRINT "= "
1640 HO=25:VE=15:GOSUB 110:INPUT R
1650 IF (R<.455) OR (R>45500000) THEN GOTO 1640
1660 CC(0)=3:SR$="Abweichung in Ohm":GOSUB 150
1670 PRINT "= "
1680 HO=25:VE=16:GOSUB 110:INPUT AW
1690 IF AW>R THEN GOTO 1680
1700 GOSUB 2720:REM # AUSGABE GERAET #
1710 CC(0)=7:GOSUB 100:GOSUB 2630
1720 E=.455:D=.1:J=.01
1730 IF R>= E THEN E=E*10:D=D*10:GOTO 1730
1740 F=R+AW:G=R-AW:REM # TOLERANZ #
1750 REM # BERECHNUNG #
1760 FOR W=0 TO 2:J=J*10:I=.01
1770 FOR X=0 TO 2:I=I*10
1780 FOR Y=0 TO 23
1790 IF Y>0 THEN GOTO 1820
1800 AA=WP(23)*I:B=WP(23)*J:C=(AA*B)/(AA+B)
1810 IF C*D>F THEN Y=23:GOTO 1930
1820 FOR Z=Y TO 23
1830 AA=WP(Y)*D*I:B=WP(Z)*D*J
1840 REM # ABBRUCH DA KEIN ERGEBNIS #
1850 IF INT (AA)<= R THEN GOTO 1940
1860 IF INT (B)<= R THEN GOTO 1930
1870 C=(AA*B)/(AA+B)
1880 IF C>F THEN GOTO 1920
1890 IF C<G THEN GOTO 1930
1900 REM # AUSGABE #
1910 P$="//":H=H+1:GOSUB 2550
1920 NEXT Z
1930 NEXT Y
1940 NEXT X:NEXT W:IF H>0 THEN GOTO 1960
1950 GOSUB 2480:RETURN
1960 GOSUB 250:GOSUB 210:RETURN
1970 GOSUB 210:GOSUB 950
1980 REM REIHE
1990 CC(0)=7:GOSUB 100
2000 X2$=" Widerstand Reihe ":CC(0)=1:GOSUB 2380
2010 HO=0:VE=8:GOSUB 110
2020 PRINT " Fuer einen einzugebenden Widerstand"
2030 PRINT " werden zwei in reihe geschaltete"
2040 PRINT " Widerstaende berechnet.":PRINT
2050 PRINT " ( 2 Ohm bis 20 MOhm )":PRINT :PRINT
2060 H=0:CC(0)=5:SR$="Widerstand in Ohm":GOSUB 150
2070 PRINT "= "
2080 HO=25:VE=15:GOSUB 110:INPUT R
2090 IF (R<2) OR (R>20000000) THEN GOTO 2080
2100 CC(0)=3:SR$="Abweichung in Ohm":GOSUB 150
2110 PRINT "= "
2120 HO=25:VE=16:GOSUB 110:INPUT AW
2130 IF AW>R THEN GOTO 2120
2140 GOSUB 2720:REM # AUSGABE GERAET #
2150 CC(0)=7:GOSUB 100:GOSUB 2630
2160 E=2:D=.1:I=0:J=.001:K=.1
2170 IF R>= E THEN E=E*10:D=D*10:I=I+1:GOTO 2170
2180 F=R+AW:G=R-AW:REM # TOLERANZ #
2190 REM # BERECHNUNG #
2200 FOR X=I TO 10:J=J*10:IF X=1 THEN J=1:K=10
2210 IF X=2 THEN J=K
2220 FOR Y=0 TO 23:FOR Z=Y TO 23
2230 AA=D*J*WR(Y):B=D*WR(Z)
2240 REM # ABBRUCH DA KEIN ERGEBNIS #
2250 IF INT (B)>= R THEN GOTO 2330
2260 IF INT (AA)>= R THEN GOTO 2340
2270 C=AA+B
2280 IF C<G THEN GOTO 2320
2290 IF C>F THEN GOTO 2330
2300 REM # AUSGABE #
2310 P$="+":H=H+1:GOSUB 2550
2320 NEXT Z
2330 NEXT Y
2340 NEXT X:IF H>0 THEN GOTO 2360
2350 GOSUB 2480:RETURN
2360 GOSUB 250:GOSUB 210:RETURN
2370 REM UEBERSCHRIFT
2380 HO=7:VE=2:GOSUB 110:SR$=X1$:GOSUB 150
2390 HO=7:VE=3:GOSUB 110:SR$=X2$:GOSUB 150
2400 HO=7:VE=4:GOSUB 110:SR$=X1$:GOSUB 150
2410 RETURN
2420 REM FELDER EINLESEN
2430 RESTORE
2440 FOR I=0 TO 23:READ WR(I):NEXT I:RESTORE
2450 FOR I=23 TO 0 STEP -1:READ WP(I):NEXT I
2460 FOR I=0 TO 11:READ FC$(I):NEXT I:RETURN
2470 REM # FEHLERMELDUNG #
2480 HO=0:VE=18:GOSUB 110:CC(0)=2
2490 SR$=" ":GOSUB 150
2500 SR$="Mit dieser Toleranz kein Ergebnis!"
2510 GOSUB 150
2520 SR$=" ":GOSUB 150
2530 GOSUB 250:SD=500:GOSUB 450:RETURN
2540 REM # AUSGABE #
2550 PRINT FN F(AA);"Ohm ";P$;FN F(B);"Ohm =";FN F(C);"Ohm"
2560 IF DR=0 THEN GOTO 2630
2570 SR=FN F(AA):GOSUB 300:GOSUB 350
2580 SR$=" Ohm "+P$+" ":GOSUB 350
2590 SR=FN F(B):GOSUB 300:GOSUB 350
2600 SR$=" Ohm = ":GOSUB 350
2610 SR=FN F(C):GOSUB 300:GOSUB 350
2620 SR$=" Ohm":GOSUB 350:GOSUB 360
2630 GOSUB 120:HX=HO:VX=VE
2640 IF VE<22 THEN GOTO 2660
2650 GOSUB 250:PRINT ">>":GOSUB 210:CC(0)=7:HX=0:VX=0:GOSUB 100
2660 CC(0)=5:HO=0:VE=22:GOSUB 110
2670 SR$="Widerstand":GOSUB 150:PRINT FN F(R);:PRINT " Ohm"
2680 CC(0)=3:HO=0:VE=23:GOSUB 110
2690 SR$="Abweichung":GOSUB 150:PRINT FN F(AW);:PRINT " Ohm"
2700 HO=HX:VE=VX:GOSUB 110:RETURN
2710 REM # AUSGABE GERAET #
2720 HO=0:VE=20:GOSUB 110:CC(0)=4
2730 SR$=" ":GOSUB 150
2740 SR$="Ausgabe auf (B)ildsch. / (D)rucker":GOSUB 150
2750 SR$=" ":GOSUB 150
2760 GOSUB 210:IF (IN<> 66) AND (IN<> 68) THEN GOTO 2760
2770 IF IN=66 THEN DR=0
2780 IF IN=68 THEN DR=1
2790 HO=0:VE=20:GOSUB 110
2800 FOR I=0 TO 2
2810 PRINT " "
2820 NEXT I:RETURN
25000 REM # DATEN E24 #
25010 DATA 1,1.1,1.2,1.3,1.5,1.6,1.8,2,2.2,2.4,2.7,3,3.3
25020 DATA 3.6,3.9,4.3,4.7,5.1,5.6,6.2,6.8,7.5,8.2,9.1
25030 REM # DATEN-FARBCODE #
25040 DATA "schwarz","braun","rot","orange"
25050 DATA "gelb","gruen","blau","violett"
25060 DATA "grau","weiss","gold","silber"
30000 REM *****************************
30010 REM * ES HANDELT SICH HIERBEI *
30020 REM * UM EIN '3C-PROGRAMM'. *
30030 REM * ES IST JEDOCH AUCH OHNE *
30040 REM * FARB-BASCODER LAUFFAEHIG. *
30050 REM * DAZU IST ES GEGEBENENFALLS*
30060 REM * NOETIG, DAS REM IN ZEILE *
30070 REM * 1010 ZU ENTFERNEN. *
30080 REM *****************************
30090 REM * !!GILT NUR FUER C'64!! *
30100 REM * IN DEN FARB-SUB-ROUTINEN *
30110 REM * IST EIN FEHLER ENTHALTEN. *
30120 REM * ZEILE 151 MUSS WIE FOLGT *
30130 REM * BEGINNEN: *
30140 REM * 151 IFS%>0 THEN... *
30150 REM * IST DIES NICHT DER FALL, *
30160 REM * KANN MIT 'GOSUB 150' KEIN *
30170 REM * BLAU DARGESTELLT WERDEN. *
30180 REM *****************************
32000 REM * MICHAEL PAEKE *
32010 REM * KARL-MARX-STR. 8 *
32020 REM * O-8355 NEUSTADT/SA. *
32030 REM * COMMODORE 64 *
32040 REM *****************************
32050 REM
32060 REM Erstausstrahlung: DS Kultur
32070 REM-spezial 920708