IMD 1.17: 24/11/2010 19:50:40 20 pil1  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ &lŗkm HBf     &  %C e U7F ?IO ERROR WHILE BOOTING? 7$ ?NOT ENOUGH CORE TO BOOT?    e   ևߕ vߕ 7| SYSTEM.PASCAL? w7b SYSTEM.INTERP? @Aw  `! mG~d!~  ^\F C& J&  0  EN  ~ TEM.PASCALj$# _~U@pe5w E ŋw Ŋw C! @ D~̋   wTwDԤ eeW 7 ?YOU DON'T HAVE A  ߋt_v @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PIL13Tf4xpP CASET.TEXTj}\PV RANS.TEXTkZVZ MILD.TEXTkZZ^ RANIOD.TEXTk@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Z^b RAND.TEXTkZbl MILTA.TEXTkZlr RANIOS.TEXTy LABD.TEXTkZ MILTA.CODEk@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Z CASES.TEXTyZ CASES.CODE#Z CASES.PMD#dZ CASET.DIR#Z MILS.TEXT@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ykZ MILS.TEXTkZ LABD.TEXTkZ RANIOS.TEXTkZ MILTA.CODEkZ s)he will be told the average score for the class. / Do you want to have your answers scored? :typebye /Thank you. /It's titate is created by a change of abode with the absence of any present intention not to reside permanently or indefinitely in thme to sign off. To do so, type 'bye' and turn off the teletype and coupler and hang up the phone. :i1 / / / / e new abode." :agr /Do you agree? :eval /Please evaluate your answer in light of what follows. :q27a / /Q-27a. Jill says that J AN EXERCISE IN CASE ANALYSIS / Copyright 1974 by Roger Park / Rev'd. 10-15-77ack's statement of the holding (Q-1, above) is inaccurate because Baker v. Keck holds that change of domicile occurs only if  KCJ / / If you have started this exercise before and want to resume where you stopped last time, please type the number (1-32) of the question on which you want to begin. Otherwise, just push 'return' to continue. :i2 / I will ask you a series of questions. Sometimes one question will be followed by another without comment. At other times, I will give my own opinion about what the answer should be. Caveat: Many lawyers would disagree with some of my opinions. Therefore, do not take them as gospel. / Unless otherwise instructed, please answer all my questions "yes" or "no." You may substitute "y" for "yes" and "n" f:name /Please type in your name or identifying number. :student /Are you taking this exercise as part of a law school course reor "no." :ho / Do you have the handout for this exercise? :ho1 / The exercise really cannot be done without the handoutquirement? :doneq / You have finished the exercise. Now, please answer the following questions about your experience with . Please get a copy of the handout if you don't already have one. :q1 / /Q-1. You are participating in a skull session about Bathe computer. The computer will report your responses anonymously. :wantsco / / If you wish, the computer will score your aker nswers and tell you your score at the end of the exercise. Your score will not be reported to your teacher by name, although ( v. Keck at your law firm. Jack, one of the associates, says that the holding of Baker v. Keck is that "Citizenship in a new s cause Baker v. Keck elsewhere clearly indicates that /(1) citizenship and domicile are synonymous, and /(2) a new domicile may  number within the proper range. :ab / You have now given three answers which I am not programmed to accept. Therefore I wibe acquired without any / participation in community activities. /Consider Jack's second proposition. Is there language in ll tell you my answer. I think that Section 19 is the section most helpful to Jack. :q27nb / / Not the best answer. I think Baker v. Keck which supports it? :pwr / Probably wrong. :cor /Correct. :pcor / Probably correct. :q27d / /Q-27d. Type in ththere's other language in the opinion which is better. :q2719 / / The language in s. 19 states that if physical presence ae section number (1-25) containing the language which most clearly supports Jack's second proposition. :n3 / I have not beend intent to establish a home concur "even for a moment," a change of domicile has taken place. Thus, a person could change don programmed to accept your answer as micile the moment he moved into a house in a new state, long before he had a chance to engage in community affairs. :q2 / /Q-2. one of the correct ones. Do you want to explain why you chose this section? :typ /Do you need typing instructions? :type /  Tom argues that, even if Jack's statement (quoted in Q-1) is an accurate statement of legal doctrine, it is not the holding othere has been - - /(1) a change of abode coupled with absence of intent not to / reside permanently or indefinitely, AND /(2 After the "?" appears, begin typing. Push the 'return' key at the end of each line, and wait for the "?" to appear before you) participation in community activities. :q27b / /Q-27b. Consider the language in Section 10 of the opinion. Is this language h resume typing. When you have finished, push the 'return' key, wait for the "?" to appear, and then push the 'return' key againelpful to Jill's position? :q27b1 / Section 10 states that "Citizenship . . . carries with it the idea of identification with. / Because of the difficulty of typing at the terminal, it is probably best to compose your answer on paper first. If you the state and a  do make a minor error, ignore it and continue typing. If you make an error so serious that it obscures your meaning, push the participation in its functions." Although this language is vague, one could interpret the "participation" phrase to mean that 'escape' button labeled 'ESC.' The line you were typing on will be deleted, so type your comment again from the beginning of  there must be some participation in community activities in order to create "citizenship" instead of mere "residence." :q27c that line. / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * :ok /Please begin typing. / :n3a / O.K. Now, pl/ /Q-27c. Jack defends his statement of the holding by arguing that the ambiguous language of section 10 should be ignored beease try again on Q-27d by choosing another  / Tom's rule is not dictum. The trial judge found that the plaintiff in Baker v. Keck had a motive to establish diversityevidence of UNITED STATES citizenship, . Hence, the rule stated was applicable to the facts before the court. :q4 / /Q-4. Tom argues that since his rule is not dictum not of citizenship in a certain state. Is Tom right? :q6a / / Tom is wrong. It would make no sense to read the passage the, it must be holding, and that therefore he was correct in stating what the holding of the case was. :q4a / / In my opinio way Tom has read it. To do so would be to read it as a rule saying "provided that a person is a United States citizen, then hn, Tom is wrong. Most cases have several "holdings," that is, they rely on several rules of law as links in the chain of reasoe can conclusively prove his United States citizenship by voting." :q7 / /Q-7. Tom's reading of the first sentence of s. 11 is ning leading to the result. However, when a lawyer speaks of "THE" holding of a case, he should be referring to the holding wh objectionable because it makes the sentence (please answer with a number): / 1. Circular / 2. Conclusory / 3. Evasich ive / 4. Analogous / 5. A negative pregnant :q7a / / Correct. The rule would be circular if one of the prerequisite is most relevant to the purpose for which he is reading the case. The court's holding about the significance of motive in s. s of proving United States citizenship was being a United States citizen. Therefore, the phrase must refer to proof of citize9 is not relevant to the purpose for which you are considering the case. Driver's move to Coffman was not motivated by a desirnship in the state in which the person has voted. :wt / Wrong. Try again. :q8 / /Q-8. In view of the above, do you want to e to establish diversity and therefore the language about motive is not the gist of the case -- "THE" holding -- so far as youchange your answer f Baker v. Keck. Tom says that the holding of Baker v. Keck is that a person can successfully acquire a new domicile even if or firm is concerned. :q5 / /Q-5. Jill says that Baker v. Keck holds in s. 11 that voting is conclusive evidence of citizenship ne of the motives which in the state in which the person has voted. She says that since this rule disposes of Driver's case, it is THE holding of Bake prompted him to change his abode was the desire to create diversity jurisdiction.(See s. 9) :q3 / /Q-3. Jack argues that Tom ir v. Keck so far as your firm is concerned. :q6 / /Q-6. Tom argues that the statement that "the exercise of suffrage by a citis wrong, since the rule referred to by Tom is dictum, not holding. Do you agree that Tom's rule is dictum? :wr /Wrong. :q3a / zen of the United States is conclusive evidence of his citizenship" in s.11 means that the exercise of suffrage is conclusive  nited States is conclusive evidence of citizenship in the state in which he voted? :q9a / / Baker v. Keck does not expressltatement by the court about the legal effect of voting would be dictum, i.e., a statement of a rule of law not applicable to ty endorse the rule. The court merely notes that "it is commonly held" that exercise of suffrage has this effect. It does not ehe facts before the court. (Of course, the xpressly state that it agrees with this common view. :q10 / /Q-10. Suppose, however, that the Baker v. Keck opinion had expres circumstance that the voting rule is not one of the holdings of Baker v. Keck does not mean that it is not of importance to ysly said "we hereby endorse and accept the rule that exercise of suffrage by a citizen of the United States is conclusive evidour firm in the case of P v. Driver. It is potentially dispositive of the diversity issue, and you would want to research theence of his citizenship." Would Jill then be correct in saying that this rule would be THE holding of Baker v. Keck (i.e., the voting rule carefully, beginning with the cases cited in Baker v. Keck.) :q14 / /Q-14. It is 1978. You are trying to persuad most important one for our purposes)? :q11 / /Q-11. Would she be correct in saying that this rule is one of the holdings of Be a judge to endorse the rule that voting in a state conclusively establishes citizenship there. Which of the following argumeaker v. Keck, even if not the most important nts should be advanced in support of the rule? / / 1. The rule will discourage forum-shopping. / 2. The rule will res one for our purposes? :q12 / /Q-12. Jack counters Jill by arguing that the voting rule is dictum instead of holding. :q12w / /trict diversity jurisdiction to cases / where there is danger of state-court bias. / 3. The rule will be easy to ad In my opinion, Jack is right and you are wrong. :q13 / /Q-13. Which of the following facts could be adduced in support of minister. / 4. Baker v. Keck provides precedential support for the / rule. / 5. The rule will reduce the numbean argument that Jack is correct in saying that the voting rule is dictum? / (1) Baker v. Keck involved a change of abode br of lawsuits. y a / plaintiff, not a defendant. / (2) The plaintiff in Baker v. Keck did not vote in / Oklahoma. / (3)/(Answer with as many numbers as are appropriate. Separate numbers with commas or spaces.) :q14a / I prefer (3) and (4). A  The plaintiff in Baker v. Keck had a floating intent. / (4) One of the plaintiff's motives in Baker v. Keck was / tper se rule that voting establishes citizenship would be easy to administer and might save time and money. In cases in which t to Q-5 from "no" to "yes"? :q9 / /Q-9. Does Baker v. Keck endorse the rule that exercise of the suffrage by a citizen of the Uo establish diversity jurisdiction. :q13a / / I prefer answer (2). Since the plaintiff in Baker v. Keck did not vote, any s u were CORRECT in pushing key 2. :q15(2)w / In my opinion, you should have pushed key 2. :q15(2) Giving conclusive effect tnt to change your answer to Q-1? (Note: I am asking everyone this question regardless of his or her answer to Q-1). :uay / o voting would allow a forum-shopping plaintiff to establish citizenship outside of his home state, and to gain access to fedeYou have answered "yes." :uan / You have answered "no." :tmt This means that you :nl no longer :sdn still do not :sd stillhe person had voted at his new abode, it would not be necessary to make difficult factual determinations about intent. Also, Bral courts even though he is not really aker v. Keck provides some precedential support for the rule, albeit it does so in equivocal dictum. / (5) is also a possib a foreignor to the courts of his state. :q15(3)c / You were CORRECT in pushing key 3. :q15(3)w / Perhaps you should alsility, though the effect of the rule in reducing the number of lawsuits is very speculative. :q15 / /Q-15. Which of the folloo have pushed key 3. :q15(3) One can argue that the voting rule would exclude diversity jurisdiction even when there is dangerwing arguments should your opponent adduce in opposition to the voting rule? / / (1) The rule will encourage forum-shoppin of state-court bias because a person who voted in a state while temporarily residing there would NOT be of diverse citizenshig. / (2) The rule will convey diversity jurisdiction even where / there is little danger of state-court bias. / p with an opponent born and raised in the state, and thus would not be able to obtain the protection of federal court. :q15(4) (3) The rule will exclude diversity jurisdiction even c / You were CORRECT in pushing key 4. :q15(4)w / In my opinion, you should also have pushed key 4. :q15(4) In recent y/ when there is substantial danger of state-court bias. / (4) Residency requirements for voting have been relaxed ears, it has become easier to qualify as a voter after moving to a new state. Baker v. Keck and the cases cited therein may th/ in recent years. /(Answer with as many numbers as are appropriate. Separate numbers with commas or spaces.) :q15(1)cerefore be distinguishable on grounds that when they were decided (1936 and earlier) newcomers were required to establish a st / You were CORRECT in pushing key 1. :q15(1)w / You were WRONG in failing to push key 1. :q15(1) Giving conclusive effronger connection with a state before being allowed ect to voting would create a danger of forum-shopping because litigants would be able to establish diversity jurisdiction simp to vote there. :acorr / Please answer with a number or numbers in the correct range (1- :notrel / I do not see the relevaly by voting in a new state, regardless of intent to remain there or degree of connection with the community. :q15(2)c / Yonce of (4). Please type in the reason why you chose (4). :q16 / /Q-16. In light of the discussion in questions 1-15, do you wa indefinitely is necessary for change of domicile. If registering to vote and participating in community activities conclusively established citizenship regardless of intent, then the remainder of the quoted sentence and a large portion of the opinion would be superfluous. :q18 / /Q-18. Even though you do not think that it is THE most important holding, do you nevertheless think that Tom has accurately described one of the holdings of Baker v. Keck? :nt15 / I'm not sure whether you're correct or n "is inconsistent with any conclusion other than that of citizenship." See s. 21. :q17y / / Your position is reasonable, buot. / / A substantial argument can be made that Tom has not accurately described the legal doctrine applied by the court. T do :nd now do :se agree with Jack's assertion that the holding of Baker v. Keck is that "Citizenship in a new state is creatt I disagree. First, the facts stated in the computer booklet contain no indication that Driver participated in a community pred by a change of abode with the absence of any present intention not to reside permanently or indefinitely in the new abode."oject, so the version of the holding advocated by Tom might not be controlling in Driver's case even if Tom's description of t Please consider this answer in light of what follows. :q17 / /Q-17. Tom argues that "THE" holding (i.e., the most important hhe doctrine established by Baker v. Keck was accurate. Secondly, there is doubt that Tom's description is accurate. / A suolding for your purposes) of Baker v. Keck is that registering bstantial argument can be made that Tom has not accurately described the legal doctrine applied by the court. The Court's opin to vote and participating in a community project without pay ion states in s. 21 that "such action is inconsistent with any conclusion other than that of citizenship, AND, in view of his sworn testimony that it was his intention to reside in Oklahoma and to continue to do so, it follows that the elements constituting the status of citizenship existed (emphasis added)."  Although the meaning of this passage is obscure, it is probably best to read the passage as meaning that intention to reside  g to vote and participating in community activities conclusively established citizenship regardless of intent, then the remain permanently or indefinitely. :q22 / /Q-22. Harvey says: "In Baker v. Keck the plaintiff intended to return as soon as the lawsder of the quoted sentence and a large portion of the opinion would be superfluous. :q19 / /Q-19. Jill argues that since Bakeruit was over. The court held that this intent did not prevent him from acquiring a new domicile in Oklahoma. Similarly, the de v. Keck established that "Change of domicile arises when there is a change of abode with the absence of any present intentionfendant here intended to leave Coffman after law school was over. His intent was essentially the same as that of the plaintiff not to reside permanently or indefinitely in the new abode," s. 12, the court must hold that Driver established a domicile in in Baker v. Keck, and thus he must be held to have acquired a domicile in Coffman." :q23 / /Q-23. Is Harvey describing the fac Coffman. She argues that he ts correctly? Did the plaintiff in Baker v. Keck in fact intend to return to Illinois as soon as the lawsuit was over? :q24 /  intended to move in the future, not the present, and therefore he lacked the "present intent" required by the quoted passage. /Q-24. I'll respond to your answer later. First, let's backtrack a bit. In Baker v. Keck the court was ruling on a motion to d:q19a / / Jill is clearly wrong. "Present intent" in the passage does not mean intent to move at the present time. It refeismiss for lack of subject matter jurisdiction. In this procedural posture, could the trial court make findings of fact, or wars to an intent to move in the future which is presently entertained. :q20 / /Q-20. Tom argues that Baker v. Keck adopts the Res it restricted to deciding issues he Court's opinion states in s. 21 that "such action is inconsistent with any conclusion other than that of citizenship, AND, statement provision that "To acquire a domicile of choice, a person must establish a dwelling-place with the intention of makiin view of ng it his home." He says that Driver intended to make Coffman his home for three years, and therefore clearly established a do his sworn testimony that it was his intention to reside in Oklahoma and to continue to do so, it follows that the elements comicile there. :q21 / /Q-21. Is the rule quoted in Q-20 inconsistent with the rule quoted in Q-19? :q21a / / The two rules anstituting the status of citizenship existed (emphasis added)." Although the meaning of this passage is obscure, it is probablyre not necessarily inconsistent. The word "home" could be viewed as a legal word of art referring to a dwelling-place which is best to read the passage as meaning that intention to reside indefinitely is necessary for change of domicile. If registerin occupied with intent to remain  Q-25. Did the trial court find as a fact that plaintiff intended to return to Illinois as soon as the case was settled? :wrq2 Q-26, or is it 5 Therefore, your answer to Q-23 was, in my opinion, probably wrong. The trial judge did not find that plaintiff intended to  distinguishable? / 1. Identical. / 2. Distinguishable. :q27a1 / / If the court credits Driver's testimony that he return to Illinois. :corq25 Therefore, your answer to Q-23 was, in my opinion, probably correct. The trial judge did not find had a definite intent to leave Coffman upon graduation, then his intent would seem to be distinguishable. He would have a fixethat plaintiff intended to return to Illinois. :cs22 See s. 22. :q26 / /Q-26. The trial judge's opinion indicates that plaintid intent instead of a "floating" intent. Therefore, Harvey's assertion (Q-22) seems wrong. Driver is claiming a different kindff would be held to have acquired an Oklahoma domicile even if -- / 1. He had a fixed present intent to return to Illinois  of intent from that postulated by the court in Baker v. Keck. :q28 / /Q-28. You now have one final chance to change your answe/ on a date certain. r to Q-1. Do you now agree with Jack's statement of the holding? :q28a / /Q-28a. You have answered "no," indicating that you do/ 2. He had a fixed present intent to return to Illinois / after the occurrence of a contingent event. / 3. He wa not agree with Jack's statement of the holding. Why not? / / 1. I believe that Jill's statement(See Q-27a) / is bs considering return to Illinois upon the / occurrence of a contingency, but he had not / yet made up his mind. / etter. / 2. I disagree with Jack for some other reason. :q28a1 / Thankyou. I will tell you my views in a moment. First (Choose one answer by typing in the number and / pushing the "return" key.) :q26a / / I prefer (3). The court state, another question: s that there was evidence that the plaintiff had said that he "might" return, implying that he had not made up his mind yet. S:q28a2 / Please type in your reason for disagreeing with Jack's position. :q28a2a / Thankyou. I will now deliver your cee s. 22. The court also refers to a "floating" intent. Id. Although "floating" could arguably refer to a floating date of retomments to the author. Now, please answer another question. :q29 / /Q-29. Suppose that you were the judge in this action. You b of law? / 1. The trial court could make findings of fact. / 2. The trial court could only decide issues of law. :q24aurn, it probably refers to indecision on the part of plaintiff. :q27 / /Q-27. Assume that the trial court in your case decides / / The trial court could make findings of fact, and it did so in several places in the opinion. See, e.g., s. 9. :q25 / / that Driver's testimony is true. Is the kind of intent possessed by Driver identical to the intent described in part (3) of  s merely a way of cautioning the reader that there might be differences in situations not then under discussion. (For exampleicile there under the test described in Baker v. Keck. However, he could still be deemed a citizen of Coffman if voting is coelieve Driver's testimony that he always had a definite intention to leave Coffman upon graduation. You also believe his testi, a resident mony about the voting and the community activity. How would you rule? / (1) In favor of citizenship in Coffman / (2) In alien is not a citizen of the state in which he is domiciled for diversity purposes). The Court never expressly stated that m favor of citizenship in Fraser / (3) In favor of citizenship in Northrop :q29a3 / Wrong. Driver cannot be a citizen of Nere domicile was insufficient to establish citizenship. It did not need to resolve that issue in the case before it, because orthrop because he is not yet physically present there. "The fact of physical presence at a dwelling place and the intention the plaintiff was domiciled in the state and had also participated in community affairs. However, one could argue, on the basto make it a home must concur. . . ." S. 19. Please try again. :n24 / Thank you. Do you want to hear my views about the ais of the court's references to participation in community affairs, that "citizenship" requires some activity in the communitynswers  as well as intention to remain indefinitely. / Jack's statement of the holding is arguably correct. However, because of th to Q-1(Jack's statement of the holding) and Q-29(how the judge should rule)? :n26 / 1. ANSWER TO Q-1 (HOLDING OF BAKER V. Ke ambiguity described in the foregoing paragraph, it might be prudent to qualify his statement. For example: / / A changECK). Baker v. Keck clearly stated that "Change of domicile arises when there is a change of abode with the absence of any pe of citizenship from one state to another occurs / when a person acquires a domicile in the new state, at / least iresent intention not to reside permanently or indefinitely in the new abode." Therefore, if a person is always a citizen of tf he has also participated in community affairs he state of domicile, then Jack's statement of the holding is clearly correct. However, Baker v. Keck never expressly stated t/ there. A new domicile is acquired when there is a / change of abode with the absence of any present intention / hat "citizenship" and "domicile" were identical. It stated that citizenship and domicile were "SUBSTANTIALLY synonymous" (s.1 not to remain permanently or indefinitely in the new abode. / / 2. ANSWER TO Q-29. Strong arguments can be made in favo0), suggesting that there might be a difference between the two. Its qualification of the word "synonymous" could be viewed ar of either Coffman or Fraser. Since Driver has a definite intent to leave Coffman upon graduation, he has not acquired a dom  has definitely decided not to return to that state, perhaps his ties with the place of temporary abode are stronger than thosepermanent home in a third state, he should be deemed to be a citizen of the second state, despite the fact that his residence  with the state of former abode. / I would not favor making this exception. In my view, the predictability offered by a flatthere is temporary. Id. at 735. :q30 / /Q-30. Jill argues that the following version of the holding of Baker v. Keck is also  rule that the old domicile persists satisfactory: / "A change of citizenship from one state to another occurs when a person acquires a domicile in the new stat outweighs the possibility that the policies of diversity jurisdiction would be better served by making exceptions in cases whee, at least if he has also participated in community affairs there. Change of domicile arises when there is a change of abodnclusive evidence of citizenship. / The adoption of a per se rule that voting results in change of citizenship is neither mare there is reason to believe that the ties with the temporary abode may be stronger than those with the former abode. / :q29andated or forbidden by Baker v. Keck, and therefore it presents a question of first impression in the jurisdiction. I would be /Q-29a. Baker v. Keck was a district court case decided in 1938. Would you like to have a brief summary of how other authorit inclined to accept such a rule, on grounds that the advantages of avoiding jurisdictional litigation outweigh any possible foies have dealt with the issues discussed in this exercise? :q29ay / 1. DOMICILE AND CITIZENSHIP. Federal courts have generarum-shopping dangers. Only lly ruled that, for diversity purposes, a person is a citizen of a state if he is domiciled in the state and is a citizen of t a few litigants will care enough about choice of forum to move to another state and vote there, and little harm will be done he United States. 13 C. Wright, A. Miller & E. Cooper, Federal Practice and Procedure sec. 3611 at 697 (1975). / 2. VOTINGif those litigants are admitted to the federal court. :mor / More? :n26a / One could also argue that in the unusual circumsta AND CITIZENSHIP. Voting in a state is one factor to be considered in determining whether a person is a citizen of the state,nces of Driver's case, an exception should be made to the rule that an old domicile persists until a person has acquired a new but modern courts have generally not treated it as conclusive.  abode with intent to remain indefinitely. In the usual case, the rule makes sense because the person's ties with the state o Id. at 717. / 3. ACQUISITION OF A NEW DOMICILE. Wright, Miller & Cooper argue, without citation of authority, that when f his former abode are likely to be stronger than his ties with the place where he is temporarily residing. However, when he a person has left the state of his original domicile and is temporarily residing in a second state with intent to establish a   no difference in meaning between Jack's version and Jill's version; one is merely the negative statement of the holding, the  Jill's rule makes it more difficult for a person to change their domicile. It is in your client's interest for the court to other the affirmative. :q31a / In my opinion, Harvey is wrong. Suppose a person changed his abode without entertaining any  determine that a change of domicile took place. If Driver is still domiciled in Fraser, there is no diversity of citizenship. intent about the location of his future residence. Jill's rule should lead to a determination that no change of domicile had t:q33 / /Q-33. How long did you spend doing the exercise, not counting any time lost because of technical problems with the caken place, and omputer? /(Type in the answer CLOSEST to your time estimate) / / 1. One hour / 2. One and one-half hours / 3. Two Jack's rule should lead to the opposite result. :q32 / /Q-32.  hours / 4. Two and one-half hours / 5. Three hours / 6. Three and one-half hours / 7. Four hours :q34 / /Q-34. Please rate the educational value of this exercise. / / 1. Excellent / 2. Very good / 3. Good / 4. Fair e accompanied by a present intention to reside permanently or indefinitely in the new abode." :q30a / Jill's version seems satisfactory. It has textual support  in the latter part of s.12. Arguably, Jack's version is more authoritative, since the statements in s.12 supporting Jill's version are quotes from another decision, whereas the court takes full responsibility for the first sentence of s.12 and this sentence supports Jack's version. However, it appears clear that the court regarded the quoted portions as good law, and Jill's version of the rule is perfectly consistent with the result reached in Baker v. Keck. :q31 / /Q-31. Harvey argues that there is/ Whose rule would be more favorable to your client (P) in this case? / (1) Jill's rule / (2) Jack's rule :q32a /  / /   procedure Remove( Offset: PermRange; var PSeries: Series);   begin #with PSeries dO &if Element [ Offset ] then )begin ,Element [ Offset ] := False; ,Count := Count - 1; )end;  end { Remove };     procedure RandP(var Found: boolean; var Selection: PermRange;  var PSeries: Series);   var #Count : PermRange; #  begin #Found := ( PSeries.Count > 0 ); # #if Found then &begin )Selection := 0; )Count := Ran( Pseries.Count ); )while Count > 0 do ,begin /if PSeries.Element [ Selection + 1] then 2Count := Count - 1; /Selection := Selection + 1; ,end; )Remove(Selection, PSeries); &end;  end;   O^   procedure NextP(var Found: boolean; var Selection: PermRange;  var PSeries: Series); #  begin #Found := ( PSeries.CouAnt > 0 ); # #if Found then &begin )Selection := 1; )while not PSeries.Element [ Selection ] do ,Selection := Selection + 1; )Remove(Selection, PSeries); &end;  end;     procedure SetPerm( PSize: PermRange; var PSeries: Series);   var #I: integer; #  begin #for I := 1 to PSize do &PSeries.Element [I] := True; #PSeries.Count := PSize;  end { SetPerm };  / 5. Poor / 6. Very poor / 7. I cannot fairly evaluate because of / technical computer problems / (Answer with one number only) :q35 / /Q-35. Please type in any other comments you have about the exercise or your experience with the computer. :bye / / That's all. Thank you for taking the exercise. Please type "BYE" and push 'return' to sign off.     const #StringSize = 250; #  type #LongString = String [StringSize]; #CharSet = Set of Char; #MatchType = (KMMatch, DMMatch, PMMatch);  var #KBD, #KBDCopy, #Temp : LongString; #CrackCol : 0..StringSize; #MaxLL, #Room : 0 .. 999; #Cases : boolean; #ResLine : integer; #ResLab : string [10]; #RandomSeed: real;  O^zAO^6A@T O^@`  { Random I/O package declarations } const #BufSize = 512 ; #MaxBlock = 500 ; " var #RanBuf : packed array[1..BufSize] of Char ; #RanFil : File ; #ResBlk : -1..MaxBlock ; #RanEOF : boolean ; #BufPtr : 0..BufSize ; #SpCount : integer ;  type #PermRange = 0 .. MaxPerm; #Series = record &Count : PermRange; &Element : packed array[ PermRange ] of boolean; #end { Series };     begin $I := L ; $J := R ; $X := Directory [(I+J) div 2].LabelName ; ! $repeat (while Directory [I].LabelName < X do ,I := I + 1 ; (while X < Directory [J].LabelName do ,J := J - 1 ; (if I <= J then ,begin { Swap } 0W := Directory [I] ; 0Directory [I] := Directory [J] ; 0Directory [J] := W ; 0I := I + 1 ; 0J := J - 1 ,end { Swap } $until I > J ; $ $if L < J t program MilTa ;   {$I LABD }  {$I RANIOD } { var } $Dir : file of DirRecord ; $Directory : array [0..LabMax] of DirRecorhen (QSort(L, J) ; $if I < R then (QSort(I, R) (  end { QSort }; " !  procedure DrillHeader ; var I, J : integer ; begid ; $Name, NameTxT : String ; $FrameName : IDK ; $Line : string [255] ; $DirIndex : 0..LabMax ; $ {$I RANIOS }  {$R+}  n $for I := 1 to LabLen do (if (I+1) <= Length(Line) then ,FrameName [I] := UpperCase( Line [I+1] ) (else ,FrameName [I] :function Min(I, J : integer) : integer ; begin $if I < J then (Min := I $else (Min := J ;  end ; !  Function UpperCase(Ch= ' ' ; end;  procedure GetHeader { Skip till a header or EOF };   var Stop : boolean;  begin { GetHeader } $repeat aracter: Char) : Char;  begin $if Character in ['a'..'z'] then (UpperCase := Chr( Ord(Character) - Ord('a') + Ord('A') ) $else (UpperCase := Character;  end; procedure Intro { Setup initial conditions }; {$I-} begin { Intro } $Page(Output) ; $WriO^teLn ; $WriteLn(' ':20, 'MILTA - Create text directory') ; $WriteLn ; $Write('File name: ') ; $ReadLn( Name ) ; $NameTxT :=B Concat( Name, '.TEXT' ) ; $if not RanOpen(NameTxt) then (begin -WriteLn('? ', NameTxt, ' Not found?') ; -Exit(MilTA) ; (end ; $Rewrite(Dir, Concat(Name, '.DIR') ) ; $if IOResult <> 0 then (WriteLn('?Can''t open output file?') ; $DirIndex := 0 ; $with Directory [0] do (begin -LabelName := 'AAAAAAAA' ; -Place.Block := 0 ; -Place.Byte := 0 ; (end ;  end { Intro };  {$I+} procedure QSort( L, R : integer ) { Sort directory entries }; var $I, J : integer ; $X : IDK ; $W : DirRecord ; !  ; (end; end { MarkHeader }; procedure DoIt { Main processor }; var I : integer ; begin { DoIt } $Seek(0, 1) ; $repeat (CGetHeader ; (if not RanEOF then ,begin 0MarkHeader ; 0Write(FrameName:9) ; 0if (DirIndex mod 8) = 0 then 4WriteLn; ,end ; $until RanEOF ; $WriteLn; $WriteLn(DirIndex, ' Texts processed.') ; $QSort( 1, DirIndex ) ; $for I := 0 to DirIndex do (begin ,Dir^ := Directory [I] ; ,Put(Dir) ; (end ; $Close(Dir, Lock) ; $WriteLn('File ', Name, '.DIR created.') ; END { DoIt }; begin { Main } $Intro ; $DoIt ; end.   { Random read routines }  {$I-} function RanOpen(FName : string) : boolean ; { Attempt to open random file } begin { RanOpen } $Close(RanFil) ; $Reset(RanFil, FName) ; $RanOpen := IOResult = 0 ; $ResBlk := -1 ; $RanEOF := True ; $SpCount := 0 (GetRanLine(Line) ; (if RanEOF then ,Stop := True (else ,if Length(Line) = 0 then 0Stop := False ,else 0Stop := Line [1] = ':' ; $until Stop; ! $if not RanEOF then (DrillHeader ;  end { GetHeader };   procedure MarkHeader { Place frame info into directory }; begin { MarkHeader } $if DirIndex >= LabMax then (WriteLn('Directory overflow') ; $DirIndex := DirIndex + 1 ; $with Directory [DirIndex] do (begin ,Place.Block := ResBlk ; ,Place.Byte := BufPtr ; ,LabelName := FrameNameO^ ) < 1 end { RanRead };  procedure Seek( Blk, Byt : integer ) { Position at Blk, Byt }; begin $if ResBlk <> Blk then $RanR%Page(Output); %At(1,1);  end; procedure Start; var $Hi, Lo : integer; $ begin $Cases := False; $MaxLL := 80; $Cracead(Blk) ; $ResBlk := Blk ; $BufPtr := Byt ; end { Seek }; {$G+}  {$R-} procedure GetRanLine(var X : string ) { Read line fkCol := 0; $Time( Hi, Lo ); $RandomSeed := Abs(Lo) mod 500 { Set random seed }; $ResLab := ''; $ErasePage; end; functiorom random file };  label $1,2,3,4,5 ;  const $CR = 13 ; Eat = 16 ;  var $P, L, Z, EX, SP, BS : integer ;  begin $Bn KM(S : string): boolean; begin $KM := Pos(S, KBD) > 0 ; end; function PM(S : string): boolean; begin $PM := Pos(S, KBD) =S := 1 ;  1: L := BufSize - BufPtr + 1 { Chars left in line }; $P := Scan(L, = Chr(CR), RanBuf [BufPtr]) { Look for eol }; $ 1 ; end; function DM(S : string) : boolean ; begin (DM := S = KBD ; end; function EM(S : string) : boolean; var %P, if P < L then goto 3 { If full line gotten }; ( $if RanBuf [BufPtr] = Chr(0) then L := 0 { If trailing nulls }; Col : integer; %OK : boolean; begin $OK := True; $Col := 1; $while NextStr(S, Temp) and OK do (begin ,P := Pos(Temp, KBD);$MoveLeft(RanBuf [BufPtr], X[1], L) { Copy first part of line }; $BS := L + 1 ; $Seek(ResBlk+1, 1) ; $if RanEOF then goto 5 ,OK := P >= Col; ,Col := P + Length(Temp) ; (end; $EM := OK; end { EM }; function ManyMatch(var Place : integer ; var S : ; $goto 1 { For maximum speed, if not clarity! }; $  3: MoveLeft(RanBuf [BufPtr], X[BS], P) { Move rest of line }; $if ( string ; 3CompType : MatchType) : boolean ; var (Found : boolean; begin (Found := False; (Place := 0; (while NextStr(S, BufPtr+ P ) < BufSize $then (BufPtr := BufPtr + P + 1 $else (begin ,BufPtr := BufSize ; ,RanBuf [BufPtr] := Chr(0) ; (en Temp) and not Found do ,begin 0Place := Place + 1; 0case CompType of 5KMMatch : Found := KM(Temp); d { Update line base }; $P := P + BS - 1 ; $  2: EX := Scan(P, = Chr(Eat), X[1]) { Check for space eater character }; $ 5DMMatch : Found := DM(Temp); 5PMMatch : Found := PM(Temp); 0end { case }; ,end; (ManyMatch := Found; end { ManyMatch }; $if EX >= P then goto 4 { If no eaters }; , $SP := EX + 3 ; $L := Ord(X[EX+2])-34 ; $if L > 0 then (MoveRight(X[SP], X[SP+ function PMM(var Place : integer ; S : string) : boolean; begin (PMM := ManyMatch(place, S, PMMatch); end; function DMM(varL], P-SP+1) { lengthen } $else (MoveLeft(X[SP], X[SP+L], P-SP+1) { shorten }; $ $if L > -2 then FillChar(X[EX+1], L+2, ' ') Place : integer ; S : string) : boolean; begin (DMM := ManyMatch(Place, S, DMMatch); end; function KMM(var Place : integer  { space fill }; $P := P + L ; $goto 2 { For speed only!! }; $ $  4: X[0] := Chr(P);  !5:  end ; S : string) : boolean; begin (KMM := ManyMatch(Place, S, KMMatch); end; procedure Perform(S: string);  begin  end { Pe; end { RanOpen }; {$I+ } procedure RanRead(B : integer) { Read block B }; begin $RanEOF := BlockRead(RanFil, RanBuf, 1, B+2 638429+31.41597; #RandomSeed := RandomSeed-Trunc(RandomSeed); #Ran := Trunc(RandomSeed*Range) + 1;  end { Ran };  < ResLine) (then ,begin 0SeekLabel(Lab, Found); 0if Found 0then 4begin 8ResLab := Lab; 8ResLine := 0; 4end; ,end (elsprocedure Tfile(FN : string) ; var $Fil : file of DirRecord ; $Err : boolean; $ $procedure OpenUp(FN : string); $begin *e ,Found := True; (if Found (then ,begin 0while (Line > ResLine) and InFile do 4begin 8GetRanLine(Str); 8ResLine := Rerform }; procedure Rec(S1, S2 : string); begin end; procedure GetNumber(var N: integer; var Found: boolean); var $Done: Close(Fil) ; *{$I-} *Reset(Fil, Concat(FN, '.DIR')) ; *{$I+} *Err := IOResult <> 0; *Err := Err or not RanOpen(Concat(FN, 'boolean; $I, Tot, Sign: integer; #begin &Found := False; &Sign := + 1; &Tot := 0; &if Length(KBD) > 0 &then *begin .D.TEXT')); $end; # # begin { Tfile } $OpenUp(FN); $if Err then &OpenUp(Concat('#5:', FN)); $if Err then 'WriteLn(FN, ' noone := False; .I := 0; .while (I < Length(KBD)) and not Done do .begin 2I := I + 1; 2Done := KBD[I] in ['0' .. '9', '-', '+t found!') $else $begin *LabCount := 0 ; & *while not EOF(Fil) do ,begin 0LabelDict [ LabCount ] := Fil^ ; 0LabCount :=']; .end;  .if KBD[I] = '+' .then 2I := I + 1 .else 2if KBD[I] = '-' 6then :begin >I := I + 1; >Sign := - 1;  LabCount + 1 ; 0Get(Fil) ; ,end ; end;  end { Tfile }; procedure SeekLabel( Lab : string; var Found : boolean ) ; :end;  .Done := False; .while (I <= Length(KBD)) and not Done do .begin 2if KBD[I] in ['0' .. '9'] 2then 6begin :Tot : var $Lower, Upper, Probe : LabelRange ; $I : integer; $InLab : IDK ; begin $Lower := 1 ; $Upper := LabCount ; $Found :== Tot * 10 + Ord(KBD [I]) - Ord('0'); :I := I + 1; :Found := True; 6end 2else 6Done := True; .end; *end; &N := Tot * Sig False ; $InLab := ' '; $for I := 1 to Min(Length(Lab)-1,LabLen) do (InLab[I] := UpperCase( Lab[I+1] ) ; $repeat (n; #end { Number }; #procedure Crack( ChS : CharSet ; var Found : boolean ); %var *Start : integer; #begin { Crack }Probe := Trunc( (Lower+Upper) div 2 ) ; (with LabelDict[Probe] do (if InLab < LabelName ,then 0Upper := Probe - 1 ,else  (if CrackCol <= Length(KBDCopy) (then ,begin 0Start := CrackCol; 0while ( CrackCol < Length(KBDCopy) ) and 6not ( KBDCop0if InLab > LabelName 4then 8Lower := Probe + 1 4else 8Found := True ; $until Found or (Upper < Lower) ; $if Found (they[CrackCol] in ChS ) do 4CrackCol := Succ( CrackCol ); 4Found := True; 4KBD := Copy(KBDCopy, Start, CrackCol - Start + 1); n ,begin 0with LabelDict[Probe].Place do 4Seek(Block, Byte) ; ,end; end ; procedure Load(Lab : string ; var Str : LongStri5CrackCol := Succ( CrackCol ); ,end (else ,begin 0Found := False; 0KBD := ''; ,end; #end { Crack }; procedure Restore;ng ; Line : integer /; var Found : boolean); $function InFile : boolean; $begin )InFile := RanEOF; )if not RanEOF (then  begin (KBD := KBDCopy; (CrackCol := 1; end; function Ran( Range: integer) : integer;  begin #RandomSeed := RandomSeed*49.,if Length(Str) > 0 0then 4InFile := Str[1] <> ':' ; $end; begin (Str := '? NOT FOUND ?'; (if (Lab <> ResLab) or (Line   Room - Length(S) + BOL - 1; 1if NewRoom < 0 1then 5NoFits 1else 5if NewRoom = 0 5then 9JustFits 5else 9Fits; -end; )end;  end { PrtRaw }; #procedure PrLab(var Name : string); #var 'S : LongString ; 'Found : boolean; 'function EOR: boolean; (begin +EOR := RanEOF; +if not RanEOF +then .if Length(S) > 0 .then 2EOR := (S[1] = ':'); (end { EOR }; $begin { PrLab } &SeekLabel(Name, Found); &if Found &then *begin .GetRanLine(S); .while not EOR do .begin 2if Length(S) > 0 2then 3if S[1] <> '*' 3then 7begin =while (Length(S) > 1) and (S[Length(S)] = ' ') do >Delete(S, Length(sLine + 1; 4end; 0Found := InFile; ,end; end { Load }; procedure P(Name: LongString); var $Temp : LongString; #proS), 1); =if S = ' ' =then ?S := ''; =PrtRaw(S); 7end; 2GetRanLine(S); .end; *end (else ,begin 0WriteLn; 0WriteLn(Namcedure PrtRaw(var S : LongString); #var 'BOL, EOL, NewRoom: integer; &procedure NoFits; &begin e, ' - labeled text not found.'); ,end; #end { PrLab }; begin { P } %while NextStr(Name, Temp) do (if Temp[1] = ':' ,the,EOL := BOL + Room - 1; , ,{Look for end of last word} ,while (EOL > BOL) and (S[EOL] <> ' ') do /EOL := EOL - 1; ,if EOLn 0PrLab(Temp) ,else 0PrtRaw(Temp); end { P }; procedure Trap; forward; procedure Ask(Prompt : LongString); var I : in > BOL ,then /begin 2Write( Copy(S, BOL, EOL-BOL) ); 2BOL := EOL + 1; /end; ,WriteLn; ,Room := MaxLL; &end { NoFits }; teger; begin 'P(Prompt); 'ReadLn(KBD); 'if not Cases (then ,for I := 1 to Length(KBD) do 0KBD[I] := UpperCase(KBD[I]); 'K &procedure Fits; &begin +Write( Copy(S, BOL, Length(S) - BOL+1) ); +Room := NewRoom; +BOL := Length(S); &end { Fits }; BDCopy := KBD; 'CrackCol := 1; 'Trap; end; procedure PrintC(N: integer; S: LongString); var %GoAhead : boolean;  &procedure JustFits; &begin +WriteLn( Copy(S, BOL, Length(S) - BOL) ); +Room := MaxLL ; +BOL := Length(S); &end; begibegin %repeat )N := N - 1; )GoAhead := NextStr(S, Temp) and (N>0); %until not GoAhead; %P(Temp); end { PrintC }; procedn { PrtRaw } %if Length(S) > 0 %then )begin -S := Concat(S, ' '); -if S[1] = '/' -then 1begin 5WriteLn; 5Room := MaxLLure Wait; begin &At(24, 10); &Ask('Please press RETURN to continue.');  end { Wait };  ; 1end;  -if S[1] in ['/', ' ', '&'] -then 1BOL := 2 -else 1BOL := 1;  -while BOL < Length(S) do -begin 1NewRoom := const &LabMax = 350 ; LabLen = 8 ;  type %Marker = record 4Block : 0..1000 ; 4Byte : 0..512 ; 0end ; %IDK = packed array[1..LabLen] of char ;  %DirRecord = Record 5LabelName : IDK ; 5Place : Marker ; 1end ; %LabelRange = 0..LabMax ; var $LabCount : LabelRange ; $LabelDict : array [LabelRange] of DirRecord ;  { Random read routines } function RanOpen(FName : string) : boolean ; { Attempt to open random file } {$I-} begin { RanOpen } $Close(RanFil) ; $Reset(RanFil, FName) ; $RanOpen := IOResult = 0 ; $ResBlk := -1 ; $RanEOF := True ; $SpCount := 0 ; endO^8AO^OB Blk := Blk ; $BufPtr := Byt ; end { Seek }; {$G+}  {$R-} procedure GetRanLine(var X : string ) { Read line from random file  gՋՋ&  Texts processed.};  label (1,2,3,4,5 ; const (CR = 13 ; Eat = 16 ; var (P, L, Z, EX, SP, BS : integer ;  begin $BS := 1 ;  1: L := ՋO Ջfȡ*ՋՋj^ՋjՋՋjՋҶFile  .DIR crBufSize - BufPtr + 1 { Chars left in line }; $P := Scan(L, = Chr(CR), RanBuf [BufPtr]) { Look for eol }; $if P < L then goto 3eated.Ռ? . ƉjƊƉ>ƊjՌ&Ռ/ Ռ5ƉjƉ>T':@tjbH { If full line gotten }; ( (if RanBuf [BufPtr] = Chr(0) then L := 0 { If trailing nulls }; ڪPՀ>Հ>Հ"ՀfՀgՀiՁRNՁW>>ɫg"Ձէf(MoveLeft(RanBuf [BufPtr], X[1], L) { Copy first part of line }; (BS := L + 1 ; (Seek(ResBlk+1, 1) ; (if RanEOF then goto 5ՁՂfՂhՂ"6ՂՂhՃ0 >h ՃnɡՃ~NՃ>háՃՄ ; (goto 1 { For maximum speed, if not clarity! }; $  3: MoveLeft(RanBuf [BufPtr], X[BS], P) { Move rest of line }; $if ( >hݞՄGՄYfՄmgՄ~ՄՄƥ>hقޞՄhނɡՅ'hނhՅHՅQhՅg>hՅ BufPtr+ P ) < BufSize $ then )BufPtr := BufPtr + P + 1 %else )begin -BufPtr := BufSize ; -RanBuf [BufPtr] := Chr(0) ; )eՅقՅ ՆġՆgՆ3ՆC"Ն]šՆtڂ݂ڕՆڂ݂ڕՆšՆ nd { Update line base }; $P := P + BS - 1 ; $  2: EX := Scan(P, = Chr(Eat), X[1]) { Check for space eater character }; $ Շ݂Շ(ՇMՇQ޿ՇmՇl  zՁ3ɡՁDՁVՁc"Ձڳ ՁaAՂ$if EX >= P then goto 4 { If no eaters }; , (SP := EX + 3 ; (L := Ord(X[EX+2])-34 ; (if L > 0 then ,MoveRight(X[SP], X[SPՂ"8Ղp ՂՂ MILTA - Create text directoryՂŶՂ϶ File name: Ղ+L], P-SP+1) { lengthen } (else ,MoveLeft(X[SP], X[SP+L], P-SP+1) { shorten }; ( (if L > -2 then FillChar(X[EX+1], L+2, ' 'PՂP.TEXTUPՃ?ՃAՃK?  Not found?ՃrՃ) { space fill }; (P := P + L ; (goto 2 { For speed only!! };  4: begin $X[0] := Chr(P);  {$R+}  end;   5: { GetRanjP.DIRTՃ"ˡ*ՃͶ?Can't open output file?Ճ^Մ^ՄՄ+ئAAAA { RanOpen }; {$I+ } procedure RanRead(B : integer) { Read block B }; begin $RanEOF := BlockRead(RanFil, RanBuf, 1, B+2) < 1Line }  end; {$G-}   end ;  procedure Seek( Blk, Byt : integer ) { Position at Blk, Byt }; begin $if ResBlk <> Blk then $RanRead(Blk) ; $Res MILTA  A O^ RANIOS } {$I MILS } #  procedure Trap;  #begin &if KM('/QUIT') &then )begin ,ErasePage; ,Exit(CaseAnalysis); )end;AAAAЩՄCآՄXآ ՄjՄr@VՅ ՅՅ"ڂ^ՅVՅ^^  ՅՅ C^  ՅՅȡRՅՅ ^Ն^^Ն*^ Ն9ՆHšՆxɡՆ ՆɡՆ  Շȡ?Շ ,ȡՇG(,Շz( ՇIZ ՇՈ ,ՈgՈ, Ո@,áՈ] Ոt,:ՈءՈgՈ ՈĭQ\ Չ.^ġ(ՉPDirectory overflowՉs^Չ^ՉՉآfՉآ hՉإ(ՊՊ  ՊlՊ}Պ Պg2ՊՊ Պ( Պӧá ՊՊՋgՋՋ&  Texts processed.ՋO Ջfȡ*ՋՋj^ՋjՋՋjՋҶFile  .DIR created.Ռ? . ƉjƊƉ>ƊjՌ&Ռ/ Ռ5ƉjƉ>T':@tjbH  { Case - An erexcise in case analysis. }  { Copyright University of Minnesota }  { Author - Roger Park }  { Programmer - E overflowՉs^Չ^ՉՉآfՉآ hՉإ(ՊՊ  ՊlՊ}arl A. Schleske 17 December 1978 }  {}  {}   program CaseAnalysis; var #I: integer; #Tries: integer; #Questions: integՊ Պg2ՊՊ Պ( Պӧá ՊՊՋgՋՋ&  Texts processed.er; #Correct: integer; #Scoring: boolean; #Found: boolean; #KBDNum: integer; #AnsQ1: string; #AnsQ5: string; #AnsQ23: strՋO Ջfȡ*ՋՋj^ՋjՋՋjՋҶFile  .DIR cring; #Next: &(PQ1, PQ2, PQ3, PQ4, PQ5, PQ6, PQ7, PQ8, PQ9, PQ10, PQ11, PQ12, 'PQ13, PQ14, PQ15, PQ16, PQ17, PQ18, PQ19, PQ20,eated.Ռ? . ƉjƊƉ>ƊjՌ&Ռ/ Ռ5ƉjƉ>T':@tjbH PQ21, PQ22, PQ23, 'PQ24, PQ25, PQ26, PQ27, PQ28, PQ29, PQ30, PQ31, PQ32, LAST); # {$I LABD } {$I RANIOD }  {$I MILD } # {$I  #begin &Questions := Questions + 1; &P(':Q3'); &AskYN; &At(6, 1); &if KM('NO') &then )begin 0; #end { Q9 }; procedure Q10; #begin &Questions := Questions + 1; &P(':Q10'); &AskYN; &ErasePage; &if KM('YES') &,Correct := Correct + 1; ,P(':COR'); )end &else )P(':WR'); &P(':Q3A'); &Wait; &ErasePage; &Next := PQ4; #end { Q3 }; then )Next := PQ12 &else )begin ,Correct := Correct + 1; ,Next := PQ11; )end; #end { Q10 }; procedure Q11; #begin  procedure Q4; #begin &Questions := Questions + 1; &P(':Q4|:AGR'); &AskYN; &At(6, 1); &if KM('NO') then )Correct := C&Questions := Questions + 1; &P(':Q11'); &AskYN; &ErasePage; &if KM('NO') then )Correct := Correct + 1; &Next := PQ12; #orrect + 1; &P(':Q4A'); &Wait; &ErasePage; &Next := PQ5; #end { Q4 }; procedure Q5; #begin &Questions := Questions end { Q11 }; procedure Q12; #begin &Questions := Questions + 1; &P(':Q12|:AGR'); &AskYN; &At(8, 1); &if KM('YES')  #end; procedure AskYN; #begin &At(23, 1); &Ask(''); &while not (KM('Y') or KM('N')) do )begin ,At(22, 1); ,WriteLn+ 1; &P(':Q5|:AGR'); &AskYN; &At(9, 1); &if KM('NO') then )Correct := Correct + 1; &AnsQ5 := KBD; &P(':EVAL'); &Wait; &('Type YES or NO please!'); ,Ask(''); ,At(22, 1); ,EraseLine; )end; &if KM('Y') &then )KBD := 'YES' &else ErasePage; &Next := PQ6; #end { Q5 }; procedure Q6; #begin &Questions := Questions + 1; &P(':Q6'); &AskYN; &At(8, 1)KBD := 'NO'; #end { AskYN }; procedure AskNum(var Num: integer; Max: integer); #begin &At(23, 1); &Ask(''); &GetNum); &if KM('NO') then )Correct := Correct + 1; &P(':Q6A'); &Wait; &ErasePage; &Next := PQ7; #end { Q6 }; procedure Q7;ber(Num, Found); &if not Found then )Num := 0; ) &while (Num < 1) or (Num > Max) do )begin ,At(22, 1); ,EraseLine; ,Writ #begin &Tries := 0; &Questions := Questions + 1; &P(':Q7'); &repeat )AskNum(KBDNum, 5); )Tries := Tries + 1; )if KBDNeLn('Type a number from 1 to ', Max, ' please!'); ,Ask(''); ,At(22, 1); ,EraseLine; ,GetNumber(Num, Found); ,if not Found tum <> 1 then ,begin /At(10, 1); /P(':WT'); ,end; &until KBDNum = 1; &At(10, 1); &EraseLine; &if Tries = 1 then hen /Num := 0; )end; #end { AskNum }; procedure TypeIn(Txt: string); #begin &ErasePage; &P(Txt); &repeat )At(23, 1)Correct := Correct + 1; &P(':Q7A'); &Wait; &ErasePage; &Next := PQ8; #end { Q7 }; procedure Q8; #begin &if AnsQ5 ); )Ask(''); &until KBD = ''; #end { TypeIn }; procedure Q1; #begin &P(':Q1|:AGR'); &AskYN; &At(11, 1); &AnsQ1 := KB= 'NO' &then )begin ,Questions := Questions + 1; ,P(':Q8'); ,AskYN; ,At(6, 1); ,if KM('NO') then /Correct := Correct + 1D; &P(':EVAL'); &Wait; &ErasePage; &Next := PQ2; #end { Q1 }; procedure Q2; #begin &Questions := Questions + 1; &P; ,P(':EVAL'); ,Wait; ,ErasePage; )end; &Next := PQ9; #end { Q8 }; procedure Q9; #begin &Questions := Questions + (':Q2|:AGR'); &AskYN; &ErasePage; &if KM('NO') then )Correct := Correct + 1; &Next := PQ3; #end { Q2 }; procedure Q3; 1; &P(':Q9'); &AskYN; &At(6, 1); &if KM('NO') then )Correct := Correct + 1; &P(':Q9A'); &Wait; &ErasePage; &Next := PQ1 n ,Correct := Correct + 1; ,P(':Q15(1)C'); )end &else )P(':Q15(1)W'); &P(':Q15(1)'); &Wait; &ErasePage; & &if KM('2') estions + 1; &P(':Q20|:AGR'); &AskYN; &ErasePage; &if KM('NO') then )Correct := Correct + 1; &Next := PQ21; #end { Q20 };&then )begin ,Correct := Correct + 1; ,P(':Q15(2)C'); )end &else )P(':Q15(2)W'); &P(':Q15(2)'); &Wait; &ErasePage;  procedure Q21; #begin &P(':Q21'); &AskYN; &At(8, 1); &P(':Q21A'); &Wait; &ErasePage; &Next := PQ22; #end { Q21 }& &if KM('3') &then )begin ,Correct := Correct + 1; ,P(':Q15(3)C'); )end &else )P(':Q15(3)W'); &P(':Q15(3)'); &Wait; ; procedure Q22; #begin &Questions := Questions + 1; &P(':Q22|:AGR'); &AskYN; &At(11, 1); &if KM('NO') then )Correc&ErasePage; & &if KM('4') &then )begin ,Correct := Correct + 1; ,P(':Q15(4)C'); )end &else )P(':Q15(4)W'); &P(':Q15(4t := Correct + 1; &P(':EVAL'); &Wait; &ErasePage; &Next := PQ23; #end { Q22 }; procedure Q23; #begin &Questions := )'); &Wait; &ErasePage; &Next := PQ16; #end { Q15 }; procedure Q16; #begin &P(':Q16'); &AskYN; &At(7, 1); &if KM(Questions + 1; &P(':Q23'); &AskYN; &ErasePage; &AnsQ23 := KBD; &if KM('NO') then )Correct := Correct + 1; 'YES') &then )begin ,P(':UAY'); ,if ANSQ1 = 'YES' then /P(':TMT|:NL|:SE') ,else /P(':TMT|:ND|:SE'); )end &else )begin &Next := PQ24; #end { Q23 }; procedure Q24; #begin &Tries := 0; &Questions := Questions + 1; &P(':Q24'); &AskNum(KB,P(':UAN'); ,if AnsQ1 = 'NO' then /P(':TMT|:SDN|:SE') ,else /P(':TMT|:SD|:SE'); )end; &Wait; &ErasePage; &Next := PQ17;DNum, 2); &At(11, 1); &if KBDNUM = 1 &then )begin ,Correct := Correct + 1; ,P(':COR'); )end &else )P(':WR'); &P(':Q24A&then )begin ,Correct := Correct + 1; ,P(':COR'); )end &else )P(':Q12W'); &Wait; &ErasePage; &Next := PQ13 #end { Q12 #end { Q16 }; procedure Q17; #begin &Questions := Questions + 1; &P(':Q17|:AGR'); &AskYN; &ErasePage; &if KM('YES' }; procedure Q13; #begin &Tries := 0; &Questions := Questions + 1; &P(':Q13'); &AskNum(KBDNum, 4); &At(11, 1); &if) &then )begin ,P(':Q17Y'); ,Wait; ,ErasePage; ,Next := PQ19; )end &else )begin ,Correct := Correct + 1; ,Next := PQ1 KBDNum = 2 then )Correct := Correct + 1; &P(':Q13A'); &Wait; &ErasePage; &Next := PQ14; #end { Q13 }; procedure Q14; 8; )end; #end { Q17 }; procedure Q18; #begin &Questions := Questions + 1; &P(':Q18'); &AskYN; &ErasePage;  #begin &Tries := 0; &Questions := Questions + 2; &P(':Q14'); &AskNum(KBDNum, 5); &ErasePage; &if (KBDNum = 3) or (KBDNu&if KM('NO') &then )begin ,Correct := Correct + 1; ,P(':NT15'); ,Wait; ,ErasePage; )end; &Next := PQ19; #end { Q18 }; m = 4) then )Correct := Correct + 1; &P(':Q14A'); &Wait; &ErasePage; &Next := PQ15; #end { Q14 }; procedure Q15; #b procedure Q19; #begin &Questions := Questions + 1; &P(':Q19|:AGR'); &AskYN; &At(11, 1); &if KM('NO') then )Correct egin &Tries := 0; &Questions := Questions + 4; &P(':Q15'); &At(23, 1); &ASK(''); &ErasePage; & &if KM('1') &then )begi:= Correct + 1; &P(':Q19A'); &Wait; &ErasePage; &Next := PQ20; #end { Q19 }; procedure Q20; #begin &Questions := Qu e /if AnsQ23 = 'YES' then 2P(':WRQ25'); )end; &P(':CS22'); &Wait; &ErasePage; &Next := PQ26; #end { Q25 }; procedure':Q28'); &AskYN; &if KM('NO') &then )begin ,ErasePage; ,P(':Q28A'); ,AskNum(KBDNum, 2); ,At(10, 1); ,if KBDNum = 2 ,th Q26; #begin &Questions := Questions + 1; &P(':Q26'); &AskNum(KBDNum, 3); &At(14, 1); &if KBDNum = 3 then )Correct := Cen /begin 2P(':Q28A2'); 2TypeIn(':Q28A2'); 2P(':Q28A2A'); /end ,else /P(':Q28A1'); )end &else )begin ,At(8, 1); ,P('orrect + 1; &P(':Q26A'); &Wait; &ErasePage; &Next := PQ27; #end { Q26 }; procedure Q27; #begin &Tries := 0; :Q28A1'); )end; &Wait; &ErasePage; &Next := PQ29; #end { Q28 }; procedure Q29; #begin &Tries := 0; &Questions := Q&Questions := Questions + 1; &P(':Q27'); &AskNum(KBDNum, 2); &At(9, 1); &if KBDNum = 2 &then )begin ,Correct := Correct uestions + 1; &P(':Q29'); & &repeat )AskNum(KBDNum, 3); )At(11, 1); )Tries := Tries + 1; )if KBDNum = 3 then ,P(':Q29A3'+ 1; ,P(':COR'); )end &else )P(':WR'); &P(':Q27A1'); &Wait; &ErasePage; & &P(':Q27A|:AGR'); &AskYN; &ErasePage; & &); &until KBDNum <> 3; & &ErasePage; &if Tries = 1 then )Correct := Correct + 1; &P(':N24'); &AskYN; &ErasePage; &if KMQuestions := Questions + 1; &P(':Q27B'); &AskYN; &At(8, 1); &if KM('YES') &then )begin ,Correct := Correct + 1; ,P(':COR('YES') then )begin ,P(':N26|:MOR'); ,AskYN; ,if KM('YES') ,then /begin 2At(8, 1); 2P(':N26A'); 2Wait; 2ErasePage; '); )end &else )P(':PWR'); &P(':Q27B1'); &Wait; &ErasePage; & &Questions := Questions + 1; &P(':Q27C'); &AskYN; &At(1/end ,else /ErasePage; )end; ) &P(':Q29A'); &AskYN; &ErasePage; &if KM('YES') then )begin ,P(':Q29AY'); ,Wait; ,Era1, 1); &if KM('YES') &then )begin ,Correct := Correct + 1; ,P(':COR'); )end &else )P(':WR'); &Wait; &ErasePage; & &TsePage; )end; &Next := PQ30; #end { Q29 }; procedure Q30; #begin &Questions := Questions + 1; &P(':Q30|:AGR'); &Askries := 0; &P(':Q27D'); &Questions := Questions + 1; &repeat )AskNum(KBDNum, 25); )At(8, 1); )Tries := Tries + 1; )if (KBYN; &At(11, 1); &if KM('YES') then )Correct := Correct + 1; &P(':Q30A'); &Wait; &ErasePage; &Next := PQ31; #end { Q30 };Dnum = 10) or (KBDNum = 12) or (KBDnum = 16) or (KBDNum = 18) )then ,begin /P(':Q27NB'); /Wait; /ErasePage; ,end )else , procedure Q31; #begin &Questions := Questions + 1; &P(':Q31|:AGR'); &AskYN; &At(7, 1); &if KM('NO') then )Correct '); &Wait; &ErasePage; &Next := PQ25; #end { Q24 }; procedure Q25; #begin &Questions := Questions + 1; &P(':Q25'); if KBDNum <> 19 ,then /begin 2P(':N3'); 2AskYN; 2if KM('YES') then 5TypeIn(':Q27D'); /end; &AskYN; &At(11, 1); &if KM('YES') &then )begin ,P(':PWR'); ,if AnsQ23 = 'YES' then /P(':WRQ25') ,else /if AnsQ23 = 'NO&until (Tries > 3) or (KBDNum = 19); & &if KBDNum = 19 &then )begin ,if Tries = 1 then /Correct := Correct + 1; ,P(':COR' then 2P(':CORQ25'); )end &else )begin ,P(':PCOR'); ,Correct := Correct + 1; ,if AnsQ23 = 'NO' then /P(':CORQ25') ,els|:Q2719'); )end &else )P(':AB|:Q2719'); &Wait; &ErasePage; &Next := PQ28; #end { Q27 }; procedure Q28; #begin &P( := Correct + 1; &P(':Q31A'); &Wait; &ErasePage; &Next := PQ32; #end { Q31 }; procedure Q32; #begin &Tries := 0; &QP(':BYE'); #Wait; #ErasePage;  end { CaseAnalysis }.  uestions := Questions + 1; &P(':Q32'); &AskNum(KBDNum, 2); &At(8, 1); &if KBDNum = 2 &then )begin ,Correct := Correct + 1; ,P(':COR'); )end &else )begin ,P(':WR'); )end; &P(':Q32A'); &Wait; &ErasePage; &Next := LAST; #end { Q32 }; begin { Cases } #Start; #AnsQ1 := ''; #AnsQ5 := ''; #AnsQ23 := ''; #Questions := 0; #Correct := 0; #Scoring := False; #Tfile('CASET'); #ErasePage; #P(':I1'); #At(23, 1); #Ask(''); #GetNumber(KBDNum, Found); #if not Found #then &begin )KBDNum := 1; )ErasePage; )P(':I2'); )Wait; )ErasePage; )P(':HO'); )AskYN; )if KM('NO') then ,begin /At(8, 1); /P(':HO1'); /Wait; /ErasePage; ,end )else ,ErasePage; , )P(':WANTSCO'); )AskYN; )Scoring := KM('YES'); &end; #Next := PQ1; #for I := 1 to ( KBDNum - 1 ) do &Next := Succ( Next ); #ErasePage; # # #repeat &case Next of )PQ1: ,Q1; )PQ2: ,Q2; )PQ) CASEANAL 3: ,Q3; )PQ4: ,Q4; )PQ5: ,Q5; )PQ6: ,Q6; )PQ7: ,Q7; )PQ8: ,Q8; )PQ9: ,Q9; )PQ10: ,Q10; )PQ11: ,Q11; )PQ12: ,Q "հ,հ հƉ! )4:,P 12; )PQ13: ,Q13; )PQ14: ,Q14; )PQ15: ,Q15; )PQ16: ,Q16; )PQ17: ,Q17; )PQ18: ,Q18; )PQ19: ,Q19; )PQ20: ,Q20; )PQH  h @, T V"v^2`n !!!"*"N""<#^###$,$J$$J&&21: ,Q21; )PQ22: ,Q22; )PQ23: ,Q23; )PQ24: ,Q24; )PQ25: ,Q25; )PQ26: ,Q26; )PQ27: ,Q27; )PQ28: ,Q28; )PQ29: ,Q2'.'V'():)Oկ'Fկ6GկEHxկTIqկcJjկrKcկL\կMUկNNկOG@9; )PQ30: ,Q30; )PQ31: ,Q31; )PQ32: ,Q32; &end; #until Next = Last; #if Scoring #then &begin )P('/'); ڪPՀՀՀ"ՀՀՀՁRNՁWɫ"Ձէ)Write('You answered ', Correct, ' questions correctly. '); )WriteLn('(', 100*Correct div Questions, '% correct)'); &end; #ՁՂՂՂ"6ՂՂՃ0  ՃnɡՃ~NՃáՃՄ ՉR"ڪPՉՉ̭RڪPՊ)/Պ8-ՊF /.ՊiՊm.Պ.-/Պ.-Պ ՙ:ՙ4!۪Pՙڦ ? NOT FOUND ?ՙl٧kɍ.՚՚%՚7՚L՚Ul ՚gk՚s՚z՚՚Պ/ՊŭHXdՋTՋfՋuۥ ݓOՋՋՋڹ*Ջڥ*ՌՌ02&7՚՚٧k!՚՚՚kk՛՛!՛+՛17R ՜h՜AŶ ˄ ՜jՌSՌaՌog ~ڪPՌՌRڪPՍ5ՍZRڪPՍՍɭR՜|š1՜՜՜՜՜ڶ՜⧋ih՜|$՝" ݞՄGՄYՄmՄ~ՄՄƥقޞՄނɡՅ'ނՅHՅQՅgՅتPՍR,٪PتPՎ4ՎՎՎՎݥšՎՏՏՏݥړ'ՏIՏMՏ^ݛՅقՅ ՆġՆgՆ3ՆC"Ն]šՆtڂ݂ڕՆڂ݂ڕՆšՆ (ՏՏݛ+á Տ"Տݛ-áՏՏՏՐՐՐ"ݥړLՐMՐRݛ'ՐxՐ~ Շ݂Շ(ՇMՇQ޿ՇmՇl  zՀšՀՀՀ"ՀšՁՁՁ "Ձ\ݛ0ՐՐՐʹՐՐՐՐۏՑ i ՑgkȡqՑՑgՑΧgkɥkg ՁAaՁՁܭ8Ղ9ۦՂTZՂlՂvՂ|Ղš#ՂՂPՂ"ggՒ@ՒO饊kgՒggՒՒՒՒ˥ՒՒ߭" Փ 饊kՓ#ՂՂՃ۪PՃۦPՃՃ$Ճ+Tx ՃئPՃ1ՄɡՄՄڀՄ,-PՄ:ՄAئՄئ-32768PՄgՓ-"Փnrr#FCSBՓrrrՓĥrڊՓ@PتPՔ+Ք'/Մ-3-3ġxՄՄ/00Մ00-ń1ՅB@Յ^Յl1Յ|44P4 Q4PՅؾ0Յ00ˡ Յ/Յ/+++P+.DIRT+ՔŞ"˸]Քݶ]++P+.TEXTU+]ՕvتP+ƁWՕ/Օ9ʁ] /Յ--ՅՆ 2Ն/ 3ؾ3PՆy2Ն33P3Ǡ3!ՕḰ^Ɓ^#5:Ɓ^SƁ^Օdʁ].Օw not found!TՕՕ^Օ+ 5ՕՕڥPՆ33P3Ǡ3PՆŭ z Շسٳ&Շ1Շ:ՇLiؕhՇd'Շu^+Օ^Ֆ+Ֆ"Ֆ-Ֆ4+N ٪PՖ^.Ֆ秀^-Ֆ՗0 Щ՗%/Bad AT parametersՇz ՇՇѭ Ո Ո Ո  Ո`jՈrP4/4ȡ"՗T0////՗}՗.-^,՗,^4՗04 ՗,^-"՘04iՈgՈ Ոr؀Ոۥl Ո ՈRڪPՉ%Չ>R"ڪPՉo ՘%,^.՘A՘S-.ɍ՘t$՘՘,^4՘44՘՘˭d ՙ]ՙmꓡՙ դ_"դj2 B+դ դ Please press RETURN to continue.*դϭ":,Ղ/QUITՂՂ ՂՂՃՏD:ՏՏ˦ :Q12|:AGR"Տ-Տ ՏYESՐՐՐ,:COR"Ր; ՐF:Q12W"ՐW,Րd Րl i.)Ճ* Ճ8*ՃEYNNՃiՃn ՃType YES or NO please!Ճ*Ճ Ճ ՃƹՃYr;ՐՐՐЦ:Q13"Ր .Ր  ՑáՑՑ.:Q13A"Ց?,ՑL ՑT Ցc`<ՑՑՑ:Ճ᥊YES ՄNOՄ -Մd Մr*Մ٥ՄՄՄōՄՄ Մ ՅType a nQ14"Ց˥ .Ց ՑÍՒՒ):Q14A"Ւ:,ՒG ՒOՒ^b=ՒՒՒ:Q15"Ւ ՒЦ*Ւ Ւumber from 1 to   please!Յ7*ՅA ՅU Յb٥ՅtՅՅՅe .ت1ՓՓ Փ:Q15(1)C"Փ2Փ=:Q15(1)W"ՓN:Q15(1)"Փa,Փn Փw2ՓՓՓ:Q15(2)C"ՓՓʦ:Q15PՅ Յ"ՅՅ Ն*ՆՆ% R </ՆO:Q1|:AGR"Նd-Նj  Նz PՆ:EVAL"Ն,Ն ՆՆ(2)W"Փۦ:Q15(2)"Փ,Փ Ք3ՔՔ(Ք<:Q15(3)C"ՔOՔZ:Q15(3)W"Քk:Q15(3)"Ք~,Ք Ք4ՔՔN0ՆՇ:Q2|:AGR"Շ-Շ" Շ(NOՇ@ՇWՇeH1ՇՇ:Q3"Շ-Շ ՇͦNOՔɦ:Q15(4)C"ՔܹՔ:Q15(4)W"Ք:Q15(4)"Օ ,Օ Օ Օ/~>ՕY:Q16"Օj-Օp Օ|YESIՕՕ՝Mh՝_՝sF%՝՝ѧih՝՝LՇՈ Ո:COR"Ո, Ո7:WR"ՈC:Q3A"ՈS,Ո` ՈhՈvx2ՈՈ:Q4|:AGR"Ո-Ո ՈNO&՞ؾš՞/՞3 ՞K/á՞e՞o՞wih՞՞A՞՞՞ؾɡՈՉ:Q4A"Չ,Չ, Չ4ՉB`3ՉrՉ:Q5|:AGR"Չ-Չ  ՉNOՉՉߥ3PՉ:՞՞hؾۂ՟!ɡ՟=$՟Iá՟g&՟u%՟|՟՟K #ՠ&ՠ6ꓡՠMš ՠh:ՠ:EVAL"Չ,Պ ՊՊj4ՊOՊe:Q6"Պu-Պ{ ՊNOՊՊ:Q6A"Պ,Պ ՊՊ4(ՠƀՠʀՠՠՠ(gՠաšNա*ˡBա8ա@ Äաuա  աZ5ՋՋ$Ջ::Q7"ՋKՋT .ՋhՋ{ˡՋՋ  Ջ:WT"ՋՋáՋ  Ջ ՋáՌ Ռ:Q7A"ա#աաաѹաعKաաա - labeled text not found.բ'բ.Q 'ت-,Ռ: ՌBՌPu 6Ռy3NOOՌՌՌ:Q8"Ռ-Ռ Ռ٦NOՌՍ:EVAL"Ս,Ս# Ս*ՍբPƀ !բlƀ:á բƀ'բƀ#բ2 B"تգ"գ"գ-j8գD̀̀ʀ2Ս@n7ՍpՍ:Q9"Ս-Ս ՍNOՍՍԦ:Q9A"Ս,Ս Ս ՎZ8Վ9ՎO:ʀȡ!գcʀʀʀ̀գkգgգ)գL *تդդդ& ń̀դMʀQ10"Վ`-Վm ՎsYES Վ ՎՎՎ ՎՎ٭T9Տ Տ!:Q11"Տ2-Տ? ՏENOՏ]Տt  :AGR"ՙ-ՙ ՙNOՙՙՙJC՚!:Q21"՚2-՚8 ՚C:Q21A"՚T,՚a ՚i՚x@Dէ& է,áէEէY:N24"էj-էw է}YESSէէ :N26|:MOR"է-էYES%էէ էݦ:N26A"է,է ը՚՚ :Q22|:AGR"՚-՚  ՚NO՛՛:EVAL"՛&,՛3 ՛;՛JbE՛|՛:Q23"՛-՛ը ըը':Q29A"ը9-ըF ըLYESըcըg:Q29AY"ըy,ը ըըը 0Lըը :Q30|:AGR"թ ՛\P՛ǦNO՛՜՜NF՜C՜U՜k:Q24"՜} .՜  ՜á՜՜՜Ӧ:COR"՜-թ  թYESթ.թB:Q30A"թS,թ` թhթwbMթթ :Q31|:AGR"թ-թ թNOթ ՜:WR"՜:Q24A"՝ ,՝ ՝՝.~G՝`՝v:Q25"՝-՝  ՝YESK՝՝:PWR"՝ť\YESժ:Q31A"ժ$,ժ1 ժ9ժHbNժvժժ:Q32"ժ .ժ ժáժժի:COR"իի#ի՝ݦ:WRQ25"՝\NO՞ :CORQ25"՞R՞+՞/:PCOR"՞C՞X\NO՞o:CORQ25"՞\YES ՞:WRQ25':WR"ի5ի::Q32A"իK,իX ի` իoOƉƊիի Pի3Pի\PիիիլCASET"՞՞:CS22"՞,՞ ՞՞H՟՟1:Q26"՟C .՟T ՟aá՟{՟:Q26A"՟,՟ ՟լ լ":I1"լ/ լ=*լN լcլ|լ լ լ:I2"լ,լ լ:HO"լ-լӦNO$լլ լ:HO1ĭZI՟ՠ ՠ!:Q27"ՠ3 .ՠD  ՠPáՠjՠtՠ:COR"ՠ ՠ:WR"ՠ:Q27A1"ՠ,ՠ ՠզ :"խ ,խ խխ0 խ8:WANTSCO"խM-խXYESխlխtխ̋tʋtȡխխ խխ٧խ0խQ27A|:AGR"ՠ-ՠ ա ա:Q27B"ա1-ա7 աCYESա\աfաz:COR"ա ա:PWR"ա:Q27B1"ա,ա 1ծ2ծ3ծ!4ծ.5ծ;6ծH7ծU8ծd9ծs:ծ;ծ<ծ=ծ>ծ?ծ@ծAծBծաա:Q27C"ա-ա  բ YESբ$բ.բB:COR"բQ բ\:WR"բk,բx բբ:Q27D"բբբȥ Cկ DկEկ'Fկ6GկEHxկTIqկcJjկrKcկL\կMUկNNկOG@:UAY"Օ YESՕ :TMT|:NL|:SE"Օ٦ :TMT|:ND|:SE"ՕGՕՖ:UAN"Ֆ NOՖ' :TMT|:SDN|:SE"ՖC :TMT|:SD.բ բբ ÍÍÍգLգP:Q27NB"գb,գo գv7գˡ/գգ:N3"գ-գYES գЦ:Q27D/գդ|:SE"ՖZՖb,Ֆo ՖwՖ ?ՖՖΦ :Q17|:AGR"Ֆ-Ֆ ՖYES%՗՗:Q17Y"՗%,՗2 ՗:՗IÍդ-á*դHդMáդfդz :COR|:Q2719"դդ :AB|:Q2719"դ,դ դդխZJդ:Q28"ե-եX՗b՗y՗՗v@՗՗צ:Q18"՗-՗ ՘NO$՘՘&՘::NT15"՘K,՘X ՘_՘g՘vNOmե.ե: ե?:Q28A"եR .եc  եpá0եե:Q28A2"ե:Q28A2/ե:Q28A2A"եù եΦ:Q28A1"ե߹եե `A՘՘ :Q19|:AGR"՘-՘  ՘NO՘ՙ:Q19A"ՙ$,ՙ1 ՙ9ՙHbBՙzՙ :Q20|ե:Q28A1"զզ,զ$ զ,զ;Kզiզ{զ:Q29"զզ .զ  զզá զ:Q29A3"է ˡ G(d  % correct)հ|հ:BYE"հ,հ հƉ! )4:,P PROMPT I PRINTC N S GOAHEAD WAIT TRAP ASKYN ASKNUM MAX H  h @, T V"v^2`n !!!"*"N""<#^###$,$J$$J&& TYPEIN TXT Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 '.'V'():)Oկ'Fկ6GկEHxկTIqկcJjկrKcկL\կMUկNNկOG@Q9 Q10 !Q11 "Q12 #Q13 $Q14 %Q15 &Q16 'Q17 (Q18 )Q19 RANOPEN FNAME RANREAD B SEEK BLK BYT GETRANLIP L Z *Q20 +Q21 ,Q22 -Q23 .Q24 /Q25 0Q26 1Q27 2Q28 3Q29 4Q30 SP EX BS MIN I J MAX I J UPPERCASCHAR 5Q31 6Q32 7CASEANALI CASES j TRIES CORRECT SCORING KBDNUM LABCOUNTACTENEXTSTR P NUM I WIDTH TENS /J .LEFT 2CH 0SP MAXLL i RANEOF RANDOMSEr KBD KBDCOPY k ANSQ1 NEXT RESBLK TEMP RESLINE k RESLAB POT -SUPPRESS1AT Y X ERASELINERASEPAGSTART HI LO KM l ANSQ5 3ANSQ23 \FOUND SPCOUNT ROOM h CRACKCOLg QUESTIONBUFPTR S PM S DM S EM S P .COL -OK /MANYMATCCOMPTYPEFOUND PMM S DMM S KMM S PERFORM S REC S1 ,S2 GETNUMBEI DONE SIGN TOT CRACK START RESTORE RAN RANGE OPENUP FN TFILE FN ERR ]SEEKLABELAB I /LOWEAAAAAAAAAB &ACORR AGR BYE FCOR CORQ25 -CS22 -DONEQ EVAL )HO R .UPPER -PROBE ,INFILE LOAD LAB LINE NOFITS FITS JUSTFITSPRTRAW HO1 I1 I2 MOR :N24 3HN26 4UN26A :N3 mN3A oNAME ND ~ytoje`[VQLկ áկկկ/"հ You answered   questions correctly. հBOL NEWROOM EOL EOR PRLAB S FOUND P NAME TEMP ASK  )D); 0end ,else 0begin 4Dest := From; 4From := ''; 0end; (end;  end { NextStr };  procedure Num(I, Width: integer ; var Str : string); var $SP : string; $Tens, J, Pot: integer; $Ch: Char; $Left, Suppressing: boolean; begin $Str := '';   NL NOTREL dNT15 %SOK RPCOR PWR Q1 HQ10 Q11 .Q12 Q12W ~Q13 Q13A Q14 QQ14A cQ15 dQ15(1) kQ15(1)C Q15(1)W 4Q15(2) Q15(2)C yQ15(2)W Q15(3) Q15(3)C 3Q15(3)W eQ15(4) uQ15(4)C Q15(4)W 5Q16 Q17 >Q17Y "ZQ18  $Q19 '\Q19A (Q2 zQ20 (MQ21 )Q21A )Q22 *$Q23 *Q24 +Q24A ,Q25 ,Q26 -Q26A .\Q27 /Q2719 @Q27A fQ27A1 0JQ27B Q27B1 #Q27C Q27D Q27NB Q28 0Q28A 1IQ28A1 1EQ28A2 2Q28A2A 2XQ29 2Q29A <Q29A3 3VQ29AY <Q3  { ,Some useful CAI routines -( Inspired by MIL ) +See MIL.DOC for information  } function Min(I, J : integer) : integer;  cQ30 >Q30A ?fQ31 @Q31A AQ32 B7Q32A D~Q33 DQ34 EQ35 FQ3A begin $if I > J $then (Min := J $else (Min := I; end { Min }; function Max(I, J : integer) : integer; begin $if I > J Q4 Q4A mQ5 Q6 Q6A <Q7 IQ7A :Q8 TQ9 !Q9A SD $then (Max := I $else (Max := J; end { Max }; function UpperCase(Character: Char) : Char; begin $if Character in ['a'.SDN SE STUDENT ATMT TYP TTYPE |TYPEBYE mUAN UAY }WANTSCO NWR .'z'] $then (UpperCase := Chr( Ord(Character) + Ord('A') - Ord('a') ) $else (UpperCase := Character; end { UpperCase };  WRQ25 ,WT 8function NextStr(var From, Dest : string) : boolean; var $P : integer;  begin $if From = '' $then (NextStr := False $elO^se (begin ,NextStr := True; ,P := Pos('|', From); ,if P > 0 ,then 0begin 4Dest := Copy(From, 1, P-1); 4Delete(From, 1, P!  procedure ErasePage;  begin %Page(Output); %At(1,1);  end { ErasePage }; procedure Start; var $Hi, $Lo : integer; $re Rec(S1, S2 : string); begin end { Rec }; procedure GetNumber(var N: integer; var Found: boolean); var $Done: boolean;  begin $Cases := False; $MaxLL := 80; $CrackCol := 0; $Time( Hi, Lo ); $RandomSeed := Abs(Lo) mod 500 { Set random seed };$I, Tot, Sign: integer; $begin (Found := False; (Sign := + 1; (Tot := 0; " (if Length(KBD) > 0 (then ,begin 0Done := F $ResLab := ''; $ErasePage; end { Start }; function KM(S : string): boolean; begin $KM := Pos(S, KBD) > 0 ; end { KM }; alse; 0I := 0; 0while (I < Length(KBD)) and not Done do 0begin 4I := I + 1; 4Done := KBD[I] in ['0' .. '9', '-', '+'];  function PM(S : string): boolean; begin $PM := Pos(S, KBD) = 1 ; end { PM }; function DM(S : string) : boolean ; begin (D0end; " 0if KBD[I] = '+' 0then 4I := I + 1 0else 4if KBD[I] = '-' 4then 8begin  '') $then { Hrue; $Col := 1; $while NextStr(S, Temp) and OK do (begin ,P := Pos(Temp, KBD); ,OK := P >= Col; ,Col := P + Length(Temp) ;ardware special case } (Str := '-32768' $else (begin ,Tens := 10000; ,for Pot := 4 downto 0 do 0begin 4Ch := Chr(I div Te (end; $EM := OK; end { EM }; function ManyMatch(var Place : integer ; var S : string ; 3CompType : MatchType) : boolean ; ns + Ord('0')); 4if (Ch = '0') and (Pot > 0) and Suppressing 4then 8{ Surpress 0's } 4else { Format the char } 8begin  '0' then @I := I mod Tens 8end; 4Tens :=,Place := Place + 1; ,case CompType of 0KMMatch : Found := KM(Temp); 0DMMatch : Found := DM(Temp); 0PMMatch : Found := PM(T Tens div 10; 0end; (end;  $Left := Width < 0; $Sp := Copy(' ', /1 , Width emp); ,end { case }; (end;  $ManyMatch := Found;  end { ManyMatch };    function PMM(var Place : integer ; S : string- Length(str) ); $if Left $then (Str := Concat(Sp, Str) $else (Str := Concat(Str, Sp);  end { Num }; $ $ $ procedure At) : boolean; begin $PMM := ManyMatch(place, S, PMMatch);  end { PMM };  function DMM(var Place : integer ; S : string) : b(Y, X : integer); begin $if (X in [1..80]) and (Y in [1..24]) $then (begin ,GotoXY(X-1, Y-1); ,Room := MaxLL - X + 1; (endoolean; begin $DMM := ManyMatch(Place, S, DMMatch); end { DMM }; function KMM(var Place : integer ; S : string) : boolean; b $else (WriteLn('Bad AT parameters'); end { At }; procedure EraseLine;  begin $Write( Chr(29) );  end { EraseLine }; egin $KMM := ManyMatch(Place, S, KMMatch); end { KMM }; procedure Perform(S: string);  begin  end { Perform }; procedu" gin $KBD := KBDCopy; $CrackCol := 1;  end { Restore };   function Ran( Range: integer) : integer;  begin oolean; $begin (InFile := RanEOF; (if not RanEOF then ,if Length(Str) > 0 then 0InFile := Str[1] <> ':' ; $end { InFile };$RandomSeed := RandomSeed*49.638429+31.41597; $RandomSeed := RandomSeed-Trunc(RandomSeed); $Ran := Trunc(RandomSeed*Range) +  begin $Str := '? NOT FOUND ?';  $if (Lab <> ResLab) or (Line < ResLine) $then (begin ,SeekLabel(Lab, Found); ,if Foun1;  end { Ran };  procedure Tfile(FN : string) ; var $Fil : file of DirRecord ; $Err : boolean; $ $procedure OpenUp(d then 0begin 4ResLab := Lab; 4ResLine := 0; 0end; (end $else (Found := True;  $if Found $then (begin  ,while (LiFN : string); $begin (Close(Fil) ; ({$I-} (Reset(Fil, Concat(FN, '.DIR')) ; ({$I+} (Err := IOResult <> 0; (Err := Err or ne > ResLine) and InFile do 0begin 4GetRanLine(Str); 4ResLine := ResLine + 1; 0end;  ,Found := InFile; (end;  not RanOpen(Concat(FN, '.TEXT')); $end { OpenUp }; # # begin { Tfile } $OpenUp(FN); $if Err then (OpenUp(Concat('#5:', FN) end { Load };  procedure P(Name: LongString); var $Temp : LongString; #procedure PrtRaw(var S : LongString); #var ); $if Err then (WriteLn(FN, ' not found!') $else (begin ,LabCount := 0 ; ( ,while not EOF(Fil) do 0begin 4LabelDict [  'BOL, EOL, NewRoom: integer; 'procedure NoFits; 'begin +EOL := BOL + Room - 1; + +{Look for end of last word} +while (LabCount ] := Fil^ ; 4LabCount := LabCount + 1 ; 4Get(Fil) ; 0end ; (end;  end { Tfile }; procedure SeekLabel( Lab : stEOL > BOL) and (S[EOL] <> ' ') do /EOL := EOL - 1;  +if EOL > BOL +then /begin 3Write( Copy(S, BOL, EOL-BOL) ); 3BOL := ring; var Found : boolean ) ; var $Lower, Upper, Probe : LabelRange ; $I : integer; $InLab : IDK ; begin $Lower := 1 ; EOL + 1; /end; +WriteLn; +Room := MaxLL; 'end { NoFits }; &procedure Fits; &begin *Write( Copy(S, BOL, Length(S) - BOL++ Ord(KBD [I]) - Ord('0');  LabelName ,then 0Lower := Probe + 1 ,else 0Found := True ; $unChS ) do 1CrackCol := Succ( CrackCol );  -Found := True; -KBD := Copy(KBDCopy, Start, CrackCol - Start + 1); 2CrackCol := til Found or (Upper < Lower) ; $if Found then (begin ,with LabelDict[Probe].Place do 0Seek(Block, Byte) ; (end; end { SeekSucc( CrackCol ); )end %else )begin -Found := False; -KBD := ''; )end;  end { Crack };     procedure Restore;  beLabel }; procedure Load(Lab : string ; var Str : LongString ; Line : integer /; var Found : boolean); $function InFile : b# S := Concat(S, ' '); -if S[1] = '/' then 1begin 5WriteLn; 5Room := MaxLL; 1end;  -if S[1] in ['/', ' ', '&'] -then 1BOlease press RETURN to continue.');  end { Wait };  L := 2 -else 1BOL := 1;  -while BOL < Length(S) do -begin 1NewRoom := Room - Length(S) + BOL - 1; 1if NewRoom < 0 1then 5NoFits 1else 5if NewRoom = 0 5then 9JustFits 5else 9Fits; -end; )end;  end { PrtRaw };  procedure PrLab(var Name : string);   var $S : LongString ; $Found : boolean;   $function EOR: boolean; $begin (EOR := RanEOF; (if not RanEOF then ,if Length(S) > 0 then 0EOR := (S[1] = ':'); $end { EOR };      begin { PrLab } $SeekLabel(Name, Found); $if Found $then (begin ,GetRanLine(S); ,while not EOR do ,begin 0if Length(S) > 0 0then 4if S[1] <> '*' then 8beg3: ,Q3; )PQ4: ,Q4; )PQ5: ,Q5; )PQ6: ,Q6; )PQ7: ,Q7; )PQ8: ,Q8; )PQ9: ,Q9; )PQ10: ,Q10; )PQ11: ,Q11; )PQ12: ,Qin  1) and (S[Length(S)] = ' ') do @Delete(S, Length(S), 1);  0 %then )begin - NextStr(S, Temp) and (N>0); $until not GoAhead;  $P(Temp); end { PrintC }; procedure Wait; begin $At(24, 10); $Ask('P$  ݞՄGՄYՄmՄ~ՄՄƥقޞՄނɡՅ'ނՅHՅQՅgՅتPՍR,٪PتPՎ4ՎՎՎՎݥšՎՏՏՏݥړ'ՏIՏMՏ^ݛՅقՅ ՆġՆgՆ3ՆC"Ն]šՆtڂ݂ڕՆڂ݂ڕՆšՆ Շ݂Շ(ՇMՇQ޿ՇmՇl  zՀšՀՀՀ"ՀšՁՁՁ "Ձ\ ՁAaՁՁܭ8Ղ9ۦՂTZՂlՂvՂ|Ղš#ՂՂPՂՂՂՃ۪PՃۦPՃՃ$Ճ+Tx ՃئPՃ1ՄɡՄՄڀՄ,-PՄ:ՄAئՄئ-32768PՄ'/Մ-3-3ġxՄՄ/00Մ00-ń1ՅB@Յ^Յl1Յ|44P4 Q4PՅؾ0Յ00ˡ Յ/Յ/ /Յ--ՅՆ 2Ն/ 3ؾ3PՆy2Ն33P3Ǡ3) CASEANAL PՆ33P3Ǡ3PՆŭ z Շسٳ&Շ1Շ:ՇLiؕhՇd'Շu "հ,հ հƉ! )4:,P Bad AT parametersՇz ՇՇѭ Ո Ո Ո  Ո`jՈrPH  h @, T V"v^2`n !!!"*"N""<#^###$,$J$$J&&iՈgՈ Ոr؀Ոۥl Ո ՈRڪPՉ%Չ>R"ڪPՉo'.'V'():)Oկ'Fկ6GկEHxկTIqկcJjկrKcկL\կMUկNNկOG@ՉR"ڪPՉՉ̭RڪPՊ)/Պ8-ՊF /.ՊiՊm.Պ.-/Պ.-ՊڪPՀՀՀ"ՀՀՀՁRNՁWɫ"ՁէՊ/ՊŭHXdՋTՋfՋuۥ ݓOՋՋՋڹ*Ջڥ*ՌՌ02&ՁՂՂՂ"6ՂՂՃ0  ՃnɡՃ~NՃáՃՄՌSՌaՌog ~ڪPՌՌRڪPՍ5ՍZRڪPՍՍɭR%  ՙ:ՙ4!۪Pՙڦ ? NOT FOUND ?ՙl٧kɍ.՚՚%՚7՚L՚Ul ՚gk՚s՚z՚՚umber from 1 to   please!Յ7*ՅA ՅU Յb٥ՅtՅՅՅe .ت7՚՚٧k!՚՚՚kk՛՛!՛+՛17R ՜h՜AŶ ˄ ՜jPՅ Յ"ՅՅ Ն*ՆՆ% R </ՆO:Q1|:AGR"Նd-Նj  Նz PՆ:EVAL"Ն,Ն ՆՆ՜|š1՜՜՜՜՜ڶ՜⧋ih՜|$՝"N0ՆՇ:Q2|:AGR"Շ-Շ" Շ(NOՇ@ՇWՇeH1ՇՇ:Q3"Շ-Շ ՇͦNO՝Mh՝_՝sF%՝՝ѧih՝՝LՇՈ Ո:COR"Ո, Ո7:WR"ՈC:Q3A"ՈS,Ո` ՈhՈvx2ՈՈ:Q4|:AGR"Ո-Ո ՈNO(ՏՏݛ+á Տ"Տݛ-áՏՏՏՐՐՐ"ݥړLՐMՐRݛ'ՐxՐ~ &՞ؾš՞/՞3 ՞K/á՞e՞o՞wih՞՞A՞՞՞ؾɡݛ0ՐՐՐʹՐՐՐՐۏՑ i ՑgkȡqՑՑgՑΧgkɥkg:՞՞hؾۂ՟!ɡ՟=$՟Iá՟g&՟u%՟|՟՟K #ՠ&ՠ6ꓡՠMš ՠh:ՠ"ggՒ@ՒO饊kgՒggՒՒՒՒ˥ՒՒ߭" Փ 饊kՓ#4(ՠƀՠʀՠՠՠ(gՠաšNա*ˡBա8ա@ Äաuա  աgՓ-"Փnrr#FCSBՓrrrՓĥrڊՓ@PتPՔ+Քա#աաաѹաعKաաա - labeled text not found.բ'բ.Q 'ت+++P+.DIRT+ՔŞ"˸]Քݶ]++P+.TEXTU+]ՕvتP+ƁWՕ/Օ9ʁ]բPƀ !բlƀ:á բƀ'բƀ#բ2 B"تգ"գ"գ-j8գD̀̀ʀ!ՕḰ^Ɓ^#5:Ɓ^SƁ^Օdʁ].Օw not found!TՕՕ^Օ+ 5ՕՕڥʀȡ!գcʀʀʀ̀գkգgգ)գL *تդդդ& ń̀դMʀ^+Օ^Ֆ+Ֆ"Ֆ-Ֆ4+N ٪PՖ^.Ֆ秀^-Ֆ՗0 Щ՗%/դ_"դj2 B+դ դ Please press RETURN to continue.*դϭ":,Ղ/QUITՂՂ ՂՂՃ4/4ȡ"՗T0////՗}՗.-^,՗,^4՗04 ՗,^-"՘04i.)Ճ* Ճ8*ՃEYNNՃiՃn ՃType YES or NO please!Ճ*Ճ Ճ ՃƹՃY ՘%,^.՘A՘S-.ɍ՘t$՘՘,^4՘44՘՘˭d ՙ]ՙmꓡՙՃ᥊YES ՄNOՄ -Մd Մr*Մ٥ՄՄՄōՄՄ Մ ՅType a n& ՏD:ՏՏ˦ :Q12|:AGR"Տ-Տ ՏYESՐՐՐ,:COR"Ր; ՐF:Q12W"ՐW,Րd Րl  ՜:WR"՜:Q24A"՝ ,՝ ՝՝.~G՝`՝v:Q25"՝-՝  ՝YESK՝՝:PWR"՝ť\YESr;ՐՐՐЦ:Q13"Ր .Ր  ՑáՑՑ.:Q13A"Ց?,ՑL ՑT Ցc`<ՑՑՑ:՝ݦ:WRQ25"՝\NO՞ :CORQ25"՞R՞+՞/:PCOR"՞C՞X\NO՞o:CORQ25"՞\YES ՞:WRQ25Q14"Ց˥ .Ց ՑÍՒՒ):Q14A"Ւ:,ՒG ՒOՒ^b=ՒՒՒ:Q15"Ւ ՒЦ*Ւ Ւ"՞՞:CS22"՞,՞ ՞՞H՟՟1:Q26"՟C .՟T ՟aá՟{՟:Q26A"՟,՟ ՟1ՓՓ Փ:Q15(1)C"Փ2Փ=:Q15(1)W"ՓN:Q15(1)"Փa,Փn Փw2ՓՓՓ:Q15(2)C"ՓՓʦ:Q15ĭZI՟ՠ ՠ!:Q27"ՠ3 .ՠD  ՠPáՠjՠtՠ:COR"ՠ ՠ:WR"ՠ:Q27A1"ՠ,ՠ ՠզ :(2)W"Փۦ:Q15(2)"Փ,Փ Ք3ՔՔ(Ք<:Q15(3)C"ՔOՔZ:Q15(3)W"Քk:Q15(3)"Ք~,Ք Ք4ՔՔQ27A|:AGR"ՠ-ՠ ա ա:Q27B"ա1-ա7 աCYESա\աfաz:COR"ա ա:PWR"ա:Q27B1"ա,ա Քɦ:Q15(4)C"ՔܹՔ:Q15(4)W"Ք:Q15(4)"Օ ,Օ Օ Օ/~>ՕY:Q16"Օj-Օp Օ|YESIՕՕաա:Q27C"ա-ա  բ YESբ$բ.բB:COR"բQ բ\:WR"բk,բx բբ:Q27D"բբբȥ :UAY"Օ YESՕ :TMT|:NL|:SE"Օ٦ :TMT|:ND|:SE"ՕGՕՖ:UAN"Ֆ NOՖ' :TMT|:SDN|:SE"ՖC :TMT|:SD.բ բբ ÍÍÍգLգP:Q27NB"գb,գo գv7գˡ/գգ:N3"գ-գYES գЦ:Q27D/գդՈՉ:Q4A"Չ,Չ, Չ4ՉB`3ՉrՉ:Q5|:AGR"Չ-Չ  ՉNOՉՉߥ3PՉ|:SE"ՖZՖb,Ֆo ՖwՖ ?ՖՖΦ :Q17|:AGR"Ֆ-Ֆ ՖYES%՗՗:Q17Y"՗%,՗2 ՗:՗I:EVAL"Չ,Պ ՊՊj4ՊOՊe:Q6"Պu-Պ{ ՊNOՊՊ:Q6A"Պ,Պ ՊՊX՗b՗y՗՗v@՗՗צ:Q18"՗-՗ ՘NO$՘՘&՘::NT15"՘K,՘X ՘_՘g՘vZ5ՋՋ$Ջ::Q7"ՋKՋT .ՋhՋ{ˡՋՋ  Ջ:WT"ՋՋáՋ  Ջ ՋáՌ Ռ:Q7A"`A՘՘ :Q19|:AGR"՘-՘  ՘NO՘ՙ:Q19A"ՙ$,ՙ1 ՙ9ՙHbBՙzՙ :Q20|-,Ռ: ՌBՌPu 6Ռy3NOOՌՌՌ:Q8"Ռ-Ռ Ռ٦NOՌՍ:EVAL"Ս,Ս# Ս*Ս:AGR"ՙ-ՙ ՙNOՙՙՙJC՚!:Q21"՚2-՚8 ՚C:Q21A"՚T,՚a ՚i՚x@D2Ս@n7ՍpՍ:Q9"Ս-Ս ՍNOՍՍԦ:Q9A"Ս,Ս Ս ՎZ8Վ9ՎO:՚՚ :Q22|:AGR"՚-՚  ՚NO՛՛:EVAL"՛&,՛3 ՛;՛JbE՛|՛:Q23"՛-՛Q10"Վ`-Վm ՎsYES Վ ՎՎՎ ՎՎ٭T9Տ Տ!:Q11"Տ2-Տ? ՏENOՏ]Տt  ՛\P՛ǦNO՛՜՜NF՜C՜U՜k:Q24"՜} .՜  ՜á՜՜՜Ӧ:COR"՜' է& է,áէEէY:N24"էj-էw է}YESSէէ :N26|:MOR"է-էYES%էէ էݦ:N26A"է,է ըORY[I] ; 0DIRECTORY[I] := DIRECTORY[J] ; 0DIRECTORY[J] := W ; 0I := I + 1 ; 0J := J - 1 ,END { SWAP } $UNTIL I > J ; $ $ը ըը':Q29A"ը9-ըF ըLYESըcըg:Q29AY"ըy,ը ըըը 0Lըը :Q30|:AGR"թIF L < J THEN (QSORT(L, J) ; $IF I < R THEN (QSORT(I, R) (  END ; { QSORT } " !  PROCEDURE DRILLHEADER ; VAR I, J : INT-թ  թYESթ.թB:Q30A"թS,թ` թhթwbMթթ :Q31|:AGR"թ-թ թNOթEGER ; BEGIN $FOR I := 1 TO LABLEN DO (IF (I+1) <= LENGTH(LINE) THEN ,FRAMENAME[I] := UPPERCASE( LINE[I+1] ) (ELSE ,FRAMENժ:Q31A"ժ$,ժ1 ժ9ժHbNժvժժ:Q32"ժ .ժ ժáժժի:COR"իի#իAME[I] := ' ' ; END ;  PROCEDURE GETHEADER ; { SKIP TIL A HEADER OR EOF }   VAR STOP : BOOLEAN;  BEGIN { GETHEADER } ':WR"ի5ի::Q32A"իK,իX ի` իoOƉƊիի Pի3Pի\PիիիլCASET$REPEAT (GETRANLINE(LINE) ; (IF RANEOF THEN ,STOP := TRUE (ELSE ,IF LENGTH(LINE) = 0 THEN 0STOP := FALSE ,ELSE 0STOP :=լ լ":I1"լ/ լ=*լN լcլ|լ լ լ:I2"լ,լ լ:HO"լ-լӦNO$լլ լ:HO1 LINE[1] = ':' ; $UNTIL STOP; ! $IF NOT RANEOF THEN (DRILLHEADER ;  END ; { GETHEADER }   PROCEDURE MARKHEADER ; { PLACE"խ ,խ խխ0 խ8:WANTSCO"խM-խXYESխlխtխ̋tʋtȡխխ խխ٧խ0խ FRAME INFO INTO DIRECTORY } BEGIN { MARKHEADER } $IF DIRINDEX >= LABMAX THEN (WRITELN('Directory overflow') ; $DIRINDEX := D1ծ2ծ3ծ!4ծ.5ծ;6ծH7ծU8ծd9ծs:ծ;ծ<ծ=ծ>ծ?ծ@ծAծBծIRINDEX + 1 ; $WITH DIRECTORY[DIRINDEX] DO (BEGIN { SETD } ,PLACE.BLOCK := RESBLK ; ,PLACE.BYTE := BUFPTR ; ,LABELNAME := FCկ DկEկ'Fկ6GկEHxկTIqկcJjկrKcկL\կMUկNNկOG@RAMENAME ; (END ; { SETD } END ; { MARKHEADER } PROCEDURE DOIT ; { MAIN PROCESSOR } VAR I : INTEGER ; BEGIN { DOIT } $SEEK(0~ytoje`[VQLկ áկկկ/"հ You answered   questions correctly. հ, 1) ; $REPEAT (GETHEADER ; (IF NOT RANEOF THEN ,BEGIN 0MARKHEADER ; 0WRITE(FRAMENAME:9) ; 0IF (DIRINDEX MOD 8) = 0 THEN Íդ-á*դHդMáդfդz :COR|:Q2719"դդ :AB|:Q2719"դ,դ դդխZJդ:Q28"ե-եG(d  % correct)հ|հ:BYE"հ,հ հƉ! )4:,P NOmե.ե: ե?:Q28A"եR .եc  եpá0եե:Q28A2"ե:Q28A2/ե:Q28A2A"եù եΦ:Q28A1"ե߹եե H  h @, T V"v^2`n !!!"*"N""<#^###$,$J$$J&&ե:Q28A1"զզ,զ$ զ,զ;Kզiզ{զ:Q29"զզ .զ  զզá զ:Q29A3"է ˡ'.'V'():)Oկ'Fկ6GկEHxկTIqկcJjկrKcկL\կMUկNNկOG@( 4WRITELN; ,END ; $UNTIL RANEOF ; $WRITELN; $WRITELN(DIRINDEX, ' Texts processed.') ; $QSORT( 1, DIRINDEX ) ; $FOR I := 0 ^jjFile  .DIR created.k ƉjƊƉ>ƊjTO DIRINDEX DO (BEGIN ,DIR^ := DIRECTORY[I] ; ,PUT(DIR) ; (END ; $CLOSE(DIR, LOCK) ; ڪP>>"fgiR8>>ɫg fˡfh$WRITELN('File ', NAME, '.DIR created.') ; END ; { DOIT } BEGIN { MAIN } $INTRO ; $DOIT ; END. &h >h ɡ6>há>hݞfg>hقޞhނɡ hނhh>hق ġL"šڂ݂ڕڂ݂ڕš  ݂޿@h  ɡڳ aA,  MILTA - Create text directory File name: PP.TEXTUP3?  Not found?jP.DIRT"ˡ'?Can't open output file?^^ئAAAAAAAAЩآآ VXڂ^^ ^ ȡ@ ^^^^ šɡ ɡ z ȡ6,ȡ(, ( > L ,g,á ,:ءg 4B MILTA  < ^ġ%Directory overflow^^آfآ hإ(p  ^آfآ hإ(p  g ( ág  Texts processed. ȡj g ( ág  Texts processed. ȡj^jjFile  .DIR created.k ƉjƊƉ>Ɗj) fZBBB>BBBB>pp`> ہہǻՁ$ ƉjƉ>T'4:,6P L ,g,á ,:ءg 4ýýÿýýýÿ < ^ġ%Directory overflow^^آfآ hإ(p ýýýýݽ g ( ág  Texts processed. ȡjݽý^jjFile  .DIR created.k ƉjƊƉ>Ɗjÿ۽ϟ>>$$$~$~$$>> >&&228DD800   $~$|888ÿŹýýýŹ ~888``0 @@<@@>`PHD~@@>>@@B<|>BB<~@ > BB>BB>~~ہہݽ>"rBB^@BBB~BBB>> ">B""B~BfZBBBBBFJZRbBBB>~BBBRr~@>BB>BBB<000 Q 0 ̌̌̌? ?B<@B<~BBBBBB<BBBB$$BBBBZfBBB$$BBBBB$~B B~>> 0``|@@@@@|"?< ~ ``0<@\B|:FBF:Q30A ?fQ31 @Q31A AQ32 B7Q32A D~Q33 DQ34 EQ35 FQ3A Q4 Q4A mQ5 Q6 Q6A <Q7 IQ7A :Q8 TQ9 !Q9A SD SDN SE STUDENT ATMT TYP TTYPE |TYPEBYE mUAN UAY }WANTSCO NWR  WRQ25 ,WT 8 CONCATEN AAAAAAAAAB &ACORR AGR BYE FCOR CORQ25 -CS22 -DONEQ EVAL )HO  ,d)Pdč@ Ɛ0Ƒ\ƐXHO1 I1 I2 MOR :N24 3HN26 4UN26A :N3 mN3A oNAME ND Հ  $FASTCAT : Concatenate files quickly.̐ʐȡ  NL NOTREL dNT15 %SOK RPCOR PWR Q1 HQ10 Q11 .Q12 0Files copied to Ɛ0ƐXpd!@  iles, RETURN to Q12W ~Q13 Q13A Q14 QQ14A cQ15 dQ15(1) kQ15(1)C Q15(1)W 4Q15(2) Q15(2)C ƨ,d)PCopying ƨą̨́XXƨX(ʨ̨0ʨyQ15(2)W Q15(3) Q15(3)C 3Q15(3)W eQ15(4) uQ15(4)C Q15(4)W 5Q16 Q17 >Q17Y "ZQ18 ̨ʨʨ̨ʨʨɡ4Out of room on output device!ʨá{XP  Output file:P6 ڪP"R8ɫ ˡYggkɥkggg饊kggg 1a" x饊k&  ɡ6áݞقޞނɡ grrFCSBrrrrڊBتP++++P+.DIRTނ륈ق ġL"šڂ݂ڕڂ݂ڕš  ݂+"˸]]++P+.TEXTU+]hتP+ƁWʁ]́^Ɓ^#5:Ɓ^SƁ^ʁ]+.TEXTáP.TEXTUP0"˫5Can't open output file ޿@h  ššڳ Aa,ۦͼV ڪPXX"R$.Enter list of input files, RETURN to 3|šP ۪PۦPTH ئP1ɡڀ-Pئ ئ-32768Pf'/-end list. Input file:P(**P*.TEXTU*P3-3ġT/0000-ń1.144P4 Q4Pؾ000ˡ// /--2/ 5 Can't find ,d)Pdč@ Ɛ0Ƒ\ƐX 3ؾ3P233P3Ǡ3P33P3Ǡ3P@  سٳՀ  $FASTCAT : Concatenate files quickly.̐ʐȡiؕh$Bad AT parameters4f    0Files copied to Ɛ0ƐXpd!@  iles, RETURN to  jPig r؀l :ڪPgRڪPgRV CASEXXAN ڪPRڪP/- /..-/.-/3XFۥ ݓ9 \ ZLt t L ~ B , p .Z!# (L ZڪPRڪPRڪ f `"V.f~L8TlHzO56789:;<=>?PRتPR,٪PتPšݥړݛ(@AB{CwDsEoFkGgHcI_J[KWLSMONKOG@}{ywusqomkigeca_][YWUSQݛ+áݛ-á ݥړ1ݛ ݛ0ۏE gk7 š :&(ƀʀP(Cš6*ˡ- Ä  #?á:Q13A", <<:Q14" . Í:Q14A", >=:Q15" * - labeled text not found.x 'تƀ ƀ:áƀ'ƀ#%2" 1:Q15(1)C" :Q15(1)W":Q15(1)", 2:Q15(2)C" :Q15(2)W":Q15(2)", 3:Q15(3ت"j2̀̀ʀʀȡʀʀʀ̀kg)<t*ت)C" :Q15(3)W":Q15(3)", 4:Q15(4)C" :Q15(4)W":Q15(4)", >:Q16"- YES7 ń̀ʀ"# 0+ Please press RETURN to continue.*0,/QUIT T):UAY" YES :TMT|:NL|:SE" :TMT|:ND|:SE"5:UAN" NO :TMT|:SDN|:SE" :TMT|:SD|:SE", ? *YyNn9 Type YES or NO please!* Yy YES NOx :Q17|:AGR"- YES:Q17Y",   F@:Q18"- NO:NT15",  x - *٥ōf Type a number from 1 to   please!*:A :Q19|:AGR"-  NO:Q19A", @B :Q20|:AGR"- NO12 not found!:^+ '^+^++: ٪P ٥t .تP " *R&/:Q1|:AGR"-  P:EVAL", 20^.^-0 Щ/4/4ȡ0////.-^,,^404  ,:Q2|:AGR"- NO01:Q3"- NO:COR":WR":Q3A", J^-04  ,^.-.ɍ,^444vd ꓡš : 2:Q4|:AGR"- NO:Q4A", >3:Q5|:AGR"-  NO3P:EVAL", &!۪Pڦ ? NOT FOUND ?l٧kɍ l k٧k! kk!!Rl hF4:Q6"- NO:Q6A", L:5:Q7" .ˡ  :WT"á  Ŷ ˄ š%ihb v$á:Q7A", AX63NO.:Q8"- NO:EVAL", D7:Q9"-h:%ih:&ؾšx NO:Q9A", ":8:Q10"- YES  49:Q11"- NO /áihAؾɡ"hؾۂɡ$ á&%*#ꓡ ,: :Q12|:AGR"- YES:COR" :Q12W", L;:Q13" .  8 á:COR":WR":Q27A1", :Q27A|:AGR"- :Q27B"- YES:COR":PWR":Q27B1",  TYPEIN TXT Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 :Q27C"-  YES:COR":WR", :Q27D" .  ÍÍÍ:Q27NB", "ˡ:NQ9 Q10 !Q11 "Q12 #Q13 $Q14 %Q15 &Q16 'Q17 (Q18 )Q19 RANOPEN FNAME RANREAD B SEEK BLK BYT GETRANLIP L Z *Q20 +Q21 ,Q22 -Q23 .Q24 /Q25 0Q26 1Q27 2Q28 3Q29 4Q30 SP EX BS MIN I J MAX I J UPPERCASCHAR 5Q31 6Q32 7CASEANALI CASES j TRIES CORRECT SCORING KBDNUM LABCOUNTACTENEXTSTR P NUM I WIDTH TENS /J .LEFT 2CH 0SP MAXLL i RANEOF RANDOMSEr KBD KBDCOPY k ANSQ1 NEXT RESBLK TEMP RESLINE k RESLAB POT -SUPPRESS1AT Y X ERASELINERASEPAGSTART HI LO KM l ANSQ5 3ANSQ23 \FOUND SPCOUNT ROOM h CRACKCOLg QUESTIONBUFPTR S PM S DM S EM S P .COL -OK /MANYMATCCOMPTYPEFOUND PMM S DMM S KMM S PERFORM S REC S1 ,S2 GETNUMBEI DONE SIGN TOT CRACK START RESTORE C:Q21"- :Q21A", (D :Q22|:AGR"-  NO:EVAL", @E:Q23"RAN RANGE OPENUP FN TFILE FN ERR ]SEEKLABELAB I /LOWE- \PNOL4F:Q24" .  á:COR":WR":Q24A", NGR .UPPER -PROBE ,INFILE LOAD LAB LINE NOFITS FITS JUSTFITSPRTRAW :Q25"-  YES6:PWR"\YES :WRQ25"\NO :CORQ25"::PCOR"\NO :CORQ25"\YES BOL NEWROOM EOL EOR PRLAB S FOUND P NAME TEMP ASK :WRQ25":CS22", QH:Q26" . á:Q26A", ::I:Q27" .  PROMPT I PRINTC N S GOAHEAD WAIT TRAP ASKYN ASKNUM MAX 9 HO1 I1 I2 MOR :N24 3HN26 4UN26A :N3 mN3A oNAME ND  PROCEDURE Q2; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q2|:AGR'); &ASKYN; &ERASEPAGE; &IF KM('NO') THEN )CORRECT :=   NL NOTREL dNT15 %SOK RPCOR PWR Q1 HQ10 Q11 .Q12 CORRECT + 1; &NEXT := PQ3; #END (*Q2*); PROCEDURE Q3; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q3'); &ASKYN; Q12W ~Q13 Q13A Q14 QQ14A cQ15 dQ15(1) kQ15(1)C Q15(1)W 4Q15(2) Q15(2)C &AT(6, 1); &IF KM('NO') &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':COR'); )END &ELSE )P(':WR'); &P(':Q3A'); &WAIT; &yQ15(2)W Q15(3) Q15(3)C 3Q15(3)W eQ15(4) uQ15(4)C Q15(4)W 5Q16 Q17 >Q17Y "ZQ18 ERASEPAGE; &NEXT := PQ4; #END (*Q3*); PROCEDURE Q4; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q4|:AGR'); &ASKYN; &AT $Q19 '\Q19A (Q2 zQ20 (MQ21 )Q21A )Q22 *$Q23 *Q24 +Q24A ,(6, 1); &IF KM('NO') THEN )CORRECT := CORRECT + 1; &P(':Q4A'); &WAIT; &ERASEPAGE; &NEXT := PQ5; #END (*Q4*); PROCEDURQ25 ,Q26 -Q26A .\Q27 /Q2719 @Q27A fQ27A1 0JQ27B Q27B1 #Q27C Q27D E Q5; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q5|:AGR'); &ASKYN; &AT(9, 1); &IF KM('NO') THEN )CORRECT := CORRECT + 1;Q27NB Q28 0Q28A 1IQ28A1 1EQ28A2 2Q28A2A 2XQ29 2Q29A <Q29A3 3VQ29AY <Q3  &ANSQ5 := KBD; &P(':EVAL'); &WAIT; &ERASEPAGE; &NEXT := PQ6; #END (*Q5*); PROCEDURE Q6; #BEGIN &QUESTIONS := QUES cQ30 >Q30A ?fQ31 @Q31A AQ32 B7Q32A D~Q33 DQ34 EQ35 FQ3A TIONS + 1; &P(':Q6'); &ASKYN; &AT(8, 1); &IF KM('NO') THEN )CORRECT := CORRECT + 1; &P(':Q6A'); &WAIT; &ERASEPAGE; &NEXQ4 Q4A mQ5 Q6 Q6A <Q7 IQ7A :Q8 TQ9 !Q9A SD T := PQ7; #END (*Q6*); PROCEDURE Q7; #BEGIN &TRIES := 0; &QUESTIONS := QUESTIONS + 1; &P(':Q7'); &REPEAT )ASKNUM(KBSDN SE STUDENT ATMT TYP TTYPE |TYPEBYE mUAN UAY }WANTSCO NWR DNUM, 5); )TRIES := TRIES + 1; )IF KBDNUM <> 1 THEN ,BEGIN /AT(10, 1); /P(':WT'); ,END; &UNTIL KBDNUM = 1; &AT(10, 1);  WRQ25 ,WT 8&ERASELINE; &IF TRIES = 1 THEN )CORRECT := CORRECT + 1; &P(':Q7A'); &WAIT; &ERASEPAGE; &NEXT := PQ8; #END (*Q7*); PRTRING); #BEGIN &ERASEPAGE; &P(TXT); &REPEAT )AT(23, 1); )ASK(''); &UNTIL KBD = ''; #END (*TYPEIN*); PROCEDURE Q1; OCEDURE Q8; #BEGIN &IF ANSQ5 = 'NO' &THEN )BEGIN ,QUESTIONS := QUESTIONS + 1; ,P(':Q8'); ,ASKYN; ,AT(6, 1); ,IF KM('NAAAAAAAAAB &ACORR AGR BYE FCOR CORQ25 -CS22 -DONEQ EVAL )HO #BEGIN &P(':Q1|:AGR'); &ASKYN; &AT(11, 1); &ANSQ1 := KBD; &P(':EVAL'); &WAIT; &ERASEPAGE; &NEXT := PQ2; #END (*Q1*); : ND (*Q14*); PROCEDURE Q15; #BEGIN &TRIES := 0; &QUESTIONS := QUESTIONS + 4; &P(':Q15'); &AT(23, 1); &ASK(''); &ERAS, 1); &IF KM('NO') THEN )CORRECT := CORRECT + 1; &P(':Q19A'); &WAIT; &ERASEPAGE; &NEXT := PQ20; #END (*Q19*); PROCEDUEPAGE; & &IF KM('1') &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':Q15(1)C'); )END &ELSE )P(':Q15(1)W'); &P(':Q15(1)'); RE Q20; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q20|:AGR'); &ASKYN; &ERASEPAGE; &IF KM('NO') THEN )CORRECT := CORRECT O') THEN /CORRECT := CORRECT + 1; ,P(':EVAL'); ,WAIT; ,ERASEPAGE; )END; &NEXT := PQ9; #END (*Q8*); PROCEDURE Q9; #&WAIT; &ERASEPAGE; & &IF KM('2') &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':Q15(2)C'); )END &ELSE )P(':Q15(2)W'); BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q9'); &ASKYN; &AT(6, 1); &IF KM('NO') THEN )CORRECT := CORRECT + 1; &P(':Q9A'); &P(':Q15(2)'); &WAIT; &ERASEPAGE; & &IF KM('3') &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':Q15(3)C'); )END &ELSE )P(&WAIT; &ERASEPAGE; &NEXT := PQ10; #END (*Q9*); PROCEDURE Q10; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q10'); &ASKY':Q15(3)W'); &P(':Q15(3)'); &WAIT; &ERASEPAGE; & &IF KM('4') &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':Q15(4)C'); )ENN; &ERASEPAGE; &IF KM('YES') &THEN )NEXT := PQ12 &ELSE )BEGIN ,CORRECT := CORRECT + 1; ,NEXT := PQ11; )END; #END (*Q10D &ELSE )P(':Q15(4)W'); &P(':Q15(4)'); &WAIT; &ERASEPAGE; &NEXT := PQ16; #END (*Q15*); PROCEDURE Q16; #BEGIN &P('*); PROCEDURE Q11; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q11'); &ASKYN; &ERASEPAGE; &IF KM('NO') THEN )CORRECT ::Q16'); &ASKYN; &AT(7, 1); &IF KM('YES') &THEN )BEGIN ,P(':UAY'); ,IF ANSQ1 = 'YES' THEN /P(':TMT|:NL|:SE') ,ELSE /P('= CORRECT + 1; &NEXT := PQ12; #END (*Q11*); PROCEDURE Q12; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q12|:AGR'); :TMT|:ND|:SE'); )END &ELSE )BEGIN ,P(':UAN'); ,IF ANSQ1 = 'NO' THEN /P(':TMT|:SDN|:SE') ,ELSE /P(':TMT|:SD|:SE'); )END;&ASKYN; &AT(8, 1); &IF KM('YES') &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':COR'); )END &ELSE )P(':Q12W'); &WAIT; &E &WAIT; &ERASEPAGE; &NEXT := PQ17; #END (*Q16*); PROCEDURE Q17; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q17|:AGR')RASEPAGE; &NEXT := PQ13 #END (*Q12*); PROCEDURE Q13; #BEGIN &TRIES := 0; &QUESTIONS := QUESTIONS + 1; &P(':Q13'); &; &ASKYN; &ERASEPAGE; &IF KM('YES') &THEN )BEGIN ,P(':Q17Y'); ,WAIT; ,ERASEPAGE; ,NEXT := PQ19; )END &ELSE )BEGIN ,ASKNUM(KBDNUM, 4); &AT(11, 1); &IF KBDNUM = 2 THEN )CORRECT := CORRECT + 1; &P(':Q13A'); &WAIT; &ERASEPAGE; &NEXT := PQ14CORRECT := CORRECT + 1; ,NEXT := PQ18; )END; #END (*Q17*); PROCEDURE Q18; #BEGIN &QUESTIONS := QUESTIONS + 1; ; #END (*Q13*); PROCEDURE Q14; #BEGIN &TRIES := 0; &QUESTIONS := QUESTIONS + 2; &P(':Q14'); &ASKNUM(KBDNUM, 5); &ER&P(':Q18'); &ASKYN; &ERASEPAGE; &IF KM('NO') &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':NT15'); ,WAIT; ,ERASEPAGE; )EASEPAGE; &IF (KBDNUM = 3) OR (KBDNUM = 4) THEN )CORRECT := CORRECT + 1; &P(':Q14A'); &WAIT; &ERASEPAGE; &NEXT := PQ15; #END; &NEXT := PQ19; #END (*Q18*); PROCEDURE Q19; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q19|:AGR'); &ASKYN; &AT(11; ' THEN /P(':WRQ25') ,ELSE /IF ANSQ23 = 'NO' THEN 2P(':CORQ25'); )END &ELSE )BEGIN ,P(':PCOR'); ,CORRECT := CORRECT + 1; := CORRECT + 1; ,P(':COR|:Q2719'); )END &ELSE )P(':AB|:Q2719'); &WAIT; &ERASEPAGE; &NEXT := PQ28; #END (*Q27*); PRO ,IF ANSQ23 = 'NO' THEN /P(':CORQ25') ,ELSE /IF ANSQ23 = 'YES' THEN 2P(':WRQ25'); )END; &P(':CS22'); &WAIT; &ERASEPAGE;CEDURE Q28; #BEGIN &P(':Q28'); &ASKYN; &IF KM('NO') &THEN )BEGIN ,ERASEPAGE; ,P(':Q28A'); ,ASKNUM(KBDNUM, 2); ,AT(10 &NEXT := PQ26; #END (*Q25*); PROCEDURE Q26; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q26'); &ASKNUM(KBDNUM, 3); &A, 1); ,IF KBDNUM = 2 ,THEN /BEGIN 2P(':Q28A2'); 2TYPEIN(':Q28A2'); 2P(':Q28A2A'); /END ,ELSE /P(':Q28A1'); )END &ELSET(14, 1); &IF KBDNUM = 3 THEN )CORRECT := CORRECT + 1; &P(':Q26A'); &WAIT; &ERASEPAGE; &NEXT := PQ27; #END (*Q26*);  )BEGIN ,AT(8, 1); ,P(':Q28A1'); )END; &WAIT; &ERASEPAGE; &NEXT := PQ29; #END (*Q28*); PROCEDURE Q29; #BEGIN &TRPROCEDURE Q27; #BEGIN &TRIES := 0; &QUESTIONS := QUESTIONS + 1; &P(':Q27'); &ASKNUM(KBDNUM, 2); &AT(9, 1); &IF KBDNUM =IES := 0; &QUESTIONS := QUESTIONS + 1; &P(':Q29'); & &REPEAT )ASKNUM(KBDNUM, 3); )AT(11, 1); )TRIES := TRIES + 1; )IF KB+ 1; &NEXT := PQ21; #END (*Q20*); (* 20 *) PROCEDURE Q21; #BEGIN &P(':Q21'); &ASKYN; &AT(8, 1); &P(':Q21A'); &WAIT 2 &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':COR'); )END &ELSE )P(':WR'); &P(':Q27A1'); &WAIT; &ERASEPAGE; & &P(':Q; &ERASEPAGE; &NEXT := PQ22; #END (*Q21*); PROCEDURE Q22; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q22|:AGR'); &ASK27A|:AGR'); &ASKYN; &ERASEPAGE; & &QUESTIONS := QUESTIONS + 1; &P(':Q27B'); &ASKYN; &AT(8, 1); &IF KM('YES') &THEN )BEYN; &AT(11, 1); &IF KM('NO') THEN )CORRECT := CORRECT + 1; &P(':EVAL'); &WAIT; &ERASEPAGE; &NEXT := PQ23; #END (*Q22*); GIN ,CORRECT := CORRECT + 1; ,P(':COR'); )END &ELSE )P(':PWR'); &P(':Q27B1'); &WAIT; &ERASEPAGE; & &QUESTIONS := QUEST PROCEDURE Q23; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q23'); &ASKYN; &ERASEPAGE; &ANSQ23 := KBD; IONS + 1; &P(':Q27C'); &ASKYN; &AT(11, 1); &IF KM('YES') &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':COR'); )END &ELSE &IF KM('NO') THEN )CORRECT := CORRECT + 1; &NEXT := PQ24; #END (*Q23*); PROCEDURE Q24; #BEGIN &TRIES := 0; &QUESTIO)P(':WR'); &WAIT; &ERASEPAGE; & &TRIES := 0; &P(':Q27D'); &QUESTIONS := QUESTIONS + 1; &REPEAT )ASKNUM(KBDNUM, 25); )ANS := QUESTIONS + 1; &P(':Q24'); &ASKNUM(KBDNUM, 2); &AT(11, 1); &IF KBDNUM = 1 &THEN )BEGIN ,CORRECT := CORRECT + 1; ,PT(8, 1); )TRIES := TRIES + 1; )IF (KBDNUM = 10) OR (KBDNUM = 12) OR (KBDNUM = 16) OR (KBDNUM = 18) )THEN ,BEGIN /P(':Q27NB'(':COR'); )END &ELSE )P(':WR'); &P(':Q24A'); &WAIT; &ERASEPAGE; &NEXT := PQ25; #END (*Q24*); PROCEDURE Q25; #BEGI); /WAIT; /ERASEPAGE; ,END )ELSE ,IF KBDNUM <> 19 ,THEN /BEGIN 2P(':N3'); 2ASKYN; 2IF KM('YES') THEN N &QUESTIONS := QUESTIONS + 1; &P(':Q25'); &ASKYN; &AT(11, 1); &IF KM('YES') &THEN )BEGIN ,P(':PWR'); ,IF ANSQ23 = 'YES5TYPEIN(':Q27D'); /END; &UNTIL (TRIES > 3) OR (KBDNUM = 19); & &IF KBDNUM = 19 &THEN )BEGIN ,IF TRIES = 1 THEN /CORRECT< AGE; &NEXT := PQ31; #END (*Q30*); PROCEDURE Q31; #BEGIN &QUESTIONS := QUESTIONS + 1; &P(':Q31|:AGR'); &ASKYN; &AT(7#THEN &BEGIN )P('/'); )WRITE('You answered ', CORRECT, ' questions correctly. '); )WRITELN('(', 100*CORRECT DIV QUESTIONS,, 1); &IF KM('NO') THEN )CORRECT := CORRECT + 1; &P(':Q31A'); &WAIT; &ERASEPAGE; &NEXT := PQ32; #END (*Q31*); PROCEDU '% correct)'); &END; #P(':BYE'); #WAIT; #ERASEPAGE; END (*CASES*). RE Q32; #BEGIN &TRIES := 0; &QUESTIONS := QUESTIONS + 1; &P(':Q32'); &ASKNUM(KBDNUM, 2); &AT(8, 1); &IF KBDNUM = 2 &THEN )BEGIN ,CORRECT := CORRECT + 1; ,P(':COR'); )END &ELSE )BEGIN ,P(':WR'); )END; &P(':Q32A'); &WAIT; &ERASEPAGE; &NEXT := LAST; #END (*Q32*); BEGIN (*CASES*) #START; #ANSQ1 := ''; #ANSQ5 := ''; #ANSQ23 := ''; #QUESTIONS := 0; #CORRECT := 0; #SCORING := FALSE; #TFILE('CASET'); #ERASEPAGE; #P(':I1'); #AT(23, 1); #ASK(''); #GETNUMBER(KBDNUM, FOUND); #IF NOT FOUND #THEN &BEGIN )KBDNUM := 1; )ERASEPAGE; )P(':I2'); )WAIT; )ERASEPAGE; )P(':HO'); )ASKYN; )IF KM('NO') THEN ,BEGIN /AT(8, 1); /P(':HO1'); /WAIT; /ERASEPAGE; ,END )ELSE ,ERASEPAGE; , )P(':WANTSCO'); )ASKYN; )SCORING := DNUM = 3 THEN ,P(':Q29A3'); &UNTIL KBDNUM <> 3; & &ERASEPAGE; &IF TRIES = 1 THEN )CORRECT := CORRECT + 1; &P(':N24'); &AKM('YES'); &END; #NEXT := PQ1; #FOR I := 1 TO ( KBDNUM - 1 ) DO &NEXT := SUCC( NEXT ); #ERASEPAGE; # # #REPEAT &CASE NESKYN; &ERASEPAGE; &IF KM('YES') THEN )BEGIN ,P(':N26|:MOR'); ,ASKYN; ,IF KM('YES') ,THEN /BEGIN 2AT(8, 1); XT OF )PQ1: ,Q1; )PQ2: ,Q2; )PQ3: ,Q3; )PQ4: ,Q4; )PQ5: ,Q5; )PQ6: ,Q6; )PQ7: ,Q7; )PQ8: ,Q8; )PQ9: ,Q9; )PQ12P(':N26A'); 2WAIT; 2ERASEPAGE; /END ,ELSE /ERASEPAGE; )END; ) &P(':Q29A'); &ASKYN; &ERASEPAGE; &IF KM('YES') THEN 0: ,Q10; )PQ11: ,Q11; )PQ12: ,Q12; )PQ13: ,Q13; )PQ14: ,Q14; )PQ15: ,Q15; )PQ16: ,Q16; )PQ17: ,Q17; )PQ18: ,Q18)BEGIN ,P(':Q29AY'); ,WAIT; ,ERASEPAGE; )END; &NEXT := PQ30; #END (*Q29*); PROCEDURE Q30; #BEGIN &QUESTIONS := QUE; )PQ19: ,Q19; )PQ20: ,Q20; )PQ21: ,Q21; )PQ22: ,Q22; )PQ23: ,Q23; )PQ24: ,Q24; )PQ25: ,Q25; )PQ26: ,Q26; )PQ27STIONS + 1; &P(':Q30|:AGR'); &ASKYN; &AT(11, 1); &IF KM('YES') THEN )CORRECT := CORRECT + 1; &P(':Q30A'); &WAIT; &ERASEP: ,Q27; )PQ28: ,Q28; )PQ29: ,Q29; )PQ30: ,Q30; )PQ31: ,Q31; )PQ32: ,Q32; &END; #UNTIL NEXT = LAST; #IF SCORING = ACTEҤNEXTSTR ؤP ѤNUM ؤI ѤWIDTH ѤTENS /ѤJ .ѤLEFT 2ԤCH 0ҤSP ֤MAXLL i ѤRANEOF ԤRANDOMSEr ӤKBD ֤KBDCOPY k ֤ANSQ1 ֤NEXT դRESBLK ѤTEMP ֤RESLINE k ѤRESLAB POT -ѤSUPPRESS1ԤAT ؤY ѤX ѤERASELINؤERASEPAGؤSTART ؤHI ѤLO ѤKM l ֤ANSQ5 3֤ANSQ23 \֤FOUND ԤSPCOUNT ѤROOM h ѤCRACKCOLg ѤQUESTIONѤBUFPTR ѤؤS ֤PM ؤS ֤DM ؤS ֤EM ؤS ֤P .ѤCOL -ѤOK /ԤMANYMATCؤCOMPTYPEդFOUND ԤPMM ؤS ֤DMM ؤS ֤KMM ؤS ֤PERFORM ؤS ֤REC ؤS1 ,֤S2 ֤GETNUMBEؤI ѤDONE ԤSIGN ѤTOT ѤCRACK ؤSTART ѤRESTORE ؤRAN ؤRANGE ѤOPENUP ؤFN ֤TFILE ؤFN ֤ERR ]ԤSEEKLABEؤLAB ֤I /ѤLOWEO^R .ѤUPPER -ѤPROBE ,ѤINFILE ؤLOAD ؤLAB ֤LINE ѤNOFITS ؤFITS ؤJUSTFITSؤPRTRAW ؤABOL ѤNEWROOM ѤEOL ѤEOR ؤPRLAB ؤS ֤FOUND ԤP ؤNAME ֤TEMP ֤ASK ؤPROMPT ֤I ѤPRINTC ؤN ѤS ֤GOAHEAD ԤWAIT ؤTRAP ؤASKYN ؤASKNUM ؤMAX  ѤTYPEIN ؤTXT ֤Q1 ؤQ2 ؤQ3 ؤQ4 ؤQ5 ؤQ6 ؤQ7 ؤQ8 ؤQ9 ؤQ10 !ؤQ11 "ؤQ12 #ؤQ13 $ؤQ14 %ؤQ15 &ؤQ16 'ؤQ17 (ؤQ18 )ؤQ19 RANOPEN ؤFNAME ֤RANREAD ؤB ѤSEEK ؤBLK ѤBYT ѤGETRANLIؤP ѤL ѤZ *ؤQ20 +ؤQ21 ,ؤQ22 -ؤQ23 .ؤQ24 /ؤQ25 0ؤQ26 1ؤQ27 2ؤQ28 3ؤQ29 4ؤQ30 ѤSP ѤEX ѤBS ѤMIN ؤI ѤJ ѤMAX ؤI ѤJ ѤUPPERCASؤCHAR 5ؤQ31 6ؤQ32 7ؤCASEXXANؤI ѤCASES j ԤTRIES ѤCORRECT ѤSCORING ԤKBDNUM ѤLABCOUNTѤ>   procedure Remove( Offset: PermRange; var PSeries: Series);   begin #with PSeries dO &if Element [ Offset ] then )begin ,Element [ Offset ] := False; ,Count := Count - 1; )end;  end { Remove };     procedure RandP(var Found: boolean; var Selection: PermRange;  var PSeries: Series);   var #Count : PermRange; #  begin #Found := ( PSeries.Count > 0 ); # #if Found then &begin )Selection := 0; )Count := Ran( Pseries.Count ); )while Count > 0 do ,begin /if PSeries.Element [ O^Selection + 1] then 2Count := Count - 1; /Selection := Selection + 1; ,end; )Remove(Selection, PSeries); &end;  end;   zA   procedure NextP(var Found: boolean; var Selection: PermRange;  var PSeries: Series); #  begin #Found := ( PSeries.Count > 0 ); # #if Found then &begin )Selection := 1; )while not PSeries.Element [ Selection ] do ,Selection := Selection + 1; )Remove(Selection, PSeries); &end;  end;     procedure SetPerm( PSize: PermRange; var PSeries: Series);   var #I: integer; #  begin #for I := 1 to PSize do &PSeries.Element [I] := True; #PSeries.Count := PSize;  end { SetPerm };  ? 6A@TO^@`   const #StringSize = 250; #  type #LongString = String [StringSize]; #CharSet = Set of Char; #MatchType = (KMMatch, DMMatch, PMMatch);  var #KBD, #KBDCopy, #Temp : LongString; #CrackCol : 0..StringSize; #MaxLL, #Room : 0 .. 999; #Cases : boolean; #ResLine : integer; #ResLab : string [10]; #RandomSeed: real;    { Random I/O package declarations } const #BufSize = 512 ; #MaxBlock = 500 ; " var #RanBuf : packed array[1..BufSize] of Char ; #RanFil : File ; #ResBlk : -1..MaxBlock ; #RanEOF : boolean ; #BufPtr : 0..BufSize ; #SpCount : integer ; O^@  type #PermRange = 0 .. MaxPerm; #Series = record &Count : PermRange; &Element : packed array[ PermRange ] of boolean; #end { Series };   program MilTa ;   {$I LABD }  {$I RANIOD } { var } $Dir : file of DirRecord ; $Directory : array [0..LabMax] of DirRecord ; $Name, NameTxT : String ; $FrameName : IDK ; $Line : string [255] ; $DirIndex : 0..LabMax ; $ {$I RANIOS }  {$R+}  function Min(I, J : integer) : integer ; begin $if I < J then (Min := I $else (Min := J ;  end ; !  Function UpperCase(Character: Char) : Char;  begin $if Character in ['a'..'z'] then (UpperCase := Chr( Ord(Character) - Ord('a') + Ord('A') ) $elO^BA d ; $Rewrite(Dir, Concat(Name, '.DIR') ) ; $if IOResult <> 0 then (WriteLn('?Can''t open output file?') ; $DirIndex := 0 ;  ; (end; end { MarkHeader }; procedure DoIt { Main processor }; var I : integer ; begin { DoIt } $Seek(0, 1) ; $repeat ($with Directory [0] do (begin -LabelName := 'AAAAAAAA' ; -Place.Block := 0 ; -Place.Byte := 0 ; (end ;  end { Intro }; GetHeader ; (if not RanEOF then ,begin 0MarkHeader ; 0Write(FrameName:9) ; 0if (DirIndex mod 8) = 0 then 4WriteLn; ,end ; {$I+} procedure QSort( L, R : integer ) { Sort directory entries }; var $I, J : integer ; $X : IDK ; $W : DirRecord ; ! $until RanEOF ; $WriteLn; $WriteLn(DirIndex, ' Texts processed.') ; $QSort( 1, DirIndex ) ; $for I := 0 to DirIndex do (b  begin $I := L ; $J := R ; $X := Directory [(I+J) div 2].LabelName ; ! $repeat (while Directory [I].LabelName < X do ,egin ,Dir^ := Directory [I] ; ,Put(Dir) ; (end ; $Close(Dir, Lock) ; $WriteLn('File ', Name, '.DIR created.') ; I := I + 1 ; (while X < Directory [J].LabelName do ,J := J - 1 ; (if I <= J then ,begin { Swap } 0W := Directory [I] ; 0DiEND { DoIt }; begin { Main } $Intro ; $DoIt ; end. rectory [I] := Directory [J] ; 0Directory [J] := W ; 0I := I + 1 ; 0J := J - 1 ,end { Swap } $until I > J ; $ $if L < J then (QSort(L, J) ; $if I < R then (QSort(I, R) (  end { QSort }; " !  procedure DrillHeader ; var I, J : integer ; begin $for I := 1 to LabLen do (if (I+1) <= Length(Line) then ,FrameName [I] := UpperCase( Line [I+1] ) (else ,FrameName [I] := ' ' ; end;  procedure GetHeader { Skip till a header or EOF };   var Stop : boolean;  begin { GetHeader } $repeat (GetRanLine(Line) ; (if RanEOF then ,Stop := True (else ,if Length(Line) = 0 then 0Stop := False ,else 0Stop := Line [1]se (UpperCase := Character;  end; procedure Intro { Setup initial conditions }; {$I-} begin { Intro } $Page(Output) ; $Wri = ':' ; $until Stop; ! $if not RanEOF then (DrillHeader ;  end { GetHeader };   procedure MarkHeader { Place frame inteLn ; $WriteLn(' ':20, 'MILTA - Create text directory') ; $WriteLn ; $Write('File name: ') ; $ReadLn( Name ) ; $NameTxT :=fo into directory }; begin { MarkHeader } $if DirIndex >= LabMax then (WriteLn('Directory overflow') ; $DirIndex := DirIndex  Concat( Name, '.TEXT' ) ; $if not RanOpen(NameTxt) then (begin -WriteLn('? ', NameTxt, ' Not found?') ; -Exit(MilTA) ; (en+ 1 ; $with Directory [DirIndex] do (begin ,Place.Block := ResBlk ; ,Place.Byte := BufPtr ; ,LabelName := FrameNameB pperCase := Chr( Ord(Character) + Ord('A') - Ord('a') ) $else (UpperCase := Character; end; function NextStr(var From, Dest : string) : boolean; var $P : integer;  begin $if From = '' $then (NextStr := False $else (begin ,NextStr := True; O^,P := Pos('|', From); ,if P > 0 ,then 0begin 4Dest := Copy(From, 1, P-1); 4Delete(From, 1, P); 0end ,else 0begin 4DestC := From; 4From := ''; 0end; (end;  end { NextStr };  procedure Num(I, Width: integer ; var Str : string); var &SP : string; &Tens, J, Pot: integer; &Ch: Char; &Left, Suppressing: boolean; begin %Str := ''; %Suppressing := True; %if I < 0 then )begin -I := Abs(I); -Str := '-'; )end; %if (I = 0) and (Str <> '') %then { Hardware special case } )Str := '-32768' %else )begin -Tens := 10000; -for Pot := 4 downto 0 do 1begin 5Ch := Chr(I div Tens + Ord('0')); 5if (Ch = '0') and (Pot > 0) and Suppressing 5then 9{ Surpress 0's } 5else { Format the char } 9begin =Suppressing := False; =Str := Concat(Str, ' '); =Str[ Length(Str) ] := Ch; =if Ch <> '0' then AI := I mod Tens 9end; 5Tens := Tens div 10; 1end; )end;  %Left := Width < 0; %Sp := Copy(' ', 01 , Width - Length(str) ); %if Left  { ,Some useful CAI routines -( Inspired by MIL ) +See MIL.DOC for information  } function Min(I, J : integer) : integer; %then )Str := Concat(Sp, Str) %else )Str := Concat(Str, Sp);  end { Num }; $ $ $ procedure At(Y, X : integer); begin $ifbegin $if I > J $then (Min := J $else (Min := I; end; function Max(I, J : integer) : integer; begin $if I > J $then  (X in [1..80]) and (Y in [1..24]) $then (begin ,GotoXY(X-1, Y-1); ,Room := MaxLL - X + 1; (end $else (WriteLn('Bad AT pa(Max := I $else (Max := J; end; function UpperCase(Character: Char) : Char; begin $if Character in ['a'..'z'] $then (Urameters'); end { AT }; procedure EraseLine;  begin $Write( Chr(29) );  end; procedure ErasePage;  begin C  Place : integer ; S : string) : boolean; begin (DMM := ManyMatch(Place, S, DMMatch); end; function KMM(var Place : integer 638429+31.41597; #RandomSeed := RandomSeed-Trunc(RandomSeed); #Ran := Trunc(RandomSeed*Range) + 1;  end { Ran };  ; S : string) : boolean; begin (KMM := ManyMatch(Place, S, KMMatch); end; procedure Perform(S: string);  begin  end { Peprocedure Tfile(FN : string) ; var $Fil : file of DirRecord ; $Err : boolean; $ $procedure OpenUp(FN : string); $begin *rform }; procedure Rec(S1, S2 : string); begin end; procedure GetNumber(var N: integer; var Found: boolean); var $Done: Close(Fil) ; *{$I-} *Reset(Fil, Concat(FN, '.DIR')) ; *{$I+} *Err := IOResult <> 0; *Err := Err or not RanOpen(Concat(FN, '%Page(Output); %At(1,1);  end; procedure Start; var $Hi, Lo : integer; $ begin $Cases := False; $MaxLL := 80; $Cracboolean; $I, Tot, Sign: integer; #begin &Found := False; &Sign := + 1; &Tot := 0; &if Length(KBD) > 0 &then *begin .DkCol := 0; $Time( Hi, Lo ); $RandomSeed := Abs(Lo) mod 500 { Set random seed }; $ResLab := ''; $ErasePage; end; functioone := False; .I := 0; .while (I < Length(KBD)) and not Done do .begin 2I := I + 1; 2Done := KBD[I] in ['0' .. '9', '-', '+n KM(S : string): boolean; begin $KM := Pos(S, KBD) > 0 ; end; function PM(S : string): boolean; begin $PM := Pos(S, KBD) =']; .end;  .if KBD[I] = '+' .then 2I := I + 1 .else 2if KBD[I] = '-' 6then :begin >I := I + 1; >Sign := - 1;  1 ; end; function DM(S : string) : boolean ; begin (DM := S = KBD ; end; function EM(S : string) : boolean; var %P, :end;  .Done := False; .while (I <= Length(KBD)) and not Done do .begin 2if KBD[I] in ['0' .. '9'] 2then 6begin :Tot :Col : integer; %OK : boolean; begin $OK := True; $Col := 1; $while NextStr(S, Temp) and OK do (begin ,P := Pos(Temp, KBD);= Tot * 10 + Ord(KBD [I]) - Ord('0'); :I := I + 1; :Found := True; 6end 2else 6Done := True; .end; *end; &N := Tot * Sig ,OK := P >= Col; ,Col := P + Length(Temp) ; (end; $EM := OK; end { EM }; function ManyMatch(var Place : integer ; var S :n; #end { Number }; #procedure Crack( ChS : CharSet ; var Found : boolean ); %var *Start : integer; #begin { Crack } string ; 3CompType : MatchType) : boolean ; var (Found : boolean; begin (Found := False; (Place := 0; (while NextStr(S, (if CrackCol <= Length(KBDCopy) (then ,begin 0Start := CrackCol; 0while ( CrackCol < Length(KBDCopy) ) and 6not ( KBDCop Temp) and not Found do ,begin 0Place := Place + 1; 0case CompType of 5KMMatch : Found := KM(Temp); y[CrackCol] in ChS ) do 4CrackCol := Succ( CrackCol ); 4Found := True; 4KBD := Copy(KBDCopy, Start, CrackCol - Start + 1); 5DMMatch : Found := DM(Temp); 5PMMatch : Found := PM(Temp); 0end { case }; ,end; (ManyMatch := Found; end { ManyMatch }; 5CrackCol := Succ( CrackCol ); ,end (else ,begin 0Found := False; 0KBD := ''; ,end; #end { Crack }; procedure Restore; function PMM(var Place : integer ; S : string) : boolean; begin (PMM := ManyMatch(place, S, PMMatch); end; function DMM(var begin (KBD := KBDCopy; (CrackCol := 1; end; function Ran( Range: integer) : integer;  begin #RandomSeed := RandomSeed*49.D n ,begin 0with LabelDict[Probe].Place do 4Seek(Block, Byte) ; ,end; end ; procedure Load(Lab : string ; var Str : LongStri Room - Length(S) + BOL - 1; 1if NewRoom < 0 1then 5NoFits 1else 5if NewRoom = 0 5then 9JustFits 5else 9Fits; -end; )ng ; Line : integer /; var Found : boolean); $function InFile : boolean; $begin )InFile := RanEOF; )if not RanEOF (then end;  end { PrtRaw }; #procedure PrLab(var Name : string); #var 'S : LongString ; 'Found : boolean; ,if Length(Str) > 0 0then 4InFile := Str[1] <> ':' ; $end; begin (Str := '? NOT FOUND ?'; (if (Lab <> ResLab) or (Line 'function EOR: boolean; (begin +EOR := RanEOF; +if not RanEOF +then .if Length(S) > 0 .then 2EOR := (S[1] = ':'); (end < ResLine) (then ,begin 0SeekLabel(Lab, Found); 0if Found 0then 4begin 8ResLab := Lab; 8ResLine := 0; 4end; ,end (els{ EOR }; $begin { PrLab } &SeekLabel(Name, Found); &if Found &then *begin .GetRanLine(S); .while not EOR do .begin e ,Found := True; (if Found (then ,begin 0while (Line > ResLine) and InFile do 4begin 8GetRanLine(Str); 8ResLine := Re2if Length(S) > 0 2then 3if S[1] <> '*' 3then 7begin =while (Length(S) > 1) and (S[Length(S)] = ' ') do >Delete(S, Length(sLine + 1; 4end; 0Found := InFile; ,end; end { Load }; procedure P(Name: LongString); var $Temp : LongString; #proS), 1); =if S = ' ' =then ?S := ''; =PrtRaw(S); 7end; 2GetRanLine(S); .end; *end (else ,begin 0WriteLn; 0WriteLn(Nam.TEXT')); $end; # # begin { Tfile } $OpenUp(FN); $if Err then &OpenUp(Concat('#5:', FN)); $if Err then 'WriteLn(FN, ' nocedure PrtRaw(var S : LongString); #var 'BOL, EOL, NewRoom: integer; &procedure NoFits; &begin t found!') $else $begin *LabCount := 0 ; & *while not EOF(Fil) do ,begin 0LabelDict [ LabCount ] := Fil^ ; 0LabCount :=,EOL := BOL + Room - 1; , ,{Look for end of last word} ,while (EOL > BOL) and (S[EOL] <> ' ') do /EOL := EOL - 1; ,if EOL LabCount + 1 ; 0Get(Fil) ; ,end ; end;  end { Tfile }; procedure SeekLabel( Lab : string; var Found : boolean ) ;  > BOL ,then /begin 2Write( Copy(S, BOL, EOL-BOL) ); 2BOL := EOL + 1; /end; ,WriteLn; ,Room := MaxLL; &end { NoFits };  var $Lower, Upper, Probe : LabelRange ; $I : integer; $InLab : IDK ; begin $Lower := 1 ; $Upper := LabCount ; $Found := &procedure Fits; &begin +Write( Copy(S, BOL, Length(S) - BOL+1) ); +Room := NewRoom; +BOL := Length(S); &end { Fits };  False ; $InLab := ' '; $for I := 1 to Min(Length(Lab)-1,LabLen) do (InLab[I] := UpperCase( Lab[I+1] ) ; $repeat ( &procedure JustFits; &begin +WriteLn( Copy(S, BOL, Length(S) - BOL) ); +Room := MaxLL ; +BOL := Length(S); &end; begiProbe := Trunc( (Lower+Upper) div 2 ) ; (with LabelDict[Probe] do (if InLab < LabelName ,then 0Upper := Probe - 1 ,else n { PrtRaw } %if Length(S) > 0 %then )begin -S := Concat(S, ' '); -if S[1] = '/' -then 1begin 5WriteLn; 5Room := MaxLL0if InLab > LabelName 4then 8Lower := Probe + 1 4else 8Found := True ; $until Found or (Upper < Lower) ; $if Found (the; 1end;  -if S[1] in ['/', ' ', '&'] -then 1BOL := 2 -else 1BOL := 1;  -while BOL < Length(S) do -begin 1NewRoom :=E begin %repeat )N := N - 1; )GoAhead := NextStr(S, Temp) and (N>0); %until not GoAhead; %P(Temp); end { PrintC }; procedure Wait; begin &At(24, 10); &Ask('Please press RETURN to continue.');  end { Wait };  const &LabMax = 350 ; LabLen = 8 ;  type %Marker = record 4Block : 0..1000 ; 4Byte : 0..512 ; 0end ; %IDK = packed array[1..LabLen] of char ;  %DirRecord = Record 5LabelName : IDK ; 5Place : Marker ; 1end ; %LabelRange = 0..LabMax ; var $LabCount : LabelRange ; $LabelDict : array [LabelRange] of DirRecord ; O^e, ' - labeled text not found.'); ,end; #end { PrLab }; begin { P } %while NextStr(Name, Temp) do (if Temp[1] = ':' ,the8An 0PrLab(Temp) ,else 0PrtRaw(Temp); end { P }; procedure Trap; forward; procedure Ask(Prompt : LongString); var I : integer; begin 'P(Prompt); 'ReadLn(KBD); 'if not Cases (then ,for I := 1 to Length(KBD) do 0KBD[I] := UpperCase(KBD[I]); 'KBDCopy := KBD; 'CrackCol := 1; 'Trap; end; procedure PrintC(N: integer; S: LongString); var %GoAhead : boolean; F Blk := Blk ; $BufPtr := Byt ; end { Seek }; {$G+}  {$R-} procedure GetRanLine(var X : string ) { Read line from random file O^};  label (1,2,3,4,5 ; const (CR = 13 ; Eat = 16 ; var (P, L, Z, EX, SP, BS : integer ;  begin $BS := 1 ;  1: L := OBBufSize - BufPtr + 1 { Chars left in line }; $P := Scan(L, = Chr(CR), RanBuf [BufPtr]) { Look for eol }; $if P < L then goto 3 { If full line gotten }; ( (if RanBuf [BufPtr] = Chr(0) then L := 0 { If trailing nulls }; (MoveLeft(RanBuf [BufPtr], X[1], L) { Copy first part of line }; (BS := L + 1 ; (Seek(ResBlk+1, 1) ; (if RanEOF then goto 5 ; (goto 1 { For maximum speed, if not clarity! }; $  3: MoveLeft(RanBuf [BufPtr], X[BS], P) { Move rest of line }; $if ( BufPtr+ P ) < BufSize $ then )BufPtr := BufPtr + P + 1 %else )begin -BufPtr := BufSize ; -RanBuf [BufPtr] := Chr(0) ; )end { Update line base }; $P := P + BS - 1 ; $  2: EX := Scan(P, = Chr(Eat), X[1]) { Check for space eater character }; $ $if EX >= P then goto 4 { If no eaters }; , (SP := EX + 3 ; (L := Ord(X[EX+2])-34 ; (if L > 0 then ,MoveRight(X[SP], X[SP { Random read routines } function RanOpen(FName : string) : boolean ; { Attempt to open random file } {$I-} begin { RanOpen }+L], P-SP+1) { lengthen } (else ,MoveLeft(X[SP], X[SP+L], P-SP+1) { shorten }; ( (if L > -2 then FillChar(X[EX+1], L+2, ' ' $Close(RanFil) ; $Reset(RanFil, FName) ; $RanOpen := IOResult = 0 ; $ResBlk := -1 ; $RanEOF := True ; $SpCount := 0 ; end) { space fill }; (P := P + L ; (goto 2 { For speed only!! };  4: begin $X[0] := Chr(P);  {$R+}  end;   5: { GetRan { RanOpen }; {$I+ } procedure RanRead(B : integer) { Read block B }; begin $RanEOF := BlockRead(RanFil, RanBuf, 1, B+2) < 1Line }  end; {$G-}   end ;  procedure Seek( Blk, Byt : integer ) { Position at Blk, Byt }; begin $if ResBlk <> Blk then $RanRead(Blk) ; $ResG jP.DIRTՃ"ˡ*ՃͶ?Can't open output file?Ճ^Մ^ՄՄ+ئAAAA BEGIN QUESTIONS := QUESTIONS + 1; P(':Q31|:AGR'); ASKYN; AT(7, 1); IF KM('NO') THEN COAAAAЩՄCآՄXآ ՄjՄr@VՅ ՅՅ"ڂ^ՅVՅ^^  ՅՅRRECT := CORRECT + 1; P(':Q31A'); WAIT; ERASEPAGE; NEXT := PQ32; END (*Q31*); PROCEDURE Q32;  MILTA ^  ՅՅȡRՅՅ ^Ն^^Ն*^ Ն9ՆHšՆxɡՆ gՋՋ&  Texts processed. ՆɡՆ  Շȡ?Շ ,ȡՇG(,Շz( ՇIՋO Ջfȡ*ՋՋj^ՋjՋՋjՋҶFile  .DIR crZ ՇՈ ,ՈgՈ, Ո@,áՈ] Ոt,:ՈءՈgՈ ՈĭQ\ Չ.^ġ(ՉPDirectoreated.Ռ? . ƉjƊƉ>ƊjՌ&Ռ/ Ռ5ƉjƉ>T':@tjbHy overflowՉs^Չ^ՉՉآfՉآ hՉإ(ՊՊ  ՊlՊ}ڪPՀ>Հ>Հ"ՀfՀgՀiՁRNՁW>>ɫg"ՁէfՊ Պg2ՊՊ Պ( Պӧá ՊՊՋgՋՋ&  Texts processed.ՁՂfՂhՂ"6ՂՂhՃ0 >h ՃnɡՃ~NՃ>háՃՄՋO Ջfȡ*ՋՋj^ՋjՋՋjՋҶFile  .DIR cr >hݞՄGՄYfՄmgՄ~ՄՄƥ>hقޞՄhނɡՅ'hނhՅHՅQhՅg>hՅeated.Ռ? . ƉjƊƉ>ƊjՌ&Ռ/ Ռ5ƉjƉ>T':@tjbHՅقՅ ՆġՆgՆ3ՆC"Ն]šՆtڂ݂ڕՆڂ݂ڕՆšՆ  overflowՉs^Չ^ՉՉآfՉآ hՉإ(ՊՊ  ՊlՊ}Շ݂Շ(ՇMՇQ޿ՇmՇl  zՁ3ɡՁDՁVՁc"Ձڳ ՁaAՂՊ Պg2ՊՊ Պ( Պӧá ՊՊՋgՋՋ&  Texts processed.Ղ"8Ղp ՂՂ MILTA - Create text directoryՂŶՂ϶ File name: ՂՋO Ջfȡ*ՋՋj^ՋjՋՋjՋҶFile  .DIR crPՂP.TEXTUPՃ?ՃAՃK?  Not found?ՃrՃeated.Ռ? . ƉjƊƉ>ƊjՌ&Ռ/ Ռ5ƉjƉ>T':@tjbHH YN; SCORING := KM('YES'); END; NEXT := PQ1; FOR I := 1 TO (KBDNUM - 1) DO NEXT := SUCC(NEXT); ERASEPAGE; REPEAT CASE NEXT OF PQ1: Q1; PQ2: Q2; PQ3: Q3; #END {ALTERNATEMULTIPLECHOICE}; # # #PROCEDURE MULTIPLECHOICE( NEWCHOICES, NEWANSWERS: CHOICESET; NOTE: STRING); #BEGIN &F PQ4: Q4; PQ5: Q5; PQ6: Q6; PQ7: Q7; PORMAT := CHOOSE; &EXPLANATION := NOTE; &CHOICES := CHOICES + NEWCHOICES; &ANSWERS := NEWANSWERS; #END {MULTIPLECHOICE}; # Q8: Q8; PQ9: Q9; PQ10: Q10; PQ11: Q11; PQ12:# #PROCEDURE SUBSTITUTION ( ANSWER, ALTERNATEANSWER, NOTE: STRING); #BEGIN &FORMAT := REPLACE; &SAVE( ANSWER ); &SAVE( ALTE Q12; PQ13: Q13; PQ14: Q14; PQ15: Q15; PQ16:RNATEANSWER ); &SAVE( NOTE ); &SUBCALLED := SUBCALLED + 1 ; &SUBLINES [SUBCALLED] := 0; #END {SUBSTITUTION}; & & #PROCEDU BEGIN TRIES := 0; QUESTIONS := QUESTIONS + 1; P(':Q32'); ASKNUM(KBDNUM, 2); AT(8, 1); IF KB Q16; PQ17: Q17; PQ18: Q18; PQ19: Q19; DNUM = 2 THEN BEGIN CORRECT := CORRECT + 1; P(':COR'); END ELSE B PQ20: Q20; PQ21: Q21; PQ22: Q22; PQ23: Q23; EGIN P(':WR'); END; P(':Q32A'); WAIT; ERASEPAGE; NEXT := LAST; END (*Q32*); BE PQ24: Q24; PQ25: Q25; PQ26: Q26; PQ27: Q27; GIN (*CASES*) START; ANSQ1 := ''; ANSQ5 := ''; ANSQ23 := ''; QUESTIONS := 0; CORRECT := 0; SCORING := FALSE PQ28: Q28; PQ29: Q29; PQ30: Q30; PQ31: Q31; ; TFILE('CASET'); ERASEPAGE; P(':I1'); AT(23, 1); ASK(''); GETNUMBER(KBDNUM, FOUND); IF NOT FOUND THEN  PQ32: Q32; END; UNTIL NEXT = LAST; IF SCORING THEN BEGIN P('/'); WRITE( BEGIN KBDNUM := 1; ERASEPAGE; P(':I2'); WAIT; ERASEPAGE; P(':HO'); 'You answered ', CORRECT, ' questions correctly. '); WRITELN('(', 100 * CORRECT DIV QUESTIONS, '% correct)'); EN ASKYN; IF KM('NO') THEN BEGIN AT(8, 1); P(':HO1'); D; P(':BYE'); WAIT; ERASEPAGE; END (*CASES*).  WAIT; ERASEPAGE; END ELSE ERASEPAGE; P(':WANTSCO'); ASKI ; # # #PROCEDURE CI3X2; #BEGIN &NUM(F2, 0, TEMPSTRING); &P(CONCAT(':CI32', TEMPSTRING)); &CASE F2 OF )1:; )2: ,BEGIN ious object'); ) )ALTERNATEMULTIPLECHOICE( [1,2,3,9], [3], ':335EXP'); &END {CI3X3X5}; & &PROCEDURE CI3X3X6; &BEGIN )OBJE/OBJECTION( PROSECUTION ); /MULTIPLECHOICE([1,2,3,9], [1], ':322EXP'); ,END; )3: ,BEGIN /OBJECTION( PROSECUTION ); /MULTIPCTION( PROSECUTION ); )SUBSTITUTION('SHOULD HAVE KNOWN', 'HE SHOULD HAVE KNOWN', )'336MES1'); )L('KNEW', 'knew'); LECHOICE([1,2,9], [9], ':323EXP'); ,END; )4:; )5: ,BEGIN /OBJECTION( PROSECUTION ); /MULTIPLECHOICE( [1, 2, 3, 9], [1], ')L('KNOW', 'knew'); )L('HOPE', 'hope'); )L('PRACT', 'believed it was practically certain'); )L('OBJECT', 'had the objective':325EXP'); ,END; )6: ,BEGIN /OBJECTION( PROSECUTION ); /MULTIPLECHOICE( [1,2,3,4,9], [1], ':326EXP'); ,END; &END {CASE}; ); )L('DESIRE', 'desired'); ) )ALTERNATEMULTIPLECHOICE( [1,2,3,9], [3], ':336EXP'); &END {CI3X3X6}; & #BEGIN &IF F3 <> 0 #END {CI3X2}; # # #PROCEDURE CI3X3; # &PROCEDURE CI3X3X4; &BEGIN )OBJECTION( PROSECUTION ); )SUBSTITUTION('IT WAS OBVIOTHEN )BEGIN ,NUM(F3, 0, TEMPSTRING); ,P(CONCAT(':CI33', TEMPSTRING)); )END; &CASE F3 OF )0, 1:; )2: ,BEGIN /OBJECTION( US', 'WAS OBVIOUS', ':334MES1'); )L('KNOW', 'he knew'); )L('KNEW', 'he knew'); )L('HOPE', 'he hoped'); )L('PURPOSE', 'it wasPROSECUTION ); /DELETION( 'PROBABLY', ':332EXP1'); / /ALTERNATEMULTIPLECHOICE( [1,2,3,7,9], [7], ':332EXP'); ,END; )3: ,BE his purpose'); )L('OBJECT', 'it was his conscious object'); )L('DESIRE', 'he desired'); GIN /OBJECTION( PROSECUTION ); /MULTIPLECHOICE( [1,2,3,4,9], [9], ':333EXP'); ,END; )4: ,CI3X3X4; )5: ,CI3X3X5; )6: ,CI)L('PRACT', 'he believed it was practically certain'); * )SUBSTITUTION('OBVIOUS', '', ''); )L('PURPOSE', 'his purpose'); )L3X3X6; )7, 8, 9, 10, 11:; )12: ,BEGIN /OBJECTION( DEFENSE ); /DELETION('BEYOND ANY DOUBT', ':3312EXP'); / /ALTERNATEMULTIRE DELETION( WORD, NOTE: STRING); #BEGIN &FORMAT := DELETETEXT; &SAVE( WORD ); &SAVE( NOTE ); #END {DELETION}; # # #PROC('DESIRE', 'his desire'); )L('HOPE', 'his hope'); )L('OBJECT', 'his conscious object'); ) )ALTERNATEMULTIPLECHOICE( [1,2,3,9EDURE SPECIALDELETION( FIRSTWORD, LASTWORD, NOTE: STRING); #BEGIN &FORMAT := DELETESPECIAL; &SAVE( FIRSTWORD ); &SAVE( LASTW], [3], ':334EXP'); &END {CI3X3X4}; & &PROCEDURE CI3X3X5; &BEGIN )OBJECTION( PROSECUTION ); )SUBSTITUTION('IT WAS CLEAR', ORD ); &SAVE( NOTE ); #END {SPECIALDELETION}; # # #PROCEDURE CI3X1; #BEGIN &NUM(F1, 0, TEMPSTRING); &P(CONCAT(':CI31', T'WAS CLEAR', ':335MES1'); )L('KNEW', 'he knew'); )L('PRACT', 'he believed it was practically certain'); )L('KNOW', 'he knew')EMPSTRING)); &CASE F1 OF )1, 2, 3, 4 :; )5: ,BEGIN /IF F3 <> 1 THEN 2BEGIN 5OBJECTION( DEFENSE ); ; )L('HOPE', 'he hoped'); )L('PURPOSE', 'it was his purpose'); )L('OBJECT', 'it was his conscious object'); ) )SUBSTITUTION5DELETION('ONLY', ':C315EX1'); 2END; /ALTERNATEMULTIPLECHOICE( [1,2,5,9], [5], ':315EXP'); ,END; &END {CASE}; #END {CI3X1}('CLEAR', '', ''); )L('DESIRE', 'his desire'); )L('HOPE', 'his hope'); )L('PURPOSE', 'his purpose'); )L('OBJECT', 'his conscJ /OBJECTION( PROSECUTION ); /DELETION( 'OR THAT HIS KICK WOULD CAUSE SEVERE INJURY', /':342EXP'); ,END; )3: ,BEGIN /OBJECT[I] )ELSE ,BEGIN /OK := TRUE; /WRONG; /ANSPTR := 1; /P(':WORDSB1'); /P(KBD); /P(':WORDSB2'); /P(S [ANSPTR]); /P(':WORDION( PROSECUTION ); /SPECIALDELETION('OR', 'BURGLARY', ':343EXP'); / /ALTERNATEMULTIPLECHOICE( [1,2,3,4,9], [2,4], ':343EXP')SB3'); /P(S [ANSPTR]); /P(':WORDSB4'); ,END {IF}; &END {WRONGDELETION}; & & &PROCEDURE TRYINSERTION; & &VAR )J: INTEGE; ,END; &END {CASE}; #END {CI3X4};    BEGIN #CI3X1; #CI3X2; #CI3X3; #CI3X4;  END {SETUPPROBLEM}; ) ) )  PROCEDUR; )LIMIT: INTEGER; & &BEGIN )OK := FALSE; )ASKCR(''); )J := ANSPTR + 1; )LIMIT := ANSPTR + SUBLINES [I] + 2; )REPEAT RE CUREDEFECTS;  #PROCEDURE DOWORDDELETION; #BEGIN &ASKCR(':WORDEL'); &ERASEPAGE; &IF KM(S [1]) THEN )BEGIN ,CORRECT; ,J := J + 2; )UNTIL (J > LIMIT) OR KM(S [J]); ) )IF J < LIMIT THEN ,BEGIN /OK := TRUE; /CORRECT; /P(':WORDSB1'); /P(S [,P('/Correct. '); )END &ELSE )BEGIN ,WRONG; ,P(CONCAT('/"', KBD)); ,ASKCR(':WORDEL1'); ,ERASEPAGE; ,IF KM(S [1]) THEN J + 1]); /P(':WORDSB6'); /P( EXPLANATION ); /P(':WORDSB7'); /WAIT; /ERASEPAGE; ,END )ELSE ,WRONG; &END {TRYINSERTION}; /BEGIN 2CORRECT; 2P('/Correct. '); /END ,ELSE /BEGIN 2WRONG; 2P(':WORDEL2'); 2P( CONCAT(' ', S [1], '."')); /END {IF};# # #BEGIN &OK := FALSE; &ANSPTR := 1; &I := 0; &ASKCR(':WORDSUB'); &ERASEPAGE; &REPEAT )I := I + 1; )IF LENGTH(S [AN )END {IF}; &P(S [2]); &WAIT; &ERASEPAGE; #END {DOWORDDELETION}; # # # #PROCEDURE DOSPECIALWORDDELETION; #BEGIN &ASKCSPTR]) >= LENGTH(S [ANSPTR+1]) THEN ,IF KM(S [ANSPTR]) THEN /CORRECTDELETION ,ELSE /IF S [ANSPTR+1] <> '' THEN 2IF KM(S [ANR(':WORDEL'); &ERASEPAGE; &IF EM(CONCAT(S [1], '|', S [2])) THEN )BEGIN ,CORRECT; ,P('/Correct. '); )END &ELSE )BEGIN SPTR+1]) THEN 5BEGIN 8P(S [ANSPTR+2]); 8WAIT; 8CORRECTDELETION; 5END 2ELSE 5WRONGDELETION )ELSE ,IF KM(S [ANSPTR+1]) TH,WRONG; ,P(CONCAT('/"', KBD)); ,ASKCR(':WORDEL1'); ,ERASEPAGE; ,IF EM(CONCAT(S [1], '|', S [2])) THEN /BEGIN 2CORRECT; 2EN /BEGIN 2P( S[ANSPTR+2]); 2WAIT; 2CORRECTDELETION; /END ,ELSE /IF KM(S [ANSPTR]) THEN 2CORRECTDELETION /ELSE 2WRONGDP('/Correct. '); /END ,ELSE /BEGIN 2WRONG; 2P(':WORDEL2'); 2P( CONCAT(' ', S [1], S[2], '."')); /END {IF}; )END {IF}; ELETION; &UNTIL OK; & & &TRYINSERTION; &IF NOT OK THEN )BEGIN ,P(':WORDSB1'); ,P(KBD); ,P(':WORDSB8'); ,TRYINSERTION; &P(S [3]); &WAIT; &ERASEPAGE; #END {DOSPECIALWORDDELETION}; &   #PROCEDURE DOWORDSUBSTITUTION; # #VAR &OK: BOOLEAN; ,IF NOT OK THEN /BEGIN 2P(':NOREC'); 2P(':WORDSB9'); 2P( EXPLANATION ); 2P(':WRDSB10'); 2P(S [ANSPTR]); PLECHOICE( [1,2,3,9], [3], ':336EXP'); ,END; &END { CASE }; #END {CI3X3}; # # #PROCEDURE CI3X4; #BEGIN &IF F4 <> 0 THEN &I: INTEGER; &ANSPTR: INTEGER; # # &PROCEDURE CORRECTDELETION; &BEGIN )OK := TRUE; )CORRECT; )ERASEPAGE; )P(':WORDSB0')BEGIN ,NUM(F4, 0, TEMPSTRING); ,P(CONCAT(':CI34', TEMPSTRING)); )END; &CASE F4 OF )0, 1:; )2: ,BEGIN ); &END {CORRECTDELETION};   &PROCEDURE WRONGDELETION; &BEGIN )IF I < SUBCALLED THEN ,ANSPTR := ANSPTR + 3 + SUBLINES K |', TEMPSTRING)); /END ,ELSE /IF (I IN ANSWERS) AND NOT (I IN KBDANSWERS) THEN 2BEGIN 5WRONG; 5P(CONCAT('/|:MULTWG1|', TEM{WDF}. 2 2 2P(':WRDSB11'); 2P(S [ANSPTR + 4]); 2P(':WRDSB12'); 2WAIT; 2ERASEPAGE; /END; )END; #END {DOWORDSUBSTITUTION}; , # #PRPSTRING)); 2END /ELSE 2IF (I IN KBDANSWERS) AND NOT (I IN ANSWERS) THEN 5BEGIN 8WRONG; 8P(CONCAT('/|:MULTWG2|', TEMPSTRINGOCEDURE DOMULTIPLECHOICE; # #VAR ©ANSWERS: CHOICESET; &KBDANSWERS: CHOICESET; &PERM: SERIES; &CARD: CHOICERANGE { card)); 5END; )END {FOR}; &WAIT; #END {DOMULTIPLECHOICE}; # #  BEGIN #IF DEFECTS > 1 THEN &FORMAT := CHOOSE; # #CASE FORMinality of set choices }; &I: CHOICERANGE; &FOUND: BOOLEAN; &COMPLETELYWRONG: BOOLEAN; # # &PROCEDURE PROCESSSETELEMENT; AT OF &CHOOSE: )DOMULTIPLECHOICE; &REPLACE: )DOWORDSUBSTITUTION; &DELETETEXT: )DOWORDDELETION; &DELETESPECIAL: &BEGIN )IF I IN CHOICES THEN ,BEGIN /CARD := CARD + 1; /IF I IN COPYANSWERS THEN 2ANSWERS := ANSWERS + [CARD]; /NUM(CARD, )DOSPECIALWORDDELETION; #END {CASE};  END {CUREDEFECT}; ) )  BEGIN #START; #TFILE('WDFT'); #INITILIZE; #REPEAT &REWIN0, TEMPSTRING); /P(CONCAT('/', TEMPSTRING, '. ')); /NUM(I, 0, TEMPSTRING); /P(CONCAT(':MULT', TEMPSTRING)); ,END {IF}; &END; &REPEAT )SELECTFRAGMENTS; &UNTIL NOT PICKED [F1, F2, F3, F4]; & &PICKED [F1, F2, F3, F4] := TRUE; &SETUPPROBLEM; # &AD {PROCESSSETELEMENT}; & #BEGIN ©ANSWERS := ANSWERS; &ANSWERS := []; &SETPERM(MAXCHOICES - 1, PERM); &RANDP(FOUND, I, SKCR('/Is the foregoing objectionable?'); &ERASEPAGE; &IF KM('Y') = ( PROSECUTION OR DEFENSE ) THEN )BEGIN ,CORRECT; ,P('/CPERM); &CARD := 0; &WHILE FOUND DO )BEGIN ,PROCESSSETELEMENT; ,RANDP(FOUND, I, PERM); )END {WHILE}; ) &I := MAXCHOICES; orrect. The instruction is '); ,IF NOT ( PROSECUTION OR DEFENSE ) THEN /P('not '); ,P('objectionable.'); )END &ELSE )BEGI&PROCESSSETELEMENT; &P('/'); ) &REPEAT )AT( 12, 1); )ERASELINE; )AT( 13, 1); )ASK(''); )KBDANSWERS := []; N ,WRONG; ,P('/Wrong. The instruction is '); ,IF NOT ( PROSECUTION OR DEFENSE ) THEN /P('not '); ,P('objectionable.'); )E)CRACK([',', ' '], FOUND); )WHILE FOUND DO ,BEGIN /GETNUMBER(I, FOUND); /IF FOUND AND (I > 0) AND (I <= CARD) THEN 2KBDANSND; ) &IF PROSECUTION <> DEFENSE THEN )BEGIN ,P('/The instruction is too favorable to:'); ,P('/ a. the prosecution'); WERS := KBDANSWERS + [I]; /CRACK([',', ' '], FOUND); ,END {WHILE}; )COMPLETELYWRONG := ( ANSWERS - KBDANSWERS ) = ANSWERS; ),P('/ b. the defense.'); ,ASKCR(''); ,ERASEPAGE; ,IF KM('A') = PROSECUTION THEN /BEGIN 2CORRECT; 2P('/Correct. '); /IF COMPLETELYWRONG THEN ,BEGIN /WRONG; /P(':MULTWNG'); ,END; &UNTIL NOT COMPLETELYWRONG; & &AT( 13, 1); &FOR I := 1 TO CEND ,ELSE /BEGIN 2WRONG; 2P('/Wrong. '); /END; / ,P('The instruction is too favorable to the '); ,IF PROSECUTION THEN ARD DO )BEGIN ,NUM(I, 0, TEMPSTRING); ,IF (I IN ANSWERS) AND (I IN KBDANSWERS) THEN /BEGIN 2CORRECT; 2P(CONCAT('/|:MULTCOR/P('prosecution.') ,ELSE /P('defense.'); )END; & &IF DEFECTS > 0 THEN )CUREDEFECTS; &SCORESTUDENT; #UNTIL FALSE;  END L