detector, which he now swept across the ground. Within a few seconds, it too, started beeping. "We must dig here," said Holmes, and he returned the metal detector to his pocket, and took out two large shovels, giving one each to Pollayo and myself. "Wait a minute," I said," You said We must dig here." "I meant, you must dig here," and he lapsed into silence. We both started digging, and within a few minutes, our shovels hit something hard. Ten minutes later, we had uncovered it. It was a large, wooden chest, banded with iron. We could not lift it, but using his shovel, Pollayo broke open the rusty lock, and lifted the lid. The sight inside was fantastic. Gold and jewels sparkled in the little light there was. Bracelets, necklaces, arm bands, cups, chalices, diamonds, rubies, emeralds... "The Spanish treasure, buried in haste as Henry Morgan sacked the city of Panama." "This is what Mantis found?" I asked. "Yes." "But how did you know? What did you mean by 'ants'?" "I will explain everything back at the hotel, over a nice cup of tea. Colonel, you'll take care of this?" "Yes, Senor Holmes." Back at the hotel, over a nice cup of tea, Holmes explained everything. "You see, I knew Mantis would try to leave a clue, but I could not think how. If he had written in his journal, or a paper somewhere, it would have been found by Maximo. So he relied on the ants. Mantis, being an entomologist, knew the habits of rainforest ants. One particular ant is the leaf-cutter ant. There are three kinds in a leaf-cutter nest. The workers go out and harvest leaves, cutting them into small pieces and bringing them back. The soldiers guard the trail, and the chewers, back in the nest, chew up the leaves and grow fungus on them. The fungus produces a sweet liquid that the ants eat." "That's amazing, but how does that solve the mystery?" "Mantis had to leave a clue somewhere, and knowing the habits of the ants, he wrote the message on a leaf!" "What?" "He is being pursued. He knows who they are, and he has to leave a clue. As they close in, he notices leaf-cutters at work on a nearby tree. He goes over to one of the sprigs, writes the message on the leaf, then continues running. He is caught, and killed. By the time the Maria gang searches the forest, and by the time the police search the forest, the leaf has already been cut into small pieces, and carried back to the nest." "But how did you find all the right leaves? Would they have been chewed up?" "No. The chewers examine every leaf that comes in, and they reject ones that are not edible. Mantis wrote with a permanent marker on the leaf, and the chewers rejected all the leaf pieces with marker on them. Rejected leaves are carried back outside the nest, and dumped on the ground." "How did you find the nest?" "I went through the area again, looking for the trails the ants make. There were several, and I followed them all. Eventually, one of the trails led me to the nest, and there, on the ground, were pieces of leaf with black lines on them. I gathered them up, and using tape, pieced the message back together." "That's amazing!" "I know." "But why did Mantis leave a message that way? How could anyone except you figure that out?" "He knew that if he died, I would be called in. So he left it in such a way that only I could figure it out." "I'm not sure who is cleverer," I pondered, "Him, because he left such an unusual clue, or you, because you solved it." "I am," said Holmes. w that if he died, I would be called in. So he left it in such a way that only I could figure it out." "I'm not sure who is cleverer," I pondered, "Him, because he left such an unusual clue, or you, becauџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџs's camp was nothing special. The forest crowded in around a small clearing where a small tent was set up. The tent had several large rips in it. Next to it, a small table and chair, and on the ground, pieces of the radio equipment. A small brook babbled about ten feet away, winding its way through the dense forest. Holmes asked Pollayo, "And did you find any clues when your men went over this place?" "Si and no. Si, because we found his journal, and no, because it only hinted at what he found." "What did it say?" I asked. "Good question," praised Holmes. "I have it here in my pocket," replied the Colonel. He took it out, a small, dirty notebook, opened it up and read,"'I cannot believe what I have found. But I think my radio is being monitored secretly. I must tell the authorities.' That was his last entry." Holmes sat down on the chair, closed his eyes, rested his chin on his hands, his hands on his knees, his legs on the ground, the ground on the continent of North America, North America on.... "What is he doing?" asked the Colonel. "Thinking", I hoped, and said so. After a few minutes, Holmes spoke, "Imagine if you will, Mantis finds some great treasure, but knows the radio is being monitored by the Maria gang. He says too much over the air, and Maximo arrives. We can assume that Mantis did indeed find valuable treasure, otherwise the Maria gang would not be involved. Maximo and his gang are getting closer, and Mantis knows it. I suspect he saw the killers coming. What would he do?" "Run?" I suggested. "Yes, but where? The jungle is all around." "Probably down the trail?" I suggested. "Yes, and that is where they caught him, and tied him down, and inserted a frog. But before that, Mantis must have left a clue! A clue to who the perpetrators were, and perhaps even what he found." "But Senor Holmes," pleaded Pollayo, "We've searched the whole camp, plus the jungle around here for half a mile in all directions. There is no trace of writing, signs, or evidence of anything." "Think! I must have time to think!" spake Holmes, "Let us leave now." The next morning, back in our hotel, I awoke, and knocked on the door leading to Holmes room. There was no answer. Trying the door, I found it unlocked, and looked in on the adjoining suite. The bed was slept in, but there was no Holmes to be found. I went down to breakfast, and while I was enjoying fresh pineapple, mango, and banana, Holmes sat down across from me. "Good morning, Watson. I see you are enjoying the local fruit." "Good deduction, Holmes. Where have you been?" "Early this morning, I had an idea of where Mantis might have left a clue. I was out on Pipeline Road again, looking." "And?" "And", said Holmes, and he gave me a sheet of paper. On it was written 'Found large quantity of gold, Maximo is coming closer' and then there were some numbers. "Holmes, where did you get this?" "It's a copy, Watson, of the original that I found this morning in the jungle. Mantis was very clever. He hid his message very well. I showed the original to Pollayo, and he confirmed the handwriting is Mantis's. The good Colonel has the original now, and his men are arresting Maximo and his gang even now. Let us go down to the station." "Surely we're not leaving." "The police station." "Oh, I thought you meant-" "Come along, Watson." We arrived just as the police van pulled up, and the officers escorted Maximo and three others out of the van, all of them cuffed, both hands and feet. Maximo stopped when he saw us, and looked Holmes right in the eye. "Zo, it vaz you who found me out. How did you do it?" "Ants," replied Holmes, enigmatically. "Ants?" said Maximo, Pollayo, and I in unison. "Ants," repeated Holmes. Maximo and his men were convicted of murder, confessed to the other eight killings, forfeited the treasure they had stolen from the other eight, and were sentenced to work as long-distance telephone company solicitors, the harshest punishment here in Panama. Back on Pipeline Road, Pollayo and I waited for Holmes to speak. He had insisted we come back to this beautiful, but deadly spot. "Gentlemen," said Holmes, "I will now lead you to the treasure." Taking a portable GPS system out of a pocket, he entered the numbers from Mantis's note, and we set off through the jungle. After twenty minutes of walking, the GPS began beeping. Holmes put the GPS into his pocket, and took out a small metalА`У€/џ?џ€#@€ЏџљџbЅР€ 0Пџэџа‚™@€ Рœ#lи џяџ(Є Х"РА`џ( O tР8д РkX_џ$~ ˆœ ?` ш4Аџ§ŸџЭШ$€ч€ >\`џ§oџ gаH€Ь€Р)”џяџˆ•x € №аJрр?џќ0—%I@Р€ РПџ‘Ј ”0ЂTahcG‚џ?џіD€”€№H€Р џў?џ№2и€Ь„`/џєџ•H Ьeœ  DџѓџѓDЬ Ј€&.$€џЇџ Ј 0€g.Ž€Ф№џ—џ§HЩ№”€ Ѕ ”џ_џЬ%X€ ЉPF€Wџ§џї9• (8d"BРРпџћџB”€€8B `аџыџŸ@=A№$ €X џпџ?@ ЃРH?Р+џўПџП€ №(I€ ‹Џџ§џћўЬ€ @P4HЊПџѓџГ € @№н 3џљџЧџьЬ€Ф@(ч €<aЬџћџяџГФP ИCГ3џпџФ0€ q*€ймџПџ0€ *Uд’џџ€€88 €іШˆ”пџў?џќppЂˆ•Пџќџp 8@LШ@}џљџќ  €@Psџѓџўr$PT&Oџ№($œj€Ч?џЯџќp"€F@@Œ<џ№Q@Ц€P`s7џј(RT@Р ЬЯџРtТPH€ џ№0Ё@%џРdЄ@P;?џрd€ #С€T<џ "€`џР€ €@lЬЭ€``€€Ff DЭТbxХ 2Jм 3`3!ŒЖd1Ђfpц) %&Z”KІ I1 I€H-JX•ЉRкP(…*@ @RT T$ˆ€`+ѓњJ) § ќРќS ј јˆ)C ”DІ I1ˆHI@I@ R’€YМ c=™œИЦ@ЮJQ€Я`ЮLŽї™‘уœц RЂ )<>q;2)JP$fjH%(™˜=€ШA‘10”+$р)ŒRЦ%ЅЉ JаF1ˆ‘’ˆ”Є№+@ J6ƒ$Ф"˜€)‚@ • @€™L J ќ јHХ~`№ § €ФрŒ@F HF1ˆ”1ˆTЄ ЉJ тХbXрRА *Y™‘›ЬР)JP%›Ъ%Ич˜=ƒ31ЮFT*UЙ` €€(DP `€ €(€ Р3џ€pР3Ссј ›УaМ(`№ЁƒСмЧ1уБро`~љІь]}œєl=6xњџРыџПєР}`ІЊўе€љЌ лпюпаыј;<ю’эmчћп§ч=ял?§БюэЦџяp?їSРџяЈ3ъяљСѕљ_ƒ=јѓѓžїёŠў1СџћЦџјСА{ќ`~ё€џџУяџс€uџ0`џПўлўўюџƒ€_0ќРt˜pР'opќCРOьOx:Ќ O€њќѕиїря€ >˜!ч o=№Ъ№[ ?x€?Р пР9|РЗ`ž`їјР?ќр>јР?П€р€ќ D§€ ћР€Тг€@`{З€@€ €ћИHю№˜'№|ќ=7€Р KРр/ѕр№ я€€?ќ РрhxЫРр7>мёѕрP­>mйРpзЯ 8 эxp 3oп€№6жЬPџОpџNрєП€`ї№ю€8ИрK€h№МјЖ0aіиљ€<,‡€|И?ХАѕ€?Ир`€Р|€п€`8є`МcюџџџЦџџџОўp>ьcь~џпџќџџџўўљоxиС№wppџџПўџћџxџяŸьџџџ џџџ0џџџ џ§џ lx€|РƒРƒРќџ€>Яh?яџќ;?мљЧ>Ыиџ>˜џ0;Э€џР?Я€Ÿи?ИПј?У8—ї?ƒ0ј?яуў?ЯјџПŽ0џсџЦpџqі`џЦїЦ`џрїю`џp~юaјњь`№ћќсƒіќР№~§јСЬpџјСО€љСЃ`љУё˜ј|l?љƒ>Нƒ†?Пf?ПіПў?П‡ ўП†wП† ?џЦ ?WР wц ?wр їј oу~ oу> gуž яу‡ џс‡џС‡ŒџСƒŸС€€џџџ€џџџ€џн§РџпўРџџџџџџ€fпџџџўџџџџўџї?ЯќџџџПўпџўџџџџўfu|d_vBPxbGLX~H@џџWџ0wџWlџ^kџž яу‡ џс‡џС‡ŒџСƒŸС€€џџџ€џџџ€џн§РџпўРџџџџџџ€fпџџџўџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџŽ ^kЯP№P№@P№@P№@P№@P№@А@АP№@А А@А№АP№@А А@А№АP№@А А@А№АP№@ @А№АP№@А@А№АP№@А Р А@А№P№@АРА@А№АP№@А РЋ    Р Ћ АP№@А@РЋ    Р №P№@АА@РК А№P№@АА@Ћ  А№@ААЋ   АКАБ@АА АДАК АБ@ААДАК АБ  @K  Ћ №є  @K  Ћ №PАДАК А@ŸŸДА А№PАŸŸА@А А№є    №љ  №љ  ЁА@А€№PАŸАКЁИ*€№є €‚ЈШ €И       . Ш. & №€P €Р€Œ€‚рР@т . РТn №€P№p€ ‚РL L. №€P№p€ €‚РФР@РТ №љ , HL @РP№pŸ€ €Р€‚РФ„€РТфРш №љ , H РPp€№˜Ш, H,  ( №љ№љ Р„€Тў    љ љ Ш Р„Р/Ÿ, Р( РШ Р„РР„‚рРP€ €Р€‚ HL ‘р„РТ€№pљ€Р€Ž РФ„Р&,  №љ љтРФР`Рш љ тРФ B РТ€PpŸљ љ РШтРФ KF,  №ŸŸŒ €Ž,  А`Рш №љ№€Р€Ž,  тm РŸŸ., РПK аТтрТ€PŸ‚рРL B .,  №љiШ. РФ€`РТ€p№№љ. L р`Р а‰  №љ№љШ. HL @bт,  €Ÿљ №Œ €‚рРФ„€Р„РbР аŸР‚рРФ„€РФ€Р`Р. а€ŸŸ€Р€‚рР„€РL рРТр. €№Ÿ‚рР€Р@РHB`№‚рРФРФ„Ž рРԈЄЈŸŒ €Ž, H„РФ€Р„€Œ €Ž, H@РL рŸ  тР€„„Р€Ÿ€Ž, @€„ ,  РШ Р€Ž ШШ Р€Ž РШЂ рP€€Œ €‚    Р€€Р€‚Р€№€‚Р€Ž ,  ,  РШ,   .  РШ.   . р№p€`€‚рР€P№€`€Ž L `€Œ €Ž, L ШтР@Р€P№p€€Ž,  Ш, @Р€Ž€†РШ Р€L РШ Р„ €h  РФРФ€P№x`h€`€Р€‚ @L `† Р@€Р€P№h, Р@€Ž€`€‚Р@Р€@€№`†РШ, @„Р€@€P№`ЂЈ„€Р€@P`№``Œ €‚РФФР@`oР`№`€Р€‚рРФ `№Р`a. Р@ŽР`№`‚рР@L Р`№hРШ. @H@H  ШрРФ€„€Рp@€P`№€Ž, L P`№ітРФL P`Ž, @„РpŽ P`№`Ž, L ”Q `‚Р@L  P`o `€‚ @РФћP`№И РФ€@Р€@p@БP`№И Р€@РФ€L№А`№И Р„  р@В €‚ @L @L  `№И, РФ€@Р€@№`№АИ,  Р@€@В €‚РФРФL „€@В №АаРФ€@Р@€РH `o  Р„РL „Ž€Ž№В бм €РФ „€В№АP№бм РТ€р€рO `0`№АЕ РФ €р@В_ №аР€L €шрO PАЕЕ @РŽ€р№`ОАЕАЕ Р@€РТ€ш№`АЕаРФРАі P№аР€@Р(ћ P§РФР@Ає† P№РФ€РТ€ћ Ы P№бм L  №АЕбаРш №АЕ Р@АП P№РТ€АЕ + K P№б €FАН› P№бм `+ а› P№РТ€@dєАPђтnh№0РА€ а №РА€  №РА€№РА€№РА€ а №РА€ а №РР€0€€P@Фxp 0€R H„Ь0ШPcDBA‰а"1€.EЖ")QмO$ŽаAEJЁ0Рš(‡‚€AB…P 0†€P  ”Ё _рD‚ Ap$!2"с@ СŒ„†S&'`BˆР "@BЬ„(`€ЁР(P„€0 €‘pа:0№B€ бЁ@ Р xдˆа ”ђ€xP˜ˆ @$Р.Е”@дфŒ$РH@, €"4рaкc). :D< QкСP РшtuŒР Р<н € ѓ0џПяџј№ ’;€џќЏЯџР@ qР—џПџ№рсРqРпџ§џРРбР˜€ џЯѓџр €`Р/џїџР €€ @6 €л`ПќўџРФ@їб`џљџўПџ€!€@рjРџчџ№kџќ0рРР_џџєџя?€ў?џўЫў, 8p1…џјџУє €Hџѓџюў 0˜€ŽЬ_џеяє8€РЭџ№зм€А„џіяф  ю‡џўћџћ=€Рl_џљџћpР(џѓџШr`џў„ ˆР Э€ џ§Яџ€…€/џ 37ПџєŽKПџHЬЯ№€<џР<xџ@ €Р№ Юџ€рр€Ь7џ  №Р9РIџ(t €pрџ0-- @ џ 8pр+џ ! QЏџw€ 8 B˜Пџ@™qˆ€€ `џ”‰He@Р0йАџTЄŠP$’€€Раx_џ@І P %˜@€Б№жАџЖЂ€ њSh`#@рi`џјР"‘R0Щ$p№`Т@џ0ž$Фр†/џ€JЩ[ир€9РПџЯџ˜і`і&,<€0‚џŸџG "Ф ~  € џўџЄ#т'=Ш?0 Рџўџ(“ р@8РPрWџ§џ(• f­€[р( 8p_џћџ %c#[ шРР џыџРЦT$@и`Žр(8p џ_џ у и€ @-SWITAB 02120 FDB NULL-SWITAB 02130 FDB NULL-SWITAB 02140 FDB NULL-SWITAB 02150 FDB NULL-SWITAB 02160 FDB NULL-SWITAB 02170 FDB NULL-SWITAB 02180 FDB NULL-SWITAB 02190 FDB NULL-SWITAB 02200 FDB NULL-SWITAB 02210 FDB NULL-SWITAB 02220 FDB NULL-SWITAB 02230 FDB NULL-SWITAB 02240 FDB NULL-SWITAB 02250 FDB NULL-SWITAB 02260 FDB NULL-SWITAB 02270 FDB NULL-SWITAB 02280 FDB NULL-SWITAB 02290 FDB NULL-SWITAB 02300 FDB NULL-SWITAB 02310 FDB NULL-SWITAB 02320 FDB NULL-SWITAB 02330 FDB NULL-SWITAB 02340 FDB NULL-SWITAB 02350 FDB NULL-SWITAB 02360 FDB NULL-SWITAB 02370 FDB NULL-SWITAB 02380 FDB NULL-SWITAB 02390 FDB NULL-SWITAB 02400 FDB NULL-SWITAB 02410 FDB NULL-SWITAB 02420 FDB NULL-SWITAB 02430 FDB NULL-SWITAB 02440 FDB NULL-SWITAB 02450 FDB NULL-SWITAB 02460 FDB NULL-SWITAB 02470 FDB NULL-SWITAB 02480 FDB NULL-SWITAB 02490 FDB NULL-SWITAB 02500 FDB NULL-SWITAB 02510 FDB NULL-SWITAB 02520 FDB NULL-SWITAB 02530 FDB NULL-SWITAB 02540 FDB NULL-SWITAB 02550 FDB NULL-SWITAB 02560 FDB NULL-SWITAB 02570 FDB NULL-SWITAB 02580 FDB NULL-SWITAB 02590 FDB NULL-SWITAB 02600 FDB NULL-SWITAB 02610 FDB NULL-SWITAB 02620 FDB NULL-SWITAB 02630 FDB NULL-SWITAB 02640 FDB NULL-SWITAB 02650 FDB NULL-SWITAB 02660 FDB NULL-SWITAB 02670 FDB NULL-SWITAB 02680 FDB NULL-SWITAB 02690 FDB NULL-SWITAB 02700 FDB NULL-SWITAB 02710 FDB NULL-SWITAB 02720 FDB NULL-SWITAB 02730 FDB NULL-SWITAB 02740 FDB NULL-SWITAB 02750 FDB NULL-SWITAB 02760 FDB NULL-SWITAB 02770 FDB NULL-SWITAB 02780 FDB NULL-SWITAB 02790 FDB NULL-SWITAB 02800 FDB NULL-SWITAB 02810 FDB NULL-SWITAB 02820 FDB NULL-SWITAB 02830 FDB NULL-SWITAB 02840 FDB NULL-SWITAB 02850 FDB NULL-SWITAB 02860 FDB NULL-SWITAB 02870 FDB NULL-SWITAB 02880 FDB NULL-SWITAB 02890 FDB NULL-SWITAB 02900 FDB NULL-SWITAB 02910 FDB NULL-SWITAB 02920 FDB NULL-SWITAB 02930 * end of SWI jump table 02940 * NULL command: 02950 NULL RTS WITAB 02870 FDB NULL-SWITAB 02880 FDџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ0 FDB NULL-SWITAB 00590 FDB NULL-SWITAB 00600 FDB NULL-SWITAB 00610 FDB NULL-SWITAB 00620 FDB NULL-SWITAB 00630 FDB NULL-SWITAB 00640 FDB NULL-SWITAB 00650 FDB NULL-SWITAB 00660 FDB NULL-SWITAB 00670 FDB NULL-SWITAB 00680 FDB NULL-SWITAB 00690 FDB NULL-SWITAB 00700 FDB NULL-SWITAB 00710 FDB NULL-SWITAB 00720 FDB NULL-SWITAB 00730 FDB NULL-SWITAB 00740 FDB NULL-SWITAB 00750 FDB NULL-SWITAB 00760 FDB NULL-SWITAB 00770 FDB NULL-SWITAB 00780 FDB NULL-SWITAB 00790 FDB NULL-SWITAB 00800 FDB NULL-SWITAB 00810 FDB NULL-SWITAB 00820 FDB NULL-SWITAB 00830 FDB NULL-SWITAB 00840 FDB NULL-SWITAB 00850 FDB NULL-SWITAB 00860 FDB NULL-SWITAB 00870 FDB NULL-SWITAB 00880 FDB NULL-SWITAB 00890 FDB NULL-SWITAB 00900 FDB NULL-SWITAB 00910 FDB NULL-SWITAB 00920 FDB NULL-SWITAB 00930 FDB NULL-SWITAB 00940 FDB NULL-SWITAB 00950 FDB NULL-SWITAB 00960 FDB NULL-SWITAB 00970 FDB NULL-SWITAB 00980 FDB NULL-SWITAB 00990 FDB NULL-SWITAB 01000 FDB NULL-SWITAB 01010 FDB NULL-SWITAB 01020 FDB NULL-SWITAB 01030 FDB NULL-SWITAB 01040 FDB NULL-SWITAB 01050 FDB NULL-SWITAB 01060 FDB NULL-SWITAB 01070 FDB NULL-SWITAB 01080 FDB NULL-SWITAB 01090 FDB NULL-SWITAB 01100 FDB NULL-SWITAB 01110 FDB NULL-SWITAB 01120 FDB NULL-SWITAB 01130 FDB NULL-SWITAB 01140 FDB NULL-SWITAB 01150 FDB NULL-SWITAB 01160 FDB NULL-SWITAB 01170 FDB NULL-SWITAB 01180 FDB NULL-SWITAB 01190 FDB NULL-SWITAB 01200 FDB NULL-SWITAB 01210 FDB NULL-SWITAB 01220 FDB NULL-SWITAB 01230 FDB NULL-SWITAB 01240 FDB NULL-SWITAB 01250 FDB NULL-SWITAB 01260 FDB NULL-SWITAB 01270 FDB NULL-SWITAB 01280 FDB NULL-SWITAB 01290 FDB NULL-SWITAB 01300 FDB NULL-SWITAB 01310 FDB NULL-SWITAB 01320 FDB NULL-SWITAB 01330 FDB NULL-SWITAB 01340 FDB NULL-SWITAB 01350 FDB NULL-SWITAB 01360 FDB NULL-SWITAB 01370 FDB NULL-SWITAB 01380 FDB NULL-SWITAB 01390 FDB NULL-SWITAB 01400 FDB NULL-SWITAB 01410 FDB NULL-SWITAB 01420 FDB NULL-SWITAB 01430 FDB NULL-SWITAB 01440 FDB NULL-SWITAB 01450 FDB NULL-SWITAB 01460 FDB NULL-SWITAB 01470 FDB NULL-SWITAB 01480 FDB NULL-SWITAB 01490 FDB NULL-SWITAB 01500 FDB NULL-SWITAB 01510 FDB NULL-SWITAB 01520 FDB NULL-SWITAB 01530 FDB NULL-SWITAB 01540 FDB NULL-SWITAB 01550 FDB NULL-SWITAB 01560 FDB NULL-SWITAB 01570 FDB NULL-SWITAB 01580 FDB NULL-SWITAB 01590 FDB NULL-SWITAB 01600 FDB NULL-SWITAB 01610 FDB NULL-SWITAB 01620 FDB NULL-SWITAB 01630 FDB NULL-SWITAB 01640 FDB NULL-SWITAB 01650 FDB NULL-SWITAB 01660 FDB NULL-SWITAB 01670 FDB NULL-SWITAB 01680 FDB NULL-SWITAB 01690 FDB NULL-SWITAB 01700 FDB NULL-SWITAB 01710 FDB NULL-SWITAB 01720 FDB NULL-SWITAB 01730 FDB NULL-SWITAB 01740 FDB NULL-SWITAB 01750 FDB NULL-SWITAB 01760 FDB NULL-SWITAB 01770 FDB NULL-SWITAB 01780 FDB NULL-SWITAB 01790 FDB NULL-SWITAB 01800 FDB NULL-SWITAB 01810 FDB NULL-SWITAB 01820 FDB NULL-SWITAB 01830 FDB NULL-SWITAB 01840 FDB NULL-SWITAB 01850 FDB NULL-SWITAB 01860 FDB NULL-SWITAB 01870 FDB NULL-SWITAB 01880 FDB NULL-SWITAB 01890 FDB NULL-SWITAB 01900 FDB NULL-SWITAB 01910 FDB NULL-SWITAB 01920 FDB NULL-SWITAB 01930 FDB NULL-SWITAB 01940 FDB NULL-SWITAB 01950 FDB NULL-SWITAB 01960 FDB NULL-SWITAB 01970 FDB NULL-SWITAB 01980 FDB NULL-SWITAB 01990 FDB NULL-SWITAB 02000 FDB NULL-SWITAB 02010 FDB NULL-SWITAB 02020 FDB NULL-SWITAB 02030 FDB NULL-SWITAB 02040 FDB NULL-SWITAB 02050 FDB NULL-SWITAB 02060 FDB NULL-SWITAB 02070 FDB NULL-SWITAB 02080 FDB NULL-SWITAB 02090 FDB NULL-SWITAB 02100 FDB NULL-SWITAB 02110 FDB NULL00100 * Stub to assemble Assembly Language 00110 * programming stuff for part 9 00120 INCLUDE MACROS.ASM get macros 00130 ORG $7000 you can change this address 00140 START LBSR SETUP install interrupt handler 00150 LBRA BEGIN start your code 00160 * get the library code 00170 INCLUDE PART9A.ASM 00180 INCLUDE PART9B.ASM 00190 * your code here 00200 BEGIN 00210 00220 RTS 00230 END START 00240 * we start executing at "START" џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ00010 ************************************************* 00020 * Collection of useful subroutines for accessing 00030 * the "extended" memory on the CoCo3 00040 * 00050 * Note that this assumes that it is located above 00060 * $4000 and that the SWI handler is always in the 00070 * logical address space 00080 ************************************************* 00090 * Installation routine: 00100 SETUP LEAX SWI,PCR point to the SWI handler 00110 LDA #$7E JMP operation code 00120 STA $FEFA * make a JMP SWI instruction 00130 STX $FEFB * at SWI vector 00140 RTS return to calling routine 00150 00160 * the acutal SWI handler 00170 SWI ANDCC #$AF enable interrupts to be polite 00180 LDX 10,S get PC 00190 LDB ,X+ get the next byte in the program 00200 STX 10,S bump PC on the stack 00210 LEAX SWITAB,PCR point X to the jump table 00220 CLRA * calculate offset in table 00230 LSLB * 00240 ROLA * 00250 LDD D,X get offset to routine 00260 LEAX D,X get the exact address of the routine 00270 PSHS X store on the stack 00280 LDD 3,S * get back registers 00290 LDX 6,S * 00300 JSR [,S++] call the subroutine 00310 STD 1,S store D 00320 STX 4,S store X 00330 STY 6,S store Y 00340 STU 8,S store U 00350 RTI return to the calling routine 00360 * SWI jump table (must have 256 2-byte entries) 00370 SWITAB FDB SWI00-SWITAB 00380 FDB SWI01-SWITAB 00390 FDB SWI02-SWITAB 00400 FDB SWI03-SWITAB 00410 FDB SWI04-SWITAB 00420 FDB SWI05-SWITAB 00430 FDB SWI06-SWITAB 00440 FDB SWI07-SWITAB 00450 FDB SWI08-SWITAB 00460 FDB SWI09-SWITAB 00470 FDB SWI0A-SWITAB 00480 FDB SWI0B-SWITAB 00490 FDB SWI0C-SWITAB 00500 FDB SWI0D-SWITAB 00510 FDB SWI0E-SWITAB 00520 FDB SWI0F-SWITAB 00530 FDB SWI10-SWITAB 00540 FDB SWI11-SWITAB 00550 FDB SWI12-SWITAB 00560 FDB SWI13-SWITAB 00570 FDB NULL-SWITAB 00580098 FCB $08 00099 FCB \0 00100 ENDM 00101 00102 * set memory - linear boundaries (from UH,X to UL,Y), value in B 00103 * SMRLAR 00104 SMRLAR MACRO 00105 SWI 00106 FCB $09 00107 ENDM 00108 00109 * read memory to A, constant linear address 00110 * LDACLA ah,al 00111 LDACLA MACRO 00112 SWI 00113 FCB $0A 00114 FCB \0 00115 FDB \1 00116 ENDM 00117 00118 * read memory to A, register linear address (B,Y) 00119 * LDARLA 00120 LDARLA MACRO 00121 SWI 00122 FCB $0B 00123 ENDM 00124 00125 * read memory to A, constant block/offset 00126 * LDACBO blk,off 00127 LDACBO MACRO 00128 SWI 00129 FCB $0C 00130 FCB \0 00131 FDB \1 00132 ENDM 00133 00134 * read memory to A, register block/offset (B,Y) 00135 * LDARBO 00136 LDARBO MACRO 00137 SWI 00138 FCB $0D 00139 ENDM 00140 00141 * write A to memory, constant linear address 00142 * STACLA ah,al 00143 STACLA MACRO 00144 SWI 00145 FCB $0E 00146 FCB \0 00147 FDB \1 00148 ENDM 00149 00150 * write A to memory, register linear address (B,Y) 00151 * STARLA 00152 STARLA MACRO 00153 SWI 00154 FCB $0F 00155 ENDM 00156 00157 * write A to memory, constant block/offset 00158 * STACBO blk.off 00159 STACBO MACRO 00160 SWI 00161 FCB $10 00162 FCB \0 00163 FDB \1 00164 ENDM 00165 00166 * write A to memory, register block/offset (B,Y) 00167 * STARBO 00168 STARBO MACRO 00169 SWI 00170 FCB $11 00171 ENDM 00172 00173 * convert a pair of linear addresses to block/offsets 00174 * pair is (A,X & B,Y), leave in original locations 00175 * CPLABO 00176 CPLABO MACRO 00177 SWI 00178 FCB $12 00179 ENDM 00180 00181 * convert a pair of block/offsets to linear addresses 00182 * pair is(A,X & B,Y), leave in original locations 00183 * CPBOLA 00184 CPBOLA MACRO 00185 SWI 00186 FCB $13 00187 ENDM 00188 00189 * set memory, constant boundaries (block/offset), constant value 00190 * SMCBOC LOWah,LOWal,HIGHah,HIGHal,Value 00191 SMCBOC MACRO 00192 SWI 00193 FCB $14 00194 FCB \0 00195 FDB \1 00196 FCB \2 00197 FDB \3 00198 FCB \4 00199 ENDM 00200 00201 * set memory, constant boundaries (block/offset), value in B 00202 * SMCBOR LOWah,LOWar,HIGHah,HIGHal 00203 SMCBOR MACRO 00204 SWI 00205 FCB $15 00206 FCB \0 00207 FDB \1 00208 FCB \2 00209 FDB \3 00210 ENDM 00211 00212 * set memory, register boundaries (UH,X, UL,Y), block/offset, 00213 * constant value 00214 * SMRBOC Value 00215 SMRBOC MACRO 00216 SWI 00217 FCB $16 00218 FCB \0 00219 ENDM 00220 00221 * set memory, register boundaries (UH,X, UL,Y), block/offset, 00222 * value in B 00223 * SMRBOR 00224 SMRBOR MACRO 00225 SWI 00226 FCB $17 00227 ENDM 00228 00229 * END OF MACRO DEFINITIONS ITAB 00700 FDB NULL-SWITAB 00710 FDB NULL-SWITAB 00720 FDB NULL-SWITAB 00730 FDB NULL-SWITAB 00740 FDB NULL-SWITAB 00750 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџASSEMBLY LANGUAGE PROGRAMMING PART NINE: WRITING ARBITRARY MEMORY Last time I presented routines to read bytes from arbitrary memroy locations. This time, I fill in the blanks for writing to arbitrary memory locations. With these routines, we now have a cookbook which contains all the code necessary to access the entire memory space of the CoCo3. Now is probably a good time to consider some efficiency issues. It should be noted that this is by no means the most efficient means of doing exactly this. However, if your application has no speed requirements, it will probably suffice. If, however, speed is critical, you should probably use techniques demonstrated in this series to write your own from scratch using much more efficient algorithms. I will also note here, again, that none of the code thus far presented has been tested. I am reasonably certain that it will work, but that is based on sheer logic, not any concrete tests. I could easily have made a typo or other sort of error. As noted last time, it could be a learning experience for you if something doesn't work the way you expected it to. I have personally learned much more from debugging someone else's code than I ever did by debugging my own. As always, let me know if you find a bug. (Include the fix as well.) One thing you might take on yourself is to make the various read/write functions set the flags according to the way regular load/store would. That may involve modifying a large amount of code, but it should be possible. If anyone should succeed in so doing, I would be interested in receiving the code. Also, you can reach me with ideas, contributions, or other correspondence via the internet at astlew@bigfoot.com. I'm sure most of you have internet connectivity by now. Next time, I hope we can actually use some of these routines to actually do something. (That's where any bugs will start to show up.) 'Till next time. ce via the internet at astlew@bigfoot.com. I'm sure most of you have internet connectivity by nowџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ00001 ************************************************* 00002 * Macro Library for the SWI routines 00003 * Use the "INCLUDE" directive in Disk EDTASM to 00004 * use this library 00005 * 00006 * This library is only useful if the SWI routines 00007 * are installed prior to actually executing the 00008 * code generated from using these marcros 00009 ************************************************* 00010 * Constant addresses are specified as marco arguments 00011 * as follows: 00012 * The upper 3 bits followed by a comma followed by 00013 * the lower 16 bits, as follows: 00014 * $7DC13 would be $07,$DC13 00015 * and this is specified by ah,al 00016 00017 * Convert linear address in A,X to block/offset 00018 * in B,Y 00019 * CLABO 00020 CLABO MACRO 00021 SWI 00022 FCB $00 00023 ENDM 00024 00025 * Convert block/offset in B,Y to linar address 00026 * in A,X 00027 * CBOLA 00028 CBOLA MACRO 00029 SWI 00030 FCB $01 00031 ENDM 00032 00033 * clear memory - constant boundaries 00034 * CLMCLA LOWah,LOWal,HIGHah,HIGHal 00035 CLMCLA MACRO 00036 SWI 00037 FCB $02 00038 FCB \0 00039 FDB \1 00040 FCB \2 00041 FDB \3 00042 ENDM 00043 00044 * clear memory - register boundaries, linear addresses 00045 * low in A,X, high in B,Y 00046 * CLRCLA 00047 CLRCLA MACRO 00048 SWI 00049 FCB $03 00050 ENDM 00051 00052 * clear memory - constant block/offset boundaries 00053 * CLMCBO LOWblk,LOWoff,HIGHblk,HIGHoff 00054 CLMCBO MACRO 00055 SWI 00056 FCB $04 00057 FCB \0 00058 FDB \1 00059 FCB \2 00060 FDB \3 00061 ENDM 00062 00063 * clear memory - register block/offset boundaries 00064 * lowin A,X, high in B,Y 00065 * CLMRBO 00066 CLMRBO MACRO 00067 SWI 00068 FCB $05 00069 ENDM 00070 00071 * set memory - constant linear boundaries, constant value 00072 * SMCLAC LOWah,LOWal,HIGHah,HIGHal,Value 00073 SMCLAC MACRO 00074 SWI 00075 FCB $06 00076 FCB \0 00077 FDB \1 00078 FCB \2 00079 FDB \3 00080 FCB \4 00081 ENDM 00082 00083 * set memory - constant linear boundaries, value in B 00084 * SMCLAR LOWah,LOWal,HIGHah,HIGHal 00085 SMCLAR MACRO 00086 SWI 00087 FCB $07 00088 FCB \0 00089 FDB \1 00090 FCB \2 00091 FDB \3 00092 ENDM 00093 00094 * set memory - linear boundaries (from UH,X to UL,Y), constant value 00095 * SMRLAC Value 00096 SMRLAC MACRO 00097 SWI 0 #$50 disable ints 02640 STB $FFA0 get our block to MMU 02650 EXG D,U temp store MMU block/get value 02660 STA ,X store value 02670 TFR U,D get back MMU value 02680 STA $FFA0 stick it back in MMU 02690 ANDCC #$AF restore ints 02700 PULS A,B,X,U,PC restore regs 02710 ************************************************* 02720 * Write A to memory, block/offset in B,Y 02730 * 02740 SWI11 PSHS A,B,U temp store regs 02750 TFR D,U temp store value 02760 LDA $FFA0 temp stor MMU 02770 ORCC #$50 kill interrupts 02780 STB $FFA0 get our block into MMU 02790 EXG D,U temp store MMU block/get value 02800 STA ,Y write value 02810 TFR U,D get back MMU value 02820 STA $FFA0 stick it back into value 02830 ANDCC #$AF restore ints 02840 PULS A,B,U,PC restore regs 02850 ************************************************* 02860 * Convert a pair of addresses to block/offset 02870 * 02880 SWI12 PSHS A,B,X,Y make some temp storage on the stack 02890 LBSR SWI00 convert A,X 02900 STB ,S * store it back in the originals 02910 STY 2,S * 02920 LDA 1,S = convert B,Y 02930 LDX 4,S = 02940 LBSR SWI00 = 02950 STB 1,S = 02960 STY 4,S = 02970 PULS A,B,X,Y,PC restore registers and return 02980 ************************************************* 02990 * Convert a pair of block/offsets to addresses 03000 * 03010 SWI13 PSHS A,B,X,Y make some temp storage on the stack 03020 LBSR SWI01 convert B,Y 03030 STA 1,S * store it back in the originals 03040 STX 4,S * 03050 LDB ,S = convert A,X 03060 LDY 2,S = 03070 LBSR SWI01 = 03080 STA ,S = 03090 STX 2,S = 03100 PULS A,B,X,Y,PC restore registers and return 03110 ************************************************* 03120 * Set a section of memory. 03130 * Enter 0,S clear value 03140 * 1,S start address 03150 * 4,S end address 03160 * Exit 1,S to 4,S will be set to 0,S 03170 * stack will be reset 03180 ************************************************* 03190 SETMEM PSHS A,B,X,U save registers 03200 LDB 12,S * get end address 03210 LDU 13,S * 03220 STU SETMEZ,PCR = save ending address for comparison 03230 STB SETMEY,PCR = 03240 LDA 9,S * get starting address 03250 LDX 10,S * 03260 ORCC #$50 disable interrupts 03270 LDB $FFA0 save MMU 03280 STB SETMEX,PCR = 03290 LDB 8,S get set value 03300 SETME0 STA $FFA0 set MMU to currentblock 03310 SETME1 STB ,X+ set a byte 03320 CMPA SETMEY,PCR are we in final block? 03330 BEQ SETME2 brif so 03340 CMPX #$2000 are we at the end of the block? 03350 BLO SETME1 coninue if not 03360 INCA go on to next block 03370 LDX #0 set pointer back to start of it 03380 BRA SETME0 continue setting memory 03390 SETMEX FCB 0 temp storage 03400 SETMEY FCB 0 temp storage 03410 SETMEZ FDB 0 temp storage 03420 SETME2 CMPX SETMEZ,PCR are we finished the block? 03430 BLS SETME1 continue if we are not done 03440 ANDCC #$AF re-enable interrupts 03450 LDB SETMEX,PCR * restore the MMU 03460 STB $FFA0 * 03470 LDU 6,S = set up stack to get rid of parameters 03480 STU 13,S = 03490 PULS A,B,X,U restore registers 03500 LEAS 7,S clean up stack 03510 RTS return 03520 ************************************************* 940 SWI05B FDB 0 temp storage 00950 SWI05X LDX #0 point X to start of block 00960 INCA go on to next block in memory 00970 BRA SWI05Z coninue clearing memory 00980 *******џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ memory, UH,X to UL,Y, constant value (addrs) 01340 * 01350 SWI08 PSHS A,B,X,Y,U store registers 01360 TFR U,D get the upper bytes of the addresses 01370 LBSR SWI12 convert addresses to block/offsets 01380 PSHS B,Y store the upper bound 01390 PSHS A,X store the lower bound 01400 LDU 26,S * get the set value 01410 LDA ,U+ * 01420 STU 26,S * 01430 PSHS A store it on the stack 01440 LBSR SETMEM set the memory block 01450 PULS A,B,X,Y,U,PC restore registers and return 01460 ************************************************* 01470 * Set memory, UH,X to UL,Y, value in B (addrs) 01480 * 01490 SWI09 PSHS A,B,X,Y,U store registers 01500 TFR U,D get the high byte of the addresses 01510 LBSR SWI12 convert the addresses to block/offsets 01520 PSHS B,Y store the upper bound 01530 PSHS A,X store lower bound 01540 LDB 7,S get value 01550 PSHS B store it on stack 01560 LBSR SETMEM set the memory block 01570 PULS A,B,X,Y,U,PC restore registers and return 01580 ************************************************* 01590 * Read memory to A, constant address 01600 * 01610 SWI0A PSHS B,X,Y,U temp store regs 01620 LDU 19,S = get args 01630 LDA ,U+ = 01640 LDX ,U++ = 01650 STU 19,S = 01660 LBSR SWI00 convert address to block/offset 01670 ORCC #$50 * disable interrupts 01680 LDA $FFA0 * temp store MMU 01690 STB $FFA0 * set MMU to correct block 01700 LDB ,Y * get value 01710 STA $FFA0 * restore MMU 01720 ANDCC #$AF * restore interrupts 01730 TFR B,A * get value to A 01740 PULS B,X,Y,U,PC restore regs and return 01750 ************************************************* 01760 * Read memory to A, address in B,Y 01770 * 01780 SWI0B PSHS B,X,Y temp save regs 01790 TFR B,A * get addr into useful place 01800 TFR Y,X * 01810 LBSR SWI00 convert to block/offset 01820 ORCC #$50 disable interrupts 01830 LDA $FFA0 temp store MMU 01840 STB $FFA0 set MMU to specified block 01850 LDB ,Y get value at the address 01860 STA $FFA0 restore MMU 01870 ANDCC #$AF restore interrupts 01880 TFR B,A get value into A 01890 PULS B,X,Y,PC restore regs and return 01900 ************************************************* 01910 * Read memory to A, constant block/offset 01920 * 01930 SWI0C PSHS B,Y,U temp store regs 01940 LDU 17,S * get parameters 01950 LDA ,U+ * 01960 LDY ,U++ * 01970 STU 17,S * 01980 ORCC #$50 disable interrupts 01990 LDB $FFA0 temp store MMU 02000 STA $FFA0 set MMU to current block 02010 LDA ,Y get value in offset 02020 STB $FFA0 restore MMU 02030 ANDCC #$AF restore interrupts 02040 PULS B,Y,U,PC restore regs and return 02050 ************************************************* 02060 * Read memory to A, block/offset in B,Y 02070 * 02080 SWI0D PSHS B temp store regs 02090 ORCC #$50 disable interrupts 02100 LDA $FFA0 temp store MMU 02110 STB $FFA0 set MMU to correct block 02120 LDB ,Y get value as location 02130 STA $FFA0 restore MMU 02140 TFR B,A put result into correct location 02150 ANDCC #$AF restore interrupts 02160 PULS B,PC restore regs and return 02170 ************************************************* 02180 * Write A to memory, constant address 02190 * 02200 SWI0E PSHS A,B,X,Y,U temp store regs 02210 TFR D,U temp store value to write 02220 LDY 20,S * get parameters 02230 LDA ,Y+ * 02240 LDX ,Y++ * 02250 STY 20,S * 02260 LBSR SWI00 convert addr to block/offset 02270 ORCC #$50 * do the write - disable ints 02280 LDA $FFA0 * temp store MMU 02290 STB $FFA0 * get our block into MMU 02300 EXG U,X * get value/temp store MMU block 02310 STA ,Y * write value 02320 TFR U,D * get back MMU 02330 STA $FFA0 * put MMU value back 02340 ANDCC #$AF * restore ints 02350 PULS A,B,X,Y,U,PC restore regs 02360 ************************************************* 02370 * Write A to memory, address in B,Y 02380 * 02390 SWI0F PSHS A,B,X,Y,U temp store regs 02400 TFR D,U temp store value 02410 TFR B,A * get params 02420 TFR Y,X * 02430 LBSR SWI00 convert addr to block/offset 02440 ORCC #$50 disable ints 02450 LDA $FFA0 temp store MMU 02460 STB $FFA0 get our block to MMU 02470 EXG D,U temp store MMU block/get value 02480 STA ,Y write value 02490 TFR U,D get back MMU value 02500 STA $FFA0x stick MMU value back 02510 ANDCC #$AF restore ints 02520 PULS A,B,X,Y,U,PC restore regs 02530 ************************************************* 02540 * Write A to memory, constant block/offset 02550 * 02560 SWI10 PSHS A,B,X,U temp store regs 02570 LDU 18,S * get params 02580 LDB ,U+ * 02590 LDX ,U++ * 02600 STU 18,S * 02610 TFR D,U temp store value 02620 LDA $FFA0 temp store MMU 02630 ORCC00010 ************************************************* 00020 * Convert address in A,X to block/offset in B,Y 00030 * 00040 SWI00 PSHS A,X preserve parameter in A,X 00050 TFR X,D * figure out offset 00060 ANDA #$1F * 00070 TFR D,Y store offset in Y for return 00080 LDD ,S get first two bytes of address 00090 LSRA * figure out the block number 00100 RORB * 00110 LSRA * 00120 RORB * 00130 LSRA * 00140 RORB * 00150 LSRA * 00160 RORB * 00170 LSRA * 00180 RORB * 00190 * block is now in B where we return it 00200 PULS A,X,PC restore registers and return 00210 ************************************************* 00220 * Convert block/offset in B,Y to address in A,X 00230 * 00240 SWI01 PSHS B,Y preserve parameter in B,Y 00250 CLRA prepare to shift block to the correct position 00260 LSLB * shift block number to correct position 00270 ROLA * 00280 LSLB * 00290 ROLA * 00300 LSLB * 00310 ROLA * 00320 LSLB * 00330 ROLA * 00340 LSLB * 00350 ROLA * 00360 ADDB 1,S merge the offset with the block 00370 PSHS A temp store A (first byte of address) 00380 TFR B,A * get the lower bytes of address 00390 LDB 3,S * into the correct order 00400 TFR D,X store the low order bytes into X 00410 PULS A,B,X,PC restore registers and return 00420 ************************************************* 00430 * Clear memory, constant boundaries 00440 * 00450 SWI02 PSHS A,B,X,Y,U preserve registers 00460 LDU 20,S * get the parameters 00470 LDA ,U+ * 00480 LDX ,U++ * 00490 LDB ,U+ * 00500 LDY ,U++ * 00510 STU 20,S * 00520 LBSR SWI12 convert pair of addrs to block/offsets 00530 LBSR SWI05 clear the block of memeory 00540 PULS A,B,X,Y,U,PC restore registers and return 00550 ************************************************* 00560 * Clear memory, A,X to B,Y 00570 * 00580 SWI03 PSHS A,B,X,Y preserve registers 00590 LBSR SWI12 convert pair of addrs to block/offsets 00600 LBSR SWI05 clear block of memory 00610 PULS A,B,X,Y,PC restore registers and return 00620 ************************************************* 00630 * Clear memory, constant block/offsets 00640 * 00650 SWI04 PSHS A,B,X,Y,U prserver registers 00660 LDU 20,S * get the parameters 00670 LDA ,U+ * 00680 LDX ,U++ * 00690 LDB ,U+ * 00700 LDY ,U++ * 00710 STU 20,S * 00720 LBSR SWI05 clear block of memory 00730 PULS A,B,X,Y,U,PC restore registers and return 00740 ************************************************* 00750 * Clear memory, constant block/offset in A,X to B,Y 00760 * 00770 SWI05 PSHS A,B,X,Y save registers 00780 STB SWI05A,PCR * save top location 00790 STY SWI05B,PCR * 00800 ORCC #$50 disable interrupts 00810 LDB $FFA0 save MMU value 00820 SWI05Z STA $FFA0 set MMU to current block 00830 SWI05Y CLR ,X+ clear a byte 00840 CMPX #$2000 are we at the end of the block? 00850 BGE SWI05X brif so 00860 CMPA SWI05A,PCR are we in the last block? 00870 BNE SWI05Y continue if not 00880 CMPX SWI05B,PCR are we done? 00890 BLS SWI05Y continue if not 00900 STB $FFA0 restore MMU 00910 ANDCC #$AF re-enable interrupts 00920 PULS A,B,X,Y,PC restore registers and return 00930 SWI05A FCB 0 temp storage 00940 SWI05B FDB 0 temp storage 00950 SWI05X LDX #0 point X to start of block 00960 INCA go on to next block in memory 00970 BRA SWI05Z coninue clearing memory 00980 ************************************************* 00990 * Set memory, constant boundaries, constant value (addrs) 01000 * 01010 SWI06 PSHS A,B,X,Y,U save registers 01020 LDU 20,S * get boundaries from stack 01030 LDA ,U+ * 01040 LDX ,U++ * 01050 LDB ,U * 01060 LDY ,U++ * 01070 LBSR SWI12 convert the boundaries to block/offset 01080 PSHS B,Y store top address 01090 PSHS A,X store bottom address 01100 LDA ,U+ get the value to store 01110 STU 26,S update program counter on stack 01120 PSHS A put value to store on stack 01130 LBSR SETMEM set the memory block 01140 PULS A,B,X,Y,U,PC restore registers and return 01150 ************************************************* 01160 * Set memory, constant boundaries, value in B (addrs) 01170 * 01180 SWI07 PSHS A,B,X,Y,U store registers 01190 LDU 20,S * get boundaries from program 01200 LDA ,U+ * 01210 LDX ,U++ * 01220 LDB ,U+ * 01230 LDY ,U++ * 01240 STU 20,S * 01250 LBSR SWI12 convert the boundaries to block/offset 01260 PSHS B,Y store top address 01270 PSHS A,X store bottom address 01280 LDA 7,S * put the value onto the stack 01290 PSHS A * 01300 LBSR SETMEM set the memory block 01310 PULS A,B,X,Y,U,PC restore registers and return 01320 ************************************************* 01330 * SetњиЛ§ћінџ§ићџяцїџƒ§ўЧћuиgО|]wјŸпЇƒюлќžŽћ|Уроoљo?ріТr{zџŒ\дшЧз›џ§эчЮа§}пчйНž!aТmyјоџЧ˜xт3пћПч?Э, ѕПжЛЯ…8бТЄxпЛЭ№ЃPpвzўјџў '(^nqјџќ9  [ŠPђяPЬмeŒцПХЦџАјМм mŒпŸ‹ Рїі<ївz{є0ЬœУ7{ќZўeu†ћЏя§р3oЦvщ№џђƒcИЬПЏGџЧу8? ьУБOјќ3Œя№ќUџјЬЦзžnфџУу5чœїАи6gy–)8^ž Р№nчаREЬУ`Џ§›ьІ0ЧюžХm‰›Жяі(НєY˜Цїc 33 љёCЬљcЬї{(x{~`{mн<hР<Сmо8у€\РкпЬQУР0vќпћУпТ0юzяŠ8}Р.њлїc`хќ:лL&Ц7Еж8Сј@ЃƒvР Р@cД # ж`€Р@€;4oїа 0§љ рЗl3€|ГМXпнўѓЃЗ9[Р [аЁыпА`Kл›ЦcРf|мРР`0ЬО/АПпG€РР(0`wЈ0@Р0Ь:SМAрmhЩ€06#я€`=сŒД0~Ха+­Б@„єСцсолїcaїчўЎБу aќїЗџ1уяљЇєQЧМэ­НЧИџŒА^јЏƒлѓпюіP№я–Моќћтќff|0oўЦE™БНюХЖл6ЗzwŸ=ŒЗЏ§ŸyАйћьњ NїxЬя2Х'KЦќїМАrгю``дgПћЛЯќfэyўЏЯс˜t~Ь;џќрќ7ЗO;ћЏaнэЛёпїŽwЋ~3Оы+џР`}є6љЗПтяр`iРќ3}oыx0љяяПћ§М7ьоттџ№ЬмeŽиcu?Жа А-ЧМяџ‡)09‡ѕціЯџaЪžпЛЭХ4йžџ ­}<š0XcпћПœю<УЧžїѓлџlё jџŸfљЗ{ыяџомэШ‡Ї›зИўl(vлпС№џ/љo˜yў8эџЙ§ьx=ћџяНнv§лџСџќУџџўьПРћї{Пњ№ЛяџџnїїяпўпyпўcEзЮљм8mПА_ё€_ƒЏП€2ЖпњЮр{їљмџњџЬжуЗћs˜€зѕьќs&†0УпџЋќчЌюCпЗъЮ*f0HgПЖнтGе4 ЧЬўпь€б“ѓ Ч€Елѕ ){0Шџ§Pнј[Щ}N?тбg-фА xНЋCќc0 А'ж#Ћ(Р^p}т3зBˆsћj`h‡8ОХС4Gш€_DtuaЬ €р0№№№№№№№№Й№Н№>џ№>Я№;3Я№{;џ№{чПёћoчёплчŽѓюџяіюџїpџџpџ›џџ“џ№џйџpџЯџџџџУџ‡џџ‡џџяџЯџљџпџ§џџџџїџџџџїџџџџЛџџџЛџџџџГџџпџїџџџџїџџџџїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџяџџџ§џџџџ§пџџџ§џџџџ§џџџџћџџџџџџџџџџџџџџџџџџџџяџџџџџџџџџџџџџџџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћџџџџџџџџћџџџџџПџџџџџџџџџџџџџџГџџџюўxџрџџў№џѓПgќjпПџћ?3ћњxcџуќ?ёџчљџСџџѓў3№№?№ѓјс№Йџџџјпёџјџ?§џќxчџџћџгџџћџП7ќnџОчџџќџџўрџўџюџџџГџџџџџћџџџџџџџўџџџџџџџџџџяџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџџџџџџџџџџџџџџяџџџџџџџџџџџџџџџџџџџџџџџ§џџџџ§џџџџ§пџџџ§џџџџџяџџџџџџџџџџџџџџџџџїџџџџџџџџџџџџџџїџџџџїџџџџїџџпџГџџџџџџџџџџџџџџїџпџїџџџџ§џџїћџЯџяџџ‰џџџЏџзџџЯџџЯџёџџџёуџ“џџ›џp>џџїp?џџўџяяџџџџюџџяџџїљџџџџљџяџџћџџЯџѓџџЯџџПџяџџПџџџџџџџџџџџџџџџџџџџџџџџџу§џџџџџџџџуџџџџџџџџўџџ№№№№џ№№џp№џр№џ№№џ№№џ№№џ№№№Р`PT?;98=<0???iё0‰ёlš>uиџџЯџѓџџЯџџПџяџџПџџџџџџџџџџџџџџџџџџџџџџџџу§џџџџџџџџуџџџџџџџџўџџ№№№№џ№№џp№џр№џ№№џ№№џ№№џ№№№Р`PT?;98=<0???iё0‰ёlš>uиџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЯћјidDƒџ[пѓџјџПсчр Њў$(@ŠЦlУjѕŸ€ёЄO Ў§іZ)Я>џпУ№}‡mРL{_SЖюƒ5+€љl/Їёя€Ъž:і|Oс!„k 6і€МA@ёН­/Аe?€эlтCD?ій$WпNь9ЃQ]i{€ўтR—}ъZЧ?ј0 Рр$2-‡x RВlx­^Љ6Ав€ќѓ9м(ЏљU< ]Ÿ№wpР#ТN‡о З—НCR^Oeтећ€ў%GЛŠ–љZц №ЧИрfУс№Хj"ŸFj}ы€ч=Сф#C‚ƒ?›їэПчР6БУэё™u@S  8чG^іIЃ€у"ЧРƒ6DЫ–єУoЯУ€m{aќs0!к `e>Q Ÿ€їdˆeŒr# 7OЬиgЦпa№!–эА{;ЫЦъ‹€g€їЭcˆ›С3НТšм?РoiБЦ№Г Х“G­]>тC+€с˜!Ѕ@ ЙHЯ5эТvs€Њm›Xƒсус@ОK~r+Х6€ѓ˜6ч)И­‡Џс~x=œѓ›Cа7"„!,оеšћK€ћІЧСb)3{сmвИ&Žц\0˜FЮЛND2G!;Ьи€№mƒnPиP+;{c_Ћy0@…ЊИиC5Q‘œ !.žpЙ€у1БlЂY§žБ}їЬ€О`иATхтBв@д›иlнW€їЖ(`Ѓi 79ЁКІЌџŸ€]`R/m™%7]$†;'€ќімЈўa“vЃaх.я€џќ№I‰P@8зсЎ€0{€№)ќвc#Ы ѓ7R Я§џў5КР’F‚ РэJ>p€уЬ/РЃщ GЮФ№йZ‹4Žїџќ9уH ТX…0Ч€э†ы€аР цЋЏђЃ€`чџсџM–Є№`€іД?РXџя%џsщ:{№?Аf?џ№Ђ&€˜•Ъ7€юaџ‚џтЊЗўџњ?ўЬg”ўџјџютHdQЃ€рУџёtџў?џѕmŒЦУџƒџўьи@(€рјў$ЌПџРџќф€fџ№џўЯРK€џ?>јџ€ў„лЧџ€?јџƒџ€€јŒџџќўџўџпџ€ќрp?ќ?џўџ€џў+џрџћўчrqУ‡€ќџ ?ўџќџУќџРџŸџ{шЏfкГ€џрџјџя€€џƒ3 њ@P€ёР>Ьџў?џў|‡№џљПўS4дРа€ц0їАјgЯ€@„  Ђ\­ Р€р @C €р o "\­€‡€р>|џCПџљПјnS$"‚€ц0їАјgЯРџсџАџсџ34дТа@€ёР>ќџў?џƒџТП‚€?џˆ њ@P€ёўџтŸџрјџј|џ№ @џŸџ{шЏfкГ€§џј?оџќ ј?џп€ў+€џрџ€ћўчrqУ‡€ќрpќ>ўрџрўџўџџп€ёŒџџќў„лЧџ€?љџƒџ€€џ"Ојџ ф€fџ№РџўЯРK€рј~$ЎџРџѕmŒЦ?ƒџўьа@*€рƒУџёtџќў?ўЬg”ўџјџўютHBQЃ€юaџ‚џРjЗСџњ;№? ц?џЂ&€˜•Ъ7€іД?РXџя%џ щ:€`!чџсрM–Є№ `€э‡ы€аР цЋЏђЃk5Žіќ9уA X…BЧ€т/РЃщ GЮФ№йZ’ Я§џ5КР’F‚ рJ>r7€№)ќˆpcЫ €Зo€№|№I‰PB8€?сЎ€0{€ќімЈ€„a“vЃaх.ЬџŸ€]dXm™%7]$†;'€їЖ(Ÿ`Ѓi 09ЁКІЌ€`иATхтBв@д›иm’нW€у1БlЂY§ q}їй0@…ЊИиC5Q‘œ !/r:€№mƒnPиP+;{c_Ћ|&Žц\0˜FЮЛN2Q!;ЬТ€№fЧСb@s{сmа=œѓ›Cа7"„",ож:ћK€ѓС6ч)И­‡Џс~s€Њm›Xƒсу ОK~r+Х6€с˜!Ѕ@ МHЯ5эТvРoiР№Г Х“G­\тC+€їЭp(›аU3ТšмЦп№!–эА{;ЫЦъ€g€їdˆe ƒr# 7OЬoУTm{aќs0!кОQ €у"ЧРƒ6DЫ–єУ`ƒчР6БУэ™u@S  8чG^іIЃ€ч=Сф#C‚ƒ?›їэИрfУсё–j4"ŸFh}ы€џGЛŠ–љZ№‹№ЧАР#жо З—МCR^Oeтећ€ќєм@oљU@ `№p@Рр$2-‡x RВlxЎ-Љ6Ав€ўт R—}шZЧ00AџB:…Љ№lБ`aŠ>9ЃQ\{€эlтCD?ій$WпNьџЯџјџПсчр Њў0@ŠЦlУjѕŸ€јУ>idDƒџ[пѓџќУ№‡Зј‡єB$€lЎ§шP=A€яWъVKХЬП@]НСчРx~џ˜x|3СсW€ЁTэЦ7К`_€ўаf@ЯњљЈ…CуР/уР џЯћјpKўЬŒ’]j ЖЦџРЫ€фнЋЗžNx^HўџюСќ?єќ v 3НаЭц€№єnЙЪVАL0н№G?є єЂ8  ЈmИ c€ьшЮСcА: tѕЪgѓOхœ~`1Bь 6D”{GW7€юЁбљїрDО€*юПћяЪфKџk‰Б~@Вƒ€0€MbС €тŽ3Р7ў`ЁTШ@фђZ‰–Р h  €тm>џј@ @в Tтр‰јkєаEp $s€сОп_%џР€b!щЩРcс*a6€Ш k€ф 2џўHUqWˆЧЂl€А у€рCF9DР -BЎLBуjЏ “€рKЛ9–д&Ѕ[ƒO7Y`€р^иб€„@[я …М[€#€р,/ЮСЏ‚G†KўајC€раTџХѓJјшз€?џт#€рKi €‚‡€џYџп €@џ?€р&],Сџј @ џўЃџџџ€р>0џ0ЌoЧY@ Вџсџ€№ gџљр@9DЉŸ? єЇџ§?€р€_џи€Р0H *І‘†Ц‚ ?џ€р!!џј;@?ц>ў0 RЅ1 РŸџё€р(‡џ№˜ЛќПпџПџќa0 jxУЃџ€х р@3?џрa‡яџрџј€Ф!юЬУ`џ€рmь 7ГџљрЯџу чѓА€"pcmD/џ€РJ}ь`?ВƒџyсƒЯпСт3D0‰)co€а0@€р@mяфл7šŸџѓ{aГоЯРЭє3c0РLб‡џј€р эяaл=ZџЦлqГпРЯрVcrŸШћІAџ” €€р=эћxл}Zџў–пcзˆo`^yАСoи0пџ@€ф ;эћјл=Zџќ‡пcз@3fІyА€Aё{р2опџ &€р{ч^xо=z€?јпncю  fІyАЯ№z@6оѕ› €р;З^xонZЈПј­feьЄ(†ЊyАЯќџ~ё›lџ€јˆ;З^иі]њШ?§­fФШ Ь~й fЯќ`YБ›fџ€єЬ‹З~јі_zomU­lСA Ь~иfкМm€щі„/fw€ўˆЗvиўOz‘ol­lРŒsи7кэ€џыЖ}ц€ћЬЗ~кvKnmьЕu@œsи5кэП €г6EэЖ/€љLЗ|иK>€}ќ†Е€˜sx zяП СCfНГ/€ј‰@|и`O>„m№ˆЮ’РA\yќ@zя’”€AЖѓ3€р Dк@K>€mр?qј$zћ—€ Ж№€Р€€€€€€"*!$‚ЄLШ€€€R… (V(Ње@€€R… (P(ЊЉв€€"$J"P(ЊЈH€€€Ђ… (P(ЊЎB@€€R… (V(Њ­U@€€*Ё$(ЄLШ€€€€€€€ЖэБflЖѓ€=€ ЈіџиР9Яpё™p~ѓ007ќЭР~ю7:џЛЦЛ џž›№Р>џу<К№n1м0 зўscнџџc;џћїлПџтп27З#+{‹{q!2ѓїPWЗВЗ#З'ЗГѓ{#+{xЗru{s#{2;{xЗВЗ'З‡…З27ЗГ#{xЗ+{xЗPWЗ#ЗИ{+rЗИЗ%З2;{rЗВЗ+r{'В2{+r5{s{+{+{rЗ#+{#+sГ#В25З;{s{+#'З'В25;7ЗГЗГЗГЗГ{s{;{;{sГЗВ{r{+{#Г#+#PSГЗ;sГЗ7;{7ЗГЗ;{sГВ272{2;2;5;5;P[;{[#+s#SPS{;{sЗЕ{rЗВЗR[r25;sГЗ;sЗГs{;{sЗЕЗЕ{[{+2В25#SPSГ{;{;{[{;{7З7ЗЕ{WЗ[{uЗЕВ2{r{#SP[WЗWЗЕЗ[{uЗ[RЗВЗ+r2ЗВ2З;2;#PWЗЕЗЕЗ[{[{WЗЕ{s#З[{uЗ[{rЗВЗ+r{'В2{+r5ЗWЗWЗ[{uЗ#ЗИ{u{+rЗ[{rPWЗЕ{27З‹{[{rЗ‹uЗWЗWЗ27З[{WГ#З‹{uЗВЗ'З‡…{uЗ2WЗГ{#[{xЗRru'PW[{+{r2;{WЗ'ЗГђ7З#+{‹{Rѕ2ѓїPS#{{u#+{u27ЗП/?#+{2R2ЗW#Зђ2ђ2PX(#{{#{s#S#{2ЗБR2ВЗЕrї/#'ЗRђ2PR‚WЗИБ!+{r2ЗГ#'Зђ2{qQ'#'2u{s#/#%#R7ЗБrђ25#PRї‹{З#WЗГ#Зђ27q{r{2ВЗВЗW#/#ё1_rђ2ђR2PX/(/x{qQ!S#%#+r2u#/ЗЗЕ{x#/#%2S!ё2‚2ѓ#%‚ђ‚ђ‚ђ‡Q2‚2x/#/{xИrR2?2ё#(#ѓ#PX(/(/(WЗ28(S#x/#/‡RѓxИВ2ђ2?2?#%#PR‚ђ‚ђqr2‚25+x/#/!(r#/7‹+/#/#ђRѓ#ƒ#%/%#%‚ђ‚18!qs#(#rx/#ѓ%#'/(/#+/#ђ25#%2ђ2ђ25#%%ђ2‚1(‚pЗ#R2‚ƒ#(2ђ25(2‚2ђВђ2ђ2R?2?#%25(/%(!(!(‚pЗ#‚2‚2ђ2ѓ&R‚2‚2‚Вђ2R2?2ѓ#ѓ#/#%/(!‚‚u2‚2‚2ђ2ђ2Vr‚ƒ(%#(+/#/#/R2‚2ђ2PR‚ђ‚‚Q /#%2‚X(#/%e%‚8(#[+/#/#/2ђ25#/#PX(ђ‚!‚R2‚28(#%#%e%bR‚S#(+/#/#%#/2?2ј%25/!(!(! #(#(R5&vVrV(%(R28+_#/#ђ2?#ѓ#(2PR?(! (#(#(h(#%g&V%2‚ВR2?#%2?#/#%#/#/#%‚%!(!! (#%(2‚‡‚2g'V%‚R[+/#R2?#ђ2ђ2ђ25(ђ‚X‚! rp(2R2‚2X!‚2WgV%(%#(+/#ђ2Rѓђ2ђ2ѓ#%/(‚2rp{(#%2‚2‚…‚2Vvu%(R2‚Вђ2ђ2ѓ#/2ѓR2ѓ%/!(! ' (#(2‚‚x(#&'gRS%(RВRВђ2Vѓ#/#/#/#/#/#%/!‚(!pS#'(#rbh‚e'g%e%ВЕВђ2V#R?2ђS#R2ђ25ђ!(Rp'‚27'2v&r†q&!&VRrvrV(%e+k+kbђ2V#R2ђ2ђ2ђ2ђ2ђ5(R!(‚p(#'27–‚‚ervrVRЖ[+[V%#&V#/#/#ђѓ#/#%(!(!(!(%!'(#rR2–hqVWg%e%e#&V#ђ2ѓ#/2?2‚PX(!(!(R' r‚ƒ#'ebvWg&V&VЖW[e&V#&V&%b2R2ђ2Rђ28PX!(!(!rpr‚2W'b–'a(rqVvЉІre'gegeЕe&V#&VR2ђ2ѓ#/%#/#(PR…!‚‚rgc#rvyt!(rrqvЅ–Ђebgeue%e#&VRS#(ђ2‚2?#/#ѕ‚B‚v2rvyd!agjV–Ѕ`ege&VR2‚2‚2ђ2ђR2PRB‚‚WgbB2BG'gitQ‚B!vІYi`ev—V#&V&#%2‚28(/#/2?#%$RbvB24v&v—BEavqvV–PVPeg—V&V#R2ƒ#(%#/#/#%B‚1‚‚bgB2GgiA(H!‚X!geieVPgiyue&V&#(#…(#%#/#/#PT!(!(!'(rB2WgiyA!!giV–VVpv—•ebc#(h(52ђ2ѕB‚R‚r!C#$T‚ABgeigVvpv—•ebgb2R†‚2ђ2ђ25BA!(‚B‚rd$#FAHA1A$AGeigeg`g—VvV2†V‚2ђ2B2PT$B‚BC$d$geidgVPVW—•`egbe25h(R‚2B2B2PTBB%!B2AC4vV–Eee`g—•`Vv2V‚…&#B2B2EA$B„!†!BAEFV•iЄVpiyVegb2V‚…bS$#B2EBB„$(&q!t$eiVEediyu`VWgb2e`hV&C#C%2PT!$!$„!BAF–EeVFvyVg`b2`ed#$#$#$PT!$!‚‚A$T'gdTV–E`eeFvVegbR2`ed#$#C#$PTB$!$VvEAtTPTg`VvR2VVC%B2EA$‚ABFvTqtedTPTg`Vvpje#&2VE2BEB!!$„$(!$gGFEEFW`V—ge`jR2bdVC#EB2EA!$‚B$‚BFvtTVvVivVvІV#&EB2E2EE!(B„!$gGWFvV–uevІV%#$2B2EB‚!B„$vtutTgeigVІV&*2B2EA!‚$B!EtgeigVVІPbjb2EBEB‚BBTteiІ—”VІPbІЂ24$T2EBHBA$!BFYІ”VІPj*j#%Iid$PT!$%$`ešg–—@eІ#$iBEB!BTvtT`gšTe`Pjbj#$T–•–’ieBBA!$gFvEF—g—”e`e`VІІЂ2F–ЉibiPT!$gGgd`g–yFE`S#C$–І–PT$!FvEAF&F–—E`eE`І #$Tjšj–ZiPT$vrtabd`gFTP`24$TZj–š–•ЅEBg'BE%EFvqtbag'd`dVC#$jšjš–šPT4vt$RT$vAFvqvvqg'ggbQT`dT$2BAJšjš–PT4t$gdgdg'g'abgbrvvqtVT#$Tšj–•CGBbgbgdAQABqrag'bg''gAEEB2RBAFEІЉieE5CSCBG'&vrvt$$''&rqrqrtT$#$ygЄЉІPT454ST$'&vrv&vBABrqrtQAEAB2BJjg'—'’——jIЅCSCE%$'gbgbg'gBAE$'BAEAEB2BEAЉry)ryyЄT•E54$%Brvrv$&tT$!QABEBAE$#BAB—'Ђ——IPT45CBv&BEBA%!ABRT$T%B2B4$QRYyy&EATPT4$Rsrv$A$!BT$$T$$T$$$$ЂЁEAEAECSCBE%$usrcg'$RBEBE$$RBABABT$PT454$W7beBBRT%EB$$T$QT$QT$PTSCE5CBG74T$T$!KBABABABT$RTPTSCBE%$RBECBK$ДВAKE%BABEBAEECE54T$SCBEBEЕВKEВB[T$QT$TECEBCE5CEBK$ДВBKEBRQTT$ECEBE%$%CEK$[TВEДT$RBAEBEAQTECEBCEK$ДВKEBAETP€€€Р€р€р€р€р€р`0`€рќѓ €р №z@€р€?р{рGў€€рџ€oияџ@€рџо€ћЄџ€€р€џРLб‡џј€рџ№@ ‰)`€а0@€р џќџ€‡Р(bт@џ€р џќџРџјФюШџ€р@?џрџ?џТ jxЃџ€рџ№€ќ?џр ў RЅ1 Ÿџу€р!џјр *І‘†Ц ?џУ€р€_џР€ЉŸ? єЇџќ?€р gџљрЌoЧYqнВџсџ€р>0џ џўЃџџџ€р&],Сџј‡џƒџYџп €џ€рKhќ€џХѓJјшз€?џт#€рЯqTЏ‚G†Kўл2јC€р,/ЮС[я …М[€#€р^иб@&Ѕ[ƒO7Y`€рKЛ9–д€-BЎLBуjЏ “€рCF9DРUqWˆЧЂЦl€А у€сяЌ2џў@щЩРcс*a6€Шk€сОп_%џР€@аhTтр‰јkєаQps€тm>џј@  TШp1фђZ‰–М  h  €тŽ3Р7ў` Вƒћ*0Эbœ €цXЈџР>@ џ o%љ„Яf”‰Д Ч€цЕ;УрУˆ/юŠAщўB(№i"€DТ-Ћ€хЄТAЪ›+іФ_ќPд‚'џшŒ}X% Іѓ€шЫ@МР(O&Р*юПћяЪфKџk‰Б~pKўЬŒ’]j ЖЦџРЫ€фWа0Ќеl<€ќ}нпњaі(Ÿј—џР ЅЯЋцчНцД€ч3дWЏЖкaџпЭџѕcїcg‡ЯјЏџ8˜1T w АёэЖП€ч у1OЌџƒџ{џњзћУ?ну№ў#–Ъu˜С[/C€ђeРh[хЗByспіџ§Яё“џўќр?џИye!кАl пžЃ€ъ1ПSЭџ{x<ђЯ'пўЯчЯџ~AџќрNЁыйуaЕw§“€ї€~Vд№Ї .;Љ§џќ_гџПГџяўћv%}щ}ЯЛL?€§А‚l7ЖњЕxGѕЗџљ–?џоџќ~Чџg†ХэјРѓ]ЃG€ђЉŠЙ§кSШJ~џПџУР Ђ€PН\ЏŽџџŒ'0 їџйННчBНсО@ŽŸгь„§@ЏЮ;ƒZ$ ь„эСЏ ёОTŸгОVŸеН5ОRŸзОTŸгН5ОNŸгОPŸеН5Н5aН5}L'Н5шННрџН€џи9€Ž/ŽџЉІ€Ї ŒџЏ&і9Ž5 ьŽ;ŽџАьэЁŒџР%іЖKЗџš990123>0123=>ŽџЁЦ0ŒџЄ$ч€\ іžІ40ŸІНЯУ5ŸІŽџЁЦ"€9ŒџЄ$ч€\ іЬмн9"SCREEN /NIB" !р€5žгŽœе%9ц„o€ч  ђŽПџžг1?Œ@% цЄoЄч„1?0 ю0ŸЯЮ@ކ€—Ы“з%пг9ІЄ”Ы'І€—ЬжЬчРЫ Ы&ф†€—Ы1! мŽПџžг1?Œ@$0П 9цЄч„oЄ1?0 ~5€шŽŽ@ў †€—йЫŒР%9ІЄ”й'Н5У–ЭЇ„йІЄ”й'Н5У–ЬЊ„Ї€й й&憈—й1! Ю Ы'цРФЫзЬXXXXзЭ  ЫцФФ№зЭTTTTзЬ 9Ž@Ž@ ŒР%9ц€шЄч  ёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ5ћ uиPTPTPTPTvBEGgd$PTvt$ЄPTvt#$#BJ—jEGgd$#BIyz—jIPTvGgGB2BJ—šjIPTvt#$ІyvІЄšPTvGgB2BIG—–zJšeGgGgFB2FIІЉieGFvFvt`B2IІЉiPTtgdgd`d$2BJšjš–PTvtvFvtgd`dVC#$jšjš–šPT&vtgd`gFTP`24$j–š–šPT$vtd`itVTV b2BFІЉІЉijiPT$!FvFyg”`PTV b242IijieBA!FvtvF—g—”e`e`VІІЂ2F–ЉibiPT!$Fvtgd`gš—@VІ&Ђ2IiЉi&–PT$!B!$GgFYІyiytVPjb2BF–”$PT!$„B$`ešjiEejeЂІЂ2Iid$PT!$„$B$eiІ—”VІPbІЂ24$2EB‚BBtgeigVVІPbjb2BEA!‚$B!GFvV–u`jebЃ#$#$PT(!B!(BGgGFvV–uevІV#$2B2EA$(!$!(B„!$gG@FvVivVvІV#&B2B2EA!$‚B$‚BFvtdPTg`V—ge`jR2bdVC#B2EB!!$„$(!$gGFVEFveivVvpje#&2`dVB2BEA$‚ABFvGFVEFveg`v&%#`ed2B2EA$!‚BFvAtidVPVTge`PVvpv%#&VB2B42EBB!($BvAF–EeVFvyVg`b2`ed#$#$#$PT!$!$„!BAFV•dVF—Vev#&V…bd242B2PT!$!HB‚gBAFV•iЄVpiyVegb2V‚…b2B24#$PTA$!(Bbt$eidVPVyVegc#%h(Rb24#$#$PTBB(B!B2AC4vV–Fuee`g—•`egb25%h(R‚2B2B2PT!$B‚BC$d$geigeg`g—Vv&2†V‚2ђ2B2PT!$($('!vB24d$A$veigVvpv—•ebgb2R†‚2ђ2ђ25B‚‚r!C#$git‚ABgiV–VVpv—•ebc#(h(2ђ2ђ2PT!(!(!'(rB2BFv—”vV–P`ev—V&V&#(#‚2ђ2ђ25B‚1‚‚bgB2GgiA(H!‚(‚vV–PVPeg—V&V#(2‚2ђ2ђ2PRA!(!!&'gd#Gbgit$„$!avqvІYi`egiueb2eb2‚28(/#/2?#%$!(!(!&'gbB2BG'git$$!(gjV–Ѕ`ege&V#(#(#/#/2PX$!(! 'c#'g–A!(vЅ–Ђebgeue%e#&VR2#(#ђ2ђ2?PR‚(!(!'&v27'g—B'!'gjšg&VRvVv[VReb2e#/#/2ђ2ђ2…‚‚‚''(#'b–'a(rqvrebekeuЖVReb2bebV#/#ђ2ђ2ђ28PX(!(!(!r(2rv#–&!'gg%e%e&[ke#&V#ђ2ѓ#/2?2‚PR‚‚‚‚!'(#rv2–hqVWg%ebe+eВЕbђ2eb2ђ2ђ2?/2ђ2PR‚!(!‚‚(!'‚2rs#ya(!q(!VW'g%eb‚VRЖВЖ/#%eb2ђ2ђ2ђ2ђ2ђ5ђ!(З'x#rs#'bg(gbe'g%e%+[/#%b2?2ђ2ѓ#/#PRђ(‚'(2r‚27&!&(&VRvrS%(RВђ2Vѓ#/#/#/#/#/#%/!(! ' (#(2‚‚x(#&'g%(R2‚Вђ2ђ2ѓ#/2ѓ#/2PRђ‚!(#!'В‚2‚2‚b‚h(#'gV%(%#(+/#ђ2ѓ#/?#/#/2PR(!‚(! rp(2‚28(!‚2vrubX(%#(+/#ђ2?/#/#/#PX(ђ‚‚2‚ƒ#(x(#%g&V%(%2‚Вђ2?#ђ2ђ2ђ2ђ2PR?(! (#(#(h(#&vVrV(R28+/#/#ђ2?#ѓ#(2PRђ‚‚2‚2‚2VRV(%2‚Вђ2ђ2ѓ#ѓ#/‚8#PX(ђ‚!‚2‚28(#/#%e%‚8(#+/#/#/2ђ2ђ2ђ25(/(!(! /#(2‚2ђ2Vr‚ƒ(2‚Вђ2ђ2ђ2ђ2‚2ђ2PRђ‚(!( '#(#(#/#/#&R‚2‚2‚Вђ2ђ2?2ѓ#ѓ#/#%(/(!(!(‚pЗ#‚2‚2ђ2ђ2ƒ#(#/+/#/#ѓ#ђ2ѓ#PR‚ђ2‚1(‚pЗ#(2‚ƒ/#/2rђ‚ђ2Вђ2?#/#/#/#/#%‚ђ‚18!qs#(#rx/#/!(r#/7‹+/#/#ђ2ѓ#ƒ#/#%(/(/(#(#+x/#/‡/7‹#/#ѓ#ђ2ј#PX(/(/({qБs#‚ƒ#x/#/{xИr2ђ2?2ё#(#ѓ#PX(/(/(/({q2‚2x/#/ЗЗВЗ‡ђ2ђ2ђ!ё2‚2ѓ#%‚ђ‚ђї‡ЗБЗ‚2З#'ђ27q{r{2ВЗВЗ#/#ё1ё'/#/#%(/xЗБ!+r2{2;#'Зr2s'З2їђ27ЗБrђ2?#PR‚7ЗИБ!+{r2ЗГ#'Зђ2ЗБ#+{rї/#'Зђ2PX(#{{#{s#{2ЗБ!#+{r2;{q!#/#%27ЗБ'З2ЗГ#{ђѓђџИ&?:ƒLOTOGRAF: WRITTEN FOR CFDM BY KEIRAN KENNY, JUNE 1998&N у0,0:у1,54&^’65497,0:ф4&x’&HF015,18:’&HF016,18&Є(ю(13,1),"LOTTO DRAW":ю(14,3),"BARCHART"&Н2ъ(275,0)Ќ(275,191),Н&и<ъ(275,174)Ќ(639,174),Н&цFHГ35:VГ22&ђP€TГ1Ѕ45'ZV$Гџˆ(T):V$Гџ(џˆ(T),џ‡(џˆ(T))Ќ1)'>d…TД10Їю(H,V),"0":„ю(H,V),џŽ(V$,1)'Tnю(H,VЋ1),џ(V$,1)'^xHГHЋ1'd‚‹'lŒPГ8'ž–€XГ1Ѕ6:D:…DГ999Ї210:„ю(P,12),џˆ(D)Ћ" ":PГPЋ4'Ќ AГ273ЋD­8'№Њ€BГ173Ѕ0ЉЌ1:…џЋ(AЋ2,B)Г1Ї‹:„ѕ"BM"Ћџˆ(A)Ћ","Ћџˆ(B)Ћ"R6UL6UR6UL6"'їД‹X(О€DLГ1Ѕ1000:‹(ШЅ140(7вю(9,12),"***** FINISHED *****"(Jм’65496,0:Ѕ220(`ш† 2,6,10,31,34,41(vђ† 1,2,18,20,29,45(ќ† 7,12,31,32,33,34(Ѕ† 17,19,22,29,30,33(М† 9,16,19,20,26,32(д† 13,14,18,19,26,35(ь$† 14,15,36,39,44,45).† 15,24,27,31,32,40)8† 4,5,7,9,38,41).B† 2,5,11,30,40,43)DL† 2,7,10,36,42,45)[V† 2,13,17,26,29,40)r`† 7,12,14,23,30,33)‰j† 7,21,26,28,43,32)žt† 1,7,16,20,40,4)Е~† 17,21,2,29,12,32)Эˆ† 15,11,26,22,18,16)х’† 14,17,20,25,32,45)ќœ† 16,36,33,26,15,5*І† 18,3,42,6,1,15*(А† 4,36,37,19,26,33*=К† 7,20,27,6,12,1*UФ† 34,30,11,39,40,41*kЮ† 23,41,17,6,9,13*‚и† 7,21,26,28,43,32*—т† 1,7,16,20,40,4*­ь† 45,41,43,7,6,30*За† 999† 15,11,26,22,18,16)х’† 14,17,20,25,32,45)ќœ† 16,36,33,26,15,5*@, P "4рaкc). :D< QкСP ( РшtuŒР Р<н @€‚@ ˆp€%ћ0@Vт8 p0СJ…@f #"QЖ Щ" Р$Р"1 љ"СJ1@–€€‚ Ц€%Н€€EРm€00m€ EР6­€(Ц€‚ %(™А{080pP”ЄP H@•  p@рХ~ рTЄPШ %ИчА{АР @@@‚А€Ц€"P€EР €€ €"P €АР€){„‡ЫT•Иј2@”ŒД„GЄ’bФј$р0”ŠЬ@$*@Ѕ€РІܘ$2@e0€>@€‚h$Šb€%ћ0Ѓ U€№№№p№€ї€№№p№ї‡px№pїї€№pp№€p№p‡x№p№‡p№p№ј№p№pp№p№ї№їpp№‡№ї№ј№€‡ї№p№јј№‡№‡№ј№‡ї№p№јј№p‡p№p€№‡p№xpxp€№€p№ј№€№px№її№p№ї№ї€№јp№№‡p№p№ppx€€€№ј№ј€№ј№px€№јј№ј№p№‡‡€ј№p№ї№ї№€p€p№pї№xї№pїpї‡p№€ppјxї€ї€p№p№ї‡№€№€№€јїxј№p№‡€p№pp№xxp€№‡€px€‡p‡№‡€p№p№јxї№x№pp€ј№pј€‡ї№ppј№xxї‡€ї№ї№pїј№pxp€№pјpїї№€ї№№ї€pї‡p№pxp№p‡ї№їp№p‡‡p‡їpј№ј№pї№јp‡їp№ї№ї№‡№їїpї№p№‡pїp‡‡p€pїxpxpј№p№їx‡їјxp‡‡№p№p№pјp№p№p№p№p€p№p№ppx№pј№p№p€pјї№јp€p€pј№јјpјpx€pp€€јјp€јјpxpxј№€јјpxјp€ј€p№p№€ј№ј№€їј€‡x€№p№p№‡№ї€p€№p№p№p€px№p€px№pї№p№p№ї№p€p‡p№pppxp№p‡‡№ї€px№јpxp№px№p€ј№p№јјї€px№p€€ppp№pp№p€ї№ї№pјp€px№ї№p№pї№ї№p№p№€p‡№p№їїїјї‡€‡€px№pxpx№ї№€pї€pї№їpј№pјpј€p€pјxј€№pїїx€€№ј‡№p№pp№јpp№јp№p№ppx№€№ї‡№‡№‡їјї№їpxјp€p№p€pї№pp№pїp€p№pї№ppxїp№p‡‡№pї€pїp№€  h€J0 РУ€`€ˆ„€€a€ 0 l6QE ІР )&№@ЋРˆ‘€I$€єD№ъ 3РРŠ€@€`   xI@ЄI)(€DP@ @ 4H Ъ)€’DАёВ€ )А0с@Ррj%@(@€Рw„)€0€€sу@НЋР‰`j(€ PурplH!> I)ш№$кhЇJM ѓ­І€ u€(@#`#сј’Q ’Рё @ $D l I~n) € 0Х…$ Vv€ $тРсёс $ !E Њ  яЉ€ЖSlІ m’fcЖР `(‘@ Јтy РHЇШ‡дv`@P(lB‡мјшРqфЄ‡НёсРn.  >.Р€`€Ц€6`€`@сђхсР:Ѕ$Q-@Љ№€ ­ЉАШ’"€‰  @b@p`p€#э@јш№ ’#ю яс№0e6JC /.  ‡ №усрА8PkЉp9 €тЈШX” ’ %X $Р $€   "€&@(ˆ€ @ˆ„ At p`!g d€@€!0Ј~1  |Г dlPH€Ю[РN€(@W`р№(Џ%K@-  Р[4 …  iˆ€<0(њx-Ahp@ э^$šyŽb€€ь tD ’BYœ_рtь8тB2Ÿ~ §—ŽŠBќП e(АqŒќLЁ WхР tЂ€#*урф pі ˜еџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЦФ С Т ТШФСУХ"%$ФФ'Ц)*ШС-./ТТ234567Щ9:ЦТ=УУ@ABCDAWG4 NIB˜HICK72 NIB!­LOTOGRAFBAS ЛLOTOLUK2BAS<;MACROS ASMџYMACROS LSTџ8NIBLOADRBIN`NIBSHOW BAS#еPART9 ASMџ0ВPART9 LSTџ њPART9 TXTџžPART9A ASMџ,†PART9A LSTџ ЬPART9B ASMџPPART9B LSTџ1PHOPATCHBAS+ВREADFILEBAS;дREFLECT NIBSIGN NIB&‘TREASUREBAS>ыTREASURETXTџ?-shadow NIB(|џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ09ъ :€L јXѕ >РN№š ,sњ8РРP 8 >Ь‚XИ№@„8p‡ ˆшŒї +Ь€o€ pа€€$b€@ ˆ€ fo€€  €/ €@ ˆяўŒР~@ Phќјќ  @ o€‘црџРк@<BЈ€"РL !‚XP  0‚YрР €f € \PрАИ€<@€ц€8€ 0p0ЛС` „Р эјp@А7:p2WјС4qŸ‰цŽAь ч*‰І@Q,А tXH‘>ЦЌЧDI@ ‚тЏ ЌУ Q$H:э.ŒD€Є— ЎЄж$L@>шЈо€ƒ[ˆџSBŽРГѓ ыeQ€yіЅум7 eЯБњСнЏ†`Mйр`B №`G5 pU PG Б˜€Pc€h АP €0 X € №4€ ," Аf&€ 4?Д€ yІ€ Б с€L‚ АќР€h0 ‚С3``0f`0€sР€№ˆ,ь€ Њ( (Ђ’o "˜`ER@€Œ ИР €Œ@$ $$I”W Š(Љ Б…@3 БГ (ёA” гSRƒ@ p СгSD(@Q!”jkƒ—Бj @ъjz!@$@@ *HŠˆ>ОНЭ‡kH‡џОНm€ l’›mВ‡Œ™E6S`зе—зд@q|‚Бqp€œŸB€ ˆ‚œŸ€, О&ˆ€Ь БЖЬ€.ˆёБ€Ј0  РГSVp€“SR0*j ‚ <Њjk@<Ђ›)жP,5yE*Lх>О№XxО€<”@$H+жz$Б ф€зж~а`№їз€(РP@`ё}qr.‚РщрqAq€@H$ ` œš>І€›gмœ€’H * ЉŒ Ь —І;ічь< р ВŠ%€I˜CУM›`d€Б§qМŸЄрXрчёБР S_г\ЬУр{к3S@ jkъhцюРР:zj@ОПОПЫЃ‡€УџО€зШЗ№Ќ џ<Яза630qAqxиSq@0œŸœŸ†к/3ї„œ€$S Ї@MМЇIPЪyM” ? 9zУ@mШЯ” Šѕ@ =QaQy БЗБЁйў}@~MЉБЈPЃЃŠSUSџ™5TiРNЫS@I ‰jzo†'є*Хj‡ђjp ) PR( ОП §­ќ>ОА6P№ІDŒІ`6ЪdЖзЯи ўЯзРP)qp@щqt`œ‚ €œ˜ Рќ QБП€ёБИ €HЁS_ѓSZ$­*jlКjhI ( €$>ОДОМ$D* р%DзмWзд?(R@ EH1qtqp$Ё  $œ\œ˜$HЪ а€E€ь l 3(Ѓ( @0ŒI€qБМQБДS\STa€*jxjh>ОИ~ОНзШwзд1qx!qpœˆ<œžL < qБЈ1БВгSp3SRъjP jh>ООМ–Пџі–—ƒ<`€У№]нЯИРиi†АzР`пџїžњ3=1їcџƒиГьpь` ?я>Яяѓч иїёПпš?я§зїфџйћџЏџyЏячџћЯпПѓџћйџ§Пн—ўчЗљџўыПџћџХНўkў?ўПHmџлџеЬBн^ђџцgњЕ9хЬxуРёрsGїџХ9їЯшзјѓуЭяžџљїоЫcVVŒ0Рn<СБ­˜У`2€a€ X 0Ьœ``л@р8ƒ8ро@x"№`|?ѓ#оўoџ№ џaЧуСŒ~ї0c?юqџорБ–ћ?џД@{NСЗdТп0Р@ƒ…ФŒц8 a A  РРЦР<€ €€ ŽѓќpРр`‡џ№џџ№Юј€Ц€Ч§џ№Яџџ№УРрУРРрр`РрƒРяџ в&b•700,30720:Р8:ŒF$(20):т80:SLГ1:HNГ2:EГ424064:’282,255:’59078,33:хE,0:І63:І52:ˆ№ Ѕ2:ˆя Ѕ2&ыSSГ0:ф0:ј0,0:у0,0:у8,63:у1,11:у11,11:ž1:ё33,0:ј3,0:‡"NIBSHOW 3.0";:ј0,0:ё60,1:‡"Border: ";:ё60,0:‡"Hscreen:";:ё0,0:‡"Drive:"DR;:І61'˜ё0,22:‡"Arrows"Є14)"D:directory C:change drive S:slide show X:exit";:ё0,23:‡"Space/Enter:load B:border swap H:HSCREEN swap T:comments P:palette";'Б… KГ0Ї9:„ј0,0:€AГ1ЅK'ыHSГ(AЌ1)Ќ(џ((AЌ1)Ў4)­4):VSГџ((AЌ1)Ў4):ёHS­20Ћ3,VSЋ4(‡џŽ(F$(A),8)Ћ"."Ћџ(F$(A),3);:‹A(SOLГSL:HSГ(SLЌ1)Ќ(џ((SLЌ1)Ў4)­4):VSГџ((SLЌ1)Ў4):ёHS­20Ћ3,VSЋ4(ˆј0,1:‡џŽ(F$(SL),8)Ћ"."Ћџ(F$(SL),3);:ј0,0:’135,0(­ A$Гџ’:…A$Г""Ї9:„…A$Г"D"ЇІ56:Ѕ2(Т …A$Г"C"ЇІ28:Ѕ2(ш …A$Гџ‹(10)ЇSLГSLЋ4:…SLВK ЇSLГSLЌ4) …A$Г"^"ЇSLГSLЌ4:…SLД1ЇSLГSLЋ4). …A$Гџ‹(8)ЇSLГSLЌ1:…SLД1ЇSLГSLЋ1)S…A$Гџ‹(9)ЇSLГSLЋ1:…SLВK ЇSLГSLЌ1)……A$Г"X"Їј0,0:ž1:…џ†(&HCFC3)ДВ141Ї’282,0:Š :„Š)Б…KВ0Ї…A$Г" "Б A$Гџ‹(13)Ї NLГSL:І30:Ѕ2)г…A$Г"B"А BCГ0Ї BCГ63:І61:Ѕ9)ѕ…A$Г"B"А BCГ63Ї BCГ0:І61:Ѕ9*…A$Г"H"А HNГ4Ї HNГ2:І61:Ѕ9*7…A$Г"H"А HNГ2Ї HNГ4:І61:Ѕ9*v…A$Г"T"АџЉ(E)Г67Їё0,17:€ COГEЋ7ЅEЋ246:‡џ‹(џЉ(CO));:‹CO:Ѕ9*…KГ0Ї4*—…A$Г"S"ЇSSГ1:Ѕ68*д…A$Г"P"Ї€AГ0Ѕ15:ёA­4Ћ6,17:‡A;:ёA­4Ћ6,18:‡џ†(61465ЋA);:‹A*т…SLГOL Ї9+HSГ(OLЌ1)Ќ(џ((OLЌ1)Ў4)­4):VSГџ((OLЌ1)Ў4):ёHS­20Ћ3,VSЋ4+Lј0,0:‡џŽ(F$(OL),8)Ћ"."Ћџ(F$(OL),3);:Ѕ7+`ё7,0:ј0,0:‡"?";+ЂA$Гџ’:…A$Г""Ї29:„ AГџ‰(A$):… AД0Б AВ3Ї:„ DRГA:ё6,0:‡DR;:Ѕ56+гF$ГџŽ(F$(NL),8):…џ(F$(NL),1)Г"B"Ї IГ1:„ IГ2+ћ… IГ1Ї…џ†(&HE10)Г246Ї33 :„І52:Ѕ33, …џ†(&HE3C)ДВ189ЇІ54,4!… IГ1Ї FSГ&HE92 :„ FSГ&HEAE,b"€XГ0Ѕ7:’ FSЋX,џŠ(џ(F$,XЋ1,1)):‹X:фHN:ЯDR,ƒ#’65496,0:… IГ1ЇЂ3840 :„Ђ3644,Ј$’65497,0:Я0:’135,0:…џЉ(E)ДВ67Ї38,И%фџЉ(424311),Ц&’65434,BC-#'€CMГ0Ѕ3:CM(CM)Гџ†(65467ЋCM)Ќ64:‹CM:AГ0:€CMГ61465Ѕ61480:’CM,џ†(65456ЋA)Ќ64:AГAЋ1:‹CM:џŸГ0->(A$Гџ’:…A$ДВ""Ї’135,0:-R)…SSВ0Ї…џŸВTD Ї-g*…џЉ(423943)Г0Ї51-}+…џЉ(423943)Г42Ї49-”,…џЉ(423943)ДВ45Ї51-Й-TTГџЉ(423944)Ќ48:… TTД1Б TTВ9Ї47-м.€TГ1Ѕ2Џ(TT)Ў2:‹T:TГџƒ0(0):Ѕ51.#/IГџЉ(423944):…IГ83ЇІ64:„… IГ82ЇІ65:„… IГ71ЇІ66:„… IГ66ЇІ67:„51.Z0€TГ0Ѕ15:у T,џ‰(џ(A$,1Ћ(T­2),2)):‹T:х423943,0:Ѕ51.’1DГCM(3):CM(3)ГCM(2):CM(2)ГCM(1):CM(1)ГCM(0):CM(0)ГD.А2€CMГ0Ѕ3:у11ЋCM,CM(CM):‹CM.Й3Ѕ40/4’65496,0:гM"NIBLOADR":’65497,0:…џ†(&HCFC3)ДВ&H8D Ї’&HE76,&HCE:’&HE77,&HE7/ 5/06’65496,0:гM"SQZLOADR":’65497,0/67/ˆ8’65496,0:хE,0:ё35,15:ј0,0:‡"Reading";:JГ1:€SГ3Ѕ11:п DR,17,S,A$,B$:€AГ1Ѕ128Љ3209…џ(A$,AЋ8,3)Г"NIB"АџŠ(џ(A$,A,1))ДВ0Ї F$(J)Гџ(A$,A,11):JГJЋ1 :„… џ(A$,AЋ8,3)Г"SQZ"А џŠ(џ(A$,A,1))ДВ0Ї F$(J)Гџ(A$,A,11):JГJЋ10!:‹A:€AГ1Ѕ128Љ320Ї;…џ(B$,AЋ8,3)Г"NIB"АџŠ(џ(B$,A,1))ДВ0Ї F$(J)Гџ(B$,A,11):JГJЋ1 :„… џ(B$,AЋ8,3)Г"SQZ"А џŠ(џ(B$,A,1))ДВ0Ї F$(J)Гџ(B$,A,11):JГJЋ10к<‹A:‹S:KГJЌ1:ё26,10:‡џЁ(40,32);:SLГ1:’65497,0:1=ј0,0:ё68,1:… BCГ0Ї‡"Black";:„‡"White";1>ё68,0:‡HN;:1•?A$Гџ‹(&H7C)Ћџ‹(&HFF):€PPГ1Ѕ15:B$ГB$ЋA$Ћџ‹((&HB0)ЋPP)Ћџ‹(&H12):‹PP:€AГ1Ѕ60:’1024ЋA,џŠ(џ(B$,A,1)):‹A:’1024ЋA,57:Йџƒ0Г1025:1С@A$Г"00010203040506070809101112131415":1эAA$Г"00043236374433383552535455603534":2BA$Г"00022016182219232630585150172106":2ECA$Г"00010809111025312724141513292812":2“Dё32,15:Л‰"Delay (3-30): ";A$:TDГџ‚(џ(џ‰(A$))):… TDД3Б TDВ30Ї2:„ TDГTD­602бE€AГ0Ѕ15:уA,0:‹A:NLГSS:І30:SSГSSЋ1:…SSГKЋ1 ЇSSГ1:Ѕ69:„694433383552535455603534":2BA$Г"000220161џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџряџ§рьэмќlР?яьлр?џџџр?ѓ;ѓ?№?№?џ№=Пp?џ№?џpyЗрyѓр7ѓрwџрq№s№v№7р№р?р?=?Р/?€Р?€?РР р№№јр<ј <јр=јр<јР?јр?ќр?ќр?ќр?ќр?јр?јр?ј№?ќР?јр?јр7јр{Мр;ј№;јр{јрgќ№ќ№{М№ќ`ќрkи№РР6УУ‡qЧqЧ1џxЫyл<џ|џ?ўџ>Я|>~?ў?ќ?ќўўўўўќјўќјррррр№ьррјрјјјќќќŸў ?ўџџџџџџїџСџСџoџџџяћџџяп€G€oћ€oџo§>џoџиgп‡џџgй‡џџЯћџГџƒяѓo§‡яѓџџ‡џџџ§€џ§€џџ€џ§€ЯП€<яџ=€рџ?‡џџП‡џџџƒЧpџПƒЧpџџƒџўпџ‡џџџЯ€€о€1€ў€ј€ј‡ПР№џР№‡ў`№ƒџр№†џр№†ў`аƒџ№а‡џ№№€№ƒ€№€№€№€№€№€№€№€№€№€№€А€?6.&8"(  џLL0lLOї‰U€џџП‡џџџƒЧpџПƒЧpџџƒџўпџ‡џџџЯ€€о€1€ў€ј€ј‡ПР№џР№‡ў`№ƒџр№†џр№†ў`аƒџ№а‡џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‡ NdP№ !БАkK€№0ѓ }pвєП—ѓ # /@; @‘‹ # №‹ƒ/‰0 # ‘ 0   10з p0 РI0 #p0 b №10Ip0 d 0 # I ђв@p0№ 0! ‡ № p № № ђ№  € p€ ї   €№€№€№€№  РРpа  Р!gР p2ž`аѓ!'РpП zРмє! 0pPБ!<`гC!  PpА/} ФС рамв   pав1  аpI  @абС  №7кааpPppо0PБИ 0} = s арpPpаtРp7аpPј1зЇ№ќкй№ € € €P0@€€  @`ЧУџA№QшТ?С№S№"ррѓћїpрЧџ ?ќv8wkј;rŸ№€rpчрРР`€€АриР?>€ьР|@l €#|ј ( рСG№ 0a=`x <<€x№р‡€УР€` Ш 'l€l6иа€€Р@ € s PА{00080  € ` ` €0 Р8рРp7Пј}Ћ€џM€џЎтљ€mпН9€ž—н-€ѓя5€ЯЛW€oџ§WЋћЖWьп џnџƒLКР'Уx.€_И. p>@ Q €€РлРЂ4Q6@„A HЦ "!! Ь ` 0a˜3 6i@‘Єя`CHБ#J@‘Є P€@"  `„ @„ (ˆobX‘АЖФ)Р6лb[{Ф#{и‘Н…  `€ ` F$ HD"Š$ 1 H‚1‰ ‰€€Š8`$@D€л`0JD!‚A„ €ЄBG 3 €Р†` УcF@H$HF0$GP @€P  D"ˆ D 0†У€a€ 0Р@„ˆDH"@$ @ P D bFлиH$Kq@–%Ж00 €€Р3Р($Q‰ ‚A ˆ!@Ђ €€@ P( @ P( @ P( @ P( †УaАиl6 †УaАиl6 †УaАиl6 †УaАиl0ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюx§ўџПпяїћ§ўџПпяїћ§ўџПпяїћ§ўџПпя№јќ~?Чуёјќ~?Чуёјќ~?Чуёјќ~?Чрјќ~?Чуёјќ~?Чуёјќ~?Чуёјќ~?Чр§ўџПпяїћ§ўџПпяїћ§ўџПпяїћ§ўџПпя№ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюx †УaАиl6 †УaАиl6 †УaАиl6 †УaАиl0 †УaАиl6 †УaАиl6 †УaАиl6 †УaАиl0ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюx§ўџПпяїћ§ўџПпяїћ§ўџПпяїћ§ўџПпя№јќ~?Чуёјќ~?Чуёјќ~?Чуёјќ~?Чрјќ~?Чуёјќ~?Чуёјќ~?Чуёјќ~?Чр§ўџПпяїћ§ўџПпяїћ§ўџПпяїћ§ўџПпя№ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюx †УaАиl6 †УaАиl6 †УaАиl6 †УaАиl0 †УaАиl6 †УaАиl6 †УaАиl6 †УaАиl0ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюx§ўџПпяїћ§ўџПпяїћ§ўџПпяїћ§ўџПпя№јќ~?Чуёјќ~?Чуёјќ~?Чуёјќ~?Чрјќ~?Чуёјќ~?Чуёјќ~?Чуёјќ~?Чр§ўџПпяїћ§ўџПпяїћ§ўџПпяїћ§ўџПпя№ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюw;ЮчsЙмюx †УaАиl6 †УaАиl6 †УaАиl6 †УaАиl0@ P( @ P( @ P( @ P("‘Q q"€€ѓЙoџџџџџџџЗџџџ§џџїџџŒp0Аž§ћќћџяџџџџџџџџџџяџџџџџџ§џц@XhРР0 €Р€Рџ€џ€џ€?€7€ї€ї€џ€џ€џ€џ€чџ€я€џ€џ€џ€у€§€С€У€у€у€у€у€н€С€У€џ€џ€occ€{€€?€?€?€€?Я€€€Р€РЕР†ЗР§їя€}ЧџР§їџ€ РЧћРЧћРџџџРљіџРяџџР`p+€іp;€цџќџlџ|?М|ќ|{`?џўџќ/џў №Р?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў0€€€€€€РРp ?&$) >6"<=џL@0l@HмˆNdџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў?џџџў0џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџr YOВ В В  Аа@а@ А АаА @а$ ђ  аВ ђ В аВ П ађВ В аП ађ  аВ ђ  @ аП @ а@а@аП @ аП  № а$ № аП @ аА А@ А А А А А А А@ А@ А@ @а@/А@а@а@а@а@а@а@а@/А@а@а@/А@а@/А@а@/А@ А ж@ /А@А А/А@ /А@ А/А@А А ж@ /А@ А ж@ А ж@ /А@ а А А@а А А А@а А Аа@ А А АM    а@Mа@а@&ЖаА @ п@а@ п@а@ п@А @&Жа п@а@&Жа@&ЖаАа@ А п @аА А А @аА п А п А п А@ аА @а@а@А @ а@а@ а@ аА@§ аА@§ @аА@§аА@§ аMаMаАOаM  №АOаM §аАOаАOп№АO №MаА@аА @аА @аА @аАOаАаВ ђ  ђ  №П §а@M ћ ћа@- аА- В ђ П П В П ађВ аВ ђ В аВ В ђ а ђ    № а$ @а$ № @П @ а@а@аП @П № аА А А А Да А А А А А А А @а@а@а@аM @-    а@а@аА А/А@ /А$а/А@А/А@А/А@ /А@А А/А@ /АаА/А@ аА/А@ @а А -                       є   є є  є  є  є  є           @ а@аА @а@аА@аА@а@а@аА@§  @А@§ аА@§  аА@А@§ § § №MаАMаMаАOаАOаM  №АOаАM №АM №АжА@аА@аАВ є      №А А@аАOаАаП В В @Аа В В     аВ ђ ђ ађ П ађВ  ђ  ћ А А П ађ № а$ @П № а$ № @$ № @$ № аА А А А А А@ @аMа@а@а@а@а@/А@а@лћћk ћ ћћ ћ ћ ћ  ћ  d                   а@ п@аж@ @ п@а@ п@а@ п@ п@&ЖаА В      ђ    а- аА@§ @А@$ аM №M§ №M №MаАOаMаM §аMаMаАO k п@ @ аА @аАO П аА @аАOаВ В Аа@а@а@а@ађ   аВ ђ ђ ђ  ћ В ђ  П ађ  аВ В П ађВ № аП @Д @П@$№ аП   @ аП       ћ ћ аMа@M     d  А ж@ /А@&А@&А@лћћ ћ№@А/А@ А /А@А/А@ А А А@ аА@ аА А А А А А@а А А@ аА@ аА MаА@ аА@ а@а@а@&Жа@&Жаж@ ж@ @ п@ п@аА @ п@А п А п В А А @аА а@ а@ а@аА @П аА@§ а-аА@$ а@аА@$ аАOаM №M§§аАOаMаMаMаАO §аMаАOаАжА@а@В є   @аД №А№АаВ В ђ   В А@аАа@а@а@аВ ђ В ђ ђ  аА А ђ П А ђВ ђ ађВ  № аД № @$ № аП @П @аП № @А А А А№А А@ А@ А ДаА@ А @а@а@аА@а@/А@а@/А@аM @-ћ   ћ ћћ  d  А ж@ /А@лћ@-  d ћ        а А а@а@а@а@а@Mа@ аM   є  є  є є kmkm є km є     ђ  ђ   ђ       @ а@ а@аА@§ аА@$аА@§ аА@$  аА@$  №АO §аM№O №MаАOаM §аM аАO §а@аА @аА @аА @аАOаАаВ В ђ П ђ  ћ П $ @П № @Д    @- а@/А@а@Да/А@ /А ж@ А/А@$а А А -а аАа@M   є km є ђ   ђ    @ а @§ аА@$  п№M №АOаMаАM § €€B„„B @JHˆРbЃ €6 !A„!!@PЁAˆP@T*ЅХ€Є*Є)TrЄ) €Њ  Љq`˜ Vp+†РЦcp+VqА1˜м Р+8œ РсА0СŒР РЦc0G `Ž0G€РCgY€cЦa!€Ca ё™ж`!ГЌйж`$PmŽnи‡Жm‡АcЦc›€ЖЧ7c›€іС@€ `1Œ Р€ Р c Р˜и`Ц01Œ`€0˜0€ 0@€ `0k €`mсЖ№РmрТ  сЕ…ZТ ŒР* 1„†ТC„€ cJ€†Ц•cJ€04!€0Р0€0 0 `Э`д `дjдр˜5Р ŽjЕР% ”%T% @1€T(*”%U↹NЈ*  BP„‚„„!Р „B@ !@c1€ЦcŒЦœ@@)`„€ p8`Р`Р`Š0E ƒˆСФЧc€„ … (P@EP@!AB)‡ BТPЊ—€TЉqaW  Љq`Є) Љ TМ(T *™РЌ0сЗ РсА1˜м РpрVp+ f308р€Ь 0€РЦc0ЈР„† qР$H`$ё˜H`ТCa!†ћјјИ{ќј|ћџџќ~љћџјрљœ8ћќ8<<ћјp<{д(<<{ќx<~џћ§јnпџїш<<<4p€p€€€Ц€Ю€џџяќ>џПџј=ћ|џј=ѓXџш=§ќџј?џўџјџўџј?€№8=џ№8=ћp?>=эа.=э№?<><,>рррxpРxpРѓџџмѓїџм~ћяПќ~зя/ш~ѓяПј~{џџќ<7џиx/Лымoїя;ј?ѓю?ј?ћя?ќ?їя?ј?џПџќ?Пs\p0ppppppp|p|?ј?ј;ј+x?ј?ј?ќ<;ќ?ќ?ќ/ј?ќќ}ќ``№а?6.&8"( ? џJщ0jщSђ]YOџ?ј?ј;ј+x?ј?ј?ќ<;ќ?ќ?ќ/ј?ќќ}ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЏ& :ƒ PHOTON PATCH&,:ƒ (C) RICK COOPER&=:ƒ JULY 1998&C(ž&N2• 1000&a<п 0,22,5,A$,B$&xFџ(B$,31,1)Гџ‹(63)&‹Pр 0,22,5,A$,B$&ЎZ‡ "ENJOY 63 LEVELS OF PHOTON!"џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ00010 ************************************************* 00020 * Collection of useful subroutines for accessing 00030 * the "extended" memory on the CoCo3 00040 * 00050 * Note that this assumes that it is located above 00060 * $4000 and that the SWI handler is always in the 00070 * logical address space 00080 ************************************************* 00090 * Installation routine: 00100 SETUP LEAX SWI,PCR point to the SWI handler 00110 LDA #$7E JMP operation code 00120 STA $FEFA * make a JMP SWI instruction 00130 STX $FEFB * at SWI vector 00140 RTS return to calling routine 00150 00160 * the acutal SWI handler 00170 SWI ANDCC #$AF enable interrupts to be polite 00180 LDX 10,S get PC 00190 LDB ,X+ get the next byte in the program 00200 STX 10,S bump PC on the stack 00210 LEAX SWITAB,PCR point X to the jump table 00220 CLRA * calculate offset in table 00230 LSLB * 00240 ROLA * 00250 LDD D,X get offset to routine 00260 LEAX D,X get the exact address of the routine 00270 PSHS X store on the stack 00280 LDD 3,S * get back registers 00290 LDX 6,S * 00300 JSR [,S++] call the subroutine 00310 STD 1,S store D 00320 STX 4,S store X 00330 STY 6,S store Y 00340 STU 8,S store U 00350 RTI return to the calling routine 00360 * SWI jump table (must have 256 2-byte entries) 00370 SWITAB FDB SWI00-SWITAB 00380 FDB SWI01-SWITAB 00390 FDB SWI02-SWITAB 00400 FDB SWI03-SWITAB 00410 FDB SWI04-SWITAB 00420 FDB SWI05-SWITAB 00430 FDB SWI06-SWITAB 00440 FDB SWI07-SWITAB 00450 FDB SWI08-SWITAB 00460 FDB SWI09-SWITAB 00470 FDB SWI0A-SWITAB 00480 FDB SWI0B-SWITAB 00490 FDB SWI0C-SWITAB 00500 FDB SWI0D-SWITAB 00510 FDB SWI0E-SWITAB 00520 FDB SWI0F-SWITAB 00530 FDB SWI10-SWITAB 00540 FDB SWI11-SWITAB 00550 FDB SWI12-SWITAB 00560 FDB SWI13-SWITAB 00570 FDB NULL-SWITAB 00580 FDB NULL-SWITAB 00590 FDB NULL-SWITAB 00600 FDB NULL-SWITAB 00610 FDB NULL-SWITAB 00620 FDB NULL-SWITAB 00630 FDB NULL-SWITAB 00640 FDB NULL-SWITAB 00650 FDB NULL-SWITAB 00660 FDB NULL-SWITAB 00670 FDB NULL-SWITAB 00680 FDB NULL-SWITAB 00690 FDB NULL-SWITAB 00700 FDB NULL-SWITAB 00710 FDB NULL-SWITAB 00720 FDB NULL-SWITAB 00730 FDB NULL-SWITAB 00740 FDB NULL-SWITAB 00750 FDB NULL-SWITAB 00760 FDB NULL-SWITAB 00770 FDB NULL-SWITAB 00780 FDB NULL-SWITAB 00790 FDB NULL-SWITAB 00800 FDB NULL-SWITAB 00810 FDB NULL-SWITAB 00820 FDB NULL-SWITAB 00830 FDB NULL-SWITAB 00840 FDB NULL-SWITAB 00850 FDB NULL-SWITAB 00860 FDB NULL-SWITAB 00870 FDB NULL-SWITAB 00880 FDB NULL-SWITAB 00890 FDB NULL-SWITAB 00900 FDB NULL-SWITAB 00910 FDB NULL-SWITAB 00920 FDB NULL-SWITAB 00930 FDB NULL-SWITAB 00940 FDB NULL-SWITAB 00950 FDB NULL-SWITAB 00960 FDB NULL-SWITAB 00970 FDB NULL-SWITAB 00980 FDB NULL-SWITAB 00990 FDB NULL-SWITAB 01000 FDB NULL-SWITAB 01010 FDB NULL-SWITAB 01020 FDB NULL-SWITAB 01030 FDB NULL-SWITAB 01040 FDB NULL-SWITAB 01050 FDB NULL-SWITAB 01060 FDB NULL-SWITAB 01070 FDB NULL-SWITAB 01080 FDB NULL-SWITAB 01090 FDB NULL-SWITAB 01100 FDB NULL-SWITAB 01110 FDB NULL-SWITAB 01120 FDB NULL-SWITAB 01130 FDB NULL-SWITAB 01140 FDB NULL-SWITAB 01150 FDB NULL-SWITAB 01160 FDB NULL-SWITAB 01170 FDB NULL-SWITAB 01180 FDB NULL-SWITAB 01190 FDB NULL-SWITAB 01200 FDB NULL-SWITAB 01210 FDB NULL-SWITAB 01220 FDB NULL-SWITAB 01230 FDB NULL-SWITAB 01240 FDB NULL-SWITAB 01250 FDB NULL-SWITAB 01260 FDB NULL-SWITAB 01270 FDB NULL-SWITAB 01280 FDB NULL-SWITAB 01290 FDB NULL-SWITAB 01300 FDB NULL-SWITAB 01310 FDB NULL-SWITAB 01320 FDB NULL-SWITAB 01330 FDB NULL-SWITAB 01340 FDB NULL-SWITAB 01350 FDB NULL-SWITAB 01360 FDB NULL-SWITAB 01370 FDB NULL-SWITAB 01380 FDB NULL-SWITAB 01390 FDB NULL-SWITAB 01400 FDB NULL-SWITAB 01410 FDB NULL-SWITAB 01420 FDB NULL-SWITAB 01430 FDB NULL-SWITAB 01440 FDB NULL-SWITAB 01450 FDB NULL-SWITAB 01460 FDB NULL-SWITAB 01470 FDB NULL-SWITAB 01480 FDB NULL-SWITAB 01490 FDB NULL-SWITAB 01500 FDB NULL-SWITAB 01510 FDB NULL-SWITAB 01520 FDB NULL-SWITAB 01530 FDB NULL-SWITAB 01540 FDB NULL-SWITAB 01550 FDB NULL-SWITAB 01560 FDB NULL-SWITAB 01570 FDB NULL-SWITAB 01580 FDB NULL-SWITAB 01590 FDB NULL-SWITAB 01600 FDB NULL-SWITAB 01610 FDB NULL-SWITAB 01620 FDB NULL-SWITAB 01630 FDB NULL-SWITAB 01640 FDB NULL-SWITAB 01650 FDB NULL-SWITAB 01660 FDB NULL-SWITAB 01670 FDB NULL-SWITAB 01680 FDB NULL-SWITAB 01690 FDB NULL-SWITAB 01700 FDB NULL-SWITAB 01710 FDB NULL-SWITAB 01720 FDB NULL-SWITAB 01730 FDB NULL-SWITAB 01740 FDB NULL-SWITAB 01750 FDB NULL-SWITAB 01760 FDB NULL-SWITAB 01770 FDB NULL-SWITAB 01780 FDB NULL-SWITAB 01790 FDB NULL-SWITAB 01800 FDB NULL-SWITAB 01810 FDB NULL-SWITAB 01820 FDB NULL-SWITAB 01830 FDB NULL-SWITAB 01840 FDB NULL-SWITAB 01850 FDB NULL-SWITAB 01860 FDB NULL-SWITAB 01870 FDB NULL-SWITAB 01880 FDB NULL-SWITAB 01890 FDB NULL-SWITAB 01900 FDB NULL-SWITAB 01910 FDB NULL-SWITAB 01920 FDB NULL-SWITAB 01930 FDB NULL-SWITAB 01940 FDB NULL-SWITAB 01950 FDB NULL-SWITAB 01960 FDB NULL-SWITAB 01970 FDB NULL-SWITAB 01980 FDB NULL-SWITAB 01990 FDB NULL-SWITAB 02000 FDB NULL-SWITAB 02010 FDB NULL-SWITAB 02020 FDB NULL-SWITAB 02030 FDB NULL-SWITAB 02040 FDB NULL-SWITAB 02050 FDB NULL-SWITAB 02060 FDB NULL-SWITAB 02070 FDB NULL-SWITAB 02080 FDB NULL-SWITAB 02090 FDB NULL-SWITAB 02100 FDB NULL-SWITAB 02110 FDB NULL-SWITAB 02120 FDB NULL-SWITAB 02130 FDB NULL-SWITAB 02140 FDB NULL-SWITAB 02150 FDB NULL-SWITAB 02160 FDB NULL-SWITAB 02170 FDB NULL-SWITAB 02180 FDB NULL-SWITAB 02190 FDB NULL-SWITAB 02200 FDB NULL-SWITAB 02210 FDB NULL-SWITAB 02220 FDB NULL-SWITAB 02230 FDB NULL-SWITAB 02240 FDB NULL-SWITAB 02250 FDB NULL-SWITAB 02260 FDB NULL-SWITAB 02270 FDB NULL-SWITAB 02280 FDB NULL-SWITAB 02290 FDB NULL-SWITAB 02300 FDB NULL-SWITAB 02310 FDB NULL-SWITAB 02320 FDB NULL-SWITAB 02330 FDB NULL-SWITAB 02340 FDB NULL-SWITAB 02350 FDB NULL-SWITAB 02360 FDB NULL-SWITAB 02370 FDB NULL-SWITAB 02380 FDB NULL-SWITAB 02390 FDB NULL-SWITAB 02400 FDB NULL-SWITAB 02410 FDB NULL-SWITAB 02420 FDB NULL-SWITAB 02430 FDB NULL-SWITAB 02440 FDB NULL-SWITAB 02450 FDB NULL-SWITAB 02460 FDB NULL-SWITAB 02470 FDB NULL-SWITAB 02480 FDB NULL-SWITAB 02490 FDB NULL-SWITAB 02500 FDB NULL-SWITAB 02510 FDB NULL-SWITAB 02520 FDB NULL-SWITAB 02530 FDB NULL-SWITAB 02540 FDB NULL-SWITAB 02550 FDB NULL-SWITAB 02560 FDB NULL-SWITAB 02570 FDB NULL-SWITAB 02580 FDB NULL-SWITAB 02590 FDB NULL-SWITAB 02600 FDB NULL-SWITAB 02610 FDB NULL-SWITAB 02620 FDB NULL-SWITAB 02630 FDB NULL-SWITAB 02640 FDB NULL-SWITAB 02650 FDB NULL-SWITAB 02660 FDB NULL-SWITAB 02670 FDB NULL-SWITAB 02680 FDB NULL-SWITAB 02690 FDB NULL-SWITAB 02700 FDB NULL-SWITAB 02710 FDB NULL-SWITAB 02720 FDB NULL-SWITAB 02730 FDB NULL-SWITAB 02740 FDB NULL-SWITAB 02750 FDB NULL-SWITAB 02760 FDB NULL-SWITAB 02770 FDB NULL-SWITAB 02780 FDB NULL-SWITAB 02790 FDB NULL-SWITAB 02800 FDB NULL-SWITAB 02810 FDB NULL-SWITAB 02820 FDB NULL-SWITAB 02830 FDB NULL-SWITAB 02840 FDB NULL-SWITAB 02850 FDB NULL-SWITAB 02860 FDB NULL-SWITAB 02870 FDB NULL-SWITAB 02880 FDB NULL-SWITAB 02890 FDB NULL-SWITAB 02900 FDB NULL-SWITAB 02910 FDB NULL-SWITAB 02920 FDB NULL-SWITAB 02930 * end of SWI jump table 02940 * NULL command: 02950 NULL RTS 01960 FDB NULL-SWITAB 01970 FDB NULL-SWITAB 01980 FDB NULL-SWITAB 01990 FDB NULL-SWITAB 02000 FDB NULL-SWITAB 02010 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ00100 * Stub to assemble Assembly Language 00110 * programming stuff for part 9 00120 INCLUDE MACROS.ASM get macros 00130 ORG $7000 you can change this address 00140 START LBSR SETUP install interrupt handler 00150 LBRA BEGIN start your code 00160 * get the library code 00170 INCLUDE PART9A.ASM 00180 INCLUDE PART9B.ASM 00190 * your code here 00200 BEGIN 00210 00220 RTS 00230 END START 00240 * we start executing at "START" LSRA * 00160 RORB * 00170 LSRA * 00180 RORB * 00190 * block is now џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ00010 ************************************************* 00020 * Convert address in A,X to block/offset in B,Y 00030 * 00040 SWI00 PSHS A,X preserve parameter in A,X 00050 TFR X,D * figure out offset 00060 ANDA #$1F * 00070 TFR D,Y store offset in Y for return 00080 LDD ,S get first two bytes of address 00090 LSRA * figure out the block number 00100 RORB * 00110 LSRA * 00120 RORB * 00130 LSRA * 00140 RORB * 00150 LSRA * 00160 RORB * 00170 LSRA * 00180 RORB * 00190 * block is now in B where we return it 00200 PULS A,X,PC restore registers and return 00210 ************************************************* 00220 * Convert block/offset in B,Y to address in A,X 00230 * 00240 SWI01 PSHS B,Y preserve parameter in B,Y 00250 CLRA prepare to shift block to the correct position 00260 LSLB * shift block number to correct position 00270 ROLA * 00280 LSLB * 00290 ROLA * 00300 LSLB * 00310 ROLA * 00320 LSLB * 00330 ROLA * 00340 LSLB * 00350 ROLA * 00360 ADDB 1,S merge the offset with the block 00370 PSHS A temp store A (first byte of address) 00380 TFR B,A * get the lower bytes of address 00390 LDB 3,S * into the correct order 00400 TFR D,X store the low order bytes into X 00410 PULS A,B,X,PC restore registers and return 00420 ************************************************* 00430 * Clear memory, constant boundaries 00440 * 00450 SWI02 PSHS A,B,X,Y,U preserve registers 00460 LDU 20,S * get the parameters 00470 LDA ,U+ * 00480 LDX ,U++ * 00490 LDB ,U+ * 00500 LDY ,U++ * 00510 STU 20,S * 00520 LBSR SWI12 convert pair of addrs to block/offsets 00530 LBSR SWI05 clear the block of memeory 00540 PULS A,B,X,Y,U,PC restore registers and return 00550 ************************************************* 00560 * Clear memory, A,X to B,Y 00570 * 00580 SWI03 PSHS A,B,X,Y preserve registers 00590 LBSR SWI12 convert pair of addrs to block/offsets 00600 LBSR SWI05 clear block of memory 00610 PULS A,B,X,Y,PC restore registers and return 00620 ************************************************* 00630 * Clear memory, constant block/offsets 00640 * 00650 SWI04 PSHS A,B,X,Y,U prserver registers 00660 LDU 20,S * get the parameters 00670 LDA ,U+ * 00680 LDX ,U++ * 00690 LDB ,U+ * 00700 LDY ,U++ * 00710 STU 20,S * 00720 LBSR SWI05 clear block of memory 00730 PULS A,B,X,Y,U,PC restore registers and return 00740 ************************************************* 00750 * Clear memory, constant block/offset in A,X to B,Y 00760 * 00770 SWI05 PSHS A,B,X,Y save registers 00780 STB SWI05A,PCR * save top location 00790 STY SWI05B,PCR * 00800 ORCC #$50 disable interrupts 00810 LDB $FFA0 save MMU value 00820 SWI05Z STA $FFA0 set MMU to current block 00830 SWI05Y CLR ,X+ clear a byte 00840 CMPX #$2000 are we at the end of the block? 00850 BGE SWI05X brif so 00860 CMPA SWI05A,PCR are we in the last block? 00870 BNE SWI05Y continue if not 00880 CMPX SWI05B,PCR are we done? 00890 BLS SWI05Y continue if not 00900 STB $FFA0 restore MMU 00910 ANDCC #$AF re-enable interrupts 00920 PULS A,B,X,Y,PC restore registers and return 00930 SWI05A FCB 0 temp storage 00940 SWI05B FDB 0 temp storage 00950 SWI05X LDX #0 point X to start of block 00960 INCA go on to next block in memory 00970 BRA SWI05Z coninue clearing memory 00980 ************************************************* 00990 * Set memory, constant boundaries, constant value (addrs) 01000 * 01010 SWI06 PSHS A,B,X,Y,U save registers 01020 LDU 20,S * get boundaries from stack 01030 LDA ,U+ * 01040 LDX ,U++ * 01050 LDB ,U * 01060 LDY ,U++ * 01070 LBSR SWI12 convert the boundaries to block/offset 01080 PSHS B,Y store top address 01090 PSHS A,X store bottom address 01100 LDA ,U+ get the value to store 01110 STU 26,S update program counter on stack 01120 PSHS A put value to store on stack 01130 LBSR SETMEM set the memory block 01140 PULS A,B,X,Y,U,PC restore registers and return 01150 ************************************************* 01160 * Set memory, constant boundaries, value in B (addrs) 01170 * 01180 SWI07 PSHS A,B,X,Y,U store registers 01190 LDU 20,S * get boundaries from program 01200 LDA ,U+ * 01210 LDX ,U++ * 01220 LDB ,U+ * 01230 LDY ,U++ * 01240 STU 20,S * 01250 LBSR SWI12 convert the boundaries to block/offset 01260 PSHS B,Y store top address 01270 PSHS A,X store bottom address 01280 LDA 7,S * put the value onto the stack 01290 PSHS A * 01300 LBSR SETMEM set the memory block 01310 PULS A,B,X,Y,U,PC restore registers and return 01320 ************************************************* 01330 * Set memory, UH,X to UL,Y, constant value (addrs) 01340 * 01350 SWI08 PSHS A,B,X,Y,U store registers 01360 TFR U,D get the upper bytes of the addresses 01370 LBSR SWI12 convert addresses to block/offsets 01380 PSHS B,Y store the upper bound 01390 PSHS A,X store the lower bound 01400 LDU 26,S * get the set value 01410 LDA ,U+ * 01420 STU 26,S * 01430 PSHS A store it on the stack 01440 LBSR SETMEM set the memory block 01450 PULS A,B,X,Y,U,PC restore registers and return 01460 ************************************************* 01470 * Set memory, UH,X to UL,Y, value in B (addrs) 01480 * 01490 SWI09 PSHS A,B,X,Y,U store registers 01500 TFR U,D get the high byte of the addresses 01510 LBSR SWI12 convert the addresses to block/offsets 01520 PSHS B,Y store the upper bound 01530 PSHS A,X store lower bound 01540 LDB 7,S get value 01550 PSHS B store it on stack 01560 LBSR SETMEM set the memory block 01570 PULS A,B,X,Y,U,PC restore registers and return 01580 ************************************************* 01590 * Read memory to A, constant address 01600 * 01610 SWI0A PSHS B,X,Y,U temp store regs 01620 LDU 19,S = get args 01630 LDA ,U+ = 01640 LDX ,U++ = 01650 STU 19,S = 01660 LBSR SWI00 convert address to block/offset 01670 ORCC #$50 * disable interrupts 01680 LDA $FFA0 * temp store MMU 01690 STB $FFA0 * set MMU to correct block 01700 LDB ,Y * get value 01710 STA $FFA0 * restore MMU 01720 ANDCC #$AF * restore interrupts 01730 TFR B,A * get value to A 01740 PULS B,X,Y,U,PC restore regs and return 01750 ************************************************* 01760 * Read memory to A, address in B,Y 01770 * 01780 SWI0B PSHS B,X,Y temp save regs 01790 TFR B,A * get addr into useful place 01800 TFR Y,X * 01810 LBSR SWI00 convert to block/offset 01820 ORCC #$50 disable interrupts 01830 LDA $FFA0 temp store MMU 01840 STB $FFA0 set MMU to specified block 01850 LDB ,Y get value at the address 01860 STA $FFA0 restore MMU 01870 ANDCC #$AF restore interrupts 01880 TFR B,A get value into A 01890 PULS B,X,Y,PC restore regs and return 01900 ************************************************* 01910 * Read memory to A, constant block/offset 01920 * 01930 SWI0C PSHS B,Y,U temp store regs 01940 LDU 17,S * get parameters 01950 LDA ,U+ * 01960 LDY ,U++ * 01970 STU 17,S * 01980 ORCC #$50 disable interrupts 01990 LDB $FFA0 temp store MMU 02000 STA $FFA0 set MMU to current block 02010 LDA ,Y get value in offset 02020 STB $FFA0 restore MMU 02030 ANDCC #$AF restore interrupts 02040 PULS B,Y,U,PC restore regs and return 02050 ************************************************* 02060 * Read memory to A, block/offset in B,Y 02070 * 02080 SWI0D PSHS B temp store regs 02090 ORCC #$50 disable interrupts 02100 LDA $FFA0 temp store MMU 02110 STB $FFA0 set MMU to correct block 02120 LDB ,Y get value as location 02130 STA $FFA0 restore MMU 02140 TFR B,A put result into correct location 02150 ANDCC #$AF restore interrupts 02160 PULS B,PC restore regs and return 02170 ************************************************* 02180 * Write A to memory, constant address 02190 * 02200 SWI0E PSHS A,B,X,Y,U temp store regs 02210 TFR D,U temp store value to write 02220 LDY 20,S * get parameters 02230 LDA ,Y+ * 02240 LDX ,Y++ * 02250 STY 20,S * 02260 LBSR SWI00 convert addr to block/offset 02270 ORCC #$50 * do the write - disable ints 02280 LDA $FFA0 * temp store MMU 02290 STB $FFA0 * get our block into MMU 02300 EXG U,X * get value/temp store MMU block 02310 STA ,Y * write value 02320 TFR U,D * get back MMU 02330 STA $FFA0 * put MMU value back 02340 ANDCC #$AF * restore ints 02350 PULS A,B,X,Y,U,PC restore regs 02360 ************************************************* 02370 * Write A to memory, address in B,Y 02380 * 02390 SWI0F PSHS A,B,X,Y,U temp store regs 02400 TFR D,U temp store value 02410 TFR B,A * get params 02420 TFR Y,X * 02430 LBSR SWI00 convert addr to block/offset 02440 ORCC #$50 disable ints 02450 LDA $FFA0 temp store MMU 02460 STB $FFA0 get our block to MMU 02470 EXG D,U temp store MMU block/get value 02480 STA ,Y write value 02490 TFR U,D get back MMU value 02500 STA $FFA0x stick MMU value back 02510 ANDCC #$AF restore ints 02520 PULS A,B,X,Y,U,PC restore regs 02530 ************************************************* 02540 * Write A to memory, constant block/offset 02550 * 02560 SWI10 PSHS A,B,X,U temp store regs 02570 LDU 18,S * get params 02580 LDB ,U+ * 02590 LDX ,U++ * 02600 STU 18,S * 02610 TFR D,U temp store value 02620 LDA $FFA0 temp store MMU 02630 ORCC #$50 disable ints 02640 STB $FFA0 get our block to MMU 02650 EXG D,U temp store MMU block/get value 02660 STA ,X store value 02670 TFR U,D get back MMU value 02680 STA $FFA0 stick it back in MMU 02690 ANDCC #$AF restore ints 02700 PULS A,B,X,U,PC restore regs 02710 ************************************************* 02720 * Write A to memory, block/offset in B,Y 02730 * 02740 SWI11 PSHS A,B,U temp store regs 02750 TFR D,U temp store value 02760 LDA $FFA0 temp stor MMU 02770 ORCC #$50 kill interrupts 02780 STB $FFA0 get our block into MMU 02790 EXG D,U temp store MMU block/get value 02800 STA ,Y write value 02810 TFR U,D get back MMU value 02820 STA $FFA0 stick it back into value 02830 ANDCC #$AF restore ints 02840 PULS A,B,U,PC restore regs 02850 ************************************************* 02860 * Convert a pair of addresses to block/offset 02870 * 02880 SWI12 PSHS A,B,X,Y make some temp storage on the stack 02890 LBSR SWI00 convert A,X 02900 STB ,S * store it back in the originals 02910 STY 2,S * 02920 LDA 1,S = convert B,Y 02930 LDX 4,S = 02940 LBSR SWI00 = 02950 STB 1,S = 02960 STY 4,S = 02970 PULS A,B,X,Y,PC restore registers and return 02980 ************************************************* 02990 * Convert a pair of block/offsets to addresses 03000 * 03010 SWI13 PSHS A,B,X,Y make some temp storage on the stack 03020 LBSR SWI01 convert B,Y 03030 STA 1,S * store it back in the originals 03040 STX 4,S * 03050 LDB ,S = convert A,X 03060 LDY 2,S = 03070 LBSR SWI01 = 03080 STA ,S = 03090 STX 2,S = 03100 PULS A,B,X,Y,PC restore registers and return 03110 ************************************************* 03120 * Set a section of memory. 03130 * Enter 0,S clear value 03140 * 1,S start address 03150 * 4,S end address 03160 * Exit 1,S to 4,S will be set to 0,S 03170 * stack will be reset 03180 ************************************************* 03190 SETMEM PSHS A,B,X,U save registers 03200 LDB 12,S * get end address 03210 LDU 13,S * 03220 STU SETMEZ,PCR = save ending address for comparison 03230 STB SETMEY,PCR = 03240 LDA 9,S * get starting address 03250 LDX 10,S * 03260 ORCC #$50 disable interrupts 03270 LDB $FFA0 save MMU 03280 STB SETMEX,PCR = 03290 LDB 8,S get set value 03300 SETME0 STA $FFA0 set MMU to currentblock 03310 SETME1 STB ,X+ set a byte 03320 CMPA SETMEY,PCR are we in final block? 03330 BEQ SETME2 brif so 03340 CMPX #$2000 are we at the end of the block? 03350 BLO SETME1 coninue if not 03360 INCA go on to next block 03370 LDX #0 set pointer back to start of it 03380 BRA SETME0 continue setting memory 03390 SETMEX FCB 0 temp storage 03400 SETMEY FCB 0 temp storage 03410 SETMEZ FDB 0 temp storage 03420 SETME2 CMPX SETMEZ,PCR are we finished the block? 03430 BLS SETME1 continue if we are not done 03440 ANDCC #$AF re-enable interrupts 03450 LDB SETMEX,PCR * restore the MMU 03460 STB $FFA0 * 03470 LDU 6,S = set up stack to get rid of parameters 03480 STU 13,S = 03490 PULS A,B,X,U restore registers 03500 LEAS 7,S clean up stack 03510 RTS return 03520 ************************************************* set up stack to get rid of parameters 03480 STU 13,S = 03490 PULS A,B,X,U restore registers 03500 LEAS 7,S clean up stack 03510 RTS return 03520 *************************00001 ************************************************* 00002 * Macro Library for the SWI routines 00003 * Use the "INCLUDE" directive in Disk EDTASM to 00004 * use this library 00005 * 00006 * This library is only useful if the SWI routines 00007 * are installed prior to actually executing the 00008 * code generated from using these marcros 00009 ************************************************* 00010 * Constant addresses are specified as marco arguments 00011 * as follows: 00012 * The upper 3 bits followed by a comma followed by 00013 * the lower 16 bits, as follows: 00014 * $7DC13 would be $07,$DC13 00015 * and this is specified by ah,al 00016 00017 * Convert linear address in A,X to block/offset 00018 * in B,Y 00019 * CLABO 00020 CLABO MACRO 00021 SWI 00022 FCB $00 00023 ENDM 00024 00025 * Convert block/offset in B,Y to linar address 00026 * in A,X 00027 * CBOLA 00028 CBOLA MACRO 00029 SWI 00030 FCB $01 00031 ENDM 00032 00033 * clear memory - constant boundaries 00034 * CLMCLA LOWah,LOWal,HIGHah,HIGHal 00035 CLMCLA MACRO 00036 SWI 00037 FCB $02 00038 FCB \0 00039 FDB \1 00040 FCB \2 00041 FDB \3 00042 ENDM 00043 00044 * clear memory - register boundaries, linear addresses 00045 * low in A,X, high in B,Y 00046 * CLRCLA 00047 CLRCLA MACRO 00048 SWI 00049 FCB $03 00050 ENDM 00051 00052 * clear memory - constant block/offset boundaries 00053 * CLMCBO LOWblk,LOWoff,HIGHblk,HIGHoff 00054 CLMCBO MACRO 00055 SWI 00056 FCB $04 00057 FCB \0 00058 FDB \1 00059 FCB \2 00060 FDB \3 00061 ENDM 00062 00063 * clear memory - register block/offset boundaries 00064 * lowin A,X, high in B,Y 00065 * CLMRBO 00066 CLMRBO MACRO 00067 SWI 00068 FCB $05 00069 ENDM 00070 00071 * set memory - constant linear boundaries, constant value 00072 * SMCLAC LOWah,LOWal,HIGHah,HIGHal,Value 00073 SMCLAC MACRO 00074 SWI 00075 FCB $06 00076 FCB \0 00077 FDB \1 00078 FCB \2 00079 FDB \3 00080 FCB \4 00081 ENDM 00082 00083 * set memory - constant linear boundaries, value in B 00084 * SMCLAR LOWah,LOWal,HIGHah,HIGHal 00085 SMCLAR MACRO 00086 SWI 00087 FCB $07 00088 FCB \0 00089 FDB \1 00090 FCB \2 00091 FDB \3 00092 ENDM 00093 00094 * set memory - linear boundaries (from UH,X to UL,Y), constant value 00095 * SMRLAC Value 00096 SMRLAC MACRO 00097 SWI 00098 FCB $08 00099 FCB \0 00100 ENDM 00101 00102 * set memory - linear boundaries (from UH,X to UL,Y), value in B 00103 * SMRLAR 00104 SMRLAR MACRO 00105 SWI 00106 FCB $09 00107 ENDM 00108 00109 * read memory to A, constant linear address 00110 * LDACLA ah,al 00111 LDACLA MACRO 00112 SWI 00113 FCB $0A 00114 FCB \0 00115 FDB \1 00116 ENDM 00117 00118 * read memory to A, register linear address (B,Y) 00119 * LDARLA 00120 LDARLA MACRO 00121 SWI 00122 FCB $0B 00123 ENDM 00124 00125 * read memory to A, constant block/offset 00126 * LDACBO blk,off 00127 LDACBO MACRO 00128 SWI 00129 FCB $0C 00130 FCB \0 00131 FDB \1 00132 ENDM 00133 00134 * read memory to A, register block/offset (B,Y) 00135 * LDARBO 00136 LDARBO MACRO 00137 SWI 00138 FCB $0D 00139 ENDM 00140 00141 * write A to memory, constant linear address 00142 * STACLA ah,al 00143 STACLA MACRO 00144 SWI 00145 FCB $0E 00146 FCB \0 00147 FDB \1 00148 ENDM 00149 00150 * write A to memory, register linear address (B,Y) 00151 * STARLA 00152 STARLA MACRO 00153 SWI 00154 FCB $0F 00155 ENDM 00156 00157 * write A to memory, constant block/offset 00158 * STACBO blk.off 00159 STACBO MACRO 00160 SWI 00161 FCB $10 00162 FCB \0 00163 FDB \1 00164 ENDM 00165 00166 * write A to memory, register block/offset (B,Y) 00167 * STARBO 00168 STARBO MACRO 00169 SWI 00170 FCB $11 00171 ENDM 00172 00173 * convert a pair of linear addresses to block/offsets 00174 * pair is (A,X & B,Y), leave in original locations 00175 * CPLABO 00176 CPLABO MACRO 00177 SWI 00178 FCB $12 00179 ENDM 00180 00181 * convert a pair of block/offsets to linear addresses 00182 * pair is(A,X & B,Y), leave in original locations 00183 * CPBOLA 00184 CPBOLA MACRO 00185 SWI 00186 FCB $13 00187 ENDM 00188 00189 * set memory, constant boundaries (block/offset), constant value 00190 * SMCBOC LOWah,LOWal,HIGHah,HIGHal,Value 00191 SMCBOC MACRO 00192 SWI 00193 FCB $14 00194 FCB \0 00195 FDB \1 00196 FCB \2 00197 FDB \3 00198 FCB \4 00199 ENDM 00200 00201 * set memory, constant boundaries (block/offset), value in B 00202 * SMCBOR LOWah,LOWar,HIGHah,HIGHal 00203 SMCBOR MACRO 00204 SWI 00205 FCB $15 00206 FCB \0 00207 FDB \1 00208 FCB \2 00209 FDB \3 00210 ENDM 00211 00212 * set memory, register boundaries (UH,X, UL,Y), block/offset, 00213 * constant value 00214 * SMRBOC Value 00215 SMRBOC MACRO 00216 SWI 00217 FCB $16 00218 FCB \0 00219 ENDM 00220 00221 * set memory, register boundaries (UH,X, UL,Y), block/offset, 00222 * value in B 00223 * SMRBOR 00224 SMRBOR MACRO 00225 SWI 00226 FCB $17 00227 ENDM 00228 00229 * END OF MACRO DEFINITIONS \0 00219 ENDM 00220 00221 * set memory, register boundaries (UH,X, UL,Y), block/offset, 00222 * value in B 00223 * SMRBOR 00224 SMRBOR MACRO 00225 SWI 00226 FCB $17 00227 ENDM 00228 00229 * END OF MACRO DEFINITIONSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџб& •1000&^ т80:‡"creen or

rinter?":Ђ44539:…џ†(135)ДВ80 А џ†(135)ДВ112 Ї DVГ0:„DVГЌ2&…DVГ0ЇTMГ0:BMГ0:PLГ20:„…DVГЌ2ЇTMГ6:BMГ6:PLГ54&Ї’150,18:ƒ2400 BAUD&С:ƒPOKE150,88'600 BAUD&м(:ƒPOKE150,41'1200 BAUD&ќ2Л‰"FILENAME>";F$:™"I",#1,F$'";F$:™"I",#1,F$'џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 8&W:ƒLOTOLUK2: WRITTEN BY KEIRAN KENNY FOR COCO FRIENDS DISK MAGAZINE - 1998&] ž&fCHГ6&pHNГ45&y(SUГ1&Ц2‡@32,"LOTTO: PICK"CH"NUMBERS OUT OF" HN;:‡"DRAW:"CH"+"SU"SUPPLEMENT(S)"&б<ŒA(HN)'F…џ†(33021)Г50ЇHSГ65497:SLГ65496:„HSГ65495:SLГ65494'P’HS,0'Zˆ№Ѕ900'*dˆяЅ910'>n‡@131,"CHOICE:"'dx’HS,0:‡:‡Є7)"1 SELECT LOTTO NO'S;'„‚‡:‡Є7)"2 CHECK LOTTO CARD;"'ЅŒ‡:‡Є7)"3 REPEAT CARD CHECK."'Ж–‡:‡Є7)"";:‰C'Ч …CД1БCВ3Ї110'мЊˆC Ѕ180,370,470'тДž(О‡@195,"HOW MANY TRIES";:‰TR( ШLNГ730("в€IГ1ЅHN:A(I)ГI:‹(.мTPГTPЋ1(mцž:‡@74,"TRY #";TP:‡@134,"LOTSA LOTTO LUCK!":‡:‡Є6):€XГ1ЅCH(~№’280,џ†(275)(‹њRГџ„(45)(›…A(R)Г0Ї250(н…XДCH ЇA$Гџ(џˆ(R),џ‡(џˆ(R))Ќ1)Ћ",":„A$Гџ(џˆ(R),џ‡(џˆ(R))Ќ1)(ц‡A$;(ѓ"E$ГE$ЋA$(ў,A(R)Г0)6‹)@І1000)J…TPГTR Ї360):T‡@264,"PRESS ANY KEY.")\^Ђ44539:E$Г"":LNГLNЋ10:ž:Ѕ210)Їh‡@261,TR"TRIES COMPLETE.":‡:‡"SAVE THIS LISTING AS A NEW FILE":’SL,0:Š)­rž)з|‡@96,"INPUT DRAW:"CH"NOS +"SU"SUPP(S))ю†PPГ204:€TГ1Ѕ CHЋSU*…TВCH Ї‡@PPЌ2,"SUPP:";:„‡@PP,T;џ‹(8)":";*Dš‰D(T):A$Гџ(џˆ(D(T)),џ‡(џˆ(D(T)))Ќ1)*iЄ…D(T)Д0БD(T)ВHN Ї‡@PPЌ2,"":Ѕ400*Ў…TДCHЋSU ЇA$ГA$Ћ","*ŽИE$ГE$ЋA$*ТPPГPPЋ32:‹*ЏЬLNГ710:І1000*вжž:‡@194,"HOW MANY TRIES";:‰ TR*щр€TГ1ЅCHЋSU:D(T):‹*љъPГCHЋSU:QГP*џєž+!ў€IГ1ЅTR:‡@QЌ7,"TR"Ћџˆ(I)Ћ": "+=€XГ1ЅCH:N(X):‡@P,N(X);+L€TГ1ЅCHЋSU+‡…TГCHЋ1 АD(T)ГN(X)ЇS$Г"+SUPPLEMENT(*)":‡@PЋ33,"*":SPГ1+Т&…TГCHЋ2 АD(T)ГN(X)ЇS$Г"+SUPPLEMENT(*)":‡@PЋ33,"*":SPГ1+ы0…TДГCH АD(T)ГN(X)ЇRTГRTЋ1:‡@PЋ33,"^"+ё:‹+§DPГPЋ3:‹, N‡@QЋ64,"";,VX…SP АRTГ0ЇR$Г" SUPPLEMENT(*) ONLY":Ѕ620:„…RTГ0ЇR$Г" NONE GOOD":Ѕ620,rbR$Гџˆ(RT)Ћ" GOOD(^)"ЋS$,zl‡R$,ЖvQГQЋ96:…IЎ4Гџ(IЎ4)Ї‡:‡Є6)"PRESS ANY KEY.":QГ7:Ђ44539:ž,а€SPГ0:PГQ:RTГ0:S$Г"":‹,іЇ@483,"CHECK END. PRESS ANY KEY";- ”Ђ44539:ž:K$Гџ’-Ÿž‡@64,"CONGRATULATIONS OR BETTER LUCK NEXT TIME (AS THE CASE MAY BE). TO CHECK YOUR RESULT AGAIN JUST PRESS . TO PRESS ANY OTHER KEY."-ДЈK$Гџ’:…K$Г""Ї680-еВ…K$Г"C"Їž::Ѕ480:„ž:’SL,0:Š-єМ:ƒ***LOTTO DRAW NUMBERS***.Ц† 12,34,28,17,6,9,21 ..а:ƒ***YOUR NUMBERS***.Kк† 39,30,36,17,5,7 .hф† 31,13,45,15,39,22 .…ю† 19,11,13,32,23,20 .Ђј† 37,27,38,32,30,1 .Р† 45,31,34,37,33,13 .н † 26,31,45,11,5,37 .ћ† 23,15,27,31,25,3 / † 26,3,23,28,8,10 /6*† 9,5,7,37,26,1 /S4† 36,26,10,3,29,33 /p>† 10,16,35,6,21,20 /ŽH† 21,32,44,20,37,29 /œ„’SL,0:ž:Š/РŽ’SL,0:‡"ERROR #"џЌ"IN LINE"џ­:Š0"о:ƒA Basic Self Programmer andInterpreter adapted from 3DPLOT by Jeff Harper, RAINBOW, Sep. 860;шMMГџ†(25)­256Ћџ†(26)0ZђMSГџ(LNЎ256):LSГLNЌ256­MS0cќMГMM0Ÿ…џ†(MЋ3)ДВLS Б џ†(MЋ2)ДВMS Ї MГџ†(M)­256Ћџ†(MЋ1):Ѕ10300ЊMLГMЋ40ЙE$Г"D "ЋE$0Т$MГML0в.€NГ1Ѕџ‡(E$)0ч8QГџŠ(џ(E$,N,1))0їB…QГ68ЇQГ1341L’M,Q1 VMГMЋ11`‹11j…џ†(M)ДВ0Ї’M,32:MГMЋ1:Ѕ113017t)0ZђMSГџ(LNЎ256):LSГLNЌ256­MS0cќMГMM0Ÿ…џ†(MЋ3)ДВLS Б џ†(MЋ2)ДВMS Ї MГџ†(M)­256Ћџ†(MЋ1):Ѕ10300ЊMLГMЋ40ЙE$Г"D "ЋE$0Т$MГML0в.€NГ1Ѕџ‡(E$)0ч8QГџŠ(џ(E$,N,1))0їB…QГ68ЇQГ1341L’M,џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџш& т 32:ї:‡"TEXT FILE READER"&+• 2000&m‡:‡"PRESS 1 FOR SINGLE SPACING":‡"PRESS 2 FOR DOUBLE SPACING"&(… I$Г"4" Ї C$Г"4" :„ C$Г"8"&Д2I$Гџ’:… I$Г"1" Б I$Г"2" Ї 60 :„ 50'<‡:‡"WHEN YOU ARE READING, PRESS SPACE TO GO TO THE NEXT PAGE. PRESS ANY KEY TO START."'#FLSГџ‰(I$)'/PЂ 44539'8Zт 80'Rdј 0,0:у 0,1:у 8,63:ž1'wn‡"The Case of the Lost Treasure"'œx‡:‡"By Stuart T. Wyss-Gallifent"'Ў‚‡:‡"(C) 1998"'лŒ‡:‡:‡:‡"Press any key to begin.":Ђ 44539'с–ž'№›ˆ я Ѕ 230(  ™"I",#1,"TREASURE.TXT"(Њ… џŒ(1) Ї 230(*ДЛ‰ #1,A$(6О‡ Є3)A$(MШ… LSГ2 Ї LKГLKЋ1:‡(ЁвLKГLKЋ1:… LKГ22 Ї ‡:ё 25,23:‡"****** PRESS ANY KEY ******";:Ђ 44539:LKГ0:ё 0,23(ЌмЅ 170(чцš #1:‡:‡"THE END- PRESS ANY KEY":Ђ 44539:т 32:у ї:š:ЁЅ 230(  ™"I",#1,"TџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџSherlock Holmes and the Case of the Lost Treasure by Stuart Wyss-Gallifent Our last adventure ended with Holmes receiving a call from Lestrade about an unknown head injury. I'm sorry, dear readers, but that story will have to wait. Holmes is not keen about me reporting his failures. Because of that, he asked me instead to write about an even more mysterious, albeit more successful mystery involving the rainforests of Central America. Sitting here on the aeroplane, heading for Miami International, I feel I must relate how we came to be here. About a week ago, Lestrade called upon us at 221B Baker Street... There was a sharp knock at the door, and Mrs. Hudson's voice rang out. "Mr. Holmes, Dr. Watson, Inspector Lestrade is here to see you." "That's CHIEF Inspector, Mrs. Hudson," came Lestrade's deeper voice. "Sorry, CHIEF Inspector," apologized Mrs. Hudson. She knocked on the door again. "Come in," said my companion, sitting at his desk pouring over the agony column in the Daily Mail. Lestrade came in to the room, closed the door, and walked over to Holmes, who was still completely absorbed in the newspaper. "Good of you to see me, Mister Holmes," he said, looking over my friend's shoulder. "Do you really read that rubbish?" Holmes did not answer, so I did instead. "How pleasant to see you, Inspector, and yes, Holmes reads the agony column daily." "It's CHIEF Inspector, and I can't imagine why. Whatever does he get out of it? It's just anonymous people writing little notes back and forth to each other. Things like 'I saw you on the train at Waterloo. You wore black. You smiled at me. Call me at 555- 3456' and 'Darling, please come back, signed G.' and 'Suzy, if you are reading this, we miss you. Come home soon, luv mum and dad'." "Yes, but many cases have been solved from the agony column. It's an easy way for the criminal underworld to communicate, in code of course, or for innocent people on the run. Why, in the case of the Red Circle, the agony column was the only communication between two lovers." "Hmmm, well, maybe. Look, Dr. Watson. This is very important." "Aha! A clue!" exclaimed my companion. "Watson, listen to this! 'Desperately seeking my precious companion. Don't leave me. You are worth millions. Call me, signed L.' No doubt we have a jewel smuggler on our hands! Of course, 'precious companion' means a rare and valuable gem, perhaps the crown jewels, or Donald Trump's ring. 'Don't leave me' clearly indicates the thief might be trying to make a run for it, but this smuggler, known as 'L' is begging him for the jewel. 'You are worth millions' also indicates that the smuggler knows a shop where the jewel can be cut and sold at enormous profit. You see, Watson!" "Amazing," I said, amazed. "Err...." said Lestrade "Inspector Lestrade! What a pleasure to see you again." "It's CHIEF Inspector, and I'm afraid you are wrong about the agony ad." "Wrong? Wrong? I am never wrong! Watson, have I ever been wrong?" I've long since learned not to answer questions like that. I knew the answer, of course, was "yes, about 486 times" but I refrained from saying that. "Wrong," repeated Lestrade. "Come, come, Inspector, what do you know?" goaded Holmes. "It's CHIEF Inspector, and...er....I wrote that ad. My wife left me last week." "Oh," Holmes and I said together. "487," I said to myself. "Yes, sorry to disappoint you. Anyway, I'm here on much more important business." "More important than your wife?" I asked. "Yes! There's been a murder, and I've been asked to send you two along to investigate." "Pray tell us the details," said Holmes, sitting back and closing his eyes. "It's like this. A week ago, a British entomologist disappeared while in the Panamanian rainforests. He was found dead this morning on Pipeline Road, a gravel track that runs across the isthmus near the Canal. Colonel Pollayo of the Panamanian Police called me, and asked me for my best man. I told him I wasn't getting married, but that he could have you to help with the investigation. Dr. Watson, I assume, will go with you." "Of course," I agreed. ...and here we are, flying to Miami International Airport. It's 8:07 AM, and the flight is almost over. Holmes is asleep in the seat next to me. After landing, we transferred to AA Flight 295 to Panama City. The flight was delayed by 45 minutes as the backup navigation computer was not working properly. Holmes suggested they use a CoCo instead, but noone knew what it was, or had one handy. They kept going on about Windows 98 and the Universal Serial Bus. Finally, we took off, and two hours later, landed in Panama City. Panama City is a strange mix of old and new, and very old. The First City of Panama was built back in the 1500's and subsequently sacked by the British pirate Sir Henry Morgan. (Good old Henry!). The Second City of Panama was then built, this time with a wall around it to protect it from being invaded again. Stones were used from the First City to built the wall of the Second City. The city was never again invaded....until 1989 when the United States came in and took out Noriega. I'm not sure why he finally surrendered. It was either because he knew he was beaten, or because the U.S. troops had set up big loudspeakers outside his hiding place, and were playing Ozzy Osbourne at him. I think that would drive me to surrender. Holmes was uninterested in this history. Back when I first met him, he told me he didn't care if the Earth went around the Sun or not. How would that affect a crime? He only filled his mind with information about crime. Nothing else. Our taxi pulled up outside the police station, and Colonel Pollayo came out to greet us. "Senor Holmes! Dr. Watson! Hola! Welcome!" "A pleasure," said Holmes. "Thank you," I replied. "I was talking to the Colonel," said Holmes. "I know. So was I!" I retorted. "Please, please, amigos," interjected the Colonel, "We have much work to do. Come inside and we can go over the details." Inside his air-conditioned office, the Colonel related what he knew about the murder of Dr. P. Mantis, world-famous British entomologist. "About three weeks ago, Dr. Mantis, he came here to study bugs. He got permission to set up a small camp on Pipeline Road." "Pipeline Road?" interjected Holmes. "Si, Pipeline Road. Back in World War II, we suspected a German plot to destroy the Canal, so we built an oil pipeline across Panama. This way, ships from the Pacific could pump their oil across if the Canal was rendered useless. There is a road that runs alongside the pipe. The forest there is private government property, but permits can be issued to reside there for up to one month to study." "Thank you, pray continue." "Every three days, Dr. Mantis reported in by radio. We received a signal from him on the twelfth day, saying that he had found something very interesting, but he didn't say what, and he promised more information on his next broadcast. That was the last time we heard from him. After a week of no signal, a team was sent in to locate his camp and check up on him. They found him, yesterday, dead." "How was he killed?" I asked. "There is an...autopsy being done right now. Let us go down and see." Down in the morgue, Senor Cahill was finishing up his examination of the body. Dr. Mantis's body lay on the metal table. His clothing and personal effects were off to one side in a small plastic crate. He looked to be about 28, medium dark brown hair, deeply tanned arms and legs. Cahill covered him with a white sheet, make a few notes on a clipboard, then removed his plastic gloves. "Buenos Dias!" he said. Unfortunately, he did not speak English, and the Colonel had to translate. As they spoke rapid Spanish between them, Holmes and I looked through Mantis's personal effects. We noticed a whistle, a handheld GPS, a permanent magic marker, a Granola wrapper, and a watch. As we put these back, the Colonel turned to us and said, "Senor Cahill has determined the cause of death to be a murder, the weapon being poison from a Poison Dart frog. Signs indicate a struggle, there are thorn marks on the body, and rope marks around the wrists and ankles. He was found tied to four posts, spread-eagled, with a Poison Dart frog in his throat. Death would have been almost instantaneous, possibly a few minutes of coughing and choking." "You might say he had a frog in his throat," I quipped, and the Colonel and Holmes burst out laughing. Cahill looked puzzled until the Colonel translated my little joke, and then he too chortled. "Good one, Watson," praised Holmes, "Now, to business. I would like to visit the location where the body was found." We soon found ourselves on Pipeline Road, a gravel track winding its way through the jungle. Howler Monkeys howled in the distance, wild toucans flew overhead, and parrots chided us from the canopy. Across the road, leaf-cutter ants marched with the precious cargo of green, and wild bird-of-paradise grew bright red and yellow on the banks. The air was humid, but cool. The Colonel led us off the road and we walked down a winding trail. We passed huge ferns with fronds at least six feet long, vines as thick as a man's leg (or a woman's leg), trees ten feet in diameter and 150 feet high, and flowers of every size and color. As we walked, Holmes asked a few more questions. "Colonel, do you have any suspects in this murder? Or a motive?" "Si and no. We suspect the Maria gang, but we do not know why." "The Maria gang? I've never heard of them." "They are a new gang, led by a man named Maximo. They have killed six other people using amphibians, but each time we could not make a connection to them." "Is Maria their actual name?" "No, we named them that. I once knew a girl named Maria. She was a slimy, despicable person, and the name seemed appropriate for what this gang did." "What were the other six people involved in?" I asked. "Good question, Watson" The Colonel replied, "They were treasure hunters. That is what makes this so loco, er...how you say...strange, crazy. Why would they want to kill a bug scientist?" "Perhaps he found some treasure?" "Perhaps. The only insect treasure I know about is the gold bug," whispered Holmes, "Perhaps he has found gold bugs!" "Holmes," I sighed, "That's a story by Edgar Allen Poe. There aren't any real gold bugs." "Oh," said Holmes and the Colonel together. A few minutes later, the Colonel announced, "We're here. This is where he was found, tied down." We were still deep in the forest, but there, on the ground, were four stakes, each about two feet high, forming a square. Ropes were still attached to each stake, trailing toward the middle. I could almost picture Dr. Mantis lying there, his hands and feet tied to the corners, struggling as his enemies put a deadly frog into his mouth. Here, surrounded by miles and miles of thick forest and the howls of strange creatures, no one would have heard him. "Through here is his camp," announced the Colonel, and he went a little further on the trail. Dr. Manti