Prüfungsfragen
Prüfungen sind für viele ein Greuel, sowohl für die Lehrer als auch für die geplagten Schüler. Beiden kann mit diesem Programm geholfen werden.


Da ich in der Aus- und Weiterbildung tätig bin, muß ich zum Leidwesen meiner Kursteilnehmer ab und zu Arbeiten schreiben lassen. Mein Bestand an Prüfungsfragen existierte bisher auf Karteikarten, aus denen dann jedesmal die Arbeit zusammengestellt wurde.
Grundgedanke ist also, diese Kartei in eine Datei zu übertragen, in der ich, nach Sachgebieten geordnet, herumblättern und die gewünschten Fragen gleich ausdrucken lassen kann.
Darüber hinaus soll diese Datei auch den Kursteilnehmern zugänglich sein, die anhand der Prüfungsfragen lernen, nicht aber in den Bearbeitungsmodus hineindürfen.
Ich könnte mir vorstellen, daß dieses Programm neben manchem Lehrer auch für viele Schüler interessant sein könnte, die sich so ihre eigene Prüfungsfragendatei erstellen und ihr Wissen regelmäßig überprüfen können.
Aus Geschwindigkeitsgründen mußte ich einige Maschinenspracheunterprogramme einbinden.
Prüfungsfragen/Programmbeschreibung
Dieses Programm ist geeignet…
- für den Lehrenden, der sich eine Prüfungsfragendatei erstellen will, aus der er bestimmte Fragen später selektieren und ausdrucken kann.
- für den Lernenden, der anhand einer Prüfungsfragensammlung »pauken« will.
Eine grundsätzliche Schwierigkeit liegt im Vergleich der Antworten. Die jeweilige Antwort muß »eindeutig« sein. Gut geeignet ist das Multiple-choise-System, das heißt von vorgegebenen Antworten ist eine richtig oder falsch. Möglich ist aber auch die Eingabe von Jahreszahlen, Namen etc., bei denen kaum unterschiedliche Möglichkeiten in der Eingabe vorkommen können.
Nach dem Laden des Programms und Starten mit RUN werden zuerst einige Maschinenspracheprogramme nachgeladen. Sie werden bewußt nicht zu einem Programm zusammengefaßt, da sie in vielen Programmen als Programmbausteine Verwendung finden können.
Das Programm Prüfungsfragen ist menügesteuert, wobei die einzelnen Menüpunkte mit den Cursorsteuertasten angewählt und mit der F1- oder RETURN-Taste übernommen werden können.
(Hartmut Gölker/gk)Das Programm erleichtert nicht nur dem Lehrer die Zusammenstellung von Aufgaben, sondern auch dem Kursteilnehmer deren Beantwortung.
Das Programm (Listing 1) ist menügesteuert und erlaubt nicht nur das Auswählen und Beantworten von Fragen, sondern auch die Erstellung eines eigenen Fragenkatalogs nach dem Multiple Choise System. Sie kennen sicher alle entsprechenden Fragebögen: Es wird eine Frage gestellt, und Sie müssen aus mehreren vorgegebenen Antworten die richtige(n) heraussuchen.
Alle Menüpunkte können mit den Cursor-Tasten angewählt und mit der F1- oder RETURN-Taste übernommen werden.
Merken muß man sich noch die F7-Taste, mit ihr gelangt man in den bisherigen Programmabschnitt zurück. Zuerst erscheint das Menü:
— Druck.einst. | Einstellung auf die Drucker Epson FX-80 oder Commodore MPS 801 |
— Beschreibung | ist eine Kurzbeschreibung des Programms, |
— Start | die Aufforderung … »Aufgabendiskette einlegen« erscheint. |
Nach dem Einlegen der Aufgabendiskette, beziehungsweise einer neu formatierten Diskette, kann die eigentliche Arbeit losgehen.
Es folgen die Menüpunkte:
— Lernen | ist für den Lernenden zum Pauken von Prüfungsfragen |
— Bearbeiten | dient unter anderem zur Eingabe von Prüfungsfragen und zur Druckerausgabe |
Lernen
Sind die Prüfungsfragen in unterschiedliche Sachgebiete unterteilt, so werden die Sachgebiete in einem Menü gezeigt, aus dem die Auswahl zu treffen ist.
Nach dieser Wahl erscheint die erste Frage. Die Antwort ist einzugeben und mit F1 oder RETURN zu bestätigen. Bei falscher Antwort antwortet der Computer mit einem blinkenden *falsch* und der Anwender hat zwei weitere Eingabemöglichkeiten.
Eine korrekte Antwort wird mit *richtig* quittiert und die nächste Frage kann von der Diskette eingelesen werden. Beim ersten Mal richtig beantwortete Fragen werden aussortiert und erscheinen nicht mehr.
Die Reihenfolge der Fragen ist zufällig. Um den Programmabschnitt zu beenden, muß ich entweder alle Fragen des Sachgebiets richtig beantworten oder mit F7 abbrechen. Danach kommt die Auswertung, die angibt, wieviel Fragen bearbeitet und wieviel davon beim ersten Mal richtig beantwortet wurden.
Bearbeiten
Dieser Programmabschnitt ist durch eine Codenummer geschützt. Als Codenummer wurde 001 festgelegt, das läßt sich aber beliebig ändern. Legt man Wert auf diesen Schutz, muß noch ein LIST-Schutz und/oder ein AUTOSTART eingebaut werden.
Es folgt ein Auswahlmenü der vorhandenen Sachgebiete und den Optionen »Sachgebiet anlegen« und »Sachgebiet löschen«
- Sachgebiete
- Physik
- Chemie
- Mathematik
- Sachgebiet anlegen
- Sachgebiet löschen
- Sachgebiet anlegen
- Es können bis zu zehn Sachgebiete angelegt werden, es ist jedoch nicht sinnvoll auf einer Diskette zuviel Sachgebiete unterbringen zu wollen, da die Speicherkapazität begrenzt ist.
- Sachgebiete löschen
- Das Sachgebiet und alle zugehörigen Prüfungsfragen werden auf der Diskette gelöscht.
Ist ein Sachgebiet gewählt, muß entschieden werden, ob neue Fragen eingegeben oder vorhandene bearbeitet werden sollen:
- Eingabe — Auf dem bis auf Kopf- und Fußzeilen leeren Bildschirm wird eine Frage eingegeben. Der Cursor kann sich innerhalb des vorgegebenen Raumes frei nach oben und unten bewegen.
Mit F1 wird der Text übernommen, und nachdem nach Aufforderung die Antwort eingetippt worden ist, wird die Frage gespeichert.
In der rechten oberen Ecke des Bildschirms erscheint jeweils die Anzahl der bisher gespeicherten Fragen und die Nummer der in Arbeit befindlichen Frage.
- Ausgabe — Die erste Frage des angewählten Sachgebietes erscheint automatisch. Danach folgt in den Fußzeilen das Menü:
weiter zurück Aufg.Nr. drucken löschen Korrektur
Die Maschinensprach-Unterprogramme
- Print
Die Routine erlaubt die positionierte Bildschirmausgabe (Listing 2). Syntax: sys pr, Spalte, Zeile, Druckliste
- IN21
Mit dieser erweiterten Input-Routine kann eine Variable an einer bestimmten Stelle des Bildschirms eingelesen werden (Listing 3).
Syntax: sys in, Spalte, Zeile, Länge, Art, Variable
— Länge Maximallänge — Art numerische (0)/alphanumerische (1) — Variable Variable, in die der String eingelesen wird. - Bildschirm2
Die Routine erlaubt eine freie Texteingabe innerhalb eines bestimmten Bildschirmbereichs von Spalte1/Zeile1 bis Spalte 2/Zeile2 (Listing 4). Syntax: sys bi, sp1, ze1, sp2, ze2
- READ10. Die Routine liest einen Text vom Bildschirm, wobei alle überflüssigen Leerzeichen entfernt werden und überträgt den Text wahlweise auf die Diskette oder den Drucker (Listing 5). Ein zweiter Einspringpunkt liest umgekehrt den Text von der Diskette und gibt ihn wieder in der ursprünglichen Form auf dem Bildschirm aus.
- Drucker. Mit dieser Routine läßt sich vom Programm her überprüfen, ob der Drucker eingeschaltet ist. Sie stammt aus dem 64’er-Magazin (Listing 6).
10 rem programmierte fragen 20 poke 53280,12:poke53281,0 100 print chr$(147) 101 if a=0 then a=1:load"print obj",8,1 102 if a=1 then a=2:load"in21 obj",8,1 103 if a=2 then a=3:load"bildschirm obj",8,1 104 if a=3 then a=4:load"read10 obj",8,1 105 if a=4 then a=5:load"drucker obj",8,1 110 pr=12*16^3 : dr=pr+6*16^2 111 in=pr+1*16^2 : bi=pr+3*16^2 112 wr=pr+5*16^2 : re=wr+13*16+10 113 dim l(99,2),m$(15),sp(15),ze(15) 114 printchr$(14):poke 657,128 118 au=0:ko$="Pruefungsfragen":gosub 11000:rem kopf 119 sys pr,01,01,"H. Goelker / 28.03.84{lblu}" 125 m$(1)= " Druck.einst. ":sp(1)=0:ze(1)=24 130 m$(2)= " Beschreibung ":sp(2)=16:ze(2)=24 135 m$(3)= " Start ":sp(3)=32:ze(3)=24:nn=3:j=2:gosub14010 140 if x$=chr$(136) then 118 145 if j=3 then 156 150 on j gosub 15000,16000 151 goto 118 156 ko$="Pruefungsfragen":gosub11000 158 gosub 13000 159 if x$=chr$(136) then 118 160 gosub10700:ko$="Pruefungsfragen":gosub 11000 162 m$(1)=" lernen ":sp(1)=7:ze(1)=24 164 m$(2)=" bearbeiten ":sp(2)=22:ze(2)=24 :nn=2 166 gosub 14000 168 if x$=chr$(136) then 118 170 on j gosub 200,800 180 goto 160 190 : 200 rem aufgaben lernen *************** 210 ko$="Aufgaben lernen":gosub11000 230 gosub 12500 240 if x$=chr$(136)then return 245 if f=0 then gosub 10000 250 if n>0 then 300 255 gosub 11400 260 sys pr,07,24,"Keine Aufgaben gespeichert"chr$(145) 270 get x$:if x$=""then 270 280 sa$="":return 300 for i=1 to n:l(i,1)=i:l(i,2)=0:next 310 max=n 320 t=int(rnd(1)*max)+1:r=l(t,1) 330 if l(t,2)=0 then fr=fr+1 340 gosub17000:gosub10600:remkopf/frage 350 sys pr,00,24,"Deine Antwort ?"; 360 sys in,18,24,21,1,er$ 365 if peek(828)=136 then 700 370 if er$<>aw$ then 500 380 if l(t,2)=0 then ri=ri+1 390 l(t,1)=l(max,1):l(t,2)=l(max,2) 400 max=max-1 410 gosub11400:rem fusszeilen loeschen 420 sys pr,12,23," ** richtig ** " 440 getx$:if x$<>chr$(13)andx$<>chr$(136)then 440 450 if x$=chr$(136) or max=0 then 700 460 goto 320 470 : 500 rem falsche antwort 510 l(t,2)=1 520 gosub 12000 :rem falsche antwort 530 gosub11400 540 sys pr,00,24,"Deine Antwort ?"; 550 sys in,18,24,21,1,er$ 560 if er$=aw$ then fa=0:goto410 570 gosub 12000:fa=fa+1:if fa<2 then 530 580 gosub 11400:gosub13200 581 sys pr,(40-l)/2,23," * richtig ist :"aw$" * " 600 fa=0: goto 440 610 : 700 gosub 11000:rem kopf 710 sys pr,2,12,"Anzahl der Fragen :";fr 720 sys pr,2,14,"richtige Antworten:";ri 730 fa=0:ri=0:fr=0:sa$="" 740 get x$:if x$="" then 740 750 return 760 : 800 rem aufgaben bearbeiten *********** 810 if s$="001 "then 890 820 ko$="Aufgaben bearbeiten":gosub11000 830 sys pr,01,05,"Bitte Code-Nr. eingeben:" 840 sys in,01,07,5,1,s$ 850 if s$="001 "then 890 860 sys pr,01,24,"Code-Nr. unbekannt / weiter mit RETURN"chr$(145) 870 getx$:ifx$<>chr$(13) then 870 880 goto 800 890 gosub 11000:rem kopf 900 gosub 12200:if a=136 then sa$="": return 980 : 1000 rem aufgaben bearbeiten teil 2 --- 1010 ko$="Aufgaben bearbeiten":gosub 11000:rem kopf 1020 m$(1)=" Eingabe ":sp(1)=6:ze(1)=24 1030 m$(2)=" Ausgabe ":sp(2)=24:ze(2)=24 1090 nn=2:gosub14000 1095 if x$=chr$(136) then sa$="":return 1100 onj gosub 1140,3000,1090:goto 1000 1110 : 1140 rem eingabe ---------------------- 1145 ko$="Aufgaben eingeben":aw$="" 1146 if n+1<99 then 1150 1147 gosub11400:syspr,5,23,"{rvon}Keine Eingabe mehr moeglich{rvof}":gosub11100:goto 1280 1150 r=n+1:gosub 11000:rem kopf 1160 sys pr,10,24,"f1=Text uebernehmen"chr$(145) 1170 sys bi,0,3,39,20 1180 a=peek(828) 1195 if a=136 then 1280 1200 gosub 11400:rem zeile 24 loeschen 1205 poke781,21:sys 59903 1210 sys pr,0,24,"richtige Antwort: "aw$;chr$(145) 1220 sys in,18,24,21,1,aw$ 1225 a=peek(828) 1226 if a=136 then 1280 1230 a=peek(828):if a=17 or a=145 or aw$=" "then1220 1240 if ko=0 then n=n+1:r=n 1260 gosub 10500:rem aufgaben write 1270 gosub 10200:rem status write 1280 r=0:return 1290 : 3000 rem ausgabe 3010 r=0: ko$="Ausgabe/Korrektur":ifn<1 then 3700 3015 goto 3200 3020 gosub11000 3100 gosub10600 3102 gosub13200:sys pr,(52-l)/2,21," -- "aw$" -- " 3105 gosub11400 3110 m$(1)=" weiter ":sp(1)=1:ze(1)=23 3111 m$(2)=" zurueck ":sp(2)=13:ze(2)=23 3112 m$(3)=" Aufg.Nr. ":sp(3)=27:ze(3)=23 3120 m$(4)=" drucken ":sp(4)=1:ze(4)=24 3121 m$(5)=" loeschen ":sp(5)=13:ze(5)=24 3122 m$(6)=" Korrektur ":sp(6)=27:ze(6)=24 3130 nn=6:gosub 14000 3135 if x$=chr$(136) then 3800 3140 on j goto 3200,3300,3400,5000,4000,3600 3150 : 3200 rem weiter ----------------------- 3210 r=r+1:if r<=n then 3020 3220 gosub 11400 3230 sys pr,8,24,"Ende des Aufgabensatzes"chr$(145) 3240 get x$:if x$=""then 3240 3250 goto 3800 3260 : 3300 rem zurueck ---------------------- 3310 r=r-1:if r>=1 then 3020 3320 goto 3220 3330 : 3400 rem nummer eingeben -------------- 3410 r=0:gosub 11000 3420 sys pr,1,24,"Aufgaben-Nummer ?"chr$(145) 3430 sys in,19,24,3,0,b$:b=int(val(b$)) 3435 if peek(828)=136 then 3020 3440 if b>n or b<1 then sys pr,1,23,"ungueltige Nummer":goto 3420 3450 r=b:goto 3020 3460 : 3600 rem korrektur -------------------- 3610 gosub11400:rem fusszeilen loeschen 3615 sys pr,09,23,"Gib die Korrektur ein !" 3620 ko=r:gosub 1160:r=ko:ko=0 3630 if a=136 then return 3640 goto 3105 3650 : 3700 gosub11000:sys pr,8,24,"Keine Aufgabe gespeichert "chr$(145) 3710 get x$:if x$=""then 3710 3800 r=0:return 3810 : 4000 rem loeschen --------------------- 4100 gosub 11400 4110 sys pr,4,24,"Aufgabe wirklich loeschen (j/n) ?"chr$(145) 4120 getx$:ifx$<>"j" and x$<>"n" then 4120 4130 if x$="n" then 3105 4135 gosub 11400:sys pr,5,24,"... Aufgabe wird geloescht ..."chr$(145) 4140 if n=1 or n=r then 4570 4500 open 15,8,15 4510 print#15,"s:"str$(r)+sa$ 4520 print#15,"r:"str$(r)+sa$"="str$(n)+sa$ 4530 close15 4570 n=n-1 4580 gosub10200:rem statusdatei 4590 goto 3800 4600 : 5000 rem drucken ********************** 5001 gosub 11400 5002 poke2,4:sys dr 5003 if peek(2)=0 then au=au+1:goto5008 5004 sys pr,07,24,"Drucker nicht eingeschaltet"chr$(145) 5005 get x$:if x$=""then 5005 5006 goto 3105 5007 : 5008 on d goto 5009,5100 5009 rem epson drucker ---------------- 5010 open2,4,0:cmd2 5020 print chr$(27);"3";chr$(22);:print chr$(15); 5026 print chr$(27);"l";chr$(5); 5027 print "Aufg.";au 5028 print chr$(27);"l";chr$(15); 5030 sys wr:close2 5070 goto 3105 5080 : 5100 rem vc 1526 drucker -------------- 5102 open2,4,7:print#2,"Aufg.";au 5103 print#2,left$("{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}",5+len(str$(au))) 5105 open6,4,6:print#6,chr$(16); 5130 sys wr 5140 print#2:close2:close6: goto 3105 10000 rem dateien ********************* 10010 : 10020 rem statusdatei read ------------ 10100 n=0:r=0:open15,8,15 10110 open2,8,2,sa$+"/s,s,r" 10120 input#15,f:if f<>0 then 10140 10130 input#2,n:rem anzahl aufgaben 10140 close 2:close15:return 10195 : 10200 rem statusdatei anlegen --------- 10230 open2,8,2,"@:"+sa$+"/s,s,w" 10240 print#2,n 10250 close2:return 10260 : 10300 rem sachgebiete write ----------- 10310 if ii>0 then 10350 10320 open15,8,15,"s:Sachgebiete" 10325 sa$(1)="" 10330 close15:return 10340 : 10350 open2,8,2,"@:Sachgebiete,s,w" 10360 for i=1 to ii:print#2,sa$(i):next 10370 close2:close15:return 10500 rem aufgaben write -------------- 10504 gosub 11400:rem zeile 24 loeschen 10505 sys pr,08,24,"... bitte warten ..."chr$(145) 10510 sys pr,00,3,""; 10520 open3,3 10530 open2,8,2,"@:"+str$(r)+sa$+",s,w" 10540 sys wr 10565 print#2,aw$ 10570 close2:close3 10580 return 10590 : 10600 rem aufgaben read --------------- 10610 open2,8,2,str$(r)+sa$+",s,r" 10620 sys re 10630 input#2,aw$ 10660 close2:return 10700 rem sachgebiete pruefen/einlesen 10705 ii=0 10710 open 15,8,15 10720 open 2,8,2,"Sachgebiete,s,r" 10730 input#15,f 10740 if f<>0 then 10780 10750 ii=ii+1 10760 input#2,sa$(ii) 10770 if st<>64 then 10750 10780 close2:close15:return 10790 : 11000 rem kopf ------------------------ 11010 print chr$(147);:print tab(1)ko$ 11015 if sa$="" then 11020 11016 sys pr,1,1,sa$ 11017 sys pr,28,0,"Aufg.Nr.:"r 11018 sys pr,28,1,"Anzahl :"n 11020 sys pr,00,02,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"chr$(145) 11021 sys pr,27,0,"{CBM-N}" 11022 sys pr,27,1,"{CBM-N}" 11030 sys pr,00,22,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"chr$(145) 11040 sys pr,00,03,""; 11050 return 11060 : 11100 rem weiter mit return ----------- 11110 sys pr,10,24,"Weiter mit RETURN"chr$(145) 11120 getx$:ifx$<>chr$(13) then 11120 11130 a=136:return 11140 : 11400 rem zeile 24 loeschen ----------- 11410 poke781,23:sys 59903 11420 poke781,24:sys 59903:return 11430 : 11580 : 12000 rem falsche antwort ------------- 12010 for j=1 to 5 12020 sys pr,25,24,"** FALSCH **"; 12030 for jj=1 to 60:next 12040 sys pr,25,24,"{rvon}** FALSCH **{rvof}"; 12050 for jj=1 to 60:next:next 12060 return 12070 : 12200 rem sachgebiet waehlen/anlegen -- 12205 n=0:sa$="":a=0 12210 if ii=0 then 12320 12215 sys pr,05,4,"Sachgebiete" 12216 sys pr,05,5,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}" 12220 for i=1 to ii 12230 m$(i)=sa$(i):sp(i)=5:ze(i)=i+5 12240 next 12245 m$(ii+1)="neues Sachgebiet anlegen ":sp(ii+1)=5:ze(ii+1)=18 12246 m$(ii+2)="Sachgebiet loeschen ":sp(ii+2)=5:ze(ii+2)=19 12260 nn=ii+2:gosub 14500 12270 if x$=chr$(136) then a=136:return 12280 if j=ii+1 then 12320 12290 if j=ii+2 then 12700 12310 sa$=sa$(j):gosub 10000:goto 12430 12320 gosub 11400:rem statuszeile loeschen 12322 if ii<10 then 12330 12324 sys pr,08,23,"{rvon} ** nicht moeglich ** {rvof}":gosub 11100:return 12330 sys pr,00,24,"Neues Sachgebiet eingeben: "chr$(145) 12340 sys in,27,24,12,1,sa$ 12344 a=peek(828):if a=136 thensa$="":return 12345 if a=145 or a=17 or sa$=" "then 12340 12350 for i=1 to ii 12360 if sa$=sa$(i) then syspr,00,23,"-- Name existiert schon --":goto 12330 12370 next 12380 ii=ii+1:sa$(ii)=sa$ 12390 gosub 10300:rem sachgebiete write 12420 gosub 10200:rem statusdatei anlegen 12430 return 12440 : 12500 rem sachgebiete waehlen --------- 12510 n=0:sa$="":f=0:a=0 12520 if ii=0 then f=1:return 12530 if ii=1 then sa$=sa$(1):return 12534 sys pr,05,4,"Sachgebiete" 12535 sys pr,05,5,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}" 12536 for i=1 to ii 12537 m$(i)=sa$(i):sp(i)=5:ze(i)=i+5 12538 next:nn=ii 12540 gosub 14500 12545 if x$=chr$(136) then return 12550 sa$=m$(j):return 12630 : 12700 rem sachgebiet loeschen --------- 12710 ko$="{rvon}Sachgebiet loeschen{rvof}":gosub11000:gosub12500 12720 if a=136 then return 12725 a=j:if ii=1 thena=1 12730 gosub 11400:sys pr,1,23,"zu loeschendes Sachgebiet:"sa$(a) 12740 sys pr,10,24,"sicher (j/n)?"chr$(145) 12750 getx$:if x$<>"j"and x$<>"n" then 12750 12760 if x$="n" then a=136:return 12765 gosub 11400:sys pr,3,24,"... "sa$(a)" wird geloescht ..."chr$(145) 12766 open15,8,15,"s:"+sa$(a)+"/s":close15 12767 open15,8,15,"s:?"+sa$(a):close15 12768 open15,8,15,"s:??”+sa$(a):close15 12770 if a=ii then 12810 12780 for i=a to ii-1 12790 sa$(i)=sa$(i+1) 12800 next 12810 ii=ii-1 12820 gosub10300:rem sachgebiete write 12840 close15:a=136:return 12850 : 13000 rem "Aufgabendiskette einlegen" 13010 sys pr,6,23," Aufgabendiskette einlegen " 13020 for j=1 to 80:next 13030 get x$:if x$<>""then 13070 13040 sys pr,6,23,"{rvon} Aufgabendiskette einlegen {rvof}" 13050 for j=1 to 80:next 13060 goto 13010 13070 gosub11400:return 13080 : 13200 rem ausgabe richtige antwort 13210 jj=0:for j=0 to len(aw$) 13220 if mid$(aw$,len(aw$)-j,1)<>" "then 13240 13230 jj=jj+1:next 13240 aw$=left$(aw$,len(aw$)-jj) 13250 l=len(aw$)+19 13270 return 13280 : 14000 rem menue *********************** 14005 j=1 14010 gosub 14100:syspr,sp(j),ze(j),"{rvon}"m$(j)chr$(145) 14015 get x$ 14017 if x$=chr$(13) then 14060 14020 if x$=chr$(133)orx$=chr$(29)orx$=chr$(157)orx$=chr$(136)then14025 14022 if x$<>chr$(17)andx$<>chr$(145)then 14015 14025 if x$=chr$(17)andze(j)=23andj+3<=nn then j=j+3 14026 if x$=chr$(145)andze(j)=24andnn>4then j=j-3 14030 if x$=chr$(133)or x$=chr$(136)then 14060 14040 if x$=chr$(157)then j=j-1:if j=0 then j=nn 14045 if x$=chr$(29)then j=j+1:if j=nn+1 then j=1 14050 goto 14010 14060 return 14070 : 14100 for i=1 to nn 14110 sys pr,sp(i),ze(i),m$(i)chr$(145) 14120 next:return 14500 rem menue *********************** 14505 j=1 14510 gosub 14100:syspr,sp(j),ze(j),"{rvon}"m$(j)chr$(145) 14515 get x$ 14518 if x$=chr$(13) then 14560 14520 if x$<>chr$(133)andx$<>chr$(17)andx$<>chr$(145)andx$<>chr$(136)then 14515 14530 if x$=chr$(133)or x$=chr$(136) then 14560 14540 if x$=chr$(145)then j=j-1:if j=0 then j=nn 14545 if x$=chr$(17)then j=j+1:if j=nn+1 then j=1 14550 goto 14510 14560 return 15000 rem druckeranpassung ************ 15010 gosub11400 15020 m$(1)=" EPSON ":sp(1)=5:ze(1)=24 15030 m$(2)=" MPS 801 ":sp(2)=23:ze(2)=24:nn=2:gosub14000 15040 d=j:return 16000 rem programmbeschreibung ******** 16010 print chr$(147) 16020 print " Mit diesem Programm kann man" 16030 print " {CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}" 16040 print " - Pruefungsfragen lernen 16050 print " - Pruefungsfragen eingeben / aendern" 16060 print " - Pruefungsfragen ausdrucken 16070 print 16080 print " Es ist besonders fuer programmierte Fragen geeignet. 16090 print:print 16100 print " Folgendende Tasten werden benutzt:" 16110 print " {CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}":print 16120 print " f1 / RETURN zur Uebernahme von Werten 16130 print " und Menuepunkten":print 16140 print" f7 zur Rueckkehr zum vorher- gehenden Pro";: 16150 print "grammteil":print 16160 print " Cursorsteu- zur Anwahl der einzelnen" 16170 print " ertasten Menuepunkte" 16180 syspr,12,24,"{yel}Zurueck mit f7{lblu}"chr$(145) 16190 get x$:ifx$<>chr$(136)then16190 16200 return 17000 rem kopf ------------------------ 17010 print chr$(147);:print tab(1)ko$ 17015 if sa$="" then 11020 17016 sys pr,1,1,sa$ 17017 sys pr,28,0,"Aufg.Nr.:"n-max+1 17018 sys pr,28,1,"Anzahl :"n 17020 sys pr,00,02,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"chr$(145) 17021 sys pr,27,0,"{CBM-N}" 17022 sys pr,27,1,"{CBM-N}" 17030 sys pr,00,22,"{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"chr$(145) 17040 sys pr,00,03,""; 17050 return 17060 : 30000 open 15,8,15 30010 input#15,a,a$ 30020 print a,a$ 30030 close 15
PROGRAMM : PRINT OBJ C000 C01B ----------------------------------- C000 : 20 FD AE 20 9E B7 86 D3 38 C008 : 20 FD AE 20 9E B7 A4 D3 B8 C010 : 18 20 F0 FF 20 FD AE 4C BA C018 : A4 AA FF 91
PROGRAMM : IN21 OBJ C100 C22F ----------------------------------- C100 : 20 FD AE 20 9E B7 8E E9 84 C108 : 07 20 FD AE 20 9E B7 8E 67 C110 : EB 07 20 FD AE 20 9E B7 1C C118 : 8E EC 07 AD EC 07 18 6D D6 C120 : E9 07 8D EA 07 20 FD AE 14 C128 : 20 9E B7 8E ED 07 AC E9 F5 C130 : 07 AE EB 07 18 20 F0 FF B0 C138 : A9 00 8D EE 07 A5 C6 85 E6 C140 : CC F0 FA 78 A5 CF F0 0C 07 C148 : A5 CE AE 87 02 A0 00 84 1F C150 : CF 20 13 EA 20 B4 E5 8D AC C158 : 3C 03 C9 0D F0 18 C9 91 44 C160 : F0 14 C9 11 F0 74 C9 14 F1 C168 : F0 D3 C9 13 F0 CF C9 85 D6 C170 : 30 07 C9 8D 10 03 4C DA 48 C178 : C1 C9 9D D0 11 C6 D3 A6 83 C180 : D3 EC E9 07 10 B7 AE E9 72 C188 : 07 86 D3 4C 3D C1 C9 1D 94 C190 : D0 0D AE EA 07 CA E4 D3 F2 C198 : F0 A3 E6 D3 4C 3D C1 C9 D7 C1A0 : 2E F0 28 C9 3A F0 96 C9 A3 C1A8 : 20 F0 20 A0 01 CC ED 07 99 C1B0 : 10 03 4C 08 AF D0 03 4C 7C C1B8 : CB C1 A0 0A A2 30 86 02 97 C1C0 : C5 02 F0 07 E8 88 D0 F6 A7 C1C8 : 4C 3D C1 20 D2 FF AE EA E5 C1D0 : 07 E4 D3 D0 02 C6 D3 4C 96 C1D8 : 3D C1 AD E9 07 85 D3 20 CB C1E0 : FD AE 20 8B B0 A6 0D F0 04 C1E8 : 42 85 FB 84 FC AD EC 07 7B C1F0 : 20 7D B4 A2 02 A0 02 B5 E9 C1F8 : 61 91 FB CA 88 10 F8 A9 BA C200 : 00 20 BD FF A9 03 A2 03 C3 C208 : A0 FF 20 BA FF 20 C0 FF 0B C210 : A2 03 20 C6 FF A0 00 20 5A C218 : CF FF 91 62 C8 CC EC 07 4C C220 : D0 F5 20 CC FF A9 03 20 26 C228 : C3 FF 60 4C 99 AD FF 4A
PROGRAMM : BILDSCHIRM OBJ C300 C376 ----------------------------------- C300 : 20 FD AE 20 9E B7 8E E9 84 C308 : 07 20 FD AE 20 9E B7 8E 67 C310 : EB 07 20 FD AE 20 9E B7 1C C318 : 8E EA 07 20 FD AE 20 9E F4 C320 : B7 8E EC 07 AC E9 07 AE CE C328 : EB 07 18 20 F0 FF A6 D6 F8 C330 : EC EB 07 30 EF A5 C6 85 2C C338 : CC F0 F3 78 A5 CF F0 0C 3D C340 : A5 CE AE 87 02 A0 00 84 17 C348 : CF 20 13 EA 20 B4 E5 8D A4 C350 : 3C 03 C9 85 F0 1E C9 88 69 C358 : F0 1A A6 D6 EC EB 07 10 44 C360 : 03 4C 24 C3 EC EC 07 30 BD C368 : 05 C6 D6 4C 2E C3 20 D2 37 C370 : FF 4C 2E C3 60 B0 8A
PROGRAMM : READ10 OBJ C500 C600 ----------------------------------- C500 : A9 00 85 FA A9 50 85 FB 95 C508 : A2 02 20 C9 FF A9 78 85 27 C510 : FD A9 04 85 FE A2 12 A0 22 C518 : 00 B1 FD 85 FC 29 3F 06 43 C520 : FC 24 FC 10 02 09 80 70 BB C528 : 02 09 40 91 FA C8 C0 28 3A C530 : D0 E7 98 18 65 FD 85 FD 75 C538 : 90 02 E6 FE A9 0D 91 FA A2 C540 : A5 FA 18 69 29 85 FA 90 61 C548 : 02 E6 FB CA D0 C9 EA A9 70 C550 : 00 85 FA A9 50 85 FB A2 6D C558 : 12 A0 27 B1 FA C9 20 D0 DA C560 : 03 88 10 F7 A9 0D C8 91 F4 C568 : FA 18 A5 FA 69 29 85 FA 23 C570 : 90 02 E6 FB CA D0 E2 EA CF C578 : A9 B9 85 FA A9 52 85 FB FA C580 : A0 00 B1 FA C9 0D D0 10 54 C588 : 38 A5 FA E9 29 85 FA A5 85 C590 : FB E9 00 85 FB 4C 82 C5 E8 C598 : 18 A5 FA 69 29 85 FA 90 3A C5A0 : 02 E6 FB A9 00 91 FA EA 98 C5A8 : A9 00 85 FA A9 50 85 FB 3D C5B0 : A2 00 A0 00 B1 FA 20 D2 94 C5B8 : FF C9 00 F0 19 C9 0D F0 B0 C5C0 : 05 C8 C0 29 D0 EE 18 A5 AF C5C8 : FA 69 29 85 FA 90 02 E6 7C C5D0 : FB E8 E0 12 D0 DC 20 CC C8 C5D8 : FF 60 A2 02 20 C6 FF A2 6E C5E0 : 00 A0 00 20 CF FF 20 D2 58 C5E8 : FF C9 0D F0 0C C9 00 F0 1E C5F0 : 0D C8 C0 28 D0 ED 20 CF 33 C5F8 : FF E8 E0 12 D0 E3 60 B4 FD
PROGRAMM : DRUCKER OBJ C600 C623 ----------------------------------- C600 : A9 01 A0 C6 A2 21 20 BD 5A C608 : FF A9 01 A0 0F A6 02 20 9F C610 : BA FF 20 C0 FF B0 02 A9 CB C618 : 00 85 02 A9 01 20 C3 FF B1 C620 : 60 20 B0 E6