home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 34
/
64er_Magazin_Sonderheft_34_19xx_Markt__Technik_de_Disk_2_of_2_Side_B.d64
/
chemie-trainer
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
20KB
|
582 lines
1 rem *********************************
2 rem * vas'88*
3 rem * chemische gleichungen uebung *
4 rem * *
5 rem * vasco alexander schmidt *
6 rem * sieglindestr.9 *
7 rem * 1000 berlin 41 *
8 rem * *
9 rem *********************************
10 :
50 :
100 poke 53281,15: poke 53280,12
110 poke 53272,23: poke 646,00
120 print chr$(147);
130 :
140 gosub 500: rem initialisierung
150 rem *** steuerteil
160 print"[147]":qt$="[205]enue: chgl.u.i":gosub63520
170 print"[145][145]----------------------------------------"
180 print" f1 [146] [210]eaktion [205]etall + [206]ichtmetall ueben"
190 print" f3 [146] [210]eaktion [204]auge + [211]aeure ueben"
200 print" f5 [146] [194]eide [210]eaktionsarten ueben"
210 print" f7 [146] [210]eaktionsgleichungen berechnen lassen"
220 print" shift[146] f1-f5[146] [193]rbeitsboegen zu f1-f5"
230 print" drucken lassen"
240 print" return[146] [215]ertigkeit"
300 print" f8 [146] [197]nde"
310 print "----------------------------------------"
320 z1=22:s1=14:qm$="[194]itte waehlen":gosub63525
321 z1=23:s1=14:qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163]":gosub63525
340 geta$:ifa$=""then340
350 if a$="[140]" then print"[147]";: end
355 if a$=chr$(13) then z1=17:s1=7:qm$="_":gosub63525: pp=5: gosub 5000:goto150
360 if asc(a$)<133 or asc(a$)>140 then 340
370 if a$=chr$(133) then z1=4:s1=5:qm$="_":gosub63525: pp=1
375 if a$=chr$(134) then z1=7:s1=5:qm$="_":gosub63525: pp=2
380 if a$=chr$(135) then z1=9:s1=5:qm$="_":gosub63525: pp=3
385 if a$=chr$(136) then z1=11:s1=5:qm$="_":gosub63525: pp=4
390 if asc(a$)>136 and asc(a$)<141 then z1=14:s1=12:qm$="_":gosub63525
400 :
410 onasc(a$)-132gosub10000,20000,30000,40000,19000,29000,39000
415 if pp=5 then gosub 5000
420 if qq=1 then 410
450 goto 150
499 end
500 rem *** initialisierung
510 ss=2:rr=0:tt=3:pp=1:qq=0:sk=1:d=0
515 dimta$(5,24,4),ta(5,24),w(2),na$(4,2),ko(4),st$(2),k(2),tt(tt),n$(2,50)
520 for i=1 to ss: read x: next i
530 for i=1 to tt
540 : read tt(i)
550 : for j=1 to tt(i)
560 : : for k=1 to 4
570 : : : read ta$(i,j,k)
580 : : next k
590 : : read ta(i,j)
600 : next j
610 next i
620 def fn f1(r)=int(rnd(1)*r)+1
999 return
5000 rem --- return: begriffe
5300 rem ... wertigkeit
5310 print"[147]":qt$="[197]rklaerung [215]ertigkeit": gosub 63520
5320 print"[215]ertigkeit [163][163][163][163][163][163][163][163][163][163]"
5325 print"[196]ie [215]ertigkeit ist ein [200]ilfsmittel"
5330 print"zur einfachen [196]arstellung von [211]toff- verbindungen."
5331 print"[196]ie [215]ertigkeit gibt an, wieviele"
5332 print"[215]asserstoffatome ein [193]tom des jeweili-"
5333 print"gen [211]toffes binden oder ersetzen kann."
5334 print"(z.[194].: [200]2[207] - [207] 2-wertig [195][200]4 - [195] 4-wertig)"
5335 print"[214]erbinden sich je ein [212]eilchen zweier [211]toffe, so haben sie die gleiche"
5336 print"[215]ertigkeit."
5337 print"[211]o konnte man die [215]ertigkeiten vieler [211]toffe herleiten."
5338 gosub 14000
5339 print"[147]":qt$="[197]rklaerung [215]ertigkeit [201][201]": gosub 63520
5340 print"[193]us dem [208]eriodensystem kann man die [215]ertigkeit auch herauslesen."
5341 print"[198]uer [199]ruppen [201] - [201][214] :": print" [215]ertigkeit = [199]ruppennummer"
5342 print"[198]uer [199]ruppen [214] - [214][201][201]": print" [215]ertigkeit = 8 - [199]ruppennummer"
5343 print"[196]as gilt nur fuer die [200]auptgruppen."
5344 print"[197]delgase haben die [215]ertigkeit 0 : sie reagieren nicht."
5499 gosub14000: return
10000 rem --- f1: metall + nichtmetall
10100 w(1)=fn f1(24): w(2)=fn f1(8)
10110 gosub 18000: qq=0
10120 gosub 13000
10300 f$="[210]eaktionsprodukt ": g$=na$(3,1):gosub 12000: gosub 49000: gosub 12200
10310 if rr=1 then rr=0: gosub 15100: gosub 14000: gosub 13000: gosub 49000
10400 f$="1.[211]toff kurz ":g$=na$(1,2): gosub12000: gosub 12300
10410 f$="2.[211]toff kurz ":g$=na$(2,2): gosub12000: gosub 12300
10420 f$="3.[211]toff kurz ":g$=na$(3,2): gosub12000: gosub 49500: gosub 12200
10430 if rr=1 then rr=0: gosub 15200: gosub 14000: gosub 13000: gosub 49500
10500 f$="1.[203]oeffizient ":g$=right$(str$(ko(1)),1)
10505 gosub 12000: gosub 12300
10510 f$="2.[203]oeffizient ":g$=right$(str$(ko(2)),1)
10515 gosub 12000: gosub 12300
10520 f$="3.[203]oeffizient ":g$=right$(str$(ko(3)),1)
10535 gosub 12000: gosub 48000: gosub 12200
10540 if rr=1 then rr=0: gosub 15300: gosub 14000: gosub 48000
10800 z1=22:s1=14:qm$="nochmal (j) ?": gosub 63525
10810 z1=23:s1=14:qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163]": gosub 63525
10820 get a$: if a$="" then 10820
10830 if a$="j" then qq=1
10840 if pp=1 and qq=1 then 10000
11990 return
12000 rem ... abfrage
12100 z1=18:s1=0:qm$=f$:gosub63525
12110 input n$
12120 if n$=g$ then qm$="richtig!":z1=20:s1=16:gosub63525:goto12140
12130 qm$="falsch. [210]ichtig: "+g$:z1=20:s1=(40-len(qm$))/2:gosub63525
12140 for l=1 to 500: next l
12150 return
12200 :
12230 qm$="[197]rklaerung (space)":z1=22:s1=11:gosub63525
12240 qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]":z1=23:s1=11:gosub63525
12250 get a$: if a$="" then 12250
12260 if a$=" " then rr=1
12270 gosub 12300
12280 return
12300 qm$=" ":z1=18:s1=0:gosub63525
12310 z1=19:gosub63525: z1=20:gosub63525: z1=22:gosub63525: z1=23:gosub63525
12320 return
12321 return
13000 rem ... bildschirm
13120 print"[147]": qt$="[193]bfragen [205]etall+[206]ichtmetall": gosub 63520
13200 print"[145][199]ib das bei der [210]eaktion von"
13201 printna$(1,1)" mit "na$(2,1)
13202 print"entstehende [210]eaktionsprodukt an und"
13203 print"stelle die [210]eaktionsgleichung auf."
13300 return
14000 rem ... abfrage
14100 qm$="(return)": z1=22: s1=16: gosub 63525
14110 qm$="[163][163][163][163][163][163][163][163]": z1=23: s1=16: gosub 63525
14120 get a$: if a$<>chr$(13) then 14120
14130 return
14200 get a$: if a$="" then 14100
14210 if a$=" " then rr=1
14220 return
14990 return
15000 rem ... erk1
15100 rem ... erk1,1
15110 print"[147]": qt$="[197]rklaerung [210]eaktionsprodukt": gosub 63520
15120 printna$(1,1)" und "na$(2,1)" reagieren zu ": print "==> "na$(3,1)""
15130 print"[196]er [206]ame einer [205]etall-[206]ichtmetall- [214]erbindung setzt sich i.a. aus"
15140 print"[205]etallname + [206]ichtmetallname + 'id'"
15150 print"zusammen."
15160 print "[193]usnahmen: [211]auerstoff - ox-id"
15170 print " [211]chwefel - sulf-id"
15180 print " [211]tickstoff - nitr-id"
15190 return
15200 rem ... erk1,2
15210 print"[147]":qt$="[197]rklaerung [211]ymbole": gosub 63520
15220 print"[196]as [211]ymbol von "na$(1,1)" heisst "ta$(1,w(1),2)"."
15230 print"[196]as [211]ymbol von "na$(2,1)" heisst "ta$(2,w(2),2)"."
15240 if right$(na$(2,2),1)<>"2" then 15260
15250 print"[196]a "na$(2,1)" ein [199]as ist und molekular"
15255 print"vorkommt, muss der [201]ndex '2' stehen:": print"==> "na$(2,2)
15260 print"[196]ie [198]ormel fuer "na$(3,1): print"heisst "na$(3,2)"."
15261 qm$="weiter (return)": z1=22: s1=12: gosub 63525
15262 qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]": z1=23: s1=12: gosub 63525
15263 get a$: if a$="" then 15263
15264 print"[147]":qt$="[197]rklaerung [211]ymbole [201][201]": gosub 63520
15265 print"[196]ie [198]ormel fuer "na$(3,1): print"heisst "na$(3,2)"."
15270 print""ta$(1,w(1),2)" ist"ta(1,w(1))"[157]-wertig. ";
15275 printta$(2,w(2),2)" ist"ta(2,w(2))"[157]-wertig."
15280 print" 1 "na$(1,2)"-[193]tom verbindet sich"
15290 print "mit ("ta(1,w(1))"/"ta(2,w(2))") "ta$(2,w(2),2)"-[193]tom(en)."
15291 if k(1)=1 then print "1 "na$(1,2)"-[193]tom verbindet sich":goto 15293
15292 print ""k(1);na$(1,2)"-[193]tome verbinden sich"
15293 if k(2)=1 then print "mit 1 "ta$(2,w(2),2)"-[193]tom.": goto 15295
15294 print"mit"k(2);ta$(2,w(2),2)"-[193]tomen."
15295 print "==> ";na$(3,2)
15299 return
15300 rem ... erk1,3
15310 print"[147]":qt$="[197]rklaerung [203]oeffizienten": gosub 63520
15320 print na$(1,2)" + "na$(2,2)" ===> "na$(3,2)
15330 print "[196]ie [193]nzahl der [193]tome von jedem [197]lement"
15331 print"in der [199]leichung muss ausgeglichen"
15332 print"werden.":print"[193]uf beiden [211]eiten der [210]eaktionsgleichung"
15335 print "[145]muessen die [197]lemente in gleicher [193]nzahl vorhanden sein."
15340 qm$="weiter (return)": z1=22: s1=12: gosub 63525
15341 qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]": z1=23: s1=12: gosub 63525
15342 get a$: if a$="" then 15342
15345 print"[147]":qt$="[197]rklaerung [203]oeffizienten [201][201]": gosub 63520
15350 print na$(1,2)" + "na$(2,2)" ===> "na$(3,2)
15360 print "[193]uf der linken [211]eite der [199]leichung gibt es";
15361 l=1: if right$(na$(2,2),1)="2" then l=2
15362 printl;na$(2,1)"-[193]tom(e): "na$(2,2)
15363 print "[193]uf der rechten [211]eite"
15364 l=val(right$(na$(3,2),1)): if l=0 then l=1
15365 print "[157]"l;na$(2,1)"-[193]tom(e): "na$(3,2)
15366 print "[215]ir gleichen aus: ";ko(2);na$(2,2)
15367 print " ";ko(3);na$(3,2)
15368 print "==> "na$(1,2)" + "ko(2);na$(2,2)" ===> "ko(3);na$(3,2)
15370 qm$="weiter (return)": z1=22: s1=12: gosub 63525
15371 qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]": z1=23: s1=12: gosub 63525
15372 get a$: if a$="" then 15372
15373 print"[147]":qt$="[197]rklaerung [203]oeffizienten [201][201][201]": gosub 63520
15374 print na$(1,2)" + "ko(2);na$(2,2)" ===> "ko(3);na$(3,2)
15380 print "[206]un muss nur noch das ";na$(1,1):print"ausgeglichen werden"
15381 print"[193]uf der linken [211]eite ist":print"1 "na$(1,1)"-[193]tom vorhanden: ";na$(1,2)
15382 print"[193]uf der rechten [211]eite":printko(1);na$(1,1)"-[193]tome: "ko(3);na$(3,2)
15383 print "[215]ir gleichen aus: ";ko(1);na$(1,2)
15384 print "==> "ko(1);na$(1,2)" + "ko(2);na$(2,2)" ===> "ko(3);na$(3,2)
15399 return
17990 return
18000 rem ... ber1
18010 qt$="[194]erechnung [205]etall+[206]ichtmetall": gosub 63520: uu=1
18100 na$(1,1)=ta$(1,w(1),1)
18110 na$(2,1)=ta$(2,w(2),1)
18120 na$(3,1)=ta$(1,w(1),1)+ta$(2,w(2),3)
18130 na$(1,2)=ta$(1,w(1),2)
18140 na$(2,2)=ta$(2,w(2),2)
18145 if na$(2,2)<>"[208]" and na$(2,2)<>"[211]" then na$(2,2)=na$(2,2)+"2"
18150 if ta(1,w(1))/ta(2,w(2))=1 then k(1)=1: k(2)=1: goto 18180
18160 if ta(1,w(1))/ta(2,w(2))=2 then k(1)=1: k(2)=2: goto 18180
18170 k(1)=ta(2,w(2)): k(2)=ta(1,w(1))
18180 na$(3,2)=ta$(1,w(1),2)
18190 if k(1)<>1 then na$(3,2)=na$(3,2)+right$(str$(k(1)),1)
18200 na$(3,2)=na$(3,2)+ta$(2,w(2),2)
18210 if k(2)<>1 then na$(3,2)=na$(3,2)+right$(str$(k(2)),1)
18220 na$(4,1)="": na$(4,2)="": ko(4)=0
18230 ko(1)=k(1): ko(2)=k(2): ko(3)=1
18240 if right$(na$(2,2),1)<>"2" then 18270
18250 ko(2)=ko(2)/2
18260 if int(ko(2))<>ko(2) then ko(1)=2*ko(1): ko(2)=2*ko(2): ko(3)=2*ko(3)
18270 return
19000 rem --- f2
19010 print"[147]":qt$="[193]rbeitsbogen [205]etall+[206]ichtmetall": gosub 63520
19100 gosub 19400
19110 for l=1 to n
19120 : w(1)=fnf1(24): w(2)=fnf1(8)
19130 : n$(1,l)=ta$(1,w(1),1)
19140 : n$(2,l)=ta$(2,w(2),1)
19150 next l
19160 gosub 19500
19170 return
19400 rem ... eingabe
19420 input "[215]ieviele [193]ufgaben ";n
19430 if n>50 then print"[145][145][145]": goto 19420
19440 poke198,0: return
19500 rem ... druck
19510 poke768,61:open1,4:print#1:close1:poke768,139:if st<>-128 then goto19520
19515 input"[196]rucker eingeschaltet ";l
19520 open 1,4
19530 for l=1 to n
19540 : print#1,"";n$(1,l);" + ";n$(2,l);" ====>"
19550 : print#1: print#1: print#1
19560 next l
19570 close1
19580 return
20000 rem --- f3: lauge + saeure
20010 print"[147]": qt$="[204]auge+[211]aeure": gosub 63520
20100 w(1)=fn f1(12): w(2)=fn f1(8)
20110 gosub 28000: qq=0
20120 gosub 23000
20300 f$="1.[210]eaktionsprodukt ": g$=na$(3,1): gosub 12000: gosub 12300
20350 f$="2.[210]eaktionsprodukt ": g$=na$(4,1):gosub 12000:gosub 49000: gosub 12200
20360 if rr=1 then rr=0: gosub 25100: gosub 14000: gosub 23000: gosub 49000
20400 f$="1.[211]toff kurz ":g$=na$(1,2): gosub12000: gosub 12300
20410 f$="2.[211]toff kurz ":g$=na$(2,2): gosub12000: gosub 12300
20420 f$="3.[211]toff kurz ":g$=na$(3,2): gosub12000: gosub 12300
20430 f$="4.[211]toff kurz ":g$=na$(4,2): gosub12000: gosub 49500: gosub 12200
20440 if rr=1 then rr=0: gosub 25200: gosub 14000: gosub 23000: gosub 49500
20500 f$="1.[203]oeffizient ":g$=right$(str$(ko(1)),1)
20505 gosub 12000: gosub 12300
20510 f$="2.[203]oeffizient ":g$=right$(str$(ko(2)),1)
20515 gosub 12000: gosub 12300
20520 f$="3.[203]oeffizient ":g$=right$(str$(ko(3)),1)
20525 gosub 12000: gosub 12300
20530 f$="4.[203]oeffizient ":g$=right$(str$(ko(4)),1)
20535 gosub 12000: gosub 48000: gosub 12200
20540 if rr=1 then rr=0: gosub 25300: gosub 14000: gosub 48000
20800 z1=22:s1=14:qm$="nochmal (j) ?": gosub 63525
20810 z1=23:s1=14:qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163]": gosub 63525
20820 get a$: if a$="" then 20820
20830 if a$="j" then qq=1
20840 if pp=2 and qq=1 then 20000
21990 return
23000 rem ... bildschirm
23120 print"[147]": qt$="[193]bfragen [204]auge+[211]aeure": gosub 63520
23200 print"[145][199]ib die bei der [210]eaktion von"
23201 printna$(1,1)" mit "na$(2,1)
23202 print"entstehende [210]eaktionsprodukte an und"
23203 print"stelle die [210]eaktionsgleichung auf."
23300 return
24990 return
25000 rem ... erk2
25100 rem erk 2,1
25110 print"[147]": qt$="[197]rklaerung [210]eaktionsprodukte": gosub 63520
25120 print"[145]"na$(1,1)" und "na$(2,1):print"reagieren zu ":printna$(3,1)" und [215]asser"
25130 print"[194]ei der [210]eaktion von einer [204]auge und einer [211]aeure ensteht ein [211]alz,"
25131 print"eine [214]erbindung des [205]etalls aus der [204]auge und des [211]aeurerestes."
25132 print"[196]er [206]ame des [211]alzes wird aus":print"[205]etallname + [211]aeurerestname gebildet."
25133 print"[194]ei dieser [210]eaktion ([206]eutralisations- reaktion) ensteht aus dem"
25134 print"[215]asserstoff der [211]aeure und den [200]ydroxyl-teilchen der [204]auge [215]asser."
25140 print"==> "na$(3,1)
25141 print" ("ta$(1,w(1),1)"+"ta$(3,w(2),3)")"
25142 print"==> [215]asser"
25143 return
25200 rem erk 2,2
25210 print"[147]": qt$="[197]rklaerung [211]ymbole/[198]ormeln": gosub 63520
25220 print"[196]ie [198]ormel von "na$(1,1):print"heisst "na$(1,2)".":l$=ta$(1,w(1),2)
25221 l=ta(1,w(1)):print"("l$" ist"l"wertig und bindet"l"[200]ydroxid-":print"[199]ruppe(n))"
25222 print"[196]ie [198]ormel von "na$(2,1):print"heisst "na$(2,2)"."
25223 print"[196]ie [198]ormel des [210]eaktionsproduktes "na$(3,1)" heisst "na$(3,2)"."
25224 print"[196]ie [198]ormel von [215]asser lautet [200]2[207]."
25225 qm$="weiter (return)": z1=22: s1=12: gosub 63525
25226 qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]": z1=23: s1=12: gosub 63525
25227 get a$: if a$="" then 25226
25228 print"[147]": qt$="[197]rklaerung [211]ymbole/[198]ormeln [201][201]": gosub 63520
25230 print na$(1,2)" + "na$(2,2)" ===> "na$(3,2)" + [200]2[207]"
25231 print "[196]ie [198]ormel fuer "na$(3,1):print"heisst "na$(3,2)"."
25232 print""ta$(1,w(1),2)" ist"l"[157]-wertig. (bindet"l"[200]ydroxid-":print"[199]ruppe(n))"
25233 l=ta(3,w(2))
25234 print""ta$(3,w(2),2)" ist"l"[157]-wertig. (bindet"l"[215]asser-":print"stoffatom(e))"
25235 print" 1 "ta$(1,w(1),2)"-[212]eilchen verbindet sich"
25236 print"mit ("ta(1,w(1))"/"ta(3,w(2))") "ta$(3,w(2),2)"-[212]eilchen."
25237 print""k(1);ta$(1,w(1),2)"-[212]eilchen";:if k(1)=1 then print" verbindet";:goto25239
25238 print" verbinden";
25239 print" sich":print"mit"k(2);ta$(3,w(2),2)"-[212]eilchen."
25240 print"==> ";na$(3,2)
25299 return
25300 rem erk 2,3
25310 print"[147]":qt$="[197]rklaerung [203]oeffizienten": gosub 63520
25315 print na$(1,2)" + "na$(2,2)" ===> "na$(3,2)" + "na$(4,2)
25320 print""k(1);ta$(1,w(1),2)"-[212]eilchen";:if k(1)=1 thenprint" verbindet";:goto25322
25321 print" verbinden";
25322 print" sich":print"mit"k(2);ta$(3,w(2),2)"-[212]eilchen."
25330 print"[193]lso muessen die [203]oeffizienten heissen:"
25331 print ""ko(1);na$(1,2):printko(2);na$(2,2):printko(3);na$(3,2)
25332 print "([196]a in der [204]auge ein [205]etall-[193]tom und"
25333 print "in der [211]aeure ein [211]aeurerest-[212]eilchen vorhanden sind)"
25334 qm$="weiter (return)": z1=22: s1=12: gosub 63525
25335 qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]": z1=23: s1=12: gosub 63525
25336 get a$: if a$="" then 25336
25337 print"[147]": qt$="[197]rklaerung [203]oeffizienten [201][201]": gosub 63520
25338 print"[157]"ko(1)na$(1,2)" +"ko(2)na$(2,2)" ===>"ko(3)na$(3,2)" + [200]2[207]"
25340 print"[202]etzt muss nur noch das [215]asser ausge- glichen werden:"ko(4)"[200]2[207]"
25341 print"([193]uf der linken [211]eite der [210]eaktions- gleichung sind noch"
25342 print ko(4)*2"[215]asserstoff-[193]tome und":printko(4)"[211]auerstoffatome uebrig.)"
25399 return
28000 rem ... ber2
28010 qt$="[194]erechnung [204]auge+[211]aeure": gosub 63520: uu=2
28100 na$(1,1)=ta$(1,w(1),1)+"lauge"
28110 na$(2,1)=ta$(3,w(2),1)
28120 na$(3,1)=ta$(1,w(1),1)+ta$(3,w(2),3)
28130 na$(4,1)="[215]asser"
28140 na$(1,2)=ta$(1,w(1),2)
28150 if ta(1,w(1))=1 then na$(1,2)=na$(1,2)+"[207][200]": goto 28170
28160 na$(1,2)=na$(1,2)+"([207][200])"+right$(str$(ta(1,w(1))),1)
28170 na$(2,2)="[200]"
28180 if ta(3,w(2))<>1 then na$(2,2)=na$(2,2)+right$(str$(ta(3,w(2))),1)
28190 na$(2,2)=na$(2,2)+ta$(3,w(2),2)
28200 if ta(3,w(2))/ta(1,w(1))=1 then k(1)=1: k(2)=1: goto 28220
28210 k(1)=ta(3,w(2)): k(2)=ta(1,w(1))
28220 na$(3,2)=ta$(1,w(1),2)
28230 if k(1)<>1 then na$(3,2)=na$(3,2)+right$(str$(k(1)),1)
28240 if k(2)=1 then na$(3,2)=na$(3,2)+ta$(3,w(2),2): goto 28270
28250 if ta$(3,w(1),1)="[195]l" then na$(3,2)=na$(3,2)+"[195]l"+right$(str$(k(2)),1):goto28270
28260 na$(3,2)=na$(3,2)+"("+ta$(3,w(2),2)+")"+right$(str$(k(2)),1)
28270 na$(4,2)="[200]2[207]"
28280 ko(1)=k(1): ko(2)=k(2): ko(3)=1: ko(4)=ko(1)*ta(1,w(1))
28290 return
29000 rem --- f4
29010 print"[147]":qt$="[193]rbeitsbogen [204]auge+[211]aeure": gosub 63520
29100 gosub 19400
29110 for l=1 to n
29120 : w(1)=fnf1(12): w(2)=fnf1(8)
29130 : n$(1,l)=ta$(1,w(1),1)+"lauge"
29140 : n$(2,l)=ta$(3,w(2),1)
29150 next l
29160 gosub 19500
29170 return
30000 rem --- f5: f1 / f3
30010 print"[147]": qt$="[193]bfragen": gosub 63520
30100 w=fn f1(2): qq=0
30110 on w gosub 10000,20000
30120 if qq=0 then return
30130 goto 20100
39000 rem --- f6
39010 print"[147]":qt$="[193]rbeitsbogen": gosub 63520
39100 gosub 19400
39110 for l=1 to n
39120 : w(1)=fn f1(2)
39130 : if w(1)=2 then 39180
39140 : w(1)=fn f1(24): w(2)=fn f1(8)
39150 : n$(1,l)=ta$(1,w(1),1)
39160 : n$(2,l)=ta$(2,w(2),1)
39170 : goto 39210
39180 : w(1)=fn f1(12): w(2)=fn f1(8)
39190 : n$(1,l)=ta$(1,w(1),1)+"lauge"
39200 : n$(2,l)=ta$(3,w(2),1)
39210 next l
39220 gosub 19500
39990 return
40000 rem --- f7: gleichungen
40010 print"[147]":qt$="[210]eaktionsgleichung aufstellen": gosub 63520
40020 qq=0: tt=0
40100 gosub 44000: if qq=2 then return
40110 if sk(1)+sk(2)=3 then gosub 18000
40120 if sk(1)+sk(2)=12 then gosub 28000
40130 gosub 48000
40140 qm$="[197]rklaerung (space)": z1=22: s1=11: gosub 63525
40150 qm$="[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]": z1=23: s1=11: gosub 63525
40160 get a$: if a$="" then 40160
40170 if a$=" " then gosub 41000
40180 qm$=" nochmal (j) ": z1=22: s1=11: gosub 63525
40185 qm$=" [163][163][163][163][163][163][163][163][163][163][163] ": z1=23: s1=11: gosub 63525
40190 get a$: if a$="" then 40190
40200 if a$="j" then 40000
40210 return
41000 rem goerk
41100 if uu=1 then gosub15100:gosub14000:gosub15200:gosub14000:gosub15300
41110 if uu=2 then gosub25100:gosub14000:gosub25200:gosub14000:gosub 25300
41120 gosub 14000: gosub 48000
41130 return
44000 rem ... eingabe
44010 print"[147]":qt$="[197]ingabe":gosub63520
44100 print " [194]itte [210]eaktionsstoffe eingeben"
44110 print " [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
44130 i=0
44140 i=i+1: if i=3 then return
44150 qt$="[197]ingabe":gosub63520:print"": if i=2 then print""
44160 printi;: input "[157].[211]toff : ";qo$
44161 if qo$="_" then qq=2: return
44162 if qo$="^" and i<>1 then i=i-2: goto 44140
44170 st$(i)=qo$: a=0: gosub 45000
44180 sk(i)=a: w(i)=b
44190 if a=0 then print "[145] ";: i=i-1
44200 if i<2 then 44140
44300 restore: vv=0
44310 for l=1 to ss
44320 : read x: if sk(1)+sk(2)=x then vv=1
44330 next l
44340 data 3,12
44390 if vv=0 then 44000
44400 vv=0
44410 if sk(1)<sk(2) then vv=1
44440 if vv=1 then 44600
44450 x$=st$(1): x=sk(1): st$(1)=st$(2): sk(1)=sk(2): st$(2)=x$: sk(2)=x
44460 x=w(1): w(1)=w(2): w(2)=x
44470 for l=1 to 2: x$=na$(1,l): na$(1,l)=na$(2,l): na$(2,l)=x$: next l
44600 return
45000 rem .. pruefen + daten
45010 qt$="[208]ruefen und [196]aten holen":gosub63520
45100 gosub 45600: rem lauge
45105 if a<>0 then return
45110 gosub 45800: rem saeure
45115 if a<>0 then return
45120 gosub 45400: rem nichtmetall
45125 if a<>0 then return
45130 gosub 45200: rem metall
45135 if a<>0 then return
45140 return
45200 rem . pr+da metall
45210 qt$="[208]ruefen auf [205]etall": gosub 63520
45220 vv=0: tt=1: a$=qo$: gosub 50000
45300 if vv=1 then a=1
45310 return
45400 rem . pr+da nichtmetall
45410 qt$="[208]ruefen auf [206]ichtmetall": gosub 63520
45420 vv=0: tt=2: a$=qo$: gosub 50000
45500 if vv=1 then a=2
45510 return
45600 rem . pr+da lauge
45610 qt$="[208]ruefen auf [204]auge": gosub 63520
45620 vv=0
45630 x$=right$(qo$,2)
45640 if x$="[207][200]" then a$=left$(qo$,len(qo$)-2): vv=1: goto 45670
45650 if x$=")2" or x$=")3" then a$=left$(qo$,len(qo$)-5): vv=1: goto 45670
45660 if right$(qo$,5)="lauge" then a$=left$(qo$,len(qo$)-5): vv=1
45670 if vv=0 then 45750
45680 vv=0: tt=1: gosub 50000
45690 if b>12 then vv=0
45700 if vv=1 then a=4
45750 return
45800 rem . pr+da saeure
45810 qt$="[208]ruefen auf [211]aeure": gosub 63520
45820 vv=0: a$=qo$
45830 x$=right$(qo$,6)
45840 if x$="[211]aeure" or x$="saeure" then vv=1
45850 x$=left$(qo$,2):ifx$="[200]2"orx$="[200]3"thenvv=1:a$=right$(qo$,len(a$)-2):goto45870
45860 if left$(qo$,1)="[200]" then vv=1: a$=right$(qo$,len(a$)-1)
45870 if vv=0 then 45950
45880 vv=0: tt=3: gosub 50000
45890 if vv=1 then a=8
45950 return
48000 rem ... ausgabe
48010 print"[147]";:qt$="[193]usgabe":gosub63520
48020 print:print na$(1,1);" + ";na$(2,1);" ===> ": print na$(3,1);
48030 if ko(4)<>0 then print " + ";na$(4,1);
48040 print ""
48050 au$=" ": if ko(1)>1 then au$=au$+right$(str$(ko(1)),1)
48055 au$=au$+" "+na$(1,2)+" + ": if ko(2)>1 then au$=au$+right$(str$(ko(2)),1)+" "
48060 au$=au$+na$(2,2)+" ===> ": if ko(3)>1 then au$=au$+right$(str$(ko(3)),1)+" "
48065 au$=au$+na$(3,2)
48070 if ko(4)=0 then 48100
48075 au$=au$+" + ": if ko(4)>1 then au$=au$+right$(str$(ko(4)),1)+" "
48080 au$=au$+na$(4,2)
48100 for l=1 to len(au$)
48110 : x$=mid$(au$,l,1)
48120 : if asc(x$)<48 or asc(x$)>57 then print x$;: goto 48150
48130 :ifasc(mid$(au$,l-1,1))=41orasc(mid$(au$,l-1,1))>64thenprint"";x$;"[145]";:goto48150
48140 : print x$;
48150 : if x$=">" and uu=2 then print"[157][157][157][157][157]";
48155 next l
48175 if pp<4 then 48200
48200 return
49000 rem ... ausgabe1
49100 z1=9:s1=1:qm$="[157]"+na$(1,1)+" + "+na$(2,1)+" ===>":gosub63525
49110 qm$="[157]"+na$(3,1): if na$(4,1)<>"" then qm$=qm$+" + "+na$(4,1)
49120 z1=11:s1=1:gosub63525
49130 return
49500 rem ... ausgabe2
49600 gosub 49000
49610 qm$=na$(1,2)+" + "+na$(2,2)+" ===> "
49611 if uu=1 then qm$=qm$+na$(3,2): goto 49630
49615 qm$=qm$+"[157][157][157][157][157][157][157][157][157][157]"+na$(3,2)
49620 if na$(4,2)<>"" then qm$=qm$+" + "+na$(4,2)
49630 z1=14:s1=1:gosub63525
49640 return
50000 rem --- tabellen
50010 for k=1 to tt(tt)
50020 :forl=1to4
50030 : : if ta$(tt,k,l)=a$ then vv=1: b=k
50040 : next l
50050 next k
50060 return
51000 rem ... metalle
51500 data 24
51600 data "[204]ithium", "[204]i", "", "", 1
51610 data "[206]atrium", "[206]a", "", "", 1
51620 data "[203]alium", "[203]", "", "", 1
51630 data "[210]ubidium", "[210]b", "", "", 1
51640 data "[195]aesium", "[195]s", "", "", 1
51650 data "[194]eryllium", "[194]e", "", "", 2
51660 data "[205]agnesium", "[205]g", "", "", 2
51670 data "[195]alcium", "[195]a", "", "", 2
51680 data "[211]trontium", "[211]r", "", "", 2
51690 data "[194]arium", "[194]a", "", "", 2
51700 data "[194]or", "[194]", "", "", 3
51710 data "[193]luminium", "[193]l", "", "", 3
51720 data "[199]allium", "[199]a", "", "", 3
51730 data "[201]ndium", "[201]n", "", "", 3
51740 data "[212]hallium", "[212]l", "", "", 3
51750 data "[211]ilicium", "[211]i", "", "", 4
51760 data "[199]ermanium", "[199]e", "", "", 4
51770 data "[218]inn", "[211]n", "", "", 4
51780 data "[194]lei", "[208]b", "", "", 4
51790 data "[193]rsen", "[193]s", "", "", 3
51800 data "[193]ntimon", "[211]b", "", "", 3
51810 data "[194]ismut", "[194]i", "", "", 3
51820 data "[211]elen", "[211]e", "", "", 2
51830 data "[212]ellur", "[212]e", "", "", 2
52000 rem ... nichtmetalle
52500 data 8
52600 data "[211]tickstoff", "[206]", "nitrid", "", 3
52610 data "[208]hosphor", "[208]", "phosphid", "", 3
52620 data "[211]auerstoff", "[207]", "oxid", "", 2
52630 data "[211]chwefel", "[211]", "sulfid", "", 2
52640 data "[198]luor", "[198]", "fluorid", "", 1
52650 data "[195]hlor", "[195]l", "chlorid", "", 1
52660 data "[194]rom", "[194]r", "bromid", "", 1
52670 data "[201]od", "[201]", "iodid", "", 1
53000 rem ... saeurereste
53500 data 8
53600 data "[211]alzsaeure", "[195]l", "chlorid", "", 1
53610 data "schwefelige [211]aeure", "[211][207]3", "sulfit", "", 2
53620 data "[211]chwefelsaeure", "[211][207]4", "sulfat", "", 2
53630 data "[203]ohlensaeure", "[195][207]3", "carbonat", "", 2
53640 data "[208]hosphorsaeure", "[208][207]4", "phosphat", "", 3
53650 data "phosphorige [211]aeure", "[208][207]3", "phosphit", "", 3
53660 data "[211]alpetersaeure", "[206][207]3", "nitrat", "", 1
53670 data "salpetrige [211]aeure", "[206][207]2", "nitrit", "", 1
63519 rem --- bildschirm
63520 print""qt$;:forq=len(qt$)to39:print" [146]";:nextq:print""
63521 poke 2018,22: poke 2019,01: poke 2020,19: poke 2021,39
63522 poke 2022,56: poke 2023,56: for q=0 to 7: poke 56288+q,12: next q: return
63523 :
63524 rem --- cursor
63525 poke 214,z1: poke 211,s1: sys 58640: print qm$;: return