GERMAN PAS8GERMAN3 PAS/OGERMAN2 PAS26GERMAN1 PASE-|GENONOUNDATr5)GENOUN DAT!9GERMAN COMMprogram german; {$iglobdefs.pas} {$istdutil.pas} {$istdio.pas} {$igerman1.pas} {$igerman2.pas} {$igerman3.pas} begin (* givequiz *) numwrong := 0; writeln; for k := 1 to numquizquestions do begin wrong[k] := false; line := quizitems[order[k]]; decode(line,german,english,genderchar,error); if error then begin writeln('FORMAT ERROR IN DATA:'); putstr(line,TRMOUT); end else case quiz of GERMANTOENGLISH: begin putstr(german,TRMOUT); write('? '); if getline(response,TRMIN,MAXSTR) then begin stripnl(response); ucline(response); answerok := match(response,english); end else answerok := false; if not answerok then begin write(' NO ... '); putstr(english,TRMOUT); writeln; wrong[k] := true; numwrong := numwrong + 1; end end; ENGLISHTOGERMAN: begin putstr(english,TRMOUT); write('? '); if getline(response,TRMIN,MAXSTR) then begin stripnl(response); ucline(response); answerok := match(response,german); end else answerok := false; if not answerok then begin write(' NO ... '); putstr(german,TRMOUT); writeln; wrong[k] := true; numwrong := numwrong + 1; end; end; GENDER: begin putstr(german,TRMOUT); write('? '); repeat genderresponse := toupper(getc(c)); until genderresponse in [NEWLINE,ord('N'),ord('M'),ord('F')]; if genderresponse <> NEWLINE then writeln; if genderresponse <> genderchar then begin if genderchar = ord('M') then writeln(' NO ... MASCULINE') else if genderchar = ord('F') then writeln(' NO ... FEMININE') else writeln(' NO ... NEUTER'); wrong[k] := true; numwrong := numwrong + 1; end; end; end (* case *); end (* for k *); end (* givequiz *); procedure givescore(numquestions,numwrong:integer); begin writeln; writeln(numquestions,' ITEMS GIVEN, ',numwrong,' WRONG.'); if numquestions > 0 then writeln('SCORE = ',(numquestions-numwrong)*100/numquestions:3:0, ' PERCENT.'); writeln; end; procedure getrepeatoption(var option:repeatoption); var c :character; j,k :integer; begin writeln('SELECT ONE:'); writeln; writeln('1 - REPEAT WITH SAME WORD LIST'); writeln('2 - REPEAT ONLY MISSED ITEMS'); writeln('3 - NEW QUIZ'); writeln('4 - EXIT PROGRAM'); repeat writeln; write('? '); c := getc(c); until c in [ord('1')..ord('4')]; writeln; option := SAMEWORDS; j := c-ord('1'); for k := 1 to j do option := succ(option); end; procedure reinit(var option: repeatoption; wrong: booleanarray; numwrong: integer; var numquizquestions: integer); var j,k :integer; begin if option = WRONGWORDS then begin j := 1; for k:=1 to numquizquestions do if wrong[k] then begin order[j] := order[k]; j := j + 1; end; numquizquestions := numwrong; end else if option = SAMEWORDS then begin numquizquestions := numquestions; for k:=1 to numquestions do order[k] := k; end; if option in [WRONGWORDS,SAMEWORDS] then clrscr; end; begin (* main program *) lowvideo; { Turbo intrinsic } quit := false; ioinit(2); randomize; { Turbo intrinsic fn. } while (not quit) do begin clrscr; { Turbo intrinsic fn. } writeln('GERMAN VOCABULARY QUIZ PROGRAM'); writeln; writeln('BY JON DART ... VERSION 2.0 (01-MAR-86)'); openfiles(nounfile,nonounfile); getquiztype(quiz); readsizes(numnouns,numnonouns); if quiz = GENDER then maxitems := numnouns else maxitems := numnouns + numnonouns; getnumquestions(quiz,numquestions,maxitems); if numquestions > 0 then begin fillarray(quiz,quizitems,numquestions, numnouns,numnonouns,maxitems); for k:=1 to numquestions do order[k] := k; numquizquestions := numquestions; repeat scramble(order,numquizquestions); givequiz(quiz,order,numquizquestions,quizitems, wrong,numwrong); givescore(numquizquestions,numwrong); getrepeatoption(option); reinit(option,wrong,numwrong, numquizquestions); until option in [NEWQUIZ,EXIT]; quit := option = EXIT; end; pclose(nounfile); pclose(nonounfile); end; end. procedure givequiz(var quiz:quiztype;var order:integerarray; numberquestions:integer; var quizitems: stringarray; var wrong: booleanarray; var numberwrong: integer); { german version } var line,german,english,response :textline; genderresponse,genderchar,c :character; k :integer; answerok,error,genderok :boolean; procedure stripnl(var s:textline); var i :integer; begin i := index(NEWLINE,1,s); if i<>0 then s[i] := EOS; {remove newline from line} end; procedure ncopy(var src:textline; si:integer; var dest:textline; di:integer; count:integer); { copies at most "count" characters from src[si] to dest[di] } var i :integer; begin i := count; while (src[si] <> EOS) and (i>0) and (max(si,di)<=MAXSTR) do begin dest[di] := src[si]; si := si + 1; di := di + 1; i := i - 1; end; if di > MAXSTR then di := di - 1; dest[di] := EOS; end; procedure decode(var line,german,english:textline; var genderchar :character; var decodeerror:boolean); var k,v,v1,i,j :integer; begin stripnl(line); v:= index(SLASH,1,line); decodeerror := false; if v >= 2 then begin ncopy(line,1,german,1,v-1); v1 := index(SLASH,v+1,line); if (v1 <> 0) then { have noun } begin if v1-v <> 2 then decodeerror := true else begin genderchar := line[v+1]; scopy(line,v1+1,english,1); end; end else { have non-noun } scopy(line,v+1,english,1); end else decodeerror := true; end { decode }; function match(var response,target:textline):boolean; var matched,endofstring :boolean; substring :textline; v,start :integer; begin matched := false; endofstring := false; start := 1; if slength(response) > 0 then while (not matched) and (not endofstring) do begin v := index(SEMICOLON,start,target); if v=0 then begin scopy(target,start,substring,1); endofstring := true; end else begin ncopy(target,start,substring,1,v-start); start := v + 1; end; matched := equal(response,substring); end; match := matched; end { match }; (* German vocabulary test program *) (* by Jon Dart, 1866 Diamond St., San Diego CA 92109 *) (* Version 2.0, 01-Mar-86 *) const maxquestions = 50; (* max. num of questions/quiz *) type quiztype = (GERMANTOENGLISH,ENGLISHTOGERMAN,GENDER); repeatoption = (SAMEWORDS,WRONGWORDS,NEWQUIZ,EXIT); stringarray = array[1..maxquestions] of textline; integerarray = array[1..maxquestions] of integer; booleanarray = array[1..maxquestions] of boolean; var nounfile, nonounfile :filedesc; numquizquestions :integer; numquestions :integer; numnouns,numnonouns :integer; numwrong :integer; maxitems,k :integer; quizitems :stringarray; order :integerarray; wrong :booleanarray; quit :boolean; quiz :quiztype; option :repeatoption; procedure openfiles(var nounfile,nonounfile:filedesc); var name1,name2 :textline; begin setstring(name1,'GENOUN.DAT'); nounfile := open(name1,IOREAD); if nounfile = IOERROR then error('Can''t Open GENOUN.DAT'); setstring(name2,'GENONOUN.DAT'); nonounfile := open(name2,IOREAD); if nonounfile = IOERROR then error('Can''t Open GENONOUN.DAT'); end; procedure readsizes(var numnouns,numnonouns: integer); (* read the first lines of NOUN.DAT and NONOUN.DAT, which should contain the number of lines in each file *) var s :textline; c :character; i :integer; begin if getline(s,nounfile,MAXSTR) then begin i:=1; numnouns := ctoi(s,i); end; if getline(s,nonounfile,MAXSTR) then begin i := 1; numnonouns := ctoi(s,i); end; end; procedure getquiztype(var quiz:quiztype); var c :character; junk :character; j,k :integer; begin writeln; writeln('SELECT ONE:'); writeln; writeln('1 - WORD QUIZ: GERMAN TO ENGLISH'); writeln('2 - WORD QUIZ: ENGLISH TO GERMAN'); writeln('3 - GENDER QUIZ (NOUNS ONLY)'); writeln; repeat write('? '); junk := getc(c); if not (c in [DIGIT1,DIGIT2,DIGIT3]) then writeln; until c in [DIGIT1,DIGIT2,DIGIT3]; j := c-ord('1'); quiz := GERMANTOENGLISH; for k:=1 to j do quiz := succ(quiz); writeln; end; procedure getnumquestions(var quiz:quiztype; var numquestions, maxitems:integer); var ok :boolean; s :textline; i :integer; begin repeat write('HOW MANY QUESTIONS (50 MAX.)? '); if getline(s,TRMIN,MAXSTR) then begin i := 1; numquestions := ctoi(s,i); end; if not numquestions in [0..50] then begin writeln('ERROR - MUST BE 0-50'); ok := false; end else if numquestions > maxitems then begin writeln('ONLY ',maxitems,' AVAILABLE.'); ok := false; end else ok:=true; until ok; end (* getnumquestions *); procedure ucline(var s:textline); { makes line upper-case} var k :integer; begin k := 1; while s[k] <> EOS do begin s[k] := toupper(s[k]); k := k + 1; end; end; procedure fillarray(var quiz:quiztype;var quizitems:stringarray; numquestions,numnouns,numnonouns, maxitems :integer); var line :textline; t,k,numfilled :integer; endoffile :boolean; begin writeln; writeln('READING DATA FILES'); numfilled := 0; if quiz <> GENDER then begin t := (numquestions*numnonouns) div maxitems; k := 0; endoffile := false; while (t > 0) and (k < numnonouns) and (not endoffile) do begin if getline(line,nonounfile,MAXSTR) then begin k := k + 1; if random <= (t/(numnonouns - k + 1)) then begin numfilled := numfilled + 1; ucline(line); quizitems[numfilled] := line; write('.'); t := t - 1; end; end else endoffile := true; end; end; t := numquestions - numfilled; k := 0; endoffile := false; while (t > 0) and (k < numnouns) and (not endoffile) do begin if getline(line,nounfile,MAXSTR) then begin k := k + 1; if random <= (t/(numnouns - k + 1)) then begin numfilled := numfilled + 1; ucline(line); quizitems[numfilled] := line; write('.'); t := t - 1; end; end else endoffile := true; end; writeln; end (* fillarray *); procedure scramble(var order:integerarray; numquestions: integer); var k,k1,k2,temp :integer; begin for k:=1 to numquestions*3 do begin k1 := random(numquestions) + 1; k2 := random(numquestions) + 1; temp := order[k1]; order[k1] := order[k2]; order[k2] := temp; end; end; 83 ABHOLEN/TO PICK UP ANFANGEN/TO BEGIN ANKOMMEN/TO ARRIVE ANZIEHEN/TO PUT ON BANG/ANXIOUS BEREIT;FERTIG/READY BETEN/TO PRAY BETRU"GEN/TO DECEIVE;TO CHEAT BEWEGEN/TO MOVE;TO SHAKE;TO PERSUADE BIEGEN/TO BEND BLASEN/TO BLOW BLEIBEN/TO REMAIN;TO STAY BREIT/WIDE DRINGEN/TO URGE;TO RUSH;TO PIERCE;TO PENETRATE EINFACH/SIMPLE;SINGLE EMPFANGEN/TO RECEIVE EMPFEHLEN/TO RECOMMEND ERFAHREN/TO LEARN;TO FIND OUT;TO EXPERIENCE ERSTAUNEN/TO ASTONISH ERWA"GEN/TO CONSIDER;TO PONDER EWIG/ETERNAL FANGEN/TO CATCH;TO CAPTURE FEGEN/TO SWEEP FEST;(ADJ.)/FIRM;SOLID;REGULAR GEBILDET/CULTURED;EDUCATED GEDEIHEN/TO THRIVE;TO PROSPER GELINGEN/TO SUCCEED GENESEN/TO RECOVER;TO GET WELL;TO CONVALESCE GESCHEHEN/TO HAPPEN GESTERN/YESTERDAY GLATT/SMOOTH GREIFEN/TO SEIZE;TO GRASP;TO GRAB KLETTERN;STEIGEN/TO CLIMB KOCHEN/TO COOK KRIECHEN/TO CREEP;TO CRAWL LA"CHELN/TO SMILE LADEN/TO INVITE;TO SUMMON;TO CITE LANGSAM/SLOW LEER/EMPTY LEIHEN/TO LEND;TO BORROW;TO HIRE LOBEN/TO PRAISE MANCHMAL/OFTEN;SOMETIMES MEIDEN/TO AVOID;TO SHUN MESSEN/TO MEASURE NASS/WET OFFENBAR/OBVIOUS PLO"TZLICH/SUDDENLY RATEN/TO ADVISE;TO GUESS RAUCHEN/TO SMOKE REIN/PURE RIESIG/ENORMOUS;HUGE SANFT/GENTLE SCHAFFEN/TO CREATE;TO MAKE SCHLANK/SLENDER SCHMEISSEN/TO FLING;TO HURL SCHREITEN;TRETEN/TO STEP;TO WALK SCHWINDEN/TO DISAPPEAR;TO DECREASE;TO DECLINE SCHWO"REN/TO CURSE;TO SWEAR SELTSAM/WEIRD SIEDEN/TO BOIL;TO SEETHE;TO SIMMER SPALTEN/TO SPLIT;TO CLEAVE STARK/STRONG STARR/STIFF STECHEN/TO STING;TO PRICK;TO STAB STOSSEN/TO PUSH STREITEN/TO ARGUE;TO DISPUTE TREFFEN/TO MEET TRIEFEN/TO DRIP TRU"GEN/TO DECEIVE UNTERSCHEIDEN/TO DISTINGUISH;TO DIFFER VERDERBEN/TO SPOIL VERGESSEN/TO FORGET VERLO"SCHEN/TO EXTINGUISH VERSEHEN/TO SUPPLY;TO CARRY OUT VERZEIHEN/TO PARDON VIELFACH/MANY TIMES VIELLEICHT/PERHAPS;MAYBE WEICHEN/TO YIELD WEISEN/TO SHOW WERFEN/TO THROW ZART/TENDER ZIEHEN/TO PULL;TO MOVE ZWINGEN/TO FORCE  EAVOUR;EFFORT SCHLANK/SLENDERPACE to Continue:}k u 202 ABBILDUNG/F/ILLUSTRATION ABSATZ/M/PARAGRAPH ABSCHEU/M/DISGUST;ABHORRENCE;AVERSION ABTEILUNG/M/DEPARTMENT ACKER/M/FIELD;LAND AMT/N/OFFICE ANFANG/M/BEGINNING;START ANGESTELLTE/M/EMPLOYEE ANTWORT/F/ANSWER;REPLY ARZT/M/DOCTOR ATEM/M/BREATH AUFFU"HRUNG/F/PERFORMANCE AUFSATZ/M/THEME;ESSAY;ARTICLE AUFSEHEN/N/SENSATION AUFWAND/M/DISPLAY;SHOW;(N.) AUSGABE/F/EDITION AUSNAHME/F/EXCEPTION BASSIN/N/BASIN;POND BAUER/M/FARMER BEFEHL/M/COMMAND;ORDER;(NOUN) BEGEBNIS/N/EVENT BEGRA"BNIS/N/FUNERAL BEGRIFF/M/CONCEPT;IDEA BEIN/N/LEG;BONE BEITRAG/M/FEE;CONTRIBUTION BEKANNTE/M/ACQUAINTANCE BESCHEID/M/NEWS;INFORMATION;REPLY BESTREBEN/N/ENDEAVOUR;EFFORT BESUCH/M/VISIT;(NOUN) BETONUNG/F/STRESS;EMPHASIS BIRNE/F/PEAR BLATT/N/SHEET OF PAPER BLECH/N/TIN BODEN/M/GROUND;FLOOR BOTSCHAFT/F/MESSAGE DACH/N/ROOF DRANG/M/URGE;IMPULSE DRUCK/M/PRESSURE DUFT/M/SCENT;ODOR;SMELL DUNKEL/N/DARKNESS DURCHSCHNITT/M/AVERAGE ECKE/F/CORNER EHE/F/MARRIAGE EIGENSCHAFT/F/QUALITY EINBILDUNG/F/IMAGINATION;CONCEIT EINFALL/M/IDEA;NOTION;RAID EINWIRKUNG/F/INFLUENCE EKEL/M/NAUSEA;DISGUST ENKELKIND/N/GRANDCHILD ENTSETZEN/N/HORROR ERFOLG/M/SUCCESS ERGEBNIS/N/RESULT ERLAUBNIS/F/PERMISSION ERLEBNIS/N/EXPERIENCE ERNTE/F/HARVEST ERZIEHER/M/TEACHER;EDUCATOR ERZIEHUNG/F/EDUCATION FAHNE/F/FLAG FALTE/F/WRINKLE;FOLD FEIER/F/CELEBRATION FEIND/M/ENEMY FENSTER/N/WINDOW FESTUNG/F/FORTRESS FLIESE/F/TILE FRIEDE/M/PEACE FUCHS/M/FOX FUNKE/M/SPARK GABEL/F/FORK GALUBE/M/BELIEF GEBRAUCH/M/CUSTOM;USE GEDICHT/N/POEM GEDULD/F/PATIENCE GEFAHR/F/DANGER GEFECHT/N/FIGHT;BATTLE GEFU"GE/N/TEXTURE;MAKEUP GEHIRN/N/BRAIN GEKNURRE/N/GROWLING GELA"NDE/N/REGION;COUNTRYSIDE GEMAHL/M/HUSBAND GENUSS/M/ENJOYMENT GERA"USCH/N/NOISE GERIPPE/N/SKELETON GERU"CHT/N/RUMOR GESCHA"FT/N/BUSINESS GESCHICHTE/F/HISTORY GESINDE/N/SERVANTS GEWALT/F/POWER GEWINN/M/PROFIT GEWISSEN/N/CONSCIENCE GRENZE/F/BOUNDARY;LIMIT;FRONTIER GU"RTEL/M/BELT HALS/M/NECK HALTUNG/F/ATTITUDE HAUFE/M/HEAP HAUPT/N/HEAD;CHIEF HEMD/N/SHIRT HINTERHALT/M/AMBUSH HITZE/M/HEAT HOLZ/N/WOOD KAPITEL/N/CHAPTER KEIM/M/BUD;GERM KETTE/F/CHAIN KISTE/F/BOX;CRATE KLEID/N/DRESS;CLOTHES KUGEL/F/BALL;SPHERE KUNST/F/ART LACK/M/PAINT LEIBER/F/BODY LEICHE/F/CORPSE LO"FFEL/M/SPOON MALER/M/PAINTER MEHL/N/FLOUR MEINUNG/F/OPINION MESSER/N/KNIFE MITGLIED/M/MEMBER MITLEID/N/SYMPATHY;COMPASSION MU"NZE/F/COIN MUT/M/COURAGE NACHBAR/M/NEIGHBOR NACHRICHT/F/NEWS NEBEL/M/FOG NOT/F/NEED;WANT;NECESSITY OHNMACHT/F/FAINTING OPFER/N/SACRIFICE;VICTIM ORT/M/PLACE;SPOT PFEIL/M/ARROW PFERD/N/HORSE PFLICHT/M/DUTY PILZ/M/MUSHROOM;FUNGUS PROBE;PRU"FUNG/F/TEST RAD/N/WHEEL;BICYCLE RAND/M/EDGE;RIM;MARGIN RASSE/F/RACE;BREED RAUCH/M/SMOKE RICHTER/M/JUDGE;(N.) SAME/M/SEED SAMMLUNG/F/COLLECTION;ASSEMBLY;CONCENTRATION SCHADE/M/DAMAGE SCHAF/N/SHEEP SCHATZ/M/TREASURE SCHEITEL/M/TOP SCHICKSAL/N/FATE SCHLAMPE/F/TRAMP;(N.) SCHLANGE/F/SNAKE SCHMERZ/M/PAIN SCHMUCK/M/JEWELRY SCHULD/F/GUILT;DEBT;FAULT SEHNSUCHT/F/LONGING SEIFE/F/SOAP SOHLE/F/BOTTOM;SOLE;LEVEL SORGE/F/CARE;WORRY SPIEGEL/M/MIRROR STAUB/N/DUST STELLUNG/F/JOB STIMME/F/VOICE STOLZ/M/PRIDE STREIT/M/ARGUMENT;QUARREL STRICKEN/N/KNITTING STROM/M/RIVER;STREAM;CURRENT STUNDE/F/HOUR TA"TIGKEIT/F/ACTIVITY TOPF/M/POT;JAR;JUG TOR/N/GATE;DOORWAY TREPPE/F/STAIRCASE;STAIRS TROMMEL/F/DRUM TROST/M/CONSOLATION TROTZ/M/DEFIANCE TU"R/F/DOOR TUCH/N/CLOTH U"BERZEUGNUNG/F/CONVICTION UMSCHLAG/M/ENVELOPE UNSINN/M/NONSENSE URTEIL/N/OPINION;JUDGEMENT VERGNU"GUNG/F/PLEASURE;AMUSEMENT VERLUST/M/LOSS VERSEHEN;(N.)/N/OVERSIGHT;MISTAKE VETTER/M/COUSIN VIEH/N/CATTLE VIERTEL/N/QUARTER VORSCHLAG/M/SUGGESTION VORTEIL/M/ADVANTAGE WAHRHEIT/F/TRUTH WAND/F/WALL WEISE/F/WAY;MANNER WELLE/F/WAVE;(N.) WIEGE/F/CRADLE WIRT/M/LANDLORD WIRTSCHAFT/M/ECONOMY WITZ/M/JOKE WOLKE/F/CLOUD WUT/F/RAGE;FURY ZAUBER/M/MAGIC ZETTEL/M/NOTE;SLIP OF PAPER ZEUGE/M/WITNESS ZITRONE/F/LEMON ZO"GERN/N/HESITATION ZORN/M/ANGER ZUFALL/M/CHANCE;COINCIDENCE ZUSTAND/M/SITUATION;CONDITION ZUVERSICHT/F/CONFIDENCE ZWECK/M/PURPOSE;AIM ZWEIFEL/M/DOUBT  ͫCopyright (C) 1985 BORLAND IncBHeath/Zenith H89ctedPx6qy6qY ELE MKp1q1~7#~= oͦkԄ!!"~#(}:$= +*!5!*!!:(2!5:(>2!!!:O::O:!*! !45(! +/ 0y0( d!k5!{5__o&  :(͠|(  *"x2y( >28!"9!! og2"">~22 9/4*9 Co&ͦͣ} [ (!e{ͦA8Q0G: x@!\w# (͂ ?(*( .( w^. ^!h6# (?( *( ͂( w#>?> w#ͦ 8 !ɿ .,;:=?*[]<>{}a{ |ʹ}ͽƐ'@'7||}>2ͯ*Bڨ  "og"2>2! ""*B"[Ru*"^#V#^#V#N#FO/o&9O/o&9!9(> (G!9 w#Eͺw}8' RB0 >' RqRR!+ Ͱ R!+ Ͱ r!+ Ͱ r!+ Ͱ r!# Ͱ r!+ Ͱ T]KB!z> S>))0 = | |̀̀DMgo>jB0 7?= H͒<z5a)a<z {0Gɯgo||~}||/g}/o#}o&K[xAJSJDM!b"!6J"DM'd } ) W _}8(8J`9{T]=o`9y ) >' ́ ͬ͗ }>' xˆ }} ˸T}ٕ(0D=z ,= ( ͒ 0%{ , 7 ?(8ͬ x ͆ - r 8˸x ͏  ,-xG}r }مM 9r .>#n0͒ { = - nx ͇ ,-(-˸G,-r }ٕ?M 9.> 8ͬ ?= u+-(>͆ 0ͬ ͆ 8 ?x ͇ , 78ƀ8ƀ8ox٨!دoGOW_gɷɷ|لg{ً_zيWyىOxوG|ٔg{ٛ_zٚWyٙOx٘Gxٸyٹzٺ{ٻ|ټx٨ xx( ?}ٽ }ցr <(r 7{ = |٤g{٣_z٢Wy١Ox٠G{ ͬ ́ }x>' ͬ}ƀ/ƀo -́ }0͎-́ ͎,}l˸ 8 4 ͗ x( - 8́ - 8,́ }l8;*!͗ ! >4ͬ͗ ͗ ͬ--- ́ ,,,-xGg?+2n*8t z~,->' x' ͘}. ͆́ , ! >4,͢- o&0%,͗ }gr }؉}颋.:}8c~I$I~L*͢ٷx˸ }0G,<},-(-́ !>I0 ͗͘ o8 ͆ >' m.`1pF,t6|!wS<.z}[|%FXc~ur1}͆ٯx(<˸ 8 !~J 0.O!>s 8 =  n s͗ ͆ .n 0 ͎-́ OT0 j oD,:j !I}袋.}8c~I$I~L! >ͬ͗ I× nn ͗ = ͆ nf^VNF!DLT\I!!53!r1!͒!> x #-= o˸x͆(- }(x>8(z ,z `iÃ!>' |r |̀>)=|(DMbo˸88x(0 8> ̀x(>-{(ay( z(>. ( {>E>+|(|Dg>-|/ 0:p# ~# +>0w#,-  60#}˸}րogM| .(z = ~> x0w#xG%͇ %͇ ZJDM%͇ = _~65+~hìx-Sx9?+{Η@}|z z gZJDM0{ ,7}o˸? #yO!@9i&?  #?w#?/w#?w#!9! E9!!9~(+Fͺ!"9!(#>2*"| >"2:( Ͷ *w*6 !\$![ (ͦ( #:~CONTRMKBDLSTCAUXUSR>2i:*ˮ~0:*:(@q##pZ* :(  ~* < >26"!"""~>2""v>2>"!"ˮ(!~8>~O6~*"w(6(2(-()(6 (8 0 :(* y(~#+ (( 66 #6 #"*: y~o p .##~ͺ(.6w4._~ =*##55= *[R8*~#"= ͣ}== ͯ}͵}*#w+#~+>*~('k!0(ˮ]k!8ˮ!]~-#8~>27kˮw>O$6̃s #r$ͣ6̏ k ( (ˮ qk(ˮ ( k ˮ*O:~ ##~._q4((=ʦ==ʩ=ʬò*:4^q*##~6ͺ>2}*|(̓|( ̓6-#[RM8( G> A~#*'C! !TRUEFALSE!9N#Y~#( G~#> >    "~(kѻ(( !0 (ˮ!!>2Sz:0:*6##ww#w$w#w:  ##N#F*B>2w#w#[s#r> "~ͮ*-w#ww##> ͮÁ""~>2:ZR0 *4#4>2:ZR> *4 #4(> >22*f(/˦:G(##~++ :O x yC!ͺ Q*:G(##~._.͚f<\=<͚*##w ͮ +4 #4x >>2:G("ͮ"*nˮ*0 SZѷR8@* N#F#s#r, 0})jS\*##w+ N#FB ͮr+s>2!T]>)j)0 0= ]R!#]*^#V#N#F#^#V>2Ͱ:0:*6 #-Nw#Fwq#p#6#w#w#w"~Á>">!DM!":*B:!>(>2>">!"2"~ʰ*w#wx(9* :O *-4 #4!*4 #4 *-N#Fq#pV+^Bq#pSZѷR&* s#r$ s#rL <?*L!\  <( !\$>2>2L:>!(* \$\<(!3: [1ð\!(7"~> 2"S"Ns#FrB(Z#\: \<(?*"}K\! !*}#"}! x \* *>) 2""{_!"*nf}(HR0nf" ^VMDnfutqp*s#r*s#r"* uKB!0>' ~#fo{_"*R0RnfR0KqputsrNF( ^VNF^V*SutKqp R*R(~w~wnf ut"6#K*K*!""*NFy(* "*B0Cnf* [R*"*RS[s#r^#V""6#>O"w2x2*"!F"" &y*"*>2"*"!F"""!\*: Nr!~6go(\R*s#r_2x( s x(T]DMx(R0 U(͝O/o&9q# (!>F0#( ~ ( #]( ~ ( (#}(  i&T-a%â}ͦo*!~6o&|:2 2}:__zѯ2*|KB " z ^C User break+=  I/O Run-time error {ʹ, PC=*ͯNot enough memory Program aborted :ʎ'1!d!I:>H!P! ! :͛!ͪ }2!b*&n&!L}2*&}2!b*&n&!U}2*&}2*&-!Eʫ!*&! R}2ô!*&}2*&}2*&!}2*&}2׬*׬&V!E!*׬&! }2ج"*׬&}2ج*ج&}2ͬ!b*ͬ&n&!L!b*ͬ&n&!U}o}2ά*ά&}2ì!b*ì&n&!D}2Ĭ*Ĭ&}2!b*&n&!X͒}2*&""**E"*""*"*""**E"*""*"*"!"!"**+n&!͒EK#*!"*!"#*"*"}""}2*^#V*}Eʈ#!}2ú#**^#V+*&s*^#V!*s#r!}2*&"p"r*r#!"f!"d!}2c*c&}o*p*d+n&!͒}oES$*p*d+n&*r!f!RU#}o}2c*c&}oEP$*d!"d#*r*f+!s*c&}o}2t*t&P!"a!"*!!n&!R"͸E$*a*+!*n&s*!"Í$*a*+!s"MP!X!"**+n&!͒EN%!X:**+n&e.=P!X*!"%!X:P!!:"Q"S}2U*S"G*Q*G+n&́*U&͑!͑O}oEʸ%*G!"G~%*Q*G+n&!E%!"V%*G"V*V"B"D*D*B^#V+n&́! ͑! ͑OE1&*B^#V!*Bs#r%*D*B^#V+n&}2F*F&"2"4"6"8*8*6+n&!͒Eʰ&*4*2+*8*6+n&s*6!"6*2!"2`&*4*2+!s"%"'!"*'*+n&*%*+n&*'*+n&!͒}oE!'*!"&*'*+n&*%*+n&}2)*)&""**%!-Ew'!" }'!" **^#V+n&́!+͑!-͑OEʺ'*^#V!*s#r!" **^#V+n&R"E(! * **^#V+n&!0R" *^#V!*s#r'* * "*!"""*!Eʊ(**+!-s*}/o|/g#**!.("(*! ͥEʴ(*! **.("**+*! E!0s**!+!s*!"*""*!!EA)MToo many files requested.!!!+:9!s!!+:9!s!!+:9!s!!!*fz)"!*+:"!!*0*s#r*9!s*#é)!*!!fz:*"!*+:9!s*# *!!/fzg*"!b*!Xs*#E*!0!9fzʔ*"!b*!Ds*#r*!:!@fz*"!b*!Xs*#ß*!A!Zfz*"!b*!Us*#*![!`fz+"!b*!Xs*#*!a!zfzH+"!b*!Ls*#&+!{!fzu+"!b*!Xs*#S+Ì-"""!}2*"z*z*:p!Eʆ-*!|g}o}2t*t&!E,*zp*z7*z]s#r*z5!s#r*z3!!s#rS-*t&!ED,*zo*z3!s#rS-*t&!ES-*zp*z]"u!*u!}oE=-*z*u!Ro*z*z0^#V!;*z*u!Ro!"w!}2y*w!͸*y&}o}oE*-*z0^#V*w+n&!}2y*y&}oE'-*w!"w,*z3*ws#rS-*zo*z3!s#r!Eʆ-!}2*z9*s*z2!s*&""*$P!!}2!}2!"*!͸*&}o}oE@.!*+:9n&!}2*&E1.*!*+:!y+E..*}2=.*!"û-*&"r*r$P!!:!:p!Eʀ.!:͓}2*&! Eʨ.͛ ö.͛*&" "ݩ!ͩ!ԩD *ԩ&*ݩs*ݩn&!E.!*ݩs/*ݩn&! E/! *ݩs*ݩn&}2ߩ*ߩ&"ѩ*ѩͷ.*ѩs*ѩn&́.*ѩn&}2ө*ө&}2ĩ"ũ!}2ǩ!*ĩ&+)))))"*2n&Eʙ/!}2ǩ0*3^#V!E>0*IE/!}2ǩ*2!s.0**0^#V!+!!;́!͑!͑O}oE.0MDisk read error!*3!s#r*0^#V*3^#V+n&*ũs*3^#V!!R|g}o!E0*5*5^#V!s#r*5^#V*7^#VͥE0*2!s*3*3^#V!s#r*ǩ&}2"*&!E)1*!/}21!*&+)))))"!*&O/E1*&!|g}o*s*n&!Eʙ1!*s*2!s1*n&! *n&! }oE1!*&O/}2! *s1!*s*n&}2*&}2}2!*&+)))))"*0^#V*3^#V+*&s*3*3^#V!s#r*3^#V!E2**0^#V!+!!ͺ!͒E2MDisk write error!*3!s#r}2}2*&!E3*&́.|3*&!EG3*&! E33!ͺ D3!ͺ*&" |3*&! Em3! *&1! }2*&*&1}2*&́!͑!͑!͑O}oEʔ4!*&+)))))"*9n&!|g}ó!͑!͑OE}4*9n&!|g}o!E&4!*&2*3^#V!E}4**0^#V!+*3^#V!R!!ͺ *Ͱ *9!s"}2"!"*&!Ej5**+!ͷ.s*&!E5*!E5*!R"!́.! ́.!́.g5*&! ͥ*&!͒}o*&! }oEg5*!"*&́.Ñ5**+!*&0s*!"*&! *&!}o**ͥ}oEʬ4*&!E5*!R"**+!s*&!͒}2*&}2}"~!"s*~*s+n&!͒Ea6*~*s+n&*}&2*s!"s!6"j"l"n"p!}2a*n!6*l!!R͕4}2_*l#"\*l*\+n&! E6*l*\+!s*l!+n&́!͑! ͑O}2`*`&}oEw7*l*jv+}2^*^&!͒}2a*a&EA7*^&*ps!}2rt7͛ ͛ͺ Can't open:  *l!6͛ ~7!}2r*a&*`&}oE}6*r&""!QM GENOUN.DATw$!Q!v+*s*n&!E7MCan't Open GENOUN.DAT!!M GENONOUN.DATw$!!v+*s*n&!EP8MCan't Open GENONOUN.DAT!""!*[&!R͕4Eʋ8!"!!J'*s#r!*Z&!R͕4Eʹ8!"!!J'*s#r"͛ ͛ͺ SELECT ONE: ͛ ͛ͺ 1 - WORD QUIZ: GERMAN TO ENGLISH ͛ͺ 2 - WORD QUIZ: ENGLISH TO GERMAN ͛ͺ3 - GENDER QUIZ (NOUNS ONLY) ͛ ͛ͺ?  !!/}2*&́!1͑!2͑!3͑O}oEʿ9͛ *&́!1͑!2͑!3͑OEx9*&!1R"!*s!*fz$:"*n&#*s*#:͛ """͛ͺHOW MANY QUESTIONS (50 MAX.)?  !-!!R͕4Eʒ:!"+!-!+J'*s#r*^#V}/o|/ǵ!!2͛OE:͛ͺERROR - MUST BE 0-50 !}28;*^#V*^#VE1;͛ͺONLY *^#V!&ͺ AVAILABLE. !}28;!}2*&E>:")!"*)*+n&!͒Eʙ;*)*+*)*+n&!s*!"Q;""""""͛ ͛ͺREADING DATA FILES !"*n&!͒E<***"!"!}2*!**}o*&}o}oE"*;!"*;!"**+)^#V"**+)**+)^#Vs#r**+)*s#r*#>ÑA"8! !*8g%".*.!͒E>*8*.+!s"$"&"("*",*$"*,**+n&!͒*!}o***&ͤ"!R͸}oEv?*(*&+*,**+n&s**!"**&!"&*!R">*&!REʕ?*&!R"&*(*&+!s"""""*͕>!/!*g%"!*s*!ͥEʬ@*!*!*!R>!/*!*g%"*!͒Eʐ@**R!͒E\@!*sÍ@**!+n&*s**!*!L&é@**!*!L&ô@!*s""!}2!}2!"*#!EʂA*&}o*&}o}oEʂA!;**g%"*!EDA**!!L&!}2pA**!!**R>*!"*!&}2@*&}2*&""""""!"P͛ !*XfzE"=**=+!s***=+)^#V+))))))8R!8!!!@!;ͧ?*;&E\B͛ͺFORMAT ERROR IN DATA: !8!6D*n&RC!!6͛ͺ?  !B!!R͕4EʶB!B͕>!BC;!B!͵@}2<ýB!}2<*<&}oEC͛ͺ NO ...  !!6͛ **=+!s*P!"PDRC!!6͛ͺ?  !B!!R͕4EjC!B͕>!BC;!B!͵@}2k!}2!)H*&}oEI>͛ͺGERMAN VOCABULARY QUIZ PROGRAM ͛ ͛ͺ'BY JON DART ... VERSION 2.0 (01-MAR-86) ![!Z͘7!ͺ8!T!RQ8*&!EH*T"NH*T*R"N!!V!N.:*V!EI!!H*V*T*R*N͚;!*VfzCI"L!*L+)*Ls#r*L#I*V"X!*X=!!*X!H!!P͒>*X*PE!ͿE!!*P!XF*&́!͑!͑OEII*&!}2*[&}3*Z&}3H *X!H!!P͒>*X*PE!Ϳ