IMD 1.17: 27/06/2012 8:44:02 UCSD PASCAL SYSTEM VII.0 DISK 4/6 PART NUMBER 61-0011-004 REV A TERAK UTILITIES MANUFACTURED ON 6-NOV-80  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÅÙÔÁ×@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@åÖÓñãÅÙÁÒ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@æÈÄÙñ@ÄÁãÁ@@@@@@@@@@@@@@@ðøð@ðñððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ðñððñ@ÄÄÙñ@ÄÁãÁðù@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁñð@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁññ@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁñò@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁñó@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁñô@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁñõ@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁñö@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁñ÷@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁñø@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁñù@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁòð@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁòñ@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁòò@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁòó@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁòô@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁòõ@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ÄÄÙñ@ÄÁãÁòö@@@@@@@@@@@@@ðøð@÷ôððñ@÷óðòö@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@÷ôððñ@ àöà&à–àlàÅ—km÷ øÿÇHBfÌÎ ûÖ …  À À & Ãå€ CODEp[¥ Ÿ³SERIAL.IO.TEXT[5 ³» CONCAT.TEXT@[5 »¾ CONCAT.CODE@[5 ¾Ñ IRWIN3.FOTOà/±£Ñä IRWIN2.Äåú€Ä%òÿC Ãåý€Ãe€€ Á èöU7F ?IO ERROR WHILE BOOTING? 7$ ?NOT ENOUGH CORE TO BOOT? ÀFOTOà[±£Æ  Âe— àÊ ù·— €Ö‡ß ß• vÿß• öÿ7| SYSTEM.PASCAL? wÚ7b SYSTEM.8510/A? @AàÁw¶Â ‰À®Á ‰ÀÂ`!ÁÒ ÒmŽG~Àd!Â~â†� ‰â ·^·\÷F‚è……ìøÿÍÅå C& ÀJ& äÿ† 0  ÷ENÀ Á€Â ‚~À å Â_€‚~ßU@pÿÄÄe ÂÄþÃÌ5Ìw þÕE€ àÅ‹÷Ìw àýÅŠøw Öý å׋ïC!ÞåÌÔ Å@Å D~Ì‹þ€Ì �×  wTþwøýÁD’Ô¤ ü€ÁåÀe€ÁeW ï‡7 ?YOU DON'T HAVE A €€ ”� ß‹tÿý€_�åvÿ÷ @ @ €þååPASCAL4îÈ–e¡ SYSTEM.8510/A\¸ > SYSTEM.PASCALb[“¡>CSYSTEM.CHARSET["œC_ SYSTEM.FILER@[ågŸ_‘ GREDIT.TEXTp[¥ ‘ª GREDIT.CODEp[¥ ª¸ ANIMATE.TEXTp[e¡¸½ ANIMATE.CODEp[e¡½Ð FATCAT.FOTOú[å€rœÐã GEOMETRY.FOTOú[ôœãö TERAK.FOTOú[Â�ö  IRWIN.FOTOú[€Ôœ ) PRINTOUT.TEXTp[5 )1 PRINTOUT.CODEååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååp[5 1C RT2PAS.TEXTp[e¡CI RT2PAS.CODEp[e¡Im TERMINAL.TEXT\È mw TERMINAL.CODEú[åžw…DIRECTORY.T ‰ÀÂöÔ<Àf¨,¨€’€4À~%€x$€Jà8àEXT[¥ …ŠDIRECTORY.CODE[¥ Š� CNTRL.DM.TEXTp[e¡�“ CNTRL.DM.CODEú[åž“› CNTRL.TK.TEXTp[¥ ›Ÿ CNTRL.TK.#€ÄV"àCOPYRIGHT (C) 1978, REGENTS OF UNIV OF CALIF,SDÿÿþ ŒüZô ˜˜Z ` fš–:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú "*2``@Z‚`dþÿ‡Á �%  D~ "Ð ƒ~Á ø�E D~óÁ D C~Á �%  D~ Ð ƒ~Æ& Â<‡Ææø•AA~•€ÀE€ÿÀÕÀ Àe8f"a8f"@ø"$ F% &@L$f&b8f"c8f"ž ¸ \ j .  ˆ ®   º ‰‰‰†‚‰‰ƒ‡‰ @`&‡•„ ÄE&~‡•AA~•€ÀE€ÿÀÕÀ Àe @`&‡•AA~•€ÀE€ÿÀÕÀ Àe @`ˆ‡„ ‡–åü–åù ö‡•�`‡Äšó`㇀ @€ @€ÿÿþÿüÿøÿðÿàÿÀÿ€ÿÿþüøðàÀ€f ~f{fxfufrfoflfifffcf `f"� t�Á @L‡�Á A€@@A ‚tBtÖ ‚B@PžÂ<‡� Õ``f~‡ Õ�``A‘~Ö ‡€€c Ò‡€Že�‡•€fÀ rððððððþßðHJKC  >P  ?]f$Zf&Wf(Tf*Qæ NæKæHæEæBæ?æ<æ9æ6æ3æ 0æ"-æ$*æ&'æ($æ*!¦‰ ‰ ‰—/Îef�AA�,þÅ"ÿÃÿÂ<Ê•w�ÿ· ÿÎe¦Îe¦Îe¦Îe¦ Îe ¦ Îe ¦Îe¦&•ý€À fÎ € € ‡ÎE€‡Že‡z‡N ŽE‡•€ÀE€ÿÀÕ7¢ø×-Œø Á÷åÿ7 ÿ& ¦ÄÍÖÁ Gà‰÷ 6ý€ÀEÿ7,�ÿ‹ €�€6 ?�  ÷ w pÿrÿ@$@$@$@"‡‰÷ �EB~‡�€fÀ r†‰&‡z‡¶%Ž%‡‰·· 7 Êì(Ú¦ææ\7 ¶ì(¦‚€€`€`�WtüÿB &ÀŸ¤ÿÀE€ÿ7 žþ ÷5@|þÀ‰<7 ‡þw Ìÿ{7 yþw Âÿ7 ps w ´ÿm w ªÿg×-Á �aBÁEðÿÁ B<øÎÂ<‡ ú÷ ŽwN �EC~�Áí B~‡ŽU‡�€fÀ r†‰f‡�Vpf‡z‡ ‡Î Îe€‡N ‡€�–ÿ@À•ÿ‰_÷ ’ÿ a z‚ÀE ÷ ~ÿ   ~ÀU€æÃVÿ3�Tƒ ÃE@· Jÿ÷Dÿƒ÷ Bÿ9æÃ4ÿÀœT?�4ÿƒ ÃE@÷"ÿ÷ "ÿƒ×-ÿl8�@ 6÷NæÿÿÂEðÿ ŽLÀU@àtüÿ7`.æÿÿ~BÂEðÿ ‚B Ž@Wtüÿw`& B~æÂ<‡Žå‡z‡¦»¦¦º& ‡€ü�& ÁE7 ÎýÀÿ?Šÿ· ÿ~ 7 žýÿE@¨þÿ‰ÿU@ þ· èþ÷ æþ÷ ÚþÍÿE€Òþ7 Îþ€wôý÷ Äþý�€wºþÉU€ Ó æ&· ªþ· ¦þä÷ šþ­ðÿÁ N\øÀEðtüÿ& B~€ &‡ž‡€ ÿ‚> ‚‡‰÷ ~�UB~‡ ‰æð‡ Õ�@ ‡À €aÁ �a!‚~Fƒ@àÀ à€Á ÐB~ åË *å�€7 �þ7 Žþ7 €þ÷zþvþ÷ xþ7 vþÿE€lþ7 hþ÷ 7 ÿE€7 �‡tÿvÿÿÿ÷ ôÿý�€wêÿÉU€ Ó æW r7 $þ7 "þ‚~ÆöÂ<‡•€ÀE€ÿÀÕÀ `‡•€ÀE€ÿÀÕÀ `¦‡•€ÁE€ÿÁÕ€W @p@À `‡•€ÀE€ÿÀÕÀ Àe À`&‡& Õ`‡&Ž Õ`‡÷ þ^· Êÿ·Âÿæ��€ÿE@®ÿ�÷ ´ÿ�&À¬ÿ?�žÿ  ÷ –w šÿ€ÿU@†ÿwüü÷ „ÿ>÷ €ÿ6÷ Æý��€ò& Àßhÿ÷ ^ÿ7 XÿÀå �•€ÀE€ÿÀÕÀ Àe À`&‡•€ÂE€ÿÂÕ€�‚~Â<‡ ‰€ ÿ‚7�ÀZ ¢ ‚� Ò‚ ”‚~Â<‡ ‰•€ÀE€ÿÀÕÀ Àe À`ˆ‡„ ÄE€ÿ‹Fÿý€ÿ• @ÿ~�€ w 2ÿ ?�*ÿ  ÷ "€ÿU@ÿ· ÿ÷ ÿw„üÿE€ ÿ7 ÿwvü�ÿ‹ôþý€ÿ• îþ�€‡FRX\`–¢¶ºÈäì&   Ô @àÀ `ã‡Ô ‡•G´7vz Ö Î‡Ö  ‡7ˆH€ ÿ‚7��ÿÀZ 6�W ÿ‚w�{ÿÁZ N ¤†ÜÿÿBÜÿÿ¤ ûF J ^ f j n x | Ü à ö ä è  " 6 B îD J f Œ ž ² Ò ê 2  4 ^ v ¬~˜ ˜ ˜ è  ˜ ˜  ˜ 6 j | ’ º Ì â ì ô ¤h*06NV\bz€¾¯ öÖ Â<‡6 ù•€ÂE€ÿÂÕ •€ÂE€ÿÂÕ7ˆ �€¤ƒ~ æÂ<‡& ûÎEþÿöEþÿŽ÷ Jd`·n�þÿ ¦ „¼Bœò@B¬ø Â<‡Cþÿ÷`ï¯`ï& ΟXï÷ ¾þ@ •Åe E`E``B~Å8ïAÑ Ew0ïw.ïDw$À &ß  ‰‡Z&X‡‰Ê‰‡€Àç(¡ &‡7 |övª‚Ð7 nö|ªôÐ7 `ö|ªŒÐ7 Tö”ªÜô ôÐ7 <ö”ªèô ôЦ6 Æå×'ðß(ßð�À(@`@`�Áå( ƒ‰(‡¶“�‚+¶mÖ Ž] €€‡ à†‚ P‚~P�‚~‚��eŽe€NPŽP ‡ à†\É =€¶ "ù  Š\¶m¶¶Ž\ � W Á �mÁ ÁefÉ5`\Å_Æe wÊõÉ5 ÅôÉ5@ù��àÉ ù��W à†‚ ‚~”‚~ÆeÂ<‡‚ù��e€€e€`�`!˜‚~òÖ Že€‚��ö ¤C~¤C~À €å–%Â<‡ € ö ¨óC~¨ï\É‹ýE’ Šâö5Þ\ù\ù\öfž F^ªT 2´&²ºÐØàèðø,FRð,: fÁ6� C~€€cêÄîÄeüÿãίøíö¯ôí–%‡@ ÁeüÿAâp®6®–%‡ë‰€� "1, 1,1,^ ‡ ‚ñ%W Y‡Áå#w (Q&À—vÿ  I‡×   >†7 òÿ7�(w& EFHJKABCDWX][ôúîèÔÐf@¤þ@’à· N· Z·¨ÿ÷Œ[ ð ^Îÿÿ‡A ãñ%ð^·AØ€�æ&DaÁefÔ„ Â¥_û— 0‡— 9ƒÂE — A‡— Z‚ƒ ë‘�éÄå ƒ ‘�ü‚Ÿ÷‹U±7ŒM†wŒG7 ˆÿ–% €@àÀå`�?�Rÿ ŠwLÿ€�÷öÿVÿ÷ôÿxßx|ßxtߪ@�× ý�ÀwôÿÉU€Ö Ó ·:·:� �îƒðCàà ÃøÁ Á fÁ �eÁe¦ƒ €$ $ $ $ @A ÁeÁeÁeÁeé Á>„„ƒ‚ÂeJÂ<‡ K�À÷ ÒÿÿE€Êÿ7 Æÿ÷ßäÿ�‡w z÷Âþ2@”tÀå � w ìÀEt÷öþ@”_7 Àå � O÷ àÿ0�€ÀE€À]Ôÿ†‰``•&& � †`À Á ú‡Žå ‡Î‡ŽåûøŽåøõ•€ÀE€ÿÀÕÀ Àe @a&‡&•6•‡ŽååâŽåâß•€ÀE€ÿÀÕÀ Àe @a&‡ŽåÓÐ!$'(****AND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO•€ÀE€ÿÀÕÀ Àe @aˆ‡ ‰‰·\ÅdòÂ<ÃZòÄîÿ‡·@�€@`@`$fH@€à7 �`Áe‚À à€�B~Á  B~Â<ãÁ _ ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4INÿÿ·7ú@`À ð d‰ìd�&`f&d&b& ÷Ê�Á �mÁ Áef )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROGRAM !RECORD -ùÉ þ�É‹ ‰Ã¦Æe Á¤ÿá ¢rþ·–fæwœˆÏBCâ ‚âÊ% €Àe€ìúÿ€ìøÿÀå 7d÷,ñ\ã ·ÁAâÉ‹á B‚â·J@á BREPEAT SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR ‚âÊm8~@á B‚âÊm*~@á B‚âÊm~÷ Úƒ�ÀÇ·øÿ€·ìþÀ ð  ðþð÷ Ðþ±° ÇÊÿ�€ WHILE WITH �àÞŽêÞŒê�‡7 è÷<)¦€& æ€@  z7 Ò÷<)¦7 Ê÷ª)7 Â÷Ž)7 º÷ˆ&7 ²÷ô*7 ª÷Œ&7 ¢÷ø'À 𠀉I•÷€ðªþ? zðr·¢þ&÷ ¦ÿ7þhð† Ó �àAâFìúÿÀ‚þ„ ÁeþÿAâÉ ÷-BðlþÀŸ:ðÀ ð ÷\þ.ðÂ<‡ÿ‹$ðW¢Fløÿ‰÷ð7 š÷,,·\ vwŠ÷÷ *ùÂ<‡÷ Rù‡×'ðß(ßðÞ(‡Ÿ(ßð‡æ‡€@ BÈCzEG@ÃHPtJ$L€–¾M ¼nO(k<þ€ ÕÁ  ÁmðAâÉ‹×Fìøÿ·! ïåƒæ &æþæäïffDúÿ„ …Åe …wÆï5 wÀïDÄeþÿã‡Â`ÎÍÂ<‡ÂnÇæÍC÷”ïÂ<‡ÂQùºR·ChT¥ÔV焵W!æcY©_[ʱ\¼¢^^k `#Ç­aìxXc'×ex†©fhShÂjQY¥k¦oNm�Ëo9?¡p�IrÊòüs|o�u®ÅEw7öxß„šz @|Ηð}½€ � &À À & ÀÔþ�  tÁðïÊ•ÿ ßU€äÿ ”QŠƒ~Ê•ÿ‹Šþ� \ü׌‡ÎUÎE׌Àx׌"„Àâÿ†€Š€Š  ‡ †Àe † w dÿ     ÷ X· Nÿ  wŠKÿÀ•  wŠ:ÿÀ• 7 ,ÿÿ‹*ÿý€ÿ $ÿý�?� ÿ€ÿU@ÿ· ÿ÷ ÿ_ÆÿE€úþ7 öþwÐÝfÀ ÁðþÀŠÀŠ�÷�ÏÿÌÿ÷•@ÄÿŠ7мÿâÿŸ 6_ 8÷ °ü ßàÿÎÿE€žü7 šüŸäÿ‚�€_Æ÷þÎ âÿ7 vÿÂà7 þ7 þ7 Pý÷ àý7÷"äý÷UêþÁíæþ?�äþÿ‹Þþý€� ù�‡�€÷ ÂþÿE€ºþ7 ¶þ�‡PÿRÿTÿVÿÓ Å+÷ àÿý�€wÖÿÉU€ æ· Ìÿ·ÊÿÿE@Êÿ÷ w h07 Øý¦÷ ¬w Èì†w Nö‚!÷‹.ÿ7 ´ý…ÅáÅeJw¨ýwÿÀâÿŠ÷� ÿ ÿÍ €ÀU @e� ‡@ãâÿ…wxþ¦BEf€ÀE€ÿÁPàÀ¸ÿ÷ ºÿ ÿŸ°ÿºÿÿU@²ÿ· ¤ÿ÷ ¤ÿ_ÆÿE€’ÿ7 Žÿ_Æ À]pý�÷ |ýÊ‹��D~‚ G~ Á5�E~� � ����E~�‚…Âe€— €ì‡Âå€ ‡Â倗 à†Âe€ ‡ÀâÿŠ€ €` à†Àe€  …„ÿ|ÿ’ÿŠÿ°$°$Ó ÅK÷ äþý�€wÚþÉU€ æ· Ðþ·ÎþJ÷ Êÿ_Æ&˜¦ÄÿÞÿZT¶ÿª¢„ÿ|ÿšÿ˜ÿ˜¢ *Ì’*÷ ìÿýwæÿÉU€Ó Î&f¦&f7 ÒÿÅ.•U•€ ã  ÷ 0…„‚�ÀÀþ2�ÿŸ¼þ´ÿ· ²ÿ×-®ÿŽ/· ¤ÿ×- ÿ>%÷°$–ÿ€÷ ˆþÿŸˆÿ„þ· ‚ÿ×-~ÿ>%÷°$tÿ÷ tÿ÷ nþ· dþ��€÷ ^ÿã_Æ÷•Tÿÿ‹Rþ÷ Hÿ÷•Dÿ€É�¤ÿ^&Í „…_Æÿ�’ÿŽÿÿE€ˆÿ7 „ÿ‡.ÅþÁöÿC� D”ÄEøÿ!:‚7¡Û Ä Ä7‘ÏÄaÄehDÀ A€À� à à ÷´÷ ®Á aw²7€÷ 2þïÿ�8ÿ*þ7 2ÿÿE€ þ7 þ_Æ�€÷°$ÿ÷ÿÿ7 ÿ÷ þÿE€øý7 ôýæßV&ÿU@ðýÅ –%Ÿ�‡�€÷ ÌýÿE€Äý7 Àý�‡ðÁÁe:wXÁŽÂ�P@P7n@ÀeI7ø�0�@wnM‡¦)wø€€€€Í\Í ø�7 ,×Â� ߀ÿ€¿�zÿƒƒà — ‚Í5÷U$Í ÷Îe€z\æ& Dær汿¦)&&\Î ¶� ö•€ æóæ5@¦¦æóæ5@7 X€&'„&ô'0'0' )'''' )„& )„& )„& )„&$'ì(:' )„&J — ƒ÷Eà €÷ Ö÷ ÞÄ Ä 7 7á÷ �÷ @Æ÷ ÷ 27 úÿ÷‹²!€×¯úþ+ƒ÷U ¢÷E šÃ€Â`Ä²Õ D' )D'€�Âx'f&¦¦\¶ ¶ \& ŽÝÎå€\¦¦\æræ1@\öŠæÙ[æÞ?\€�Ö …Æew &… š?UÌ? *@ÚªADÄ †Íƒ û‚å ÍÓ ø÷ æÍÍ‹þ€D€å Ä5|‡w èðÄ5B÷ N÷ ÷ ¸ èÄ5÷ ,ô÷ ñW#D€å èå 7¡îÿÑW Î�?‘Zþw  €�C ŠÃÃå˜Ã%èÿ  æ  ƒ üƒÁ @ ƒ ü …f&\À�À ‚ ‚ B Ž- ‡ ÆeÀ \z\D€÷‹ñ'�ÀUàÂâÿŠ‚ `— €ì‡Âå€ x÷•€ÎZ7ŠÈW÷€Òm7 ÌP× À�¯À]öÿ÷•…D÷•ÿÿ›÷•ÿw=7Š�íw ¸÷Zÿl÷ Fw bìI‡š wÈþå· ÷ ÷ ´D€Ä5HÄ5 ÷‹Þÿ �ÄÕ Ã:ÿÂ@Ä †S„~å ÷e€&ÿ÷-"ÿÞÿ†wnþ÷‹®ÿ.€÷5Â÷)÷ º÷ ´Ä5|w Œž‚ øw ž÷tÿR÷ <w Hì<‡Â øÀ AlèwŽ&f¦æäÿÁ6ß5tÿó÷ w ²ýíßE‡äÿÂàÀ � � Çeê@”  ×‡ÀEÿÀUò��€À „77÷ Š÷ :× ùÇ÷ .þ…×-&þìÿÕ ……ÄpýìUÄ`ÄE@ ƒ‚wHý·ƒ‚‡w .ý¦æÅþÇ÷:"øÿ÷ ¸üý‡÷¿Š÷  ¨†Êµ¬ÇmÐÿ€À  þÿH  &†ñÁ W Y‡Áå#w HýÔ^ÂEê÷.œÿ åÂU‚ áw Ò÷Šÿw ÆÂâÿŠ‚ ÂUàÒÂEw °€÷ B¦÷ÿŠ÷¿ŠFýÄÄÄU@ ‡Ã�ÂÃ% ‚ÃeóC ‡~Â�ŠÃÃ% C  ƒ`ƒ`ƒ`‚ ‚ ÃåýÃe÷�þ·�zþ‡LÿNÿ÷ ìÿý�w Z€ë‚ć ì†÷ tÿîw Ò÷ hÿ!w ˜‚ ÂUOw p÷ w €ë¨‡ ì‡÷ <ÿòw š÷ 0ÿw `ÿçʽ ÿÁW Y‡Áå#·Üþwºþ·’Øþ€wâÿÉU€ Ó æ· Ôÿ·ÐÿÿE@Ðÿ÷ Âÿe÷ Àÿ]& ÷ Àÿ€7йÿÀ• 7Š®ÿÀ•÷ šÿ· ˜ÿ7Àß�ÿ2÷ Žÿ7 ˆÿÀå ÿ‹‚ÿý€ÿ• |ÿ· tÿ ~"   €�æ‚=æ@Âf&æysæEæ[\æpCf&f&\–%€�„ÄŠ„ a�… À€@…ÀÀw ¸  …¦¦6 6 & � f Â�6ŠA ‡Â üv�Š�ÐÁ  6ŒN\z\€�‚ƒ\€�\¶¶ ‚ �N A f C�ŠÁÁå� Á%ʃÝC B Á ü … ‡ Ž\ ü‡æ w  òD& &&æÛæÉ@7 ‚„&¶)D& &&Î 6  æÛæÉA7 ^ô'*†'€&**†'*€&"*** )J* )„& )„& )„& )„& )ú)€�Ö éÉ¡«éOÅ¡O«èÉ¡«èÅ¡«¶Í¶FÍ¶è ‚Í¶é ‚ÍÁL¶ý̶¦S# ×ͶØû¾Í ¶¦, P# ×ͶÀe€…¦¦\Î ò¶Š\¶S\ö‹ Îe€& æ€@7 ò„&:*ÄÞ)¶Œ†Îe€\€�Âz*Ãf&¦¦à ú\:º×™¼c&£>X4%Àá]É@Û& & & Øú¾Í ¶¦, I# ×ͶØüØú•Øú‘¤ø••Í ¶Í­¡l,¶Ìèùá*²6ž!²F¦ *STK OFLOW*תP²F²F¾ž+žèý¢è£ šèû& & D&&€D&&�À ŠÀÁ ŠÁ@àÀ%7 rô'º*ý  öIAöÛ ý öe€Î ÆeÀÉ@ÁÛý Àe€…& & & & & DË¡ Í袚¹ö²6ž!²¤¶:𲤶9šè¢ ž"š¶8Âèú²?¶¢Âá èùè£ Í¹<¶צ Exec err # ͶèùÍ ¶Íèù á¶,Ͷ&&Îe€¶ —#€@‡ö öÉÀöÛö ¦¦ö€@6 7 âô'J+¦¦6 6 —#‰?%‡‚—-£0 ƒö@ö’ €�æ׳è£ Í Î,Â(“¡+žÁ, â«¶Ìì¢Ìëì¢,ºÃ¡b«í¢ºÃí¢ºÃ�¡êš¶¦Â:¿L]L?ÛÆª¿¤ª€@Ö \fEA#�&æ� Áe@ & f& f& f7 Öÿô'„&X,Îå€ö ff¦¦î€�Ö ……w ¢ºÍ¹ì¢+ºí¢ºÃ¡¶ ÍÁ¸-¶ÌèË¡.ê¢$éÀº¡ ¶ê¢ºÍ¶èÍ Å¡ ¶²tÍÁ@.¶¢ºÂ.Áû  ÷&@& ÿ €…¤, ‰þé$Â$¶Ìè¢Ìž&颺ˡ 颺Â.¹ 颺Â.Á6%¶¢ ºÂ.Áž&Â$¶ÌÂ&颺¡!²F¾:²Fž «è²F¾Ë¡²Fè‚¿¶²FÍÁD'¶¢%ÌéÉ¡«éêùÅ¡êù«èÉ¡«èêøÅ¡êø«¶Í¶é ‚Í¶è ‚ÍÁÅPꡞ&¶:ú¡+ž¶:¢š¶¥ÍëaÄëzÈ„¡ëa•A‚«ë«Á:)¶¦ Type ×Ͷ¢º“¡¶צ to continueÍêÂ)«¶Í “¡¤8>` € PASCALSYUSERPROGDEBUGGERPRINTERRINITIALIGETCMD ¶ÍÂ&ë Ãë¶¢,ºÃ�¡öë Ë«Áhp(ÆÞªPíצªìצªëšêš««2©2¥¾È¡5¥©2¾«3©3 È¡ ¥©2͹©3aÄ©3zÈ„¡ ¥©2©3a•A‚¿© ²Ãf‚ °C_‚À  fW‡æ & æ€@&&&&7 úf( )<)p(ì(f(ô'€&v( )„&ô'„&„&ô'V(„&\( )²(Îe€€\¦¦\æ;ªæ¸@\¶ \N @ Îåƒ  ¯¡ëï¢  ºd˯¡í««í‚«¹öÁ7 H è¤ Ìé«ë£•ÌêÜÈ¡èê¤ èꂤ ¨ ê‚«¹öè룤 ¢צªë¢ë£•šÁ0H"è¤ Ìì£dÃ�èÃ�¡òîÿÂË¡¶š¹ì««ëì¤ £Èí“„¡ìë¤ øïøÃìë¤ ùïùī낫¹öí“¡¶š¹ìë•«èÃìë¤ ¢  ºdÄèÃ�¡ëìÂ"¹ôï¢ì «éÌëÝÄ¡è낤 èë¤ ¨ ë•«¹öèé¤ ê¨ ì¢ì£‚šÁ*@#ØÙ•ÌÛìÅ¡ï«ì« Ú«Û«¹ Ûóš۫ Ú«­ö,0«ê¤ £« «« ìÈ«êËêëË„¡êìÂ"êëɡ땫ìë¤ ¢  ºdáï¢  ºdá ï¢ ²C¨¹¹#CºË„¡ ï¢ ²C¨¹ ï¢ ìë¤ ¢ ¨ï¢ïøî£ ‚šî£¡ï¢ î£šî¢ »î¢2‚«2¹ö¥¾Å¡ì¥¾*á í²?ª¥Íצ:¥Í«2©2È¡í¾Ã¡í²;ª©2á¥Í¹!©2•È¡í¥Æ5©2•ÍÆ5ª¥©2Íí¾Å¡î¦[×¥¡QìÉ« « ðÌñÊÈ¡ñêñ•¤ ùêñ¤ øÎ0ñ‚« ¹öð‚êð¤ ùê¤ ÿÎ0ò¡ì†óÈ¡ó«î«¹ì‚†«¹?« ñðÈ¡êñ¤ øêñ•¤ ù•ìÄ¡ñ«ð« ñ‚« ¹ôïáêÍ«2©2Å¡©2•«2¹¥¾«2©2È¡ð©2Å¡ì¥Æ5©2ÍÆ5ª¥©2Í¥¾Ã¡«4¹w«4¦]ץͫ1©1á«4¹\©1Å¡V«4«2¥©2¾«3©3²z¼¤ ÿêð¤ ù•ìÄ¡ð‚«ðMá«ïÅ¡6ê ù« ôì‚«¥뻥íªÇ«¥»¥»¥ d»¥ ïêÂ#ï«Á„Ï( ø/êÌ뢚뢚뢚뢚닡 ëëø �©30•‚š¹«4©2‚«2©2©1é4“�¡ô©2é1Ä¡¥©2•¾*á둚«4©4«©4ì¾Å„¡ò¥ìÆ5ì¾•ÍÆ5ªP¥¦.TEXTׯ¡êš¹]¥צ.CODEéšèÃè‘Ã�¡ëø¿ë¢šèá뢚¹èÉ¡ 럚뢚¹ë¢è肚ÁXèÌꢚꢚꢚêþ¡ôê£ ê£ Å«é¡ê¢ ê£ šê£¡öé¡ ê¢ê£š¹ê£¯¡êš¹J¥¦.BACKׯ¡êš¹7¥צ.INFO¯¡êš¹$¥¦.GRAFׯ¡êš¹¥צ.FOTO¯¡êšÁ8 ë¬<!«¶Ì²~ê¤ÌîüŸÃ ê£ Ã¡ê£ê£Å¡ «ê¢ê£šê£ ¡hê¢ šê¢šé¡ê¢!ê£Ç꣕ž êÿê¢!Çê£ê£ ‚•žéê¢ºÃ„ê£ „¡&ê¢ ê£ ‚šê¢!Çž êÿê¢!Ç꣡î¢ÇöžêîüÇìžîøÃ«ì¡òîü¤ Ì «ðøÃÃ ‹ð¢ºÄ�Ãð¢ºÃ„�„¡ôð¢¾Åð¢¾È„ð£Ä„ð£MÈ„¡t«ð¢ïê£ ‚žê¢Çšê¢ šê£ê¢ºÄ¡ê¢ šÁ î1¶šëÌ©ý¡¶ š¹îꥥ¥ ¥ Â!¡ðéÅ¡ éÃéÃ�«« ¶7Ì©ý¶üŸÃ„¡U¥ ž ¶·¡i«ëð£È¡Fîüë¤ Ì ñ¢¾Èñ¢¾Å�ñùñøÉ�ñ£ ÇÅ�ñ£ È�ñ¢  ºdÄ�¡ «ëîüÂ"¹ë‚«¹öì“¡êîüð£‚�žîøÃ«ì¡ïð¢ªï¢ðÿš¥ð¢ÿò•«ïÅïÇìÇ�‚É„¡:ò¶6•«ïÅïÇìÅ„²~©ÿ¤©¢¯„¡©ÿ¶6Çì©£ž²6ž!« ¥¥Â«íá¶ š¹ò²~í¤Ì©¢š©¢š©¢í ž ì«ì“¡ï¦×ªï¢Çÿšî¢ž!šÁ«!9¡ D*²~é¤Ìè¤ Ì©©¢¯©¢ºÃ©¢ºÃ�„«ì¡~¥¥ž ê©£ •Ç,Èê©£ •Ä„¶¢š©¢¥ª©¢ 𩢩ü𩢩ü©üË„šìŸË¥¾Å„¡ö¥éì «é¡îá ¶ š¹ô¹ ©¢ìî¤ ¨ ¹uîÅ¡ ¶ š¹ô¹gñá« ¥ðñìÂ/«îÅñĺ„«ì“¡é¥žž"á ©¢¥ ¯«ì¡:©šéè©£‚�žž"ë©ù áéè©£‚�žì¡¥©¢ ž ì“¡©¦×ª©¢ÇÿšÁ$È¡+ìî¤ Ì©ù©ø•¡ ©¢©ù•š©ù©ø•É¡îìÂ"«îá¶š¹ô©¢ìî¤ ¨ ©¢šíì¹a饾˄¡¶ š¹ô©¢Ì©š©¢Çÿš©ü¡©¢©ýš©«Ꟛ««ì¾Å¡qì¾#Ãì¾Å„¡?««« ìñ¾²z¼‹¡ í �ìñ¾‚0•«¹«ñ‚« ñì¾Åï“�¡öïíÅ„í È„«î“¡!« «ì²~í¤¯«ï“¡í•«ïí¢ñ»©¢¦×ª©¢ Çš©¢ Ì©»©»© »é¡©¢ ©£©£•𹩢 𩣡n©¢Çš©¢ šé¡ ©¢©£š¹©¢Çš©¢Ì©¢ºÃ�¡ôï¡`²~í¤ü¡W¶Ì «òüŸË¡!ìòü¤ ¢¯¡¥ ¥ ž ðòü¤ £ •Ç,ȫ$î«íÂ*¡î“¡ìòü¤ ¢¯«¹¹ž"ëï“ë„¡, «²~í¤Ì òü¡ íÂá9©¢ šé“¡/©¢!Çž ©ÿ©¢!Ç©øž©ÿ©¢!Ç©ø‚žé¡ë¹ëÂ1¶øË¡©¢š©¢š©¢šó¡)¥ ž!¶¢Ÿš¶ø« ¶7ÿ¶6Çì*¡ìò¯«ï“¡í•«ïíÃ�¡òï¡2²~í¤Ì í«ò¾Å¡ìòªòü¶üŸË„¡ê¶üš¥ êø¤ ¢ ž Á`é+ \«««íê¤ £Èî“„¡(êí¤ Ìï¢ì¶7£ž¶ôš¹¶šÁ( :VQ2ò¶šéÌîýîø¶8øË„¡êîþ¡îî¢Ìšðèáî¢ î£ šï¢  d»«î£¡î¢î£šéÂ1î£ï¢  º ¾ á îø ¿î¢š¹sîø¾á#èÂîø¾ •«éÅéÈ„¡ îø ¿î¢éš¹KèÂîø¾Ã¡/î£î¢ºÄ¡î£ ¡ î¢ î£ ‚šî¢ÇšèÂ¹îø ¿¹¹¶ šî¢šî¾é•è•‚«ëáêé•¿¹ëÅ¡êéè‚êéëžêê¾è•¿Áè@«ë¾Å¡Q뾫«ê¾ë¾•‚«¥뾿íìÈ¡2íìí•îêíž ‚«íìÅ¡¹êí¥ë¾¢šÁºx¶¶šèÌîý¡òôî¢Ìîü««ïøî£ ‚ïùá1î£ì‚ï£ Å¡èÂ2¡ ¶š¹ð¹ Ç«¹ ï£ î£•«¹ Ç«ì«ž¥ë¯¡í«¹í‚«¹öÁ�:X f¸E²6ž!²~¶ú¤²?·¡8²FצPut in :ªP²?²FPÍÂ'Ç «è•«èáö¶úÂ*¡¹ô¶E͸EéêÅ¡ê«éÅ¡$î¢ šîøëî¢!î£éžî¢î£邚ëé‚«ìé•«ìëí“¡hî£ ¡î¢ šî¢šîÿî¢!Çïøî£ ‚•žž"Ë¡¹ðî£ î£ É¡îÿî¢!Çïøî£ ‚ž¶E¹ ŸŸÍ¹Í¹¬ ¹ !#¶EÇà‹¡$¶ á¶Âž"Ë¡ž"«¶ÍÂ& èͶE ‹¡²¤øÂ²¤øÂž#ž#�¡ž&¹ î¢!Çž ž"Ë¡¹fî¢ î£ ‚šî¢ší¡öîüá3îø¾ á+á!î£Ç•Äî£ “„¡î¢Ç•šîø¿è¹îÿîøîüžž"Ë¡¹¹¶ šî¢š¶EáòÁ¹â߯ ò+ŸÌ6ÍÂ+Ê6ŸË¡ÍÊ6ŸÃ¡öÖ ÿ° ŒØÞTšŒ4¨°úP"hv¸fŠ J¶ü.†*ÀðºLÁ +Uzêú«Á êù«Á èø ¿èÂÁêÌëý¡O룡èÅ¡ëø ¿êÂè•«¹öëøé¿ê¹*èÅ¡ëøÈ–ò .ÊTf* zúF î Ú Úúd2¡¹êí¥뾞¥ë¯¡í«¹í‚«¹öÁ�:X f¸E²6ž!²~¶ú¤²?·¡8²FצPut in :ªP²?šìë¤ î¢¨ îÿìÂèáá ²~îÿ¤צªî¢šî¢šî¢šÁ/13:! ¢¶¢ šÂÁø ¶¢ šÂÁø¶ ¿ëÿëøžè•«¹ôëøé¿ëÿëøž¹¶ šÁ£4T h«¥ ¿«éÉ¡ 逫¥-¿«éᥦ-32768ת ¹P«ÌìåÄ¡>é²oì¤ø†0‚¢ šÂÁø««êÌ ð¢Ì ñ¢¾Å¡ôðÿð¢¥ÂË¡¶š¹ò««ëï¤ £Èí“„¡ïë¤ øñøÃïë¤ ùñùī낫¹öí“¡¶š¹wëï¤ £«í0Ãìń¹«¥ëí¿ë‚«í0Ë¡ é²oì¤øŽ«ì•«¹ö¥ë•¿è¥¾É¡¥¾«ê¥èÂÁ`ž êÌìý¡NèÈ¡龫èé¾Å¡ê è龕Âé¾Å¡ ï¤ ÿ«¹ïë¤ ø«ñùîÉñ£ ÇÉ�¡Lï땤 Ì ò¢îšò¢ Çšðÿïž"Ë¡¹.ð¢šð¢šðûË¡ð¢šñ¢îšñ¢ Çšñ¢  d»««ì“¡ ꢚꢚÁ«ì£¡«ëèÈìú“„¡ìøé뾿êÂë‚«¹ö¹ ìÿéèž¹¶ šÁ.dêÌ«íûáêÂéè¿ëèÈíùíú�“„¡0íø¾«íÿáì¥Â-¡¹ éëì¿ë½ ø2¶šèÌéý¡èÂ1éüÅ¡éûáè¹颚Á.«¶šïÌ ðýìÄ„¡ôðþ¡öð¢Ì ëÉ¡𣠫ñøë‚«ëì‚ñùÅ¡ ê“¡ïÂ2¡‚«¹ éëì¿ë‚«ê¹öéë•¿íù“¡ê¹ôÁ Q lëÌíý¡>éèÅ¡ ë éè•Âè«í£¡«ìéÉíú“„¡íøê쾿ëÂì‚«¹ö¹ íÿêéž¹¶ šÁëì‚ñùÅ¡ñùë•«ð¢ëñùÄšðú“¡Lê¡ðÿîíìÇ�ëž¹ð¢šðÿîíìÇ�ëžì«ëì‚«ð¢ëñùÚð¢ ëñø•šð£ ð£ Å¡ð¢ 𣠚¹aì«ê¡ðÿîíìÇ�ëž¹ ð.Tèù“¡è¹öèûáè¹ 袚袚Áí" *é̶šêûáéÂèêø¾šêûáé¹ꢚÁ0éÌèš««îûáÿîíìÇ�ëžž"á6ê¡1ìÇ�«ëë‘îíë‚•ž ‚«ëÇ‚•dž«ë«ð¢ëìÉš¹¹«¹¶ šÁl ¶šèÌîý¡ðî£Å¡î¢î£•šî£éÂîø¾ Ãîú“„¡é¹öîú¡¹ðîø¾«ê+Ãê-Ã�¡ê-ëéÂîø¾«ê²z¼‹¡V««èèø �ê‚0•šéÂîø¾«í‚«îÿá$ê¥Â-¡íáèš¹èèø †šéÂÅ¡¹ìôî¢Ìîü««î£ î£ Ã¡î£ì‚î£Å¡¹î¹ ï£ î£•«¹ Ç«ì«éêÅ¡ê«éÅ¡î¢!î£îøëéžî¢î£邚ëé‚«ìé•«ìëí“¡Sî£ ¡îø¾«¹ôê²z¼‹“îù�¡òëîú�¡ ì¡èèø‘š¹¹¶šÁkO³ Ð é¾ê¾‚èÈ¡éê꾂龞êé¾ê¾‚¿Á*èÅë¾Å„ë¾ê¾‚î¢ šî¢šîÿî¢!Çïøî£ ‚•žž"Ë¡¹îîÿî¢!Çïøî£ ‚žž"Ë¡¹îî¢ î£ ‚šî¢ší¡ö¹îÿîøîüžž"Ë¡¹îîüáòîûˡîøéÈ„¡4ê¾è•‚«ìÅ¡êèêè뾂ìž«ìáëêè뾞êê¾ë¾‚¿ÁRê¦×ªPéÅèÅ„éè‚•ë¾È„¡ ëéêèžêè¿Á,éÅèÅ„¡.ê  %¶Æ®ÎÆ‚€ÍÆ‚0ÍÆ‚XÍÆ�þÍÁ<s“³öá$` 0¢òT² @ÞN¶ÄD€ºÒZ 8 T z ˜ Ú ~ ¦ x‚\6 îÔß ‚ (ÍÁ :à*¥צ dup dir entryª(¹ô¥צfile already openª(¹ô¥צ file not openª(¹ô¥צbad input formatª(¹ô¥¦r¶8ͲF¦No debugger in systemתP¶8²FÍÁ6¸ÌÆ¥^ÍÆ¦.ÍÆÆ)ÍÆª¥€ŽÌÆ¥GÍÆ¦:ÍÆ¥€¸!ÍÆing buffer overflowת(¹ô¥צdisk write protectedª(¹u¥¦illegal block #ת(¹]¥¦bad byte countת(¹F¥צbad init recordª(¹.¬ª(¥€ÅÌÆ¦ SYSTEM.WRK. ÍÆÆ$ÍÆª¥€£ÌƦ*ÍÆ¥€ÅÍÆª(­J ¢'¶ø¡¦Ï¹Í%¥€Ò¦ªÿ«7§4¶ø�“¡ ¦textι&Õ­”}eN:%üèм¥ŠoYDצ IO error: ¥(͹ð¥צUnimplemented instructionª(¹ð¥צFloating point errorª(¹u¥'«7§7§3�“¡¦codeÎ'«7¶š§7¸$ž­Z&Æت(¥€£ÌƦ *SYSTEM.WRK. ÍÆÆ4ÍÆª(¥�R¥€£ŸÍ§�W¡t¥�n d»Æ¦Çß8¦String overflowת(¹]¥¦Programmed HALTת(¹E¥¦Programmed break-pointת(¹&¬R¹¶žƒeP9$æÐªŠoYC¶¥Í¶ %¶Æ®ÎÆ‚€ÍÆ‚0ÍÆ‚XÍÆ�þÍÁ<s“³öá$` 0¢òT² @ÞN¶ÄD€ºÒZ 8 T z ˜ Ú ~ ¦ x‚\6 îÔß ‚ (¶¢ÌÙ¢º š٢ »ØÙ¢º¿ØÙ¢ºž ­4Æ*Æ�V`ͲtΟ¸D²o¤š²o¤ š²o¤dš²o¤Çèš²o¤Ç'š²z³rÿ¥צUnknown run-time errorª(é¹ò¥צValue range errorª(¹ð¥צNo proc in seg-tableª(¹ð¥¦Exit from uncalled procת(¹ð¥¦Stack ½¶Ì�¶Ê�¶¢šÊ�¶šÊ�¶¢šÆצ*SYSTEM.MISCINFOªPÆ*ÆÍž"áOÆ*Í “¡?¶Ì�¶Ê*Ì�·Ê�¶¢Ê�·¢¨Ê�¶¢Ê�·£šÊ�¶¢Ê�·¢¨ overflowת(¹ð¥צInteger overflowª(¹ð¥¦Divide by zeroת(¹ð¥צNIL pointer referenceª(¹ð¥צProgram interrupted by userª(¹ðÊ�¶¢%Ê�·¢%¨ ²tÎÆ*Íž&Æ*Í­n ðÆتÙž&ž"á ²~٤ƪ­ ²€Ì¤ ¦:SYSTEM.ASSMBLERת²€Ì¤ ¦:SYSTEM.COM¥צSystem IO errorª(¹ð¥צ unknown causeª(è¹ö¥¦ parity (CRC)ת(¹ô¥צillegal unit #ª(¹ô¥¦illegal IO requestת(¹ô¥צdata-PILERת²€Ì¤ ¦:SYSTEM.EDITORת²€Ì¤ ¦ :SYSTEM.FILERת²€Ì¤ צ:SYSTEM.LINKERªÆ�&²€Ì¨< Ì�bÆŸ‘ÍÌ Ì�cØÊ�cÈ¡ì²~ؤ²FPÍÂ'Ç «è•«èáö¶úÂ*¡¹ô¶E͸E¶E¹ ŸŸÍ¹Í¹¬ ¹ !#¶EÇà‹¡$¶ á¶Âž"Ë¡ž"«¶Ícom timeoutª(¹ô¥¦vol went off-lineת(¹ô¥¦file lost in dirת(¹ô¥צ bad file nameª(¹ô¥צno room on volª(¹ô¥¦ vol not foundÂ& èͶE ‹¡²¤øÂ²¤øÂž#ž#�¡ž&¶EáòÁ¹â߯ ò+ŸÌ6ÍÂ+Ê6ŸË¡ÍÊ6ŸÃ¡öÖ ÿ° ŒØÞTšŒ4ת(¹ô¥¦file not foundת(¹ô¥צ dup dir entryª(¹ô¥צfile already openª(¹ô¥צ file not openª(¹ô¥צbad input formatª(¹ô¥¦r¶8ͲF¦No user programתP¶8²FÍÁå0ª¹#¥€¸ÌÆ¥^ÍÆ¦.ÍÆÆ)ÍÆª¥€ŽÌÆ¥GÍÆ¦:ÍÆ¥€¸!ÍÆing buffer overflowת(¹ô¥צdisk write protectedª(¹u¥¦illegal block #ת(¹]¥¦bad byte countת(¹F¥צbad init recordª(¹.¬ª(¥€ÅÌÆ¦ SYSTEM.WRK. ÍÆÆ$ÍÆª¥€£ÌƦ*ÍÆ¥€ÅÍÆª(­J ¢'¶ø¡¦Ï¹Í%¥€Ò¦ªÿ«7§4¶ø�“¡ ¦textι&Õ­”}eN:%üèм¥ŠoYDצ IO error: ¥(͹ð¥צUnimplemented instructionª(¹ð¥צFloating point errorª(¹u¥'«7§7§3�“¡¦codeÎ'«7¶š§7¸$ž­Z&Æت(¥€£ÌƦ *SYSTEM.WRK. ÍÆÆ4ÍÆª(¥�R¥€£ŸÍ§�W¡t¥�n d»Æ¦Çß8¦String overflowת(¹]¥¦Programmed HALTת(¹E¥¦Programmed break-pointת(¹&¬R¹¶žƒeP9$æÐªŠoYC¶¥Í¶  ¹î衲;²?ª²?ÆÍÌٟáž'²CÙ¤ ¢ ¨¦CONSOLE×ÎצSYSTERMΦGRAPHIC×ÎצPRINTERΦREMIN×ÎצREMOUTέexˆƒulת¥¤צAugª¥ ¤¦Sepת¥ ¤צOctª¥ ¤¦Novת¥ ¤צDecª¥ ¤¦???ת¥¤צ???ª¥¤¦???תè¡Î¹²6ž!ÎÎ ÎÎ…‡þê<Æ‹DŸ‘Í¥¦*SYSTEM.CHARSETת(Æ‹D¥ŸÍÊ‹I¡îž&ž"áðÆÇ€žÊ‹UÊ‹T•ÅÌÊ‹KƆDÇ Ê‹TžÇÇ •Ì ÌÌŒfØÊŒÆÞªPښ̶ƟͶøÌ1Ê1Ë¡CÛ¡>Ê1ᶦIllegal file name×͹¶צNo file ͶÆÍ¹îÚš¶Ì�3¶¢ºË¡ ¶ÆÍfÈ¡ƆDØ •¤Ú žÚ‚ÌØ‚̹öÇÇ•Ì ÌÌŒfØÊŒfÈ¡ƈDØ •¤Ú žÚ‚ÌØ‚̹ôèÙ„©7“„¡@ÆÇ€ ž Ì?ÌŒfØÊŒfȡƊDؤÆؤ ¤¶¦ not code×͹î¹ð¶ÿÆ3Ƕ£žž"Ë¡¶צ Bad block #0͹îÌ2Ì�4Ê2Ê�4È¡CÆ€“Ê2¤øÉÆ€“Ê2¤øÅ�¡$Æ€“ ž Æ€£Ç žžØ‚̹òÆP‘¤ž¹ Æž¹ ¶¢»Æ‹DÍ­ßRŽÁÌ6¶¢Ÿš²7ž¶7Ÿ‘Ͳ:žÆž¶:ØÍ²9žÆž¶ ¶ÿÆ3Ƕ£žÊ2‚Ì2¹öÌ2Ì�4Ê2Ê�4È¡uÆ€“Ê2¤øË¡aÝ¡9¶צ Linking...ͶͶÍϡܡ«¹ «ž¹#êÇ‹“¡¶צ9ØÍ²8žÆž¶8ØÍ²¤¶:𲤶9š² ž¶ Ÿ‘Ͳž¶Ÿ‘Ͳ6ž ­ŽÆÛªÜÆŸÍÜý“¡1٦׷¡)ÆÌÆÚÍMust L(ink first͹gÊ2‚Ì2¹ôÌ2Ì�4Ê2Ê�4È¡JÊ2ÃÊ2Ä�¡7Ê�3¢0Ê2¤Ì�5Æ3Ê2¤Ì�6Ê�5¶ÿšÊ�5¢Ê�6ùšÊ�5¢Ê�6ø¶£‚šÊ2‚Ì2¹òښ̶Æצ:ÍÆÙÍÆªÜÆŸÍØÜý𨸡 ÚÜ¢ªÙÜ¢ªÜÍ­H d ¸ ¸ ¸ è¡0²&צª²צª².צª²²?ª²²?ª²²Í­e fì@^²€ÌÚ¤ ÆÏÌÊáò²€ÌÚ¤ ÆÆÆÆÍ!¡ôÌʂ̲~Ê¤Ì Ê ü¡eÊ ¦×ªÊÍ*¡UÊ ¶ü¤ ¢ªÆ?ª¶ צ*SYSTEM.WRK.TEXT²²&²Î ¶¦*SYSTEM.WRK.CODEײ²²Î ¶¢,º¸¶¢º¸¶¢º¸ ­ª¶7Ͷ ÍÌ!Æ!Ê ÍÆ!¦:×ÍÆ!ÆÍÆ!ªÆ²€ÌÚ¤ ·¡ÆÆÏ¡ ²€ÌÚ¤ ÆªÊ ÃÊ‹�¡öÊÃÌÊá²€ÌÚ¤ ÆÏ¡­©R â¶Í¶:Ͷ9Í¥¦CONSOLE:ת(¶:¥ŸÍ¶9¥ŸÍè¡¥¦SYSTERM:ת(¶8¥ŸÍ²¤¶:𲤶9𲤶8š²¤Ÿš²¤Øá¶צ Assembling͹¶צ CompilingͶ¦...×Í¶ÍØáÌ9¹Ì9Ê9ϡ'ÆÌ:Æ:²ÍÆ:¦:×ÍÆ:²&ÍÆ:Ÿš²¤Ÿš­  ¶6ŸÃ«¥¤צ???ª¥¤¦Janת¥¤צFebª¥¤¦Marת¥¤צAprª¥¤¦Mayת¥¤צJunª¥¤¦Jª(¹yØá¶צAssemble͹¶צCompileͶ¦ what text? ×ͶÆ(Í¶ÍÆ¦×¯¡¹ðÆÌ:Æ:Æ(ÍÆ:¦.TEXT×-ÍÆ:ª(¶ ulת¥¤צAugª¥ ¤¦Sepת¥ ¤צOctª¥ ¤¦Novת¥ ¤צDecª¥ ¤¦???ת¥¤צ???ª¥¤¦???תè¡Î¹²6ž!ÎÎ ÎÎÆŸÍž"Ë¡$¶צ Can't find ͶÆÍ¸¹ðÆÌ:Æ:²€ÌÊ9¤ Æ€ºצ:²€ÌÊ9¤ ÍÍÆ€ºÍÆ:¦SYSTEM.SWAPDISK×&ÍÆ:ª(¶7ÆÍ%¶¢º¡Î¶Íè¡ô©7“¡ö¶̄詄袺¡©„è£%†Í Å¡ ¶²tͶ¦ Welcome ×Ͷ²?Ͷצ, toÍ¶Í¶ÍŸÍÆ-¦*SYSTEM.WRK.CODE[*]ת¶“¡ò¶צTo what codefile? ͶÆ(Í¶ÍÆצ·¡ôƾ¶¢,ºÃ¡¹ð¹uצ$ÆÍÌ,Ê,Ë¡-ÆÌ�dÊ�d¦×ªÊ�d¢ØÇ0‹šÊ�dü¡ðÊ�d¢ÇÿšØž&ž"áòØÍ*¡ôÊ�d¶ü¤ ¢ªضúá0²?Ê�dª¥צ*SYSTEM.STARTUPª(Æ¥ŸÍß«7ÆÍ̶¦U.C.S.D. Pascal System II.0×ͶͶͶ¦Current date is ×Ͷ²CºÍ ¶-Ͷ¥²Cº¤Í¶-Ͷ�%Ì�eÊ�%Ê�eÈ¡lضúÃÊ�%Ê�b‹�¡Q¥Ì�fÆ�fÊ�dÍÆ�fÆ�&Ê�%¤ ÍÆ�fª(Æ¥ŸÍß¡²€ÌÊ�%¤ ¥ªÊ�bÊ�%—… Ì�bÆÍÊ�%‚Ì�%¹ö؂̲C ºÍ ¶Í¹¹%¶¦System re-initialized×ͶÍÁÎ(,Ð 06ŠÞöŠÈ" 0 ¤¦Mayת¥¤צJunª¥¤¦J  צ*Command: U(ser restart, I(nitialize, H(altªPÍ'ìÍ)«Í%ë³$z€‹“«ì“¡òë¹ö¶ÍΡ«ž¹ô¶ÍΡ«ÁýýýÿÿÿÁÝý�½½¡¿ÿÿ½½½�½½½ÿÿÿïïïïïïïÿÿÿßßßßßÝÁÿÿÿ½Ýíñíݽÿÿÿýýýýýý�ÿÿÿ™¥½½½½½ÿÿÿ½¹µ¥­�½ÿÿÿ�½½½½½�ÿÿÿ�½½�ýýýÿÿÿ�½½½­��¿ÿÿ�½½Á½½½ÿÿÿÃÊ,ÍÆÆ:Æ¾ÍÆ:Æ(Ê,ͦ$ׯÍÌ,¹öÆÆ¾¾]Ë¡$Æ-Ì:Æ:Æ(ÍÆ:צ.CODE[*]0ÍÆ:ª¹Æ-ƪ¶Æ-ŸÍž"Ë¡ ¶צ Can't opež¹ô¶¦ Linking...×ͶÍΡ«ž¹ôιôιôιôêË¡&¶צ Restarting...Ͷͫž¹¶Í¶צ U not allowedn ͶÆ-͹¸ ¸ ¸ ØáÌØ«ž¶ Ͷ7Í­_aˈʶ Ͷ7Ͷ¢º¡ž&¶ Å¡+¸¶Í¶ >*>$$~$~$$>> >.*.:*:8DD88(800   $~$|8(8Å¡Í%¶ÍÏ¡«ž¹ö²צSYSTEM.WRK.CODE·¡s²¶¢ª²¶¢ª²¦SYSTEM.WRK.CODE×·¡F²²ª²¾Å¡5²Æ²¾• ~8(8``0 > BB~~BB~>BBBBB>~>~~ ×ͶÆÇÿÍ¶ÍÆ¾Å¡AÆÆ¾¾.á ÆÆ¾Í¹צ.CODEÆÇÿƾ‚ÍÆ¥Ï¡«ž­ž¶¡mÍ%¶ÍÌÆ²>>"rBB^@BBB~BBB ">B""B~fZBBBBBBFJZRbB~BBBBB~~BB~~BBBRr~@~BB>BBB<ÍÆצ:ÍÆ²ÍÆÙإϡ)¶¦ Running...×Í¶ÍØ¡«¹«žêÇ‹“¡¸¹ ءϹϭ͆¶:¢š¶9B<@B<~BBBBBB~BBBBB$BBBBBZfBB$$BBBBB<~B0< B~>> 0``|@@@@@|>ÿ¢š¶8¢š²¤¶:𲤶9šêá'צ*SYSTEM.STARTUP¥Î¡ Í%«žêÇà‹¡ÎêÇ‹¡êÃζ¢ºáêá «Î¹ Ÿ¸<@\B|:FBF:BBBB>xx > ÿÿÿÿÿÿÿÿÿÿž¹ô¶¦ Linking...×ͶÍΡ«ž¹ôιôιôιôêË¡&¶צ Restarting...Ͷͫž¹¶Í¶צ U not allowedÿÿÿÿÿÿÿÿÿÿÿççççÿÿçÿÿÿÁÕÁëÿÿÿÿÿÿÛÛ�Û�ÛÛÿÿÿ÷ÁýÁßÁ÷ÿÿÿÑÕÑãÅÕÅÿÿÿïÇ»ç»ÇïïÿÿÇ×ÇïÿÿÿÿÿÿÏ÷ûûû÷ÏÿÿÿóïßßßïóÿÿÿÿÛç�çÛÿÿÿÿÿïïƒïïÿÿÿÿÿÿÿÿÇ×Ç͹RëRÃιJ«ëH៸6ž¹8¬AX¹0qz(ØÄ(*º "D&(”,.¨¡ðÁÇ Dvª¦\x†óÿÿÿÿÿ�ÿÿÿÿÿÿÿÿÿÿÇ×ÇÿÿÿŸŸÏçóùùÿÿÿý�¥¹½Ãÿÿÿïçëíïïïÿÿÿ�¿¿�ýý�ÿÿÿ�¿¿ƒ¿¿�ÿÿÿýýý½�¿¿ÿÿÿ�ýý�¿¿�ÿÿÿ�ýý�½½�ÿÿÿ�¿ßÃ÷÷÷ÿÿÿ�½½�½½�ÿÿÿ�½½�¿6«ž¸ ¸ ¸ «²FצKCommand: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, D(ebug,? [II.0]ªPÍ'ìÍ)«Í%ë?á@²F¿�ÿÿÿÇ×ÇÿÇ×ÇÿÿÿÇ×ÇÿÇ×Çóÿÿßï÷û÷ïßÿÿÿÿÿÁÿÿÁÿÿÿÿû÷ïßï÷ûÿÿÿý¿Ï÷ÿ÷ÿÿÿý�µÍýƒÿÿÿý½�½½½ÿÿÿ�½½Á½½�ÿÿÿ�½ýýý½�ÿÿÿÁ½½½½½Áÿÿÿ�ýýÁýý�ÿÿÿ�ýý   ž"Ï­ ÌÙØ¾È¡3ØÙ¾!ÄØ¾}È„¡ØÙ¾aÄØÙ¾zÈ„¡ ØÙØÙ¾a•A‚¿Ù‚̹ØÙ͹öØ×¦¯¡ž­¹I T Æ ÜªÆÛªÆÚªÌ-ïŸË¡[ï¤ ÿÙÄ¡RÍ&¶Æ Ͷ Í¶ï¤ ÿÍ ¶ ͶÆÍ¶צ ? (Y/N) ÍÏÌ-Øï¤ ÿšÊ-“¡FÍ&¶ÆÍ¶צ ? ͶØÍ ¶ÍØøÙÉ¡Í&¶¦ Invalid #×Íž­aP Æ ÷ÃïŸË„¡8Í&¶¦Destroy ×Ͷ¥GͶצ: ? ÍÏ“¡ž­ Æ‘¤øÌ­¥Gצª¥€ˆ×¦ª¥k¦×ª¥{צª¥c¦×ª¥€¿¦×ª(¥Wצª¥S¦×ª¥€Ô¦×ª(¥Kצª¥O¦×ª«««« « ¥ ž ­J Ù¾[Ùž پáFÙÌÆÙ(ÍÆ¦[*****]×/ÍÆª(Ù¾•ÌÙ¾•ÌÚÛÄ¡ÙÚØ Ž0‚¿Ø †Ìڕ̹ö­2` ÆÙªÆ ¦# תÚ †áÆ ½ýÿ½Ãÿÿÿ�ïïïïïïÿÿÿ½½½½½½�ÿÿÿ½½½½½Ûçÿÿÿ½½½½½¥™ÿÿÿ½½ÛçÛ½½ÿÿÿ½½½Ãçççÿÿÿ�½ÏÃó½�ÿÿÿÁýýýýýÁÿÿÿùùóçÏŸŸÿÿÿƒ¿¿¿¿¿ƒÿÿÿ÷ãÁ÷÷÷÷ÿÿÿÿÿÿÿÿÿÿÿnÚÇ`‹ÙÄ¡žÆצª(Ú¹öÆצParity (CRC) errorª(¹ôƦBad unit numberת(¹ôƦBad I/O operationת(¹ôƦ Timeout errorÿû÷ïÿÿÿÿÿÿÿÿÿÿ£½ƒÿÿÿýýʽ¹Åÿÿÿÿÿýý½Ãÿÿÿ¿¿£�½�£ÿÿÿÿÿýÅýÃÿÿÿï÷÷ã÷÷÷ûÿÿÿÿý½�£¿Ãÿýýʽ½½ÿÿÿ÷ÿ÷÷÷×ïÿÿÿ÷ÿ÷÷÷÷÷õûÿûûÛëóëÛÿÿÿû÷÷÷÷÷ïת(¹ôƦVol went off-lineת(¹ôƦFile lost in dirת(¹|Æצ Bad file nameª(¹fÆצNo room on volª(¹OƦNo such vol on-lineת(¹ÿÿÿÿÿ™¥½½½ÿÿÿÿÿÁ½½½½ÿÿÿÿÿý½½Ãÿÿÿÿÿý½½Áýýÿÿÿý½�£¿¿ÿÿÿÅ»ûûûÿÿÿÿÿÃýãßáÿÿÿûûáûûÛçÿÿÿÿÿ½½½½Ãÿÿÿÿÿ½½½Ûçÿÿÿÿÿ½½½¥™ÿÿÿÿÿÝë÷ëÝÿÿÿÿÿ½Ûç3ƦFile not foundת(¹¬å ¹þåÏ·£‹t`K1Ù¹òƦVol already on-lineת(¹ðƦText file lostת(¹ðÆצCode file lostª(¹÷ûýÿÿÿÿÁïãûÁÿÿÿ‡÷÷û÷÷‡ÿÿ÷÷÷÷÷÷÷÷÷÷ÿáïïßïïáÿÿÿÿÿÿÁßßÿÿÿÿû÷ïßï÷ûÿÿ²¼œ Ï¹Ï¹ö­�žQôˡϲ¼œ ÏôáòÆ žðƦ File foundת(¹ðÆצBlkd volª(¹ðƦ Unblkd volת(¹ðÆצ File nameª(¹ðÆצFile/(unblkd vol)ª(¹ðÆצFile/(blkd vol)ª(¹ðÆצà¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿File/volª(¹ðƦVol nameת(¹ðÆצOutput file fullª(¹ðƦWorkfile is savedת(¹ðƦNo directory on volת(¹ðƦNo workfile to à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿saveת(¹ðƦWildcard not allowedת(¹ðÆצ"Bad form (Wild Non-Wild) cardª(¹ðƦIll file/vol nameת(¹}ƦIll change (Vol <à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï?à¿ÿþûï?à¿ÿþûï¿à¿ÿþûï¿à¿ÿþûï¿`°Ál°  € ( €>øàƒ�ÀüñÇŸà¼Çæ›ï±`¸ÃÆ‹ï°to> file) nameת(¹UƦBad dest for files foundת(¹4¬¹,½"®Ÿõ¿Ýûæ�i°EƤb–U¿‚ÙÄ¡#ÆÌÆÆ(ÍÆצ `8à¸`8ÿü À¿`¸ãà ç¸`¸á‹o¸`¸ñ›o¼à¼þñçŸà?üàÃàààÀexpected1ÍÆª(Í&Ú Åž"˶¢º„�¡¶¦ I/O error #×ͶÚÍ ¹4¶¢º¡!¶צ Filer error #ͶÙÍ ¹ ¶ÆÍØ¡žø5 FILEHAND ­šÐÒð\¶ÍÍ&­ÚÍ)«î¶¢,ºÃ¡žîYÃÌ¶Í “¡¶Í­6ØÍ(¡ž­íïÍ  ‹Ì¹¬ ¹MJLN0A$6¶¢º“¡UÛ¡ ¶£&PɡϹ ¶צ, Ͷ϶á¶צ Ͷá¶צ ÍÌgÆ=¾#ÃÊgÆ=¾É�¡ÛιÆ=¾*á Æ=ÍÛ*ªØÌjÆjÛÍÆjצ:ÍÆjª($ÎÌhÊhÆ=¾É¡XÆ=¾²"¾‚•#Å¡žÆÆ=ªPÆ=²"¾Æ=¾‚•¿ž­fÆܪ(«Æ¥G¥[Æ¥Í!¡nءƞ ¥C¥Gª¥G¥Í«ïŸÃ¡+ëá Îëž&ž"ˡβ~ë¤ü¡ÎÎ¥[צ¯¡Î¥[²"Æ=Êh‚²"¾žÆÊh‚Æ=Êh‚²"¾‚ƾÊh••ž²"Æ=ªP=ÎÌgÊgÆ=¾Ã¡?ÎÌgÊgÆ=¾É¡,¶¡ Üó�“¡Ï« ÚÎÆ=¾ÌgÙιϹïÍ Ë¡Î Î Î­. ”ï¶ø¤ Ì¥sØ¢ª¥€ÔÌÆ¥WÍÆצ:ÍÆØ¢ÍÆª(Y««²צ·ô„¡cÍ&¶¢º“¡¶²PÜ“ó„¶Ä¡)ÌjÆj¥SÍÆjצ:ÍÆj Ï÷Ë¡ÏÚÎØÌjÆjØ(ÍÆjÚAÍÆjª(Ü“¡Ø ÊfÏë«¥O¥Gªí¥KϹ¥€é¦×·¶È„¡Í¶ ͶآͶצ ? ÍÍ)«¶Í “¡¶Íî¶¢,ºÃ¡«žîYø­¸ÆÛªÆ ƾ¿ï¶¤ ¢ÚÆ Æ¾žÌf¹Ìfó¡¥€Ô@ Ï¹¥€Ô¶ ¶Ï­ Æ rÆÞªÆݪÏÆ"צªPÆ¥W¥€ˆ¥k¥€ÔÎë«¥K¥GªÜÅ¡ž¥€é¦×¯ÜÉ„¡žÆ¥Æ Ư̭ 0ÆÞª(ÌÝøÃ¡ôܲ~ì¤üìÃ�„ÌÛó„¡ Í%¶Í¹Í&«Ü¥K¥O¯„«Ìï¤ £Ì&ÊÊ&È¡uïʤ Ì'Ê'¢»¥€ˆ¾¥k¾‚Ê'S¥{¥c¥€¿Î­†\Ì÷ÃÚ¥s¥[·�¥K¥G·�„¡2ÌÆ¥GÍÆ¦:×ÍÆ¥[ÍÆ¦ Remove old×ÏÌ­RÆÆ�-Ç‘ÍצChang¢¾È¡K¥€ˆÎ¥kÊ'¢¾¥k¾•‚΄¡-¥€ˆÊ'¢¯ó�¡Ê'¢õ»¥ÊÀ»¥¥º‚»«Ê‚̹öõ¡Ï ¹ Ü¡ÝÝø•š¥ºÅ¡êÚ¡í¥KÏN«Ýe¦Change to what×ÇÀ Ï¥€ˆ¦×·¥{צ·„ó�¡ô¥S¥Wª¥€¿Ì,Æ,¥WÍÆ,צ:ÍÆ,ª(ó“¡¥€¿Ì,Æ,¥€¿(ÍÆ,¥{AÍÆ,ª(Ì*צChangeÆøï¤ £ÉîYË„¡ìïÝø‚¤ Ì&ÝÝø‚šõ¡"¥ÝøÀÊ&¢º»Ê&¢º¡ Ê&¢»Ï ¥ÝøÀº¡ðÜ¡òÆÊ&¢Æ'¥€ˆ¾‚Ê&¢¾¥€ˆ¾•¥k¾•ÍÆ'ªÆ¾¥{¾[*Ï¡[Æ¥€ÔÍž"ÏÆÏÌ)¥€¿Ç� ÏÏ¡ Ê)Ì,Ê,¢ d»Ê,¢Ê,¢¥[ÏÊ,¢¥[ªÆÍž"Ϲö¹ð¥€ˆ¾¥{¾‚áò¥€¿D Ï1¿Æ 0Ú Ž‚¿Æ Ï ØÌØ¡,Æ¥ÍÚË¡Æ Æ ªÆ ¥ÍËÌ߯ Ư„Ìß“¡`Í&¶צPut ͶÆÍ¶¦ : in unit ×Í¶Æ Í¶¥{ž ‚¥c¾‚ÌÊÈÊÅó“�„¡E¥€¿Ì'Æ'¥SÍÆ'צ:ÍÆ'¥{!ÍÆ'Æ0ÍÆ'¥c?ÍÆ'ª(¥€ˆÊ&¢¯ó�¡Î¹¥KÊ&¢¦not proccessed×ϹΥÍÏØ¡Æ ¥ÍËÌß“Æ Æ·�¡ž­ÆÆÙ¨ÆºÅ¡5í¥KÏïŸË¡*ï¤ £Ì Ì àáÄ¡ÆàÀº¡àïÍ"à•Ì ¹öØ¡Ï ­¥" ÝøÀ»¥¥º•»¹î©á Ï©áÏ­3!:WÜ~,¶gÚ²=ž ¶gÄÌ­¶gÚÅÌÛ“$΄=΄?΄¡NÆÛªÆÚªÆÆ�KÇ‘ÍÆÆÍž"ÃÌž"áNƦ׷¡9Í&¶ÆÍ¶ ͶÆÍ¶צ ? ÍÏ“¡ÌžÆÍž"ÏÆ'ز=ƶgÍÆª(²=¶gͲ=ÍžÍ&¶¢º“¡¶²=ƶgÍÆÍ¶£&PÉ¡ÏÛ¡¶צ ...too long <ÍÙ¹F¶צ file nÍ­ „ ˆÆÚªÆÙªÆتÍ&¶ÆÍ¶:ͶÆÍ¶£&ÌÊPÉ¡(ÌÆ¾‚ÊšϹ¶¢º“¡¶¦×ƾƾ‚•Ͷ¦ ame ͹<¶¦ scan string ×͹#¶צ vol name ͹ ¬¹M8!Û¡1Ùá ¶Í ¹¶Í ¶¦ - char. max >×͹¶¦---> ×ͶÆÍ¶Í­4�Ø«ض‹¶Ã�¡ž²צ¯¡žÍ$ϲ¾*á-²Í²¾:á²Í¶²?Ͷ:Í Illegal format×Íž­T<²=¾Ú²=ž Ì­Æݪ¥€éצ¯¡cÍ&¶ÆÍÜö„¡.¶¡¶צ what file͹¶צ¹²¾:á ¶²;Ͷ²Í¶£&PÄ¡¶¦ - ×͹ÏÚÙÏعE̹X¶Ã¥[¦×¯„̹G¶³C‹Ì¹8¶³1‹Ì¹(¶³o* what volͶ¦ ? ×Ͷ¥€éÇÿͶͥ€éÏ ¥€é¾,¥€éž ÌgÊg#Å¡žÆ=¥€éÆjÊgÍÆjªP¥€éÊgÍ¥€éÍô?ÎÆ=¾É�« :Î  ¡ô­Æ£ ÐÆÆ�3Ç‘ÍÆ¥€ÔÍž"ÏÆÏÌÌÝ£ ¶É¡Ý£ ¸¥€¿¶Ï ̶ڕÌÙêÅ¡êÌÆ©ÙÇ‘ÍÌž"ÏÚÙ‚Ì ×Ͷ¦Text file saved ×Íñ“¡ ¶¦& ×Íñ“¡0צCODE²¥ ² Î#¡¶צCode file savedÍ­62Î"϶¶�¡o².Ü¡öÌ¥€¿Çü Ï¥C¦×·¥C¾#ÄëíIJ~ë¤ü„ëÃ�¡jÍ%ëá*¶צPut in Ͷ¥GͶ:Ͷ͹'¶צInsert destination צ¯¡¶צ not named͹2¶¦ Workfile is ×Ͷ²Í¶:Ͷ².Íòñ„“¡¶¦ (not saved)×͹¶¦ No workfile×ÍdiskͶÍÏ¥€¿Çø Ïë‹¡ Í%¶ÍÏ“¡ žØÅ¡Ï ¥¥€¿Íž"ϥϫ ðþ“Ýþ„Ý¢ºÄ¡Ø•Ì©ÇÇ‚©ØÇ�­v˜%¸¸².¦×ª²&¦×ª²¦×ª­(&ÆÆ�.Ç‘Íòñ„“¡9Í&¶צThrow away current workfile ? ÍÏ“¡žð¢Ý¢·ðÿÝÿÄ̹ Û¡ðÿð¢Ï¥©ØÇ‘ÍÌž"ÏØÙË¡ÏÛÆÍ “„¡ðÿÝ¢ÏÚ¶ÃÆÍ �¡ôðÌ/Ý¢Ì0Ê/¢Ê0£ šÊ/¢Ê0¢ž¹ Ø¡¶Íצ*SYSTEM.WRK.TEXT¦×ϡצ*SYSTEM.WRK.CODE¦×ϡצ*SYSTEM.LST.TEXT¦×Ï¡Ì*Æ*².ÍÆ*צ.BACKÍÆ*צº»Ê/¢Ê0¢ ¨Ê0¢ ºÃ²CºÅ„¡ Ê/¢²C¨¥Íž"ÏݢݢÌ/Æ/ð¢ÍÆ/צ:ÍÆ/ð¢ÍÆ/ÏÆÍÆÍ­¥Ütd צTRemoveÏ¡« « Ø¡Í&¶צWorkfile clearedÍÏ&ÆÍ­Tf 'Æ ÝªÆܪÌÌ Æ ²ÍÆ ¦:×ÍÆ ².ÍÆ Æ ÍÆ Ç€ransfer¦To where×Çè ÏÇÿÌÌ¥€ˆ¦×¯ó“„¡=÷H‹¡3¦Transfer×צblocks¦# of blocks to transfer×ÆÏ Î ¹צTransferÆ Ï÷á@̸ÛÌ Æ ².ÍÆ Æ ÍÆ ªÚ²ª¶¡ ¶צ& ͶÆÍ­* Ž)Ï'¦Getצ×Ç� ÏÏ&²¥Gª².¥[Ï¡ ÇÿÌÎ ¹ö¥€éצ¯¡ô­¡ . ªÆÆ�-Ç‘ÍצMake¦×Ç� ÏÏ¡hÆ¥€ÔÍž"ÏÆÏÌ)Ê)Ì*Ê*¢ Ê*£Ê*£•šÆª².¾ÌÚ•ÈÌÍ&Ø“ÌÙÚÅ„¡=².ÆÚ•ÍÆצ.TEXT¯².ÆÚ•ÍÆצ.CODE¯�¡ ².ڕͲ.¾•Ȳ.¦×·„¡:¦.TEXTצText ײÍž"ÏÍ&¶¥GͶ:Ͷ¥[Ͷ¦ made×Ͷͥ€éצ¯¡öÆÍ­˜T¬!Æ ßªÆ Æ�8Ç‘ÍÜšÆ Ì5Æ5¦ *SYSTEM.W&²Î)¸צ.CODEצCode ²²Î)¸ÌÙ¡ö¶¶�“¡Ï&¶צNo Ͷ¦ file loaded×Í­Í (¥€é¥€é¾-¥€éž ÍRK.× ÍÆ5Æ ÍÆ5ÍÆ ÏÌ4Ê4¢Ì5Ê4ý¡=Ê5¢  d»ÝÌ6Æ6².ÍÆ6¦.×ÍÆ6Æ ÍÆ6ªÊ5¢ݪÌÆ ͹ ÌÛšÚÏÆ Í­p ¥€éÍ­ª&+¸¥€é¾-¥€éž ÌÌÛÌÜÝÈ¡%¥€éܾ²z¼‹¡¶ �¥€éܾ‚0•¸Ü‚̹ö¶ŶÚḘ̏¦: \,¶¦%Date ¦#ÆÙªØ“¡ö¥€éÌÆ¥€éÇÿÍÆצ *SYSTEM.WRK.ÇÿÍÆÆÇÿÍÆ¦,×ÇÿÍÆ¥CÇÿÍÆ¦:×ÇÿÍÆ¥[ÇÿÍÆ¦.×ÇÿÍÆÆÇÿÍset: <1..31>--<00..99>×ͶͲCºË¡_¶צ Today is Ͷ²CºÍ ¶-Ͷ¥€•ƲCº�‚ÍÆÍ¶-Í÷áÏ¥ÇöžíïÇìžž"Ïï¤ ¢¥GªíïÇìžž"Ì+¥ž!Ê+ϲ~í¤¥Gª²?¥K¯¶úíÄ¡²?¥Gª²;¥K¯¡²;¥Gª¥K¦×Ì,Æ,¥Æ¦,×ÇÿÍÆªÿ­ ˜$Ì¥[².ª¥G²ª¥C²ªòñ„¡¶Í¶¶�¡ ÏÏ̲.צ·¡EÍ&¶¦Save as ×Ͷ²ÍGÍÆ,¦:×ÍÆ,Ϲ Ï¥€é¦×¯¡îÆÍ­´Ë>˜ÐצRemove¦×Ç€ ÏÌÌÆ ž ¦RemoveׯÏ¡Eô“¡+¥Gï¶:Ͷ².Ͷ¦ ? ×ÍÏÌç“¡צSave asצÇܠϥ[¾•Å¡ Ï¥C²?·¡/¥€éצªÿ¦TEXT×òÎ$¦CODE×ñÎ$¥€é¥€éÞ¤ ¢¦removed×϶£%ßá ÏÍ%Ìß‚ÌÆÆº‚»ÆÞÀ»¹ö© ‹ÆºÅ„¡,Í&¶¦Update directory ? ×ÍÏ¡ÆÏ¥€éצ¯¾ÍÌ"ž².¥[ª²¥GªÍ&ò“¡ö¦TEXTײ&¥ ² Î#¡hñ¡KÌÆצ*ÍÆ².ÍÆ¦.CODE×ÍÆ¦×Ï¡¶¦Old code removed, ¶²C ºÍ ¶Í¶¦ New date ? ×Ͷ¥€éÇÿͶͥ€éÏ Î,¡²CØ»Î+¥€é¾Å¡k¥G¿¥€é¥GžÌÌØÙÈ¡"¥GؾAÄ¥GؾZÈ„²?Ͷ:ͶͶצPrefix is - Ͷ²;Ͷ:Ͷͭ…ºÝ 0Æž Ìצ Zero dir ofצH ÏÏ ¶¡ ¥GØ¥GؾA•a‚¿Ø‚̹öÌ ÌØÙÈ¡$¥€•ÆØ�‚ÍÆ¥G¯¡²Cػ؂̹ôÎ+cÎ,¡²C Ø»ÌÆ²?ÍÆצ:ÍÆ@ Ï÷Ãë¶úÄ¡צDuplicate dir ? ÍÏ¡ ̦ Are thereצblks on the disk×צ# of blocks on the diskÙÆÏ ¶צNew vol name ? Ͷ¥€éÇÿï¤ ¢ ²C¨ëïͶצ The date is Ͷ²CºÍ ¶-Ͷ¥€•ƲCº�‚ÍÆÍ¶-Ͷ²C ºÍ ­ÊÕ6 *¶Í¶Í¥€éÏ ¥€é¥€é¾¾:Ë¥€é¦×·„¡!¥€éÌÆ¥€éÇÿÍÆצ:ÇÿÍÆªÿ¥€éD Ï¶¥GͶצ : correct ? ÍÏ¡öƻƅ,¶£%ö…,Ã�¡PÍ$Í&¶…,Ãô�“¡Ï²~ì¤ü“ô�¡Í%²ƒûͲƒû¥KͲƒû:͸…,¶¡ ¶£%¸…,²ƒûͶ…,‚¸…,­|.ØÙ¥GªÆ ²C¨í¥KÏíÆžž"϶ÆÍ¶צ: zeroedÍ­ºß p1¥ºÅ¡ô¶צFile(s) endangered:ͶÍÌMÌØÙÈ¡•ÌÚ¶…+šڸ…+¶…*Ú‚¸…*ÚŶ„¡B²ƒû¦ < UNUSED >×ͲƒûÚ Í ²ƒû¦× Íö¡ ²ƒûÙÍ ¹ ²ƒûÙÍ ®.­p/ƃûÆ…'Ǒͦl¥ØÀº¡\ïØ¤ ÌØÃ¡¶צ DirectoryͶ¦×͹¶Ú¢Í¶¦×Ú¢¾•Í¶ÚøÍ ¶ÚùÍ ¶Í؂̹ö­¥v °2ïŸDir listing of×צ‘ÇÀ Ï¥€¿¦×·ÌÙ¡Æ糖ö¹ ¥€¿×¦#1:ª(ƃû¥€¿Íž"ÏÙ¡ïÆ¨ƒöÌ….Ì…-Ì…,Ì…+Ì…*Ì…)ï¤ ùÌ…(Ì¥€ˆË¡ZÌï¤ £ÌÚÛÈ¡<ïÚ¤ ùÙøÅ¡+Ø“¡ÙÚš¹ïÚ¤ øÙøÈ¡¥¥º‚»¥ÚÀ»3žÚ‚̹öØ“¡ Ùï¤ £‚š­¦R j3צBad block scan ofצ¯¡ó“ï¤ £ÄÌ« ó¡Î.¹ ¶£%‚Ì…,Ú“¡ðצListÆ…-Ï¡ò²~ì¤üô“„¡$Ê….á϶¦Writing×͹¶.ÍÊ….‚Ì….ïÊ…-¤ Ì…/צH Ï¦Scan for×צblocks¦Scan for how many blocks×ÆÏ ÌÌØÜ•ÌÛêÅ¡êÌë©ÇÛ�Üžž"Ë¡`ÜÌÜÛ‚•ÌÚÝÈ¡Që©ÇÚžïÊ…-•¤ ùÊ…/øÎ/Ê…/ùÊ…/ø•Ì…)Ê…(Ê…)‚Ì…(ƃûÊ…/¢ÍƃûצÊ…/¢¾•‚ÍƃûÊ…)Í ÆƒûÊ…/¢ ºÍ ƃû-Íƃû¥€•Æ…0Ê…/¢ º�‚ÍÆž"Ë¡9Ù‚ÌÆÏ3¶צBlock ͶÚÍ ¶צ is badͶÍڂ̹öÜÛ‚ÌÜØÄ¡ô¶ÙÍ ¶צ bad blocksͶÍÏ2­±‰ …0Íƃû-ÍƃûÊ…/¢  ºÍ Ø¡öö¡QƃûÊ…/øÍ ƃûÊ…/£ Í Æƒû¦×Íƃû¥€®Æ…0Ê…/¢º�‚ÍÆ…0Íƃû¦file×͹3ƃûÊ…/øÍ Æ 4צExamine blocks onצH ÏÍ&¶¦Block-range ? ×ͶÆSÍ ¶Í ¡ÊSÌR¹¶ÆRÍ ¶Í “¡¶ÍÊR€ÌRïŸË¡ÊRïƒû Íƃû¥€®Æ…0Ê…/¢º�‚ÍÆ…0ÍÎ.¹ô© ‹Ú�¡ìó¡îïÊ…-¤ ùï¤ ÿÎ/ƃûÊ….Í Æƒû/Íƃûï¤ £Í ƃû¦ files×Íö¡;ƃûצ, ÍƃûÊ…(Í Æƒû¦ blocks used×Íƃû¦, ×ÍƃûÊ…*Í Æƒû¦ unused×Íƃûצ, ÍƃûÊ…+Í Æƒûצ in largestž ÌT ‘ÌUÊSÌVÊRÌ‚dÊVÊ‚dÈ¡ò¶צBlock ͶÊVÍ ëÆ�dÇÊVžëÆ�dÇÊVžž"á ëÆdÇÊVžž"ÃÆ�dÆd¯ �„¡¶¦ may be ok×Íž"ÏÙ¡Æž ƃûÍƃûÍž"ÏƃûÍ­ , ŠŽ N-¶Í¶¦ Vols on-line:×Ͷͫ ÌëØÈ¡ ëž&ë‚«¹ö¥G¥Í¶Í¹z¶¦ is bad×Í¶ÍÆVÏ3ïŸË¡YÊVï¤ ùÅ¡OÊU‚ÊVË¡9Ƥ¢Æ¤ù‚šÊT‚ÌTÊTM¥º‚ï¤ £•Å¡ÏÆÊT¤¢ÊVšÆÊT¤ÊÍ«« ÌëØÈ¡R²~ë¤ÌÙצ·¡;¶ëÍ Ùü¡¶צ # ͹ ¶¦×ͶÙͶ:ͶÍë‚«¹ô¶צRoot vol is - ͶVšÊVÌUÊV‚ÌV¹ôƤùá5žÏ2¶¦Mark bad blocks ?×Í¥ºÅ¡$¶צ (files will be removed !)Ͷצ (Y/N) ÍÏ“¡ ¯¡V϶¦Warning units ×ͶÙÍ ¶¦ & ×ͶØÍ ¶צ have the same nameÍÏØ‚̹òق̹ðî¹ìÏ-¹êÏ-¹êÏ(¹êÏ'¹êϹêϹêϹêÏ"¡Ï¹êצPrefix titles by¦×l Ï²;¥GªÍ&¶¦ Prefix is ×Ͷ²;Ͷ:͹`Ï%¹\Ï!¹XÏ0¹TÏ4¹PÏ1¹LÏ5¹HÏ6 {Graphics Editor. V01-06. 3-March-79}  %{TERAK CORPORATION believes that the information contained herein is %accurate. I¹DÏ*¹@ž¹:¬ÏBZ¹2"˜ª ©(½@³œ,²¬²(NXF0N­>äw\­¢ ÄÆÆ�GǑͶ“¶²&צSYSTEM.n no event will TERAK be liable for any losses or damages, %whether direct or indirect, resulting from the use of such %informž¥ÏÆY»ÇÌbÆc²C¨ÆZ¦ BAD.xxxxx.BADתÌVƤùÌ‚dÊVÊ‚dÈ¡êÆÊV¤Ì‚eÊ‚eùÌWÊ‚eø‚ÌXÌTÌ‚fÊTÊ‚fÄ¡1ÆZ ÊT•Ê‚eù²oÊT¤ø†0‚¿ÊWRK.TEXT·„�« ¶“¶²צSYSTEM.WRK.CODE·„�« ¶£&PĶ¢º“„«¥ž «¥Çžê‚«ž(ÇìÇì‚ÇD‚ǂɞ(Å„ê?Ã�¡ö¥€•צ0???JanF‚e¢Ê‚eù²oÊT¤øŽšÊT•ÌT¹ðï¤ £ÌTÊWïÊT¤ ùÉ¡ÊT•ÌT¹îÆWÊT‚ïÍ#ÊV‚ÌV¹ìÏ ¶צBad blocks markedÍ­­H‹`]ÀÌt5ï¶ebMarAprMayJunJulAugSepOctNovDec?????????ª0¥€®×¦ Bad CodeTextInfoDataGrafFotoª β~ì¤ü¡¥Í¹¥Í¡ôÆÍÁ×%°Ì ¤ ÌÛ¢ºË¡ô¶¦Moving ×Ͷ²Í¶Û¢Í¶ÍÛ¢צ SYSTEM.PASCAL¯¡ ¥G²?¯¸ ÙøÚø•¸ ¸¶ ¶•¸¶€êÅ¡ ê¶¶"ðŠ0� & – L  (žÚ*Œ&̼br ®B\¼( þ Ô"&`'"&’#4#¶)ì)Š'D+®*²,H-Ö-*.ö.\/¬/x0Ò0ì01B1Z1h5Ü5”p8¹LÏ5¹HÏ6€†�¸ë©Ç¶€�Úø¶‚¶ ¶�‚žž"Ïë©Ç¶€�Øø¶‚¶ ¶�‚žž"϶¶‚¸¶€¶ €Ä¡öÙØø¶ ‚šÚØøšÏ ­Œ þ7צCrunch¦×@ ÏצFrom end of disk, blockצ¦Starting at block #×ï¤ ùÆ Ï Æ Ï3Ì ¶¢»Í%Ì ¶ÍƦforward ת Ì à•ÌáåÈ¡'ïᤠÌæøïᕤ ùÅ¡ææ¢ïᕤ ¢Î7á‚Ì ¹öï¤ ÿÌÌ Æצback ª ï¤ £Ì àÌáåÄ¡ïᤠÌæùßÉ¡æ¢æÆÎ7æøÌá•Ì ¹ô¶¥GÍO^3ž¥ ¶¦ : crunched×ͶÍä¡#¶צPlease re-bootͶ͡¹ò¶¢»­Ã{Ê X6ÆتP²FƪPÍ'¶“Í)«î³ ß¼x€‹¸­¦R88Ï¥€é¦×ªÿÌö¡VצOFiler: G(et, S(ave, W(hat, N(ew, L(dir, R(em, C(hng, T(rans, D(ate, Q(uit [C.4]Î8¹+צ&Filer: G, S, N, L, R, C, T, D, Q [C.4]Î8î?áöö¡V¦OFiler: B(ad-blks, E(xt-dir, K(rnch, M(ake, P(refix, V(ols, X(amine, Z(ero [C.4]×Î8¹+¦&Filer: W, B, E, K, M, P, V, X, Z [C.4]×Î8Ú¡ôÍ$Í&î³B‹¡Í%Ì ÌÙÛÈ¡î²~Ù¤Ìܦ׷¡uÙ‚Ì ÌØÝÈ¡hܲ~ؤ OOLEAN); $1: (C: PACKED ARRAY [0..9599] OF CHAR); $2: (D: PACKED RECORD ,PIX: PACKED ARRAY [0..9599] OF CHAR; ,X,Y:INTEGER {INPUT NUMBER} "RANGE,TIME: INTEGER; "XBAR,YBAR: INTEGER; "GEN: GENMAP; {CHA; {CURSOR LOC'N} ,MARK: PACKED ARRAY ['A'..'Z'] OF RECORD {MARK ARRAY} 2X: INTEGER; 2Y: INTEGER 2END; " ANGLE: INRACTER GENERATOR} CCH,NUL: CHAR; {COMMAND CHARACTER} SKIP,DELFLG,TWIST: BOOLEAN; TEGER; ,PEN: INKCOLORS END); %3: (Q: PACKED ARRAY[0..4863] OF INTEGER); {19 BLKS FOR BLK I/O} " 4: (S: PACKED ARRAY[0..4799 COMPAT: PACKED ARRAY [0..0] OF CHAR;  XMRKNBL,YMRKNBL: BOOLEAN; "EML: EMLCS; {SY] OF SET OF SIXTEEN) {SET CASE FOR OVERLAYS} "END; {TERAKSCREEN} (  SCANLINE=RECORD CASE BOOLEAN OF (TRUE: (C: CHAR); (FANC BIT IS IN EMLCS} "S: STRING; "PHYLE: FILE;   PROCEDURE DRAWLINE(VAR RADAR:INTEGER; VAR S:TLSE:(B: PACKED ARRAY [0..7] OF BOOLEAN) {8 DOTS PER LINE} "END; {SCANLINE} " "CHARSET=ARRAY [0..255] OF {CHARACTERAKSCREEN; 8ROW, X0, Y0, DX, DY, PEN: INTEGER); EXTERNAL;  PROCEDURE GIVEHELP;  PROCEDURE PARTONE; "BEGIN "WRITELN(' ER CODE} (PACKED ARRAY [0..15] OF CHAR; {SCAN LINE} " "GENMAP=RECORD CASE BOOLEAN OF /TRUE: (ADR: INTEGER); /FALSE: (BFR *-----PENSTATE COMMANDS-------------*------ANGLES---------*'); "WRITELN(' | U)p draw ghost lines/dots | 90ation, including, without limitation, losses arising from %claims of patent, copyright, and trademark infringement. No license : ^CHARSET) -END; "SYNCBIT=PACKED RECORD 0JUNQUE: 0..2047; 0SYNC: BOOLEAN -END; "EMLCS=RECORD CASE BOOLEAN OF %is granted hereby for the use of any patent or patent rights of %TERAK. TERAK reserves the right to update the information co*TRUE: (ADR: INTEGER); *FALSE:(REG: ^SYNCBIT) *END;   VAR {** GLOBAL DATA **} "Z: BOOLEAN; {SELECTS ONE OF TWO PIntained %herein at any time without further notice. % %The information contained herein is proprietary to TERAK CORPORATION CTURES} "{** IMPURE DATA **} {picture dependent} "X: ARRAY[BOOLEAN]OF INTEGER; {CURSOR X POSITION 0..319} Y: %and must be treated as confidential. It may not be disclosed to %others or used for any purpose except as expressly consente ARRAY[BOOLEAN]OF INTEGER; {CURSOR Y POSITION 0..239} ANGLE: ARRAY[BOOLEAN]OF INTEGER; {HEADING ORIENTATION 0.d to by %TERAK. 7COPYRIGHT 1980 BY TERAK CORPORATION >"ALL RIGHTS RESERVED"} > PROGRAM GREDIT;  {$S+}  {$L-}  {$R-} {$I-.359} INK: ARRAY[BOOLEAN]OF INKCOLORS; {PEN STATUS} SCREEN: ARRAY[BOOLEAN]OF TERAKSCREEN; {THE GRAPHIC UN} CONST  FF=12; CR=13; ETX=3; ESC=27; BS=8; SP=32; LF=10; TAB=9;  TYPE INKCOLORS=(INVISIBLE, WHITE, BLACK, COMPLEMENT); IVERSE} "MARK: ARRAY[BOOLEAN]OF PACKED ARRAY ['A'..'Z'] OF RECORD -X: INTEGER; {BOTH X&Y=32767->INVALID AS X,Y PAIR} -Y: I"FIVE=0..4; "SIXTEEN=0..15; " "TERAKSCREEN=RECORD CASE FIVE OF $0: (B: PACKED ARRAY [0..239] OF PACKED ARRAY [0..319] OF BNTEGER {X=32767 BUT Y<32767->VALID NUMBER} +END; {** PURE DATA **} {picture independent} "NUMBER, HOLD: INTEGER;  "WRITELN(' | J)ump to relative X,Y location | : : |'); "WRITELN(' | L)eap to absolute X,Y locatio Z THEN NZ:=FALSE ELSE NZ:=TRUE END;   PROCEDURE DETWIST;  BEGIN IF TWIST THEN WRITE('No '); WRITELN('Twist'); "TWIST:=NOT n |-160,0 0,0 159,0 |'); "WRITELN(' | H)ead to absolute angle for Move | : : |'); "WRITELN(' TWIST; DELFLG:=FALSE; END;   FUNCTION INSIDE(A,B,C:INTEGER):INTEGER; BEGIN IF BC THEN INSIDE:=C ELSE INS | P)olygon generator B)ox generator |-160,-119...159,-119 |'); "WRITELN(' | W)alk blocks ^)rrowhead generator *---LETTEREIDE:=B END {INSIDE};  PROCEDURE BLINK; {BLINK CURSOR UNTIL SOMETHING IS TYPED}  VAR CRSBIT:BOOLEAN; D MEMORY---*'); "WRITELN(' | S)egment circle generator | R)emember V)erify |'); "END; "PROCEDURE PARTTWO; "BE BEGIN WITH SCREEN[Z] DO BEGIN "CRSBIT:=B[Y[Z],X[Z]]; "TIME:=0; {TIME RETURNS ELAPSED TIME} "REPEAT $REPEAT UNTIL EML.REG^.GIN "WRITELN(' *-----CONTROL COMMANDS--------------* F)orget cursor,nmbrs|'); "WRITELN(' | N)ew pix & letters Z)ap SYNC; {MS BIT=1 ... VERT RETRACE} $IF TIME<10000 THEN TIME:=TIME+1 ELSE TIME:=TIME-8; $IF TIME MOD 8=0 THEN B[Y[Z],X[Z]]:=TRUEpix only *-----SINGLE DOTS-----*'); "WRITELN(' | A)scii character pattern entry | Period key sets dot |'); WRITELN(' ; " IF ((TIME MOD 8=2)AND(NOT CRSBIT)OR(TIME MOD 8=5)AND(CRSBIT)) $ THEN B[Y[Z],X[Z]]:=FALSE; "UNTIL NOT UNITBUSY(2); B[Y[Z] | I)dentify cursor, and states | Comma key clears dot|'); "WRITELN(' | X)change with alternate picture *----CU,X[Z]]:=CRSBIT;  END END; {BLINK}   PROCEDURE HANG(WAITTIME:INTEGER);  BEGIN "REPEAT $REPEAT UNTIL EML.REG^.SYNC; {MS BITRSOR MOTION----*'); "WRITELN(' | K)ombine alt pix into this pix | \ twists 45 degrees.|'); =1 ... VERT RETRACE} $WAITTIME:=WAITTIME-1; "UNTIL (WAITTIME<0) OR (NOT UNITBUSY(2)); END;   PROCEDURE GETCCH;  BEGIN "IF"WRITELN(' | ete, alter massive areas | Cursor arrows move |'); "WRITELN(' | O)utput picture into disk fil NOT SKIP THEN UNITREAD (2,COMPAT[0],1,,1); "BLINK; SKIP:=FALSE; CCH:=COMPAT[0]; "IF CCH IN ['a'..CHR(127)] THEN CCH:=CHR(ORD( |'); "WRITELN(' | D)own draw solid lines/dots | | |'); "WRITELN(' | E)raser drawe | cursor per penstate,|'); "WRITELN(' | G)et picture from disk file Q)uit | twist, & repetition.|'); "WRITE ('  clear lines/dots | 180 --*-- 0,360 |'); "WRITELN(' | C)omplement reversing lines/dots | | |');  *-----------------------------------*---------------------*'); "WRITE (' to cont'); "END;  BEGIN  UNITWRITE (3,SCREEN"WRITELN(' *-----MOTION COMMANDS---------------* 270 |'); "WRITELN(' | M)ove relative to cursor @hea[Z].C[0],7);(*GRAPHICS OFF*)WRITE (CHR(FF));(*CLEARSCREEN*)  PARTONE;PARTTWO;  REPEAT UNITREAD (2, COMPAT[0], 1); CCH := COMding *------RANGES---------*'); "WRITELN(' | T)urn heading by relative angle |-160,120.....159,120 |'); PAT[0] UNTIL CCH = ' ';  WRITE(CHR(FF)); UNITWRITE(3,SCREEN[Z].C[0],63); END (*GIVEHELP*);  FUNCTION NZ:BOOLEAN;  BEGIN IF  SURE? '); GETCCH; RUSURE:=(CCH='Y'); WRITELN(CCH); CCH:=NUL  END; {RUSURE}   PROCEDURE CHKPEN; {IF PEN UP, PUT IT DOWN} CCH].Y; ECHO; CCH:='m' END; "UNTIL CCH='m'; "XMRKNBL:=FALSE; YMRKNBL:=FALSE; IF NEGATORY THEN NUMBER:=-NUMBER; END {GETNUMBER} BEGIN IF INK[Z]=INVISIBLE THEN "BEGIN INK[Z]:=WHITE; WRITELN ('*PEN DOWN*') END  END;   PROCEDURE SHOWCURSOR(IX,IY:INTEGE;  PROCEDURE POLYGON; VAR STEP,SIZE:INTEGER; XX:REAL; BEGIN CHKPEN; WRITE ('Polygon angle: '); GETNUMBER; STEP:=NUMBER; R); VAR I,J,K:INTEGER;  BEGIN WITH SCREEN[Z] DO BEGIN "B[IY,IX]:=NOT B[IY,IX]; "FOR K:=0 TO 999 DO IF K MOD 100=0 THEN $FOR WRITE (' Side: '); GETNUMBER; SIZE:=NUMBER; WRITE (' Increment: '); GETNUMBER; WRITE(' Type anything to stop...'); UNI:=INSIDE (0, IX-2, 319) TO INSIDE (0, IX+2, 319) DO &FOR J:=INSIDE (0, IY-2, 239) TO INSIDE (0, IY+2, 239) DO (B[J,I]:=NOT B[ITREAD (2,COMPAT[0],1,,1); {ASYNCH I/O} REPEAT XX:=ANGLE[Z]*0.0174533; {COMMON EXPRESSION} J,I]; "B[IY,IX]:=NOT B[IY,IX];  END END {SHOWCURSOR}; PROCEDURE DRAW (NEWX,NEWY:INTEGER); VAR XDIFF,YDIFF: INTEGER; BEGIN {DR DRAW (X[Z] + ROUND(SIZE*COS (XX)),Y[Z]-ROUND(SIZE*SIN (XX))); SIZE:=SIZE + NUMBER; ANGLE[Z]:=(ANGLE[Z] + STEP) MOD 360;AW} NEWX:=INSIDE (0, NEWX, 319); NEWY:=INSIDE (0, NEWY, 239); IF INK[Z] <> INVISIBLE THEN BEGIN XDIFF:=NEWX-X[Z];  UNTIL NOT UNITBUSY (2); WRITELN;  END {POLYGON};   PROCEDURE CURSE(I,J:INTEGER);  VAR OLDCCH:CHAR; REP,XX,YY:INTEGER; YDIFF:=NEWY-Y[Z]; &DRAWLINE(RANGE,SCREEN[Z],20,X[Z],Y[Z],XDIFF,YDIFF,ORD(INK[Z])) END; X[Z]:=NEWX; Y[Z]:=NEWY; END {DRAW}; P BEGIN "OLDCCH:=CCH; REP:=0; "REPEAT $REPEAT XX:=X[Z]+I; YY:=Y[Z]+J; IF DELFLG THEN DRAW(XBAR,YBAR); &DRAW(XX,YY); REP:=REPROCEDURE GETNUMBER; VAR NEGATORY:BOOLEAN; COUNT:INTEGER;  PROCEDURE ECHO; BEGIN WRITE(CCH); COUNT:=COUNT+1; END;  BEGIN NUMB-1; UNTIL REP<=0; $GETCCH; IF TIME<15 THEN REP:=5; IF TIME<10 THEN REP:=10; "UNTIL CCH<>OLDCCH;{CURSE} "DELFLG:=FALSE; SKIP:=ER:=0; COUNT:=0; "REPEAT "GETCCH; "IF COUNT=0 THEN BEGIN $IF CCH='-' THEN BEGIN NEGATORY:=TRUE; ECHO END TRUE;  END;   PROCEDURE DELETE;  BEGIN "XBAR:=X[Z]; YBAR:=Y[Z];  IF INK[Z]=INVISIBLE THEN BEGIN INK[Z]:=BLACK; SCREEN[Z1ELSE NEGATORY:=FALSE; END; "IF (CCH>='0') AND (CCH<='9') THEN $BEGIN NUMBER:=10*NUMBER+ORD(CCH)-ORD('0'); ECHO; END; "IF (C].B[YBAR,XBAR]:=FALSE; "WRITELN ('*ERASER*') END; WRITELN('Delete... Use Cursor Keys to move'); "REPEAT DELFLG:=TRUE; GETCCH; OUNT>0) AND (CCH='h') THEN $BEGIN WRITE(CHR(BS),' ',CHR(BS)); NUMBER:=NUMBER DIV 10; $COUNT:=COUNT-1; END; "IF (CCH>='A')AND($CASE CCH OF &'\': DETWIST; &'z': IF TWIST THEN CURSE(-1,-1) ELSE CURSE(0,-1); &'l': IF TWIST THEN CURSE(1,1) ELSE CURSE(CCH<='Z') THEN $IF (MARK[Z,CCH].X<>32767) THEN &BEGIN &IF XMRKNBL THEN BEGIN NUMBER:=MARK[Z,CCH].X; ECHO; CCH:='m' END; &IF 0,1); &'w': IF TWIST THEN CURSE(-1,1) ELSE CURSE(-1,0); &'k': IF TWIST THEN CURSE(1,-1) ELSE CURSE(1,0) $END; CCH)-32); "IF CCH IN [CHR(0)..CHR(31)] THEN CCH:=CHR(ORD(CCH)+96); END;  FUNCTION RUSURE:BOOLEAN;  BEGIN "WRITE(' ARE YOUYMRKNBL THEN BEGIN NUMBER:=MARK[Z,CCH].Y; ECHO; CCH:='m' END $ END ELSE $IF MARK[Z,CCH].Y<>32767 THEN &BEGIN NUMBER:=MARK[Z,  END END; & PROCEDURE SIRCLE;  VAR ALPHA,ALPHAINC,ALPHAEND,XORG,YORG:REAL; I,J:INTEGER;  BEGIN WITH SCREEN[Z] DO BEGIN WRIT"DRAW(X[Z]+ROUND(SIZ*COS(ALPHA+BETA)),Y[Z]-ROUND(SIZ*SIN(ALPHA+BETA))); "X[Z]:=HOMEX; Y[Z]:=HOMEY; "DRAW(X[Z]+ROUND(SIZ*COS(AE('Segment radius: '); GETNUMBER; HOLD:=NUMBER; "WRITE(' units Angle: '); GETNUMBER; WRITELN(' degrees'); "{ HOLD == RADIUS LPHA-BETA)),Y[Z]-ROUND(SIZ*SIN(ALPHA-BETA))); "X[Z]:=HOMEX; Y[Z]:=HOMEY  END; "  PROCEDURE ARROW(SIZE:INTEGER);  BEGIN "AL"UNTIL DELFLG; "DELFLG:=FALSE; SKIP:=TRUE  END;    PROCEDURE ASCII;  VAR I,J,L,ALTSET:INTEGER; K:PACKED ARRAY[0..9] OF  NUMBER == ANGLE } "IF HOLD>0 THEN ALPHA:=90 ELSE ALPHA:=-90; {DELTA HEADING TO CENTER} "ALPHA:=(ANGLE[Z]+ALPHA)*0.0174533; SCANLINE;  BEGIN WITH SCREEN[Z] DO BEGIN "ALTSET:=0; "WRITELN('Ascii... swaps set lowers case terminates'); {CALC HEADING TO CENTER} "IF NUMBER<0 THEN ANGLE[Z]:=(ANGLE[Z]+180)MOD 360;{NEG ANGLE->REVERSE START} "HOLD:=ABS(HOLD);XORG:=X"REPEAT $UNITREAD (2,COMPAT[0],1,,1); BLINK; CCH:=COMPAT[0]; $IF CCH IN [' '..CHR(127)] THEN $BEGIN &REPEAT UNTIL EML.REG^.[Z]+HOLD*COS(ALPHA); YORG:=Y[Z]-HOLD*SIN(ALPHA); "IF HOLD<>0 THEN "BEGIN SYNC; {MS BIT=1 ... VERT RETRACE} &UNITWRITE(3,SCREEN[Z].C[0],447); {GEN NBL, SAME ZONES, CLICK!} &FOR J:=0 TO 9 DO K[J].C:=GE$ALPHAINC:=1/HOLD; IF NUMBER<0 THEN ALPHAINC:=-ALPHAINC; $J:=ABS(ROUND(NUMBER*0.0174533*HOLD)); $WHILE J>=0 DO &BEGIN (Y[Z]N.BFR^[ORD(CCH)+ALTSET,J]; {MINIMIZE SNOW} &UNITWRITE(3,SCREEN[Z].C[0],63); {BACK TO CHARACTER PAGE} &WRITE(CCH); {SAFE TO ECH:=INSIDE(0,ROUND(YORG+HOLD*SIN(ALPHA)),239); (X[Z]:=INSIDE(0,ROUND(XORG-HOLD*COS(ALPHA)),319); (CASE INK[Z] OF *WHITE: B[Y[ZO NOW} &FOR J:=INSIDE(0,Y[Z]-9,239) TO Y[Z] DO &BEGIN (L:=J-Y[Z]+9; (FOR I:=X[Z] TO INSIDE(0,X[Z]+7,319) DO (CASE INK[Z] OF],X[Z]]:=TRUE; *BLACK: B[Y[Z],X[Z]]:=FALSE; *COMPLEMENT: B[Y[Z],X[Z]]:=NOT B[Y[Z],X[Z]] (END; 'J:=J-1; ALPHA:=ALPHA+ALPHAIN *INVISIBLE: B[J,I]:=K[L].B[I-X[Z]]; *WHITE: IF K[L].B[I-X[Z]] THEN B[J,I]:=TRUE; *BLACK: IF K[L].B[I-X[Z]] THEN B[J,I]:=FALSC; &END; END; "ANGLE[Z]:=(ANGLE[Z]+NUMBER+360)MOD 360;  END END;   PROCEDURE ARROWHD;  VAR ALPHA:REAL;  PROCEDURE VECTE; *COMPLEMENT: IF K[L].B[I-X[Z]] THEN 6B[J,I]:=NOT B[J,I] (END; &END; &X[Z]:=INSIDE(0,X[Z]+8,319) $END ELSE OR(SIZ:INTEGER;BETA:REAL);  VAR "HOMEX,HOMEY:INTEGER;  BEGIN "HOMEX:=X[Z]; HOMEY:=Y[Z]; $CASE ORD(CCH) OF &ESC: IF ALTSET=0 THEN ALTSET:=128 ELSE ALTSET:=0; &CR: BEGIN WRITELN; X[Z]:=0; Y[Z]:=INSIDE(0,Y[Z]+10,239) END; &BS: X[Z]:=INSIDE(0,X[Z]-8,319); &LF: Y[Z]:=INSIDE(0,Y[Z]+10,239); &26: Y[Z]:=INSIDE(0,Y[Z]-10,239); &12: Y[Z]:=INSIDE(0,Y[Z]+10,239); &23: X[Z]:=INSIDE(0,X[Z]-8,319); &11: X[Z]:=INSIDE(0,X[Z]+8,319) " END; "UNTIL CCH=CHR(ETX);  WRITELN  E CCH OF "'A',' ': BEGIN WRITE('Angle: '); GETNUMBER; WRITE(' degrees.'); 1ANGLE[Z]:=NUMBER MOD 360 END; "'L': BEGIN WRITE(' TX+U THEN "WITH SCREEN[Z] DO CASE INK[Z] OF $INVISIBLE: B[TGTY+V,TGTX+U]:=B[SRCY+V,SRCX+U]; Heading to absolute X: '); XMRKNBL:=TRUE; GETNUMBER; /HOLD:=NUMBER-X[Z]+160; WRITE(' Y: '); YMRKNBL:=TRUE; GETNUMBER; /NUMBER$WHITE: IF B[SRCY+V,SRCX+U] THEN B[TGTY+V,TGTX+U]:=TRUE; $BLACK: IF B[SRCY+V,SRCX+U] THEN B[TGTY+V,TGTX+U]:=FALSE; $COMPLEMEN:=NUMBER+Y[Z]-120; /IF HOLD=0 THEN IF NUMBER>=0 THEN NUMBER:=90 ELSE NUMBER:=-90 /ELSE NUMBER:=ROUND(ATAN(NUMBER/ABS(HOLD))/0.T: IF B[SRCY+V,SRCX+U] THEN B[TGTY+V,TGTX+U]:=NOT B[TGTY+V,TGTX+U] "END;  END;   BEGIN WRITE ('Walk block area of Width: ')0174533); /IF HOLD<0 THEN NUMBER:=180-NUMBER; ANGLE[Z]:=NUMBER MOD 360 END "END;  WRITELN; CCH:=NUL  END;   PROCEDURE M; XMRKNBL:=TRUE; GETNUMBER;  W:=NUMBER; WRITE(' units Height: '); YMRKNBL:=TRUE; GETNUMBER; H:=NUMBER;  WRITELN(' units'); WOVE;  BEGIN "WRITE ('Move along heading: '); GETNUMBER; WRITELN (' units.'); "DRAW (X[Z] + ROUND(NUMBER*COS (ANGLE[Z]*0.01745RITE('Motion: M)ove, J)ump, L)eap: '); GETCCH;  CASE CCH OF "'M':BEGIN (WRITE ('Move along heading: '); GETNUMBER; WRITELN ('PHA:=((ANGLE[Z]+180) MOD 360)*0.017453; "VECTOR(SIZE,0.78); SIZE:=(SIZE DIV 2)+1; "VECTOR(SIZE,0.46); VECTOR(SIZE,0.16)  END;33)), (Y[Z]-ROUND(NUMBER*SIN (ANGLE[Z]*0.0174533)));  END;   PROCEDURE LEAP;    BEGIN CHKPEN; WRITE('Arrowhead: S)mall, M)edium, L)arge or X)tra large: '); "GETCCH; "CASE CCH OF $'S',' ': BEGIN WRI BEGIN WRITE ('Leap to absolute X: '); XMRKNBL:=TRUE; GETNUMBER; "HOLD:=NUMBER; WRITE(' Y: '); YMRKNBL:=TRUE; GETNUMBER; "DRTE('Small'); ARROW(3) END; $'M': BEGIN WRITE('Medium'); ARROW(4) END; $'L': BEGIN WRITE('Large'); ARROW(5) END; " 'X': BEGINAW (INSIDE(0,HOLD+160,319),INSIDE(0,120-NUMBER,239)); "WRITELN  END;   PROCEDURE JUMP;  BEGIN WRITE ('Jump to relative X:  WRITE('Xtra large'); ARROW(7) END "END;  WRITELN; CCH:=NUL  END; &  PROCEDURE BOX;  VAR XX:REAL;  PROCEDURE SIDE(SIZE:'); XMRKNBL:=TRUE; GETNUMBER; "HOLD:=NUMBER; WRITE(' Y: '); YMRKNBL:=TRUE; GETNUMBER; "DRAW (INSIDE(0,X[Z]+HOLD,319),INSIDE(0INTEGER);  BEGIN "DRAW(X[Z]+ROUND(SIZE*COS(XX)),Y[Z]-ROUND(SIZE*SIN(XX))); "XX:=XX+1.5707963;  END;  BEGIN CHKPEN; WRITE(,Y[Z]-NUMBER,239)); "WRITELN  END;   PROCEDURE WALK;  VAR H,W,SRCX,SRCY,U,V:INTEGER;  PROCEDURE BLOK(TGTX,TGTY:INTEGER); 'Box Width: '); XMRKNBL:=TRUE; GETNUMBER; HOLD:=NUMBER;  BEGIN "IF W<0 THEN BEGIN SRCX:=INSIDE(0,X[Z]+W,319); W:=X[Z]-SRCX; TGTX:=TGTX-W END )ELSE BEGIN SRCX:=X[Z]; W:=INSIDE(0,X[Z]"WRITE(' units Height: '); YMRKNBL:=TRUE; GETNUMBER; WRITELN(' units'); "XX:=ANGLE[Z]*0.0174533; "SIDE(HOLD); SIDE(NUMBER); +W,319)-X[Z] END; "IF H>0 THEN BEGIN SRCY:=INSIDE(0,Y[Z]-H,239); H:=Y[Z]-SRCY; TGTY:=TGTY-H END )ELSE BEGIN SRCY:=Y[Z]; H:=INSSIDE(HOLD); SIDE(NUMBER);  END;   PROCEDURE HEADING;  BEGIN WRITE('Heading: Set by A)ngle or L)ocation: '); "GETCCH; "CASIDE(0,Y[Z]-H,239)-Y[Z] END; "FOR V:=0 TO H DO IF INSIDE(0,TGTY+V,239)=TGTY+V THEN "FOR U:=0 TO W DO IF INSIDE(0,TGTX+U,319)=TG   END;  BEGIN "WRITE('Remember L)ocation or N)umber: '); "GETCCH; "CASE CCH OF "'L',' ': BEGIN ,WRITE ('Location of cur); "X[Z]:=160; Y[Z]:=120; ANGLE[Z]:=0; INK[Z]:=INVISIBLE; TWIST:=FALSE; END {INITIALIZE}; $  FUNCTION GETFILENAME:BOOLEAN; {Isor as letter: '); GETLTR; ,MARK[Z,CCH].X:=X[Z]-160; MARK[Z,CCH].Y:=120-Y[Z]; ,END; "'N': BEGIN )WRITE ('Number: '); GETNF TRUE, FILE NAME IS IN STRING S}  BEGIN "WRITE (' what filename: '); READLN(S); GETFILENAME:=FALSE; UMBER; WRITE (' as letter: '); )GETLTR; MARK[Z,CCH].X:=32767; MARK[Z,CCH].Y:=NUMBER; )END "END; {CASE} "WRITELN; CCH:=NUL; "IF LENGTH(S)>0 THEN BEGIN $IF POS('.FOTO',S)=0 THEN S:=CONCAT(S,'.FOTO'); $IF (LENGTH(S)>14) THEN WRITELN('*Ill filename*')  END; "  PROCEDURE IDENTIFY;  BEGIN "WRITE ('Identify cursor at (',X[Z]-160,',',120-Y[Z], )') Heading is ',ANGLE[Z],' degre6ELSE GETFILENAME:=TRUE END;  END;   PROCEDURE LOADDATA;  BEGIN WITH SCREEN[Z] DO BEGIN "X[Z]:=D.X; Y[Z]:=D.Y; MARK[Z]:=Des. Pen is '); "CASE INK[Z] OF $BLACK: WRITE('eraser.'); $WHITE: WRITE('down.'); $INVISIBLE: WRITE('up.'); $COMPLEMENT: WRI.MARK; "ANGLE[Z]:=D.ANGLE; INK[Z]:=D.PEN  END END;   PROCEDURE GET; {LOAD INPUT FILE}  BEGIN "WRITE('Get new screen from'TE('complementer.') "END; "WRITE(' Pix is '); "CASE Z OF $FALSE: WRITELN('A'); $TRUE: WRITELN('B') "END; "SHOWCURSOR(X[Z]); "IF GETFILENAME THEN "BEGIN $OPENOLD(PHYLE,S); $IF BLOCKREAD(PHYLE,SCREEN[Z].Q[0],19)=19 &THEN BEGIN LOADDATA; CLOSE(PHY,Y[Z]);  END;   PROCEDURE VERIFY;  PROCEDURE VERYFY;  BEGIN "IF MARK[Z,CCH].X<>32767 THEN $BEGIN LE) END &ELSE BEGIN WRITELN('*FILE READ ERROR*'); HANG(180) END; "END;  END;   PROCEDURE DUMPDATA;  BEGIN WITH SCREEN[Z] &WRITELN(CCH,' at (',MARK[Z,CCH].X,',',MARK[Z,CCH].Y,')'); &SHOWCURSOR(MARK[Z,CCH].X+160,120-MARK[Z,CCH].Y); $END ELSE &IF MDO BEGIN "D.X:=X[Z]; D.Y:=Y[Z]; D.MARK:=MARK[Z]; D.ANGLE:=ANGLE[Z]; D.PEN:=INK[Z]  END END;   PROCEDURE OUTPUT; {WRITE OUT  units.'); (BLOK (X[Z] + ROUND(NUMBER*COS (ANGLE[Z]*0.0174533)), (Y[Z]-ROUND(NUMBER*SIN (ANGLE[Z]*0.0174533))); &END; "'L':BARK[Z,CCH].Y<>32767 THEN WRITELN(CCH,' = ',MARK[Z,CCH].Y);  END;  BEGIN "WRITE ('Verify mark letter (sp for all) : '); "REPEEGIN WRITE ('Leap to absolute X: '); XMRKNBL:=TRUE; GETNUMBER; (HOLD:=NUMBER; WRITE(' Y: '); YMRKNBL:=TRUE; GETNUMBER; (BLOK AT GETCCH UNTIL ((CCH>='A')AND(CCH<='Z')) OR (CCH=' '); "IF CCH<>' ' THEN VERYFY ELSE "BEGIN WRITELN; FOR CCH:='A' TO 'Z' DO V(INSIDE(0,HOLD+160,319),INSIDE(0,120-NUMBER,239)); &END; "'J':BEGIN WRITE ('Jump to relative X: '); XMRKNBL:=TRUE; GETNUMBER; ERYFY; WRITELN END;  END;   PROCEDURE FORGET; {CLEAR MARK ARRAY} "BEGIN $FOR CCH:='A' TO 'Z' DO $BEGIN MARK[Z,CCH].X:=32(HOLD:=NUMBER; WRITE(' Y: '); YMRKNBL:=TRUE; GETNUMBER; (BLOK (INSIDE(0,X[Z]+HOLD,319),INSIDE(0,Y[Z]-NUMBER,239)); &END 767;MARK[Z,CCH].Y:=32767 END "END;  PROCEDURE INITIALIZE; {CLEAR EVERYTHING EXCEPT MARK ARRAY} BEGIN "EML.ADR:=-140; GEN.ADR END;  WRITELN;  END;   PROCEDURE REMEMBER;  PROCEDURE GETLTR; "BEGIN REPEAT GETCCH UNTIL CCH IN ['A'..'Z']; WRITE(CCH);:=-8192; NUL:=CHR(0); "FILLCHAR (SCREEN[Z].C[0],9600,NUL); {CLEAR THE SCREEN} WRITE (CHR(FF)); "UNITWRITE (3,SCREEN[Z].C[0],63 1CLOSE(PHYLE,PURGE); HANG(180) END;  END;  END;   PROCEDURE KOMBINE;  VAR  IX,IY:INTEGER;  A:BOOLEAN; HACK,WACK:SET O "DELFLG:=FALSE; SKIP:=FALSE; {SKIP allows a case to return a CCH (See CURSE)} "REPEAT IF NOT SKIP THEN WRITE ('*'); GETCCF SIXTEEN;  BEGIN WITH SCREEN[Z] DO BEGIN "WRITELN('Kombine pictures...'); "WRITE('D)uplicate, C)omplement, O)verlay, I)ntersH; {SKIP ON -> NO WAIT IN GETCCH} $CASE CCH OF 'm': BEGIN WRITE(CHR(FF)); UNITWRITE(3,SCREEN[Z].C[0],63) END; &'?','/':ect, E)rase, or R)everse: '); "GETCCH; WRITELN; A:=NZ; "CASE CCH OF "'D',' ': BEGIN WRITE('Duplicating...'); Z:=A; DUMPDATA; GIVEHELP; 'P': POLYGON; 'U','D','E','C': INKER; '.','>': SCREEN[Z].B[Y[Z],X[Z]]:=TRUE;  Z:=NZ; .Q:=SCREEN[A].Q; LOADDATA END; "'C': BEGIN WRITE('Complementing...'); FOR IY:=0 TO 4799 DO BEGIN .HACK:=[0..15]; HAC&',','<': SCREEN[Z].B[Y[Z],X[Z]]:=FALSE; &'T': BEGIN WRITE ('Turn heading by: '); GETNUMBER; ,ANGLE[Z]:=(ANGLE[Z]+NUMBER)MOK:=HACK-S[IY]; {NOT Z} .WACK:=[0..15]; WACK:=WACK-SCREEN[A].S[IY]; {NOT A} .S[IY]:=(S[IY]*WACK) + (SCREEN[A].S[IY]*HACK) END ED 360; WRITELN(' degrees.') END; 'M': MOVE; &'H': HEADING; 'L': LEAP; 'J': JUMP; 'S': SIRCLE; &'BND; "'O': BEGIN WRITE('Overlaying...'); FOR IY:=0 TO 4799 DO .S[IY]:=S[IY] + SCREEN[A].S[IY] END; "'E': BEGIN WRITE('Erasin': BOX; &'A': ASCII; &'^','6': ARROWHD; &'R': REMEMBER; &'F': BEGIN WRITE('Forget all lettered locations & numbers...')g...'); FOR IY:=0 TO 4799 DO .S[IY]:=S[IY]-SCREEN[A].S[IY] END; "'I': BEGIN WRITE('Intersecting...'); FOR IY:=0 TO 4799 DO .; 2IF RUSURE THEN FORGET END; &'O': OUTPUT; &'G': GET; &'\': DETWIST; &'z': IF TWIST THEN CURSE(-1,-1) ELSE CURSE(0,-1)S[IY]:=S[IY]*SCREEN[A].S[IY] END;  'R': BEGIN WRITE('Reversing (this pix only)...'); FOR IY:=0 TO 4799 DO BEGIN ; &'l': IF TWIST THEN CURSE(1,1) ELSE CURSE(0,1); &'w': IF TWIST THEN CURSE(-1,1) ELSE CURSE(-1,0); &'k': IF TWIST THEN CU.HACK:=[0..15]; S[IY]:=HACK-S[IY] END END  END; "WRITELN; CCH:=NUL;  END END;   PROCEDURE INKER; "BEGIN "CASE CCH OF RSE(1,-1) ELSE CURSE(1,0); &'Z': BEGIN WRITE('Zap picture...'); IF RUSURE THEN INITIALIZE END; &'I': IDENTIFY; &'V': VERIF"'U': BEGIN INK[Z]:=INVISIBLE;WRITELN('Pen Up.') END; "'D': BEGIN INK[Z]:=WHITE; WRITELN('Pen Down.'); .SCREEN[Z].B[Y[Z],X[Y; &'W': WALK; &'X': BEGIN WRITELN ('Xchange pictures.'); 2Z:=NZ; UNITWRITE(3,SCREEN[Z].C[0],63) END; &'K': KOMBINE; &'NZ]]:=TRUE END; "'E': BEGIN INK[Z]:=BLACK; WRITELN('Eraser.'); .SCREEN[Z].B[Y[Z],X[Z]]:=FALSE END; "'C': BEGIN INK[Z]:=COMP': BEGIN WRITE('New picture...'); IF RUSURE THEN 2BEGIN INITIALIZE; FORGET END END; &'_': DELETE; &'Q': WRITELN ('QUIT') SCREEN TO FILE}  BEGIN "WRITE('Output screen into'); "IF GETFILENAME THEN "BEGIN $OPENNEW(PHYLE,S); DUMPDATA; $IF BLOCKWRILEMENT;WRITELN('Complement.') END  END;  END;   BEGIN {MAIN PROGRAM} Z:=TRUE; INITIALIZE; FORGET; Z:=FALSE; INITIALIZETE(PHYLE,SCREEN[Z].Q[0],19)=19 &THEN CLOSE(PHYLE,LOCK) &ELSE BEGIN WRITELN('*FILE WRITE ERROR*'); ; FORGET; "UNITWRITE(3,SCREEN[Z].C[0],63); {TURN ON DISPLAY} WRITELN ('GREDIT... GRaphics EDitor... V01-07... ? for help.'); ¶¦A *-----PENSTATE COMMANDS-------------*------ANGLES---------*×ͶͶצA | U)p draw ghost lines/dots sive areas | Cursor arrows move |×ͶͶצA | O)utput picture into disk file | cursor per penstate,|ͶÍ$END; "UNTIL (CCH='Q'); UNITWRITE(3,X,7); {GRAPHICS OFF} END.   | 90 |ͶͶ¦A | D)own draw solid lines/dots | | |×ͶͶצA | E)raser draw clear lines/dots | 180 --*-- 0,360 |ͶͶ¦A | C)omplement reversing lines/dots | |  |×ͶͶצA *-----MOTION COMMANDS---------------* 270 |ͶͶ¦A | M)ove relative to cursor @heading *------RANGES---------*×ͶͶצA | T)urn heading by relative angle |-160,120.....159,120 |ͶͶ¦A | J)ump to relative X,Y location | : : |×ͶͶצA | L)eap to absolute X,Y location |-160,0 0,0 159,0 |ͶͶ¦A | H)ead to absolute angle for Move | : : |×ͶͶצA | P)olygon generator B)ox generator |-160,-119...159,-119 |ͶͶ¦A | W)alk blocks ^)rrowhead generator *---LETTERED MEMORY---*×ͶͶצA | S)egment circle generator | R)emember V)erify |Ͷͭv¶¦A Ò. GREDIT  *-----CONTROL COMMANDS--------------* F)orget cursor,nmbrs|×ͶͶצA | N)ew pix & letters Z)ap pix only *---- -SINGLE DOTS-----*ͶͶ¦A | A)scii character pattern entry | Period key sets dot |×ͶͶצA | I)dentify cursor, and states | Comma key clears dot|ͶͶ¦A | X)change with alternate picture *----CURSOR MOTION----*×ͶͶצA | K)ombine alt pix into this pix | \ twists 45 degrees.|ͶͶ¦A | ete, alter mas ÌÏ Ùᩦ|-áÌι̩¦|0Ä©¦|9È„¡ ©¦u�©¦|‚0•«¦uÎÙÅ©¦|hÄ¡%¶Í¶ Ͷͩ¦u †«¦uÙ•Ì©¦|AÄ©¦|ZÈ„¡y¥¦ ê¤4©¦|A•­ƒE,7ßQ]|"ö¥ ê¤“Ì ¶¦Segment radius: ×ÍÏ©¦u«¦t¶¦ units Angle: ×Í϶צ degreesͶ¤øÇÿË¡:©¦‚¡¥¦ ê¤4©¦|A•¤ø«¦uÎm«¦|©¦�¡¥¦ ê¤4©¦|A•¤ù«¦uÎm«¦|¹+¥¦ ê¤4©¦|A•¤ùÇÿË¡¥¦ ê¤4©¦|A•¤ù«¦uÎm«¦|©¦|máö«¦‚«¦�ءͩ¦tÅ¡Æ Zн¹Æ Z‘нÆ ¥ê¤øÆ ¼‰ƒ³¿9úŽ=�½©¦uÉ¡¥ê¤¥ê¤øÇ´‚ÇhŽš©¦t€«¦tÆ¥ê¤ø©¦tÆ ¼ž‰�‰ƒ½Æ¥ê¤ø©¦tÆ ¼ž‰�‰–½©¦u‘«¦u­r Ï ¶¦Polygon angle: ×ÍÏ©¦u̶¦ Side: ×ÍÏ©¦u̶צ Increment: Í϶¦ Type anything t©¦tË¡òÆ©¦tЉ‡½©¦uÉ¡ ÆÆ¼’½©¦u³9úŽ=‰�©¦tŠ�ž€Ì âÄ¡ô¥ê¤Æ¼©¦tÆ ¼ž‰�ƒžÇïÏš¥ê¤Æ¼©¦tÆ ¼ž‰�–žÇ?Ïš¥ êo stop...×Í¥¦€žÆ¥ê¤ø³9úŽ=‰�½¥ê¤øØÆ¼ž‰�ž‚¥ê¤øØÆ¼ž‰�ž•ÏØ©¦u‚Ì¥ê¤¥ê¤øÙ‚ÇhŽšž#“¡ö¶Í­©` ¤ø¹Uä¥ê¤ø¤¥ê¤øÀ»¹Mä¥ê¤ø¤¥ê¤øÀ»¹7ä¥ê¤ø¤¥ê¤øÀä¥ê¤ø¤¥ê¤øÀº“»¹¬ì¹]I5â•Ì Æ Æ ¼Æ¼ƒ½¹ö¥ê¤¶¦A | G)et picture from disk file Q)uit | twist, & repetition.|×ͶͶצA *--------------------------------ꩦ|ÌÌ¥ê¤øÙ‚Ì¥ê¤øØ‚Ì©¦~¡©¦y©¦xÏÜÛÏÝ•ÌÝÈ¡öÏ ©¦vɡ̩¦v É¡ Ì©¦|ÚË¡ô«¦~«¦­VX h¥ê¤ø«¦y¥ê¤ø«---*---------------------*Ͷ¦ to cont×Í­tD¥ ꤓž¶ ÍÎÎ¥¦€ž¥¦€¾«¦|©¦| áö¶ Í¥ ê¦x¥ ê¤øÃ¡2¥ ꤚ¥ ꤓ©¦x¤©¦yÀ»¶¦*ERASER*×ͶͶ¦!Delete... Use Cursor Keys to move×Ͷͫ¦~Ï ©¦|¹NϹö©¦¤“?ž­1 Rê¡Ì¹Ì­¶©¦}¡ ¶צNo Ͷ¦Twist×Ͷͩ¦}“«¦}«¦~­:ÛÜÉ¡ÜÌÛÚÅ¡Ú̹}¡‘‘Ϲ‘Ϲ|©¦}¡Ï¹Ï¹k©¦}¡‘Ϲ‘ϹX©¦}¡‘ϹϹF¬¶\z¹>V 8^$&(*,.0ÛÌ­T ¥ ꤓÌÙ¥ê¤ø¤¥ê¤øÀºÌ«¦v©¦ƒ º¡ö©¦vÇ'É¡ ©¦v‚«¦v¹©¦v•«¦v©¦vŽÃ¡Ù¥ê¤ø¤¥ê¤øÀ»©¦vŽÃØ“„©¦vŽ246c:<Ž©¦~¡ô«¦~«¦­y¯ 8¥ ꤓÌ̶צ:Ascii... swaps set lowers case terminatesͶÍÃØ„�¡Ù¥ê¤ø¤¥ê¤øÀ»ž#“¡ôÙ¥ê¤ø¤¥ê¤øÀØ»­ ‡‰ ² ©¦ƒ º¡öØ•ÌØÉž#“�¡ô­ $ ©¦“¡ ¥¦€žÏ ¥¦€žÏ ¥¦€¾«¦|©¦| ”‹¡è©¦ƒ º¡ö¥ ꤓǿžÌ ÌÚçÈ¡ÆÚ¤©¦z©¦|Ø‚¤Ú¾šÚ‚̹ô¥ ꤓ?ž¶©¦|Í¥ê¤ø •ÇïÏ«¦¥¦€¾«¦|©¦|a”‹¡©¦| •«¦|©¦|”‹¡©¦|`‚«¦|­H ¶¦ ARE YOU SURE? ×ÍÏ ©¦|YÃ̶©¦|Ͷͩ¦{«¦|­@ ¥ Ì¥ê¤øÌÚçÈ¡êÚ¥ê¤ø• ‚Ì¥ê¤øÌ¥ê¤ø‚Ç?ÏÌÛÊÈ¡î¥ ê¤ø¹òæÚ¤ÛÀÆÙ¤Û¥ê¤ø•Àº»¹uÆÙ¤Û¥ê¤ø•Àº¡ æÚ¤ÛÀ»¹VÆê¤øÃ¡!¥ ꤚ¶צ *PEN DOWN*Ͷͭ4 ¥ ꤓÌÝØ¤ÙÀÝØ¤ÙÀº“»ÌÇçÌÚÞÈ¡mÚdŽÃ¡_Ù•Ç?ÏÌÙ‚Ç?ÏÌÜÙ¤Û¥ê¤ø•Àº¡ æÚ¤ÛÀ»¹7ÆÙ¤Û¥ê¤ø•Àº¡æÚ¤ÛÀæÚ¤ÛÀº“»¹¬¹‰oR5ۂ̹ðڂ̹ì¥ê¤¥ê¤ø‚Ç?Ïš¹â©¦|¹æØßÈ¡@Ø•ÇïÏÌØ‚ÇïÏÌ ÛàÈ¡ÝÛ¤ÜÀÝÛ¤ÜÀº“»Û‚̹ö܂̹ôڂ̹òÝØ¤ÙÀÝØ¤ÙÀº“»­‡cF ¶ÙÇ?ÏÌØÇïáǀ̹̹ä¶Í¥ê¤š¥ê¤¥ê¤ø ‚ÇïÏš¹ä¥ê¤¥ê¤ø•Ç?Ïš¹ä¥ê¤¥ê¤ø ‚ÇïÏš¹ä¥ê¤¥ê¤ø •ÇïÏš¹w¥êÏÌ¥ ê¤øË¡4Ù¥ê¤ø•ÌØ¥ê¤ø•Ì¥¦w¥ ꤓ¥ê¤ø¥ê¤øÛÚ¥ ê¤øÏ¥ê¤Ùš¥ê¤Øš­j¶©¦|Ͷ‚¸­«¦u¤¥ê¤ø ‚ÇïÏš¹_¥ê¤¥ê¤ø•Ç?Ïš¹G¥ê¤¥ê¤ø‚Ç?Ïš¹/¬¹(—ƒ%WÆU"$‹ó©¦|áà¶Í ¦uέˆ¶¦%Heading: Set by A)ngle or L)ocation: ×ÍÏ ©¦|¹ö¶¦Angle: ×Í϶צ degrees.ͥꤩ¦uÇhŽš¹ô¶צÏÎ!¹v¶¦Jump to relative X: ×Í«¦‚Ï©¦u«¦t¶¦ Y: ×Í«¦�Ï¥ê¤ø©¦t‚Ç?Ï¥ê¤ø©¦u•ÇïÏÎ!¹¬JM¹nÑK¶Í Heading to absolute X: Í«¦‚Ï©¦u¥ê¤ø•Ç ‚«¦t¶¦ Y: ×Í«¦�Ï©¦u¥ê¤ø‚x•«¦u©¦tᩦuÄ¡Z«¦u¹Z‘«¦u¹©¦u©¦t€Š‰‡ž³­ ø Ï ©¦|³lÿþÿ‹¡ö¶©¦|Í­$,#¶¦Remember L)ocation or N)umber: ×ÍÏ ©¦|¹ö¶¦Location 9úŽ=‡ž«¦u©¦tÉ¡ Ç´©¦u•«¦u¥ê¤©¦uÇhŽš¹b¬¦ L¹Zî  "$&(*,.02468:<>@B0FHJLof cursor as letter: ×ÍÎ#¥¦ ê¤4©¦|A•¤¥ê¤øÇ •𥦠ê¤4©¦|A•¤¢x¥ê¤ø•š¹ô¶¦Number: ×Í϶¦ as letter: ×ÍÎ#¥¦ ê¤4NPRTVX¶Í©¦{«¦|­r –¶¦Move along heading: ×Í϶¦ units.×Í¶Í¥ê¤ø©¦u¥ê¤ø³9úŽ=‰�ž‰�ž‚¥©¦|A•¤Çÿ𥦠ê¤4©¦|A•¤¢©¦uš¹f¬³ N¹^¶  "$&(*,.02468:<>@BDFHJLNPRTVXê¤ø©¦u¥ê¤ø³9úŽ=‰�ž‰�ž•Ï­n~¶¦Leap to absolute X: ×Í«¦‚Ï©¦u«¦t¶¦ Y: ×Í«¦�Ï©¦tÇ ‚Ç?Ïx©¦u•\¶¶Í©¦{«¦|­v \"¶¦Identify cursor at (×Ͷ¥ê¤øÇ •Í ¶,Ͷx¥ê¤ø•Í ¶¦ ) Heading is ×ͶÇïÏ϶ͭl¶¦Jump to relative X: ×Í«¦‚Ï©¦u«¦t¶¦ Y: ×Í«¦�Ï¥ê¤ø©¦t‚Ç?Ï¥ê¤ø©¦u•ÇïÏÏ¥ê¤øÍ ¶¦ degrees. Pen is ×Í¥ ê¤ø¹L¶צeraser.͹H¶¦down.×͹7¶צup.͹(¶¦ complementer.×͹¬¶Í­t¶É¡+¥ê¤ø¶‚Ç?ϸ¥ê¤ø¶•¸Ù¶•̹%¥ê¤ø¸¥ê¤ø¶‚Ç?Ï¥ê¤ø•¸¶Å¡+¥ê¤ø¶•Çï¹/BW&¶¦ Pix is ×Íê¹ ¶AͶ͹¶BͶ͹ ¬¹'¥ê¤ø¥ê¤øÏ­>$¥¦ ê¤4©¦|A•¤øÇÿË¡¶©¦|Í¥ê¤ø©¦u‚Çh‚ÇhŽš­â ü¥ê¤øÌ¥ê¤øÌ¥ê¤øÚ²¼Æ¼ƒž‰�ž‚¥ê¤øÚ²¼Æ¼ƒž‰�ž•Ï¥ê¤Üš¥ê¤Ûš¥ê¤øÚ²Ï¸¥ê¤ø¶•¸ض•̹%¥ê¤ø¸¥ê¤ø¶•ÇïÏ¥ê¤ø•¸¸¶Ì¶ÚÈ¡èØ¶‚ÇïÏض‚á츶̶ÛÈ¡îÙ¶‚Ç?¼Æ¼–ž‰�ž‚¥ê¤øÚ²¼Æ¼–ž‰�ž•Ï¥ê¤Üš¥ê¤Ûš­˜²¥ê¤øÇ´‚Çh޳¤˜ùŽ=‰�½س®G@®Ø†‚Ìس…ë?®سž ×#?ÏÙ¶‚áò¥ ꤓÌ¥ ê¤ø¹öÜØ¶‚¤Ù¶‚Àܶ¶‚¤¶¶‚Àº»¹ôܶ¶‚¤¶¶‚Àº¡Üض‚¤Ù¶‚À»¹wܶ¶‚¤¶¶‚®­HÏ ¶¦3Arrowhead: S)mall, M)edium, L)arge or X)tra large: ×ÍÏ ©¦|¹V¶¦Small×Íιö¶¦Medium×Íιö¶Àº¡Üض‚¤Ù¶‚À»¹Lܶ¶‚¤¶¶‚Àº¡#ÜØ¶‚¤Ù¶‚ÀÜØ¶‚¤Ù¶‚Àº“»¹¬¹œsJ¶‚¸¹ð¶‚¸¹ê­3צLargeÍιö¶צ Xtra largeÍιz¬Ç X¹r^  "$&(*,.02468:<>@BDFHJLN "4þ!¶¦Walk block area of Width: ×Í«¦‚Ï©¦u̶צ units Height: Í«¦�Ï©¦u̶צ unitsͶÍPRTVX�¤^`bdfÄjlnp‘¶Í©¦{«¦|­,¥ê¤øØ²¼ž‰�ž‚¥ê¤øØ²¼ž‰�ž•ϲ²¼³ÛÉ@ƒ½­¶צMotion: M)ove, J)ump, L)eap: ÍÏ ©¦|¹ö¶צMove along heading: Í϶צ units.Í¶Í¥ê¤ø©¦u¥ê¤ø³¡9úŽ=‰�žBÏ ¶¦ Box Width: ×Í«¦‚Ï©¦u«¦t¶צ units Height: Í«¦�϶צ unitsÍ¶ÍÆ¥ê¤ø³u9úŽ=‰�½©¦tΩ¦uΩ¦tΩ‰�ž‚¥ê¤ø©¦u¥ê¤ø³9úŽ=‰�ž‰�ž•Î!¹ô¶צLeap to absolute X: Í«¦‚Ï©¦u«¦t¶צ Y: Í«¦�Ï©¦tÇ ‚Ç?Ïx©¦u•Çï |‚«¦|¹ö­7F'ÇŒ‘«¦ƒÇ ‘«¦z«¦{¥ ꤓǀ%©¦{ž ¶ Í¥ ꤓ?ž¥ê¤Ç š¥ê¤xš¥ê¤š¥ ꤚ«¦}­`(¶¦ -¬CU¹&+¡h  "$ã­1 ö/Ʀ­Æ§ÙÇ‘ÍÕ‚v«Î(Î'«Î(Î'¥ ꤓ?ž¶צ3GREDIT... GRaphicwhat filename: ×Ͷ¥¦„PͶÍÌ¥¦„¾Å¡aצ.FOTO¥¦„Íá!¥¦„ÌÆ¥¦„PÍÆ¦.FOTO×UÍÆªP¥¦„¾Å¡ ¶¦*Ill filenames EDitor... V01-07... ? for help.Ͷͫ¦~«¦©¦“¡¶*ÍÎ ©¦|¹ö¶ Í¥ ꤓ?ž¹ôιôιôÎ/¹ô¥ ꤓ¥ê¤ø¤¥ê¤ø*×Ͷ͹̭©V )¥ ꤓÌ¥ê¤Ø£’Áš¥ê¤Ø£’À𥦠ê¤4Ø¢’¨4¥ê¤Ø£’öš¥ ê¤Ø¢’÷ºš­H*¶¦Get new screen frÀ»¹ô¥ ꤓ¥ê¤ø¤¥ê¤øÀ»¹ô¶¦Turn heading by: ×ÍÎ¥ê¤¥ê¤ø©¦u‚ÇhŽš¶צ degrees.Ͷ͹ôιôιôιôιôÎom×ÍÏ)¡X¥¦­¥¦„Í¥¦­¥ ꤓ¤Ç‘Íá Ï*¥¦­Í¹&¶צ*FILE READ ERROR*ͶÍÇ´Ï ­ „+¥ ꤓÌØ¢’Á¥¹ôιôιôιôÎ"¹ô¶¦*Forget all lettered locations & numbers...×ÍÎ ¡Î'¹ôÎ-¹ôÎ+¹ôιô©¦}¡‘‘ι‘ιô©¦}¡Î¹Î¹ê¤øšØ¢’À¥ê¤øšØ¢’Â¥¦ ê¤4¨4Ø¢’ö¥ê¤øšØ¢’÷¥ ê¤ø»­J,¶¦Output screen into×ÍÏ)¡`¥¦­¥¦„ÍÏ,¥¦­¥ ꤓ¤Çô©¦}¡‘ι‘ιô©¦}¡‘ιιô¶¦Zap picture...×ÍÎ ¡Î(¹ôÎ$¹ôÎ%¹ôÎ ¹ô¶¦Xchange pictures.×ͶÍΫ¥ ꤑÍá ¥¦­Í¹.¶¦*FILE WRITE ERROR*×Ͷͥ¦­ÍÇ´Ï ­Š-¥ ꤓ̶¦Kombine pictures...×ͶͶצDD“?ž¹ôÎ.¹ô¶¦New picture...×ÍÎ ¡Î(Î'¹ôιô¶¦QUIT×Ͷ͹ô¬,z¹ôÍìú ^ í$ *x)uplicate, C)omplement, O)verlay, I)ntersect, E)rase, or R)everse: ÍÏ ¶ÍÏÌ©¦|¹ì¶¦Duplicating...×ÍÚ«Ï,ϫݥ ~v6šÆ–ˆž¨ŠJ8h’¤>ÜÚØ\ `\d®ˆjlnprtvxz|~>d�†ˆŠŒŽ�’”–išœ”©¦|Qáò¥Ú¤“¨“Ï*¹ê¶צComplementing...ÍÌÇ¿ÌØÞÈ¡WÇ‘ ÌÜÝØ¤ø… ÌÇ‘ ÌÛ¥ Ú¤“ؤø… ÌÝØ¤ÝؤøÛŒ¥ Ú¤“ؤøÜŒœ žƦ­ÍÁeØĤMZ÷¦· ‚ ·l„7 �7 €·€€w v7 v÷ j·j€÷ü^7 ^�€ƒà Cp—týÿÂE�`�eÀEðÿÀ ÷/6¾šØ‚̹ö¹ê¶צ Overlaying...ÍÌÇ¿ÌØÞÈ¡ ÝØ¤Ýؤø¥ Ú¤“ؤøœ šØ‚̹ô¹ê¶צ Erasing...ÍÌÇ¿ÌØÞÈ¡ ÝØ¤Ýؤø¥ Ú¤ÿ .÷-00Â(7‚ ·$Â÷m÷- ÷ Á`Áà÷íþÿ ôÿ î•~Âî‚ ·êÂä÷mÞà÷-ÜØÿ Ì÷íÎÎ÷ ÄÁ`Áàÿ ´•~“ؤø… šØ‚̹ò¹ê¶¦Intersecting...×ÍÌÇ¿ÌØÞÈ¡ ÝØ¤Ýؤø¥ Ú¤“ؤøŒ šØ‚̹ð¹ê¶¦Reversing (this pix only)...×Í×-®,þ¶Ö òǬÀ À €á À‡€ € À5 Ñ ‡ \v‡ @BDFóA•¤ùÇÿË¡2¶©¦|Ͷצ = Ͷ¥¦ ê¤4©¦|A•¤ùÍ ¶Í­â&¶¦"Verify mark letter (sp for all) : ×ÍÏ ©¦|AÄ©¦|&1NPRöVXZ\^‹bdÀ¶Í©¦{«¦|­}¦ýGŒ ò.©¦|¹ö¥ ꤚ¶¦Pen Up.×Ͷ͹ô¥ ꤚ¶¦ Pen Down.×ZÈ„©¦| Ã�¡ö©¦| Ë¡Î&¹&¶ÍA«¦|ZÌ©¦|ØÈ¡ Î&©¦|‚«¦|¹ô¶Í­J ~%A«¦|ZÌ©¦|ØÈ¡.¥¦ ê¤4©¦|A•¤Çÿ𥦠ê¤4©¦|A•¤¢Çÿš©¦Í¶Í¥ ꤓ¥ê¤ø¤¥ê¤øÀ»¹ô¥ ꤚ¶צEraser.Ͷͥ ꤓ¥ê¤ø¤¥ê¤øÀ»¹Q¥ ꤚ¶¦ Complement.×Ͷ͹ >‡Ö ¼h& , @€ @€ †|Ìš–’ŠrfVVVVVÒ62* º ” â y losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, ˆ î ¼ < ¦ Jìz€€úlðŽ’àf€‚~¼ *!4#"V#Æ#‚$¼$%P%z%2&V&–&'P*´&\4/losses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without further notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential.O^ It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BYe¡ TERAK CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM ANIMATE;  (*$R-*) (*$I-*) CONST  WRDLIM = 16000;  FF = 12;  BS = 8;  TYPE "SYNCBIT = PACKED RECORD 0JUNQUE: 0..2047; 0SYNC: BOOLEAN -END; " "EMLCS = RECORD CASE BOOLEAN OF *TRUE: (ADR: INTEGER); *FALSE:(REG: ^SYNCBIT) *END; "  VAR GAR: PACKED ARRAY [0..20] OF INTEGER; (*ARRAY OF SCREEN SUBSCRIPTS*) " "COMPAT: PACKED ARRAY [0..0] OF CHAR; "EML: EMLCS; (*SYNC BIT IS IN EMLCS*) "S: STRING; "BASTARD: FILE; "PIX: INTEGER; "PIXNDX,TOPNDX: INTEGER; "WRDSIZ: INTEGER; "I,ZONE: INTEGER; "NUMBER: INTEGER; "CCH,NUL: CHAR; "FRAME:  INTEGER; "GARSIZ: INTEGER; "NEGATORY: BOOLEAN; "COUNT: INTEGER; "SCREEN: PACKED AR {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for anRAY [0..WRDLIM] OF INTEGER; (*NO RANGE CHECKING!*) " "  PROCEDURE HANG(WAITTIME:INTEGER);  BEGIN "REPEAT $WAITTIME:=WAITTI $REPEAT &WRITE('Get frame #',PIXNDX+1,' from'); GETFILENAME; &IF I>0 THEN (*VALID NAME IN S*) &BEGIN (RESET(BASTARD,S); (I IF NUMBER>0 THEN FRAME:=1 ELSE NUMBER:=-NUMBER; WRITELN; (REPEAT *WRITE('Type anything to stop...'); *UNITREAD(2,COMPAT[0],1:=BLOCKREAD(BASTARD,SCREEN[PIX],(WRDSIZ+255) DIV 256); (IF (IORESULT<>0)OR(I=0) THEN BEGIN I:=-1; WRITELN('*FILE READ ERROR*');,,1); *HANG(30); PIXNDX:=0; *WHILE UNITBUSY(2) DO *BEGIN ,HANG(NUMBER); ,UNITWRITE(3,SCREEN[GAR[PIXNDX]],ZONE); ,PIXNDX:=P EHANG(60) END ELSE CLOSE(BASTARD); (IF I>0 THEN BEGIN UNITWRITE(3,SCREEN[GAR[PIXNDX]],7+ZONE); *WRITE(' O.K.?'); REPEAT GETCIXNDX+FRAME; ,IF PIXNDX<0 THEN PIXNDX:=TOPNDX; ,IF PIXNDX>TOPNDX THEN PIXNDX:=0; *END; ME-1; $REPEAT UNTIL EML.REG^.SYNC; (*MS BIT = 1 ... VERT RETRACE*) "UNTIL WAITTIME<0; END;   PROCEDURE GETCCH;  BEGIN "UNCH UNTIL CCH IN ['Y',' ','N','m']; *IF CCH='m' THEN CCH:=NUL; WRITELN(CCH); IF CCH='N' THEN I:=-1 END &END $UNTIL I>=0; $PIXITREAD (2,COMPAT[0],1); CCH:=COMPAT[0]; "IF CCH IN ['a'..CHR(127)] THEN CCH:= CHR(ORD(CCH)-32); :=PIX+WRDSIZ; (*BUMP TO NEXT PIX*) $PIXNDX:=PIXNDX+1  END ELSE "BEGIN WRITELN('*** MEMORY IS FULL ***'); PIXNDX:=PIXNDX+1; "IF CCH IN [CHR(0)..CHR(31)] THEN CCH:= CHR(ORD(CCH)+96); END; PROCEDURE GETNUMBER;  PROCEDURE ECHO; BEGIN WRITE(CCH); COUNI:=0 END;  END; (*EXIT WITH I=0 -> DONE*)   BEGIN (*MAIN PROGRAM*) "(*initialize*) "EML.ADR:=-140; NUL:=CHR(0); "REPEAT T:=COUNT+1; END;  BEGIN NUMBER := 0; COUNT:= 0; "REPEAT "GETCCH; "IF COUNT=0 THEN BEGIN $IF CCH = '-' THEN BEGIN NEGATORY$WRITELN (CHR(FF),'ANIMATE... Graphics Animator... V01-03...'); $WRITE('Display in U)pper, M)iddle, L)ower, T)op, B)ottom, or A := TRUE; ECHO END 1ELSE NEGATORY := FALSE; END; "IF (CCH>='0') AND (CCH<='9') THEN $BEGIN NUMBER:= 10*NUMBER+ORD(CCH)-ORD('0)ll zones?'); $REPEAT WRDSIZ:=0; GETCCH; $CASE CCH OF &'L': BEGIN WRITELN(CCH); ZONE:=8; WRDSIZ:=1600; GARSIZ:=-3200; END; '); ECHO; END; "IF (COUNT>0) AND (CCH='h') THEN $BEGIN WRITE(CHR(BS),' ',CHR(BS)); NUMBER:= NUMBER DIV 10; $COUNT:= COUNT-1; &'M': BEGIN WRITELN(CCH); ZONE:=16; WRDSIZ:=1600; GARSIZ:=-1600; END; &'U': BEGIN WRITELN(CCH); ZONE:=32; WRDSIZ:=1600; GARSIZEND; "UNTIL CCH='m'; "IF NEGATORY THEN NUMBER := - NUMBER; END (*GETNUMBER*);  PROCEDURE GETFILENAME;  BEGIN "WRITE (' wha:=0; END; &'B': BEGIN WRITELN(CCH); ZONE:=24; WRDSIZ:=3200; GARSIZ:=-1600; END; &'T': BEGIN WRITELN(CCH); ZONE:=48; WRDSIZ:=32t filename: '); READLN(S); I:=LENGTH(S); "IF (I>0)AND(POS('.FOTO',S)=0) THEN S:=CONCAT(S,'.FOTO');  IF (I>14)THEN BEGIN WRIT00; GARSIZ:=0; END; &'A',' ','m': BEGIN WRITELN('A'); ZONE:=56; WRDSIZ:=4800; GARSIZ:=0; END $END; $UNTIL WRDSIZ<>0; $WRITELELN('*Ill filename*'); I:=0 END;  END; "  PROCEDURE LOAD;  BEGIN "GAR[PIXNDX]:=PIX+GARSIZ; (*CALC GAR PNTR FOR THIS PIX*) N('Enter frame picture files. After last frame, type only...'); $PIX:=0; PIXNDX:=0; REPEAT LOAD UNTIL I=0; TOPNDX:=PIXNDX"IF PIX+(((WRDSIZ+255) DIV 256)*256) < WRDLIM THEN "BEGIN $FILLCHAR(SCREEN[PIX],2*WRDSIZ,NUL); (*CLEAR IN CASE BAD I/O*) -2; $IF TOPNDX>=0 THEN &REPEAT (FRAME:=-1; (WRITE('Time between frames (in 60ths of a second neg->reverse): '); (GETNUMBER; Ç@‘«u¹ô¶©sÍ¶Í «oÇ@«n«u¹ô¶©sͶͫoÇ€ «nÇ@‘«u¹ô¶©sͶÍ0«oÇ€ «n«u¹ô¶AͶÍ8«oÇÀ«n«u¹ô¬L mX ANIMATE ¹ô#  "$&(*,.02468:<>@Be¢HJLNPRTVXó^`bdfh§änprtvxz|~ €‚„†ˆŠŒŽ�’”–˜š½©nË¡ò¶¦?Enter frame picture files. After last frame, type only...×Ͷͫk«mΩpáð©m•«l©lġ摫t¶צ9Time between frames (in 60ths of a second neg->reverse): ÍΩqÅ¡«t¹©q‘«q¶Í¶¦Type anything to stop...×Í¥žÎ«mž#¡4©qÎ¥x¥©m¤ø¤©ož©m©t‚«m©mÉ¡©l«m©m©lÅ¡«m¹î¥x¤ž¶¦*C)ontinue, T)ime adj, N)e̩ؕ º¡öØÉ¡ô­ ¥ž¥¾«s©sa”‹¡©s •«s©s”‹¡©s`‚«s­4¶©sÍ©w‚«w­a«q«wÏ©ww set up, Q)uit: ×ÍΩs³ @‹¡ì©smá©r«s¶©sͶͩs³I‹“¡ê©sTË¡è¹6¶צQuit ? ÍΩs³@*UNITWRITE(3,SCREEN[0],7); (*GRAPHICS OFF*) *WRITE('C)ontinue, T)ime adj, N)ew set up, Q)uit: '); *REPEAT GETCCH UNTIL CCH INá©s-á«vι«v©s0Ä©s9È„¡ ©q�©s‚0•«qΩwÅ©shÄ¡$¶Í¶ Ͷͩq †«q©w•«w©smáö©v¡©q‘«q­p~¶¦ wh ['C','T','N','Q',' ','m']; *IF CCH='m' THEN CCH:=NUL; WRITELN(CCH); (UNTIL NOT (CCH IN ['C',' ']); &UNTIL CCH<>'T' $ELSE BEat filename: ×Ͷ¥PͶͥ¾«p©pŦ.FOTO×¥ÍÄ¡¥ÌÆ¥PÍÆצ.FOTOUÍÆªP©pÅ¡!¶¦*Ill filename*×ͶÍGIN WRITE('Quit ? '); REPEAT GETCCH $UNTIL CCH IN ['N','Y']; WRITELN(CCH) END; "UNTIL CCH<>'N';  END. " «p­V–¥©m¤©k©u‚š©k©nÇÿ‚džÇ�‚Ç€>É¡ð¥x©k¤©n�©rž ¶¦ Get frame #×Ͷ©m‚Í ¶¦ from×ÍÏ©pÅ¡ô¥C¥Í¥C¥x©k¤©nÇÿ‚džǑͫpž"Ë©pÃ�¡*‘«p¶¦*FILE READ ERROR*×ͶÍ<Ϲ¥CÍ©pÅ¡a¥x¥©m¤ø¤©o‚ž¶צ O.K.?ÍÏ©s³ @‹¡ö©smá©r«s¶©sͶͩsNá‘«p©pÄ¡ò©k©n‚«k©m‚«m¹/¶¦*** MEMORY IS FULL ***×Ͷͩm‚«m«p­2JK‰ˆÆCÆ�oÇ‘ÍÕ{ÇŒ‘««r¶ Ͷצ)ANIMATE... Graphics Animator... V01-03...ͶͶ¦ADisplay in U)pper, M)iddle, L)ower, T)op, B)ottom, or A)ll zones?×Í«nΩs¹ö¶©sͶͫoÇ@«nÇ€ ‘«u¹ô¶©sͶͫoÇ@«n ` @€€À Àx|00€ <€ Àÿÿàÿà88>€€€`À€@Àþv; ø€  àðý€xà€€€Ààÿÿÿ€`àæÀ@€?8| ðà€#Àÿÿ€ üÿÿ€€€À`|`€0ðÀp0‹¡ä¶©sͶͩsNË¡âÆCÍÁ=ó6I¡Dœ½wÂì}#&,ºØXø2pe only...×Ͷͫk«mΩpáð©m•«l©lġ摫t¶צ9Time between frames (in 60ths of a second neg->reverse): ÍΩqÅ¡«t¹©q‘«q¶Í¶¦Type anything t€øÿ€€øÿÿ@|€`€à €à €ð@ p�€ `(€m[Ûý@0ÀÀ 8> @€À÷0€@8€;` @° €ð  º€   €0ÀÀ @ ;@ƒð`ÿ@€èÀƒ@ø6?€`€3€`ÀÁ À@1€€8ÿÿÿ �€À€à€ÀT0@0¿ÿíð 0 àì@À< �@€@@€€ Á@@ `À€€A@8,€€`  À€�Àð€``0àü  x €€€0 ðp€�€0 xÿÿý½a€€€ @€<@€ €àÀ@€à1€€€€€ €@À€€€ÿ€@@@@À€€`0€À@ ð@`À è»w·»íñ @€€@ 00°€€€@ x À€€@$À€€Ø ÀÀp€0€1 €à@à€@€ €øÿ�@àðÖZ­ @ Î @ 0à ÀÀq€Aƒ€0À€ 0 a @@@€¿ y ‚@@À€À@   Æ @€VÀ1A`8ü € 0ÀÀÀ‡`0@ 0@  ü|€@ @@Œ@   @@@@B€  0@ €!€`À?€  €0À€€À€` 8 @ €þ A p@ @€Ð�@  ‚†€  @€lUU50 @ ð€ 0‚ ÐvßÿC p@0�€‚ „@ < @�€„ À@@€@€„  PU¥Ú«UkÀ€ ÀPî{ÀàÀ€><@ð€!€àß €@  €@"€ „`A` F€ÿÿCðÿ cFüÿÿÿ? ðÿÀ H Àÿ`0X �@àæ0€0 ð`À@€ H€„@p€@€(€„@€@@4€„ï€@ œ @€0ø 0øð€@@€„ð@` €„ÀÀ  €„ À  ˆÀ€ ;`À pþ` €„Ì HP`0€ØÀpàŒƒø h ‚(`‚(@Â(†á ‚À‚`øÿ0€ð À0BÀÿ(`€ Ax`8@€ @ûÿ@€@~0 À Ú€ !€ü@ € @€@8€ € @x`@àüÿÿ Ü}ÀØ`ƒÜ= ?€@Àÿøp€œà0€ pgþX>p€ þc {HÀ`@€á€€€x\@ÀŸ€ÀR<þHpÀÀ@Àðÿ8ü[èáÿL`€@@ HødÀ0€`À€D`@üðÿ @àK0ð@€ï¶Ýý` €&@0p€Fðÿøÿ@€C@€Ãøÿ!€ @ ˆ@@È@€ D€ @~ @@‚ø `€@‚ø  `HÀ#D€`(À$D€À4À$D€<À0üÿÿ?@B€ 0ü@@Bà À@@" ˆ<$L€À@ $þÿÿüÿÿþÿ@@$xÀC@ ! € ˆ€ Hxp8ø  àÿ?þÿÿÿÿÿ  @€C„C〠€À@ € € ÁDDD@ ÁD@D@`AEÀǃ €AF@D@ €  @   @AFDD  €C„CÄÇ    € p@@üÿÿÿÿÿ?    €€ €àÿóøÿÿ@ˆ€  @€ €B "    ~   @€€  ðj˜ˆ,,<2"2&""""ˆðx"" <<<<<  € ðp8ø H ˆÿÿÿÿÿÿÿp ˆx   " @  €@€@þÿ €€@ €>€@€@ >">"…@ &""E €&">€@@ € @ €*2>‚ 2"">‚€2""@@ €€@>>""€ €€@@ À°@  p € ð@@ € @ € à À€@@ €€@Àÿãÿÿÿÿÿÿ €ü?¨ªª*@ €€ÁB€@ @ € ÁÁB  @` €€p@ €@ `@ € €@ ð@ "C " À#B € "B @ ÀÃÃÀâ€@ € €€@€€@ @@€ @ @ € @ €€@@ €€@ €@€ €€@ @@ €! @# € € „À €€ €DÀ  @à€  €@  €$À €ÀÀ0àá €€ €@ €  ð@UUU €0 € ` €   €`    €  €€@  €@ @ € @ €@ €üÿÿÿ@ €@ €@À €@ àÿÿÿÿÿÿ à  À  Ô µÿµÿµÿØÿçÿØÿçÿµÿ4C4Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿµÿ'µÿXàÿ'-ðøÃðúÄ¡ôð¢¾Å@@ààðñáññññà @0A@°@@@0A@P@@@ðPA@Pñ@ððà€€€€@ €`À € €�A@@P€�A@@�àðAàñAðñ€ €` €€@ €@@þÿÿÿÿÿÿÿÿÿÿ  À$ % ÿÁðÿÿÿüÿðÿÿÿÿÁüÿÿÿüÿÀðÿÿÿÿÁþÿÿÿü?D$ðÿÿÿÿÁþÿÿÿü?Ä#ðÿÿÿÿÁÿÿÿÿüÿD"ðÿÿÿÿÁÿÿÿÿüÿ@ðÀ€üþðÀ?€üø?ðÀ?€üàÿ€ÿðÀ€ü€ÿÿÿÿðÿÿÿÿÁÿÿÿÿüþÿÿÿðÿÿÿÿÁÿÿÿÿüø?þÿÿàÿÿÿÿÁþÿÿÿüàÿþÿÿàÿÿÿÿÁþÿÿÿü€ÿüÿÿÀÿÿÿÿÁüÿÿÿüþðÿÿÿÿÿÿÁðÿÿÿüø?üüüüüüüÿÿÿÿÿÿÀÿÿÿÿÿÿÿüø?üÿÿÿÀÿÿÿÀÿÿÿÿÿÿÿÿüþüÿÿÿàÿÿÿÿÀÿÿÿÿÿÿÿÿü€ÿüÿÿÿàÿÿÿÿÀÿÿÿÿÿÿÿÿüàÿüÿÿÿðÿÿÿÿÁÿÿÿÿÿÿÿÿüø?üÿÿÿðÿÿÿÿÁÿÿÿÿÿÿÿÿüþðþÁðÀü€ÿðüÁà€üàÿðüÁà€üø?€ðüÁà€üþðÿÿÿ& vGGýÿ_ f _óÿfóÿLLÿÿÿÿÿÿBóÿÿÿÿÿÿÿÿÿÿÿÿÿfÿÿÿÿšÿóÿÿÿÿÿÿÿÿÿÿÿÿÿZ'  (b 8 ð  þ  @@@8@0ˆ@@ 9À€ a€€ @€ € "Æ@"$„  "$ø`˜Á! @$ <€€G€H, x@Häà€à @ŠHˆ„x† @‚ø0@`€ D‰@ @d*ˆ < "*‘0ÀÂÃb B"*"2!x A"K$&bÀ@ A I$D€`àá`0˜€?(bLøÀ€?@À!à"ID„�@! ED@x!€ ‘ˆ…@È@€€ð€ €À€` 8ø€�€‘ˆ”ˆ"@ø`€ˆ„�H€¤ˆ$ @ø€D„HH„¤ˆ0HÀ@BBD ð 0@ ÿDÄ$!ˆ€ BBDD@HB� ÀAB" BˆB <€a"2ˆ!Ä @ À€p@�ÀÿÁÀ€!€@  þ@  ø ʃ(  |€€ ‘B!„ ÀÀƒÀ0‘$B!„@ 80@�ˆ$B"AH0@‚! A@€óˆ( ‚!C@€ó& �B @€3 !ˆ `ÈH4q"�Àà€0DD18‚08à`$"‘#!� !!‚ €3 ˆ€€( 2"‚! €3 � „„B( "A €3@DD„B(D‚à"2‘‰#CÀÁ‘Ie$B88 �‘�I2‚$„ €3ˆCD„B(BD‚ €3ÿ" DD"HB"„( €3~�! FB"HB"„(€A‘ˆˆH †(� €`ˆÈȈH2 „H„` € DHLˆ$" „Id@`FHd �‚"B"HB$p‚"#"DD@„P‚"!"DDD¡1ˆ$"@Ñ  @B,"ˆ$"H’C  €†!*„$"H"B €€ ‚ )F"$Jˆ$D A’ "„D„`!�ÇæK>Ù<™Ï! ’ D„‚„ABÐÏö[0ŸÙžÙï‚ ’ D„‚ ABÐ€ÆØ°ƒÙ†€‚A „9B’$’ED@ÀA‚y0DB’d’MŒ€ @ADB‘D’ŠÙ`a‰0D�‚ C‚Ð€ÂØ±�Ù†Ù`– I„�‚Ð€ÃØ³�Ù†Ù`‚H‚�„!BÐ‡ÃØ²�Ù†Ùg&ƒ$@ ‚`BB�D¤€ð€‡"B‘Hä 2~Ä!"‘ÈD#"3‚�!FÐÁض�ÙŽßç'�$‚ˆ"DÐ€ÃØ¶�Ù¼ßà#A$ˆ‚ˆ$ˆÐ€Ãض�Ù¸Ù`#�@2ˆ‚ˆ Dˆ à?üÿD?"‘ˆD"D@üÀàÿ€øÀÀ"‰ˆHBDˆ à~| #IMBHAðàÐÀÆØ´½Ù°Ù`#Á DB !Ę`ÐÀÆØ¼±Ù°Ù`#! DB Aˆ�@ÐÀÆØ¸±Ù°Ù`&€  "B AˆAÿ€‘H‰†ˆ‚àÿÈ€�HŠ„�ðÿ8€ˆH˜1 ÀÈ`ÄØ°±Ù°Ù`&€  "A$ Aˆ �`ÈgÌØ°¿Ï¾Ùo&€ "A& Bˆ �ˆ/LØ0Ïœ˜o&@„D"A"9BA�ˆH A @ˆH  B DD  "D€DD""Œ ‚D"a""BB 0BD"1""„B AB#"$!‚@#$BD!Dˆ@€$Bˆ"ˆ€À `$Bˆ ˆ ƒAB!A$!  � "‘Ad A"�ADb  „ H"”€?óþ €H Bˆ"€€?3 `„O D€$ €€30 ˜€C@°„�d !PA„B  Â0H”PA„‚8@ D”HA„‚ @  $’(Aˆ`€ @€30@„€p@@�„°Ä "@€30€C@À @�!‰ @€30?ãH @B�!‰@@€30? $ ’$A„@€ @ $A!Á@ ’$�"�) Àÿü?ÿÿ@ˆQ"�8"‚@ÄI„"‚ "@bI„"‚ B@"E„"‚ F@�DB"‚ D@ˆ€$B!‚ D@ˆ€$B!!„@D`"BA„ @b AAˆ @"AAˆ@˜AŒA@ˆ@„�@H€„�ø@D€„� @ø‚‚@ÀO ‚@À?@Â@0|@B@ˆCB@@H$! €$’‘€ÉP àÿ•H(rUD¨ÁÿþVBT€ÿøþÿTX +O^€ÿÀÿ€ÿÿÿÿÿÿ?€ÿÿÿ5 àðüð?Àÿ*  It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY "ADDRESS = -172; { -172 DEC = 177524 OCT = SERIAL #1 { <<<<<<<< } " "CR = 13; FF = 12; LF = 10; BS = 8; HT=9; DLE=16; SP= TERAK CORPORATION ="ALL RIGHTS RESERVED"}  {$R+}  {$I-}  PROGRAM PRINTOUT;  {This is a Run-Off program to grind 32;  TYPE "CS = PACKED RECORD 1JUNK: 0 .. 63; 1INT: BOOLEAN; 1DUN: BOOLEAN; 1BUNK: 0 .. 127; 1RDY: BOOLEAN .TEXT files thru ( either a printer controller or a serial interface. "END {CS}; CSDB = PACKED RECORD 1XCS: CS; 1XDB: CHAR  END {CSDB};  VAR "SLU: RECORD CASE BOOLEAN OF -TRU)The unmodified code drives the serial line unit #1 with )soft form feeds. Variations which may be injected are: +* Driving tE: (ADR: INTEGER); -FALSE:(REG: ^CSDB) "END {SLU}; "LIGHTS: PACKED ARRAY[0..500] OF INTEGER; {LIGHT SHOW BIAS} PAGEBUF:PACKhe line printer controler instead of the SLU. +* Generate hardware form feeds. +* Drive either device through the oED ARRAY[0..511] OF CHAR; {SCROLLING & LOOKAHEAD BUFFER} SRCBYT: INTEGER; {-> CHAR IN PAGEBUF UNDER SCRUTINY} "TGTBYT: Iperating system handlers. )Variations in the source code are flagged by '<<<<<<<<' . )To adjust PRINTOUT to your particularNTEGER; {-> CHAR PUT SPOT IN LINE} PBUFTOP:INTEGER; {NUMBER OF CHARACTERS LOADED INTO PAGEBUF}  installation, search out all )such flags, read the comments, and edit in your decisions. ) )Printout supports a set of run-off commands. A Command is a line )containing only two characters, justified against the left margin. )The commands are... $^F {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for an FORMFEED Move to top of next page. $^O or ^0 OVERSTRIKE Suppress Line feed at end of this line. $^1 thru ^9 LINEFEEy losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, D Advance one thru nine blank lines. $^P PARAGRAPH If within 10 lines of bottom of page ,Formfeed. $^S Start slosses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of anyingle line spacing. $^D Start double line spacing. $^T Start triple line spacing.  patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without f$^Q Start quadruple line spacing.}   CONST "PAGEHEIGHT=66; {66 rows per physical page} " "{Choose one of the fourther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential.llowing two lines to drive printer or serial interface.} "{ADDRESS = -180; { -180 DEC = 177514 OCT = PRINTER #1} { <<<<<<<< }+  {FIRST THREE LINES OF EVERY PAGE}  LINEPTR: INTEGER; {SCANS HEADING & ETC LINE} "LINEEND: INTEGER; e has. For printer interface, " always use the 'WHILE...' line. For serial interface, use either line, or #neither if DATA S{CONTROLS HEADING SCAN END} "ALTLINE: BOOLEAN; {TRUE -> GET SOURCE FROM S } "PAGE,PAGECNT: INTEGER; {RUNNINET READY (pin 20 of RS-232) is not driven at all.} "REPEAT UNTIL SLU.REG^.XCS.RDY;{Ready bit wait (Serial, if active)}{<<<<<<<<G PAGE NUMBER}  PAGING: BOOLEAN; {TRUE -> INSERT PAGE NUMBERS} "COPIES: INTEGER; {NUMBER OF COPIES REQUESTED} "I, } "{WHILE SLU.REG^.XCS.RDY DO; {Error bit wait (Printer, always)}{<<<<<<<< } " "REPEAT UNTIL SLU.REG^.XCS.DUN; {WAIA: INTEGER; {GEN'L USE} "OVERSTRIKE: BOOLEAN; {FLAG TO OVERSTRIKE NEXT LINE} T ON DONE BIT} "SLU.REG^.XDB:=C; {SEND THE CHARACTER}  END;   PROCEDURE GETCCH;  VAR MASK: PACKED ARRA PPAG: CHAR; {PAGINATE? DEFAULT YES} "PHED: CHAR; {HEADING? DEFAULT NO} "PNUM: CHAR; {PAGE NUY[0..0]OF CHAR;  BEGIN "UNITREAD(2,MASK[0],1); CCH:=MASK[0]; "IF CCH IN ['a'..'z'] THEN CCH:= CHR(ORD(CCH)-32);  END;  PROMBERS? DEFAULT NO} "PSPAC: CHAR; {LINE SPACING. DEFAULT SINGLE} "PCOP: INTEGER; {NUMBER OF COPIES. DEFAULT ONECEDURE GETNUMBER (VAR N:INTEGER);  VAR "NUMBER:INTEGER; "COUNT:INTEGER;  PROCEDURE ECHO; BEGIN WRITE(CCH); COUNT:=COUNT+1; E} "PMARG: CHAR; {SPECIAL MARGINS? DEFAULT NO} "PMOR: CHAR; {ANY MORE? DEFAULT NO}  PTXT: STRING; ND;  BEGIN COUNT:= 0; "GETCCH; IF CCH = CHR(CR) THEN WRITE(N) "ELSE BEGIN NUMBER := 0; REPEAT  {FILENAME. DEFAULT SYSTEM.WRK.TEXT}  {PFRM: CHAR;} {INITIAL FF? DEFAULT NO} -{Use the above if prompting for initia$IF (CCH>='0') AND (CCH<='9') THEN &BEGIN NUMBER:= 10*NUMBER+ORD(CCH)-ORD('0'); ECHO; END; $IF (COUNT>0) AND (CCH=CHR(BS)) THl formfeed} {<<<<<<<<<<}  {PEJCT: CHAR;} {PAGE EJECT? DEFAULT NO} -{Use the above if prompting for page eject} {<<<<<EN &BEGIN WRITE(CHR(BS),' ',CHR(BS)); NUMBER:= NUMBER DIV 10; $ COUNT:= COUNT-1; END; ! GETCCH UNTIL CCH = CHR(CR); N "LINE: PACKED ARRAY [1..200] OF CHAR; {LINE UNDER CONSTRUCTION} "SOURCE:FILE; S:STRING; BLKNUM:INTEGER; {RUNNING FILE BLOC<<} -  {To drive the printer or serial interface through the operating system,  replace the entire procedure PNTBYT with theK NUMBER}  CCH:CHAR; {RESULT FROM GETCCH} "NUL:CHAR; {ALWAYS = CHR(0)}  LMARGIN,RMARGIN:INTEGER; {COLUMN following proceedure...  PROCEDURE PNTBYT(C:CHAR);  BEGIN UNITWRITE(6,C,1) END; !change the 6 above to 8 in order to drive tS ON PRINTER}  LINECNT: INTEGER; {NUMBER OF LINES PRINTED ON THIS PAGE}  LINESPERPAGE: INTEGER; {LINES he serial interface}   PROCEDURE PNTBYT(C:CHAR);  BEGIN TO PRINT PER PAGE}  SPACING: INTEGER; {SINGLE, DOUBLE, TRIPLE, QUAD LINE SPACING} "H: ARRAY[1..3]OF STRING; "{Choose one or none of the following two lines, depending upon what, if any, #sense the signal driving bit 15 of the interfac, "IF CCH<>CHR(CR) THEN C:=CCH; {Parameter is default} WRITELN(C);  END;   PROCEDURE PAGENUM;  VAR  CATCHER,J: INTEGER; "$upon the printer, and using the O/S drivers, one of these may need $to be removed to avoid double spacing or no spacing <<<<ZEROES:BOOLEAN; "PWRS: PACKED ARRAY [0..4] OF INTEGER;  BEGIN "FILLCHAR(LINE[1],200,CHR(SP)); "ZEROES:=TRUE; A:=PAGECNT; "P<<<<} " "{PNTBYT(NUL); {Repeat, If any filling is required after CR or LF <<<<<<<} "LINECNT:=LINECNT+1;  END;   PROCEDUREWRS[0]:=1; FOR I:=1 TO 4 DO PWRS[I]:=10*PWRS[I-1]; "J:=RMARGIN-7; "FOR I:=4 DOWNTO 0 DO $BEGIN &J:=J+1; &CCH:=CHR(A DIV PWR FORMFEED;  BEGIN "{PNTBYT(CHR(FF));} ${>>>>>>>> Use above for hardware FF, or below for software FF <<<<<<<<} "WHILE LINECNS[I] + 48); &IF CCH='0' THEN BEGIN IF ZEROES THEN BEGIN CCH:=' '; CATCHER:=J END END 1ELSE ZEROES:=FALSE; &A:=A MOD PWRS[I]; T=PBUFTOP THEN GETMORE; 1BYT:=PA PROCEDURE GETFILENAME;  BEGIN !WRITE('filename: ',PTXT,'>'); READLN(S); !IF LENGTH(S)<>0 THEN PTXT := S; I:=LENGTH(PTXT); GEBUF[SRCBYT]; { Pick up a byte } 1PAGEBUF[SRCBYT]:=NUL; { Drives the light show} 1SRCBYT:=SRCBYT+1; { Post increment } +!IF (I>0) AND (POS('.TEXT',PTXT)=0) THEN PTXT:=CONCAT(PTXT,'.TEXT'); !IF LENGTH(PTXT)>24 THEN BEGIN WRITELN('*Ill filename*'); END; $TRUE: BEGIN IF LINEPTR>LINEEND THEN BYT:=CHR(CR) ELSE -BEGIN BYT:=S[LINEPTR]; LINEPTR:=LINEPTR+1 END END "END  END; I:=0 END;  END; {RETURN WITH I=0 -> BAD / NO FILENAME}   PROCEDURE FILEOUT;  FORWARD;   PROCEDURE GETMORE; {GET A BLK FR  PROCEDURE PUSHBYT(C:CHAR);  BEGIN "IF TGTBYT<=200 THEN BEGIN LINE[TGTBYT]:=C; TGTBYT:=TGTBYT+1 END;  END;  OM FILE, MOVE TO TOP OF PAGEBUF}  BEGIN ${ Clear space in text space } "FILLCHAR(PAGEBUF[0],512,NUL); ${ Sentinel in 1st chaPROCEDURE TAB(CNT:INTEGER);  BEGIN "WHILE CNT>0 DO BEGIN PUSHBYT(CHR(SP)); CNT:=CNT-1 END  END;   BEGIN {MAKELINE}  FILr in case of EOF or I/O error } " { EOF EXIT does not prevent a call to LINEOUT } "PAGEBUF[0]:=CHR(CR);  { Check for endLCHAR(LINE[1],200,CHR(SP)); TGTBYT:=LMARGIN; LINEDONE:=FALSE; "REPEAT $POPBYT; $IF ORD(BYT)NUL,PAGEBUF[511])+512; ${ Bump BLKNUM for next time } "BLKNUM:=BLKNUM+1; SRCBYT:=0; $END;  PROCEDURE LINEFEILE I>SP DO BEGIN I:=I-1; PUSHBYT(CHR(SP)) END END; &LINEDONE:= BYT=CHR(CR) $END ELSE ${ Printable character section } &PUSH:= NUMBER; END;  END {GETNUMBER};  PROCEDURE NOYES(VAR C:CHAR);  BEGIN "REPEAT GETCCH UNTIL CCH IN ['Y','N',' ',CHR(CR)]; ED;  BEGIN "PNTBYT(CHR(CR)); PNTBYT(CHR(LF)); {These terminate each line. Depending - mber at top } $IF LINECNT=0 THEN $BEGIN &IF PAGING THEN BEGIN PAGENUM; LINEOUT END; &LINECNT:=1; $END; $ SE FOR A:=1 TO 3 DO H[A]:=''; &PROMPT('Page numbers? '); WRITE(PNUM,'>'); NOYES(PNUM); " IF PNUM='Y' THEN (BEGIN PROMPT('E${ check for possible header on next three lines } $IF (LINECNT IN [1..3]) AND (LINESPERPAGE>0) THEN $BEGIN S:=H[LINECNT]; Lnter starting page number: '); (WRITE(PAGE,'>');GETNUMBER(PAGE); WRITELN; .IF PAGE=0 THEN PAGE:=1; PAGING:=TRUE END (ELSE PAGBYT(BYT); "UNTIL LINEDONE;  END; "  PROCEDURE COMMAND(C:CHAR);  BEGIN "CASE C OF "'O','0': OVERSTRIKE:=TRUE;{This may notINEEND:=LENGTH(S); +LINEPTR:=1; ALTLINE:=TRUE; MAKELINE; LINEOUT; +ALTLINE:=FALSE END ${ else output a line } $ELSE BEGIN MA work, depending on printer <<<<<<<< } "'F': FORMFEED; "'1','2','3','4','5','6','7','8','9': FOR CCH:=C DOWNTO '1' DO LINEFEEKELINE; LINEOUT END; {MAKELINE CALLS GETMORE AS REQ'D} $IF (LINESPERPAGE>0)AND(LINECNT>LINESPERPAGE) THEN FORMFEED; "UNTIL FALD; "'P': IF LINECNT>LINESPERPAGE-10 THEN FORMFEED; "'S': SPACING:=1;  'D': SPACING:=2; "'T': SPACING:=3; "'Q': SPACING:=4SE; {EXIT IN GETMORE GETS US OUT}  END;   PROCEDURE PROMPT(S:STRING);  BEGIN "FOR I:=1 TO 35-LENGTH(S) DO WRITE(' '); WRIT "END;  END;   PROCEDURE LINEOUT;  VAR LFTBYT, RYTBYT: INTEGER;  BEGIN  { Find right hand edge of line } E(S);  END; "  PROCEDURE INIT;  BEGIN  PPAG:='Y';PHED:='N';PNUM:='N';LINESPERPAGE:=49;  PAGE:=1;PSPAC:='S';PCOP:=1;PMARG:="RYTBYT:=SCAN(-199,<>CHR(SP),LINE[200])+200; { Right hand edge 1..200}  { Truncate right hand edge } "IF RYTBYT>=RMARGIN THEN'N';PTXT:='SYSTEM.WRK.TEXT';  LMARGIN:=1;RMARGIN:=80;PMOR:='N';NUL:=CHR(0);  {PFRM:='N';}{Use this if prompting for initial fo RYTBYT:=RMARGIN;  { Check for control commands } "IF (RYTBYT=2)AND(LINE[1]='^') THEN COMMAND(LINE[2]) ELSE $BEGIN &IF RYTBYrmfeed, below}{<<<<<<<}  {PEJCT:='N';}{Use this if prompting for page eject, below}{<<<<<<<}  WRITELN('PRINTOUT... text file pT>=1 THEN FOR TGTBYT:=1 TO RYTBYT DO PNTBYT(LINE[TGTBYT]); &IF OVERSTRIKE THEN PNTBYT(CHR(CR)) (ELSE CASE ALTLINE OF /FALSE: rinting utility... V02-01');  END;   PROCEDURE PAGINATE;  BEGIN   { Are we to page? } FOR TGTBYT:=SPACING DOWNTO 1 DO LINEFEED; /TRUE: LINEFEED -END; &OVERSTRIKE:=FALSE; $END  END;   PROCEDURE FILEOUT;  B"PROMPT('Paginate? '); WRITE(PPAG,'>'); NOYES(PPAG);  IF PPAG='N' THEN BEGIN PAGING:=FALSE; LINESPERPAGE:=0 END ELSE  $BEEGIN "BLKNUM:=2; {SKIP FIRST TWO BLOCKS} "PBUFTOP:=0; {FIRST UNUSED BYTE IN PBUF} "SRCBYT:=0; {PAGEBUF SCANNER} "LINECNT:=GIN ${ Get lines per page } &REPEAT PROMPT('Enter lines per page: '); WRITE(LINESPERPAGE,'>'); &GETNUMBER(LINESPERPAGE); &WR0; {START AT LINE 1 ON PAGE (0 triggers page numberer} "PAGECNT:=PAGE; {START AT GIVEN STARTING PAGE} "PAGEBUF[0]:=CHR(CR); {IITELN; UNTIL LINESPERPAGE IN [10..100]; ${ Get heading strings and/or page number start } &PROMPT('Heading? '); WRITE(PHED,'>'NCASE NON-INTEGRAL # OF LINES IN BLK} "ALTLINE:=FALSE; OVERSTRIKE:=FALSE; {RESET FLAGS} "REPEAT ${ check for possible page nu); NOYES(PHED); &IF PHED='Y' THEN (BEGIN FOR A:=1 TO 3 DO BEGIN WRITELN('Enter Heading line #',A); EREADLN(H[A]) END END (EL. MARGIN:=1; RMARGIN:=80 END; " "{ Set up printer } "SLU.ADR := ADDRESS; "SLU.REG^.XCS.INT:=FALSE; "{Remove the above two lines if driving interface thru O/S handlers <<<<<<<<} " "{PROMPT('Initial form feed? '); WRITE(PFRM,'>'); 꺡ö꺡ôê¢Ø»­Õ ƈžÆˆ¾«ƒ²©ƒ²³ÿþÿ‹¡©ƒ² •«ƒ²­@¶©ƒ²Í¶‚¸­" NOYES(PFRM); IF PFRM='Y' THEN FORMFEED;} ${>>>>>>>> Use above for hardware FF, or below for software FF <<<<<<<<} "PROMPT('ÌÏ©ƒ² á ¶ØøÍ ¹VÌ©ƒ²0Ä©ƒ²9È„¡ Ù�©ƒ²‚0•ÌÎÚÅ©ƒ²Ä¡"¶Í¶ ͶÍÙ †ÌÚ•ÌÏ©ƒ² áöØÙš­V xAlign top-of-form'); WRITELN; "PROMPT('Type space for linefeed; Type to continue'); "REPEAT GETCCH; IF CCH=' ' THEN LINEFÏ©ƒ² —³Ã@œ‹¡ö©ƒ² ˡةƒ²š¶ØøÍ¶Í­8@¥‚üÇȈ•ÇÈ ž Ì©„7«„;ƈ¤š«„<Ì ©„<àÈ¡$Æ©„<ˆEED; UNTIL CCH=CHR(CR); WRITELN;{<<<<<<<} " "UNITWRITE(3,LIGHTS[0],35); {GIVE THE FOLKS A SHOW} "REPEAT COPIES:=COPIES-1; FIL¤ Æ©„<•ˆ¤ø�š©„<‚«„<¹ö©ƒ´•Ì«„<Ì ©„<àÄ¡Z؂̩„;Æ©„<ˆ¤ø†0‚«ƒ²©ƒ²0á Ú¡ «ƒ²ØÌ¹Ì©„;Æ©„<ˆ¤øŽ«„;¥‚üØÇȈ•©ƒ²ING:=FALSE $END;  END;    BEGIN  INIT;  REPEAT "REPEAT $WRITE('Text '); GETFILENAME; $RESET(SOURCE,PTXT); I:=IORESULEOUT; FORMFEED UNTIL COPIES<=0; "UNITWRITE(3,LIGHTS[0],7); {Turn off light show} CLOSE(SOURCE);  "{PROMPT('Eject page? ');T; IF I<>0 THEN WRITELN('?File not found?'); "UNTIL I=0; "PAGINATE; $  { Get number of lines per line }  WRITE(PEJCT,'>'); "NOYES(PEJCT); IF PEJCT='Y' THEN FORMFEED;} 0{ Above is most useful for software FF <<<<<<<<} " "WRITELN;"PROMPT('Line spacing: S)ingle, D)ouble, T)riple, or Q)uad? '); "WRITE(PSPAC,'>'); REPEAT GETCCH #UNTIL CCH IN['S','D','T','Q PROMPT('Is there any more? '); WRITE(PMOR,'>'); "NOYES(PMOR);  UNTIL PMOR<>'Y';  END. "  ',CHR(CR)]; #IF CCH <> CHR(CR) THEN PSPAC := CCH; #COMMAND(PSPAC); WRITELN(PSPAC); $  { Get number of copies to run out } " PROMPT('Enter number of copies: '); WRITE(PCOP,'>'); " GETNUMBER(PCOP); WRITELN; COPIES := PCOP; " "{ Non standard margins ??? } "PROMPT('Non-standard margins? '); WRITE(PMARG,'>'); " NOYES(PMARG);IF PMARG='Y' THEN $BEGIN REPEAT PROMPT('Left marginä PRINTOUT  column: '); $WRITE(LMARGIN,'>'); GETNUMBER(LMARGIN); WRITELN; $UNTIL LMARGIN IN [1..198]; $REPEAT PROMPT('Right margin colu mn: '); $WRITE(RMARGIN,'>'); GETNUMBER(RMARGIN); WRITELN; $UNTIL (RMARGIN IN [1..199])AND(RMARGIN>LMARGIN); $END ELSE BEGIN L/ ÇȈ•ÇÈ ž ©ƒµ«‚úÌÎØ É¡;Ø Ã¡ ©‚ú•Ž•ÎØáÎØ«„<©ƒ³Ì©„< Å¡ ©„<•«„< ιöØ Ã̹ØÎÙ¡ô­J% n عM«„=¹ôÏ ¹ôØ«ƒ²1¶>Í¥„CΩ„CYáîצLeft margin column: 橃µÍ ¶>Í¥ƒµÎ¶Í©ƒµÇÆ”‹¡ò¦Right margin column: ×橃´Í ¶>Ì©ƒ²ÙÄ¡ Ï ©ƒ²•«ƒ²¹ö¹y©ƒ¶©ƒ· •Å¡Ï ¹j«ƒ¸¹d«ƒ¸¹^«ƒ¸¹X«ƒ¸¹R¬Î0T¹JUMOQSUWY[] "$&(B,{02468:Í¥ƒ´Î¶Í©ƒ´ÇÇ”‹©ƒ´©ƒµÅ„¡ð¹«ƒµP«ƒ´Ç¬‘«ê»×¦Align top-of-formζÍצ.Type space for linefeed; Type to conti<>“oPFf\­’ ®ÇÇ‘ ¥‚üÇÈÇȈ•ž ÇÈ‚ÌØ©ƒ´Ä¡©ƒ´ÌØÃ¥‚üÇȈ•¾^Ä¡¥‚üÇȈ•¾Ï¹nØÄ¡(«‚úØÌ©‚úÚÈ¡¥nueÎΩƒ² áÎ ©ƒ² áì¶Í¥Çôˆ¤#ž©„:•«„:Î Î ©„:È¡ê¥Çôˆ¤ž¥ƒ`ͶͦIs there any more? ×ζ©„DÍ‚ü©‚úÇȈ•¾Ï©‚ú‚«‚ú¹ö©„=¡ Ϲ3©„6¹"©ƒ¸«‚úÌ©‚úÚÄ¡ Ï ©‚ú•«‚ú¹ô¹Ï ¹ ¬¹*«„=­+f Æ«ƒ±«‚û«‚ù«ƒ¶©„8«„7¶>Í¥„DΩ„DYË¡èÆƒ`ÍÁØr�O’IæÖÞtV"Hh–Ü 6 R ÊÆ Š ’ T Ú v ¼ *tandard margins? ×ζ©„CÍ¥�ùÇÿˆ ¿«„6«„=©ƒ¶Ã¡ ©„9¡ÏÏ«ƒ¶©ƒ¶‹©ƒ·Å„¡,¥ƒˆ¥ƒ¹©ƒ¶ˆ•¤)ªP¥ƒˆ¾«„5«„4«„6Ï Ï«„6¹Ï Ï©ƒ·Å©ƒ¶©ƒ·Å„¡Ï ¡ö­©i¶>Í¥„CΩ„CYáîצLeft margin column: 橃µÍ ¶>Í¥ƒµÎ¶Í©ƒµÇÆ”‹¡ò¦Right margin column: ×橃´Í ¶> š ÆتP«„<#ƾ•Ì+©„<Ê+È¡¶ Í©„<‚«„<¹ö¶ÆÍ­%T>Y«„>N«„?N«„@1«ƒ·«„8S«„A«„BN«„C¥„E¦SYSTEM.WRK.TEXTתÍ¥ƒ´Î¶Í©ƒ´ÇÇ”‹©ƒ´©ƒµÅ„¡ð¹«ƒµP«ƒ´Ç¬‘«ê»×¦Align top-of-formζÍצ.Type space for linefeed; Type to contiP«ƒµP«ƒ´N«„D«ƒ³¶צ0PRINTOUT... text file printing utility... V02-01Ͷͭ�צ Paginate? ϶©„>Ͷ>Í¥O^„>Ï©„>Ná «„9«ƒ·¹ð¦Enter lines per page: ×϶©ƒ·Í ¶>Í¥ƒ·Ï¶Í©ƒ·³ÿÿÿÿÿÿÿÿÿÿü‹¡öצ Heading? ϶©„?Ͷ>e¡¿©„<•«„<¹ôÚ¡ ¥‚üØÇȈ•0¿¥ƒˆ×¦PageªP¥ƒˆ›¥‚üØ•ÇȈ•ž­”Ï ¶¦ filename: ×Ͷ¥„EͶ>Ͷ¥ƒˆPͶÍÍ¥„?Ï©„?Yáb«„;Ì©„;ØÈ¡R¶¦Enter Heading line #×Ͷ©„;Í ¶Í¶¥ƒ¹©„;ˆ•¤)PͶͩ„;‚«„;¹ô¹*«„;Ì©„;ØÈ¡¥ƒˆ¾Ë¡¥„E¥ƒˆªP¥„E¾«„<©„<Åצ.TEXT¥„EÍÄ¡!¥„EÌÆ¥„EPÍÆצ.TEXTUÍÆªP¥„E¾Å¡"¶צ*Ill filename*Ͷͫ„¥ƒ¹©„;ˆ•¤)¦×ªP©„;‚«„;¹òצPage numbers? ϶©„@Ͷ>Í¥„@Ï©„@YáO¦Enter starting page number: ×϶©„8Í ¶>Í<­©V¾¥�ùÇÿˆÇ©ƒ³ž ¥�ùÇÿˆ ¿¥ƒ`¥�ùÇÿˆ©ƒ±Íá žÇÿ‘©ƒ³¥�ùÇÿÇÿˆž Ç‚«‚û©ƒ±‚«ƒ±«‚ù­Ãl  Ï¥„8϶ͩ„8á«„8«„9¹«„9­«“Òƃ`Æ„ŒÇ‘ÍÕ�xζ¦Text ×ÍÎ¥ƒ`¥„EÍž"«„<©„<Ë¡ ¶¦?File not fou Ï©ƒ¶‚«ƒ¶­ ©ƒ¶BÉ¡Ï ¹ö«ƒ¶©„7‚«„7­ " ©„6¹W©‚ù©‚ûÄ¡Ï ¥�ù©‚ùÇÿˆ¾¸¥�ù©‚ùÇÿˆ©ƒ³¿©‚ù‚«‚ù¹0©„4©„5Å¡ nd?×Ͷͩ„<áöΦ3Line spacing: S)ingle, D)ouble, T)riple, or Q)uad? ×ζ©„AͶ>ÍΩƒ² —³œ‹¡ô©ƒ² ˸¹¥ƒˆ©„4›¾¸©„4‚«„4¹ ¬ƒ¹_.­p©‚úÇÈÈ¡¥‚ü©‚úÇȈ•Ø¿©‚ú‚«‚ú­(ØÅ¡ ®Ø•̹ö­È ¥‚ü¡©ƒ²«„A©„Aζ©„AͶͦEnter number of copies: ×ζ©„BÍ ¶>Í¥„Bζͩ„B«„:¦Non-standard margins? ×ζ©„CÍ0  STATUSWORD: INTEGER; FIRST: INTEGER; SECOND: INTEGER; EXTENSION: INTEGER; LGTH: INTEGER; FILLER: INTEGER; DATE: DATEWRD END; XFERTYPE=(RT11EDIT,BINARY,NONE); " DIREC = RECORD CASE BOOLEAN OF FALSE: (BUF: PACKED ARRAY [0..1023] OF CHAR); TRUE: (SEGSAVAIL: INTEGER; NEXTSEG: INTEGER; HIGHSEG: INTEGER; FILLER: INTEGER; BEGINSEG: INTEGER; ENTRY: ARRAY [0..71] OF FILENTRY) END; VAR I, BLOCK,FILESIZE: INTEGER; B:BOOLEAN; "CH:CHAR; OUT! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any: CHARS; RT11: DIREC; "XFEROPTION:XFERTYPE; TITLE,WANTED:PACKED ARRAY[0..9] OF CHAR; "S:STRING; "INBUF,OUTBUF:PACKED ARRA losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, lY[0..1023] OF CHAR; "FOUT:FILE; MONSTR: PACKED ARRAY[1..12] OF STRING;  PROCEDURE DERAD50 (WORD: INTEGER; VAR STORE: CHARS)osses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any ; VAR I: INTEGER; NEG: BOOLEAN; BEGIN NEG := WORD < 0; IF NEG THEN WORD := WORD + 32767 + 1; patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fu STORE[2] := CHR (WORD MOD 40); IF NEG THEN BEGIN WORD := WORD DIV 40 + 819; IF STORE[2] >= CHR(32) THEN WORDrther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential.  := WORD + 1; STORE[2] := CHR( (ORD(STORE[2])+8) MOD 40) END ELSE WORD := WORD DIV 40; STORE[1] := CHR (WORD MIt may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY OD 40); STORE[0] := CHR (WORD DIV 40); FOR I := 0 TO 2 DO BEGIN WORD := ORD(STORE[I]); IF WORD = 0 THEN WORDTERAK CORPORATION ="ALL RIGHTS RESERVED"} (*$I-*)  PROGRAM RT2PAS; CONST EMPTY = 512; PERM = 1024; TENTATIVE = 256; E := ORD (' ') ELSE IF WORD <= 26 THEN WORD := WORD + 64 ELSE IF WORD >= 30 THEN WORD := WORD + 18 ENDMARK = 2048; TYPE DATEWRD = PACKED RECORD 0YEAR: 0..31; (*YEAR-72*) 0DAY: 0..31; (*ALLOCATE*) 0MONTH: 0..31; (*5 BITS EA*) 0JUNK: 0..1 (*INTEGER FILL*) ,END; "CHARS = PACKED ARRAY [0..2] OF CHAR; FILENTRY = RECORD1 2TITLE[6]:='.'; 2MOVERIGHT(OUT[0],TITLE[7],3); 0END; ,END; *B:=(WANTED=TITLE); *IF NOT B THEN ,BEGIN .BLOCK:=BLOCK+LGTH; "I,BLKNUM,PIN,POUT,BLANKCNT:INTEGER; "INCH:CHAR; "NEWLINETOG:BOOLEAN;   BEGIN "FILLCHAR(INBUF,512,CHR(0)); "FILLCHAR(OULSE (*ERROR-CHANGE TO BLANK*) WORD := ORD (' '); STORE[I] := CHR(WORD) END END (*DERAD50*); PROCEDURE ENRAD (NUM .I:=I+1; ,END; (END (*WHILE*); $IF B THEN FILESIZE:=RT11.ENTRY[I].LGTH $ELSE BEGIN WRITELN('?FIL NOT FND?'); BLOCK:=-1 ENDBARS: INTEGER; VAR I: INTEGER); VAR M, N, P, J: INTEGER; BEGIN J := NUMBARS DIV 10; I := NUMBARS MOD 10 + 40 * (J MOD 10) ;  END (*LOCATEFILE*);   FUNCTION GETWANTED:BOOLEAN;  VAR I,J:INTEGER; BEGIN  WRITE('Enter source file title: '); "GETW+ 1600 * (J DIV 10) - 16306 END (*ENRAD*);  PROCEDURE SHOWDIR;  BEGIN "UNITREAD (5, RT11, 1024, 6); (*READ BLOCKS 6-7 = RT1ANTED:=FALSE; "WANTED:=' '; (*OVERLAY ONTO A BED OF SPACES*) READLN(S); "IF LENGTH(S)>0 THEN $BEGIN &I:=POS('.',S1 DIRECTORY*) WRITELN; WRITELN (' TITLE SIZE DATE'); WRITELN; I := 0; BLOCK := RT11.BEGINSEG; WITH RT11 DO ); &IF I<>-1 THEN (*FORCE TITLE SANS EXTENSION*) (FOR J:=I TO 6 DO INSERT(' ',S,I); (*INTO FIRST 6 POS WHILE ENTRY[I].STATUSWORD <> ENDMARK DO WITH ENTRY[I] DO "BEGIN $IF STATUSWORD = PERM THEN &BEGIN (DERAD50 (FIRST, OUT); ITIONS *) &IF LENGTH(S)<=10 THEN (*IF LENGTH IS REASONABLE*) (MOVERIGHT(S[1],WANTED[0],LENGTH(S)); &GETWANTED:=TRUE; (*IF LEN(WRITE (OUT); (DERAD50 (SECOND, OUT); (WRITE (OUT); (DERAD50 (EXTENSION, OUT); (IF OUT <> ' ' THEN WRITE ('.',OUT) ELSE WRGTH NOT RESONABLE, LOOKUP BLANK TITLE*) $END; END (*GETWANTED*);   PROCEDURE GETTGT;  BEGIN "REPEAT $WRITE('Enter target ITE (' ':4); (WRITE (LGTH:6); (IF (DATE.MONTH IN [1..12]) AND (DATE.DAY IN [1..31]) THEN ( WRITE(' ':4,DATE.DAY:2,'-',MONSTRfile title: '); $READLN(S); $B:=FALSE; $IF LENGTH(S)>0 THEN $BEGIN &REWRITE(FOUT,S); [DATE.MONTH],'-',DATE.YEAR+72:2); & WRITELN; &END; $BLOCK := BLOCK + LGTH; $I := I + 1 "END; WRITELN;  END (*SHOWDIR*); &IF IORESULT=0 THEN B:=TRUE ELSE WRITELN('?ILL FILE DESC?'); $END;  UNTIL B;  END; (*GETTGT*)   FUNCTION GETMODE:BOOLEA  PROCEDURE LOCATEFILE;  VAR I,J:INTEGER;  BEGIN "UNITREAD (5, RT11, 1024, 6); (*READ BLOCKS 6-7 = RT11 DIRECTORY*) I:=0N;  BEGIN "WRITE('Transfer Mode: B)inary or T)ext ? '); "READLN(S); CH:=CHR(0); IF LENGTH(S)>0 THEN CH:=S[1]; "XFEROPTION:=N; "B:=FALSE; BLOCK:=RT11.BEGINSEG; "WITH RT11 DO $WHILE (ENTRY[I].STATUSWORD<>ENDMARK) AND (NOT B) DO &WITH ENTRY[I] DO (ONE; "IF CH IN ['B','b'] THEN XFEROPTION:=BINARY; "IF CH IN ['T','t'] THEN XFEROPTION:=RT11EDIT; "GETMODE:=XFEROPTION<>NONE; BEGIN *IF STATUSWORD=PERM THEN ,BEGIN .DERAD50(FIRST,OUT); .MOVERIGHT(OUT[0],TITLE[0],3); .DERAD50(SECOND,OUT); .MOVERIGHT END; (*GETMODE*) &  PROCEDURE PUTPAGE(VAR POUT:INTEGER);  VAR I:INTEGER; "CH:CHAR;  BEGIN "I:=BLOCKWRITE(FOUT,OUTBUF,2);(OUT[0],TITLE[3],3); .DERAD50(EXTENSION,OUT); .IF OUT=' ' THEN 0FOR J:=6 TO 9 DO TITLE[J]:=' ' .ELSE 0BEGIN  "POUT:=0; "FILLCHAR(OUTBUF,1024,CHR(0));  END (*PUTPAGE*);  PROCEDURE TRANSLATE;  CONST "LF=10; "CR=13; "DLE=16;  VAR2 INBUF,1); &IF I<>1 THEN (BEGIN *WRITELN; *WRITE('OUTPUT ERROR, program terminated', CHR(7(*BEL*))); *EXIT(PROGRAM); ÙÉÌÛ¡ ÙÇÿ‚‚ÌØˆÙ(Ž¿Û¡*Ù(†Ç3‚ÌØˆ¾ Ä¡Ù‚ÌØˆØˆ¾‚(Ž¿¹Ù(†Ì؈Ù(Ž¿ØˆÙ(†¿ÌÌÚÜÈ¡;ØÚˆ¾ÌÙá ̹ÙÈ¡(END; $END;  END (*XBINARY*);  BEGIN (*MAIN*) "MONSTR[1]:='Jan'; MONSTR[2]:='Feb'; MONSTR[3]:='Mar'; "MONSTR[4]:='Apr'; Ù@‚̹Ùġق̹ ÌØÚˆÙ¿Ú‚Ì¹ö­B®Ù †ÌØÙ Ž(Ú Ž�‚Ç@Ú †�‚Dz?•š­$¥ Çž¶Í¶צ TITLE SIMONSTR[5]:='May'; MONSTR[6]:='Jun'; "MONSTR[7]:='Jul'; MONSTR[8]:='Aug'; MONSTR[9]:='Sep'; "MONSTR[10]:='Oct'; MONSTR[11]:='ZE DATEͶͶͫõ«¥ìGˆ¤øÇË¡ò¥ìGˆ¤ÌØøÇáöØù¥Ï¶¥ÍØú¥Ï¶¥ÍØû¥Ï¥Ð ×· ¡¶.Ͷ¥Nov'; MONSTR[12]:='Dec'; "WRITELN('RT2PAS RT-11 TO PASCAL FILE TRANSFER UTILITY V01-01'); "WRITELN('RT-11 structur͹¶ ͶØüÍ Ø¢ ºÇþ‹Ø¢º³ÿÿþÿ‹„¡K¶ ͶآºÍ ¶-Ͷ¥†fØ¢ º ˆ•¤)Ͷ-ͶآºH‚Í TBUF,1024,CHR(0)); "I:=BLOCKWRITE(FOUT,OUTBUF,2,0); (*2 blocks of nuls to start*) "BLANKCNT:=0; POUT:=0; "NEWLINETOG:=FALSEed disk is assumed to be in QX1 drive (Unit 5)'); "REPEAT $REPEAT &WRITE('Display the directory? (y/n)'); &READLN(S); PAGE(O; FOR BLKNUM:=1 TO FILESIZE DO $BEGIN &UNITREAD(5,INBUF,512,BLOCK); &BLOCK:=BLOCK+1; &PIN:=0; &WHILE PIN<=511 DO UTPUT); &IF LENGTH(S)>0 THEN IF S[1] IN ['Y','y'] THEN SHOWDIR; $ IF GETWANTED THEN LOCATEFILE ELSE BLOCK:=-1; $UNTIL BLOCK>& BEGIN *INCH:=INBUF[PIN]; IF NOT (ORD(INCH) IN [0,LF]) THEN ,BEGIN .WRITE(INCH); IF INCH=CHR(CR) T=0; $CLOSE(FOUT); (*COVERS RECALL TO GETTGT*) $GETTGT; "UNTIL GETMODE; "CASE XFEROPTION OF $RT11EDIT: TRANSLATE; $BINARY:XHEN 0BEGIN 2OUTBUF[POUT]:=CHR(CR); 2POUT:=POUT+1; NEWLINETOG:=TRUE; 2BLANKCNT:=0; 2IF POUT>940 THEN PUTPABINARY; "END (*CASE*); "CLOSE(FOUT,LOCK); WRITELN('*** FILE TRANSFER DONE ***');  END. GE(POUT); 0END .ELSE 0IF NEWLINETOG THEN 2BEGIN 4IF INCH=' ' THEN 6BLANKCNT:=BLANKCNT+1 4ELSE 6BEGIN 8OUTBUF[POUT]:=CHR(DLE); OUTBUF[POUT+1]:=CHR(ORD(' ')+BLANKCNT); NEWLINETOG:=FALSE; 8OUTBUF[POUT+` RT2PAS 2]:=INCH; 8POUT:=POUT+3; 6END; 2END (*NEWLINETOG*) 0ELSE 2BEGIN 4OUTBUF[POUT]:=INCH; 4POUT:=POUT+1; 2END; *END (*IF INB UF...*); *PIN:=PIN+1; (END (*WHILE*); $END (*FOR*); "PUTPAGE(POUT);  END (*TRANSLATE*);  PROCEDURE XBINARY;  VAR I,BLKNUM:INTEGER;  BEGIN "FOR BLKNUM:=1 TO FILESIZE DO $BEGIN &UNITREAD(5,INBUF,512,BLOCK); &BLOCK:=BLOCK+1; &I:=BLOCKWRITE(FOUT,3  š¥†>¥‚>Ç‘ÍÌØš¥‚>Çž ­t* ¥„>Çž ¥‚>Çž ¥†>¥‚>ÍÌÌÌÌÌêÌÛßȡ>Çëžë‚«ÌÚÇÿÈ¡ò¥„>ÚÇÿˆ¾ÌÝÇ‹“¡ö¶ÝÍÝ Ã¡#¥‚>ÙÇÿˆ ¿Ù‚ÌÌÌÙǬÅ¡ÆÏ ¹PÞ¡=Ý Ã¡Ø‚Ì¹/¥‚>ÙÇÿˆ¿¥‚>Ù‚Çÿˆ Ø‚¿Ì¥‚>Ù‚ÇÿˆÝ¿Ù‚̹¥‚>ÙÇÿˆÝ¿Ù‚Ìڂ̹ôۂ̹ðÆÏ ­Ì· ÌêÌØÚÈ¡m¥„>Çëžë‚«¥†>¥„>Ç‘ÍÌÙË¡<¶Í¶צ OUTPUT ERROR, program terminatedͶ͞؂̹ö­t‚ Ɔ>ƇjÇ‘ÍÕ�4¥†f ˆ•¤)¦JanתP¥†f ˆ•¤)צFebªP¥†f ˆ•¤)¦MarתP¥†f ˆ•¤)צAprªP¥†f ˆ•¤)¦MayתP¥†f ˆ•¤)צJunªP¥†f ˆ•¤)¦JulתP¥†f ˆ•¤)צAugªP¥†f  ˆ•¤)¦SepתP¥†f  ˆ•¤)צOctªP¥†f  ˆ•¤)¦NovתP¥†f  ˆ•¤)צDecªP¶¦>RT2PAS RT-11 TO PASCAL FILE TRANSFER UTILITY  {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for an V01-01×ͶͶ¦ÍÎΡô©‚ ¹Î ¹Î ¹ ¬¹ ¥ˆ¥‚ ˆžÚû¥Ï¥Ð ׯ ¡Ì ÌØÛÈ¡¥‚Ø ˆ ¿Ø‚̹ö¹¥‚ ˆ.¿¥ˆ¥‚ ˆž¥‚ ¥‚¯ «í“¡ ëÚü‚«Ù‚̹ôí¡ ¥ÙGˆ¤¥†>Ͷצ*** FILE TRANSFER DONE ***ͶÍƆ>ÍÁÚÜžrxDäl,€ª JulתP¥†f ˆ•¤)צAugªP¥†f  ü«¹!¶צ ?FIL NOT FND?Ͷ͑«­3êƒ ¶¦Enter source file title: ×ÍÌ¥‚ ×Ð ¨¶¥‚PͶ͈•¤)¦SepתP¥†f  ˆ•¤)צOctªP¥†f  ˆ•¤)¦NovתP¥†f  ˆ•¤)צDecªP¶¦>RT2PAS RT-11 TO PASCAL FILE TRANSFER UTILITY ¥‚¾Å¡Q¦.×¥‚ÍÌÛ‘Ë¡ÛÌÌÚÜÈ¡צ ¥‚PÛÍڂ̹ö¥‚¾ È¡¥‚›¥‚ ˆ¥‚¾žÌ­9¬¶¦Enter target file title: ×Ͷ¥‚PͶͫ¥‚¾Å¡5¥†>¥‚Íž"᫹¶צ?ILL FILE DESC?ͶÍí¡ö­Íz ‚¶¦"Transfer Mode: B)inary or T)ext ? ×Ͷ¥‚PͶͫ¥‚¾Å¡¥‚›¾««‚ ¡«‚ î³Í‹¡«‚ ©‚ ËÌ­O^¥ È 4  It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BYAN; {DONE...true-> character received} 0BUNK: 0 .. 7; 0OVF: BOOLEAN; {Software flag...ring buffer overflow occured} 0OVR:  TERAK CORPORATION ="ALL RIGHTS RESERVED"}  {Program to emulate a terminal to a 'HOST' computer system. This HOST is #typic BOOLEAN; {Overrun hardware error occured} 0BRK: BOOLEAN; {Continuous break detected} 0PTY: BOOLEAN; {Parity error detectally a time-sharer using telecom, but can also be another local ed} 0ERR: BOOLEAN {Inclusive OR of above four bits}  END;  XMITCS = PACKED RECORD 0BREAK: BOOLEAN; {Xmit cont's br#stand-alone computer. There are four local commands: receive file, #send file, emulate terminal, and quit. The serial intereak} 0JUNK: 0 .. 31; 0INT: BOOLEAN; {Interrupt enable} 0DUN: BOOLEAN; {DONE...true-> character received} 0BUNK: 0 .. 127face is #supported by our own handler (rather than REMOTE:) to maximize the #buffer space, minimize latency, and detect all er; 0RDY: BOOLEAN {Data terminal ready (static ready signal) }  END;  CSDB = PACKED RECORD /RCS: RECVCS; /RDB: CHAror conditions. Also, #the console is polled, and the system disk handler runs interruptable, #all to minimize the possibilitR; /JNK: CHAR; /XCS: XMITCS; /XDB: CHAR  END;  QUEUE = PACKED ARRAY [0..QUEUESIZE] OF CHAR; {Ring buffer for receiver} y of overrun during data file reception. #The emulated terminal will be a Data Media. However, by translating #control charact HANDLER = RECORD ,QBASE: INTEGER; {Address of ring buffer} ,QHEAD: INTEGER; {Index for insertion} ,QTAIL: INTers, any terminal could be emulated. Parts of TERMINAL #which are HOST dependent, are flagged by... <<<<<<<< .}  {$S+EGER; {Index for extraction} ,STATUS: RECVCS; {Status of reception} ,CODE: ARRAY [0..29] OF INTEGER *END; {N}  {$R-}  {$I-} PROGRAM TERMINAL; CONST HALFDUPLEX = FALSE; {Change to TRUE to run half duplex} QUEUESIZE = 16384; ote that STATUS is addressable as CODE[-1].}  CLKHANDLER = ARRAY [0..15] OF INTEGER;   VAR $I,J,LINECNT: INTEGER; $ABORT:  NUL = 0; BEL = 7; &BS = 8; {Non-destructive backspace} LF = 10; FF = 12; {Clear Console} &CR = 13; BOOLEAN; $CH: CHAR; $SRC,TGT,S: STRING; $ALPHALOCK: BOOLEAN; $TXTFILE: TEXT; $BINFILE: FILE; $BLKFILE: FILE; $  CSLU, losses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any DLE = 16; {Preamble for space compression} DC2 = 18; {Keystroke to toggle ALPHALOCK}  patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without f HOME = 25; {Home cursor} &EOM = 25; CNTRLZ=26; {End of file char} &EOL = 29; {Erase to end-of-line} &DEL = 127; urther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential.&FOREVER = FALSE;   TYPE  RECVCS = PACKED RECORD 0JUNK: 0 .. 63; 0INT: BOOLEAN; {Interrupt enable} 0DUN: BOOLE5  {CONSOLE SLU}  HSLU: {HOST SLU} 'RECORD CASE BOOLEAN OF )TRUE: (ADR: INTEGER); )FALSE:(REG: ^CSDB) 'END; $  QEN $BEGIN &CH:=CSLU.REG^.RDB; &READCH:=TRUE; &IF CH IN [' '..'~'] THEN BEGIN (IF ALPHALOCK OR SYS THEN ALPHAMAP(CH); (IF H: ^QUEUE; {Ring buffer for receiver}  H: ^HANDLER; {Receiver interrupt service routine, with Q pointers}  CLK: ^CLALFDUPLEX OR SYS THEN WRITECH(CH) &END ELSE IF ORD(CH)=DC2 THEN BEGIN READCH:=FALSE; (ALPHALOCK:=NOT ALPHALOCK END (ELSE IF (KHANDLER; {'New' line clock interrupt service routine}   FUNCTION OCTAL(S:STRING): INTEGER; {Interpret 6 digit string as intORD(CH)1 THEN RUBOUT; (DEL: WHILE I>1 DO RUBOUT; (CR: WRITELN &END;}  VAR MEM: RECORD CASE BOOLEAN OF TRUE:(ADR: INTEGER); FALSE:(DAT: ^INTEGER) END;  BEGIN MEM.ADR:=OCTAL(S); MEM.DAT^:=X; END; "UNTIL ORD(CH)=CR; "S[0]:=CHR(I-1); {Horse string length into correctitude}  END;    PROCEDURE ALPHAMAP(VAR CH:CHAR);  BEGIN IF CH IN ['a'..'z'] THEN CH:=CHR(ORD(CH)-32) END;   PROCEDURE WRITECH(CH: CHAR); FUNCTION RECVBYT(VAR C:CHAR):BOOLEAN; "{Pull a byte, if possible, from HOST handler ring buffer. " TRUE -> byte was transfer {Write Char to console} "BEGIN IF ORD(CH) IN [1..126,160..254] THEN BEGIN {Delete NUL, and both DELs} $REPEAT UNTIL CSLU.REed. FALSE -> nothing availble, or error}  BEGIN WITH H^ DO BEGIN "IF STATUS.ERR THEN $BEGIN RECVBYT:=FALSE; {Function false..G^.XCS.DUN; CSLU.REG^.XDB:=CH END END;   PROCEDURE WRITELN; {Write , to console} "BEGIN WRITECH(CHR(CR)); WRITECH(.} &ABORT:=TRUE; WRITECH(CHR(BEL));  IF STATUS.OVF THEN NOTICE('Software overrun occured'); &IF STATUS.OVR THEN NOTICECHR(LF)) END;   PROCEDURE PROMPT(S: STRING); {Write a string to console} "VAR I:INTEGER; "BEGIN WRITECH(CHR(EOL)); FOR I:('Hardware overrun occured'); &IF STATUS.BRK THEN NOTICE('Cont''s break received'); &IF STATUS.PTY THEN NOTICE('Parity error d=1 TO LENGTH(S) DO WRITECH(S[I]) END;   PROCEDURE NOTICE(S:STRING);  BEGIN WRITELN; PROMPT(S); WRITELN; END;  etected'); &CODE[-1]:=0; {Turn off all error bits} $END ELSE IF QHEAD=QTAIL THEN {Buffer is empty} RECVBYT:=FALSE ELSE &BEGI FUNCTION READCH(VAR CH:CHAR;SYS:BOOLEAN):BOOLEAN; "{Read a char from console, if possible.}  BEGIN "IF CSLU.REG^.RCS.DUN THN C:=Q^[QTAIL]; RECVBYT:=TRUE; (IF QTAIL=QUEUESIZE THEN QTAIL:=0 ELSE QTAIL:=QTAIL+1 END;  END END;   PROCEDURE XMITCHR(C:C6 $CODE[ 3] :=OCTAL('066700'); { ADD QBASE, R0 } $CODE[ 4] :=OCTAL('177756'); $CODE[ 5] :=OCTAL('113710'); { MOVB @#RD{Purge receiver} "CSLU.REG^.RCS.INT:=FALSE; {Turn it off} "CSLU.REG^.XCS.INT:=FALSE; {Xmitter too} {Set up new clock handler, B, (R0) } $CODE[ 6] :=OCTAL('177522'); $CODE[ 7] :=OCTAL('053767'); { BIS @#RCS, QSTAT } $CODE[ 8] :=OCTAL('177520'); to prevent reentry when priority goes to other tasks} "NEW(CLK); { ;ENTER AT LEVEL $CODE[ 9] :=OCTAL('177752'); $CODE[10] :=OCTAL('100421'); { BMI 4$ } $CODE[11] :=OCTAL('142720'); { BICB #200, (R0)+ 7} "CLK^[0] :=OCTAL('005167'); { COM 1$ ;COUNT ENTRIES} "CLK^[1] :=OCTAL('000016'); HAR); {Send character to HOST synchronously}  BEGIN REPEAT UNTIL HSLU.REG^.XCS.DUN; HSLU.REG^.XDB:=C; END;   PROCEDURE XMITS } $CODE[12] :=OCTAL('000200'); $CODE[13] :=OCTAL('166700'); { SUB QBASE, R0 } $CODE[14] :=OCTAL('177732'); $CODE[15] :TR(S:STRING); {Send string synchrounously, no delimiters added}  VAR CURSOR:INTEGER; =OCTAL('020027'); { CMP R0, #QUEUESIZE } $CODE[16] :=QUEUESIZE; $CODE[17] :=OCTAL('101401'); { BLOS 2$ } $CODE[18]  BEGIN CURSOR:=1; WHILE CURSOR<=LENGTH(S) DO "BEGIN XMITCHR(S[CURSOR]); CURSOR:=CURSOR+1; END; END;   PROCEDURE RESTART; :=OCTAL('005000'); { CLR R0 } $CODE[19] :=OCTAL('020067'); {2$: CMP R0, QTAIL } $CODE[20] :=OCTAL('177722'); $CODE[21]{Call to start listening to HOST}  BEGIN WITH HSLU.REG^ DO BEGIN "RCS.INT:=FALSE; {Quit listening} "H^.QTAIL:=0;  :=OCTAL('001004'); { BNE 3$ } $CODE[22] :=OCTAL('012767'); { MOV #^B1000100000000000, QSTAT } $CODE[23] :=OCTAL('10 {Purge the...} "H^.QHEAD:=0; {input buffer} "H^.CODE[-1]:=0; {Reset errors} "RDB:=RDB; {Purge r4000'); $CODE[24] :=OCTAL('177714'); $CODE[25] :=OCTAL('000402'); { BR 4$ } eceiver} "RCS.INT:=TRUE; {Listen up} "WRITECH(CHR(FF)); {Clear console} "XMITCHR(CHR(CR)) {Ret the HOST}  EN$CODE[26] :=OCTAL('010067'); {3$: MOV R0, QHEAD } $CODE[27] :=OCTAL('177702'); $CODE[28] :=OCTAL('012600'); {4$: MOV (SP)+D END;   PROCEDURE SETUP; {Call one time only} BEGIN "ALPHALOCK:=TRUE; "NEW(H); {Memory space for handler...} "NEW(Q); { a, R0 } $CODE[29] :=OCTAL('000006'); { RTT } "END;  {SET UP HOST RECEIVER} "HSLU.ADR:=OCTAL('177520'); {SLU #1} "{REnd for input ring buffer.} "WITH H^ DO BEGIN  {LOAD RECEIVE HANDLER} $QBASE:=ORD(Q); $QHEAD:=0; $QTAIL:=0; $STATUS.ERR:=FAPEAT UNTIL HSLU.REG^.XCS.RDY;{Wait on ready bit} {<-- Compile iff modem dready valid} "HSLU.REG^.RCS.INT:=FALSE; {Turn off recLSE; ${The following text was generated by MACRO-11, and PAS2RT.} $CODE[ 0] :=OCTAL('010046'); {1$: MOV R0, -(SP) } $CODE[ eiver}  HSLU.REG^.XCS.INT:=FALSE; {and transmitter.} {SET UP VECTOR FOR RECEIVER} "PATCH('120', ORD(H)+8); "PATCH('122', OC1] :=OCTAL('016700'); { MOV QHEAD, R0 } $CODE[ 2] :=OCTAL('177764'); TAL('200'));  {Turn off all CONSOLE interrupts} "CSLU.ADR:=OCTAL('177560'); {SLU #0, or 8532 keyboard} "CH:=CSLU.REG^.RDB; 7 6'); { 4$: RTT ;AND WAIT FOR ZERO} "PATCH('000100', ORD(CLK));  {MAKE FLOPPY INTERRUPTABLE} ould be injected easily.} (END; $CLOSE(BINFILE) "END;  PROCEDURE SENDTXTFILE; "VAR REPTCNT: INTEGER; "BEGIN $REPEAT &"PATCH('000252',0); {QX controller status word}  {PRINT AN INITIAL CHARACTER TO EACH PORT} "RESTART {Turn on receiver} READ(TXTFILE,CH); REPTCNT:=1; &CASE ORD(CH) OF (NUL: REPTCNT:=0; (DLE: BEGIN READ(TXTFILE,CH); REPTCNT:=ORD(CH)-32; CH:=' ' E END;   PROCEDURE SHUTDOWN; {Must call before leaving program to O/S}  BEGIN "HSLU.REG^.RCS.INT:=FALSE; {Host ND &END; &WHILE REPTCNT>0 DO BEGIN REPTCNT:=REPTCNT-1; XMITCHR(CH) END; &WHILE EOLN(TXTFILE) AND NOT EOF(TXTFILE) DO (BEGIN service OFF!} "PATCH('000100',CLK^[7]); {Repair line clock vector} PATCH('000252',OCTAL('000340')); {RepaiXMITCHR(CHR(CR)); XMITCHR(CHR(LF)); {<-TEMPORARY!} PURGE; TALLY; *REPTCNT:=0; CLK^[14]:=3; {48 TO 64 MS wait after each line} r QX controller vector} "CSLU.REG^.RCS.INT:=TRUE; {Turn on ...} "CSLU.REG^.XCS.INT:=TRUE; {Console s*REPEAT ABORTCHK UNTIL CLK^[14]=0; *READ(TXTFILE,CH); {Purge delimiter} END; &ABORTCHK; $UNTIL ABORT OR EOF(TXTFILE); $CLOService} "EXIT(TERMINAL) {Ascend to Nirvanna}  END; "  PROCEDURE ABORTCHK;  VAR X:CHAR; BEGIN IF READE(TXTFILE) "END;   BEGIN {SENDFILE} "REPEAT $PROMPT('Local source file name: '); READS(SRC); $IF LENGTH(SRC)>0 THEN &BEG"CLK^[2] :=OCTAL('001405'); { BEQ 2$ ;SKIP IF ON} "CLK^[3] :=OCTAL('106746'); { MFPS -(SP) ;CH(X,TRUE) THEN ABORT:=(ORD(X)=NUL) OR ABORT END;   PROCEDURE PURGE; {Wait for either from host, or from operator}FAKE-A-INTERRUPT} "CLK^[4] :=OCTAL('106427'); { MTPS #1 ;SERVICE AT LEVEL 0} "CLK^[5] :=1;   BEGIN REPEAT "REPEAT ABORTCHK UNTIL RECVBYT(CH) OR ABORT  UNTIL (ORD(CH)=LF) OR ABORT END;   PROCEDURE TALLY;  BEGIN WR { ;INT SERV EXPECTS CARRY SET} "CLK^[6] :=OCTAL('004737'); { JSR PC, @(PC)+ ;JUMP TO IT} "CLK^[7] :=FETCH('ITECH('.'); LINECNT:=LINECNT+1; IF LINECNT MOD 50=0 THEN WRITELN; END;   PROCEDURE SENDFILE(BINARYMODE: BOOLEAN);  000100'); { .WORD 0 ;Old clock vector} "CLK^[8] :=OCTAL('005127'); { 2$: COM (PC)+ ;TURN OFF FLAG"PROCEDURE SENDBINFILE; { Binary file xmitter is HOST dependent. <<<<<<<< } "VAR $BUF: PACKED ARRAY [0..7] OF PACKED ARRAY [0} "CLK^[9] :=0; { 1$: .WORD 0} "CLK^[10]:=OCTAL('005767'); { TST 3$ ;TIMER FOR LOCAL U..127] OF 0..15; "BEGIN $WHILE (BLOCKREAD(BINFILE,BUF,1) = 1) AND NOT ABORT DO &FOR I:=0 TO 7 DO (BEGIN *FOR J:=0 TO 127 DOSE} "CLK^[11]:=OCTAL('000004'); "CLK^[12]:=OCTAL('001402'); { BEQ 4$} "CLK^[13]:=OCTAL('005327'); { DEC ,BEGIN .XMITCHR(CHR(BUF[I,J]+ORD('@'))); .ABORTCHK; IF ABORT THEN BEGIN I:=10; J:=128 END; ,END; *XMITCHR(CHR(CR)); {Send (PC)+ ;TO USE, PUT TIME INTO} "CLK^[14]:=0; { 3$: .WORD 0 ;CLK^[14]} "CLK^[15]:=OCTAL('00000 a with each 128 char block} *PURGE; {Wait for reply before proceeding} *TALLY; {Check-sum c8 ENDTXTFILE; *IF ABORT THEN BEGIN NOTICE('Transfer aborted'); .XMITCHR(CHR(NUL)) END {Send Abort-file character. <<<<<<<< } ,EGEDUMP; {Write 2 blks of nulls for EDIT compatibility} *IF NOT ABORT THEN PULLFILE; *IF ABORT THEN ,BEGIN NOTICE('Transfer LSE BEGIN NOTICE(CONCAT(SRC,' transferred to ',TGT)); .XMITCHR(CHR(CNTRLZ)) END; {Send end-of-file character. <<<<<<<< } aborted'); CLOSE(TXTFILE,PURGE) END ,ELSE BEGIN NOTICE(CONCAT(SRC,' transferred to ',TGT)); .CLOSE(BLKFILE,LOCK) END (END $E(END $END  END;   PROCEDURE TAKEFILE;  CONST TIMEOUT= 180; {3 secs max wait for each char <<<<<<<<}  VAR INDEX: INTEGERND  END;   PROCEDURE COMMAND;  VAR CMD:CHAR;  BEGIN WRITECH(CHR(FF)); REPEAT $HSLU.REG^.RCS.INT:=FALSE; {Stop listenin; PAGE: PACKED ARRAY [0..1023] OF CHAR; " "PROCEDURE PAGEDUMP; {Null fill page buffer, and write} "BEGIN $FILLCHAR(PAGE[INg} $WRITECH(CHR(HOME)); $PROMPT('Terminal: S(end file, R(eceive file, T(erminal mode, Q(uit '); $REPEAT UNTIL READCH(CMD,TRUEDEX],1024-INDEX,0); INDEX:=0; $IF BLOCKWRITE(BLKFILE,PAGE,2) <> 2 THEN &BEGIN NOTICE('Disk output error'); ABORT:=TRUE END "E); WRITELN; ALPHAMAP(CMD); ABORT:=FALSE; $CASE CMD OF &'Q': SHUTDOWN; &'R': TAKEFILE; ND; " "PROCEDURE PULLFILE; "BEGIN $S:=CONCAT('PLEASE SEND ',SRC); {Adjust to HOST. <<<<<<<< } $XMITSTR(S); RESTART; {Sends&'S': BEGIN PROMPT('Send file: B(inary or T(ext '); .REPEAT UNTIL READCH(CH,TRUE); WRITELN; ALPHAMAP(CH); 0CASE CH OF 2'B': to HOST} $PROMPT('Receiving'); PURGE; CLK^[14]:=TIMEOUT; $WHILE (CLK^[14]>0) AND (NOT ABORT) DO &BEGIN (IF RECVBYT(CH) SENDFILE(TRUE); 2'T': SENDFILE(FALSE) 0END; END $END; "UNTIL CMD='T'; "RESTART  END;  PROCEDURE SENDBREAK;  BEGIN WITH THEN *BEGIN ,CLK^[14]:=TIMEOUT; {Reset timeout counter} ,IF ORD(CH)<>LF THEN {Delete all 's} .BEGIN 0PAGE[INDEX]:= HSLU.REG^ DO BEGIN "CLK^[14]:=14; {TIMEOUT 200 DIV 16} "RCS.INT:=FALSE; {Quit listening} "XCS.BREAK:=TRUE; CH; INDEX:=INDEX+1; 0IF ORD(CH)=CR THEN BEGIN TALLY; IF INDEX>920 THEN PAGEDUMP END .END *END; (ABORTCHK; &END; $WRITELN;  {Send break} "WHILE CLK^[14]>0 DO; {for 200 ms.} "XCS.BREAK:=FALSE; "RESTART {Start listening}  END END; IN (IF BINARYMODE THEN RESET(BINFILE,SRC) *ELSE BEGIN SRC:=CONCAT(SRC,'.TEXT'); RESET(TXTFILE,SRC) END; (IF IORESULT<>0 THEN $HSLU.REG^.RCS.INT:=FALSE; $IF NOT((INDEX=0) OR ABORT) THEN PAGEDUMP "END; (  BEGIN {TAKEFILE} NOTICE(CONCAT(SRC,' not found!')); &END; "UNTIL (LENGTH(SRC)=0) OR (IORESULT=0); "IF LENGTH(SRC)>0 THEN $BEGIN &PROMPT('Hos"PROMPT('Host source file name: '); READS(SRC); "IF LENGTH(SRC)>0 THEN $BEGIN &REPEAT (PROMPT('Local target file name: '); t target file name: '); READS(TGT); &IF LENGTH(TGT)>0 THEN (BEGIN LINECNT:=0; *S:=CONCAT('HERE COMES ',TGT); {Adjust to HOST.READS(TGT); (IF LENGTH(TGT)>0 THEN *BEGIN TGT:=CONCAT(TGT,'.TEXT'); REWRITE(BLKFILE,TGT); ,IF IORESULT<>0 THEN NOTICE(CONCAT( <<<<<<<< } *XMITSTR(S); RESTART; {Sends to HOST} *PROMPT('Transmitting'); PURGE; *IF BINARYMODE THEN SENDBINFILE ELSE SSRC,' is illegal!')); &END; &UNTIL (IORESULT=0) OR (LENGTH(S)=0); &IF LENGTH(TGT)>0 THEN (BEGIN *INDEX:=0; LINECNT:=0; *PA9  DC2 to alphalock, ^EOM to command, ^NUL to break.');  WRITELN;  REPEAT "IF READCH(CH,FALSE) THEN {Poll keyboard for anythingÐÒÔÖØÚÜÞàâäæèêìîÚ Ã¡îØÙ•¿­åU]h ©‚ÌÛ¢º¡öÌ«ÏÛ¢ º¡צSoftware overrun occuredÏ Û from operator} $IF ORD(CH)=EOM THEN COMMAND &ELSE IF ORD(CH)=NUL THEN SENDBREAK (ELSE XMITCHR(CH); "IF RECVBYT(CH) THEN WRI¢ º¡¦Hardware overrun occured×Ï Û¢ º¡צCont's break receivedÏ Û¢º¡צParity error detectedÏ Û¢‘¤š¹.ÛùÛúá̹"ÚTECH(CH); {Poll handler for anything from HOST}  UNTIL FOREVER;  END.  ©‚Ûú¾šÌÛúÇ@áÛ¢š¹Û¢Ûú‚š­1 è ©‚¢º¡ö©‚¢Ø»­ ÆتPÌ+Ê+ƾȡÆÊ+¾ÏÊ+‚Ì+¹ö­T*8 TERMINAL ©‚ÌØ»©‚¢š©‚¢š©‚¢‘¤šØ¢Ø¢º»Ø» Ï Ï­B«€ƒ¥‚"ž¥‚Ç ž©‚ÌØ©‚šØ¢šØ¢šØ¢»Ø¢¤¦01004 6×Ϛآ¤¦016700×Ϛآ¤¦177764×Ϛآ¤¦066700×Ϛآ¤¦177756×Ϛآ¤¦113710×Ϛآ¤¦177522×Ϛآ¤¦053767×Ϛآ¤¦177520×Ϛآ ¤¦177752×Ϛآ ¤¦100421×Ϛآ ¤¦142720×Ϛآ ¤¦000200×Ϛآ ¤¦166700×Ϛآ¤¦177732×Ϛآ¤¦020027×Ϛآ¤Ç@𨢤¦101401×Ϛآ¤¦005000×Ϛآ¤¦020067×Ϛآ¤¦ÆÚªPÌ.Ì-Ê-ƾɡÊ-‚Ì-Ê.�ÆÊ-¾‚0•Ì.¹öÊ.Ì­%V8ÆÚªPÆÏÌ-Ê-øÌ­TÆÙªPÆÏÌ,Ê,Øš­TØø³ÿþÿ177722×Ϛآ¤¦001004×Ϛآ¤¦012767×Ϛآ¤¦104000×Ϛآ¤¦177714×Ϛآ¤¦000402×Ϛآ¤¦010067׋¡ØØø •š­&ØÇ Çþ”³ÿÿÿÿÿÿÿÿÿÿÿÿÿþÿœ‹¡©‚¢º¡ö©‚¢Ø»­< Ï Ï­ÆتPÏÌ+ÆÏ𨢤¦177702×Ϛآ¤¦012600×Ϛآ¤¦000006×Ïš¦177520×Ï«‚©‚»©‚¢»¦120ש‚‚Ïצ122צ200ÏϾÌ,Ê+Ê,È¡ÆÊ+¾ÏÊ+‚Ì+¹ö­©V 2ÆتPÏÆÏÏ­ÌR ©‚º¡^Û©‚¢ºšÌÛø³ÿÿÿÿÿÿÿÿÿÿÿ‹¡©€ƒÚ�¡ÛÏÚ�¡צ177560Ï«‚©‚¢º«©‚»©‚¢»¥‚ž©‚¤צ005167Ïš©‚¤צ000016Ïš©‚¤צ001405Ïš©‚¤צ106746ÏšÛøÏ¹!Ûøá Ì©€ƒ“«€ƒ¹ÛøɄړ„¡ÛøÏ¹Ì­år ¶•¸Ï ÏÏ­Ì ÌÆÏ ¡öÚ³Ïÿÿÿÿÿÿÿÿÿÿÿ‹¡ÙPÉ¡©‚¤צ106427Ïš©‚¤š©‚¤צ004737Ïš©‚¤צ000100Ïš©‚¤צ005127Ïš©‚ ¤š©‚ ¤צ005767Ïš©‚ ¤צ000ØÙÚ¿¹Î ق̹ðÚ¹ÙšΠ¹òÙšΠ¹ô¹òϹò¬¹ò  "$&(*,.02468:<>@BDFHJLN004Ïš©‚ ¤צ001402Ïš©‚ ¤צ005327Ïš©‚¤š©‚¤צ000006Ϛצ000100©‚Ïצ000252ÏÏ­*©‚»¦000  BEGIN  SETUP;  PROMPT('TERMINAL V01-02... terminal emulator and file transfer utility.');  WRITELN;  PROMPT(' TypePRTVXZ\^`bdfhjlnprtvxz|~€‚„†ˆŠŒŽ�’”–˜šœž ¢¤¦¨ª¬®°²´¶¸º¼¾ÀÂÄÆÈÊÌÎ: ansferred to `ÍÆ‚¥1ǰÍÆ‚Ï ¥�ÙÍž­´ @ Ï©‚»Ï¦;Terminal: S(end file, R(eceive file, T(erminal mode, Q(uit ×ÏÆÏ ¡öÏÆÏ«عtϹ~ϹzצSend file: B(inary or T(ext Ï¥Ï ¡ôÏ¥Ïî¹ Ï¹2Ϲ-¬BT¹& 100ש‚¤øÏ¦000252×צ000340ÏÏ©‚»©‚¢»ž­¦NÆÏ ¡ØÃí�«­Ï¥Ï í�¡öî Ãí�¡ô­ "$0¹¬TQS¹|zxØTáòÏ­Íëe¥ ú©‚Ì©‚¤šØ»Ø¢»©‚¤øÅ¡¹öØ¢»Ï­e :Æ�ÙÆƒÇ‘ .Ïê‚«ê2ŽÃ¡Ï­­¥�±ÆÇ‘ÍžÃí“„¡N«Ì�ìÊ�È¡>«Ì�ëÊ�È¡"Æì¤ ëÀº@‚ÏÏí¡ «Ç€«ë‚«¹ö ÏÏÍÆ�±Æ‚ÝÇ‘ÍÆ€„Æ�°Ç‘ÍÕ�ÖÎצATERMINAL V01-02... terminal emulator and file transfer utility.ÎÎצ; Type DC2 to alÏì‚«¹ô¹ò¥�±Íž­6tUI €¥€„¥ÍžÌî¹Ì¹=¥€„¥Ížî •Ì «¹)¬¹"   ;ØÅ¡ Øphalock, ^EOM to command, ^NUL to break.ÎΥΠ¡îáι îáιîΥΠ¡îΡöÆ�ÙÍÆ�±ÍÆ€„ÍÁDH•ÌîϹö¥€„Í ¥€„Í “„¡. Ï ÏÏÏÌ©‚¤šÏ©‚¤øÃ¡ô¥€„¥Íž¹òÏí¥€„Í �¡ð¥€„Íž­¼]6pÊצLocal sŒBLâœjаÎ"R š Ê î HÞ jâþ6JŒ¸Øø:y or T(ext Ï¥Ï ¡ôÏ¥Ïî¹ Ï¹2Ϲ-¬BT¹& ource file name: Ï¥ZÏ ¥Z¾Å¡eØ¡¥�±¥ZÍž¹+¥ZÌÆ¥ZPÍÆ¦.TEXT×UÍÆªP¥€„¥ZÍžž"Ë¡#ÌÆ¥ZPÍÆצ not found![Í "$0¹¬TQS¹|zxØTáòÏ­Íëe¥ ú©‚Ì©‚¤šØ»Ø¢»©‚¤øÅ¡¹öØ¢»Ï­e :Æ�ÙÆƒÇ‘ÆÏ ¥Z¾Ãž"Ã�¡ö¥Z¾Å¡ò¦Host target file name: ×Ï¥1Ï ¥1¾Å¡ô«¥ÌƦ HERE COMES × ÍÆ¥1[ÍÆªP¥ÏϦ Transmitting×ÏO^ÏØ¡Î¹Îí¡צTransfer abortedÏ Ï¹5ÌÆ¥ZPÍÆ¦ transferred to ×`ÍÆ¥1ǰÍÆÏ Ï­n² v²¶Ç¶•ž ¥ ¸¥�ٲǑ͞ˡצDisk output errorÏ «­ÆN¥ÌƦ PLEASE SEND × ÍÆ¥Z\ÍÆªP¥ÏÏצ ReceivingÏÏ©‚¤Ç´š©‚¤øÅí“„¡=¥Ï ¡1©‚¤Ç´šî Ë¡"²¶î¿¶‚¸î á ϶ǘÅ¡®Ï¹öÏ©‚»¶Ãí�“¡®­b^°צHost source file name: Ï¥ZÏ ¥Z¾Å¡ôצLocal target file name: Ï¥1Ï ¥1¾Å¡]¥1̂Ƃ¥1PÍÆ‚¦.TEXT×UÍÆ‚ªP¥�Ù¥1Ížž"Ë¡(̂Ƃ¥ZPÍÆ‚צ is illegal!\ÍÆ‚Ï ž"Ã¥¾Ã�¡ö¥1¾Å¡qÌ«Îí“¡Îí¡ ×¦Transfer abortedÏ ¥€„Íž¹@̂Ƃ¥ZPÍÆ‚צ tr;  MAXSEG = 15; {MAX CODE SEGMENT NUMBER} DIRBLK = 2; {DISK ADDR OF DIRECTORY} EOL = 13; {END-DI.RBLOCKS[1],2048,2); {LOAD DIR} "MONTHS[ 0] := '???'; MONTHS[ 1] := 'Jan'; "MONTHS[ 2] := 'Feb'; MONTHS[ 3] := 'Mar'; "MONTOF-LINE...ASCII CR} TYPE DATEREC = PACKED RECORD 1MONTH: 0..12; {0 IMPLIES DATE NOT MEANINGFUL} 1DAY: 0..31; HS[ 4] := 'Apr'; MONTHS[ 5] := 'May'; "MONTHS[ 6] := 'Jun'; MONTHS[ 7] := 'Jul'; "MONTHS[ 8] := 'Aug'; MONTHS[ 9] := 'Sep'; " {DAY OF MONTH} 1YEAR: 0..100 {100 IS TEMP DISK FILE FLAG} /END {DATEREC} ; VID = STRING[VIDLENG]; MONTHS[10] := 'Oct'; MONTHS[11] := 'Nov'; "MONTHS[12] := 'Dec'; MONTHS[13] := '???';  DIRRANGE = 0..MAXDIR; TID = STRING[TIDLENG]; BLKRANGE = 1..512;  FILEKIND = (UNTYPEDFILE,XDSKFILE,CODEFILE,TEX"MONTHS[14] := '???'; MONTHS[15] := '???';  END {DIRINIT} ;   FUNCTION NOYES:BOOLEAN;  BEGIN "READLN(INSTRING);  IF LETFILE, 1INFOFILE,DATAFILE,GRAFFILE,FOTOFILE); DIRENTRY = RECORD 2DFIRSTBLK: INTEGER; {FIRST PHYSICAL DISK ADDR} 2DLASNGTH(INSTRING)=0 THEN NOYES:=FALSE "ELSE NOYES:=INSTRING[1]='Y';  END;   FUNCTION GETUNIT:BOOLEAN;  BEGIN "GETUNIT:=FALSE%{TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any losTBLK: INTEGER; {POINTS AT BLOCK FOLLOWING} 2CASE DFKIND: FILEKIND OF 4UNTYPEDFILE: {ONLY IN DIR[0]...VOLUME INFO} 6(DVID: ses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, losseVID; {NAME OF DISK VOLUME} 8DEOVBLK: INTEGER; {LASTBLK OF VOLUME} 8DNUMFILES: DIRRANGE; {NUM FILES IN DIs arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any pateR} 8DLOADTIME: INTEGER; {TIME OF LAST ACCESS} 8DLASTBOOT: DATEREC); {MOST RECENT DATE SETTING} nt or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without furthe4XDSKFILE,CODEFILE,TEXTFILE,INFOFILE, 4DATAFILE,GRAFFILE,FOTOFILE: 6(DTID: TID; {TITLE OF FILE} 8DLASTBYTE: 1.r notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. It m.512; {NUM BYTES IN LAST BLOCK} 8DACCESS: DATEREC) {LAST MODIFICATION DATE} 0END {DIRENTRY} ; VAR I,UNITNUM,LARGay not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAEST,FREEBLKS,USEDAREA,USEDBLKS: INTEGER; &DETAIL,DIROK: BOOLEAN; GS: STRING; INSTRING: STRING[255]; MONTHS: AK CORPORATION ="ALL RIGHTS RESERVED"} {$L-}  PROGRAM DIRECTORY; CONST MAXDIR = 77; {MAX NUMBER OF ENTRIES IN A DIRRAY [0..15] OF STRING[3]; &DI: RECORD CASE BOOLEAN OF ,TRUE: (RECTORY: ARRAY [DIRRANGE] OF DIRENTRY); ,FALSE:(RBLOCKS: ARRARECTORY} VIDLENG = 7; {NUMBER OF CHARS IN A VOLUME ID} TIDLENG = 15; {NUMBER OF CHARS IN TITLE ID} Y[1..4] OF ARRAY[1..512] OF CHAR) *END; LIST: TEXT; &  PROCEDURE DIRINIT;  BEGIN "DIROK:= FALSE; "UNITREAD(UNITNUM,< EBLKS+FREEAREA; &IF DETAIL THEN (BEGIN *WRITE(LIST,'< UNUSED > ', 4FREEAREA:4,' ':11,FIRSTOPEN:6); ory... Directory listing file generator... V01-02'); "IF GETUNIT THEN "BEGIN $WRITE('Full detail? '); DETAIL:=NOYES; $REWR*WRITE(LIST,CHR(EOL)) (END $END;  END {FREECHECK} ;   PROCEDURE LISTDIR;  BEGIN "FREEBLKS := 0; USEDBLKS := 0; "LARGESITE(LIST,'DIR.LST.TEXT'); $DIRINIT; $IF IORESULT <>0 THEN WRITELN('?I/O error?') ELSE LISTDIR; $WRITELN; WRITELN('***** DONE T := 0; DIROK := FALSE; "WITH DI.RECTORY[0] DO "BEGIN $WRITE(LIST,DVID,':'); $IF DLASTBOOT.MONTH > 0 THEN &WRITE(LIST,' ':2*****'); CLOSE(LIST,LOCK); $IF DIROK THEN WRITE('Your listing is in "DIR.LST.TEXT" .'); "END  ELSE WRITELN('?Illegal unit,DLASTBOOT.DAY:2,'-', (MONTHS[DLASTBOOT.MONTH],'-',DLASTBOOT.YEAR:2); $WRITE(LIST,CHR(EOL),CHR(EOL)) "END; "FOR I := 1 TO DI number?');  END.  .RECTORY[0].DNUMFILES DO $WITH DI.RECTORY[I] DO &BEGIN (WRITE('.'); (FREECHECK(DI.RECTORY[I-1].DLASTBLK,DFIRSTBLK); (USEDARˆ DIRECTOR EA := DLASTBLK-DFIRSTBLK; (USEDBLKS := USEDBLKS+USEDAREA; (IF DACCESS.YEAR IN [1..99] THEN (BEGIN *WRITE(LIST,DTID,' ':TIDLE NG-LENGTH(DTID)+1,USEDAREA:4); *IF DACCESS.MONTH > 0 THEN ,WRITE(LIST,' ':2,DACCESS.DAY:2,'-', 4MONTHS[DACCESS.MONTH],'-',DACCESS.YEAR:2); *IF DETAIL THEN ,BEGIN .IF DACCESS.MONTH = 0 THEN WRITE(LIST,' ':11); .WRITE(LIST,DFIRSTBLK:6,DLASTBYTE:6); .; "WRITE('Generate directory file of what unit? '); READLN(INSTRING); "IF LENGTH(INSTRING)=0 THEN BEGIN GETUNIT:=TRUE; UNITNUMGS := 'ILLEGAL'; .CASE DFKIND OF 0XDSKFILE: GS := 'Bad file'; 0CODEFILE: GS := 'Codefile'; 0TEXTFILE: GS := 'Textfile'; :=4 END "ELSE "BEGIN $IF INSTRING[1]='#' THEN UNITNUM:=ORD(INSTRING[2])-48 $ELSE UNITNUM:=ORD(INSTRING[1])-48; $IF UNITNUM 0INFOFILE: GS := 'Infofile'; 0DATAFILE: GS := 'Datafile'; 0GRAFFILE: GS := 'Graffile'; 0FOTOFILE: GS := 'Fotofile' .END; .IN [0..1] THEN &BEGIN (UNITNUM:=UNITNUM+4; WRITE('Do you mean logical unit ',UNITNUM,' ?'); (GETUNIT:=NOYES; &END $ELSE GETWRITE(LIST,' ':2,GS) ,END; *WRITE(LIST,CHR(EOL)); (END; &END; "DIROK:=TRUE; "FREECHECK(DI.RECTORY[I-1].DLASTBLK,DI.RECTORYUNIT:=UNITNUM IN [4..5]; "END  END;   PROCEDURE FREECHECK(FIRSTOPEN,NEXTUSED: INTEGER); "VAR FREEAREA: INTEGER;  BEGIN "[0].DEOVBLK); "WRITE(LIST,CHR(EOL),DI.RECTORY[0].DNUMFILES,' files, ', 2USEDBLKS,' blocks used, ', 2FREEBLKS,' unused'); "IFFREEAREA := NEXTUSED-FIRSTOPEN; "IF FREEAREA > LARGEST THEN LARGEST := FREEAREA; "IF FREEAREA > 0 THEN $BEGIN FREEBLKS := FRE DETAIL THEN WRITE(LIST,', ',LARGEST,' in largest area'); "WRITE(LIST,CHR(EOL));  END {LISTDIR} ;   BEGIN "WRITELN('Direct= ???ª¥€´ˆ¤¦???ת¥€´ˆ¤צ???ª­0¶¥4ÇÿÍž¶Íž¥4¾Ã¡Ì¹ ¥4›¾YÃÌ­4̶צ&Generate diP ks used, Íž¥ˆÔìÍ ž¥ˆÔצ unusedÍžñ¡4¥ˆÔצ, Íž¥ˆÔíÍ ž¥ˆÔצ in largest areaÍž¥ˆÔ Íž­ ÒœÝérectory file of what unit? Íž¶¥4ÇÿÍž¶Íž¥4¾Ã¡Ì«¹s¥4›¾#á ¥4›¾0•«¹ ¥4›¾0•«î‹¡Jî‚«¶¦Do you mean lO^ogical unit ×Íž¶îÍ ž¶צ ?ÍžÏ̹î0‹Ì­tÖØÙ•ÌÚíšګÚÅ¡LìÚ‚«ñ¡D¥ˆÔ¦< UNUSED > ×Íž¥ˆÔÚÓŸe¡Í ž¥ˆÔ Íž¥ˆÔÙÍ ž¥ˆÔ Íž­f«««« ¥€ÔMˆ¤ Ì¥ˆÔآ͞¥ˆÔ:͞آ ºÅ¡S¥ˆÔ Íž¥ˆÔØ¢ ºÍ ž¥ˆÔ-Íž¥ˆÔ¥€´Ø¢ ºˆ¤Íž¥ˆÔ-Íž¥ˆÔØ¢  ºÍ ž¥ˆÔ Íž¥ˆÔ Íž«¥€ÔMˆ¤ £ÌïØÈ¡ð¥€ÔïMˆ¤ ̶.Íž¥€Ôï•Mˆ¤ ùÙøÏÙùÙø•«êë‚«Ù¢  º³ÿÿÿÿÿÿÿÿÿÿþÿ‹¡ô¥ˆÔ٢͞¥ˆÔ Ù¢¾•‚Íž¥ˆÔëÍ žÙ¢ ºÅ¡S¥ˆÔ Íž¥ˆÔÙ¢ ºÍ ž¥ˆÔ-Íž¥ˆÔ¥€´Ù¢ ºˆ¤Íž¥ˆÔ-Íž¥ˆÔÙ¢  ºÍ žñ¡öÙ¢ ºÃ¡ ¥ˆÔ Íž¥ˆÔÙøÍ ž¥ˆÔÙ£ Í ž¥ ¦ILLEGALתPÙú¹w¥ ¦Bad fileתP¹|¥ צCodefileªP¹k¥ ¦TextfileתP¹Z¥ צInfofileªP¹I¥ ¦DatafileתP¹8¥ צGraffileªP¹'¥ ¦FotofileתP¹¬€¹paRC4%¥ˆÔ Íž¥ˆÔ¥ Íž¥ˆÔ Ížï‚«¹ò« ¥€Ôï•Mˆ¤ ù¥€ÔMˆ¤ ÿÏ¥ˆÔ Íž¥ˆÔ¥€ÔMˆ¤ £Í ž¥ˆÔצ files, Íž¥ˆÔêÍ ž¥ˆÔצ blocks used, Íž¥ˆÔìÍ ž¥ˆÔצ unusedÍžñ¡4¥ˆÔצ, Íž¥ˆÔíÍ ž¥ˆÔצ in largest areaÍž¥ˆÔ Íž­ ÒœÝé! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for anyVÆˆÔÆŠÇ‘ÍÕ€´¶¦9Directory... Directory listing file generator... V01-02×Íž¶ÍžÎ¡ö¶צ Full detail?  losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, l« Ôˆ•¤‚Çž¥€´ˆ¤¦???ת¥€´ˆ¤צJanª¥€´ˆ¤¦Febת¥€´ˆ¤צMarª¥€´ˆ¤¦Aprת¥€´ˆ¤צMayª¥€ÍžÎ« ¥ˆÔ¦ DIR.LST.TEXT×͞Ξ"Ë¡!¶צ ?I/O error?Íž¶Íž¹Î¶Íž¶¦***** DONE *****×Íž¶Íž¥ˆÔ´ˆ¤¦Junת¥€´ˆ¤צJulª¥€´ˆ¤¦Augת¥€´ ˆ¤צSepª¥€´ ˆ¤¦Octת¥€´ ˆ¤צNovª¥€´ ˆ¤¦Decת¥€´ ˆ¤צÍžð¡1¶¦%Your listing is in "DIR.LST.TEXT" .×Íž¹)¶צ?Illegal unit number?Íž¶ÍžÆˆÔÍÁ3ülrÎ:> <-(1,23)͞ζ͞¶O ‚Íž¶ ‚Íž¶צ<-(79,0)͞ΦHOME×Φ BACKSPACE×ÎצTAB ΦLINEFEED× Î¦RETURosses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fun TEST rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential.  It may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAK CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM TEST;  VAR I:INTEGER;  PROCEDURE W; VAR I:INTEGER; BEGIN FOR I:=0 TO 5000 DO; END;  PROCEDURE OUT(S:STRING;I:INTEGER);  BEGIN WRITELN; WRITE(S,CHR(I)); W; END;   BEGIN  PAGE(OUTPUT); ÌLjÌØÙȡ؂̹ö­ÆÙªP¶Íž¶ÆÍž¶ØÍžÏ­R,Õ¶ Íž«ÌêÛÈ¡c¶êÍ ž¶צ-_______ FOR I:=0 TO 23 DO "BEGIN WRITE(I:5,'_____________________________________________'); $IF I<23 THEN WRITELN ELSE WRITE(CHR(25______________________________________ÍžêÉ¡ ¶Íž¹ ¶Ížê‚«¹öצBEEPÎצ CRS ADR TO...ζ͞¶F ‚Íž¶)); END;  OUT('BEEP',7);  OUT('CRS ADR TO...',0);  WRITE(CHR(30),CHR(70+32),CHR(22+32),'<-(70,22)'); W;  WRITE(CHR(30),CHR(0 ‚Íž¶צ <-(70,22)͞ζ͞¶ ‚Íž¶ ‚Íž¶¦<-(0,0)×͞ζ͞¶ ‚Íž¶ ‚Íž¶צ+32),CHR(0+32),'<-(0,0)'); W;  WRITE(CHR(30),CHR(1+32),CHR(23+32),'<-(1,23)'); W;  WRITE(CHR(30),CHR(79+32),CHR(0+32),'<-(79,0<-(1,23)͞ζ͞¶O ‚Íž¶ ‚Íž¶צ<-(79,0)͞ΦHOME×Φ BACKSPACE×ÎצTAB ΦLINEFEED× Î¦RETUR)'); W;  OUT('HOME',25);  OUT('BACKSPACE',8);  OUT('TAB',9);  OUT('LINEFEED',10);  OUT('RETURN',13);  OUT('FORESPACE',28);N× Î¦ FORESPACE×ÎצREVERSE LINEFEEDÎצ EOL CLEARΦ EOS CLEAR× Îצ ALL CLEAR ÎÁåö HÍ ž¶צ-_______  OUT('REVERSE LINEFEED',31);  OUT('EOL CLEAR',29);  OUT('EOS CLEAR',11);  OUT('ALL CLEAR',12);  END.  ______________________________________ÍžêÉ¡ ¶Íž¹ ¶Ížê‚«¹öצBEEPÎצ CRS ADR TO...ζ͞¶F ‚Íž¶ ‚Íž¶צ <-(70,22)͞ζ͞¶ ‚Íž¶ ‚Íž¶¦<-(0,0)×͞ζ͞¶ ‚Íž¶ ‚Íž¶צ? ses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, losseHR(27),CHR(72)); END;  WRITE('BEEP',CHR(7)); W;  WRITE(' CLICK',CHR(6)); W;  WRITE(' CRS ADR TO...'); W;  WRITE(CHR(s arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any pate27),CHR(70),CHR(22+32),CHR(70+32),'<-(70,22)'); W;  WRITE(CHR(27),CHR(70),CHR(0+32),CHR(0+32),'<-(0,0)'); W; nt or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without furthe WRITE(CHR(27),CHR(70),CHR(23+32),CHR(1+32),'<-(1,23)'); W;  WRITE(CHR(27),CHR(70),CHR(0+32),CHR(60+32),'<-(60,0)'); W;  WRITr notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. It mE(' HOME',CHR(27),CHR(72)); W;  OUT('BACKSPACE',8);  OUT('TAB',9);  OUT('LINEFEED',10);  OUT('RETURN',13);  OUT('REVERSE LIO^ay not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAÓŸ¥ K CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM TEST;  VAR I:INTEGER;  PROCEDURE W; VAR I:INTEGER; BEGIN FOR I:=0 TO 5000 DO; END;  PROCEDURE OUT(S:STRING;I:INTEGER);  BEGIN WRITELN; WRITE(S,CHR(I)); W; END;   PROCEDURE MORE;  BEGIN  WRITELN;  WRITELN('PROTECT ON',CHR(27),CHR(93)); W;  WRITELN('PROTECTED CHARACTERS'); W;  WRITE('PROTECT OFF:',CHR(27),CHR(91)); W;  WRITELN(CHR(27),CHR(70),CHR(52),CHR(32),'PANNING');  FOR I := 1 TO 15 DO WRITE(CHR(4));  FOR I := 1 TO 5 DO WRITELN('PANNING'); W;  WRITELN('STOP PANNING'); W;  WRITE(CHR(27),CHR(72)); W;  FOR I := 1 TO 5 DO WRITE('REVERSE PAN',CHR(13),CHR(11),CHR(11)); W;  WRITE('STOP PANNING'); W;  FOR I := 1 TO 15 DO WRITE(CHR(5));  FOR I := 1 TO 6 DO WRITELN; W;  WRITELN(CHR(27),CHR(87),'EOL CLEAR',CHR(27),CHR(75)); W;  WRITE('EOS CLEAR',CHR(27),CHR(74)); W;  OUT('ALL CLEAR',12);  END;   BEGIN  PAGE(OUTP%{TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any losUT);  FOR I:=0 TO 23 DO "BEGIN WRITE(I:5,'_____________________________________________'); $IF I<23 THEN WRITELN ELSE WRITE(C@ ¤ TEST žÎ¶Íž¶FÍž¶ ‚Íž¶< ‚Íž¶¦<-(60,0)×͞ζ¦ HOME×Íž¶Íž¶H͞Φ BACKSPACE×Îצ TAB ΦLINEFEED× Î¦RETURN× Î¦REVERSE LINEFEED× Î¶צ FORESPACEÍž¶Íž¶C͞ζ͞צ CURSOR OFFÎצ CURSOR ONÎÎÁž ¸¾L~ CRS ADR TO...×͞ζ͞¶FÍž¶ ‚Íž¶F ‚Íž¶¦ <-(70,22)×ÍžRECVBYT CODE ¿á O^ÌLjÌØÙȡ؂̹ö­ÆÙªP¶Íž¶ÆÍž¶ØÍžÏ­R,¶Íž¶¦ PROTECT ON×Íž¶Íž¶]Í5 ž¶ÍžÏ¶¦PROTECTED CHARACTERS×Íž¶ÍžÏ¶¦ PROTECT OFF:×Íž¶Íž¶[͞϶͞¶FÍž¶4Íž¶ Íž¶¦PANNING×Íž¶Íž«ÌêØÈ¡¶Ížê‚«¹ö«ÌêØÈ¡"¶¦PANNING×Íž¶Ížê‚«¹ô϶¦ STOP PANEFEED',11);  WRITE('FORESPACE',CHR(27),CHR(67)); W;  WRITELN; OUT('CURSOR OFF',21);  OUT('CURSOR ON',22);  MORE;  END.  NNING×Íž¶ÍžÏ¶Íž¶H͞ϫÌêØÈ¡<¶צ REVERSE PANÍž¶ Íž¶ Íž¶ Ížê‚«¹ò϶צ STOP PANNING͞ϫÌêØÈ¡¶Ížê‚«¹ð«ÌêØÈ¡¶Ížê‚«¹î϶͞¶WÍž¶צ EOL CLEARÍž¶Íž¶KÍž¶ÍžÏ¶¦ EOS CLEAR×Íž¶Íž¶J͞Ϧ ALL CLEAR× Ï­™·…£ˆÕ-¶ Íž«ÌêÛÈ¡m¶êÍ ž¶צ-_____________________________________________ÍžêÉ¡ ¶Íž¹¶Íž¶HÍžê‚«¹ö¶¦BEEP×Íž¶ÍžÎ¶¦ CLICK×Íž¶ÍžÎ¶¦ CRS ADR TO...×͞ζ͞¶FÍž¶ ‚Íž¶F ‚Íž¶¦ <-(70,22)×͞ζ͞¶FÍž¶ ‚Íž¶ ‚Íž¶צ<-(0,0)͞ζ͞¶FÍž¶ ‚Íž¶ ‚Íž¶¦<-(1,23)×ÍA : BOOLEAN; {DONE...true-> character received} 0BUNK: 0 .. 127; 0RDY: BOOLEAN {Data terminal ready (static ready signal) }! {TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any  END;   CSDB = PACKED RECORD /RCS: RECVCS; /RDB: CHAR; /JNK: CHAR; /XCS: XMITCS; /XDB: CHAR  END;   QUEUE  losses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, l= PACKED ARRAY [0..QUEUESIZE] OF CHAR; {Ring buffer for receiver}   HANDLER = RECORD -QBASE: INTEGER; {Address of riosses arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any ng buffer} -QHEAD: INTEGER; {Index for insertion} -QTAIL: INTEGER; {Index for extraction} patent or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without fu-STATUS: RECVCS; {Status of reception} -CODE: ARRAY [0..29] OF INTEGER +END; /  {  ^F  ***************************rther notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. *********************************************}  VAR   WRKSTR: STRING[255]; {This allows RECVSTR to return up to 255 cIt may not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY hars} WRKCHR: CHAR;   Q: ^QUEUE; {Ring buffer for receiver}  H: ^HANDLER; {Receiver interTERAK CORPORATION ="ALL RIGHTS RESERVED"}  { TERAK 8510 serial interface I/O service routines fD. Kodimer ZSee LOGO for Rerupt service routine, with Q pointers}   SLU: RECORD CASE BOOLEAN OF 1TRUE: (ADR: INTEGER); 1FALSE:(REG: ^CSDB) vision}  PROGRAM SERIALIO;  CONST  "QUEUESIZE = 199; {Receiver ringbuffer size, bytes}  CR = 13; LF = 10;   TYPE  /END;    {  ^F  ************************************************************************}   FUNCTION OCTAL(S:STRING):  RECVCS = PACKED RECORD 0JUNK: 0 .. 63; 0INT: BOOLEAN; {Interrupt enable} 0DUN: BOOLEAN; {DONE...true-> characterINTEGER;  VAR R,I: INTEGER;  BEGIN R:=0; I:=0; "WHILE I b R0 } $CODE[ 4] := OCTAL('177756'); $CODE[ 5] := OCTAL('113710'); { MOVB @#RDB, (R0) } $CODE[ 6] := OCTAL('177522'); $yte was transfered. FALSE -> nothing availble or error}  BEGIN IF H^.STATUS.ERR THEN CODE[ 7] := OCTAL('053767'); { BIS @#RCS, QSTAT } $CODE[ 8] := OCTAL('177520'); $CODE[ 9] := OCTAL('177752'); $CODE[10] ${Error flag was set...Do what you will here...QSTAT contains a strobe of $the receiver status register. Bits are defined in R:= OCTAL('100421'); { BMI 4$ } $CODE[11] := OCTAL('142720'); { BICB #200, (R0)+ } $CODE[12] := OCTAL('000200'); $COECVCS type. $for example, H^.STATUS.OVR, if true, indicates overrun occured} "BEGIN RECVBYT:=FALSE; {Function false...} "H^.QDE[13] := OCTAL('166700'); { SUB QBASE, R0 } $CODE[14] := OCTAL('177732'); $CODE[15] := OCTAL('020027'); { CMP R0, #QHEAD:=H^.QTAIL; {Throw away all data in ring buffer}  END ELSE IF H^.QHEAD = H^.QTAIL THEN {Buffer is empty} RECVBYT:=FALSE EUEUESIZE } $CODE[16] := QUEUESIZE; $CODE[17] := OCTAL('101401'); { BLOS 2$ } $CODE[18] := OCTAL('005000'); { CLR R0LSE $BEGIN C:=Q^[H^.QTAIL]; RECVBYT:=TRUE; &IF H^.QTAIL = QUEUESIZE THEN H^.QTAIL := 0 ELSE H^.QTAIL:=H^.QTAIL+1; END;  END;  } $CODE[19] := OCTAL('020067'); {2$: CMP R0, QTAIL } $CODE[20] := OCTAL('177722');   PROCEDURE RECVSTR(ENDCHR1,ENDCHR2:INTEGER); {Receive string delimited by "character with value of either ENDCHR1 or ENDCHR$CODE[21] := OCTAL('001004'); { BNE 3$ } $CODE[22] := OCTAL('012767'); { MOV #^B1000100000000000, QSTAT } $CODE[23]2 (not included in string, "but returned in WRKCHR), synchronously}   {Note...String is returned in WRKSTR to allow 255 char := OCTAL('104000'); $CODE[24] := OCTAL('177714'); $CODE[25] := OCTAL('000402'); { BR 4$ } $CODE[26] := OCTAL('010067');acters to be returned. ! Else, if string is passed as parameter, overflow occurs at 81 char.}  {Also Note...Could hang h {3$: MOV R0, QHEAD } $CODE[27] := OCTAL('177702'); $CODE[28] := OCTAL('012600'); {4$: MOV (SP)+, R0 } $CODE[29] := OCTALere forever if other machine is asleep. Solution is (the loop counter or real time clock which could be added if req'd.} C =I+1; UNTIL I>999; {Purge} "SLU.REG^.RCS.INT:=FALSE; {Off!} END; "  {Note... if an SLU.RCS interrupt should be requested during the instruction  which turns off the INT bit, the processor will halt due to interrupt bus fault.  In the above, we are assO^uming that the Host machine is thru talking.}   {Note... if program is interrupted due to a ^NULL, the O/S will execute a  Råž5  VAR DUMSTR:STRING[1];  BEGIN DUMSTR:='*'; WRKSTR:=''; "REPEAT REPEAT UNTIL RECVBYT(WRKCHR); "DUMSTR[1]:=WRKCHR; {Put characESET instruction, which will turn off serial input interrupt enable.}   { The routines availble in this package are... ( (Rter into string variable} "IF (WRKCHR IN [' '..'~']) AND (LENGTH(WRKSTR)<255) THEN .{Accept only printing characters} WRKSTRECVBYT Function...true if character returned (allows async input) (RECVSTR Procedure...collect chars into WRKSTR until either:=CONCAT(WRKSTR,DUMSTR);  UNTIL ORD(WRKCHR) IN [ENDCHR1,ENDCHR2]; END;   FUNCTION XMITBYT(C:CHAR):BOOLEAN; {TRUE -> byte was ENDCHR rec'd (XMITBYT Function...true if character was transmitted  transfered}  BEGIN WITH SLU.REG^ DO BEGIN "{REPEAT UNTIL XCS.RDY; {Wait on ready bit} {<-- Compile iff modem ready valid} "I(XMITSTR Procedure...Send whole string (note...no delimiters added) (XMITCHR Procedure...Synchronous XMITBYT (CLEAR MustF XCS.DUN THEN {Check the done bit} $BEGIN XMITBYT:=TRUE; XDB:=C; END ELSE XMITBYT:=FALSE; END; END;   PROCEDURE XMITSTR(S: be called one time at start of program before I/O (SHUTDOWN Must be called one time at end of program after I/O}  !BEGIN STRING); {Send string synchrounously, no delimiters added}  VAR CURSOR:INTEGER;  BEGIN CURSOR:=1; WHILE CURSOR<=LENGTH(S) DO ! CLEAR; #REPEAT %XMITSTR('Hello? Anybody out there? Can anybody hear me?'); %RECVSTR(CR,LF); {Get line ended by either CR O"BEGIN REPEAT UNTIL XMITBYT(S[CURSOR]); CURSOR:=CURSOR+1; END; END;   PROCEDURE XMITCHR(C:CHAR); {Useful to send characters R LF } #UNTIL POS('Yes, but would you please talk a little louder?',WRKSTR) > 0; ({Using POS function is slightly forgiving ofsynchronously}  BEGIN REPEAT UNTIL XMITBYT(C); END;   superfluous characters} #SHUTDOWN; !END.   PROCEDURE XMITCCH(I:INTEGER); {Useful to send control characters synchronously}  BEGIN REPEAT UNTIL XMITBYT(CHR(I)); END;   PROCEDURE SHUTDOWN; {Must call before leaving program}  VAR I: INTEGER;  BEGIN I:=0; REPEAT IF RECVBYT(WRKCHR) THEN I:=0; I:D ses or damages, %whether direct or indirect, resulting from the use of such %information, including, without limitation, losseBSEQUENT FILES AND WRITE THEM } "OBLK := RBLK; "LNGTH := TRUE; "WHILE LNGTH DO $BEGIN $WRITE ('Input TEXT file? '); $READLs arising from %claims of patent, copyright, and trademark infringement. No license %is granted hereby for the use of any pateN (FNAME); $IF LENGTH (FNAME) > 0 THEN &BEGIN &RESET (INP, CONCAT (FNAME, '.TEXT')); &RBLK := 2; nt or patent rights of %TERAK. TERAK reserves the right to update the information contained %herein at any time without furthe&WHILE (NOT EOF (INP)) AND (NUMT=1) DO (BEGIN (NUMT := BLOCKREAD (INP, BLOCK, 1, RBLK); (NUMT := BLOCKWRITE (OUTP, BLOCK, 1,r notice. % %The information contained herein is proprietary to TERAK CORPORATION %and must be treated as confidential. It m OBLK); (RBLK := RBLK + 1; OBLK := OBLK + 1; (END; &CLOSE (INP); &END $ELSE LNGTH := FALSE; $END; "CLOSE (OUTP, LOCK); "ay not be disclosed to %others or used for any purpose except as expressly consented to by %TERAK. 6COPYRIGHT 1980 BY TERAWRITE ('More? '); "READLN (MORE); "IF (MORE <> 'Y') THEN GO := FALSE;  UNTIL NOT GO  END.  K CORPORATION ="ALL RIGHTS RESERVED"}  PROGRAM CONCATXT;  TYPE A = ARRAY [0..511] OF INTEGER;  VAR INP, OUTP :FILE; $GO, LNGTH :BOOLEAN; $FNAME :STRING; $MORE :CHAR; $NUMT, $RBLK,OBLK :INTEGER; $BLOCK :A;  BEGIN  GO := TRUE;  { PRINT MESSAGE }  WRITELN ('This program will concatenate any number of TEXT files');  WRITELN ('and output them to a specified TEXT file. The .TEXT');  WRITELN ('extension is assumed on filenames. When all input files');  WRITELN ('have been specified, type .'); "REPEAT "{ GET OUTPUT FILENAME } "WRITE ('Output to what TEXT file? '); "READLN (FNAME); "REWRITE (OUTP, CONCAT (FNAME, '.TEXT')); "{ GET FIRST FILE AND WRITE IT } "WRITE ('Input TEXT file? '); "READLN (FNAME); "RESET (INP, CONCAT (FNAME, '.TEXT')); "NUMT := 1; "RBLK := 0; "WHILE (NOT EOF (INP)) AND (NUMT=1) DO $BEGIN $NUMT := BL%{TERAK CORPORATION believes that the information contained herein is %accurate. In no event will TERAK be liable for any losOCKREAD (INP, BLOCK, 1, RBLK); $NUMT := BLOCKWRITE (OUTP, BLOCK, 1, RBLK); $RBLK := RBLK + 1; $END; "CLOSE (INP); "{ GET SUE h CONCATXT  ÆÆ�/Ç‘ÍÆ+Æ�WÇ‘ÍÕ«T¶צ6This program will concatenate any number of TEXT filesÍž¶Íž¶צ4and output them to a specified TEXT file. The .TEXTÍž¶Íž¶צ8extension is assumed on filenames. When all input filesÍž¶Íž¶צ#have been specified, type .Íž¶Íž¶¦Output to what TEXT file? ×Íž¶¥UPÍž¶Íž¥Ì‚‚Æ‚‚¥UPÍÆ‚‚¦.TEXT×UÍÆ‚‚Íž¶צInput TEXT file? Íž¶¥UPÍž¶Íž¥+Ì‚‚Æ‚‚¥UPÍÆ‚‚¦.TEXT×UÍÆ‚‚Íž«€�«€€¥+Í “©€�Ä¡4¥+¥€‚©€€Íž«€�¥¥€‚©€€Íž«€�©€€‚«€€¹ö¥+Íž©€€««S©S¡ð¶צInput TEXT file? Íž¶¥UPÍž¶Íž¥U¾Å¡¥+Ì‚‚Æ‚‚¥UPÍÆ‚‚¦.TEXT×UÍÆ‚‚Íž«€€¥+Í “©€�Ä¡9¥+¥€‚©€€Íž«€�¥¥€‚©Íž«€�©€€‚«€€©‚«¹ô¥+Íž¹«S¹ò¥Íž¶צMore? Íž¶¥~Íž¶Íž©~YË¡«T©T“¡îÆÍÆ+ÍÁTK §eT`ž¥Ì‚‚Æ‚‚¥UPÍÆ‚‚¦.TEXT×UÍÆ‚‚Íž¶צInput TEXT file? Íž¶¥UPÍž¶Íž¥+Ì‚‚Æ‚‚¥UPÍÆ‚‚¦.TEXT×UÍÆ‚‚Íž«€�«€€¥+Í “©€�ÃF Á! @$ <€€G€H, x@Häà€à @ŠHˆ„x† @‚ø0@`€ D‰@ @d*ˆ < "*‘0ÀÂÃb B"*"2!x A"K$&bÀ@ A I$D€`àá`0˜€?(bLøÀ€?@À!à"ID„�@! ED@x!€ ‘ˆ…@È@€€ð€ €À€` 8ø€�€‘ˆ”ˆ"@ø`€ˆ„�H€¤ˆ$ @ø€D„HH„¤ˆ0HÀ@BBD ð 0@ ÿDÄ$!ˆ€ BBDD@HB� !ÀAB" BˆBà#<€a"2ˆ!Ä @ À€p@�Àÿà |€€ ‘B!„ ÀÀƒÀ0‘$B!„@ 80@�ˆ$B"AÁÀ€!€@  `ÈH4q"�Àà€0DD18‚08à`$"‘#! þ@  ø Êsà"2‘‰#CÀÁ‘Ie$B88 �‘�I2‚$„ (þ þ ð þ þ€A‘ˆˆH †(� €`ˆÈȈH2 „H„` € DHLˆ$" „Id@`FHd |  @@8@8@0ˆ@ˆ$"@Ñ  @B,"ˆ$"H’C  €†!*„$"H"B €€ ‚ )F"$Jˆ$D @ 9À€ a€€ @€€‚A „9B’$’ED@ÀA‚y0DB’d’MŒ€ @ADB‘D’Š € "Æ@"$„  "$ø`˜G A’ "„D„`!�ÇæK>Ù<™Ï! ’ D„‚„ABÐÏö[0ŸÙžÙï‚ ’ D„‚ ABÐ€ÆØ°ƒÙ†@D€„� @ø‚‚@ÀO ‚Ù`a‰0D�‚ C‚Ð€ÂØ±�Ù†Ù`– I„�‚Ð€ÃØ³�Ù†Ù`‚H‚�„!BÐ‡ÃØ²�Ù†Ùg&ƒ$@À?@Â@0|@B@ˆCB@@ ‚`BB�D¤€ð€‡"B‘Hä 2~Ä!"‘ÈD#"3‚�!FÐÁض�ÙŽßç'�$‚ˆ"DÐ€ÃØ¶�Ù¼ßà#A$ˆ‚ˆ$ˆÐ€Ãض�Ù¸Ù`#�@2ˆ‚ˆ Dˆ à?üÿD?"‘ˆD"D@üÀàÿ€øÀÀ"‰ˆHBDˆ à~| #IMBHAðàÐÀÆØ´½Ù°Ù`#Á DB !Ę`ÐÀÆØ¼±Ù°Ù`#! DB Aˆ�@ÐÀÆØ¸±Ù°Ù`&€  "B AˆAÿ€‘H‰†ˆ‚àÿÈ€�HŠ„�ðÿ8€ˆH˜1 ÀÈ`ÄØ°±Ù°Ù`&€  "A$ Aˆ �`ÈgÌØ°¿Ï¾Ùo&€ "A& Bˆ �ˆ/LØ0Ïœ˜o&@„D"A"9BA�ˆH A @ˆH  B DD  "D€DD""Œ ‚D"a""BB 0BD"1""„B AB#"$!‚@#$BD!Dˆ@€$Bˆ"ˆ€À `$Bˆ ˆ ƒAB!A$!  � "‘Ad A"�ADb  „ H"”€?óþ €H Bˆ"€€?3 `„O D€$ €€30 ˜€C@°„�d !PA„B  Â0H”PA„‚8@ D”HA„‚ @  $’(Aˆ`€ @€30@„€p@@�„°Ä "@€30€C@À @�!‰ @€30?ãH @B�!‰@@€30? $ ’$A„@€ @ $A!Á@ ’$�"�H0@‚! A@€óˆ( ‚!C@€ó& �B @€3 !ˆ@ˆQ"�8"‚@ÄI„"‚ "@bI„"‚ B� !!‚ €3 ˆ€€( 2"‚! €3 � „„B( "A €3@DD„B(D‚@"E„"‚ F@�DB"‚ D@ˆ€$B!‚ D €3ˆCD„B(BD‚ €3ÿ" DD"HB"„( €3~�! FB"HB"„(@ˆ€$B!!„@D`"BA„ @b AAˆ @"A �‚"B"HB$p‚"#"DD@„P‚"!"DDD¡1Aˆ@˜AŒA@ˆ@„�@H€„�øH  Á! @H$! €$’‘€ÉP Aàÿ•H(rUD¨ÁÿþVBT€ÿøþÿT€ÿÀÿ€ÿÿÿÿÿÿ?€ÿÿÿàðüð?ÀÿÀÿü?ÿÿI @ À€p@�Àÿ|€€ ‘B!„ ÀÀƒÀ0‘$B!„@  80@�ˆ$B"AÁÀ€!€@  `ÈH4q"�Àà€0DD18‚08à`$"‘#! þ@  ø Êà"2‘‰#CÀÁ‘Ie$B88 �‘�I2‚$„ († † ð ž þ€A‘ˆˆH †(� €`ˆÈȈH2 „H„` € DHLˆ$" „Id@`FHd |  @@8@8 @0ˆ@ˆ$"@Ñ  @B,"ˆ$"H’C € €†!*„$"H"B €€€ ‚ )F"$Jˆ$D @ 9À€ a€ € @€€‚A „9B’$’ED@ÀA‚y0DB’d’MŒ€ @ADB‘D’Š€ "Æ@"$„  "$ø`˜@ ‚`BB�D¤€ð€‡"B‘Hä 2~Ä!"‘ÈD#"3@$ <€€G€H, x@Häà€à @ŠHˆà?üÿD?"‘ˆD"D@ üÀàÿ€øÀÀ"‰ˆHBDˆ ðà~| #IMBHApðà„x† @‚ø0@`€ D‰@ @d*ˆ < "*‘0ÀÂÃb B"*"2!x A"K$&bÀ@ A I$D€`àá`0˜€?(bLøÀ€?@À!à"ID„�@! ED@x!€ ‘ˆ…@È@€€ð€ €À€` 8ø€�€‘ˆ”ˆ"@ø`€ˆ„�H€¤ˆ$ @ø€D„HH„¤ˆ0HÀ@BBD ð 0@ ÿDÄ$!ˆ€ BBDD@HB� ÀAB" BˆB <€a"2ˆ!Ä J @#$BD!Dˆ@€$Bˆ"ˆ€À `$Bˆ ˆ ƒAB!A$!  � "‘Ad A"�ADb  „ H"”€?óþ €H Bˆ"€€?3 `„O D€$ €€30 ˜€C@°„�d !PA„B  Â0H”PA„‚8@ D”HA„‚ @  $’(Aˆ`€ @€30@„€p@@�„°Ä "@€30€C@À @�!‰ @€30?ãH @B�!‰@@€30? $ ’$A„@€ @ $A!Á@ ’$�"�H0@‚! A@€óˆ( ‚!C@€ó& �B @€3 !ˆ@ˆQ"�8"‚@ÄI„"‚ "@bI„"‚ B� !!‚ €3 ˆ€€( 2"‚! €3 � „„B( "A €3@DD„B(D‚@"E„"‚ F@�DB"‚ D@ˆ€$B!‚ D €3ˆCD„B(BD‚ €3ÿ" DD"HB"„( €3~�! FB"HB"„(@ˆ€$B!!„@D`"BA„ @b AAˆ @"A �‚"B"HB$p‚"#"DD@„P‚"!"DDD¡1Aˆ@˜AŒA@ˆ@„�@H€„�øA’ "„D„`!�ÇæK>Ù<™Ï! ’ D„‚„ABÐÏö[0ŸÙžÙï‚ ’ D„‚ ABÐ€ÆØ°ƒÙ†@D€„� @ø‚‚@ÀO ‚Ù`a‰0D�‚ C‚Ð€ÂØ±�Ù†Ù`– I„�‚Ð€ÃØ³�Ù†Ù`‚H‚�„!BÐ‡ÃØ²�Ù†Ùg&ƒ$@À?@Â@0|@B@ˆCB@‚�!FÐÁض�ÙŽßç'�$‚ˆ"DÐ€ÃØ¶�Ù¼ßà#A$ˆ‚ˆ$ˆÐ€Ãض�Ù¸Ù`#�@2ˆ‚ˆ Dˆ @H$! €$’‘€ÉP ÐÀÆØ´½Ù°Ù`#Á DB !Ę`ÐÀÆØ¼±Ù°Ù`#! DB Aˆ�@ÐÀÆØ¸±Ù°Ù`&€  "B AˆAàÿ•H(rUD¨ÁÿþVBT€ÿøþÿTÿ€‘H‰†ˆ‚`àÿÈ€�HŠ„�ðÿ8€ˆH˜1 ÀÈ`ÄØ°±Ù°Ù`&€  "A$ Aˆ �`ÈgÌØ°¿Ï¾Ùo&€ "A& Bˆ �ˆ/LØ0Ïœ˜o&@„D"A"9BA�ˆH A @ˆH  B DD  "D€DD""Œ ‚D"a""BB 0BD"1""„B AB#"$!‚K ÀÂÃb€ÿÀÿ€ÿÿÿÿÿÿ?€ÿÿÿàðüð?ÀÿÀÿü?ÿÿ Á! `ƒ„x† @‚ø0L € "Æ@"$„  "$ø`˜@ ‚`BB�D¤€ð€‡"B‘Hä 2~Ä!"‘ÈD#"3@$ <€€G€H, x@Häà€à @ŠHˆà?üÿD?"‘ˆD"D@ üÀàÿ€øÀÀ"‰ˆHBDˆ ðà~| #IMBHApðà@`€ D‰@ @d*ˆ < "*‘0ÿ€‘H‰†ˆ‚`àÿÈ€�HŠ„�ðÿ8€ˆH˜1 À B"*"2!x A"K$&bÀ@ A I$D€ˆH A @ˆH  B DD  "D€DD""Œ`àá`0˜€?(bLøÀ€?@À!à"ID„�@! ED@x!€ ‘ˆ…@È@€€ð€ €À€` 8ø€�€‘ˆ”ˆ"@ø`€ˆ„�H€¤ˆ$ @ø€D„HH„¤ˆ0HÀ@BBD ð 0@ ÿDÄ$!ˆ€ BBDD@HB� ÀAB" BˆB <€a"2ˆ!Ä @ À€p@�Àÿ|€€ ‘B!„ ÀÀƒÀ0‘$B!„@  80@�ˆ$B"AÁÀ€!€@  `ÈH4q"�Àà€0DD18‚08à`$"‘#! þ@  ø Êà"2‘‰#CÀÁ‘Ie$B88 �‘�I2‚$„ († † ð ž þ€A‘ˆˆH †(� €`ˆÈȈH2 „H„` € DHLˆ$" „Id@`FHd |  @@8@8 @0ˆ@ˆ$"@Ñ  @B,"ˆ$"H’C € €†!*„$"H"B €€€ ‚ )F"$Jˆ$D @ 9À€ a€ € @€€‚A „9B’$’ED@ÀA‚y0DB’d’MŒ€ @ADB‘D’Š