IMD 1.06: 5/10/2005 16:27:23 Sage Utility disk åå UTILBꑦ;  FORTLIB4.CODE¦ÕF BLIB.R4.CODEĄ§Fe KERNEL.CODE Ą§EemDISKCHANGE.CODE§7mp DISKSIZE.CODE§%p† REMTALK.TEXTĄ¦{†˜ DIR.INFO.CODE§‘˜œMARKDUPDIR.CODE¤tœŸ BOOTER.CODE Ą„%Ÿ¢COMMANDIO.CODE„¤¢„ERRORHANDL.CODE¤v„¬FILE.INFO.CODE¤¬µFINDPARAMS.CODE¤tµŗ SYS.INFO.CODE¤ŗĄ WILD.CODEėø Ą¤ĄĀREMINTEST.CODE„ĀĘREMINTEST.TEXT„ĘĖ IB.BUS.CODE ĄØĖ÷ IB.BUS.TEXT ĄØ÷ IB.LNK.CODE ĄØ IB.EX.CODEø ĄØ IB.UNIT.TEXTĄØ IB.EX.TEXTø ĄØ. IB.DEF.TEXT ĄØ.@ INTERP.0.CODE¦+@U INTERP2.CODEĄ¦+Ul INTERP.4.CODE¦+lo RECEIVE.CODEĄ„oqREMOUTTEST.CODE„qw TEXTIN.CODE Ą„w RECEIVE.TEXTĄ„ƒREMOUTTEST.TEXT„ƒ‰ SEND.TEXTėø Ą„‰Œ SEND.CODEėø Ą„Œš TEXTIN.TEXT Ą„š” TOPSYS.CODE Ą¦{”Ē TOPSYS.TEXT Ą¦{Ēį PEDGEN.CODE Ą§įēCHKSUMOPS.CODE§!ēļ ASMLOAD.CODEĄ¦{ļ÷REM.HAYES.CODE§‰÷’REM.VADIC.CODE§‰’#MU4.FBOOT.TEXT¦{#'MU4.FBOOT.CODE¦{'IMU4.WBOOT.TEXT¦{IMMU4.WBOOT.CODE¦{MoMU.BOOTEXT.TEXT§©otMU.BOOTEXT.CODE§©tx MU.PBOOT.CODE§zx’ MU.PBOOT.TEXT§z’œMU.CONVERT.CODE§Jœ­ TRMDEF.DATA Ą©A­³ REMTALK.CODEĄ¦{³ķMU4.BIOSąėø Ą©‚ķ$ MUTRMSET.CODE¦{$6 MU.CONFIGėø ĄØ6> IB.UNIT.CODEĄØ>B USERLIB.TEXTĄØB™ MU.UTIL.CODEĄ©™® FORTLIB2.CODE¦Õ®Õ BLIB.R2.CODEĄ§ÕēTELE.VADIC.CODEØēōTELE.HAYES.CODEØō DUMP.CODEėø ĄØŃ# RESTORE.CODEĄر#' DUMPDIR.CODEĄ§Ü UTILBꑦ;  FORTLIB4.CODE¦ÕF BLIB.R4.CODEĄ§Fe KERNEL.CODE Ą§EemDISKCHANGE.CODE§7mp DISKSIZE.CODE§%p† REMTALK.TEXTĄ¦{†˜ DIR.INFO.CODE§‘˜œMARKDUPDIR.CODE¤tœŸ BOOTER.CODE Ą„%Ÿ¢COMMANDIO.CODE„¤¢„ERRORHANDL.CODE¤v„¬FILE.INFO.CODE¤¬µFINDPARAMS.CODE¤tµŗ SYS.INFO.CODE¤ŗĄ WILD.CODEėø Ą¤ĄĀREMINTEST.CODE„ĀĘREMINTEST.TEXT„ĘĖ IB.BUS.CODE ĄØĖ÷ IB.BUS.TEXT ĄØ÷ IB.LNK.CODE ĄØ IB.EX.CODEø ĄØ IB.UNIT.TEXTĄØ IB.EX.TEXTø ĄØ. IB.DEF.TEXT ĄØ.@ INTERP.0.CODE¦+@U INTERP2.CODEĄ¦+Ul INTERP.4.CODE¦+lo RECEIVE.CODEĄ„oqREMOUTTEST.CODE„qw TEXTIN.CODE Ą„w RECEIVE.TEXTĄ„ƒREMOUTTEST.TEXT„ƒ‰ SEND.TEXTėø Ą„‰Œ SEND.CODEėø Ą„Œš TEXTIN.TEXT Ą„š” TOPSYS.CODE Ą¦{”Ē TOPSYS.TEXT Ą¦{Ēį PEDGEN.CODE Ą§įēCHKSUMOPS.CODE§!ēļ ASMLOAD.CODEĄ¦{ļ÷REM.HAYES.CODE§‰÷’REM.VADIC.CODE§‰’#MU4.FBOOT.TEXT¦{#'MU4.FBOOT.CODE¦{'IMU4.WBOOT.TEXT¦{IMMU4.WBOOT.CODE¦{MoMU.BOOTEXT.TEXT§©otMU.BOOTEXT.CODE§©tx MU.PBOOT.CODE§zx’ MU.PBOOT.TEXT§z’œMU.CONVERT.CODE§Jœ­ TRMDEF.DATA Ą©A­³ REMTALK.CODEĄ¦{³ķMU4.BIOSąėø Ą©‚ķ$ MUTRMSET.CODE¦{$6 MU.CONFIGėø ĄØ6> IB.UNIT.CODEĄØ>B USERLIB.TEXTĄØB™ MU.UTIL.CODEĄ©™® FORTLIB2.CODE¦Õ®Õ BLIB.R2.CODEĄ§ÕēTELE.VADIC.CODEØēōTELE.HAYES.CODEØō DUMP.CODEėø ĄØŃ# RESTORE.CODEĄر#' DUMPDIR.CODEĄ§ÜĢ3RTIO RTMISC €€Ŗ( ”Wnopr (c) 1980,81 Silicon Valley Software and 1981,82,83 SMS ĖRTIO ŌŸ``į×Ä {zē‚€&¹ {zē‚€*¹ Ō yhŠą {jkab«! |£ic!×Äab«š‚€.s š {zēs š‚€3s š |sš‚€8s š z!Œ£sšs–ؚsš‚€>s š X¢sš‚€Ms šs p–ūi1h ˜±!”Ō j"y#ŅiŠ"xhŠé l–^$Ņ`t ē š;Ċ*2˜Ņ `t ē €Pujat ę !rŠ2h2x„ k#ē$Ä#1Ä#ēÄ#ēÄ#ēÄ „ m–‘"1Ņ"x„Š1h ˜Ó i!x"Ņ!"xÄ!xhŠģ"4Ó"2Ä"„˜„–©…€ˆŌ€@‘0}Ō€/‘–j!‘!„0˜Ņ€C‘0h ę ęŌ9 }Ō ē ę §° ę ³  ę ę ę³”jŠ ę ę ę³ ę ę ę³”j {Ōj | z±”Ōj–90h ę ē  ęīvÓ€0‘ ē Ė’0h! ę ę³Ō! ē p ę ē!ķÄ }ń ę ēĊ ę ē !vÓ€1‘ ē Ä ē!ķÄ ē Ė0¤£h ²Ÿ‡ē § ±”Ō īhŠė‡ē § Ó€2‘‡ē ķa £īp‡ē ķ £īp‘%‡ę‘&a‡ē  £īp‡ē ćē  £īˁ¬…€ˆŌ!…€‹…€Š²Ō…€‰…€‹ī!ȅ€‹ķ„€‹Š€B‘Šl0h ē ķÄ ę ęŌ@ ę ³Ō ę Ō } ęå”Ō‘'Š‘% ę‘&Š ę‘& ē ę !Č ē ę ķÄ ē Ċ04Ņ š!vŠ ę x!Č ę s–"0h ē ķÄ ę ęŌO ē ę §¦ ę ³­° Ō( ę ę ę³Ō¦Š ę Ō‘% ę‘& ē ę §¦­Ó ē ę ķĊ ę s ę x§¦–Ė…€ķ„€…€ˆŌ#…€‹…€Š²Ō…€‰…€‹ī§h…€‹ķ„€‹Š„€ hŠq5Ō6†§²Ō †6§h6ķ„Š€ hŠV0j"ę ²ń€ h"ē "ę īĊ=i* Ґ* € ²ń"ē € £īĀ hŠiŠ °„ °3 Ō € h"ē ¼Ä!ŌĆ# ĖY0i!ē!ķÄ!ę ęŌe!ę ³Ÿ!ę !ę ę³Ÿ!ę!ę ę³Ÿ ”Ō!ē !ę §h!ē !ę ķĊ/!ę!ę ę³Ō„hŠ!ę Ō‘%!ę‘&!ē !ę §h!ē !ę ķĊ!ę s!ę x§h" Ėt…€¦ih !²Ō €*‘( ķhŠņ–Œ"ih !²Ō € ‘( ķhŠņ–Ii„€`‘) € ±…€$° Ōń €-±j €-° €+° Ō#ń‘…€$Ņ‘`‘) € ±…€$± Ōk € Ņ…€©Ō!Ģ į³ń€3‘ !ŒiŠ5 €0³Ÿ €9²Ÿ Ō‘!Ģ į²Ō €8"£²Ÿ!Ķ į² Ō€3‘ !Œ€0¢ £i…€$³ń`‘)Š…€ķ„€…€$²ń•"Ō!įi%!Ė<…€ˆŌ2…€‹}³Ō€A‘…€ŒŌ}„€‹Š…€‹…€Š²Ō€ ‘(Šń}„€‹‹µ0i!|ń?!ę €>²ń€4‘!!~!}£²ń€4‘!!~!}£³ń…€ŒŌ!}Ō`‘)Š`‘+Š€ ‘(ŠŻ…€ŒŌ4!}Ō.5Ōš†€’s šs „Š!ę €>³ń`‘)Šń3ń!ē ÄŠ$!}Ō !ę ę!ęå”!ę ī°”Ō ‘'!ē !ę īÄ!|ń!!~Ó€5‘!ēĖ{…€“…€’²ń‘…€…€“…€“ķ„€“­€ ÓÜ­€a³­€z²”Ō­€ £¦–ź1!ƒ€PŚŌ!„€ŽŠV!€BҐ1!€N°!€Z° Ō!„€ŽŠ‘Š9!ƒ€VŚŌ,€0„€Ž„€…€ Œ!¢€0£„€…€“h1!ƒ€ZŚńć „€“Š‘– …€“…€’²ń‘…€…€“ī§h…€“ķ„€“– E…€¢²ń …€¢ī„€¢‹"i‘0…€Ž€0Ņ…€i!²Ō‘l‘0Šl…€Ž„€£…€Ž‹ō‘0…€Ž€0Ó‘!„€¢…€„€¦…€¦²Ō‘„€ „€”…€£€F°…€£€E° Ō\‘0…€Ž€.Ó ‘‘0…€Ž€0Ó ‘…€„€„…€£€EŅ7…€“h‘0…€Ž€EŅ"‘0…€Ž€0Ó ‘…€„€¤„€§…€¤²Ō ‘Š „€“„€§‹a!„€¢…€“h‘0„€ „€”…€Ž€0Ņ„€Ø…€„€¦…€¦²Ō ‘Š„€Ø „€“‹'…€ŒŌ‘$ń‘!nj"&²Ō 3‘("ķjŠń‹įž‹$ń‘…€ŒŌ!nj"&²Ōe‘)"ķjŠóŠ!nj"&²Ō € ‘("ķjŠņ‹«ž‹Ź$ń‘!„€Ŗ‹›ž‹ŗ$Ō‘‘0…€Ž€0Ó‘…€£€+Ņ…€„€ŖŠ…€į„€Ŗ‘0…€Ž€PÓ‘‹až‹€…€œ³Ō‘…€œŅ„€”…€œķ„€œ†€”…€œī×!ƀ˜…€œī×…€“Ä‹(ž‹G$Ō‘…€œ°…€””Ō'…€†€˜ī×xÓ†€˜ī×x„€†€”ī×x„€ž„€Ÿ†€”…€œī×x²ń%†€”…€œī׆€”…€œī×xīƀ˜…€œī×x„€“‹ŗż…€œ²ń …€œī„€œ‹©ż…€ Ō+‘/…€Ÿ„€œ…€„€“†€”…€œī×…€žÄ†€˜…€œī×…€Ä‹yż‹˜$Ō‘‹mż‹Œ‘‹†…€ŒŌ‘$Ō‘k3m%€'Ó!%‘(…€“…€’²ń‘…€…€“ī§m…€“ķ„€“ŠŚ3m%€'Ņ€'‘(Š …€“ī„€“k#Ō»‹ żŠ,$Ō‘‘/‹’üŠ$Ō‘Š$Ō‘…€£€Z°„€©‹ćüŠր^– ī0¤‡ę ęՓ‡zŅ „€Œ‘/‡ēćzÓx‡ē ‡ę ‡ę £p‡}ń‡ę 燁ę đ%‡ę‡}”Ō2‡ę 燁ęķÄ`p‡ę `‡ęvÓ€0‘Їę 燁ęˁ %0h Ó‘/ }å ę ę ę°” ę ę ę²Ÿ”Ō ę ē ę Ė ŗ‡‘!„0˜±Õ€0¤‡|Ō‘4ŠH‘5‡ę ꇁ}”Ō7‡ę ē‡ę ęķÄ`p‡ę `‡ę ęīvÓ€0‘‡ę ę‡ę ”Ō‘%‡Ō 0ę rŠ0ę r0‘#– p„„!« ‡#‘a‚€–ė‡ ²ń¤ ‡ ¤¤-.²Ōa-„-ī§Č-ķ¤Šķ‡#‘"h ¤.ē‡Ä.ē‡Ä.ē‡Ä.ēćŌ .ę a˜rŠ .ę a˜r „.ę ęŌ&.ę ēÉŅ.ēĊ.ēÄ.ē Ä.ē Ċ.|ń€6‘.ē Ä–# »!‘!„0˜Ņ‘0{04±”Ō€7‘˜„€ „€Œ Ō0|Ō‘404Ņ„„š†€’s šs „– ݘ„€„ „€Œ„€ˆ"„€‰!„€Š„€‹–`…€ˆń0}ń‘…€‘„€"īih !²Ō…€ ×c«d$ēÄ ķhŠč"„€’„€“‘0…€Ž€(Ó€ ‘„€¢„€©„€œ†€”ī×ƀ˜ī×…€“Ä…€“„€„€ž„€Ÿ„€ „€Ŗ–e&īn&³ń€8‘0m%|Ō€9‘‹ę%ę ęń€:‘‹×%}Ō(’%~l&$j"Œi&$%~Œh ³Ō £h!ķiŠY&%~Œ&%~Œ¢&%~€@Œ&%~€@Œ€@¢¢ķi&%~€ Œ&€ Œ%~€ Œ¢h%ę ēÉŅ!¢i‘5…€Œ!%ę ę³!%ę ęī° %ę ę³” ”Ō€;‘%ę!ķÓ %ę Ō‘%!‘&%ē Ä%ē˰0h ę ēÉŅ ę ° ę°” ę ° ę°” iŠ ę ° ę°” ę ° ę°” i–’0hļ6Ō iŠ> ę Ņ/ ę Ō‘% 棑& ē Ä ęń ē ę ī§Ņ ē ę īĊė ē ę ī§i–ļ6ń0ē 0ę īĖŚ$‘!„0˜±Õ“0k#{Ō#ēċ¦#ę ęń€<‘#|ŌB#}ń€=‘#z°#z°#ę €>²Ÿ” Ō ‘47h8Š‘47 Ӑ8Šö87 Ņų#ēĊT#ę ēÉŅjŠj#}Ō$’#~#ęī"£Œ#ęīŒ#ę ¢#~¢iŠ#ęī"£Œ#ę ¢#~i!²ń!‘–!‘!„0˜Ó,0h |ń Ó‘/ ēÄ zŅ ēđ4 ēÄ |Ō ēĖŽ‡‘!„0˜±Õ“0¤‡|Ō‘4ŠH‘5‡ę ꇁ}”Ō7‡ę ē‡ę ęķÄ`p‡ę `‡ę ęīvÓ€0‘‡ę ęŌ7‡ę Ō‘%‡ę ēÉŅ ‡ēĊ‡ēćē ćē ćēćēćē ćēˁ…€˜Ņ‘$`‘+aī Č`‘+aī Ča"pŠ‘2…€£€IÓ€!‘"…€¦‘.–7"ih !²Ō # īב ķhŠļ–ä…€˜Ņ)‘$o'¤¤ ).²Ō`‘+„ )ī Č)ķ¤ Šģ„ /'p‹w‘2…€£€F±…€£€E±”Ō€"‘aĢō„€’ᤠ`‘) € ±…€…€¦° Ōļ €-°n €-° €+° Ō…€…€¦Ņ€ hŠ`‘)m € ±…€…€¦± Õ½ € Ņ…€©Ō aņ€aóĀō(ķ¤ Š €.Ņ(³Ō€#‘¤ Šl €E° €D°  €e°  €d° Ō„ …€¦…€£‘.mŠG €+° €-° Ō„ …€¦…€£‘. €-Ņ)ᤠmŠ# €0³Ÿ €9²Ÿ Ō€$‘aņ€aóĀ €0£ĢĄō(ķ¤ …€…€¦³Ÿ%å”Ō`‘)Š…€ķ„€…€…€¦²Ÿ% ÕC’&Ōaaóäō(³Ōaaó(p ĆōŠaa󅀄p Ćō%ń…€Ŗ¤ )³ńaaó)įp ĆōŠ aaó)p Āō/aóō–’"ih !²Ō # īב ķhŠļ–”…€˜Ņ‘$`‘+aī Č`‘+aī Ča"pŠm‘2…€£€LÓ€%‘„€`‘) € ±…€…€¦° Ōļ €.Ņ…€…€¦Ņ€&‘Š`‘) €T± €F±” €t±” €f±”3å”Ō€'‘" €T° €t° Ä…€…€¦³ń`‘)Šņ–Æ"ih !²Ō # īב ķhŠļ–n…€˜Ņ6‘$'īlj"$²Ō("&Œh&Ō "¢h&mi!%²Ōc‘+( !¢ī#Č!ķiŠģ"ķjŠÓŠ|'īlj"$²Ōr‘2…€£€AÓ€(‘…€Øń&„€¦„€…€¦&£mi!%²Ōc‘)!ķiŠó"&Œh&Ō "¢h…€¦mi!%²Ōc‘)( !¢ī#Č!ķiŠģ…€¦ķ&mi!%²Ō ( !¢ī€ Č!ķiŠī"ķjЉ– č…€ˆŌ…€˜Ņ€@‘„€ ‘2…€£€\Ó‘/„€ˆŠN0h…€˜Ņ‘$‘/Š2„€ ‘2…€£€\±5å”Ō‘/3Ō ē Ä5Ō„šs„3Ōšr |Ō ē3Ä ēÄ3i–…€˜Ņ‘$g`p`ī§‘(`ī§‘(‹ƒ‘2…€£€IÓ€)‘'’įīŅ `‚€¢ÅkŠ8`‚€„Å'³ń'įomŠmk`#ī' €0¢Č' o#īk'Ņė%Ō `#ī€-Č#īk#£…€¦²ń‘,Š…€¦#££‘-#ķnl$&²Ō `$ī§‘($ķlŠš–¬"ih !²Ō # ī×x‘ ķhŠī–Š­ķ¦­­ ²Ō ˆ­ī×x‘(Š€0‘(–Ķ.o'Ҥ Ф …€˜Ņ'‘$„/„%'p'¤.¤/‡.²Ō „%/ī§‘(/ķ¤Šķ‹¼‘2„/óĢĻń j„/„/óäōŠj¤ c„/óōcóņ€ ĻŌ,¤có/p ĻŌ,/¢¤ c„/ó,p ĆōŠ/¤/Ņ×cóĢĶń=cóņ€Ļń1¤cóĢ/īp ĆĻń,/£¤ c„/ó,įp ĀōŠ/¤/ŅŅ,ķ¤ …€£€FŅ ,…€Ŗ¢…€„¢¤ Š/…€Ŗ²ń…€„ķ¤ Š …€ŖŅ…€„¤ Š…€Ŗ…€„į²ń …€„…€Ŗ¢¤ )³Ō')(³Ōccóņ€(p ĆĄōŠccóņ€)p ĆĄōcóņ€ĻŌ,ķ¤ ccóņ€Ćō…€£€FŅ)ķ¤ i(¤.¤/‡.²Ō,có¾¤ +±/)²”Ōi„/ī×+€0¢Äccó+ĢĮņ€"Āō/ķ¤ŠĪ!Ōj…€£€F°Õ·,…€Ŗ¢¤ !,²Ÿ”Ō¤ …€¦…€„£ī¤.³ń€*‘,²Ō."£¤Š.,£"£¤…€„°,²”Ō-ī¤-³ń‘,Šd-‘-"Ō€-‘(¤…€„°,²”Ō€0‘(Š ,²ń9,ī¤ Šó€.‘(…€„¤,³Ÿ‡²Ÿ”Ō€0‘(,ķ¤ ‡ī¤Šå‡¤.¤/‡.²Ō9/ķ¤Šņ‹˜…€£€E°Õ‹…€Ŗ…€„į²…€Ŗ…€„ķ²Ÿ Ō€+‘!Ō¤ Š,…€Ŗ£¤ h…€§Ō,ąĢ…€¤p ĻŌh…€¦…€¤££¤ Š,ąč³Ōh…€¦£¤ …€„ķ…€Ŗ³¢"¢¤ *)³ńh Ō‘,‹*)£‘-"Ō€-‘(¤…€Ŗ¤.¤/‡.²Ō!/…€Ŗ±”Ō€ ‘(А9/ķ¤Šć€.‘(į…€Ŗ¤.¤/‡.³Ō €0‘(/ī¤Šš…€Ŗ³…€Ŗ…€„ķ³Ÿ”Ԑ9…€„…€Ŗą£¤.¤/‡.²Ō9/ķ¤Šņ…€§Ō€E‘(Š,ą€d³ń €E‘(„€¤Š„€¤,³ń ,ᤠ€-‘(Š€+‘(„%‚€ØÅ (¤„%‡ī, €0¢Č, ¤ ‡ī¤,Ņę…€¤(‡££¤.¤/‡.²Ō €0‘(/ķ¤Šš‡ķ(¤.¤/‡.²Ō „%/ī§‘(/ķ¤ŠķŠ€,‘–2ź"ih !²Ō # ī×ó‘ ķhŠī–-…€˜Ņ‘$bapaī§‘(aī§‘(Š ‘2…€£€LÓ€-‘…€¦ī‘-"Ō€T‘(Š€F‘(–J"ih !²Ō # ī×x‘ ķhŠī–ī­¦¦­¢h¦­ ²Õƒˆ ˆ«­Ņ;ˆ ī§€ °ˆ ī§° ˆ ī§€ ±ˆ ī§±””Ō ˆ ī§‘(Šˆ ī§‘(Š2i¦­!²Ō­­³ńˆ ­ī§‘(­ķ¦­ķ¦ŠÜˆ­ēÄ­ķ¦‹v’–j‡ķi…€˜Ņ‘$‡ī¤j"‡²Ō:„ !×Ä"ķjŠģŠK‡ī¤j"‡²Ō>‘2…€£€AÓ€.‘…€Øń‡„€¦…€¦‡£‘-…€¦‡³ń…€¦oЇo:„ !×Ä"ķjм–Ā…€ˆŌ…€˜Ņ€@‘„€ ‘2…€£€\Ó‘/„€ˆŠ.0h…€˜Ņ ‘$‘/ ēĊ„€ ‘2…€£€\Ņ ēĊ‘/ ēĖō†€‘Jt˜„€˜„˜„˜„‚€±‘1„„„€ˆ–ˆ1˜±Õˆ1„0¤‡|Ō‘4ŠH‘5‡ę ꇁ}”Ō7‡ę ē‡ę ęķÄ`p‡ę `‡ę ęīvÓ€0‘‡ę ę‡ę ”Ō‘%‡ę š;Ó ‡ę r‡x„‹r’–—! Ž‘–„‘” ‘– ’’d’’’’d’’’’d’’’’ ’’’’2’’’’2’’’’d’’’’d’’’’d’’RTIO RTMISC Segment  Proc# Offset# **** Fortran Runtime Error ## ****ū€b’’'\’zž€ž¹žF’hžF’t’Ō’tżŸż ż żŁż ż ’éž6ž’é’į -32768 CONSOLE: § Xڵś„÷ Ą'ȼÆhŲŒK ˱€n ×Ēc` ¹7 Z ł L ™ ō i  J  w  jņ öo 2ńąŗ|RĪ:*** REALOPS EXTRAIO EXTRAHEAHEAPOPS PASCALIOFILEOPS  2RTMISC ”Ž¤€‡€’¢¤€¤€ƒ‡€ƒ‡€²ŌN„€…„€•«„€–‡€–ēĤ€Ž¤€‚‡€‚‡€Ž²Ō„A‡€‡€‚¢„€…‡€‚ī§Č‡€‚ķ¤€‚ŠÜ‡€¢¤€‡€ƒķ¤€ƒŠ©¤€‡€‘¢¤€¤€ƒ‡€ƒ‡€²ŌM„€…„€“«„€”‡€”ēĤ€Ž¤€‚‡€‚‡€Ž²Ō`‡€‡€‚¢„€…‡€‚ī§Č‡€‚ķ¤€‚ŠŻ‡€¢¤€‡€ƒķ¤€ƒŠŖ‡€’‡€‘³ń'„A‡€’ķ€ ȄA‡€’ķ„A‡€’¢‡€‘‡€’£p‡€‘¤€„Š"`‡€‘ķ€ Č`‡€‘ķ`‡€‘¢‡€’‡€‘£p‡€’¤€„„A‡€„Č`‡€„ȇ€ŠK‡€„A`čĊB‡€„A`źÄŠ6‡€„A`éŸÄŠ)‡€„A`éĊ‡€„A`źŸÄЇ€„A`čŸÄŠրW–€–Ūi#Ó/#²ńjŠj#įk$h#Ō! Œi#k#²ń Œh#Ņč"Ō!i!m–0 dņ€ō)Ó@)²ń¤ Ф )ᤠ`„ óō)Ōddó`óĀō)¤ )²ń``ó`óĀō)Ņį(Ōdņ€dóĆō„dóō–J„ dós`óĀsō–[! ³ń!jŠ j–udó`óĻń„ dóōŠ„ `óō–‡! ²ń!jŠ j–”dó`óĪń„ dóōŠ„ `óō–Ė`dósō`óćņ€ Ļńp#„ dós`óĆō–dóćņ€Īń€>rŠ>`ņ€dódóĀĮō`óĢĪń„ dó`ósĆsōŠdóĢĻń „ ņ€äōŠ„ ņ€ō–4dņ€`ó‘ Įō–§ „ óĢĶŌ¤ Š`„ó„ óĆō`óćņ€"Ο¤ (Ō„óĢĻŌ„ņ€'ōŠ„ņ€+äōŠ1d`ósō„ óĢĻń„óĢĻŌ ddóņ€/ĄōŠddóņ€3Įō„dóō–Č`dósō„ ņ€7`óņ€;`óĆĮĀō–č`dósō„ ņ€?`óņ€C`óĆĄĀō–2„ óćņ€GĻŌ„ óĢĪń„ ņ€KōŠ„ ņ€OäōŠ!d„ ósō`ņ€SdóĆō„ dó`óĮdó`óĄĆō– K ³ńiŠ ŅiŠi–j`óĢĻńlŠ `óĢĶŌlŠl– štp‡Ōš‚€bt pŠ š‚€et p/Ō4h,¤ i!+²Ō( ³Ōc„«„.ēÄhŠ ķhšc ī§up!ķiŠÓštp‡Ōš‚€it pštppŠ!š‚€st pšbt pštp"€ Ņߖ–&‘v–’’ ’’’’ ’’’Ū ’’’’ ’’’’ ’’’ł"’’’ł"’’’ł"’’’ü0’’’ł"’’’ł"’’’ł E*’’’ł E*’’’’’’’’ ’’’’’’’’ ’’’ż#3’’’’ ’’’’ ’’’’ ’’’ć’×’²’š’¾’ŹStop Pause Program terminated.,Please press or to continue..(öęÖœ’hSF=0'7šŃ *** EXTRAIO PASCALIOREALOPS RTIO  a ·BLIB BLERR €€€€€€€€€€€€€€€€< BLIB 1‚2BASIC LIBRARY COPYRIGHT 1981 SOFTECH MICROSYSTEMS ž ēŅę¢śĀ`Ā Äž n>  USES "{$U KERNEL.CODE } KERNEL " ( {const} MAXUNIT, MAXDIR, VIDLENG, TIDLENG, FBLKSIZE, .EOL, DLE, STACK_SLOP, P_LOCKED, SEG_FAULT, HEAP_FAULT, & POOL_FAULT, &{type} IORSLTWD, DATEREC, UNITNUM, VID, DIRRANGE, TID, FILEKIND, .DIRENTRY, DIRP, DIRECTORY, WINDOWP, WINDOW, FIBP, FIB, INFOREC, & INT_P, TIB_P, SIB_P, E_REC_P, E_VEC_P, SEM_P, MSCWP, .P_MEM_CHUNK, VIP, BYTE, MEM_CHUNK, ALPHA, MEM_PTR, MEM_LINK, .VINFO, POOLPTR, SIB, E_VEC, E_REC, MSCW, TIB, SEM, .FAULT_MESSAGE, FULL_ADDRESS, UTABLENTRY, UTABLE, .SYSCOMREC, POOLDES, &{var} SYSCOM, USERINFO, IPOT, THEDATE $), $ {$U COMMANDIO.CODE } COMMANDIO $( {type} BIGSTRING, &{proc} EXCEPTION $), " "{$U SCREENOPS.CODE } SCREENOPS $( {proc} SC_CLR_SCREEN $), " "{$U FILEOPS.CODE } FILEOPS $( {proc} FINIT, SCANTITLE $); " "  TYPE 'RFILE=FILE; 'TFILE=TEXT; " SPTR=^BIGSTRING; ' 'FMODE=SET OF ( MINPUT,MOUTPUT,MUPDATE, *MAPPEND, MRELATIVE,MDEVICE ); # ' ' ' #{ 2 } FUNCTION BSPN(S1,S2:BIGSTRING):INTEGER; #{ 3 } FUNCTION BRPT(S1:BIGSTRING; N:INTEGER):SPTR; #{ 4 } FUNCTION BVAL(S:BIGSTRING):REAL; #{ 5 } FUNCTION BVAL1(S:BIGSTRING):INTEGER; #{ 6 } FUNCTION BPOS(S1,S2:BIGSTRING; N:INTEGER):INTEGER; #{ 7 } FUNCTION BSEG(S1:BIGSTRING; Position, Leng : INTEGER):SPTR; #{ 8 } PROCEDURE Dummy1; {formerly BLEN not used now} #{ 9 } FUNCTION BBRK(S1,S2:BIGSTRING):INTEGER; #{ 10 } FUNCTION BTIM:SPTR; #{ 11 } FUNCTION BDAT:SPTR; #{ 12 } FUNCTION BCHR(N:INTEGER):SPTR; #{ 13 } FUNCTION BASC(S1:BIGSTRING):INTEGER; #{ 14 } FUNCTION BSTR(X:REAL):SPTR; #{ 15 } FUNCTION BUPR(S1:BIGSTRING):SPTR; #{ 16 } FUNCTION BRND:REAL; #{ 17 } PROCEDURE BRDZ(X:REAL); #{ 18 } FUNCTION BPCH(S1:BIGSTRING):INTEGER; #{ 19 } FUNCTION BFSP(XUNIT:INTEGER):INTEGER; #{ 20 } PROCEDURE Dummy2; #{ 21 } PROCEDURE Dummy3; #{ 22 } FUNCTION BTAN(X:REAL):REAL; #{ 23 } FUNCTION BCONCAT(S1,S2:BIGSTRING):SPTR; #{ 24 } PROCEDURE BEXITPROG; # #{ 25 } FUNCTION BSDN(N:INTEGER):BOOLEAN; #{ 26 } PROCEDURE BRDN; #{ 27 } PROCEDURE BTAB(N:INTEGER); #{ 28 } PROCEDURE BISTART; #{ 29 } FUNCTION BISTART1(N:INTEGER):SPTR; #{ 30 } PROCEDURE BISTART2; #{ 31 } FUNCTION BISTRING(VAR S:BIGSTRING; MaxLength:INTEGER):BOOLEAN; #{ 32 } FUNCTION BIINUM(VAR N:INTEGER):BOOLEAN; #{ 33 } FUNCTION BIRNUM(VAR X:REAL):BOOLEAN; #{ 34 } FUNCTION BIDNUM(VAR X:REAL):BOOLEAN; #{ 35 } FUNCTION BASTRING(VAR S:BIGSTRING;N:INTEGER):BOOLEAN; #{ 36 } FUNCTION BIEND:BOOLEAN; #{ 37 } PROCEDURE BPSTART; #{ 38 } PROCEDURE BPSTRING(S:BIGSTRING;ZONE:INTEGER); #{ 39 } PROCEDURE BPINUM(N:INTEGER;ZONE:INTEGER); #{ 40 } PROCEDURE BPRNUM(X:REAL;ZONE:INTEGER); #{ 41 } PROCEDURE BPDNUM(X:REAL;ZONE:INTEGER); #{ 42 } PROCEDURE BPEND; #{ 43 } PROCEDURE BCLS; #{ 44 } PROCEDURE BSNZ(N:INTEGER); #{ 45 } PROCEDURE BPMT; #{ 46 } FUNCTION BBSZ(N:INTEGER):INTEGER; #{ 47 } PROCEDURE BGOTOXY(Y,X:INTEGER); #{ 48 } PROCEDURE BDFI(S:BIGSTRING); " #{ FILE OPS } # #{ 49 } PROCEDURE BFCR; #{ 50 } PROCEDURE BFDL; #{ 51 } PROCEDURE BFOP(N:INTEGER; S:BIGSTRING; NUMRECS, RECSIZE:INTEGER; ;MODE:FMODE); #{ 52 } PROCEDURE BFCL(N:INTEGER;DFLAG:INTEGER); #{ 53 } PROCEDURE BFCA; #{ 54 } PROCEDURE BSFL(LOC:INTEGER); #{ 55 } PROCEDURE BSRN(N:INTEGER); #{ 56 } FUNCTION BGFT(S:BIGSTRING):INTEGER; #{ 57 } FUNCTION BEFX(N:INTEGER):INTEGER; # #{ 58 } PROCEDURE BVTST(NEWFLAG:INTEGER; TSCODE:INTEGER; V:FIBP); #{ 59 } FUNCTION BSGN(N:REAL):INTEGER; #{ 60 } FUNCTION BERR:INTEGER; #{ 61 } FUNCTION BEXPI(N1,N2:INTEGER):REAL; #{ 62 } FUNCTION BEXPR(X1,X2:REAL):REAL; #{ 63 } FUNCTION BEXPD(D1,D2:REAL):REAL; #{ 64 } FUNCTION BDFC(D1:REAL):REAL; #{ 65 } FUNCTION BFDC(X:REAL):REAL; #{ 66 } FUNCTION BDIC(D:REAL):INTEGER; #{ 67 } FUNCTION BIDC(N:INTEGER):REAL; #{ 68 } PROCEDURE ERROR(N:INTEGER); #{ 69 } FUNCTION BINT(X:REAL):REAL; #{ 70 } PROCEDURE BPUNC(S:BIGSTRING); #{ 71 } PROCEDURE PERROR; " "  IMPLEMENTATION ¶BLERR )歀‚‹Ąˆ‚€ė’‹·ˆ‚€ė’‹«ˆ‚€)ė’‹Ÿˆ‚€6ė’‹“ˆ‚€Fė’‹‡ˆ‚€\ė’Š|ˆ‚€nė’Šqˆ‚€‡ė’Šfˆ‚€™ė’Š[ˆ‚€“ė’ŠPˆ‚€Ģė’ŠEˆ‚€Śė’Š:ˆ‚€āė’Š/ˆ‚€óė’Š$ˆ‚ė’Šˆ‚ė’Šˆ‚ė’Šց%–Ora‚8ė’švšvšw‡€‚€2³Ō'š‚9w š‡€‚€2£wš€:všw‹ęš‚Bw š‡€‚wš€:všw‡€‚³Ō‹¹‡€‚‹°a‚Kė’‹©a‚Tė’‹Ÿa‚_ė’‹•a‚hė’‹‹a‚qė’‹a‚ƒė’Šxa‚‹ė’Šoa‚ė’Šfa‚¦ė’Š]a‚Æė’ŠTa‚æė’ŠKa‚Ėė’ŠBa‚Ūė’Š9a‚÷ė’Š0a‚‚ ė’Š'a‚‚ė’Ša‚‚.ė’Ša‚‚@ė’Š a‚‚Rė’Šւeša˜w šwšwš‚‚zw š`w šŅp € Ņź–€‚$You cannot write on a read-only filee&You cannot read from a write-only fileeYou cannot close file #00You cannot close a closed filee+You cannot open-for-output an existing file#You cannot open-for-output a device0Relative record number is too large or too smalll#You cannot restore an "APPEND" file4The number of records in the "OPEN" statement is badd.The record size in the "OPEN" statement is baddToo many returns from GOSUBToo many GOSUBS "FREESPACE" argument is not zeroo"Attempt to write past end-of--filee Attempt to read past end-of-fileeBad file titlee Missing Quote$=’I’U’a’m’y’„’’š’„’°’»’Ę’Ń’Ü’ē’ņ’Pascal I/O error Execution error String size errorMissing or bad numberFile is not opennNot enough inputt#Bad number (conversion from string)Too much inputt"Too many variables for print imageeIMAGE field errorEnd of DATA listtWrong type of data in DATA listFile types don't matchhYou tried to open an open filee7You cannot restore a sequential file to a record number%Read record overflow of relative file&Write record overflow of relative fileeBad arguments to SEG$ functionn#Number too large for exponentiation#Negative argument in exponentiation%"ON" statement index is out of boundsM’W’a’k’u’’ˆ’‘’š’£’¬’µ’¾’Ē’Š’Ł’ā’ė’ō’ (continue), (terminate)) t`BLIB ‘%! ³Ō!jŠ j–7! ³Ō jŠ!j–Cp–_š‚€<w šwp–h‘–p‘–œ€`„€¬’š€<vš`˜w š‚€Mw šw–€‚Ŗ „ u–¹…Ó…u–Õ=Ņ„Š=턆 =×x„–,„€…„¬’d„¬’ij!„€…§³Ÿ"”Ō#!ķijd§kh #²Ō„€…!§d §Ņj ķhŠźŠŃ"Ō„€…§ķi! –ˆ‚b„€„¬’b§h‡€ƒ Œi!³Ÿ!€’²Ÿ ‡€ƒ³Ÿ Ō‘Di‘K7bė’7!Č!²ń Ņ 7!b§pŠ 77 ķ! £p7¤€†–€…ķl(Ģōjihnm'Ä))§ķČ))§€?Č)$§€ Ņ$ķlŠō)$§€+Ņ$ķlŠ)$§€-Ņn$ķlŠ )$§€ Ņ$ķlŠō)$§ƒ€XŚŌ((ó ĢĀ)$§€0£ĢĄō$ķl(óĢĪń"ķjŠÖ)$§€.Ņ&$ķl)$§ƒ€\ŚŌ((ó ĢĀ)$§€0£ĢĄō ķh$ķlŠŻ)$§€EŅF$ķl)$§€+Ņ$ķlŠō)$§€-Ņm$ķl)$§ƒ€`ŚŌ! Œ)$§€0£¢i$ķlŠä!³ńōi%Ō!įi! £i!"¢īk#3²ń 'Ä(ņ€ōŠ.#3į³ń(ĢōŠ !³ń((ó!įp ĆōŠ ((ó!p Āō&Ō((óäō)$§€ Ņ$ķlŠō$)§³ń'Ė …e„€†¬’ea`‘L Ō‘D„€ˆaóō–€‡+…e„€†¬’ea`‘L Ō¤€ˆŠᤀˆ–€‡i€„„„¬’„€„‚¬’„€˜„˜`‡„§‡£ķ” `˜” ‡¢ī¤†–…É€`„€ƒ¬’‘K7‚€dė’‡€‚²‡€³Ÿ Ō‘DŠ3‡€‚`§²Ō*‡€‚‡€¢ī`§²ń `§‡€‚£ķ¤€`‡€‚7‡€p7‡€Č7¤€…–€„„€…„¬’d„¬’ij!„€…§³Ÿ"å”Ō!!ķid§kh #²Ō„€…!§d §Ņj ķhŠźŠŅ"ń„€…§ķi! –b Ä$x"²Ÿ$x"°#x!²Ÿ” Ō'$$x"£Ä#x!³Ō##x!£ÄŠ$$xīÄ##x’!£ķ¢Ä ĖŁ&³Ō %‚€eė’jŠ&ąn&²Ō %‚€iė’ŠP%‚€mė’jkli!$³Ō,&›O!×xh# ± k#Ō "ķj%" €0¢Č&›O!×xn!īiŠĻ#Ō%"Ȋ%‚€qė’–ŗ†‘K7‚€dė’dcp$$¢l#³ń $ķl’#¢ķk$³ń’$¢ķlįjm%ńdcĄKe‘M"ķjŠļ"€djmįi%ńdce‘M!ķiŠļ#€<h f‘Nf§³ń ‚€rf€’” 7fė’‚€s7€’” !f‘Nf§³ń ‚€tf€’” f˜7€’” ‚€u7€’” "f‘Nf§³ń ‚€vf€’” f˜7€’” 7¤€‡–€†R€‘K7‚€dė’›D É`‘N`§³ń ‚€w`€’” 7`ė’‚€x7€’” ›DÉ`‘N`§³ń ‚€y`€’” `˜7€’” ‚€z7€’” ›DÉ`‘N`§³ń ‚€{`€’” `˜7€’” 7¤€–€€m‘K7‚€|ė’7 Č7i–‹€`„€¬’`§Ņ‘DŠ`§¤€ƒ–€‚ē€7§³ń‚€}7€’7§ķ” Šč‚€~7€’” ­īą`‘N­³ń ‚€`€’” ‚€€`€’” `˜7€’7§ķ” –€€ņŠ‘K7‚€dė’„ ‚€ėh„€‹óĢĻńh„€‹„€‹óćōl„€‹ó’ĢĻń„€‹ó¾j„€‹ó"ĢĶŌ"7‘Nl$åՔk„€‹óĢĻń5„€‹ó3p ĀĢĻń„€‹ĢōŠ„€‹ó#£p ĀĢĻń#īkŠčŠ„€‹ó#p ĻŌ#ķkŠķ#£i!3¢³ń„€‹„€‹ó3p Āō!3¢iŠŻ!³ń„€‹„€‹ó!įp ĀōŠ„€‹„€‹ó!p Ćō„€‹„€‹ó‘Eō„€‹óp ĻŌ„€‹„€‹ó ĢĆņ€Ą‘Eō#ķkŠŲe„€‹ó ĢƑEō„€‹ó ĢeóĀĮæi„ !€0¢Č„ ˜7€’” „€‹eóō„€‹óĢĻńÄ77§§€0Ņ 77§” Šķ#¢²Ÿ#³Ÿ7§#£¢²Ÿ” ŌOŠQ#³ń#ķk‚€‚7€’” Šź#7§²ń 7¤ „ 7˜€’” „ ‚€ƒ€’” „ 뒊Ł#7§³ń ‚€„7€’#ķ” 7§Ņ 7‚€…ė’Š Ō ‚€†7€’” 7¤€–€Ž1 ƒc„€„¬’‘K7cė’c§ji!"²Ō7!§h €a³ €z²”Ō7! € £Č!ķiŠą7¤€†–€…p ††óć́É'ĢĆĄō††ó̆óĢƑEĀĮō`†óĢĆō–ó bóĢĪŌVa`p!ą ą¢h Ņ5š‚€‡w šb” šw bbóćōbóĢĶńŻbóĢĪń bbó ĢĆōŠšŠb 'Ģōbbó'ĢĆōŠbóĢĻŌ bbó ĢĆōŠš†bóĢĀ‘Eō– €`„€¬’‚€’‘J–€‚0 Ó€ ‘DŠ‚€”” ‚€›” ‘IŒi–“ d„ ó” ō`„ ó” ō`óĢĻńᤠФ dóĢĻńᤠФ )(Œ¤ `óćņ€ ĀdóćĪŌ „)Ģņ€ĀōŠ„dó`óĆō–ß „€„„¬’c„¬’„€„§ic§h! ¢j"€’²ń‘Dj‘K7„€„ė’7"Č"²ńc7!ķ p7¤–ż l`óĢĶń`óĢĻńįlŠl–( 2i!~Ō!ę‚!ē!ę vh Ó€2p¢„–§ 2k#ē$Ä%#ę Ól‘P#ē Ä#ē %Ä#ēÄ#|Ś#|Ś Ō&#ę‚#ē#ę vhpj"° ± Ō#ē Ċ(#Ō$#zŅ#ę #}²ń#ē#ę Ä#灁p#ē ĖÖ 2h ē ę!¢Ä ę³Ō ę ꁍ¢ ꁏ‘Q–‹ 2h |ŚŌI zŠ@š!w ēšwĊ1š!w ēšwĊ! ę‚x§Ä ę‚w ē ę‚wĊր¢Š] ę Ō ēÄ!€ Ċ2! ē ę§Ä ēÄ!x Ņ ēÄ!€ Ä‘RŠ!xŅ‘R!‘SŠ‘R!xÓ¹ ē ę§° ę å”Ō‘RŠź–„ 2i!ęń`‘SŠö!ē!ę Ė® ‘T–ø 2ęh–ś 2h |ŚŌ" zŠš!vŠ ę‚x!Č ę‚wŠր؊ ē ę!Č ēÄ‘R– 2zŅšwŠ ‘W– „0„–r k„"Ņ‘ŠC"Ņ „1„Š3˜h4i!˜± ˜°”Ō!y"Ņ!hŠ!ziŠé ˜Ņ „0„"„kŠ"„ x„–Ą 2i"‚€dė’!zŅ#š"€’w šw ‚€Æ"€’"§ķ” !ēĊ!ęń`‘S""§ķČ""§ Ȋé–S„išē"Éh2m%|Ś%|Ś ń„‹j%z±ÕQ%ę°ÕG%ē %ę Ä%ę Ō€"„%ę²Ÿ%z°%z° ”Õį%ęŅ%ęnk#&²Ō € ‘W#ķkŠņ%ę%ę‘/%ē€˜‚€dė’kl$å՚#%ę³Ō0šbw "€ °šw”ŌlŠ " Óš!v%ē$Ä$" ° ŌҊb‘S‘Vl$ńV" Ņ9#Ņš!v%ę%ę‘/Š"š vš€ vš v%ē€˜#” #īkŠ#ķk‚€°%ē€˜€’#” %ē€˜#"ȋa’‚€±%ē€˜€’#ķ” Š%ē€˜Y%ēÀ²%ē€˜€’%ē€˜§ķ” %ē€˜%ē€˜§ Č%ē%ē€˜§Ä%ē%ę%ę¢£ÄŠ%ę %ę³Ō %ē Ā"„–oš`w ‘K7‚€³ė’7 Č7j–}‚€“‘J–Ī„2i"!{!ę £²ń„Š6"²ń1!ę£h" ³ń"h!ē!ę$# p!ē !ę ¢Ä ‘R# ¢k" £jŠŹ–E‡¤€Š2¤€‡‡€‰‚€dė’‡€‡z±Õ3‡€‡ęh‡€‡|Śń& ²‡€‡ę å”Ō‘U‡€‡ē怇ēđ‡€‡ęhŠŚ Ņ%‡€‡|ŚŌš‚€øw šw¤€Šp‹Ó Ņ ‡€‡ēċŠī€ ‡€‡ē€˜pķk‡€‡ē€˜#§€"Ņ#ķk€"mŠ€,m# #£%‡€‡ē€˜#p¢i!#²ńn%€"Ņ+!īj‡€‡ē€˜!§€"Ó€$„Š! !£€,‡€‡ē€˜!p¢iŠ!ī!ဠ‡€‡ē€˜!īp¢j"#£ķl$‡€ˆ²Ō‡€‰$ȇ€‡ē€˜#‡€‰$pŠ„¤€Š‡€‡ē€˜!”  !£h‡€‡ē Ċ$f‘Zf§lf$‘Z$‡€ˆ²Ō f‡€‰$ķpŠ„–€‰Ń¤‡Ģō2¤‡zÓb„€ƒ€ž‘i!¤!ń€!p„€ƒ‚€dčŌ,‡|ŚŌ!š‚€Įw šw‡ēĤ€!pŠ„€ƒ‡`‘L Ō‘D¤Šb‘Zb‡p–„¤€†2zÓ(`‘!Ō`ó恒ĢĪŌ ‡€…`óæÄŠ‘D¤€†Š¤€†Šd‘Zd‡€…p–€…# ‘!i–y‚¤€…2i!zÓ8!棇€ƒ³ń!棤€ƒ‡€„!ē€˜˜b‡€ƒ” bė’!ē€˜‚€dė’!ēĊ ‡€„‡€ƒ‘¤€…–€„ģi2h zÓ] ę²ń ē€˜§€ Ņ ē€˜”  ē ęīĊć ę²Ÿ |Ś”Ōš‚€Éw šwi€$p ēđU ēÄ ēĊ ę ķ‘7–C„2j#"{"ę £²ń„Š=i#²ń6"ę£h# ³ń#h$!"ē"ę p"ē "ę ¢Ä ‘R! ¢i# £k"ēĊŖ¬„2h |Ś |Ś  |Ś ń„ŠE zÓ. ę²ń‘D ę²ń‘U ēÄ ē‚€dė’ ē€—Ä ēĊ ę ę³Ō ē Ā!„–Ó2h zÓ‘X ēÄ ę ę³ń ē ęķĊ–2zÓ52i#²ń,#ī!ęķk#!ę³ń‘\#!ę£jh "²Ō € ‘W ķhŠņ!ē#Ċ–`Šb‡€ŒÅ€ˆ¤€‡€‹"²Ō3„ ‡€‹§i€ h‡€‹ķ"²Ō„ ‡€‹ķ§h!€#° €#°!€+°!€-° ” Ō¤€–€Œž‹c‡€Å€ˆ¤€Ž€ j€ i€ h‡€Œ#²Ō„ ‡€Œ§j‡€Œķ#²Ō„ ‡€Œķ§i‡€Œ¢#²Ō „ ‡€Œ¢§h"€<Ņ c‡€Œķ^¤€ŽŠ?"!°"ƒ€ŃŚ”Ō'"€*° €$°”Ōc‡€Œ¢^¤€ŽŠ c‡€Œ¢^¤€ŽŠ c‡€Œ^¤€Ž–€Lˆ`‡€‹Å€ˆ¦‡€‰‡€ŠÄ‡€‰x ²„ ‡€‰x§ƒ€ŌڔԄ ‡€‰x§€#Ņ­ķ¦‡€‰‡€‰xķÄŠĶ–€‹š"#Ä$i!ēÄ"x!x²Ō5!ē"x§h""xķÄ €+Ņ!ēĊ €-Ņ!ēĊ""xīÄ$"x"ļ`!ē­ĖÉ$i$#"ļa"xh !x²Ō!ē"x§€.Ņ$ ķ"ļ`!ē"x ķ£Ä–&k$%Ä$x#x²Õ3%i#ēÄ#ēÄ#ēÄ#ēÄ#ēÄ#ē%§h €*Ņ'#ēÄ#ēÄ!¢i#ē!§€$Ņ#ēÄ!ķi&!$b‹Ž €$Ņ/#ēÄ#ēÄ&!¢$b$x#x²Ō#ē$x§€-Ņ $$xķÄ#ēċŖ €<Ņ2#ēÄ&!ķ$b$x#x²ń‘DŠ#ē$x§€>Ó‘DŠ $$xķÄ#ēĊs&!$a$xi$x#x²Ōd#ē$x§€.Ņ&!ķ$`#ēÄ#ē$x!ķ£Ä$xi€^h €^Ņ!#x²Ō#ē!§hŠ€ h!ķiŠå!īi!$x£Ņ#ēĊ !$x£Ņ#ēÄ#~Ó$!Ä#ē$x%£Ä–>$#"‘_!"xÄh!x$x² å”Ō$!x‘]ń!!xķĊhŠć–‚‡€„怄‡€„xķ怅‡€„x‘]i!‡€„x‡€…x³ Ōß!ń ‡€„‡€…xķ怃‡€…ē˜b‡€„xī” bė’–€…KŠ„€‹‡ė’‡§¤€ƒb‚€dė’‡ŒxŅ „€ƒ‡Œb‘d‡Œx‡€ƒ²ń ‘\„€ƒ‡Œb‘d„€ƒ‡Œxa`‘c!‡Œx£‡‹§²ń‚€×‡‹€’‡‹§ķ” ŠŻ!‡Œx£‡‹§³ń‡‹‡‹§” Šäb˜‡‹€’” ‡˜„ ! !£” „ ˜‡‹€’‡‹§ķ” ‡Œ ˁ| -‚€dė’e‚€Ųė„óĢϟ¤ „„óćō.¤ +~Ó+} ŚŌ+ē+īÄl„óĢĻń8„ó3p ĀĢĻń „ĢōnŠ„ó$p ĀĢĻń$ķlŠė£$£nŠ„ó$p ĻŌ$ķlŠī$£n&³ń„„ó&įp ĀōŠ„„ó&p Ćō„„ó‘Eō„óp ĻŌ„„ó ĢĆņ€Ą‘Eō&ķnŠŪ„óĢĶŌ¤ Š&+£¢¤ +}Ņ*Ō -‚€Łė’Š-‚€Śė’.ī¤Š+}Ņ*Ō -‚€Ūė’Š-‚€Üė’.ī¤+~±Õ‚(ąo'€d³Ō¤ Š ' ³Ō¤ Ф +~£¤ l$,²Ō*)+~£²ńe€*Ȋ e' €0¢Č' oe˜-€’” $ķlŠŃ(³ń e‚€ŻėŠe‚€Žėe˜-€’” ‚€ß-€’” .+~£¤+~Ó+£n+{&¢³ń"„„ó+{&¢įp Ćō„„óņ€Ą‘Eō„óĢĻ+{³ Õ…+ē.§ƒ€ąŚŌ%+ē.§€,Ņ †˜-€’” Š †˜-€’” .ī¤ŠĶ.ī¤+{&¢²ń‚€ć-€’” Š.`„ó ĢƑEō„ó Ģ`óĀĮæle$€0¢Če˜-€’” „`óō+ē+{īċm’+| ŚŌ †˜-€’” *Ō&+}Ņ‚€ä-€’” Š+}Ó ‚€å-€’” Š+}Ņ ‚€ę-€’” -§+z²ń%-‚€dė’+z¤ l$,²Ō‚€ē-€’” $ķlŠźŠ-e€ Č+|ŚŌe€*Č-§ķ+z¤ l$,²Ōe˜-€’” $ķlŠķ– „‹„‚¬’„€‹„‹ė’„‹§¤€ƒb‚€dė’‡‚ ‚€dė’‡‚ xŅ „€ƒ‡‚ b‘d‡‚ x‡€ƒ²ń ‘\„€ƒ‡‚ b‘d„€ƒ‡‚ xa`‘c„€ƒ„‚ ó!‡‚ gb˜‡‚ €’” „‹˜„ ! !£” „ ˜‡‚ €’‡‚ §ķ” ‡‚ Ė‚³2k#|ŚŌ1#zŅ š%˜w Š %§lj"$²Ō#ę‚x%"§Č#ę‚w"ķjŠęŠY#ēÄ#ę%§¢³ń%#ē#ę%§p%§‘RŠ2#ę£i%#ē#ę!p!‘R%§!£h%!ķ#ē#ę p#ēÄ ‘R–2¤‡z±Õ$‡€’Ņ‚€č‡€’‡§ķ” ¤‡§k‡ę²ń2‡ę퇁ę£i‡ę!²ń‡ē!Ä#‡ę²ń ‡ęk‡#ȇę#¢‡ę²ń‘\‡ę²ń‡ę¤‡²ńA‡#£h ³ń ᇁķ‡Œ ¢h ‡Ņh# ¢€’²Ō‡#ķ € p# ¢k‡#ČhŠh‡i ²ń‡zŅ š€ vŠd € pd Čdi# ¢j‡ē‡ę"¢Ä‡ē‡ę"£Ä‡ę³ń‡ēĊ‡„€…‡§ķp„€…‡§ķ‘[–7a„€ƒ¬’2h zÓ ē§Ó ē 瀗a‘e¤€‚a‡€‚‘h–€„ŗ„€‚‚€dė’2¤‡zÓ[‡ē§Ó‡ē˜„ó‡瀗„€‚‘f„€‚‘hŠ2„ó‘h„óĢĻŌ ‚€é €’” ‚€ź €’ §ķ”  ‡‘hŠ „apa‘[–x2¤‡z±Õ˜‡ē§°Õ‡`‘N‡³Ō```§p``§ķČ`€ ȇz°‡ę°”‡°”‡ę¢‡ę²”Ō%``§ķ€ p`Ț`˜w ‡ē‡ę¢ÄŠ``§ķČ``§€ Č`‡‘hŠ ‡̇‘(Š„„€p„€‘[–…aó ‘(–7 ƒ2¤€ƒ‡€ƒzÓG‡€ƒę‡€ƒęŅ ‘X‡€ƒēĊ'‡€ƒę‡€ƒę²Ō€ ‘W‡€ƒē‡€ƒęķÄŠį‡€ƒę‘/‡€ƒēĊY‡€ƒ{‡€ƒę £i!²ńA‡€ƒŌ!‘RŠ6!€’²ń€’hŠ!hb p!²ńb ‘[‡€ƒ{‡€ƒę £i!€’²ń€’hŠ!hŠŻ‡€ƒę ķ‘7–€ƒR 2h zŅ ēÄs ę‘/–q 2h ē!ąÄ!³ń ēĊ ēĖ€ ‚€ė‘&–Ž `p$ ¤ –Õ 2h"ī ęķj!³ń! ęi! ę²ń zŅ‘X! ę£iŠź zŅ!ī"ī”  ē!Ä ē"Ėö a„€‚¬’2zÓ2h ēaė’ ē€—Ä–€ƒ!‚€ķ‘J–!‚€ó‘J–#ę‚ēÉŅ‘QŠ‘Q#ē Ä#ē Ä#ē Ä#ēÄ#ēÄ#ēÄ#ē€˜‚€dė’‹Å#ē Ä#ē Ä$³Ÿ$#ę³ Ō,#ē Ä$#ę²ń#ē Ä$#ęÓ„$³ńl$#ę²ń#ęl$’#{³ń$#{Œj"i"hŠX$#{Œ$#{Œ¢$#{€@Œ$#{€@Œ€@¢¢i$#{€ Œ$€ Œ#{€ Œ¢h! ‘Q#ē Ä#ē $ĖÜ)€`„€¬’¤€ƒ–€‚'*j!Ņ šwŌjŠ1!³ń*j4h ˜Ó" y!Ņj xę Ō xę ŌjŠj˜hŠ zhŠŚ–W*„`"Č`"Č#Ó !x`¹ń „!x`Å–a*…h–Œ*d„ ó ĢƑE ĢĀō`„ ó‘Eō`ódóĮæ¤ – Į*¦ `dó„ ó” Āō`óņ€ Īń„ ņ€$ō¦ ‘DŠ„ `óō– , „ óĢĶŌ„Ģō‹E„óĢĶŌ„ óĢĻŌ„ĢōŠ ‘D„ņ€*ō‹"„óĢĶŌ„Ģō‹„óĢϟդdĢō„ ó’ĢĪń8„óįĢĶŌ„ ónŌdįĢōŠdĢōŠ‘D„ ónŌdņ€0äōŠdņ€6ōŠ\„ ó„ ó¾ĢĶń‘DŠL„ ó¾¤ (²ń'd„óä„ óoō*Ō ddó” ō(ŌddóäōŠ(ᤠ¤ )+²Ōddó„óĆō)ķ¤ ŠķŠd„ó„ óoō*Ō ddó” ōdó恒ĢĪŌ9„ó恒ĢĪŌ.„ ó’ĢĪ„ óĢΟ”Ō„ó¾Ģ„óĶŌ„ ó¾Ģ„ óĶŌddóæĢō„dóō–1,„ dó`ó‘>ō–O, „ -Ģōd,Ģō„„ ódó‘>ō–Z,d`óō–d,d`óō–n,`óæl–x,a Ģō–į,„ eóōeó¢p Īń€EpaĢōeóć@ĢĻŌaeó@ĢƑEōeeóaó@ĢĀĮōeóĢĻń eóĢĮ¾hŠeó¾h„ Ģaó@ĢĀĄō– -„„=…²Ō† =×€€” =ķ„Šź„†Ģō„‘m‘+‚^‘F”‘5– ''''(#’’’’ ''''(# ''''(#’’’’’’’’ū’¹@’’ ''''(# ''''(# ''''(# ''''(#!Compiler/Library Version Mismatch> NOT YET IMPLEMENTED’’’ -327688-  00:0:00/0/0 0.-E 00.0-ENTER RANDOM NUMBER: RUN PROGRAM,BLIBB BLIB,FILEOPSS½’Ļ’į’ä’ķ’ķ’ 0  0ISTART2NOT ENOUGH INPUTTMISSING NUMBERRTOO MUCH INPUTT  > - -+EP0<-+*,  ? FILE CREATE FILE DELETELP011PRINTER::PRINTER#11CONSOLE#22KEYBOARDD#66PRINTER#77REMIN#88REMOUTTCONSOLEPRINTERKEYBOARDDREMINREMOUTTKEYBOARDDCONSOLEPRINTERREMINREMOUTTCONSOLE::PRINTER::   SETFILELOCC$.,H3ˆ± Œ\( Ą É ” Š Ļ © ‚ ē 3 Ų x Į»^YUHķÖ–H3Ē_: W¬>Q94/*c.rńčPI-Ó½…~mIB;+Åæ`¤ ?   „ėéŗ¬āģ ŠL62üŗ›|v9,ąoē$·˜ˆy™mso*** HEAPOPS GOTOXY EXTRAHEA STRINGOP REALOPS PASCALIOEXTRAIO FILEOPS SCREENOPCOMMANDI KERNEL €€€€€€€€€€€€€€€€ódcÖ vėvė0MżO@~ėĄ7—Ŗ2  Ā ×ž Ā ž Ģė’ėG’RĀ ×ž n1   CONST "VERSION = '[IV.13]'; {if changed, recompile initialize & getcmd} "MMAXINT = 32767; { MAXIMUM INTEGER VALUE } "MAXDIR = 77; { MAX NUMBER OF ENTRIES IN A DIRECTORY } "VIDLENG = 7; { NUMBER OF CHARS IN A VOLUME ID } "TIDLENG = 15; { NUMBER OF CHARS IN TITLE ID } "MAXSEG = 15; { MAX CODE SEGMENT NUMBER } "FBLKSIZE = 512; { STANDARD DISK BLOCK LENGTH } "DIRBLK = 2; { DISK ADDR OF DIRECTORY } "AGELIMIT = 300; { MAX AGE FOR GDIRP...IN TICKS } "EOL = 13;  { END-OF-LINE...ASCII CR } "DLE = 16; { BLANK COMPRESSION CODE } "NAME_LENG = 23; { Number of characters in a full file name} "SWAPPING = 0; { Swapping segment status} "P_LOCKED = -1; { Position locked segment status} "STACK_SLOP = 40; { Number of words of temp for procedure stack} "MEM_LINK_SIZE = 4; { Number of words in heap record}  "sys_error = 0; { Unknown system error} "proc_error= 3; { Unknown procedure error} "stk_error = 4; { Stack overflow error} "sys_io_error = 9; { System I/O error} "halt_error = 14; { Programmed halt } "heap_error= 15; { Heap operation error} "seg_fault = 128; { Segment fault} "stk_fault = 129; { Stack fault} "heap_fault= 130; { Heap operation fault} "pool_fault= 131; { Used to consolidate pool after purge}   TYPE  "IORSLTWD = (INOERROR,IBADBLOCK,IBADUNIT,IBADMODE,ITIMEOUT, .ILOSTUNIT,ILOSTFILE,IBADTITLE,INOROOM,INOUNIT, .INOFILE,IDUPFILE,INOTCLOSED,INOTOPEN,IBADFORMAT, .IBUFOVFL, i_write_prot, i_ill_block, i_ill_buf, .i_ill_size);  5{ COMMAND STATES...SEE GETCMD }  "CMDSTATE = (sys_boot, sys_init, sys_halt,UPROGNOU,UPROGUOK,SYSPROG, .COMPONLY,COMPANDGO,LINKANDGO,sys_debug); " E{ CODE FILES USED IN GETCMD } E "SYSFILE = (ASSMBLER,COMPILER,EDITOR,FILER,LINKER);  E{ ARCHIVAL INFO...THE DATE }  "DATEREC = PACKED RECORD .MONTH: 0..12; { 0 IMPLIES DATE NOT MEANINGFUL } .DAY: 0..31; { DAY OF MONTH } .YEAR: 0..100 { 100 IS TEMP DISK FLAG } ,END { DATEREC } ;  E{ VOLUME TABLES } "UNITNUM = 0..127; "VID = STRING[VIDLENG];  E{ DISK DIRECTORIES } "DIRRANGE = 0..MAXDIR; "TID = STRING[TIDLENG];  "full_id = STRING[name_leng]; "file_table = ARRAY [sys_file] OF full_id; " "FILEKIND = (UNTYPEDFILE,XDSKFILE,CODEFILE,TEXTFILE,INFOFILE, .DATAFILE,GRAFFILE,FOTOFILE,SECUREDIR,SUBSVOL);  "DIRENTRY = PACKED RECORD /DFIRSTBLK: INTEGER; { FIRST PHYSICAL DISK ADDR } /DLASTBLK: INTEGER; { POINTS AT BLOCK FOLLOWING } /CASE DFKIND: FILEKIND OF 1SECUREDIR, 1UNTYPEDFILE: { ONLY IN DIR[0]...VOLUME INFO } 4(filler_1 : 0..2048; {13 bits} 5DVID: VID; { NAME OF DISK VOLUME } 5DEOVBLK: INTEGER; { LASTBLK OF VOLUME } 5DNUMFILES: DIRRANGE; { NUM FILES IN DIR } 5DLOADTIME: INTEGER; { TIME OF LAST ACCESS } 5DLASTBOOT: DATEREC); { MOST RECENT DATE SETTING } 1XDSKFILE,CODEFILE,TEXTFILE,INFOFILE, 1DATAFILE,GRAFFILE,FOTOFILE,SUBSVOL: 4(filler_2 : 0..1024; {12 bits} 5status : BOOLEAN; {Filer kludge temporary} 5DTID: TID; { TITLE OF FILE } 5DLASTBYTE: 1..FBLKSIZE; { NUM BYTES IN LAST BLOCK } 5DACCESS: DATEREC) { LAST MODIFICATION DATE } -END { DIRENTRY } ;  "DIRP = ^DIRECTORY;  "DIRECTORY = ARRAY [DIRRANGE] OF DIRENTRY;  E{ FILE INFORMATION }  "CLOSETYPE = (CNORMAL,CLOCK,CPURGE,CCRUNCH); "WINDOWP = ^WINDOW; "WINDOW = PACKED ARRAY [0..0] OF CHAR; "FIBP = ^FIB;  "FIB = RECORD *FWINDOW: WINDOWP; { USER WINDOW...F^, USED BY GET-PUT } *FEOF,FEOLN: BOOLEAN; *FSTATE: (FJANDW,FNEEDCHAR,FGOTCHAR); *FRECSIZE: INTEGER; { IN BYTES...0=>BLOCKFILE, 1=>CHARFILE } *f_lock : SEMAPHORE; *CASE FISOPEN: BOOLEAN OF ,TRUE: (FISBLKD: BOOLEAN; { FILE IS ON BLOCK DEVICE } 3FUNIT: UNITNUM; { PHYSICAL UNIT # } 3FVID: VID; { VOLUME NAME } 3FREPTCNT, { # TIMES F^ VALID W/O GET } 3FNXTBLK, { NEXT REL BLOCK TO IO } 3FMAXBLK: INTEGER; { MAX REL BLOCK ACCESSED } 3FMODIFIED:BOOLEAN;{ PLEASE SET NEW DATE IN CLOSE } 3FHEADER: DIRENTRY;{ COPY OF DISK DIR ENTRY } 3CASE FSOFTBUF: BOOLEAN OF { DISK GET-PUT STUFF } 5TRUE: (FNXTBYTE,FMAXBYTE: INTEGER; must be read in without breakpoints} "{ added for the breakout of initialize } "menupresent , { true if System.Menu present } "realsref , { true if reals are being used by user } "pooloverflow : Boolean ; " "heapptr : ^Integer ; { used to mark userprog assoc. structures } "{ added for the breakout of getcmd } "use_prog_slot : integer ; { sys_evec index of userprog } " " "procedure exec_error(bad_e_rec_p:e_rec_p; n_words,err:integer); "procedure loadseg(segerec:erecp); "procedure rlocseg(segerec:erecp); "function ptr_add (p : mem_ptr; n_words : integer) : int_p; "function ptr_sub (p_0, p_1 : mem_ptr) : integer; "function ptr_less (p_1, p_2 : mem_ptr) : boolean; "function ptr_gtr (p_1, p_2 : mem_ptr) : boolean; "function ptr_geq (p_1, p_2 : mem_ptr) : boolean; "procedure print(s:string); "procedure printint(i:integer); "procedure writestr(s:string); "procedure checkunit(lvid:vid; lunit:unitnum); "procedure moveseg(segsib:sibp; srcpool:poolptr; srcoffset:memptr); " implementation KERNEL –  :¦DISKCHANINITSTUF €€€€€€€€€€€€€€€€™DISKCHANE#@Copyright (c) 1980, 1981, 1982, 1983 SofTech Microsystems, Inc. Ü`Ā “ž n>„INITSTUF’E#†ih⼃€ŪĒqj"ƒ€ŚŌ ķh! Œ"¢€0£iŠ,"Ņ( ²ń#šspš€ spšsp īh! i"€ ° ²Ÿ”Ō”!kštp–ę=īi„5!²Ō#5×įĈ5×įÄ5ķ„Šåh=īi„5!²Ō,ˆ ×xįÓ ķ=hŠī#5× Ĉ ×Ä "¢=h5ķ„ŠĻ–¬„€„„€­¬P†‚1‡€Æ¤€ƒštpš„€„˜t pštpš‚€ t pļh =ī¼ŚŌ燀ƒ š‚€t p‡€ƒē€€ļ怃ꀀ=ī¼ŚŌܚ‚€/t p‡€ƒē€ļ怃ꀁ8ī¼ŚŌܖ€Æ!štpštpš‚€Ct pš‚€Rt pštpštpš‚€Ut pštpštpštpš¤‡ę ī„ š‚€_t pš9tpš‚€ut p„ ; 9¼€0ŪŚŌ͚‚€wt pš9tpš‚€t p„ : 9¼€0ŪŚŌĶ;:Ņ'š‚€‘t pƒ€±Ēq€N°„‚štpŠ„‚;`p$`×x„ `×x„`×x„ :`p$`×x<±`×x=± `×x8± Ōštpš‚€·t pštpqš‚€Öt p„1=ī¼ŚŌꆀ‘‚€ś†‚……€³…‚ ;:± „‚7Œ=Œī„–’’" What is the interleaving ratio? % What is the sector skew per track? ' What is the first interleaved track? FLOPPY INTERLEAVING CHANGER [B6]] Type "!" to exitt* What is the source unit number? (4,5,9...) / What is the destination unit number? (4,5,9..) ? Are you writing onto the same diskette you are reading from? @< Both source and dest units must have same characteristics..F What is the interleaving ratio of the drives used for the transfer? SOURCE DISK TYPE:DESTINATION DISK TYPE::Eu Ć9DISKCHANOE#Fš‚€t pƒ€ Ē‘„‚—štpŌčštp–’p"€’h aŠŚń#š`t p €!Ņ‘ ƒ€ŚŌ €a£€A¢hŠÕ €!€~¼ŚŌ š sp ¤–ļ„€„‡ŀ‚=ƒh ‡€ƒ²Ō7„€„ ×x‡‡Œ¢=i‡Ņb!׆ ×xĊ b ׆!×xÄ ķhŠĀ†bŀ€–4īih !²Õœ=īj„2"²ÕŠ:…ׁ†‚2×x =Œ¢Œ= 6¢…€¢Œ†‚2×x¢ppÓQštpš‚€t pš 6¢…€¢tpš‚€#t pš†‚2×xtpštp;:±…‚ Ō‘2ķ„‹p’ ķh‹^’–“štpštp…‚ń8š‚€)t pš;tpš‚€8t pš:tpš€,sp‘7Œ=Œī„……€²ń 8…£„ Š8…€£„ …‚Ō„Š8„…‚Ō64¢8²ń86£„Š 64£³ń6„4²ŸÕ9…‚Ōš‚€Ct pš;tp‘…‚ń64£„4īh„3 ²Õ݆†”Å€€=īi„2!²Õ‚;††‚2×x×x=6…¢3¢Œ†‚2×x¢ppÓQštpš‚€Rt pš6…¢3¢tpš‚€^t pš†‚2×xtpštp;:±…‚ Ō‘2ķ„‹x’†€‘63¢‘†63¢‘3=Œ„=īi„5!²Ō†5×x…0ׁJDISKSIZEätDph Ó"š‚€s pš spšspp–Ęšspšspšspš‚€ s pšspšspš„„ü…„üę …„üēÉ¢ī„š‚€s pš1spš‚€-s pš†spšspńšsp2 1¼€0ŪŚŌø„2†ģp‘†„ū†Ɓ€MĖ× y@Śń†„ūr„†€MĖ× y@ŚÕ”š‚€/s pš†€MĖ× spš‚€9s pšspš‚€=s pš†spšspńšsp2†0īp‘0 ²ńʆ€MĖ× ē0Ä3Ō†„ūr2†ģp‘Šš‚€Ws pšsp– I/O Error #DISK SIZE CHANGER [A4]]. Change directory size on what unit? (4,5,9...)  Current size is  blocks2 What is new directory size in 512 byte blocks ?  No directory on volumee $PASCALIOFILEOPS  O^£2¦{ (*$R-,I-*)  PROGRAM REMOTETALK;   { This item is the property of SofTech Microsystems, inc. }  { and it may be used, copied, or distributed only as permitted }  { in a written license from that company. }  !{ This is an unpublished work copyrigh1977, 78, 79 } !{ by the Regents of The University of California a 1980, 81, 82 } !{ by SofTech Microsystems, Inc. } !  { *Source and object code for the REMTALK utility are provided "in "as is" condition. No warranty is made, particularly with respect "to fitness for a particular purpose. *Copies of source and object code for the REMTALK utility may "be used for any lawful purpose providing each copy retains all markings "and legends that appear on or in the source and object code items. Failure "to include such markings and legends is a violation of U.S. Copyright Laws. !} ! !{$C Copr (c) 1977,78,79 Regents UC, 1980,81,82 SofTech Microsystems} ! !{Modified to Pack and Unpack data onto printable characters "0" "through "?" and to transmit minimum length messages of 2 bytes, "detect using incompatible versions of this program, and initialize "buffers sent over the remote port to spaces. "July 2, 1983}    CONST version='IV.0 a2'; &res_segs='fileops,pascalio,extraio,heapops'; {resident segments} &slop=2000; {extra slop for buffer allocation} &  REMIN=7; &REMOUT=8; &FINALBLOCK=50; &NOTLASTBLOCK=51; &SENDAGAIN=52; &SENDNEXT=53; &ABORT=54; &UNSLAVE=55; &CLOSEFILE=56; &RECEIVEFILE=57; &SENDFILE=58; &OPENFILE=59; &FILEOPENED=60; &BUMFILE=61;  FILECLOSED=62;   TYPE BYTE=0..255; %BLOCK=PACKED ARRAY[0..511] OF BYTE; %TWOBYTES=PACKED ARRAY[0..1] OF BYTE; %SETOFCHAR=SET OF CHAR; %BLOCKARRAY=ARRAY[0..0] OF BLOCK; %BLOCKPTR=^BLOCKARRAY;   VAR BUFF,FOON:BLOCKPTR; $PACKBLOCK:BLOCK; $FILENAME:STRING; $INCH:CHAR; $F:FILE; $COMMAND:PACKED ARRAY[0..81] OF BYTE; $FIRSTBLOCK,UNITNUM,LASTBLOCK,UNOCNTR,BUFFSIZE:INTEGER; $incompatible: boolean;  "PROCEDURE rpt_incompatibility; $BEGIN &WRITELN; &WRITELN('You are using incompatible versions of REMTALK'); $END; {rpt_incompatibility} $ "PROCEDURE send_cmmd; $BEGIN &command[1] := command[1] + 128; &UNITWRITE(remout,command,82,0,12); $END; {send_cmmd} $ "PROCEDURE get_cmmd; $BEGIN &UNITREAD(remin,command,82,0,12); &IF command[1] >= 128 THEN (command[1] := command[1] - 128 &ELSE (incompatible := true; $END; {get_cmmd} $ "PROCEDURE SIGNAL(COMMAND:INTEGER); "VAR WART:TWOBYTES; "BEGIN $WART[0]:=COMMAND; $wart[1] := ORD(' '); $UNITWRITE(REMOUT,WART[0],2,0,12); "END;  "FUNCTION WAIT:INTEGER; "VAR WART:TWOBYTES; "BEGIN $UNITREAD(REMIN,WART[0],2,0,12); $WAIT:=WART[0]; $IF wart[1] <> ord(' ') THEN &BEGIN (rpt_incompatibility; (exit(program); &END; "END; " "PROCEDURE UNO(CH:CHAR); "BEGIN $UNOCNTR:=UNOCNTR+1; $WRITE(CH); $IF UNOCNTR=40 THEN $BEGIN &WRITELN; &UNOCNTR:=0; $END; "END; " "FUNCTION GETCHAR(OKSET:SETOFCHAR):CHAR; "VAR CH:CHAR; "BEGIN $REPEAT &READ(KEYBOARD,CH); &IF CH IN ['a'..'z'] THEN (CH:=CHR(ORD(CH)-ORD('a')+ORD('A')); $UNTIL CH IN OKSET; $WRITELN(CH); $GETCHAR:=CH; "END; " "PROCEDURE RECEIVEIT; "VAR INBLOCK:PACKED ARRAY[0..1025] OF BYTE; &JUSTONE:TWOBYTES; &BADOUTPUT:BOOLEAN; &BYTENUM,CHECKSUM,BUFFPTR,BYTE0,BYTE1,ANSWER:INTEGER; " $FUNCTION PUTBLOCK(VAR ONEBLOCK:BLOCK):BOOLEAN; $BEGIN &PUTBLOCK:=TRUE; &BUFF^[BUFFPTR]:=ONEBLOCK; &BUFFPTR:=BUFFPTR+1; &IF BUFFPTR=BUFFSIZE THEN &BEGIN (PUTBLOCK:=BLOCKWRITE(F,BUFF^,BUFFSIZE)=BUFFSIZE; (BUFFPTR:=0; &END; $END; $ "BEGIN $BUFFPTR:=0; $UNOCNTR:=0; $BADOUTPUT:=FALSE; $REPEAT &ANSWER:=WAIT; &IF ANSWER=NOTLASTBLOCK THEN &BEGIN (UNITREAD(REMIN,INBLOCK,1026,0,12); (CHECKSUM:=0; (IF inblock[0] < 48 THEN *BEGIN ,rpt_incompatibility; ,exit(program); *END; (FOR BYTENUM:=0 TO 511 DO (BEGIN *{Pack data from characters "0" through "?"} *byte0 := inblock[bytenum + bytenum]; *byte0 := byte0 - 48 {subtract out the "1" added during unpacking}; *byte1 := inblock[bytenum + bytenum + 1]; *byte1 := byte1 - 48 {subtract out the "1" added during unpacking}; *checksum := checksum + byte0 + byte1; *PACKBLOCK[BYTENUM]:=BYTE0*16+BYTE1; (END; (checksum := checksum + 48; (IF CHECKSUM=ORD(ODD(127) AND ODD(INBLOCK[1024]))*128+ +ORD(ODD(127) AND ODD(INBLOCK[1025])) THEN (BEGIN *IF PUTBLOCK(PACKBLOCK) THEN *BEGIN ,UNO('.'); ,SIGNAL(SENDNEXT); *END ELSE *BEGIN ,BADOUTPUT:=TRUE; ,SIGNAL(ABORT); *END; (END ELSE (BEGIN *UNO('?'); *SIGNAL(SENDAGAIN); (END; &END ELSE (IF ANSWER=ABORT THEN *BEGIN ,WRITELN; ,WRITE(' ERROR in input file'); *END; $UNTIL ANSWER IN [FINALBLOCK,ABORT]; $BADOUTPUT:=BADOUTPUT OR (BLOCKWRITE(F,BUFF^,BUFFPTR)<>BUFFPTR); $CLOSE(F,LOCK); " IF (IORESULT<>0) OR BADOUTPUT THEN $BEGIN &SIGNAL(ABORT); &WRITELN; &WRITE(' ERROR in output file'); $END ELSE &SIGNAL(FILECLOSED); "END; " "PROCEDURE SENDIT; "VAR ANS,BYTE0,BYTE1,BYTENUM,CHECKSUM,BLOCKSREAD,BUFFPTR:INTEGER; &BADINPUT:BOOLEAN; &UNPACKBLOCK:PACKED ARRAY[0..1023] OF BYTE; &JUSTTWO:TWOBYTES; " $FUNCTION GETBLOCK(VAR ONEBLOCK:BLOCK):BOOLEAN; $BEGIN &BUFFPTR:=BUFFPTR+1; &IF BUFFPTR>=BLOCKSREAD THEN &BEGIN (BLOCKSREAD:=BLOCKREAD(F,BUFF^,BUFFSIZE); (BADINPUT:=IORESULT<>0; (BUFFPTR:=0; &END; &GETBLOCK:=(BLOCKSREAD<>0) AND (NOT BADINPUT); &ONEBLOCK:=BUFF^[BUFFPTR]; $END; $ "BEGIN $BADINPUT:=FALSE; $UNOCNTR:=0; $BUFFPTR:=-1; $BLOCKSREAD:=0; $ANS:=SENDNEXT; $WHILE GETBLOCK(PACKBLOCK) AND (ANS<>ABORT) DO $BEGIN &CHECKSUM:=0; &SIGNAL(NOTLASTBLOCK); &FOR BYTENUM:=0 TO 511 DO &BEGIN ({unpack data onto characters "1" through "?".} (BYTE0:=PACKBLOCK[BYTENUM] DIV 16; (checksum := checksum + byte0; (byte0 := byte0 + 48; {add in the character "0"} (UNPACKBLOCK[BYTENUM+BYTENUM]:=BYTE0; (BYTE1:=ORD(ODD(PACKBLOCK[BYTENUM]) AND ODD(15)); (checksum := checksum + byte1; (byte1 := byte1 + 48; {addin the character "0"} (UNPACKBLOCK[BYTENUM+BYTENUM+1]:=BYTE1; &END; &UNITWRITE(REMOUT,UNPACKBLOCK,1024,0,12); &checksum := checksum + 48; &JUSTTWO[0]:=CHECKSUM DIV 128; &JUSTTWO[1]:=ORD(ODD(CHECKSUM) AND ODD(127)); &UNITWRITE(REMOUT,JUSTTWO,2,0,12); &ANS:=WAIT; &CASE ANS OF (SENDNEXT :UNO('.'); (SENDAGAIN:BEGIN 4BUFFPTR:=BUFFPTR-1; 4UNO('?'); 2END; &END; $END; $CLOSE(F); $IF BADINPUT THEN $BEGIN &WRITELN; &WRITE(' ERROR in input file'); &SIGNAL(ABORT); $END ELSE &SIGNAL(FINALBLOCK); " IF WAIT<>FILECLOSED THEN &BEGIN (WRITELN; (WRITE(' ERROR in output file'); &END; "END; " "PROCEDURE DOCOMMAND(SENDORRECEIVE:CHAR); "VAR CH:CHAR; &I,TRANSFERUNIT:INTEGER; &ANSWER:TWOBYTES; &S:STRING; "BEGIN $FILLCHAR(COMMAND,82,' '); $IF SENDORRECEIVE='S' THEN $BEGIN &COMMAND[0]:=SENDFILE; &REPEAT (WRITE(' Send what file? '); (READLN(S); (IF LENGTH(S)=0 THEN *EXIT(DOCOMMAND); (RESET(F,S); &UNTIL IORESULT=0; &REPEAT (WRITE(' Send to what remote file? '); (READLN(S); (IF LENGTH(S)=0 THEN (BEGIN *CLOSE(F); *EXIT(DOCOMMAND); (END; (FOR I:=0 TO LENGTH(S) DO *COMMAND[I+1]:=ORD(S[I]); (send_cmmd; &UNTIL WAIT=FILEOPENED; &SENDIT; $END ELSE $BEGIN &REPEAT (WRITE(' Receive what remote file? '); (READLN(S); (IF LENGTH(S)=0 THEN *EXIT(DOCOMMAND); (COMMAND[0]:=OPENFILE; (FOR I:=0 TO LENGTH(S) DO *COMMAND[I+1]:=ORD(S[I]); (send_cmmd; &UNTIL WAIT=FILEOPENED; &REPEAT (WRITE(' Write to what file? '); (READLN(S); (IF LENGTH(S)=0 THEN (BEGIN *FILLCHAR(command,82,' '); *COMMAND[0]:=CLOSEFILE; *send_cmmd; *EXIT(DOCOMMAND); (END; (REWRITE(F,S); &UNTIL IORESULT=0; &FILLCHAR(command,82,' '); &COMMAND[0]:=RECEIVEFILE; &send_cmmd; &RECEIVEIT; $END; "END; " "PROCEDURE DOSLAVECOMMANDS; "VAR I, &cmmd:INTEGER; &S:STRING; " "BEGIN $REPEAT &get_cmmd; &{check for incompatible versions here} &IF (incompatible) AND (command[0] <> unslave) THEN (BEGIN *rpt_incompatibility; *exit(program); (END; &IF not incompatible THEN (BEGIN *FOR I:=0 TO COMMAND[1] DO *S[I]:=CHR(COMMAND[I+1]); (END; &WRITELN; &CASE COMMAND[0] OF (CLOSEFILE :CLOSE(F); (SENDFILE :BEGIN 6REWRITE(F,S); 6IF IORESULT=0 THEN 6BEGIN 8WRITE('Opening new file: ',S); 8cmmd := FILEOPENED; 6END ELSE 6BEGIN 8WRITE('ERROR opening new file: ',S); 8cmmd := BUMFILE; 6END; 6signal(cmmd); 6WRITELN; 6IF cmmd = FILEOPENED THEN 8RECEIVEIT; 4END; (RECEIVEFILE:SENDIT; (OPENFILE :BEGIN 6RESET(F,S); 6IF IORESULT=0 THEN 6BEGIN 8WRITE('Opening old file: ',S); 8cmmd := FILEOPENED; 6END ELSE 6BEGIN 8WRITE('ERROR opening old file: ',S); 8cmmd := BUMFILE; 6END; 6signal(cmmd); 4END; &END; $UNTIL COMMAND[0]=UNSLAVE; "END; "  BEGIN "incompatible := false; "buffsize:= 1 + ((varavail(res_segs)-slop) div 256); "if varnew(buff,buffsize*256) = 0 $then &begin & writeln('program error allocating buffer'); (exit(program); &end; "WRITELN('REMTALK [',version,'] - press S(lave first'); "REPEAT $WRITE('M(aster S(lave Q(uit '); $CASE GETCHAR(['M','S','Q']) OF &'M':BEGIN ,REPEAT .FILLCHAR(command,82,' '); .WRITE(' S(end R(eceive Q(uit '); .INCH:=GETCHAR(['S','R','Q']); .CASE INCH OF 0'S', 0'R':DOCOMMAND(INCH); 0'Q':BEGIN 6COMMAND[0]:=UNSLAVE; 6send_cmmd; 4END; .END; .WRITELN; ,UNTIL INCH='Q'; *END; &'S':DOSLAVECOMMANDS; &'Q':EXIT(REMOTETALK); $END; $WRITELN; "UNTIL FALSE;  END. ¢ DIRINFO €€€€€€€€€€€€€€€€#D9H12FMUš<£$Ö t58ē20<Ę<#Ā ¶ž „ēLēś2QĀ ćž *4 "uses $(*$U WILD.CODE*) wild; " "Type $D_DateRec = Packed Record 2Month : 0..12; 2Day : 0..31; 2Year : 0..100; 0End; $  $D_NameType = (D_Vol, D_Code, D_Text, D_Data, D_SVol, D_Temp, D_Free); $ $D_Choice = Set of D_NameType; . $D_ListP = ^D_List; $D_List = Record /D_Unit : Integer; { Unit # of entry } /D_Volume : String[7]; { volume name of unit } /D_VPat : D_PatRecP; { volume pattern info } /D_NextEntry : D_ListP; { Next entry in list } /Case D_IsBlkd : Boolean Of 1True : (D_Start, { Starting block of entry } 9D_Length : Integer; { Length (in blocks) of entry } 9Case D_Kind : D_NameType Of ;D_Vol, { Everything but D_Free } ;D_Temp, ;D_Code, ;D_Text, ;D_Data, ;D_SVol : (D_Title : String[15];{ File name } ED_FPat : D_PatRecP; { name pattern info } ED_Date : D_DateRec; { File date } ECase D_NameType of { # of files on vol } GD_Vol : (D_NumFiles : Integer))); -End; + %D_Result = (D_Okay, { Mission accomplished } 1D_Not_Found, { Couldn't find name and/or type } 1D_Exists, { Name already exists; no name change made } 1D_Name_Error, { Illegal string passed } 1D_Off_Line, { Volume not on line } 1D_Other); { Miscellaneous error } %  "Function D_Dir_List(D_Name : String; D_Select : D_Choice; ;Var D_Ptr : D_ListP; D_PInfo : Boolean) : D_Result; "{ Creates pointer to list of names of specified NameTypes $(D_Select), matching specified D_Name (wildcard characters allowed). In- $cludes information about pattern matching that occurred if requested $(by D_PInfo) } $ "  "Function D_Scan_Title(D_Name : String; Var D_VolID, D_TitleID : String; 4Var D_Type : D_NameType; Var D_Segs : Integer) : D_Result; "{ Parses D_Name } & "Function D_Change_Name(D_OldName, D_NewName : String; D_RemOld : Boolean) : D_Result; "{ Changes file name in D_OldName to name in D_NewName, removing already $existing files of name in D_NewName if D_RemOld is set } " "Function D_Change_Date(D_Name : String; D_NewDate : D_DateRec; ND_Select : D_Choice) : D_Result; "{ Changes date of directory or file name in D_Name to date specified by $D_NewDate. D_Name may contain wildcards } " "Function D_Rem_Files (D_Name : String; D_Select : D_Choice) : D_Result; "{ Removes file of specified name (wildcards allowed) } " "Procedure D_Lock; "Procedure D_Release; "{ Provide means to limit use of DirInfo routines to one task at a time " in multi-tasking environments } $ "Function D_Krunch (D_Unit, 5D_Block : Integer) : D_Result; "{ Collects all unused space on a volume around D_Block. This unit must $not be in use when this operation is performed. } $ "Function D_Mount (D_File_Name : String) : D_Result; "Function D_DisMount (D_Vol_Name : String) : D_Result; "{ Provides a means of mounting and dismounting subsidiary volumes. $Wild cards may be used. } " $ "  {*************************************************************************} "  Implementation ” DIRINFO 9 D9H7›€Šß›€ŠŽ`įÄ2  „3ķ„–L3ī„3Ņ˜„†Ž–™jh% ģ§i!›ZŠŚŌ ##x Œ!€0£¢ÄŠj ķh $°"å Ō× °$°”Ō% īģ§€*Ņ#įÄj"n–sW„/„[¬Pk‚€„/˜ti!²ń!īiŠ„/§i!²ń¤] p!²ń‡Z„/˜e!teėP„/!t„/§ŅlŠ"‚€„/˜th °l$å ²Ÿ”Ō „/ ‡Y l$ńk$‡Z§²Ÿ”ŌJ„/‡Z˜e‡Z§£teėP„/‚€č„/‚€č Ō‡XĊ„/‚€ čŌ‡XĊ„/‚€ čŌ‡XÄ#¤]–\}[„3„`¬P‡_‚€ėP‡^‚€ėP‡]ć\Äik¤ oml!„3§²Õ®„3!ģ§j"€ Ņ(ńo„3!t‹’(Ō¤ 'Ō¤b‡_‚€ėP‡^‚€ėP‡\Äp"ƒ€ŚńIn"Š"%ŌmnŠ$ŌlnŠ!ŅnŠ !ŅnŠր&ń¤b‡_‚€ėP‡^‚€ėP‡\Äp"€a³"€z²”Ō „3!ģ"€a£€A¢Č!ķi‹I’„3§²ń„3ģ§€*҇_›@ėP„3t‚€3„3˜ti!²Ō‡_›@čń‡_›<ėP!Ņ„3tЇ_„3˜„ !īt„ ėP„3!t„3§²ńg„3ģ§€#Ņ^n„3§¤ h )²Ō„3 짃€4Śńn ķhŠę„3§³ńn&Ō‡_„3ėP„3‚€ėPФb‡_‚€ėP‡^‚€ėP‡\Äp„3‚€čŌ‡]ć_§²ńk#°„3§²Ÿ”Ō „3˜‡^‡\‡] k#¤b#Ó‡_‚€ėP‡^‚€ėP‡\Ėa¼+b„,¬Phi å!b§³Ÿ”Ō!!ķib!ģ§€%Ņ!ķiŠb!짃€8ŚŌhŠŌ ¤.–-ä+b„,¬Phi b§²!”Ō b ģ§€=°i ķhŠź!¤.–-\h$%ģppi!Ó !  ŅhŠhŠP%€MĖ× k#y±#y ±”Ōb%Äbs#ēɁŚ#ē§²”#ęƒ€@Ś”Ōšę$€Ė× #ēėŠh n–Ā-d„2¬Pkd§²ŸÕMdģ§€#°d§²Ÿ”Õ“jd"ģ§›ZŠŚi!Ō‡/‡/x Œd"ģ§¢€0£Ä"ķj!å"d§²Ÿ ŌÓ!ńkŠ@‡/xš€‡²Ō6šę‡/x€Ė× |Ō ‡4‡/x‘kŠšę‡/x€Ė× §²ńkŠk#°‡0”Ō/šę‡/x€Ė× ˜šę‡/x€Ė× ˜‡.‡0rh‡.xd§ÄЇ.˜Ä‹ˆhk‡/‡/xķĚę‡/x€Ė× |Ō ‡4‡/x‘kŠšę‡/x€Ė× §²Ōk#Ņ2‡1Ōd˜šę‡/x€Ė× ˜‡.‡0rhŠdšę‡/x€Ė× čh ‡/xš€‡° Ōƒ ŌkŠk#¤5–4}+b„0¬Ph‡3€MĖ× ę²Ÿb§²Ÿ”Յ‡/x‡3€MĖ× ę³Ÿ å”Ōn‡/‡/xķć3‡/x€MĖ× i!ē  ɀd҇-Ċ1!ēÉ҇-Ċ"!ēÉ҇-Ċ!ēÉ Ņ‡-Ċ‡-ć-x‡.ŚŌb˜!ē˜‡,‡2rh‹}’Ї/‡3€MĖ× ęÄ ¤4–3,c„1¬Pb‡0Å`u i!­Ä!ēšę­€Ė× ė!ē­Ä!ē˜Ä!ēšę­€Ė× |Ä!Ō9!ē ‡/Ä!ē‡.‡/£Ä!ē ‡3ć3Ó!ē cė!ē‡4Ä!ēbŇ3Ņ!ē‡-Ä­„x˜Ņ­„ Ċ­ē Ä ¦–4j(' Õš"lˆ^­„~ˆ5˜b­„€`a‘m(ŌL$"īnk#&²ŌBˆ^#€MĖ× yˆ^#ķ€MĖ× xÓ$˜‚€ˆ ˆ^#€MĖ× yˆ^#ķ€MĖ× xļ#ķkй%'”Ōˆ^"€MĖ× n! &ē˜&ē &x&yļ"ˆ^€MĖ× ę°­å Õf’(Ō8ˆ^€MĖ× nˆ^&ę€MĖ× y&Ó˜‚€ˆ ˆ^&ę€MĖ× y&ļ–  }„„U„„¬P„ u‡„˜Än„„U˜„ „5„ g‘m%°ÕĮ„ ˜‘i„5˜‘j„5˜‘k„^„ ˜‡„~fd‘m%°Õ…‡„€¶ŌmŠym‡„€Ś#”ŌHšę&€Ė× |Ō)„^€MĖ× ¤„T˜‚€‡„Tē ‡„Tx‡„T‡„Tꐊ˜‚€„ ’šę&€Ė× |Ō‡„€Ś#”€>‡„€€AŻø&š€‡°!å %Śå ÕT’‡„x˜ÓmŠ%Ņm%¤„ƒ–„‚S #€MĖ× ē#€MĖ× ęī€MĖÄ"#€MĖ× ęih !²Ō# €MĖ× # ķ€MĖ× Å ķhŠā–| }„„U„„¬Peuh¤ ‡„~¶Ō¤ ‹„„U˜„5„ „ c‘¤ )°Õź„5˜‘n„ ˜‘ol‘„_„5˜`„^‘¤ )°Õž¤ šę €Ė× |„ §²Ÿ”€>‡„~€AŻø”ŌS„_„ ˜d‡„~„ „^‘Ō ¤ „_$‘$īl$„_€MĖ× ę°'å ŌŠ)Ņ „_ģppj"Ó " Ҥ Ф ‡„~Ś„ ˜‘”Ō¤ šę €Ė× ‚€ė‘()° ¤ š€‡°&å )Śå Õ.’()°”Ō¤ )¤„–„€Ķ *a„,¬P‡+Äha§²ń4‡+xˆ€­€MĖ× ę³Ÿ å”Ō‡+‡+xķÄaˆ€­‡+x€MĖ× ēčhŠĢ ¤.–-. W„/„\¬Pe„Z¬Ph„/˜dļŌAhe˜cļŌ&‡YŌˆ€­$€MĖ× ēeė#$Óˆ€­#‘ŠhŠˆ€­$€MĖ× ēeė ¤^–]u õ„„Ķ„„ł¬P„„¤„„÷¬P„€«u¤€Ø¤€§„„Ķ˜„,„~a„€Ŗ‘h Ņ„„¤˜b„Ua„€Ŗ‘h °Õ÷‘„€­„,˜„€§„€¬‘h °Õۚꇀ§€Ė× ¤„£„~§Ņm‡€Øķ¤€Øšę‡€Ø€Ė× bčŌh‡€Øš€‡° ° ŌÕ Ņ‡„öŌhšę‡€Ø€Ė× ‚€ė Ó‡„£b뇄£|Ō„€­€MĖ× ēbėŠ&„U§²ŌhЇ„£|Ō„~˜„U˜‡„ö‡€§hŠh °‡„£|”Ō&‡€§„€­ģpp¤€©‡€©Ó ‡€© ŅhŠh‘ ¤„ū–„śĘ /f„2¬Pe‡1Åjf˜‘lh‡4f˜b‡0ca‘Ōh‡4"€MĖ× ē eÅ"‡4€MĖ× ę°$å ŌĪ ¤5–4ó {„„S„„~¬P„„R‡„}Å„Wu¤Y¤T‡„|¶Ōh„„R ɀd³Ōh‹ī„„S˜„+a„[„V‘h °ÕŁ„+˜‘¤X‘„\„+˜„T„Z‘h‡„|€`ŻĒ¤„| ŅRšę‡T€Ė× |ŌB‡„|Żøa§²Ÿ”Ō„\a˜„„R‡„|h‡„|Śa˜‘”Ōh„\€MĖ× ē „„RÅ °šę‡T€Ė× |”Ō!‡T„\ģpp¤U‡UÓ ‡U ŅhŠh‘‡Y ° ¤Y‡Tš€‡°‡Xå  Śå Õ9’‡Y °”Ōh ¤„€–„i š€‡²ńiŠšę €Ė× |Ói–q‚€EvŠ£h ³ń¦ƒśŠ4 ?²ń?hŠ Œhˆƒł v¦ƒś­ƒś¦ƒś–‘ ¦„ˆƒł­ƒśŒv p–¬ph Ó ŅļŠļ–Xˆ$€MĖ× ēɱmˆ$€MĖ× ēÉ °Õ€­ƒśŒģ³ńmŠob­ƒłÄ­„"ģˆ$€MĖ× x¢ppÓmp"€MĖ× k#y±#y ±”Ōbsi"€MĖ× ękh #²Ō!" €MĖ× ēɰ i ķhŠä!åm–o +ļÕ ˆ+€MĖ× o'y'x£k'y*²ń 'xi*jlŠ'yi*ķjl­ƒś#²ń#hŠ­ƒśh$Ņ" £j! £i­„­ƒł Œ!pļ­„­ƒł Œ"pļ$Ņ" ¢j! ¢i# £k#²Ō¬'xi$Ņ'ē*'y'x£¢Ä'*Ċ '"Ä'ē*ķÄ­„ˆģpļ'ēÉ ŅUmšę šę šēÉ n&(²Ō"šę&€Ė× ¤ )~­„°)!°”Ō&m&ķnŠŁ%Óšę%€Ė× ē'xĖ ”ž‡„¤ƒü‡ƒü°Õ`‡„‘¤ƒü‡ƒü°Õõ‡ƒśŅ ¤„ p¤ƒ÷‡ƒ÷`€MĖ× ę³Ÿ`‡ƒ÷ķ€MĖ× y‡ƒ’²”Ō ‡ƒ÷ķ¤ƒ÷ŠÕ‡ƒ÷¤ƒż¤ƒų‡ƒų‡ƒż²Ō:`‡ƒų€MĖ× ¤ƒž‡ƒžx`‡ƒųī€MĖ× y²ń‡ƒų`‡ƒųī€MĖ× y‡ƒųķ¤ƒųн`€MĖ× ū`€MĖ× ę‡ƒ÷ķ¤ƒż¤ƒų‡ƒų‡ƒż³Ō0`‡ƒų€MĖ× ¤ƒž‡ƒžy‡ƒū²Ō‡ƒų‡ƒū‡ƒžxū‡ƒųųŠĒ„ƒł‡ƒśŒv‡ƒü¤„–„<„„=¬P„u„˜Ē„‘h °‡˜±”ŌZ¤‡˜ÓM‡¤‡ę i‡ę ‡ęī¢jc Źd‡ē 끁ˤ „‡ēÅa‡x€Ės¤/.”¤‡~¤Š®/ńh ¤?„u–>X,c„-¬P`uc˜Ēb‘i!°"˜±”Ō"˜Ó "ē˜s"~jŠń`u!¤/–.o˜„„†āÄē˜Äw–[].TEXT.BACK.CODE.SVOL š’£ž’’—ž’’o#:õ’ä’ķ’Ū’:’ ’’’’’’’’’?dir_infoo®XK;ü=iA†‘Ać0ōąĮ(O Ķ: ¬e™¼. *** EXTRAHEAHEAPOPS STRINGOPFILEOPS WILD   IDUPLICAT €€€€€€€€€€€€€€€€v6Copyright (c) 1981, 1982 by SofTech Microsystems, Inc. *¾ķjż€@]¬`źxTĄ2HDUPLICAT9v3š`r pšrp €Y° €y° i–pš spšrpš‚€r pšrpšrpš‚€r pš†r pšr pšrp†§²ń †ģ§€0£„Šp1€0ŚŌ»1†p†Ėīׁ’˧„„…„²Ÿ…„² Ōš‚€.r p‘ńp†Ėīׁ€’Ė×x ±Õļš‚€Ir pī…„¢„„„„…„…„²Ō$š†Ėīׁ…„’˧sp…„ķ„„ŠÓš‚€br pšrp†Ėīׁ€’Ė×xŅ#š‚€dr pšrpš‚€‚r pŠ š‚€”r p‘ŌHš‚€®r p‘Ō6†Ėīׁ€’Ė× Ä1†p1†pš‚€År pŠhš‚€Ūr pī…„¢„„„„…„…„²Ō$š†Ėīׁ…„’˧sp…„ķ„„ŠÓš‚€÷r pšrpš‚€łr pš‚r pšr p–-Duplicate Directory Marker { July 13, 1978 } ) Enter drive # of user's disk [4 or 5]: 4Illegal volume name. Do you want to mark it anyway? 1A duplicate directory is not being maintained on : .;WARNING! It appears that blocks 6 - 9 are not free for use." Are you sure that they are free? 3 Are you sure that blocks 6 - 9 are free for use? , Do you want the directories to be marked? + Directories are now marked as duplicate. 6 A duplicate directory is already being maintained on : . Mark not done. Type to exit. EXTRAIO PASCALIO ŌBOOTER €€€€€€€€€€€€€€€€HAr6Copyright (c) 1981, 1982 by SofTech Microsystems, Inc.(3“ķjż# ‘š’ŖÆTŽ;ÓBOOTER 4Arµ+b„.¬Pšę ī„Hš‚€r šb˜r š‚€ r š…Hrš‚€r š`ršr …H¼€1ŪŚŌø Ó7 p"p°i!ń$š‚€r š rš‚€r šrŠ ‡-‡,p$! ° Õu’ ¤0–/fšrš‚€"r šršr‚€.†%‘„5±Õh‚€2†‘„4±ÕU†%×x€€„†×x€€„3†%×xŒ„2†×xŒ„01²ń1„DŠ0„D†F…D€€Œs„E„C5…F…C†%×xŒ…Cp…Cķ„C…C3Œ…D³p± ŌŚp°Õ“š‚€8r š…Cršr45Ņ"š‚€@r š4rš‚€Qr šr „C4…F…C†×xŒ…Cp…Cķ„C…C2Œ…D³p± ŌŚpŅš‚€[r š…CršrŠ+š‚€dr š…Cīrš‚€sr š4ršrŠ+š‚€wr š…Cīrš‚€†r š5ršršrš‚€Šr šr –What unit is the  disk (0,4,5,9...) ? Drive not on-lineeBootstrap Copier [A2]]sourcee destinationSectors read: Put destination disk into drive  and type >Sectors written: Error writing logical sector , driveError reading logical sector , drive$Put in system disk and type > ]EXTRAHEAPASCALIO COMMANDI €€€€€€€€€€€€€€€€ !V6Copyright (c) 1981, 1982 by SofTech Microsystems, Inc.(3¾ķjż#~0ˆn T <   type bigstring=string[255];  var havechain,inredirect,outredirect,monitoropen,inmonitor:boolean; "function redirect(command:bigstring):boolean;  procedure exception(stopchaining:boolean); "procedure chain(command:bigstring); " "procedure initcommand;  procedure startmonitor; "procedure stopmonitor(saveit:boolean); "procedure getchainline(var command:bigstring); "  implementation COMMANDI!Vr– ***  uERRORHAN €€€€€€€€€€€€€€€€x6Copyright (c) 1981, 1982 by SofTech Microsystems, Inc. Nē ēFśŌbĀ æž ¢< "  type "drive_range = 4..127; "  procedure set_error_line (line : integer);  procedure set_user_message (drive : drive_range; mess : string);   implementation tERRORHANox Ł–*a„+¬P‡-²‡-šę ³ ŌŠUa§Ņ'š‡-£×x˜Óš‡-£×€)sš‡-£×˜ÄŠ(š‡-£×x˜Ņ š‡-£×€)tš‡-£×xaėP–-Ū›šę £ķŒsŅ˜Łšę ī„„01²Ōš0£×˜Ä0ķ„ŠėušŁ˜Ł– J*** HEAPOPS EXTRAHEASCREENOP {FILEINFO €€€€€€€€€€€€€€€€$ d†6Copyright (c) 1981, 1982 by SofTech Microsystems, Inc.ś‹»Ī'FńX;€ĪÄ.   "Type F_File_Type = file; 'F_Date_Rec = Packed Record 6 Month : 0..12; 7Day : 0..31; 7Year : 0..100; 5End; { F_Date_Rec } ' " "Function F_Open (var fid: F_File_Type):boolean; " "(* returns true if the file is open and false if not open *) " "Function F_Length (Var Fid : F_File_Type) : Integer;  ${Returns the length of the file attached to the Fid identifier. %If the file is not opened result is returned as zero}   "Function F_Unit_number (Var Fid : F_File_Type) : integer; $ ${Returns the unit containing the file attached to the Fid %identifier. If there is no file opened to Fid, the function %result is Zero.}   "Procedure F_Volume (Var Fid : F_File_Type; 5Var File_Volume : String);  ${Returns the name of the volume containing the file attached %to the Fid identifier. If there is no file opened to Fid, %the file_volume is set to a null string.}    "Procedure F_File_Title (Var Fid : F_File_Type; 9Var File_Title : String);  ${Returns the title (with suffix) of the file attached to the %Fid identifier. If there is no file opened to Fid, %the File_title is set to the null string.}   "Function F_Start (Var Fid : F_File_Type) : integer;  ${Returns the block number of the first block of the file %attached to the Fid identifier. If there is no file opened %to Fid, the function result is returned is zero.}   "Function F_is_Blocked (Var Fid : F_File_Type) : Boolean;  ${Returns a boolean that is TRUE if the file attached to the %Fid identifier is located on a block-structured unit. If there %is no file opened for the Fid or if the device is not block structured %, the function result is set to false.}   "Procedure F_Date (Var Fid : F_File_Type; 3Var File_Date : F_Date_Rec);  ${Returns a record indicating the last access date for the file %attached to the Fid identifier. If there is no file opened to %Fid, the File_Date is unchanged.}    Implementation zFILEINFOmd†( †Hp†i–= ‘Ō†ęiŠi–S ‘Ō†ę iŠi–q!‘Ō †ē ėPŠ ‚€ėP–!‘Ō †ēėPŠ ‚€ėP–„ ‘Ō†ęiŠi–» ‘Ō†ęiŠi–Š!‘Ō †ēÅ–Ųr–`UJ;,! j ***  †HELPTHES €€€€€€€€€€€€€€€€& W6Copyright (c) 1981, 1982 by SofTech Microsystems, Inc. *¾ķjż]¬`źxTĄ2…HELPTHES®WCšrpš‚€r pšrpšr pšrp–§+¤-š`€Pr pšr p`§Ó>‡,Ä`§¤+¤*‡*‡+²Ō)`‡*짃€Śń¤-‡, ‡,xŒ`‡*ģ§¢€0£Ä‡*ķ¤*ŠŠŠ‡,įĖ,Üš‚€r pšrpš‚€*r pšrpš‚€>r pšrpš‚€Qr pšrpš‚€cr pšrpš‚€xr pšrpš‚€Šr pšrpš‚€r pšrpš‚€²r pšrpš‚€Är pšrpš‚€Ųr pšrpš‚€ģr pšrpš‚€’r pšrpš‚r pšrpš‚'r pšrp‘–¬š‚1r pšrpš‚Er pšrpš‚Wr pšrpš‚kr pšrpš‚r pšrpš‚r pšrpš‚£r pšrpš‚¶r pšrpš‚Čr pšrpš‚Ür pšrp‘–hš‚įr pšrpš‚ōr pšrpš‚‚r pšrpš‚‚r pšrpš‚‚,r pšrpš‚‚?r pšrpš‚‚Rr pšrpš‚‚fr pšrpš‚‚yr pšrp‘–šš‚‚„r pšrpš‚‚˜r pšrpš‚‚«r pšrpš‚‚¾r pšrpš‚‚Šr pšrpš‚‚ćr pšrpš‚‚ör pšrpš‚ƒr pšrpš‚ƒr pšrpš‚ƒ/r pšrpš‚ƒCr pšrpš‚ƒVr pšrpš‚ƒir pšrpš‚ƒ|r pšrpš‚ƒr pšrp–š‚ƒ›r pš2rpšrp€.ji kh #²ŌC†!pbp!2¢i!1³Ō!1£i†!1¢pbp!2¢i!1³Ō!1£i ķhŠøšrpšrp–¤š‚ƒžr pš2rpšrp€.kj lh $²ŌI mi!%²Ō3†"p"2¢j"1³Ō"1£j†"1¢p"2¢j"1³Ō"1£j!ķiŠČcp ķhвšrpšrp–š‚ƒ”r pš5rpšrp€.jikh #²Ō#†!pbp!5¢i!1³Ō!1£i ķhŠŲšrpš rp–vš‚ƒ„r pš5rpšrp€.kjlh $²Ō1mi!%²Ō†"p"5¢j"1³Ō"1£j!ķiŠącp ķhŠŹšrpšrp–Zšrpšrp‘‘†p$†Ė×x„†Ė×x„„1&„5…&²Ō‘ 5ķ„Šńšrpš‚ƒ©r p†‘5±”51³Ÿ”Ōć5²ń‘ 5įŅךrpšrp‘1&„2…&²Ō‘2ķ„Šńšrpš‚ƒ»r p†‘21³Ÿ”Ōē2³Ō‘ 2įŅۚrpšrp‘– Press return to continuee’& This program is intended to help youu&find the fastest interleaving and skeww$arrangement for your disk drives. Iff#your drives need some delay after a)DSKSTRT or before a DSKSTOP (i.e. turning"the motor on or off or loading andd%unloading the head), this program may(not operate correctly. If the program iss#running properly, some interleaving'ratios will be much faster than others.&Dots will be written to the console att%the rate the disk reads complete. The&best interleaving and skew will be thee&ones for which dots are written to theescreen the fastest.& First you will be shown all possiblee#interleaving ratios in a short test&execution. You should watch the screenn&and remember approximately which ratioo!results in dots being put out the$fastest. After this is finished, youu$will be able to run a longer test onn#the ratios of your choice to aid in&determining exactly which ratio is theefastest..$ Now you will be shown all possiblee$skews in a short test execution. Youu$should watch the screen and rememberr#approximately which skew results in%dots being put out the fastest. After%this is finished, you will be able to&run a longer test on the skews of yourr$choice to aid in determining exactlyywhich is the fastest.& If all ratio and skew tests executedd%at the same speed, then you will have%to guess at the proper values and try"them out by running the diskchangee$program, rebooting, and seeing whichh%accesses the disks the fastest (steps#2 through 4 in the adaptable system'user manual). Start your guesses with a$skew of 0 and interleave ratio of 2..'Keep trying larger ratios until you see$a large speed up. Then increment thee%skew until the speed increases again.%The speed increase from the skew will%be not be very large so you will haveto observe it closely..SKEW=SKEW=RATIO==RATIO=="Ratio to test ( to exit) !SKEW to test ( to exit) ԐO¶XšV$ = PASCALIO uSYSINFO €€€€€€€€€€€€€€€€ TaLCopr (c) 1978,1979 by Regents, UC and 1980,1981,1982 by SofTech Microsystems.  "Type SI_Date_Rec = Packed Record 7Month : 0..12; 7Day : 0..31; 7Year : 0..99; 5End; { SI_Date_Rec } " " "Procedure SI_Code_Vid (Var SI_Vol : String); ${ Returns name of volume containing current workfile code } " " "Procedure SI_Code_Tid (Var SI_Title : String); ${ Returns title of current workfile code } " " "Procedure SI_Text_Vid (Var SI_Vol : String); ${ Returns name of volume containing current workfile text } " " "Procedure SI_Text_Tid (Var SI_Title : String); ${ Returns title of current workfile text } " " "Function SI_Sys_Unit : Integer; ${ Returns number of bootload unit } " " "Procedure SI_Get_Sys_Vol (Var SI_Vol : String); " { Returns system volume name }  " "Procedure SI_Get_Pref_Vol (Var SI_Vol : String); " { Returns prefix volume name } " "  "Procedure SI_Set_Pref_Vol (SI_Vol : String); ${ Sets prefix volume name } " " "Procedure SI_Get_Date (Var SI_Date : SI_Date_Rec); ${ Returns current system date } "  "Procedure SI_Set_Date (Var SI_Date : SI_Date_Rec); ${ Sets current system date } "    {**********************************************************************} " "  Implementation tSYSINFO dTa! ›ėP–/ ›ėP–= ›ėP–K ›&ėP–Wšzh–e ›@ėP–s ›<ėP–¢)`„*¬P`‚€č`‚€č Ō ›<›@ėŠ›<`ė–+Æ ›DÅ–½›D Å–Ęr–**::ZS<5.(! a ***  ŻWILD €€€€€€€€€€€€€€€€DF6Copyright (c) 1981, 1982 by SofTech Microsystems, Inc.hl»Ī'FńX;€ĪÄ. "  Type $ $D_PatRecP = ^D_PatRec; $D_PatRec = Record 1CompPos, { starting position of pattern in subject string } 1CompLen, { length of pattern in subject string } 1WildPos, { starting position of pattern in wild string } 1WildLen : Integer; { length of pattern in wildcard string } 1Next : D_PatRecP; { next pattern } /End; { D_PatRec } $ " "Function D_Wild_Match(Wild, Comp : String; Var PPtr : D_PatRecP; TPInfo : Boolean) : Boolean;  { Compares two strings (one containing wildcards) and returns true if they $match. Includes information about pattern matching that occurred if re- $quested (by PInfo) } "  {*************************************************************************} "  Implementation ÜWILD hDF5+b„,¬Pb§Ó bb§ģ§€=°¤.Ф.–-k`r$x˜Ó$xi!ē#!{£Ä!"!y£Ä i!ē#Ä!ē"Ä ē$xÄ$ Ėž*a„,¬Ph å‡+x‰'²”Ōa‡+xģ§€ ±h ń‡+‡+xķÄŠŽ ¤.–-*a„.¬Ph‡-‡-xķć,a˜‡-ļåć,xń8a‡-xģ§€%Ņ%h‡-x¢‰'²Ō‡-‡-xķć+a‡-xģ§ÄЇ,Ċ ‡+a‡-xģ§Ä‡,xń‡+xˆŠŚ å”Ō‡,ć-‡-xķĖ/®¤¤¤¤‡‡xķćˆQ˜‡åćxåÕˆQ‡x짃€ڇå”Ō$ˆQ‡xģ§€~°¤ˆQ‡xģ§€%°¤‡‡xķċäˆQ‡x질Šڇå”Ō‡ċ¤ˆQ‡xģ§j‡‡xķćˆQ˜‡åćxńHˆQ‡x짃€ Śń‡Ċ1ˆQ‡xģ§€-Ņ ˆQ˜‡‡aŠ"i"!²ń‡ćˆQ˜‡åćxńP‡Ō!‡Ō c€’¼ĒŽccŠ€’¼"!¼ŻÜĒŽŠ‡ŌcĒŽccŠ"!¼ŪĒŽˆQ‡xģ§€}°¤‡‡xķĤ¤‡‡x ÕĘž‡xń<‡cŠŚń‡Ċ-‡‡xķćx®'²®z”ŌˆQ‡x질ŠŚń ‡‡x‡xļ–%%xķÄ%x®'²ń$®&ķĊ>ˆr!x¦$xh%x #!š ķh ®&²ń"Ä#xå"xå”Ōˆr!­Ĉr#x"x ŌĻ–3)Äjk­'²ŸÕ­zˆQ+질ŠŚå”Ō(*+*­&²Ÿl$­"å”åÕ”ˆQ+ģ§h$ńˆ(*ģ§i €%°#å”Ōk+ķ¤ Š$å !°”Ō#å!ƒ€Ś”ŌjŠ+ķ¤ *ķ¤ ŠZ ˆŠŚńjŠL­zŌ(*+ Š=+ķ¤ *ķ¤ +­'²­z”ŌˆQ+질ŠŚń(*+Š„ „ b!(Š„ „ )b( Šրk"å#å”*­&²Ÿ”+­'²Ÿ”Ō)Ċ*­&²Ÿ+­'²Ÿ ­"å”Ōj")x Õ’­z(x˜±”Ō(xo'ē­&'{£ķÄ'­''y£ķĖ Ęy„Q„~¬P„(„|¬P`ƒ€[ĒŽ„ƒ€cĒŽ„%r‡{˜Ä„Q˜¤"„Q§¤'„(§¤&„!‡{‡z‡{x˜±”Ō*‡{x|¤#‡{xē˜Ä‡#˜Ó‡#|¤$‡#ē‡{xć{‡#ć$¤#Šć‡!ń‡{˜Ä„%r‡!¤€€–Īs– @0 0h={ņ’Ą’ē’ 0 h YQ8… e *** HEAPOPS   FREMINTES €€€€€€€€€€€€€€€€ķķ&żLRAMDISKBģĘĘD ķ*’F ZĘD&EREMINTESB†p$†Ė×xÓ(†Ėp†˧€Q°†˧€q° Ōp†p$†Ė×xÓ†Ėp†ĖpŌ™–  O^¤Ö„ { Program to test Remote Input Serial Channel }  { Version 1A 16-Jul-82 }   PROGRAM RemInTest;  VAR "TwoChar:PACKED ARRAY[0..1] OF CHAR; "Status:ARRAY[0..29] OF INTEGER;   BEGIN {RemInTest} "REPEAT $UNITSTATUS(1,Status,1); $IF Status[0] <> 0 THEN &BEGIN (UNITREAD(1,TwoChar[0],1); (IF (TwoChar[0]='Q') OR (TwoChar[0]='q') THEN EXIT(PROGRAM); &END; $UNITSTATUS(7,Status,1); $IF Status[0]<>0 THEN &BEGIN (UNITREAD(7,TwoChar[0],1); (UNITWRITE(2,TwoChar[0],1); &END; "UNTIL FALSE;  END.   {Alternate version for pre-Version IV systems  BEGIN {RemInTest}  REPEAT $UNITREAD(7,TwoChar[0],1); $UNITWRITE(2,TwoChar[0],1); "UNTIL FALSE;  END.  }  FIBBUS ‹IBBUS IV.13 [a.1]E C’’p0<Aö0!Hą|CśN"ˆ8:p0Kö0Iö0pNNCś("`4p`Cś.Q|ß’Cś QLŲ>Ą X?NŠCś’ņ"QĢ`ųQĢ`PQĢ`QĢ`öQĢ`–QĢ`¬QĢ`ØQĢ`¶QĢ`QĢ`p`€`’xx8<EöH8*QĢ’žNuap0<Eö5E5T0CųĄ|€@p@@@ @ |“|0<EöJjEųĄgf¼`’¼| ||pdQČ’ž||a’d)`žŅp0<CöpüQČ’śNup0<CöpÜQČ’ü`ž¦p0<EöJjg&CųĄ| |?a’ )|_ažž)<Fp0<Cö0ŅĄfp `žVCųĄg |‰ažĘ`Ą@ažø)QĪ’øp0<CöŅÅfp`žCųĄg|Šaž„)| `żģÅEažj)| `żŅa6<FCųĄ@)faQĪ’ę|\a`żšCųĄrHA2<’’)VÉ’öf HAQÉ’čp`żzNu<F:¼Cśżˆ"ŒpCųĄ)f rHA2<’’)VÉ’öf HAQÉ’čp`éVĪ’ČfpEśżB"R™É:Œ`ż CųĄ0ćHŅĄQĶ Q`¬`üö`üņCųĄ)güāp `üāCųĄ| | |?ażL)|_aż>)|aż0)|‰p0<Aö vCųĄ g\fTĆCaüų)| ƒ)f"rHA2<’’)VÉ’öf HAQÉ’čp`ü:)f&| QĖ’|aüž)<8ƒp`ü | |aü~))8ƒ`ūęąų6†œ²ī2¼  IBBUS IBBUS BUSTBL ²6ųąDEVSTAT ¼2īœ†MYSTACK STACK  A $CURSOR $EQUAL $SYNTAX C Z2ĘO.¤ÖØ ;SAGE II IEEE-488 support package  ;  ; File: IB.BUS.TEXT  ; Date: 16-DEC-83  ; Version: 2.1  ;  ;Copyright (c) 1982 Sage Computer Technology  ;ALL RIGHTS RESERVED  ;*****************************************************************************  ; History:  ;  ; 1 17-Jul-82 Initial release.  ; 2 13-SEP-82 Reserved A3 for ATTACH  ; 2.1 16-DEC-83 Forced reset state in INIT.  ; Cleared data buf to & fixed timeout prob.  ;  ;*****************************************************************************  ;FUNCTION IB_BUS(VAR B,BLNG:INTEGER;CARG:INTEGER;CD:BUSCMD):INTEGER;EXTERNAL;  ;  ;This assembly routine directly access the TMS9914 chip so the supervisor mode  ;of the 68000 is enabled using TRAP 14.  ;  ;  ; LONG JSR MACRO: (.MACRO LJSR ;used for calling PROM routines if (.WORD 4EB9H ;necessary. NOT normally called by (.WORD 00FEH ;this routine. (.WORD %1 (.ENDM  ;***************************************************************************** (.RELFUNC IB_BUS,4 ;relocatable, FUNC= integer E;values must remain between IBUS calls.  ;***************************************************************************** (.PRIVATE MYSTACK:24 ;Save reg on user built stack (.PRIVATE DEVSTAT:16 ;Device status table, use reg A1 bits E;0 = can talk E;1 = can listen E;2 = can control  E;3 = has control E;4 = can SRQ E;5 = expects parallel poll E;6 = self (.PRIVATE BUSTBL:4 ;Local variables CONTROL AND CMDTIME  (.INCLUDE IB.DEF ;Register and cmd definitions  .PAGE  ;*****************************************************************************  ;Procedure start-up saves registers, finds address of pascal arguments, goes  ;to supervisor mode using TRAP 14, saves the stack pointer in case of an error.  ;  ;General register usage:  ; A7 stack pointer  ; A6 reserved for Pascal location pointer to Pascal variables  ; A5 reserved for p-system program counter  ; A4 address of start of the data array  ; A3 reserved for p-System break key feature  ; A2 cmdtime counter  ; A1 work register  ; A0 work register  ;  ; D7  ; D6  ; D5 CARG/CMDTIME  ; D4 CMD  ; D3  ; D2  ; D1  ; D0  ;*****************************************************************************   START MOVEQ #0,D0 ;Calculate MYSTACK's true location. (MOVE.W #MYSTACK,D0 ; (LEA 48(A6,D0.L),A0 ;Start at end of stack (MOVE.L (SP)+,-(A0) ;Save return address (MOVEM.L D6/D7/A1-A5,-(A0) ;Save selected registers (LEA SAVSTK,A1 (MOVE.L A0,(A1) ;Save pointer  (MOVE.W (SP)+,D4 ;CMD (MOVE.W (SP)+,D5 ;CARG/CMDTIME (MOVEQ #0,D0 (MOVE.W (SP)+,D0 ;LENG (ptr to) (LEA 0(A6,D0.L),A5 ;ADDR OF LENG/IB_SAGE (MOVE.W (SP)+,D0 ;ARRAY (ptr to) (LEA 0(A6,D0.L),A4 ;ADDR OF START OF ARRAY (MOVE.W (SP)+,D0 ;One word of junk tossed away  (MOVEQ #19.,D0 ;Enter Supervisor mode (TRAP #14. (LEA SAVESP,A1 ;Save supervisor stack PT (MOVE.L A7,(A1) ;for return of D0 (ERR OR DEV FOR SRQ) (BRA DOWHAT ;Find and do cmd   EXIT MOVEQ #0,D0 ;No error, Normal exit (BRA DORET  ERREXIT LEA SAVESP,A1 ;Restore stack pointer (MOVEA.L (A1),A7 ;D0 contains err code  DORET ANDI.W #0DFFFH,SR ;Back to User mode (LEA SAVSTK,A1 (MOVEA.L (A1),A0 (MOVEM.L (A0)+,D6/D7/A1-A5 ;RESTORE user REG (MOVEA.L (A0)+,A0 ;setup return address (MOVE.W D0,-(SP) ;Return ERR/func val (JMP (A0)  .PAGE  ;*****************************************************************************  ;The TRAP puts processor in supervisor mode so that we can now execute the  ;IEEE- processed specified by the CD -reg D4- argument.  ;*****************************************************************************  (.ALIGN 2  SAVESP .BLOCK 4,0 ;Saves stack pointer  SAVLOC .BLOCK 4,0 ;Used by IHEAR  SAVSTK .BLOCK 4,0 ;Save the POINTER TO THE USER STACK  TRAP0 LEA SAVESP,A1 ;Save stack PT in case of err (MOVE.L A7,(A1) E;DOWHAT rets to EXIT or ERREXIT  DOWHAT  ;Re-write as a jump table when assembler is fixed.  ;See the bug list in the SAGE II manual for details of assembler problems.  ;  ;ITALK and IHEAR were put first in order to speed calls up a bit.  ; (DBF D4,$5 (BRA ITALK ;1=SEND data  $5 DBF D4,$10 (BRA IHEAR ;2=rcv data  $10 DBF D4,$20 (BRA SESSION ;3=set up who is to talk and listen.  $20 DBF D4,$30 (BRA SETSTAT ;4=setup status of a device.  $30 DBF D4,$40 (BRA DIRECT ;5=read/wrt to TMS9914 reg directly.  $40 DBF D4,$50 (BRA TRANS ;6=Transfer control to another device.  $50 DBF D4,$60 (BRA CHKSRQ ;7=CHk for SRQ  $60 DBF D4,$70 (BRA SPOLL ;8=Serial poll devices  $70 DBF D4, $100 (BRA PPOLL ;9=Parallel poll, not implemented  $100 DBF D4,BADA (BRA INIT ;10=initialize TMS9914 if controller  BADA MOVEQ #BADARG,D0 ;bad arg (BRA ERREXIT ;error return   ;*****************************************************************************  PPOLL BRA EXIT ;Not implemented yet.  ;*****************************************************************************   .PAGE  ;*****************************************************************************  ;Wait for device setups - 1.5 US x cmdtime  CMDWAIT (MOVEQ #0,D4 (MOVE.W #BUSTBL,D4 (LEA 0(A6,D4.L),A2 ;Set up to reference local var (MOVE.W CMDTIME(A2),D4 !$10 DBF D4,$10 (RTS   ;*****************************************************************************  ;IEEE 488 BUS INIT ROUTINE  ;  ;On power-up, the TMS9914 chip should be locked in a passive state until  ;a software reset/clear SWRST is done.  ;  ;Before the software SWRST is sent, the address register must be loaded  ;with the device TALK/LISTEN address and the interrupt mask set. The SAGE  ;powers up setting the chip with interrupts off.  ;  ;*****************************************************************************  INIT (BSR ZEROTBL ;zero the device status table. (MOVEQ #0,D0 (MOVE.W #BUSTBL,D0 (LEA 0(A6,D0.L),A2 ;Set up to reference local var (MOVE.W D5,CMDTIME(A2) ;Max CMD setup time (MOVE.W (A4),CONTROL(A2) ;load control word (MOVE.W (A5),D0 ;Self addr is usually set from switch (LEA BASE,A1 ;Base of TMS9914 chip (MOVE.B #SWRST,AUXCMD(A1) ;Force to init state, added vers 2.1 (MOVE.B D0,ADDRSS(A1) ;load SAGE II device addr into TMS9914 (MOVEQ #0,D0 (MOVE.B D0,INTMK0(A1) ;CLR interrupts mask 0 - DO NOT READ (MOVE.B D0,INTMK1(A1) ; 1 (MOVE.B D0,SERPOL(A1) ;CLR Serial poll reg (MOVE.B D0,PARPOL(A1) ;CLR Parallel poll reg (MOVE.B #DAI,AUXCMD(A1) ;DISABLE ALL INTERRUPTS (MOVE.B #RHDF,AUXCMD(A1) ;Release data hold off (MOVE.W #BUSTBL,D0 (LEA 0(A6,D0.L),A2 ;Set up to reference local var (TST.W CONTROL(A2) ;is this the controller? (LEA TXCONT,A2 ;controller xmits, slave rcvs (BNE.S $10 ;controller must clear bus (MOVE.B #TXOFF,(A2) ;slave rcvs control signals (BRA EXIT   $10 MOVE.B #TXON,(A2) ;Controller xmits control signals (MOVE.B #TCA,AUXCMD(A1) ;TAKE CONTROL (MOVE.B #SIC,AUXCMD(A1) ;SETUP to send interface clear. (MOVE.B #CLRST,AUXCMD(A1) ;Start it, IFC line goes low, #23 (MOVEQ #100,D0  $60 DBF D0,$60 ;delay >10us for all devices to synch. (MOVE.B #SICCLR,AUXCMD(A1) ;end interface clear. (MOVE.B #SRE,AUXCMD(A1) ;send remote enable (BSR CMDWAIT (MOVE.B INTST0(A1),D0 ;Clear BO as now in control mode. (BRA EXIT   .PAGE  ;*****************************************************************************  ;zero the device status table:  ;*****************************************************************************  ZEROTBL MOVEQ #0,D0 (MOVE.W #DEVSTAT,D0 (LEA 0(A6,D0.L),A1 (MOVEQ #1FH,D0 ;32 BYTE TABLE  $10 MOVE.B #0,(A1)+ (DBF D0,$10 (RTS    ;*****************************************************************************  ;load the status of the devices into the table  ;*****************************************************************************  SETSTAT MOVEQ #0,D0 (MOVE.W #DEVSTAT,D0 (LEA 0(A6,D0.L),A1 (MOVEQ #1FH,D0 ;32 BYTE TABLE  $10 MOVE.B (A4)+,(A1)+ (DBF D0,$10 (BRA EXIT   .PAGE  ;*****************************************************************************  ;Set up talk and listen devices.  ;*****************************************************************************  SESSION (MOVEQ #0,D0 (MOVE.W #BUSTBL,D0 (LEA 0(A6,D0.L),A2 ;Set up to reference local var (TST.W CONTROL(A2) ;Am I the controller? (BEQ.S SETMLA ;NO (LEA BASE,A1 (MOVE.B #TCA,AUXCMD(A1) ;YES -TAKE CONTROL (MOVE.B #UNL,DATOUT(A1) ;Unlisten all devices (BSR CMDWAIT (MOVE.B INTST0(A1),D0 (MOVE.B #UNT,DATOUT(A1) ;Unlisten all devices (BSR CMDWAIT (MOVE.B INTST0(A1),D0  SETMLA MOVE.W (A5),D6 ;D6= how many devices will listen (SUBI.W #1,D6 ;LNG too big by 1 (MOVEQ #0,D0 (MOVE.W #DEVSTAT,D0 (LEA 0(A6,D0.L),A1 (MOVE.W (A4)+,D0 ;find device listen status (ADDA.W D0,A1 (BTST #1,(A1) ;can it listen? (BNE.S $5 (MOVEQ #NOHEAR,D0 ;ERR, it can't hear (BRA ERREXIT  $5 BTST #6,(A1) ;self? (LEA BASE,A1 (BEQ.S $10 (MOVE.B #LON,AUXCMD(A1) ;LON (BSR CMDWAIT (BRA.S $20  $10 BSET #5,D0 ;MLA=BIT 5 + listen address (MOVE.B D0,DATOUT(A1) ;set listen device(S) (BSR CMDWAIT ;Wait for slowest device (MOVE.B INTST0(A1),D0  $20 DBF D6,SETMLA ;D6=number of devices  ;Set my talk address  SETMTA MOVEQ #0,D0 (MOVE.W #DEVSTAT,D0 ;get status of device (LEA 0(A6,D0.L),A1  (ADDA.W D5,A1 ;TDEV=D5 (BTST #0,(A1) ;can he talk? (BNE.S $5 (MOVEQ #NOTALK,D0 ;NO!-exit to error return. (BRA ERREXIT  $5 BTST #6,(A1) ;Is it SELF? (LEA BASE,A1 (BEQ.S $10 ;NO - (MOVE.B #TON,AUXCMD(A1) ;yes-SELF talks (BSR CMDWAIT ;Wait for slowest device (MOVE.B DATIN(A1),D2 ;Clear data reg. vers 2.1 (MOVE.B #GTS,AUXCMD(A1) ;release ATN line (BRA EXIT   $10 BSET #6,D5 ;MTA=bit 6 +talk address (MOVE.B D5,DATOUT(A1) (BSR CMDWAIT ;Wait for slowest device (MOVE.B DATIN(A1),D2 ;Clear data reg. vers 2.1 (MOVE.B #GTS,AUXCMD(A1) ;release ATN line  $30 BRA EXIT (  .PAGE  ;*****************************************************************************  ;This device talks.  ;*****************************************************************************  ITALK  BSR WAITBO ;Vers 2.1 (MOVE.W (A5),D6 ;D6=how many bytes to send -1 (SUBI.W #1,D6 ;LNG too big by 1 for all routines  $10 MOVE.B (A4)+,D0 (LEA BASE,A1 (MOVE.B D0,DATOUT(A1) ;send a byte from PASCAL array (MOVE.B INTST0(A1),D4 ;LOOP UNTIL WE HAVE A BYTE (BTST #4,D4 (BNE.S $20 ;Fast devices ok here, (BSR WAITBO ;Wait around for slow ones  $20 DBF D6,$10 ;all but one sent? (MOVE.B #FEOI,AUXCMD(A1) ;send EOI with last byte (MOVE.B (A4)+,DATOUT(A1) ;  BSR WAITBO  $30 BRA EXIT (  ;Wait for a byte handsake completed. ;This routine gives a very long timeout to insure that slow devices can  ;respond without causing a timeout err. The check for a fast device is  ;no longer than necessary, an exit occurs as soon as the BYTE OUT flag  ;is found. Routine will timeout in about 5 sec.  WAITBO (LEA BASE,A1 (MOVEQ #012H,D1  $10 SWAP D1 (MOVE.W #0FFFFH,D1 ;max wait count (+ 1) for data.  $20 MOVE.B INTST0(A1),D4 ;Chk for byte out flag (BTST #4,D4 (DBNE D1,$20 (BNE.S $40 ;Slow devices exit loop asap (SWAP D1 (DBF D1,$10 (MOVEQ #XTMOUT,D0 ;TRANSMIT Timeout error returned. (BRA ERREXIT  $40 RTS   .PAGE  ;*****************************************************************************  ;This device listens  ;*****************************************************************************  IHEAR (MOVE.W (A5),D6 ;Max number of bytes to receive -1 (SUBI.W #1,D6 ;LNG too big by 1 (MOVE.W #0,(A5) ;Zero count in case of error (LEA SAVLOC,A1 (MOVE.L A4,(A1) ;save org loc so we know how much was sent (MOVEQ #0,D0 ;Clear listen error code  HRCHK LEA BASE,A1 (MOVE.B INTST0(A1),D4 ;chk for byte-in handshake (BTST #5,D4 (BNE.S STORE ;Fast device sent byte already  WAITER ;Wait for slower devices up to 10 sec (MOVEQ #012H,D1  $10 SWAP D1 (MOVE.W #0FFFFH,D1 ;max wait count (+ 1) for data.  $20 MOVE.B INTST0(A1),D4 ;Chk for byte IN flag (BTST #5,D4 (DBNE D1,$20 (BNE.S STORE ;Slow devices exit loop asap (SWAP D1 (DBF D1,$10 ;Times out if no answ within 10 sec. (MOVEQ #RTMOUT,D0 ;Set error code to show receive timeout (BRA.S ENDHR ;exit with what data we have  STORE MOVE.B DATIN(A1),(A4)+ ;Store data, move to next position (BTST #3,D4 ;EOI bit usually set by talker when done. (DBNE D6,HRCHK ;Exit if array is full OR EOI (BNE.S ENDHR ;Was really the last one. (MOVEQ #FULL,D0 ;Array full, ?more data being sent?  ENDHR LEA SAVLOC,A2 ;Get loc of start of data (MOVEA.L (A2),A1 (SUBA.L A1,A4 ;calculate how much data sent: MAX=1 WORD (MOVE.W A4,(A5) ;return number of bytes accepted in LNG. (BRA DORET ;Leave D0 set with error code.     .PAGE  ;*****************************************************************************   ;DIRECT  ;The user is allowed to directly access the TMS9914 registers.  ;In this way, an application can be done without resorting to  ;assembly code  ;  ;The first WORD of the array B must be the register # (AUXCMD=3)  ;The next WORD is the cmd to be written/read.  ;Warning: no error checking is done on DIRECT ACCESS commands.  ;  ;*****************************************************************************   W1 .EQU 3 ;to return rd in low byte.  DIRECT (LEA BASE,A1 ;Which register do we want? (MOVE.W (A4),D0 ;Get reg # (LSL.W #1,D0 ;Mul by 2 (ADDA.W D0,A1 ;create reg address (always odd/high) (DBF D5,$10 ;0=READ (MOVE.B (A1),W1(A4) ;READ REGISTER. (BRA $20  $10 MOVE.B W1(A4),(A1) ;WRT VALUE TO REGISTER.  $20 BRA EXIT   ;*****************************************************************************  TRANS BRA EXIT ;not yet implemented  ;*****************************************************************************   .PAGE  ;*****************************************************************************  ;CHK for SRQ  ;*****************************************************************************  CHKSRQ (LEA BASE,A1 (MOVE.B INTST1(A1),D0 ;Chk for SRQ flag (BTST #1,D0 (BEQ EXIT ;No service request.  $10 MOVEQ #HAVESRQ,D0 (BRA ERREXIT    ;*****************************************************************************  ;Serial poll devices and find out who requested service.  ;*****************************************************************************  SPOLL ;Set serial poll (LEA BASE,A1 ( (MOVE.B #TCA,AUXCMD(A1) ;Grab bus again (ATN) (MOVE.B #TONCLR,AUXCMD(A1) (MOVE.B #UNL,DATOUT(A1) (BSR CMDWAIT ;wait for slow devices (MOVE.B INTST0(A1),D0 ;Clear first byte prompt (MOVE.B #UNT,DATOUT(A1) ;Send universal unTALK out (BSR CMDWAIT ;wait for slow devices (MOVE.B INTST0(A1),D0  ;Clear first byte prompt (MOVE.B #SPE,DATOUT(A1) ;Serial poll enable,get ready to poll. (BSR CMDWAIT ;wait for slow devices (MOVE.B INTST0(A1),D0 ;Clear first byte prompt (MOVE.B #LON,AUXCMD(A1)  (MOVEQ #0,D0 (MOVE.W #DEVSTAT,D0 (LEA 32(A6,D0.L),A0 ;Start at highest WORD address (MOVEQ #31,D3 ;check includes dev #0  DEVPOL (LEA BASE,A1 (MOVE.B -(A0),D0 ;Get device status, set for next dev. (BTST #4,D0 ;Get device status. (BEQ NXTDEV ;not him, can't send SRQ (BTST #6,D0 ;chk for self (BNE NXTDEV ;of course, I did't send it.  (BSET #6,D3 ;set other talker control bit (MOVE.B D3,DATOUT(A1) ;address dev to send poll status (BSR CMDWAIT ;wait for slow devices (MOVE.B DATIN(A1),D2 ;Clear data reg. vers 2.1 (MOVE.B #GTS,AUXCMD(A1) ;release ATN line  HRCHK2 BCLR #6,D3 ;clear talk bit (MOVE.B INTST0(A1),D4 ;chk for byte-in handshake (BTST #5,D4 (BNE.S RDSTAT ;Fast device sent byte already  WAITR2 ;Wait for slower devices up to 10 sec (MOVEQ #012H,D1  $10 SWAP D1 (MOVE.W #0FFFFH,D1 ;max wait count (+ 1) for data.  $20 MOVE.B INTST0(A1),D4 ;Chk for byte IN flag (BTST #5,D4 (DBNE D1,$20 (BNE.S RDSTAT ;Slow devices exit loop asap (SWAP D1 (DBF D1,$10 ;Times out if no answ within 10 sec. (MOVEQ #RTMOUT,D0 ;Set error code to show receive timeout (BRA ERREXIT ;exit with what data we have  RDSTAT MOVE.B DATIN(A1),D2 ;READ STATUS (BTST #6,D2 ;Was it you? (BNE XSPOLL ;YES,exit serial poll  NXTDEV MOVE.B #TCA,AUXCMD(A1) (DBF D3,DEVPOL (MOVE.B #SPD,DATOUT(A1) ;Disable serial poll (BSR CMDWAIT ;wait for slow devices (MOVE.B DATIN(A1),D2 ;Clear data reg. vers 2.1 (MOVE.B #0,D3 (MOVE.W D3,(A4) ;return zero for address (MOVEQ #NOBODY,D0 ;nobody did it?? (BRA ERREXIT  XSPOLL MOVE.B #TCA,AUXCMD(A1) (MOVE.B #SPD,DATOUT(A1) ;Disable serial poll (BSR CMDWAIT ;wait for slow devices (MOVE.B DATIN(A1),D2 ;Clear data reg. vers 2.1 (MOVE.B INTST0(A1),D0 ;Clear first byte prompt (MOVE.W D3,(A4) ;return culprit's address (BRA EXIT ( (.END    ( IBUNIT ‹€€€€€€€€€€€€€€€I IV.13 [a.1]  VAR IB_SAGE, {The bus address of the SAGE II as set by switches} $IB_ERR:INTEGER; {If <>0, an error has occurred }  IB_CHK:BOOLEAN; {Chk,if true then wrt any error msgs from this unit}  IB_X,IB_Y:INTEGER;{Wrt any error msgs at screen postion X,Y}   {NOTE: arguments are defined in implementation section}   FUNCTION IB_SWITCH:INTEGER;  PROCEDURE IB_INIT(VAR CNTRL,ADDR:INTEGER;CMDWAIT:INTEGER);  PROCEDURE IB_STAT(BDEV,STATUS:INTEGER);  PROCEDURE IB_TALK(LDEV:INTEGER;VAR TBUF:INTEGER;LNG:INTEGER);  PROCEDURE IB_TALKS(LDEV:INTEGER;S:STRING);  PROCEDURE IB_HEAR(TDEV:INTEGER;VAR LBUF,LNG:INTEGER;MORE:BOOLEAN);  PROCEDURE IB_HEARS(TDEV:INTEGER;VAR S:STRING);  PROCEDURE IB_DIR(RDW,REG:INTEGER;VAR VAL:INTEGER);  PROCEDURE IB_SPOLL(VAR PDEV:INTEGER);  FUNCTION IB_CHKSRQ:BOOLEAN;  IMPLEMENTATION ŽIBUNIT TV)`„*¬P43rš‚€s pš0spš€ tpš`˜s pš†s p–+Ģ2Ōm0Ói0Šc‚€‘ Š]‚€‘ ŠT‚€%‘ ŠK‚€+‘ ŠB‚€1‘ Š9‚€N‘ Š0‚€j‘ Š'‚€‡‘ Š‚€•‘ Š‚€¢‘ Š ‚€Ŗ‘ Šր斚 Nr¢i€’h€‚b! p"åjb˧k–"! ‘ „‘–*† #Ė"€’ĖČ„† Ė׆‘ „‘–N„b†1‘ „‘0Ņ !`‘ „‘–„T„,„U¬P€'¤+¤*‡*‡+²Ō`‡*€'Ė×ć*ķ¤*Šē„,§¤)„,ģ`‡)p`‡)€OĖ €’ĖȇW`€'Ėׇ)‘–WÓ ń„††#‘ „‘Š„0Ņ "!‘ „‘–+€P¤+‡-`€)Ėׄ+‘‡+€P²ń€2„‘Ї,‡+Č`€Sˇ,ģ‡+p–-L† Ė×!Ć Ė× xÄ„† Ė׆"‘ „‘ † Ė×xĖciha`‘ „0 °j–‚ Ä„ †‘ „‘ x”˦„„6…²Ō† 6Ė×Ä6ķ„Šźu–IB_ERR=Bad call to IB_BUS routinee Please accept data, more to comee RCV timeout XMT timeout8Control timeout - Talker did not give EOI (end-of-input))6Status table indicates device is not equipped to talk..8Status table indicates device is not equipped to listen..Nobody answered serial pollNo SRQ - service requesttUnexpected SRQQ(Input greater than 80 char string lengthh2’š’£’¬’µ’¾’Ē’Š’Ł’ā’ė’ō’’p0<DAö0!Hą|CśN"ˆ8:p0Kö0Iö0pNNCś("`4p`Cś.Q|ß’Cś QLŲ>Ą X?NŠCś’ņ"QĢ`ųQĢ`PQĢ`QĢ`öQĢ`–QĢ`¬QĢ`ØQĢ`¶QĢ`QĢ`p`€`’xx8<tEöH8*QĢ’žNuap0<tEö5E5T0CųĄ|€@p@@@ @ |“|0<tEöJjEųĄgf¼`’¼| ||pdQČ’ž||a’d)`žŅp0<|CöpüQČ’śNup0<|CöpÜQČ’ü`ž¦p0<tEöJjg&CųĄ| |?a’ )|_ažž)<Fp0<|Cö0ŅĄfp`žVCųĄg |‰ažĘ`Ą@ažø)QĪ’øp0<|CöŅÅfp`žCųĄg|Šaž„)| `żģÅEažj)| `żŅa6<FCųĄ@)faQĪ’ę|\a`żšCųĄrHA2<’’)VÉ’öf HAQÉ’čp`żzNu<F:¼Cśżˆ"ŒpCųĄ)f rHA2<’’)VÉ’öf HAQÉ’čp`éVĪ’ČfpEśżB"R™É:Œ`ż CųĄ0ćHŅĄQĶ Q`¬`üö`üņCųĄ)güāp `üāCųĄ| | |?ażL)|_aż>)|aż0)|‰p0<|Aö vCųĄ g\fTĆCaüų)| ƒ)f"rHA2<’’)VÉ’öf HAQÉ’čp`ü:)f&| QĖ’|aüž)<8ƒp`ü | |aü~))8ƒ`ūę- H(4 ģÕ©—ƒzhCžfŖ4Xp®*– *** EXTRAIO PASCALIOGOTOXY  ĘIBEX €€€€€€€€€€€€€€€€ķ~ķ~0żLAąŲ‰\Ž\Ž’ķš’F#č\Ž‚ÅIBEX Ŗ\ŁŁŁrh ”Łia`ršÓp𢢢€@¢r„0¢¢r–Ҥ¤¤0`„‡r¤‡‡¢¤šÓāšÓš‚€s pššspšspš‚€s pš‡spšsp–+h ķhr €d²Ÿ Ōņar !0Óš‚€ s pšspŠš‚€s pšsp–+R‘0‚€ršÓp0‚€ršÓp‘Ł‘–ERR:=TOTAL== other SRQ FOUND SRQRU;DSSl0 PASCALIOIBUNIT  A $CURSOR $EQUAL $SYNTAX B «ĖO.„Ø` {*******************************************************************}  {* SAGE II/IV IEEE-488 support procedures: *}  {* *}  {* File: IB.UNIT.TEXT *}  {* Date: 16-Dec-83 *}  {* Version: 1.1 *}  {* *}  {* This unit provides software interfacing to the IEEE-488 bus. *}  {* *}  {* COPYRIGHT (c) 1983 SAGE Computer *}  {* ALL RIGHTS RESERVED *}  {* *}  {* Development History: *}  {* *}  {* 1 17-Jul-82 Initial Release *}  {* 1.1 16-DEC-83 IB_HEARS Buffer indx chng from 0 to 1 *}  {* *}  {* *}  {*******************************************************************}  UNIT IB_UNIT; {Link with IB.BUS.CODE to form IB.LNK.CODE}  INTERFACE  VAR IB_SAGE, {The bus address of the SAGE II as set by switches} $IB_ERR:INTEGER; {If <>0, an error has occurred }  IB_CHK:BOOLEAN; {Chk,if true then wrt any error msgs from this unit}  IB_X,IB_Y:INTEGER;{Wrt any error msgs at screen postion X,Y}   {NOTE: arguments are defined in implementation section}   FUNCTION IB_SWITCH:INTEGER;  PROCEDURE IB_INIT(VAR CNTRL,ADDR:INTEGER;CMDWAIT:INTEGER);  PROCEDURE IB_STAT(BDEV,STATUS:INTEGER);  PROCEDURE IB_TALK(LDEV:INTEGER;VAR TBUF:INTEGER;LNG:INTEGER);  PROCEDURE IB_TALKS(LDEV:INTEGER;S:STRING);  PROCEDURE IB_HEAR(TDEV:INTEGER;VAR LBUF,LNG:INTEGER;MORE:BOOLEAN);  PROCEDURE IB_HEARS(TDEV:INTEGER;VAR S:STRING);  PROCEDURE IB_DIR(RDW,REG:INTEGER;VAR VAL:INTEGER);  PROCEDURE IB_SPOLL(VAR PDEV:INTEGER);  FUNCTION IB_CHKSRQ:BOOLEAN;  IMPLEMENTATION   CONST RD=0;WT=1; &AUX=3;  TYPE BYTE=0..255; %BUSCMD=(ITALK,IHEAR,SESSION,SETSTAT,DIRECT,TRANS,CHKSRQ,SPOLL,PPOLL,INIT);  VAR ASCII:CHAR; $BLNG,I:INTEGER; ${value to rd/wrt in direct access to GPIB registers} $CMD:PACKED RECORD CASE INTEGER OF '1:(W:PACKED ARRAY[0..3] OF INTEGER); ! END; $DEVSTAT:RECORD CASE INTEGER OF &1:(B:PACKED ARRAY[0..31] OF BYTE);  2:(W:PACKED ARRAY[0..15] OF INTEGER); &END;  FUNCTION IB_BUS(VAR B,BLNG:INTEGER;CARG:INTEGER;CD:BUSCMD):INTEGER;EXTERNAL;   PROCEDURE IB_WRTERR(S:STRING);  BEGIN  GOTOXY(IB_X,IB_Y);  WRITE('IB_ERR=',IB_ERR,' ',S);  READ(ASCII);  END;   PROCEDURE CHKERR;  BEGIN  IF IB_CHK THEN "BEGIN "IF IB_ERR<>0 THEN #BEGIN %CASE IB_ERR OF '1:IB_WRTERR('Bad call to IB_BUS routine'); '2:IB_WRTERR('Please accept data, more to come'); '3:IB_WRTERR('RCV timeout'); '4:IB_WRTERR('XMT timeout'); '5:IB_WRTERR('Control timeout - Talker did not give EOI (end-of-input)'); '6:IB_WRTERR('Status table indicates device is not equipped to talk.'); '7:IB_WRTERR('Status table indicates device is not equipped to listen.'); '8:IB_WRTERR('Nobody answered serial poll'); '9:IB_WRTERR('No SRQ - service request'); &10:IB_WRTERR('Unexpected SRQ'); &50:IB_WRTERR('Input greater than 80 char string length'); %END; #END;  END;  END;   FUNCTION IB_SWITCH;{:INTEGER;}  {Reads GROUP-B switch to get dev addr of SAGE II}  VAR SWLOW,SWHIGH:INTEGER;  SW:RECORD CASE INTEGER OF '1:(B:BOOLEAN); '2:(A:PACKED ARRAY[0..1] OF BYTE); 'END;  BEGIN  SWLOW:=20000+29187; {GROUPB addr = 00FF C023}  SWHIGH:=255;  UNITREAD(130,SW.A,2,SWLOW,SWHIGH);  SW.B:=NOT(SW.B);  IB_SWITCH:=SW.A[0];  END;      PROCEDURE IB_INIT; {CNTRL,ADDR,CMDWAIT:INTEGER}  {CNTRL = 1 if the SAGE is the controller, else 0  CMDWAIT = Time required for slowest device to do cmd. *Specify in usec, divided by 2}  BEGIN  IB_ERR:=IB_BUS(CNTRL,ADDR,CMDWAIT,INIT);  CHKERR;  END;    PROCEDURE IB_STAT; {(BDEV,STATUS:INTEGER);}  {BDEV = Bus device address (range 0-31) !STATUS = What the device can do - talk, listen,etc}  VAR SW:RECORD CASE INTEGER OF &1:(B1,B0:BYTE); &2:(W:INTEGER); &END;  BEGIN  DEVSTAT.B[BDEV]:=STATUS; {19=Can talk, listen and send SRQ}  BLNG:=1;  IB_ERR:=IB_BUS(DEVSTAT.W[0],BLNG,0,SETSTAT); {Send status to assembly code area}  CHKERR;  END;   PROCEDURE IB_TALK; {(LDEV:INTEGER;VAR TBUF:INTEGER;LNG:INTEGER);}  {LDEV = LISTEN device !TBUF = addr/ptr to start sending data from !LNG = how much data to send}  BEGIN  {set SAGE to talk, LDEV to listen}  BLNG:=1;  IB_ERR:=IB_BUS(LDEV,BLNG,IB_SAGE,SESSION);  CHKERR;  IF IB_ERR=0 THEN "BEGIN $IB_ERR:=IB_BUS(TBUF,LNG,0,ITALK); {start talking} $CHKERR;  END;  END;   PROCEDURE IB_TALKS; {(LDEV:INTEGER;S:STRING:INTEGER);}  {S = up to 80 chars are sent, if listener *requires a terminator other than CR with EOI *it must be part of string.}  VAR DT:PACKED RECORD CASE INTEGER OF %1:(B:PACKED ARRAY[0..79] OF BYTE);  2:(W:PACKED ARRAY[0..39] OF INTEGER); %END; $I,IK:INTEGER; %  BEGIN  FOR I:=0 TO 39 DO DT.W[I]:=0;  IK:=LENGTH(S);  MOVELEFT (S[1],DT,IK);  DT.B[IK]:=13; {TERMINATOR=CR}  IB_TALK(LDEV,DT.W[0],IK);  END;      PROCEDURE IB_HEAR; {(TDEV:INTEGER;VAR LBUF:INTEGER;LNG:INTEGER;MORE:BOOLEAN);}  {TDEV = ADDR/PTR to the talk device. !LBUF = ptr/addr of where to put listen data !LNG = amount of data expected !MORE = we have already setup the session, more data was sent than )the buffer size we had, so we are returning to get the rest )of it.}  BEGIN  IF NOT MORE THEN "BEGIN {Set SAGE to listen, IB_DEV to talk} $BLNG:=1; $IB_ERR:=IB_BUS(IB_SAGE,BLNG,TDEV,SESSION); $CHKERR; {Write an error if not ok} "END ELSE IB_ERR:=0; {Need this for block transfers}  IF IB_ERR=0 THEN "BEGIN $IB_ERR:=IB_BUS(LBUF,LNG,0,IHEAR); {Grab the data} $CHKERR; {Write an error if not ok}  END;  END;     PROCEDURE IB_HEARS; {(TDEV:INTEGER;var S:STRING:INTEGER);}  {TDEV = TALK device  S = up to 80 char are received from the *TALKing device.}  VAR DT:PACKED RECORD CASE INTEGER OF %1:(B:PACKED ARRAY[0..83] OF BYTE); %2:(W:PACKED ARRAY[0..41] OF INTEGER); %END;  IK:INTEGER;  BEGIN  IK:=80; {Max no. of char to put in string}  IB_HEAR(TDEV,DT.W[1],IK,FALSE);  {actual amount sent back in IK}  IF IK>80 THEN "BEGIN $IB_ERR:=50; {Reply bigger than string ...use HEAR} $CHKERR; "END "ELSE $BEGIN &{$R-} &S[0]:=CHR(IK); {Set string length to low byte} &{$R+} &MOVELEFT(DT.B[2],S[1],IK); $END;  END;   PROCEDURE IB_DIR; {RDW,REG:INTEGER;VAR VAL:INTEGER);  {RDW = 0 to read a register in the TMS9914 *1 to write a register !REG = number of register !VAL = value read/written from/to the register}  {note AUX cmd reg=3}   BEGIN  CMD.W[0]:=REG;  CMD.W[1]:=VAL;  BLNG:=1;  IB_ERR:=IB_BUS(CMD.W[0],BLNG,RDW,DIRECT);  CHKERR;  VAL:=CMD.W[1];  END;   FUNCTION IB_CHKSRQ; {BOOLEAN}  {checks for a service request}  CONST HAVESRQ=10;  VAR PDEV,BLNG:INTEGER;  BEGIN  PDEV:=0;  BLNG:=0;  IB_ERR:=IB_BUS(PDEV,BLNG,0,CHKSRQ);  IB_CHKSRQ:=(IB_ERR=HAVESRQ);  {Do not CHKERR here as only HAVESRQ or 0 will ever be returned}  END;   PROCEDURE IB_SPOLL; {(VAR PDEV:INTEGER)}  {PDEV = Serial poll returns addr of device *that requested service here.}  {CHK for SRQ and Do a serial poll to find who sent it. Return dev# in PDEV}  {If previous call told of an SRQ from IB_CHKSRQ above,then do just the poll}  CONST HAVESRQ=10;  BEGIN  PDEV:=0;  BLNG:=0;  IB_ERR:=IB_BUS(PDEV,BLNG,0,SPOLL);  CHKERR;  PDEV:=ORD(ODD(PDEV) AND ODD(31));  END;    BEGIN  FOR I:=0 TO 15 DO DEVSTAT.W[I]:=0;  END. $CURSOR $EQUAL $SYNTAX ēO.¤ÖØ {SAGE II IEEE-488 SUPPORT PACKAGE:   File: IB.EX.TEXT  Date: 17-JUL-82  Version: 1   Copyright (c) 1982 SAGE Computer Technology   }  {This is an example of how to use the IEEE-488 support package}  PROGRAM IB_EX;  {$U IB.UNIT.CODE}  USES IB_UNIT;  CONST MAX=512;  VAR HP1615:INTEGER;  ASCII:CHAR;   PROCEDURE DOINIT;  {Assumes SAGE II is controller}  CONST TLK=1;LST=2;TAK=4;CTR=8;SRQ=16;PP=32;IAM=64;  VAR CONTROL,SW:INTEGER;  BEGIN  IB_CHK:=TRUE; {YES, DO chk and display err msgs}  IB_X:=0; {wrt them at 0,22}  IB_Y:=22;  SW:=IB_SWITCH; {Read GROUP-B switch}  IB_SAGE:=ORD(ODD(SW) AND ODD(31)); { mask off address}  CONTROL:=1; {Send control flag thru}  IB_INIT(CONTROL,SW,23); {1=CONTROLLER,SAGE ADDR, 46 USEC CMD}  IF IB_ERR<>0 THEN EXIT(IB_EX);  IB_STAT(IB_SAGE,TLK+LST+TAK+CTR+IAM);{talk,listen,control,SELF: =79}  HP1615:=15;  IB_STAT(HP1615,TLK+LST+SRQ);{HP1615=DEV 15 can talk,listen, send SRQ =Serial poll by default : = 19}  END;   PROCEDURE GETDATA;  VAR BDATA:PACKED RECORD CASE INTEGER OF &1:(B:PACKED ARRAY[1..MAX] OF 0..255); &2:(W:INTEGER); &END; $MORE:BOOLEAN; $TOTAL,DLNG:INTEGER;   BEGIN  MORE:=FALSE;  DLNG:=MAX; {MAX number of bytes for each call}  TOTAL:=0;  REPEAT "IB_HEAR(HP1615,BDATA.W,DLNG,MORE); "{ SAVE DATA HERE} "MORE:=TRUE;  TOTAL:=TOTAL+DLNG;  UNTIL IB_ERR<>2;  IF IB_ERR<>0 THEN WRITELN('ERR:=',IB_ERR);  WRITELN('TOTAL=',TOTAL);  END; (  PROCEDURE ACTION;  {Wait for SRQ, then Do a serial poll}  CONST NOSRQ=9;  VAR PDEV,SCOUNT:INTEGER;  ACT:STRING;  BEGIN  SCOUNT:=0;  REPEAT "SCOUNT:=SCOUNT+1;  UNTIL (IB_CHKSRQ) OR (SCOUNT>100);  IB_SPOLL(PDEV);  IF PDEV<>HP1615 THEN WRITELN('other SRQ') ELSE WRITELN('FOUND SRQ');  END;   BEGIN  DOINIT;  IB_TALKS(HP1615,'RU;');  IF IB_ERR<>0 THEN EXIT(IB_EX);  IB_TALKS(HP1615,'DS');  IF IB_ERR<>0 THEN EXIT(IB_EX);  ACTION;  IB_CHK:=FALSE; {No error msgs displayed while getting data}  GETDATA;  END.       $CURSOR $EQUAL A B C D °~ā@O.„Ø ;IB.DEF - definitions used by IB.BUS  ;  TRAP0V .EQU 80H ;VECTOR ADDRESS FOR TRAP 0.  ;  ;REFERENCES TO LOCAL VARS:  CONTROL .EQU 0  CMDTIME .EQU 2  ;  ;ERROR CODES RETURNED TO CALLING ROUTINE:  ZERO .EQU 0 ;no error, all done.  BADARG .EQU 1 ;bad call to GPIB  FULL .EQU 2 ;array was full before EOI came in.  RTMOUT .EQU 3 ;timeout occured while listening for byte.  XTMOUT .EQU 4 ;timeout occured while sending byte - no handshake.  NOEOI .EQU 5 ;had timeout while waiting for talker to finish.  NOTALK .EQU 6 ;Talk device is not capable of talking.  NOHEAR .EQU 7 ;Listen dev is not capable of listening.  NOBODY .EQU 8 ;nobody answered the serial poll.  NOSRQ .EQU 9 ;Chked for SRQ ,was none  HAVESRQ .EQU 10 ;Have and SRQ, not expected.    ;  ;Definitions of the registers and commands for the TMS9914.  ;  ;  ; TMS9914 REGISTER ADDRESSES.  ;  BASE .EQU 0C011H ;FFC011 , use A3, base addr of TMS9914  ;  ;Because I/O ports are the upper byte of the address, register addresses must  ;multiplied by 2 to form the correct R0-R3 for the TMS9914.  ;  INTST0 .EQU 00 ;rd - interrupt status reg0  INTMK0 .EQU 00 ;wrt - interrupt mask 0  INTST1 .EQU 2 ;rd - interrupt status reg0  INTMK1 .EQU 2 ;wrt - interrupt mask 0  ADDSTS .EQU 4 ;rd - address status  BUSSTS .EQU 6  ;rd - Bus status  AUXCMD .EQU 6 ;wrt - Auxillary command reg.  ADDSWT .EQU 8 ;rd - external address (dip switch)  ADDRSS .EQU 8 ;wrt - address register  SERPOL .EQU 0AH ;wrt - serial poll reg.  CMDPAS .EQU 0CH ;rd - command pass-thru  PARPOL .EQU 0CH ;wrt - parallel poll  DATIN .EQU 0EH ;rd - data in (rcved) reg.  DATOUT .EQU 0EH ;wrt - data out (to send) reg.  ;  DIPSW .EQU 0C023H ;rd - actual dip switch address  TXCONT .EQU 0C067H ;U37 bit C1 sets bus to xmit or rcv controller sigs.  TXON .EQU 3 ;set for controller operation  TXOFF .EQU 2 ;clr for slave or idle bus   .PAGE  ;  ; TMS9914 AUXILLARY REG COMMANDS ;  SWRST .EQU 80H ;Set software reset clear- chip idle  CLRST .EQU 00H ;Clr reset, enable chip   SDACR .EQU 81H ;Secondary addr valid on pass thru  DACR .EQU 01H ;Release ACDS holdoff   RHDF .EQU 02H ;Rel RFD holdoff on byte caused by HDFA or HDFE   HDFA .EQU 83H ;Holdoff all data (each byte needs RHDF)  CLHDFA .EQU 03H ;Clr holdoff mode   HDFE .EQU 84H ;Holdoff on EOT only (last byte needs RHDF)  CLHDFA .EQU 04H ;CLR holdoff mode.   NBAF .EQU 05H ;New byte available false: byte just put in ?;data reg not to be sent out due to interrupt.   FGET .EQU 86H ;Force group execute trigger  CFGET .EQU 06H ;CLR the FGET or send an FGET pulse.   RTL .EQU 07H ;Return to local   FEOI .EQU 08H ;Send EOT with next byte   LON .EQU 89H ;local listen on LONCLR .EQU 09H ;Clear local listen   TON .EQU 8AH  ;local talk on TONCLR .EQU 0AH ;clear/shut talk function   GTS .EQU 0BH ;go to standby  TCA .EQU 0CH ;take control asynchronously  TCS .EQU 0DH ;Take control synchronously   RPP .EQU 8EH ;Request parallel poll RPPCLR .EQU 0EH ;CLR parallel poll   SIC .EQU 8FH ;set interface clear  SICCLR .EQU 0FH ;end interface clear.   SRE .EQU 90H ;set remote enable  SRECLR .EQU 10H ;end remote enable   RQC .EQU 11H ;request control  RIC .EQU 12H ;release control   DAI .EQU 93H ;disable all interrupts  DAICLR .EQU 13H ;clr disable   PTS .EQU 14H ;Pass thru secondary  STDL .EQU 95H ;Set T1 delay to 6 clock cycles  STDCLR .EQU 15H ;Return to T1=10 clock cycles   SHDW .EQU 96H ;Set shadow handshake  SDWCLR .EQU 16H ;Clr Shadow handshake   VSTDL .EQU 97H ;Varies standard time delay with ATN line ?;and STDL.  CLRVST .EQU 17H ;return T1 to control of STDL.  RSV2 .EQU 18H ;2d request service bit  ;  ;**** T1= settling time allowed at 8mhz **** (  ;VSTDL ATN STDL T1 time First byte T1 time *;0 x 0 1250ns 1250ns *;0 x 1 750ns 750ns *;1 0 0 1250ns 1250ns *;1 0 1 750ns 750ns *;1 1 x 312ns 687ns * *  .PAGE  ; CONTROLLER COMMANDS  ; send command to DATOUT reg. Then Go to Standby (GTS) auxcmd.   ACG .EQU 00H ;Addressed cmd group (add group in 000x)  DCL .EQU 14H ;Device clear  GET .EQU 08H ;Group execute trigger  GTL .EQU 01H ;Go to local  LAG .EQU 20H ;Listen addr group (add group #)  LLO .EQU 11H ;Local lockout  MLA .EQU 20H ;My listen addr (add address)  MTA .EQU 40H ;My talk addr (add address)  MSA .EQU 60H ;My secondary addr (add address)  ;OTA .EQU ;Other talk address = TAG and MTA  PPC .EQU 05H ;Parallel poll configure  PPE .EQU 60H ;Parallel poll enabel (add sense and position  PPD .EQU 70H ;Parallel poll disable  PPU .EQU 15H ;Parallel poll unconfigure  SCG .EQU 60H ;Secondary command group.  SDC .EQU 04H ;Selected device clear  SPD .EQU 19H ;Serial poll disable  SPE .EQU 18H ;Serial poll enable  TCT .EQU 09H ;Take control  TAG .EQU 40H ;Talk address group (add address)  UAG .EQU 10H ;Universal address group ( add address);  UNL .EQU 3FH ;Unlisten 00111111  UNT .EQU 5FH ;Untalk 01011111  ;  ;  ;Locations of prom I/O routines. (Not normally used by the program.)  ZERO .EQU 0  ODD .EQU 1  KEYBCH .EQU 0008H  KEYCHK .EQU 000CH  TERMCHAR .EQU 0014H  TERMHEXB .EQU 0020H  TERMHEXW .EQU 0024H  ;     Nė&`&` `žCopr. (c) 1981 Tallgrass Technologies, 1982 SofTech Microsystems[$$PART----]0:’šg pNO`x0:’č°k€fl :’Ō°Ŗf` :’̰ŖfT>*žz’ĄćOp02xćHŠz’“T€ŠŠ°Œf4`®āH?NÕp?NÕp?NÕp?NÕp?NÕp?NÕp?NÕp?NÕpŠ@>;NópÄČĪŌŚąęģĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀPPPPPPPPPPPPPPPPøøøøøøøøøøøøøøøøpppppppp˜˜˜˜˜˜˜˜ššššššššĀŹŹŹŹŹŹŹ(08ų~ĀŲZH* * Z l tr †€ °ü~Č˜":¬“ņ “( . $  ` f¢ņfÄ  üŲž “ Ą Ģ Ō 6 B Ā č  Ü ī ’ ØXXXXXXī X >ŅŽō ¢XXXXJ Ų J R > h € n Žŗ ž 0 @ Zh0 N T °XX *Ö Z*<–€ X \”” 4XXXp`,p`(p`$p` N«ęp`p `p `p ` p `p`|~B§?Lė\ė‚pa śp` v=|€`=|=k|Aų*Lė\SŒN«ŚaN«ęNÕ<6x vhgNuO÷=G`ø«‚f/ŠBćHt4+|Šv(ŠŽQ€°b Nu =@=k~O÷`ˆ>+|‘Ī=ˆx Aļ‘Ī=ˆx L‘Ź=ˆx=«~x®x«xLė\Nu>+|"_vxvx7vx~<6x(F<6x Aöh<6xOöh/ >+~<6xCöh7vxz<6x>6h<6h¾|g J¶xg$vx`$NÕĘŁŹHė\Nu*šŽJg :6XSfųNuRn*>+~>6x=®*xNu'MpNuN«Ś*kpB«pN«ęNuHzJ«pf*_Nu'_pNuN«Ś«‚fž@«‚f lKśüN«ęNÕHēGśū,kt~>+|Jvxgė‚aŖLßH€Nu @bżīćH>;NópXX?<NÕp?NÕ?œNÕpjįHŠjćH?NÕ@>?0NÕpjįHćH?0NÕ@¾ŠˆŽP@?NÕpjįHćHЈŽP@?NÕ@Ī1ŸNÕpjįHćH1ŸNÕ@^?1NÕpjįHćH?1NÕpjįHćHЉŽP@?NÕpjįHćH3ŸNÕāH@¬až`pjįHćHŚ@?6XNÕažBpjįHćHŚ@?6XNÕaž$pjįHćHŚ@PE?NÕažpjįHćHŚ@=ŸXNÕpćHŠkz>6>6xpjįHćHŽ@PGNuaÖ?6xNÕaĪ?NÕaČ=ŸxNÕ>>¶xNÕ@šŠW>¶NÕpjįH戊W>¶NÕ0>=€xNÕ'LlzjįMprtaü~ŚjŚ@ćMAņX fJ* g 4 įZ?S@fö`? S@fśLė\NÕ'Llprtaü<>Ž@Ž@Aöx? S@fśLė\NÕpćH>7Aöx0ßU@fśB_Lė\NÕ'Ll6h Gg*raūÖ>6h<6h¾|g J¶xg vx` NŃĘ6hAšxNua¶J_pjįH>Cöx2ŲS@fśLė\NÕaJ_p°bū>CöxT@āH`Ųa(fJ_>¼Lė\NÕacīJ_>¼Lė\NÕadÜ`ģ"NJg"J>/Cńx NJg J>/Ašxt“cSBk± VŹ’üf°Nu0>/S@r6x°AdśnNÕ>AöxJgAņx°eśz>CöxR@ŲSfśLė\NÕ>ŽWr6x>NÕ0>Ž_€xNÕ0r’_>46xąjćjāj>‚NÕ02t”_>66xāk±Cåk”Aäk·vxNÕ>AöxgAņx>CöxpjįH fJ* g 2įY2ĮS@fö`2ŲS@fśLė\NÕpjįHć@ŃWNÕpjįH2g @gĀĄćIÓWNÕrt4„ĮćJÕW?HBĀĀ?NÕ H@.€NÕ?NÕ:jAė~` aś >+|AöxćM?0PLė\NÕ8:ałīAė~JEk>+|AöxćM1„Paś NÕpjįHŁĄNÕ R€@’ž(@NŌ(_NÕ0ĮWNÕ0WNÕFWNÕFWWNÕ0°We >¼NÕ0°Wcō>¼NÕJWkNÕDWNÕRWNÕSWNÕ0ŃWNÕ0‘WNÕ0Į×>€NÕJWgų”0/HĄß>€NÕJWgų‚0/HĄ2ĮH@J@jŠA>€NÕ02°WmųV²WnųPNÕ0°Wf >¼NÕ0°Wfō>¼NÕ0°Wlč`ņ0°Woą`źa(fJ_>¼Lė\NÕacīJ_>¼Lė\NÕadÜ`ģ"NJg"J>/Cńx NJg J>/AšxpjįHS@± VČ’üNu'Llr> ‡gBnćOćIA÷C÷p3 UAfś.I`$?rtaų&J_ OćHŸĄ"OJGg2ŲSGfśBYU@fśLė\NÕ'Llp0 @šd÷`čHrta÷ź2p0k÷L°Ab@č˜č™RA6’@Cļ’ž?<’’SAfų OJ@gBgS@fśé˜4įj0‚é™pA4ąjÅQ?Lė\NÕBgNÕ0ćHr27č™ćI²@d47BAé™g O÷>¼NÕO÷>¼NÕa@J@g44…XS@fų`*a0J@g4ÅXS@fųJAgBXSAfś`aJ@g 4FBÅXS@föLė\NÕ0/ćHA÷āH2’@k"_J_NŃ'LlHēĄpAr taöųLßćIC÷4Ō`XB0€ O.I2ŲSBfśBYTAfś`°a®aXS@k 4“XVČ’śf(SAkJXVÉ’üf.I?<`‚aˆa2S@kä4FBÄXVČ’ųgŲ.I?<`’fa’jaS@kŠ4FBÄ_VČ’ųfą`Ā4(’žćJCš NuH€IōNÕ0fī`0gäRŒNÕ0°_fŚ`ō0°_gŅ`ģįHįXIōNÕ0gźTŒNÕ0J* gįXNupjįHŠjćHAņ2aŲ²@m4aв@n’BćIAšaĀIōLė\NÕ(6>*ž@ćO>2xćO02xkFrt(aõ¶ŸĄŸĄŸü šŽ?E‘Ī?H O™Ź?LIņx?k~?k€7C€Hė\/Nuprt(aõpaöpN²xaönLė\|~NÕ>+zŽ@Ž@>6x7G„<6xCöhraõ"'J†>6h<6h¾|g J¶xg$vx`$NÕĘNu*'Llpa’2NÕ* `ī'LlāH@ī`'LlpaõĘŚŽ`Ö*'Llpa‚pažüaõ¾0(HĄŠŠ«†1@>+„7G~7vxz>6xRvxNÕ'LlāH@o`'Llp* @f®r A(b¤ćI>; Gg˜Iģ'LlNóxĀ`6Z†Œņ‚ &Čģ  ü0 X¦jp>ö:'Llpaž¶paōąŚŽ`’&'Ll>/ažØz:/ŚŽp0až LŸ\H§ų O'H\`žž'Ll>(¾k~gažraōØSvx>+„7G~7vxzpjįH>(2(jDA>*žAćO>2xćO>2xžIņx7A€>(ć@Oš AöxHė\NÕpaō0?NÕaō+~>6x vxfR«l=k~`ņŌNÕHē’’Gśļ~,kt|~°|>bćHB…AėŠ:0ŗ|gaŅLßI’Nu°|?fō<+x6h>6h Ggā°6xfÜė‚aóŚ7Gxr26x Ag °6f.`ģ=h=†x`®N«Ś02°|@dćHAėŠ1āHJAVē? OpNNXN«ęLė\NÕz:N«ŚJvXoSvX`aØ=…h>6Xal=‡Xė‚aóPN«ęNÕz:N«ŚaN«ęNÕ vXg6JvXm0<6X=¶hX>+xa&7Gx>+|6h°6xc ė‚aņüNuRvXNu6h$r“|g°6(b246(`ģ=‚h²|g=†Nu>Nu><<+x¼k|g><6h`ņ¾|g=¶hxNu7vhxNuN«ŚNÕN«ęNÕJnfšģNÕ>®NÕ0>Ž_Cöx>Ž_AöxJ@oŲS@fśLė\NÕ0>Ž_Ž@Cöx>Ž_Ž@AöxJ@o S@fśLė\NÕ02>Ž_AöxJAoĄSAfśLė\NÕJ_>Ž_Aöx0246g6mSBJAf °WŹ’üRB`$°VŹ’üRB`RˆFBJAf ° WŹ’üFB`° VŹ’üFB–B>ƒLė\NÕ> 6x"6x<>4°¶xf ²¶xf>¼` k>6x¾|fą>¼`>6x ¾|fŠ>¼’’=‚hNÕ>Aöx>Cöx>)ŃĒEépRG _gö 0e 9c Ae ZbS@mÖĮ`ŅUG3GJ@oü S@fųAép|AćH>;>Eóx"$°f²šf“’g\J`šp*r*`pr3@3ALė\NÕ,6Jh†®ĘøĘĘąźōžĘ:NlŠØ²ĘĘĘAND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROCESS 8PROGRAM !REPEAT RECORD -SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR WHILE WITH **0<>¾|g J¶xg vx` NŃĘ>Cöx`"0<>¾|g J¶xg"vx`"NÓĘ>AöxJ@gŲS@fśLė\NÕ0<ćN>>6xÜvx>6x¾|g J¶xg vx` NŃĘJ@g 2įY0ĮS@föLė\NÕ<>¾|g J¶xg vx` NŃĘ>p06x<6x>6x¾|g J¶xg"vx`"NÓʱÉgc2ŲS@fś` ćHŃĄÓĄ3 U@fśLė\NÕ>p06x>6x<6x>6x¾|g J¶xg vx` NŃĘ>(g@ćOCšx2!įYJg2SgSg>!ćO“Ē`čąIćIŅ@>>6x26x4!JBgŅ>!ÓpxSBfö`ĘLė\NÕ>>6x<6x?6hp06x<6x¼|g J¶hg vh` NŃĄ/06xćH??6xBgN«:>®NÕPTX\~ ž ž $(,~ $(,~ž048<ž048<žhlptž@DHL~N«¤Lė\NuN«ØLė\NupEėN« >=«x>=«xLė\NÕB« B«B+?<a0?<a(?.a Nuė _pr468$_:/?`Xė _pr:/?`Dpr`>p4>Eöxrf,r`(pr`pr468>Ž_Eöx`J_BW`J_r`“'Ll:«Aś’Jk‚ c.ŗne<šnŗ..e:š..ŗ./dvŗ<dn<VFAśžÖ`LėēMAśž€AšPęM`8_EAśž’`0Śn<ĢüÜn,Jvh g*¶vh d&Övh:6h ŗnd`€(g>(Nóxr ` r`r`rĀ|’=ALė\B‡B†«gNuNÕ+g(IėD~0Aė|N“p`Ā+g(IėD~0ŁĒrJg4S@gųS@g`".+ ‡'G .+ ‡'GAīCėęN”`’xN”`’rJDg’l+‚f’TN”Jf’Z.+ g ae zb f>°.\fJg .+ G'G `“°.Sf"€gŗ<f’+g’ üSDfų`žžĄSD f‚+g’z+‚fžŠN¬JfžŌ  f’\f’Tp +‚fžŖN¬Jfž®`’:JDgž¤SD.+ g* ‡'GvC oŽp +‚fžnN”JfžtSCfč`Äf f .+ Ē'G`¬+‚fž`č`č`č`.`F`B`D`X```Ā`†`ī`pNNNupNNNuNIrNuNJrNup /Aś’Ś!I"_CéR!I’ü!I 0¼NNrNuDA Ab;NurNu p `p `p XEŗ|cVEAś’€0…Bh1D!J1C Bh1BNN2(k¤Nup `Ōp `Šp `Ģg:<`::<>+| 6xf*a’$<Ą+‚f Aś’"0¼ƒp NNa’` XEŗ|cVEp Aś’0…1B!JNN2(k’8Nur NuNKrNuNLrNu B’bNMrNuAśžĪ0…!|Hh!_@1C 1B/p NN `Šp Aśž 0…NN2(kžÜNuAśžŽ0…P!|Hh!_@1C 1B/p NN 2(kž¤NuAśžV0…P!|Hh!_1C 1Bp NN(2(kžpNuAśž"0…Pp NN2(kžXNuAśž 0…P1B!Jp NN2(kž8NupNN`śpNNAė|pNNAś*pNNrNu +(«$4€AśżĀpNN5h5PBANuJPfhNu,o =_7_zJigŠOļ’Ü?|?|?|?|?|?| ?i0+<ŠQ?@?n?|?|?|?| ?|"Oļ’ö?nd?kzEļ •Ī?J?|?|Eź’ö0ŹCéSEf’h~>.~>6x=¼x=¼’’x x86xćLŸÄ$O•Ī=Šx?.Ho??6xBgN«:Jnf\Oļ’ö'O\ O‘Ī?H?H?|?|?|~>.œ>6xx86xćLŸÄ$O•Ī=Šx?.Ho??6xBgN«:JnfžJ/ g>0/įX?@~>/į_?GćOA÷x0įX0€J@g>(’žį_1ćO27xįY?xS@fčBk‚B«pBn=kV8=|6AėŠp@0üS@fųAī`1||€1|1|1|1|‘Ī7H|7Hx~>.dCöx=‡xAų=ˆx Žk>Žk>Ž| =GdAų|7Hz7nœ~7|€ k\$OHė\~|>*ćO>2xžćOIņxKėņNÕAśgNJ`ųpNN Error reading boot device Nė&4`&` `žCopr. (c) 1981 Tallgrass Technologies, 1982 SofTech Microsystems[$$PART----]0:’šg pNO`x0:’č°k"Žfl :’Ō°Ŗf` :’̰ŖfT>*žz’ĄćOp02xćHŠz’“T€ŠŠ°Œf4`®āH?NÕp?NÕp?NÕp?NÕp?NÕp?NÕp?NÕp?NÕpŠ@>;NópÄČĪŌŚąęģĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀPPPPPPPPPPPPPPPPøøøøøøøøøøøøøøøøpppppppp˜˜˜˜˜˜˜˜ššššššššĀŹŹŹŹŹŹŹ(08ų~ĀŲZH* * Z l tr †€ °ü~Č˜":¬“ņ “( . $  ` f¢ņfÄ  üŲž “ Ą Ģ Ō 6 B Ā č  Ü ī ’ Ø!f!t!! !!ī !” >ŅŽō ¢!Z! h € n Žŗ ž 0 @ Zh0 N T °!"!* *Ö Z*<–€ X \”” 4!˜!Ø!°p`,p`(p`$p` N«ęp`p `p `p ` p `p`|~B§?Lė"jė"pa śp` v=|€`=|=k"ŠAų*Lė"jSŒN«ŚaN«ęNÕ<6x vhgNuO÷=G`ø«"f/ŠBćHt4+"ŠŠv(ŠŽQ€°b Nu =@=k"ŒO÷`ˆ>+"Š‘Ī=ˆx Aļ‘Ī=ˆx L‘Ź=ˆx=«"Œx®x«"xLė"jNu>+"Š"_vxvx"7vx"Œ<6x(F<6x Aöh<6xOöh/ >+"Œ<6xCöh7vx"ˆ<6x>6h<6h¾|g J¶xg$vx`$NÕĘŁŹHė"jNu*šŽJg :6XSfųNuRn*>+"Œ>6x=®*xNu'M"~NuN«Ś*k"~B«"~N«ęNuHzJ«"~f*_Nu'_"~NuN«Ś«"fž@«"f lKśüN«ęNÕHēGśū,k"‚~>+"ŠJvxgė"aŖLßH€Nu @bżīćH>;NóprŒ?<NÕp?NÕ?œNÕpjįHŠjćH?NÕ@>?0NÕpjįHćH?0NÕ@¾ŠˆŽP@?NÕpjįHćHЈŽP@?NÕ@Ī1ŸNÕpjįHćH1ŸNÕ@^?1NÕpjįHćH?1NÕpjįHćHЉŽP@?NÕpjįHćH3ŸNÕāH@¬až`pjįHćHŚ@?6XNÕažBpjįHćHŚ@?6XNÕaž$pjįHćHŚ@PE?NÕažpjįHćHŚ@=ŸXNÕpćHŠk"ˆ>6>6xpjįHćHŽ@PGNuaÖ?6xNÕaĪ?NÕaČ=ŸxNÕ>>¶xNÕ@šŠW>¶NÕpjįH戊W>¶NÕ0>=€xNÕ'L"zzjįMprtaü~ŚjŚ@ćMAņX fJ* g 4 įZ?S@fö`? S@fśLė"jNÕ'L"zprtaü<>Ž@Ž@Aöx? S@fśLė"jNÕpćH>7Aöx0ßU@fśB_Lė"jNÕ'L"z6h Gg*raūÖ>6h<6h¾|g J¶xg vx` NŃĘ6hAšxNua¶J_pjįH>Cöx2ŲS@fśLė"jNÕaJ_p°bū>CöxT@āH`Ųa(fJ_>¼Lė"jNÕacīJ_>¼Lė"jNÕadÜ`ģ"NJg"J>/Cńx NJg J>/Ašxt“cSBk± VŹ’üf°Nu0>/S@r6x°AdśnNÕ>AöxJgAņx°eśz>CöxR@ŲSfśLė"jNÕ>ŽWr6x>NÕ0>Ž_€xNÕ0r’_>46xąjćjāj>‚NÕ02t”_>66xāk±Cåk”Aäk·vxNÕ>AöxgAņx>CöxpjįH fJ* g 2įY2ĮS@fö`2ŲS@fśLė"jNÕpjįHć@ŃWNÕpjįH2g @gĀĄćIÓWNÕrt4„ĮćJÕW?HBĀĀ?NÕ H@.€NÕ?NÕ:jAė"Œ` aś >+"ŠAöxćM?0PLė"jNÕ8:ałīAė"ŒJEk>+"ŠAöxćM1„Paś NÕpjįHŁĄNÕ R€@’ž(@NŌ(_NÕ0ĮWNÕ0WNÕFWNÕFWWNÕ0°We >¼NÕ0°Wcō>¼NÕJWkNÕDWNÕRWNÕSWNÕ0ŃWNÕ0‘WNÕ0Į×>€NÕJWgų”0/HĄß>€NÕJWgų‚0/HĄ2ĮH@J@jŠA>€NÕ02°WmųV²WnųPNÕ0°Wf >¼NÕ0°Wfō>¼NÕ0°Wlč`ņ0°Woą`źa(fJ_>¼Lė"jNÕacīJ_>¼Lė"jNÕadÜ`ģ"NJg"J>/Cńx NJg J>/AšxpjįHS@± VČ’üNu'L"zr> ‡gBnćOćIA÷C÷p3 UAfś.I`$?rtaų&J_ OćHŸĄ"OJGg2ŲSGfśBYU@fśLė"jNÕ'L"zp0 @šd÷`čHrta÷ź2p0k÷L°Ab@č˜č™RA6’@Cļ’ž?<’’SAfų OJ@gBgS@fśé˜4įj0‚é™pA4ąjÅQ?Lė"jNÕBgNÕ0ćHr27č™ćI²@d47BAé™g O÷>¼NÕO÷>¼NÕa@J@g44…XS@fų`*a0J@g4ÅXS@fųJAgBXSAfś`aJ@g 4FBÅXS@föLė"jNÕ0/ćHA÷āH2’@k"_J_NŃ'L"zHēĄpAr taöųLßćIC÷4Ō`XB0€ O.I2ŲSBfśBYTAfś`°a®aXS@k 4“XVČ’śf(SAkJXVÉ’üf.I?<`‚aˆa2S@kä4FBÄXVČ’ųgŲ.I?<`’fa’jaS@kŠ4FBÄ_VČ’ųfą`Ā4(’žćJCš NuH€IōNÕ0fī`0gäRŒNÕ0°_fŚ`ō0°_gŅ`ģįHįXIōNÕ0gźTŒNÕ0J* gįXNupjįHŠjćHAņ2aŲ²@m4aв@n’BćIAšaĀIōLė"jNÕ(6>*ž@ćO>2xćO02xkFrt(aõ¶ŸĄŸĄŸü šŽ?E‘Ī?H O™Ź?LIņx?k"Œ?k"Ž7C"ŽHė"j/Nuprt(aõpaöpN²xaönLė"j|~NÕ>+"ˆŽ@Ž@>6x7G"’<6xCöhraõ"'J"”>6h<6h¾|g J¶xg$vx`$NÕĘNu*'L"zpa’2NÕ* `ī'L"zāH@ī`'L"zpaõĘŚŽ`Ö*'L"zpa‚pažüaõ¾0(HĄŠŠ«"”1@>+"’7G"Œ7vx"ˆ>6xRvxNÕ'L"zāH@o`'L"zp* @f®r A(b¤ćI>; Gg˜Iģ'L"zNóxĀ`6Z†Œņ‚ &Čģ  ü0 !¼¦jp>ö:'L"zpaž¶paōąŚŽ`’&'L"z>/ažØz:/ŚŽp0až LŸ\H§ų O'H"j`žž'L"z>(¾k"ŒgažraōØSvx>+"’7G"Œ7vx"ˆpjįH>(2(jDA>*žAćO>2xćO>2xžIņx7A"Ž>(ć@Oš AöxHė"jNÕpaō0?NÕaō+"Œ>6x vxfR«"z=k"Œ`ņŌNÕHē’’Gśļ~,k"‚|~°|>bćHB…Aė"˜:0ŗ|gaŅLßI’Nu°|?fō<+"†6h>6h Ggā°6xfÜė"aóŚ7G"†r26x Ag °6f.`ģ=h=†x`®N«Ś02°|@dćHAė"˜1āHJAVē? OpNNXN«ęLė"jNÕz:N«ŚJvXoSvX`aØ=…h>6Xal=‡Xė"aóPN«ęNÕz:N«ŚaN«ęNÕ vXg6JvXm0<6X=¶hX>+"†a&7G"†>+"Š6h°6xc ė"aņüNuRvXNu6h$r“|g°6(b246(`ģ=‚h²|g=†Nu>Nu><<+"†¼k"Šg><6h`ņ¾|g=¶hxNu7vh"†NuN«ŚNÕN«ęNÕJnfšģNÕ>®NÕ0>Ž_Cöx>Ž_AöxJ@oŲS@fśLė"jNÕ0>Ž_Ž@Cöx>Ž_Ž@AöxJ@o S@fśLė"jNÕ02>Ž_AöxJAoĄSAfśLė"jNÕJ_>Ž_Aöx0246g6mSBJAf °WŹ’üRB`$°VŹ’üRB`RˆFBJAf ° WŹ’üFB`° VŹ’üFB–B>ƒLė"jNÕ> 6x"6x<>4°¶xf ²¶xf>¼` k>6x¾|fą>¼`>6x ¾|fŠ>¼’’=‚hNÕ>Aöx>Cöx>)ŃĒEépRG _gö 0e 9c Ae ZbS@mÖĮ`ŅUG3GJ@oü S@fųAép|AćH>;>Eóx"$°f²šf“’g\J`šp*r*`pr3@3ALė"jNÕ,6Jh†®ĘøĘĘąźōžĘ:NlŠØ²ĘĘĘAND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROCESS 8PROGRAM !REPEAT RECORD -SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR WHILE WITH **0<>¾|g J¶xg vx` NŃĘ>Cöx`"0<>¾|g J¶xg"vx`"NÓĘ>AöxJ@gŲS@fśLė"jNÕ0<ćN>>6xÜvx>6x¾|g J¶xg vx` NŃĘJ@g 2įY0ĮS@föLė"jNÕ<>¾|g J¶xg vx` NŃĘ>p06x<6x>6x¾|g J¶xg"vx`"NÓʱÉgc2ŲS@fś` ćHŃĄÓĄ3 U@fśLė"jNÕ>p06x>6x<6x>6x¾|g J¶xg vx` NŃĘ>(g@ćOCšx2!įYJg2SgSg>!ćO“Ē`čąIćIŅ@>>6x26x4!JBgŅ>!ÓpxSBfö`ĘLė"jNÕ>>6x<6x?6hp06x<6x¼|g J¶hg vh` NŃĄ/06xćH??6xBgN«:>®NÕPTX\~ ž ž $(,~ $(,~ž048<ž048<žhlptž@DHL~N«#²Lė"jNuN«#¶Lė"jNupEė#$N«#®>=«#&x>=«#(xLė"jNÕB«#B«#B+# ?<a0?<a(?.a Nuė# _pr468$_:/?`Xė# _pr:/?`Dpr`>p4>Eöxrf,r`(pr`pr468>Ž_Eöx`J_BW`J_r`“'L"z:«# Aś’Jk‚ c.ŗne<šnŗ..e:š..ŗ./dvŗ<dn<VFAśžÖ`Lė# ēMAśž€AšPęM`8_EAśž’`0Śn<ĢüÜn,Jvh g*¶vh d&Övh:6h ŗnd`€(g>(Nóxr ` r`r`rĀ|’=ALė"jB‡B†«# gNuNÕ+# g(Iė#R~0Aė|N“p`Ā+# g(Iė#R~0ŁĒrJg4S@gųS@g`".+# ‡'G#.+# ‡'G#AīCėęN”`’xN”`’rJDg’l+"f’TN”Jf’Z.+# g ae zb f>°.\fJg .+# G'G#`“°.Sf"€gŗ<f’+# g’ üSDfų`žžĄSD f‚+# g’z+"fžŠN¬JfžŌ  f’\f’Tp +"fžŖN¬Jfž®`’:JDgž¤SD.+# g* ‡'G#vC oŽp +"fžnN”JfžtSCfč`Äf f .+# Ē'G#`¬+"fžaNśŚx JBk&“Dm J€fD”DĆ@`ņåøå¹xå¤S„$Ąf.ȁ¹€„`$DB“Dm"B€”D`ōxå¤S„F„„Ȁ¹€‚€ä¼ä¹ B‚NuJBj RBa¤ā€ā‘Ó‚Ń‚Nu"/Nŗ~aäa’\/A.ŸNu"/NŗhaĪ`JBk’tNu"/NŗTaīNŗø/A.ŸNu"/HA.ŸNŗ:aŌNŗžHA/ANu"/HA.ŸNŗ a†`äHēüLļ*³…ć€ć°cĮAį˜į™BDBCŲC²<’gDJgR<ā˜<ā™46H@HAĘĄÄĮĄĮւ×CHCЃD~Nŗ€ą˜ć•ā/@ Lß?.ŸNuBJfJ€g<’ `ÜJ€gŲJj¬0<€į€į€0<`ĢB€`ĀHēü / "/ć˜ć™³į˜į™BCBD@žAžRSDoHRRSCoPRä™č˜˜C6HA€Į4ĘĀB@ƒä€ĮHĀHĄHB倊‚ć€DNŗŽą˜āā/@ Lß?.ŸNufć˜`“øg&J€g` gJf`JgJ€f B€`ŹJ€g <’`¾²€eJgĆ@ąˆāˆ`p€ŗ`¬€oHēžLļ ć€UĀćUưcĮAÅCį™į˜B…BDfJ€gvJf“fŅ€Ó`j’€`f<ā˜<ā™ ’gf<œD FmQFąˆfō쨓fŅ€d$ā‘REŗ|’m``’€kgVć[Ķ’üSEngBEā‰ā‰€d ā‘RE E’g6批™āā‘/A$Lß.ŸNuć‰Jfęŗfā“gŽ2<€įį2<`ŲB`Ō"<’`Ę/_Nŗ’//BÆ-////aPdÆ /°ŗ:l/o.Ÿ Nu-////a&dÆ /°ŗo/o.Ÿ Nu€€HēąLļ$ĀkĮA°<@ļćˆć‰°dĮA°ŗ c?|J€f?|Lß/_TNw’ÆNu"/a oHB4HŠ _PNŠ&HCć‰į™BBf<Jg*<`$“<’f4<`B<Jg<`<SB<B•ā™ą‰B€Nu oLŠ6HB o Nuaģa  _PNŠ8 m ‚ŗ2戊`$J€g PDą™ąˆfö gkSDćˆjśDža&ą˜"ćKā‘Nu’åļåļäļ/o .Ÿ.ŸNuJ€kSDćˆJDn D’čm4DRčØBD€€dāRD D’lćˆdNuĄŗg JDgņ < ’NuB€Nu <’Nu’’žpjįHNuLļH@HAHļNu H@.€°|€gNÕNė aŚaüś`ęaŅaüģ`ŽaŹaū†`ÖaĀaü`ĪÆNÕoNÕ?<NÕBgNÕa až gī`ņa–ažoä`čaŒażölŚ`Ž0HĄ/ałö`Š H@/aś` H@B§/aś“ H@R@°|b’rH@?NÕ/NÕa’4ŠjćH/2NÕ>/6xNÕ>/-ŸxTNÕ0°|&b’:åH.»NÕ?€A BČDz@FPGĆ$It–€K¼ L¾k(NnłPC·QŗŌ„Sh„ēUę!Vµ_©XcŹZ¢½[± l]^Ē$_ xķ`­×(bX†ydhe©ĀgSYRio§j„Ė‘lN?;n o”ņĶqIo€rüŰt7vE„ćwöyš—Ņ{@½Ē|švœ~–`–`˜`š`(`†`†`Ę`^`Ģ`Ģ`Ģ`D`p`r`¦`>`č`č`č`.`F`B`D`X```Ā`†`ī`pNNNupNNNuNIrNuNJrNup /Aś’Ś!I"_CéR!I’ü!I 0¼NNrNuDA Ab;NurNu p `p `p XEŗ|cVEAś’€0…Bh1D!J1C Bh1BNN2(k¤Nup `Ōp `Šp `Ģg:<`::<>+"Š 6xf*a’$<Ą+"f Aś’"0¼ƒp NNa’` XEŗ|cVEp Aś’0…1B!JNN2(k’8Nur NuNKrNuNLrNu B’bNMrNuAśžĪ0…!|Hh!_@1C 1B/p NN `Šp Aśž 0…NN2(kžÜNuAśžŽ0…P!|Hh!_@1C 1B/p NN 2(kž¤NuAśžV0…P!|Hh!_1C 1Bp NN(2(kžpNuAśž"0…Pp NN2(kžXNuAśž 0…P1B!Jp NN2(kž8NupNN`śpNNAė|pNNAś*pNNrNu +#6«#24€AśżĀpNN5h5PBANuJPfh#"Nu,o =_7_#JLß’Hė’#*.k#6=| B..B./&k#*Hė"j'N"‚ė"~N«.k#6Aī|p 0Ą0üS@fųAų|7H"ˆ·ė#2e·ė#6d Aś’”CśČ`Aī¾"H‘Ī=Hd'I#N|]?./+#N?<?+#JBgN«:Jnfb k#NJ(žg0<’2įY0ĮS@föAī~"k#N7i #LzJigŠOļ’Ü?|?|?|?|?|?| ?i0+#JŠQ?@?n?|?|?|?| ?|"Oļ’ö?nd?k"ˆEļ •Ī?J?|?|Eź’ö0ŹCéSEf’h~>.~>6x=¼x=¼’’x x86xćLŸÄ$O•Ī=Šx?.Ho??6xBgN«:Jnf\Oļ’ö'O"j O‘Ī?H?H?|?|?|~>.œ>6xx86xćLŸÄ$O•Ī=Šx?.Ho??6xBgN«:JnfžJ/ g>0/įX?@~>/į_?GćOA÷x0įX0€J@g>(’žį_1ćO27xįY?xS@fčBk"B«"~Bn=kV8=|6Aė"˜p@0üS@fųAī`1||€1|1|1|1|‘Ī7H"Š7H"†~>.dCöx=‡xAų=ˆx Žk#LŽk#LŽ| =GdAų|7H"ˆ7nœ"Œ7|"Ž k"j$OHė"j~|>*ćO>2xžćOIņxKėņNÕAśgNJ`ųpNN Error reading boot device Nė*¤`&` `žCopr. (c) 1981 Tallgrass Technologies, 1982 SofTech Microsystems[$$PART----]0:’šg pNO`x0:’č°k&žfl :’Ō°Ŗf` :’̰ŖfT>*žz’ĄćOp02xćHŠz’“T€ŠŠ°Œf4`®āH?NÕp?NÕp?NÕp?NÕp?NÕp?NÕp?NÕp?NÕpŠ@>;NópÄČĪŌŚąęģĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀPPPPPPPPPPPPPPPPøøøøøøøøøøøøøøøøpppppppp˜˜˜˜˜˜˜˜ššššššššĀŹŹŹŹŹŹŹ(08ų~ĀŲZH* * Z l tr †€ °ü~Č˜":¬“ņ “( . $  ` f¢ņfÄ  üŲž “ Ą Ģ Ō 6 B Ā č  Ü ī ’ Ø%%$ $Ø$°$øī %F >ŅŽō ¢$ś$Ś$ä$īJ Ų J R > h € n Žŗ ž 0 @ Zh0 N T °$Ą$Č *Ö Z*<–€ X \”” 4%P%d%pp`,p`(p`$p` N«ęp`p `p `p ` p `p`|~B§?Lė&Śė'pa śp` v=|€`=|=k&śAų*Lė&ŚSŒN«ŚaN«ęNÕ<6x vhgNuO÷=G`ø«'f/ŠBćHt4+&śŠv(ŠŽQ€°b Nu =@=k&üO÷`ˆ>+&ś‘Ī=ˆx Aļ‘Ī=ˆx L‘Ź=ˆx=«&üx®x«&’xLė&ŚNu>+&ś"_vxvx&’7vx&ü<6x(F<6x Aöh<6xOöh/ >+&ü<6xCöh7vx&ų<6x>6h<6h¾|g J¶xg$vx`$NÕĘŁŹHė&ŚNu*šŽJg :6XSfųNuRn*>+&ü>6x=®*xNu'M&īNuN«Ś*k&īB«&īN«ęNuHzJ«&īf*_Nu'_&īNuN«Ś«'fž@«'f lKśüN«ęNÕHēGśū,k&ņ~>+&śJvxgė'aŖLßH€Nu @bżīćH>;Nóp H r?<NÕp?NÕ?œNÕpjįHŠjćH?NÕ@>?0NÕpjįHćH?0NÕ@¾ŠˆŽP@?NÕpjįHćHЈŽP@?NÕ@Ī1ŸNÕpjįHćH1ŸNÕ@^?1NÕpjįHćH?1NÕpjįHćHЉŽP@?NÕpjįHćH3ŸNÕāH@¬až`pjįHćHŚ@?6XNÕažBpjįHćHŚ@?6XNÕaž$pjįHćHŚ@PE?NÕažpjįHćHŚ@=ŸXNÕpćHŠk&ų>6>6xpjįHćHŽ@PGNuaÖ?6xNÕaĪ?NÕaČ=ŸxNÕ>>¶xNÕ@šŠW>¶NÕpjįH戊W>¶NÕ0>=€xNÕ'L&źzjįMprtaü~ŚjŚ@ćMAņX fJ* g 4 įZ?S@fö`? S@fśLė&ŚNÕ'L&źprtaü<>Ž@Ž@Aöx? S@fśLė&ŚNÕpćH>7Aöx0ßU@fśB_Lė&ŚNÕ'L&ź6h Gg*raūÖ>6h<6h¾|g J¶xg vx` NŃĘ6hAšxNua¶J_pjįH>Cöx2ŲS@fśLė&ŚNÕaJ_p°bū>CöxT@āH`Ųa(fJ_>¼Lė&ŚNÕacīJ_>¼Lė&ŚNÕadÜ`ģ"NJg"J>/Cńx NJg J>/Ašxt“cSBk± VŹ’üf°Nu0>/S@r6x°AdśnNÕ>AöxJgAņx°eśz>CöxR@ŲSfśLė&ŚNÕ>ŽWr6x>NÕ0>Ž_€xNÕ0r’_>46xąjćjāj>‚NÕ02t”_>66xāk±Cåk”Aäk·vxNÕ>AöxgAņx>CöxpjįH fJ* g 2įY2ĮS@fö`2ŲS@fśLė&ŚNÕpjįHć@ŃWNÕpjįH2g @gĀĄćIÓWNÕrt4„ĮćJÕW?HBĀĀ?NÕ H@.€NÕ?NÕ:jAė&ü` aś >+&śAöxćM?0PLė&ŚNÕ8:ałīAė&üJEk>+&śAöxćM1„Paś NÕpjįHŁĄNÕ R€@’ž(@NŌ(_NÕ0ĮWNÕ0WNÕFWNÕFWWNÕ0°We >¼NÕ0°Wcō>¼NÕJWkNÕDWNÕRWNÕSWNÕ0ŃWNÕ0‘WNÕ0Į×>€NÕJWgų”0/HĄß>€NÕJWgų‚0/HĄ2ĮH@J@jŠA>€NÕ02°WmųV²WnųPNÕ0°Wf >¼NÕ0°Wfō>¼NÕ0°Wlč`ņ0°Woą`źa(fJ_>¼Lė&ŚNÕacīJ_>¼Lė&ŚNÕadÜ`ģ"NJg"J>/Cńx NJg J>/AšxpjįHS@± VČ’üNu'L&źr> ‡gBnćOćIA÷C÷p3 UAfś.I`$?rtaų&J_ OćHŸĄ"OJGg2ŲSGfśBYU@fśLė&ŚNÕ'L&źp0 @šd÷`čHrta÷ź2p0k÷L°Ab@č˜č™RA6’@Cļ’ž?<’’SAfų OJ@gBgS@fśé˜4įj0‚é™pA4ąjÅQ?Lė&ŚNÕBgNÕ0ćHr27č™ćI²@d47BAé™g O÷>¼NÕO÷>¼NÕa@J@g44…XS@fų`*a0J@g4ÅXS@fųJAgBXSAfś`aJ@g 4FBÅXS@föLė&ŚNÕ0/ćHA÷āH2’@k"_J_NŃ'L&źHēĄpAr taöųLßćIC÷4Ō`XB0€ O.I2ŲSBfśBYTAfś`°a®aXS@k 4“XVČ’śf(SAkJXVÉ’üf.I?<`‚aˆa2S@kä4FBÄXVČ’ųgŲ.I?<`’fa’jaS@kŠ4FBÄ_VČ’ųfą`Ā4(’žćJCš NuH€IōNÕ0fī`0gäRŒNÕ0°_fŚ`ō0°_gŅ`ģįHįXIōNÕ0gźTŒNÕ0J* gįXNupjįHŠjćHAņ2aŲ²@m4aв@n’BćIAšaĀIōLė&ŚNÕ(6>*ž@ćO>2xćO02xkFrt(aõ¶ŸĄŸĄŸü šŽ?E‘Ī?H O™Ź?LIņx?k&ü?k&ž7C&žHė&Ś/Nuprt(aõpaöpN²xaönLė&Ś|~NÕ>+&ųŽ@Ž@>6x7G'<6xCöhraõ"'J'>6h<6h¾|g J¶xg$vx`$NÕĘNu*'L&źpa’2NÕ* `ī'L&źāH@ī`'L&źpaõĘŚŽ`Ö*'L&źpa‚pažüaõ¾0(HĄŠŠ«'1@>+'7G&ü7vx&ų>6xRvxNÕ'L&źāH@o`'L&źp* @f®r A(b¤ćI>; Gg˜Iģ'L&źNóxĀ`6Z†Œņ‚ &Čģ  ü0 %€¦jp>ö:'L&źpaž¶paōąŚŽ`’&'L&ź>/ažØz:/ŚŽp0až LŸ\H§ų O'H&Ś`žž'L&ź>(¾k&ügažraōØSvx>+'7G&ü7vx&ųpjįH>(2(jDA>*žAćO>2xćO>2xžIņx7A&ž>(ć@Oš AöxHė&ŚNÕpaō0?NÕaō+&ü>6x vxfR«&ź=k&ü`ņŌNÕHē’’Gśļ~,k&ņ|~°|>bćHB…Aė':0ŗ|gaŅLßI’Nu°|?fō<+&ö6h>6h Ggā°6xfÜė'aóŚ7G&ör26x Ag °6f.`ģ=h=†x`®N«Ś02°|@dćHAė'1āHJAVē? OpNNXN«ęLė&ŚNÕz:N«ŚJvXoSvX`aØ=…h>6Xal=‡Xė'aóPN«ęNÕz:N«ŚaN«ęNÕ vXg6JvXm0<6X=¶hX>+&öa&7G&ö>+&ś6h°6xc ė'aņüNuRvXNu6h$r“|g°6(b246(`ģ=‚h²|g=†Nu>Nu><<+&ö¼k&śg><6h`ņ¾|g=¶hxNu7vh&öNuN«ŚNÕN«ęNÕJnfšģNÕ>®NÕ0>Ž_Cöx>Ž_AöxJ@oŲS@fśLė&ŚNÕ0>Ž_Ž@Cöx>Ž_Ž@AöxJ@o S@fśLė&ŚNÕ02>Ž_AöxJAoĄSAfśLė&ŚNÕJ_>Ž_Aöx0246g6mSBJAf °WŹ’üRB`$°VŹ’üRB`RˆFBJAf ° WŹ’üFB`° VŹ’üFB–B>ƒLė&ŚNÕ> 6x"6x<>4°¶xf ²¶xf>¼` k>6x¾|fą>¼`>6x ¾|fŠ>¼’’=‚hNÕ>Aöx>Cöx>)ŃĒEépRG _gö 0e 9c Ae ZbS@mÖĮ`ŅUG3GJ@oü S@fųAép|AćH>;>Eóx"$°f²šf“’g\J`šp*r*`pr3@3ALė&ŚNÕ,6Jh†®ĘøĘĘąźōžĘ:NlŠØ²ĘĘĘAND 'ARRAY ,BEGIN CASE CONST DIV 'DO DOWNTO ELSE END EXTERNAL5FOR FILE .FORWARD "FUNCTION GOTO IF IMPLEMEN4IN )INTERFAC3LABEL MOD 'NOT &OF OR (PACKED +PROCEDURPROCESS 8PROGRAM !REPEAT RECORD -SET *SEGMENT !SEPARATE6THEN TO TYPE UNIT 2UNTIL USES 1VAR WHILE WITH **0<>¾|g J¶xg vx` NŃĘ>Cöx`"0<>¾|g J¶xg"vx`"NÓĘ>AöxJ@gŲS@fśLė&ŚNÕ0<ćN>>6xÜvx>6x¾|g J¶xg vx` NŃĘJ@g 2įY0ĮS@föLė&ŚNÕ<>¾|g J¶xg vx` NŃĘ>p06x<6x>6x¾|g J¶xg"vx`"NÓʱÉgc2ŲS@fś` ćHŃĄÓĄ3 U@fśLė&ŚNÕ>p06x>6x<6x>6x¾|g J¶xg vx` NŃĘ>(g@ćOCšx2!įYJg2SgSg>!ćO“Ē`čąIćIŅ@>>6x26x4!JBgŅ>!ÓpxSBfö`ĘLė&ŚNÕ>>6x<6x?6hp06x<6x¼|g J¶hg vh` NŃĄ/06xćH??6xBgN«:>®NÕPTX\~ ž ž $(,~ $(,~ž048<ž048<žhlptž@DHL~N«("Lė&ŚNuN«(&Lė&ŚNupEė'”N«(>=«'–x>=«'˜xLė&ŚNÕB«'ˆB«'ŒB+'?<a0?<a(?.a Nuė' _pr468$_:/?`Xė' _pr:/?`Dpr`>p4>Eöxrf,r`(pr`pr468>Ž_Eöx`J_BW`J_r`“'L&ź:«'Aś’Jk‚ c.ŗne<šnŗ..e:š..ŗ./dvŗ<dn<VFAśžÖ`Lė'ēMAśž€AšPęM`8_EAśž’`0Śn<ĢüÜn,Jvh g*¶vh d&Övh:6h ŗnd`€(g>(Nóxr ` r`r`rĀ|’=ALė&ŚB‡B†«'gNuNÕ+'g(Iė'Ā~0Aė|N“p`Ā+'g(Iė'Ā~0ŁĒrJg4S@gųS@g`".+'ˆ ‡'G'ˆ.+'Œ ‡'G'ŒAīCėęN”`’xN”`’rJDg’l+'f’TN”Jf’Z.+'ˆ g ae zb f>°.\fJg .+'ˆ G'G'ˆ`“°.Sf"€gŗ<f’+'g’ üSDfų`žžĄSD f‚+'g’z+'fžŠN¬JfžŌ  f’\f’Tp +'fžŖN¬Jfž®`’:JDgž¤SD.+'Œ g* ‡'G'ŒvC oŽp +'fžnN”JfžtSCfč`Äf f .+'Œ Ē'G'Œ`¬+'fžĮBĮFĆCaFa†, ĒAćKāNu’ąx éøéŗé¹é»,:".Ģ‚½‚(ȃ¹ƒāŠ„„(Ī€æ€Č¹āˆ€„Nu’J‚k,f F m F ĒBJ‚gkć‹ć’[Ī’śSFn gBFāŠā“āŠā“Nu<<÷RNuJ‚kSFć‹ć’JFn¼|’ĖmTDFāŠā“QĪ’śBFÖŗTd R‚dā’ā“RF F’l8(:BʄȂ¹‚†‚$ćŠd x 軄FčŗNuJFgņ¼|’g숃g$:BƒNuB‚BƒNu$:BƒNu’’ų’ą ’ąåļ åļäļ /o/o /_ Žü NuÆNu"/a oHB4HŠ _PNŠ&HCć‰į™BBf<Jg*<`$“<’f4<`B<Jg<`<SB<B•ā™ą‰B€Nu oLŠ6HB o Nuaģa  _PNŠ8 m ‚ŗ2戊`$J€g PDą™ąˆfö gkSDćˆjśDža&ą˜"ćKā‘Nu’åļåļäļ/o .Ÿ.ŸNuJ€kSDćˆJDn D’čm4DRčØBD€€dāRD D’lćˆdNuĄŗg JDgņ < ’NuB€Nu <’Nu’’žBBvJjDĆB€Nu la*€BJ€f JkJCjDNu2<€įį2<NuNŗžųaNśž”x JBk&“Dm J€fD”DĆ@`ņåøå¹xå¤S„$Ąf.ȁ¹€„`$DB“Dm"B€”D`ōxå¤S„F„„Ȁ¹€‚€ä¼ä¹ B‚NuJBj RBa¤ā€ā‘Ó‚Ń‚Nu"/Nŗž8aäa’\/A.ŸNu"/Nŗž"aĪ`JBk’tNu"/NŗžaīNŗžr/A.ŸNupjįHNuLļH@HAHBHCĮAÅCHļNuL×H@HAĮAH× ošgNÕNė aĘaų6`Śa¾aų(`Ņa¶ałč`Źa®aöœ`ĀÆNÕoNÕ?<NÕBgNÕaŒałZgī`ņa‚ałPoä`ča’xałDlŲ`Ü0HĄ/aś”`’|L×H@HAĮAH×aśø`LßH@HAĮAB§HēĄaśŅ H@R@°|b’^H@?NÕ////NÕa’ŠjćH/2/2NÕ>/6x/6xNÕ>/-Ÿx-ŸxTNÕp0°|4b’P€üēˆAś$/0/0AśøH@/0/0aųģ k&Ś`žŹ?šCAĆy7ą€F“øµµnIåå1 ”ČtM8Oé?łśPŠüļQšūhSŻöubŲ³oW0”õø$nZ‚wHł0<]Ō€W8µƒa&ĀŌ%oüÕdyER0³ŽgĢń§%k%Į†¦šknqJRßüg¬qĆ24ŽzלuOŻsæVxg©:)TóŲ{ŗD߃+m *䏾?š@$@Y@@@ƈ@ųjA.„€AcŠA—ׄAĶĶeB _ B7HvčBm”¢B¢0œå@BּĐC kõ&4`–`˜`š`(`†`†`Ę`^`Ģ`Ģ`Ģ`D`p`r`¦`>`č`č`č`.`F`B`D`X```Ā`†`ī`pNNNupNNNuNIrNuNJrNup /Aś’Ś!I"_CéR!I’ü!I 0¼NNrNuDA Ab;NurNu p `p `p XEŗ|cVEAś’€0…Bh1D!J1C Bh1BNN2(k¤Nup `Ōp `Šp `Ģg:<`::<>+&ś 6xf*a’$<Ą+'f Aś’"0¼ƒp NNa’` XEŗ|cVEp Aś’0…1B!JNN2(k’8Nur NuNKrNuNLrNu B’bNMrNuAśžĪ0…!|Hh!_@1C 1B/p NN `Šp Aśž 0…NN2(kžÜNuAśžŽ0…P!|Hh!_@1C 1B/p NN 2(kž¤NuAśžV0…P!|Hh!_1C 1Bp NN(2(kžpNuAśž"0…Pp NN2(kžXNuAśž 0…P1B!Jp NN2(kž8NupNN`śpNNAė|pNNAś*pNNrNu +'¦«'¢4€AśżĀpNN5h5PBANuJPfh'’Nu,o =_7_'ŗLß’Hė’'š.k'¦=| B..B./&k'šHė&Ś'N&ņė'~N«.k'¦Aī|p 0Ą0üS@fųAų|7H&ų·ė'¢e·ė'¦d Aś’”CśČ`Aī¾"H‘Ī=Hd'I'¾|]?./+'¾?<?+'ŗBgN«:Jnfb k'¾J(žg0<’2įY0ĮS@föAī~"k'¾7i '¼zJigŠOļ’Ü?|?|?|?|?|?| ?i0+'ŗŠQ?@?n?|?|?|?| ?|"Oļ’ö?nd?k&ųEļ •Ī?J?|?|Eź’ö0ŹCéSEf’h~>.~>6x=¼x=¼’’x x86xćLŸÄ$O•Ī=Šx?.Ho??6xBgN«:Jnf\Oļ’ö'O&Ś O‘Ī?H?H?|?|?|~>.œ>6xx86xćLŸÄ$O•Ī=Šx?.Ho??6xBgN«:JnfžJ/ g>0/įX?@~>/į_?GćOA÷x0įX0€J@g>(’žį_1ćO27xįY?xS@fčBk'B«&īBn=kV8=|6Aė'p@0üS@fųAī`1||€1|1|1|1|‘Ī7H&ś7H&ö~>.dCöx=‡xAų=ˆx Žk'¼Žk'¼Ž| =GdAų|7H&ų7nœ&ü7|&ž k&Ś$OHė&Ś~|>*ćO>2xžćOIņxKėņNÕAśgNJ`ųpNN Error reading boot device nRECEIVE €€€€€€€€€€€€€€€€ \ģšģš&żLRAMDISKB³ĘĘD ķ ’F ZĘD&mRECEIVE "6`Ėp`˧„ 8 ±8 ±”Ōä–¤!Äh ³ńX‘8ƒ€ŚŌ)8ƒ€ŚŌ !!xŒ8¢€0£ÄŠ !!xŒ8¢€A£ ¢Ä ķhŠ!š‚€ r pšrp† 4sppŠ£0!x¢„–;† 4†”`įsp"š‚€r pš†  €Pr pšr p†  §Ņp† 4†  ˜sp„„„ 9åÕ<‘8€S°Õ „†‘†‘7€’Œ6¢1Ó/šrpšrpš‚€1r pšrp† 4spp’„ \„4… \²Ō†‘† 2Ėׁ4’Ė6€’ĖČ4ķ„ŠŚ0„†‘65€’”Ó/šrpšrpš‚€@r pšrp† 4spp1 ā½ĖŅ$šrpš€<tpš1rpš€>tpš€.tp1ķ„2ķ„2€ ҆ 4† 2įtp„„Š&8€ZŅ!2²ń† 4† 2įtp„† 4sp„ ‹æž† 4s–’~’Bad character in transmission *Device name for recieving (example #4:) ? Block number out of sequenceeChecksum errorr TEXTRAIO FILEOPS PASCALIO „REMOUTTE €€€€€€€€€€€€€€€€/ ķķ&żLRAMDISKBęĘĘD ķ6’F ZĘD&ƒREMOUTTEQŸ†‚€ėP†*Ė Čšrpš‚€"r pš†+rpšr p…+Ņp…+„.„-…-….²Ō6†ģ†§p†*Ėpī„/„,…,…/²Ō…,ķ„,Šņ…-ķ„-ŠĆŌ‹–>ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzzLines to output (0 quits) ? PASCALIO LTEXTIN €€€€€€€€€€€€€€€€VģĢģĢ&żLRAMDISKB±ĘĘD ģę’F ZĘD&KTEXTIN U8šrpš‚€r pšrphšrpš‚€r pšˆ°€Pr pšr pšrpˆ°§Ņp†ˆ°˜spŅhŠ!š‚€)r pšˆ°˜r pšrp Ԋhšrpš‚€1r pšˆ‡€Pr pšr pšrpˆ‡§Ņ †*spp†*ˆ‡˜spŅhŠ!š‚€Br pšˆ‡˜r pšrp ԃ¦¦¦–—ˆ­Ȇ*ˆ˜r †*rpÓ;šrpš‚€Kr pšˆ‡˜r pšrp†*sp†spp¦–äؐm†rpŌl$²ń†*spÓ3šrpš‚€Yr pš„‡˜r pšrp†spp†spšrpš‚€cr pšrpp†„€‡!thpÓ,šrpš‚€mr pš„°˜r pšrpp! ā½ĖŅ$šrpš€<tpš!rpš€>tpš€.tp!ķi„€‡%’˧j" ҐŠ3"±" ±”Ō*$ķl$€’²ńšrpš‚€ur pšrpf$"Č%ķm%ұ#Õ¼ž–Ųėp"hšrpš‚€€r pšˆ‚$€Pr pšr pˆ‚$§Ņp†ˆ‚$˜spŅhŠ.š‚€r pšˆ‚$˜r pš‚€’r pšrp Ō„¦¦ˆp†ˆ­t¦pÓ4šrpš‚€r pšˆ‚$˜r pšrp†sppšrpš‚€¦r pšrpšrp–©­°­°”Ō †sppˆ­’ˁ­£p­²ńJ†ˆ­t¦pÓ4šrpš‚€·r pšˆ‚$˜r pšrp†spp†spÓ-šrpš‚€Ąr pšˆ‚$˜r pšrppp–ķL„‚p$„‚Ė×xÓU„‚#Ėp„‚#˧„0€T°0€t° ŌŠ/0€A°0€a° Ō†sppŠ„‚#ĖČ„‚#Ėp„‚p$„‚Ė×xh ±Õ¶d!’Ė p! ¢i!’²ŸÕœ†d#tjpÓ3šrpš‚€Čr pš„‚$˜r pšrp†spp#ķk!£i!²ńd’Ėd’Ė!p„‚#Ė€.Č„‚#Ėp# ā½ĖŅ„‚#Ė Č„‚#ĖpÕÅž–‚L†*†Vįs††.įsšrpš‚€Ńr pš‚€Žr pšrpšrpš‚€ąr pš†r pšrpšrpŌp0€C°0€c° Ō‘Š*0€R°0€r° Ō‘Š0€Q°0€q° ŌpŠ štpŌ‘†*s†s–.Convert raw text to UCSD p-System .TEXT formattSource file for conversion? Could not open !Destination file for conversion? Could not create Error writing output file Error closing file Conversion completeError reading Line > 255 charactersReceive text into what file? File  could not be createdError writing to A(bort or T(erminate receiving? Error writing to Error closing Error writing to TEXTIN program - Version 1AAC(onvert, R(eceive, Q(uit ? ųuWž ĪłEXTRAIO FILEOPS PASCALIO O^¤Ö„{ Simple routine to receive the image of a device from another system }  { Version 1A 16-Jul-82 }  { Copyright (c) 1982 SAGE Computer Technology }   PROGRAM Receive;  CONST "Serial = 7; {REMIN}  VAR "I,ByteIndex,BlockIndex,BlockNumber,Checksum:INTEGER; "High,Low,Checkout:INTEGER; "CH:CHAR; "Done:BOOLEAN; "Buffer:ARRAY[0..31] OF PACKED ARRAY[0..511] OF 0..255; "DeviceName:STRING; "F:FILE; "  PROCEDURE GetChar;  VAR "NewChar:PACKED ARRAY[0..1] OF CHAR;  BEGIN "REPEAT $UNITREAD(Serial,NewChar[0],1); $CH:=NewChar[0];  UNTIL (ORD(CH)<>10) AND (ORD(CH)<>13);  END;   PROCEDURE ByteIn(VAR Value:INTEGER);  VAR "Count:INTEGER;  BEGIN "Value:=0; "Count:=0; "WHILE Count < 2 DO $BEGIN &GetChar; &IF CH IN ['0'..'9','A'..'F'] THEN (BEGIN *IF CH IN ['0'..'9'] THEN ,Value:=(Value*16)+ORD(CH)-ORD('0') *ELSE ,Value:=(Value*16)+ORD(CH)-ORD('A')+10; *Count:=Count+1; (END &ELSE (BEGIN *WRITELN('Bad character in transmission '); *CLOSE(F); *EXIT(Receive); (END;  END; "Checksum:=Checksum+Value;  END;   BEGIN {Receive} "UNITCLEAR(Serial); "WRITE('Device name for recieving (example #4:) ? '); "READLN(DeviceName); "IF LENGTH(DeviceName)=0 THEN EXIT(PROGRAM); "REWRITE(F,DeviceName); "BlockNumber:=0; "BlockIndex:=0; "Done:=FALSE; "WHILE NOT Done DO $BEGIN &GetChar; $ IF CH='S' THEN (BEGIN *Checksum:=0; *ByteIn(High); BYTEIN(Low); *IF ((High*255)+LOW) <> BlockNumber THEN ,BEGIN .WRITELN; WRITELN; WRITELN('Block number out of sequence'); .CLOSE(F); .EXIT(PROGRAM); ,END; *FOR I:= 0 TO 511 DO ,BEGIN .ByteIn(Low); .Buffer[BlockIndex,I]:=Low; ,END; *Checkout:=Checksum; *ByteIn(Low); *IF Low <> ORD( ODD(Checkout) AND ODD(255) ) THEN ,BEGIN .WRITELN; WRITELN; WRITELN('Checksum error'); .CLOSE(F); .EXIT(PROGRAM); ,END; *IF (Blocknumber MOD 10) = 0 THEN ,BEGIN WRITELN; WRITE('<',BlockNumber:4,'>'); END; *WRITE('.'); *BlockNumber:=BlockNumber+1; *BlockIndex:=BlockIndex+1; *IF BlockIndex = 32 THEN ,BEGIN .I:=BLOCKWRITE(F,Buffer,BlockIndex); .BlockIndex:=0; ,END; (END &ELSE (IF CH='Z' THEN *BEGIN ,IF BlockIndex > 0 THEN I:=BLOCKWRITE(F,Buffer,BlockIndex); ,CLOSE(F,LOCK); ,Done:=TRUE; *END; $END;  END.  O^¤Ö„ { Program for testing Remote Output Serial Channel }  { Version: 1A 16-Jul-82 }   PROGRAM RemOutTest;  CONST "Delay=750; {Adjust down for slower machines}  VAR "Line:STRING; "TwoChar:PACKED ARRAY[0..1] OF CHAR; "I,Dly,Lines:INTEGER;  BEGIN "Line:='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; "TwoChar[0]:=CHR(13); {Carriage return} "REPEAT $WRITELN; $WRITE('Lines to output (0 quits) ? '); $READLN(Lines); $IF Lines=0 THEN EXIT(PROGRAM); $FOR I:= 1 TO Lines DO &BEGIN (UNITWRITE(8,Line[1],LENGTH(Line)); (UNITWRITE(8,TwoChar[0],1,0,8); (FOR DLY:=1 TO Delay DO {Nothing}; &END;  UNTIL FALSE;  END.  O^¤Ö„{ Simple routine to send another system the image of a device }  { Version 1A 16-Jul-82 }  { Copyright (c) 1982 SAGE Computer Technology }   PROGRAM Send;  CONST "Serial = 8; {REMOUT} "Pause = 32000; "Delay = 3;  VAR "I,ByteIndex,BlockIndex,BlockCount,Checksum:INTEGER; "Buffer:PACKED ARRAY[0..511] OF 0..255; "DeviceName:STRING; "S:FILE OF CHAR; "F:FILE;   PROCEDURE CharOut(CH:CHAR);  VAR TwoChar:PACKED ARRAY[0..1] OF CHAR; "Dly:INTEGER;  BEGIN  TwoChar[0]:=CH; "UNITWRITE(Serial,TwoChar[0],1,0,8);  FOR Dly:= 1 TO Delay DO {Nothing}  END;   PROCEDURE ByteOut(Value:INTEGER);   PROCEDURE HexOut(HexValue:INTEGER);  BEGIN "IF HexValue <10 THEN $CharOut(CHR( ORD('0')+HexValue )) "ELSE $CharOut(CHR( ORD('A')+HexValue-10 ));  END;   BEGIN {BYTEOUT} "HexOut(Value DIV 16); HexOut(Value MOD 16); "Checksum:=Checksum+Value;  END;   BEGIN {Send} "WRITE('Device name (example #4:) ? '); "READLN(DeviceName); "IF LENGTH(DeviceName)=0 THEN EXIT(PROGRAM); "RESET(F,DeviceName);  WRITE('Number of blocks to send ? '); "READLN(BlockCount); "IF BlockCount<=0 THEN EXIT(PROGRAM); "FOR BlockIndex := 0 TO BlockCount-1 DO $BEGIN &IF (BlockIndex MOD 10) = 0 THEN (BEGIN WRITELN; WRITE('<',BlockIndex:4,'>'); END; &WRITE('.'); &I:=BLOCKREAD(F,Buffer,1,BlockIndex); &Checksum:=0; &CharOut('S'); &ByteOut(BlockIndex DIV 255); ByteOut(BlockIndex MOD 255); &CharOut(CHR(13)); &FOR ByteIndex:= 0 TO 511 DO (BEGIN *ByteOut(Buffer[ByteIndex]); *IF (ByteIndex MOD 32) = 31 THEN CharOut(CHR(13)); (END; &ByteOut(ORD( ODD(Checksum) AND ODD(255) )); $ CharOut(CHR(13)); &IF (BlockIndex MOD 32)=31 THEN FOR I:= 0 TO Pause DO { nothing } $END;  CharOut('Z'); "CharOut(CHR(13));  END.   SEND €€€€€€€€€€€€€€€€…ķķ&żLRAMDISKBļĘĘD ķ’F ZĘD& SEND é:`Ė#Č`Ėpji!"²Ō!ķiŠö–U ³ń€0 ¢‘Š€A ¢ £‘–o  ā½Ė0 ¢„–Ƃ\†ƒˆįr†/†‚[įrš‚€s pš†€Ps pšs p†§Ņp†‚\†˜rpš‚€s pš†spšs p1²Ōp1ī„‚„„2…‚„²ÕĀ2 ā½ĖŅ$šspš€<tpš2spš€>tpš€.tp†‚\†2tp„„€S‘2€’‘2€’ā½Ė‘ ‘’„‚…„3…‚…²Ō†3’˧‘3€ ā½ĖŅ ‘3ķ„ŠŚ0€’”‘ ‘2€ ā½ĖŅ}„‚…„4…‚…²Ō4ķ„Šó2ķ„‹6’€Z‘ ‘†‚\r†/r–Device name (example #4:) ? Number of blocks to send ? - :EXTRAIO PASCALIOFILEOPS  O^¤Ö„{ Program to read in text characters from the Remote Serial Channel }  { Version 1A 16-Jul-82 }  { Copyright (c) 1982 SAGE Computer Technology }   PROGRAM TextIn;   CONST "Version = '1A';   VAR "CH:CHAR;  F:File;  D:TEXT;   PROCEDURE Convert;  VAR "I:INTEGER; "InBlock:INTEGER;  TestChar:CHAR; "Done:BOOLEAN; "InIndex,OutIndex:INTEGER; "OutString:STRING[255]; "InBuffer:PACKED ARRAY[0..511] OF CHAR; "SourceFile,DestFile:STRING;   PROCEDURE ConvertInit;  VAR "Open:BOOLEAN;   BEGIN  WRITELN; "WRITELN('Convert raw text to UCSD p-System .TEXT format'); "Open:=FALSE; "REPEAT $WRITELN; $WRITE('Source file for conversion? '); $READLN(SourceFile); $WRITELN; $IF LENGTH(SourceFile) = 0 THEN EXIT(Convert); ${$I-} $RESET(F,SourceFile); ${$I+} $IF IORESULT = 0 THEN Open:=TRUE $ELSE &WRITELN('Could not open ',SourceFile);  UNTIL Open; "Open:=FALSE; "REPEAT $WRITELN; $WRITE('Destination file for conversion? '); $READLN(DestFile); $WRITELN; $IF LENGTH(DestFile) = 0 THEN &BEGIN (CLOSE(D); (EXIT(Convert); $ END; ${$I-} $REWRITE(D,DestFile); ${$I+} $IF IORESULT = 0 THEN Open:=TRUE $ELSE &WRITELN('Could not create ',DestFile);  UNTIL Open;  InBlock:=0;  OutIndex:=0;  Done:=FALSE;  END;   PROCEDURE WriteOut;  BEGIN "{$R-} "OutString[0]:=CHR(OutIndex); "{$R+} "{$I-} "WRITELN(D,OutString); "{$I+} "IF IORESULT <> 0 THEN $BEGIN &WRITELN; &WRITELN('Error writing output file ',DestFile); &CLOSE(D); &CLOSE(F); &EXIT(Convert); $END; "OutIndex:=0;  END;   BEGIN {Convert}  ConvertInit; "REPEAT $InIndex:=0; $IF EOF(F) THEN &BEGIN & IF OutIndex > 0 THEN WriteOut; & {$I-} (CLOSE(D,LOCK); ({$I+} & IF IORESULT <> 0 THEN *BEGIN ,WRITELN; ,WRITELN('Error closing file ',DestFile); ,CLOSE(F); ,EXIT(Convert); & END; (CLOSE(F); & WRITELN; (WRITELN('Conversion complete'); (EXIT(Convert); &END; ${$I-} $I:=BLOCKREAD(F,InBuffer,1,InBlock); ${$I+} $IF IORESULT <> 0 THEN &BEGIN (WRITELN; (WRITELN('Error reading ',SourceFile); (EXIT(Convert); &END; $IF (InBlock MOD 10) = 0 THEN &BEGIN (WRITELN; (WRITE('<',InBlock:4,'>'); &END; $WRITE('.'); $InBlock:=InBlock+1; " REPEAT $ TestChar:=InBuffer[InIndex]; $ IF TestChar = CHR(13) THEN WriteOut &ELSE (IF (TestChar<>CHR(0)) AND (TestChar<>CHR(10)) THEN *BEGIN * OutIndex:=OutIndex+1; ,IF OutIndex > 255 THEN .BEGIN 0WRITELN; 0WRITELN('Line > 255 characters'); . WriteOut; .END; ,{$R-} ,OutString[OutIndex]:=TestChar; ,{$R+} *END; $ InIndex:=InIndex+1; $UNTIL InIndex = 512; "UNTIL Done;  END;   PROCEDURE Receive;  VAR "Counter:INTEGER; "I,Index:INTEGER; "Block:INTEGER;  Buffer:PACKED ARRAY[0..1023] OF CHAR; "Status:ARRAY[0..29] OF INTEGER;  TwoChar:PACKED ARRAY[0..1] OF CHAR; "Filename:STRING;   PROCEDURE RecInit;  VAR "Open:BOOLEAN;   BEGIN "UNITCLEAR(7);  Open:=FALSE; "REPEAT $WRITELN; $WRITE('Receive text into what file? '); $READLN(Filename); " IF LENGTH(Filename) = 0 THEN EXIT(Receive); ${$I-} $REWRITE(F,Filename); ${$I+} " IF IORESULT = 0 THEN Open:=TRUE $ELSE &WRITELN('File ',Filename,' could not be created'); "UNTIL Open; Block:=0; "Index:=0; "{Write a block to position drive} "FILLCHAR(Buffer,512,0); "{$I-} "I:=BLOCKWRITE(F,Buffer,1,Block); "{$I+} "IF IORESULT <> 0 THEN $BEGIN &WRITELN; &WRITELN('Error writing to ',Filename); &Close(F); &EXIT(Receive); $END; "WRITELN; "WRITELN('A(bort or T(erminate receiving? '); "WRITELN;  END;   PROCEDURE Terminate;  VAR "InBuffer:PACKED ARRAY[0..511] OF CHAR;   BEGIN  IF (Index = 0) AND (Block = 0) THEN $BEGIN &CLOSE(F); &EXIT(Receive); " END; "FILLCHAR(Buffer[Index],512-Index,0); "IF Index > 0 THEN $BEGIN &{$I-} &I:=BLOCKWRITE(F,Buffer,1,Block); &{$I+} &IF IORESULT <> 0 THEN (BEGIN *WRITELN; *WRITELN('Error writing to ',Filename); *Close(F); *EXIT(Receive); (END; $END;  {$I-} "CLOSE(F,LOCK); "{$I+}  IF IORESULT <> 0 THEN $BEGIN &WRITELN; &WRITELN('Error closing ',Filename); $ EXIT(Receive); $END;  EXIT(Receive);  END;   BEGIN {Receive} "RecInit; "REPEAT " UNITSTATUS(1,Status,1); {Check keyboard} " IF Status[0] <> 0 THEN &BEGIN & UNITREAD(1,TwoChar[0],1); (CH:=TwoChar[0]; (IF (CH = 'T') OR (CH = 't') THEN Terminate (ELSE & IF (CH = 'A') OR (CH = 'a') THEN ,BEGIN .CLOSE(F); .EXIT(Receive) * END *ELSE ,BEGIN .TwoChar[0]:=CHR(7); {Warning bell} .UNITWRITE(1,TwoChar[0],1); ,END; &END; " UNITSTATUS(7,Status,1); {Check for remote input} $Counter:=Status[0]; $IF Counter <> 0 THEN &BEGIN (UNITREAD(7,Buffer[Index],Counter); & Index:=Index+Counter; & IF Index > 511 THEN & BEGIN * {$I-} ,I:=BLOCKWRITE(F,Buffer,1,Block); ,{$I+} * IF IORESULT <> 0 THEN .BEGIN 0WRITELN; 0WRITELN('Error writing to ',Filename); 0CLOSE(F); 0EXIT(Receive); .END; * Block:=Block+1; ,Index:=Index-512; ,IF Index > 0 THEN MOVELEFT(Buffer[512],Buffer[0],Index); * TwoChar[0]:='.'; ,UNITWRITE(1,TwoChar[0],1); ,IF (Block MOD 10) = 0 THEN * BEGIN 0TwoChar[0]:=CHR(13); 0UNITWRITE(1,TwoChar[0],1); .END; *END; &END; "UNTIL FALSE;  END;   BEGIN {TEXTIN} "WRITELN; "WRITELN('TEXTIN program - Version ',Version); "REPEAT $WRITELN; $WRITE('C(onvert, R(eceive, Q(uit ? '); " READ(CH); $WRITELN; $IF EOLN THEN EXIT(PROGRAM); $IF (CH = 'C') OR (CH = 'c') THEN Convert $ELSE &IF (CH = 'R') OR (CH = 'r') THEN Receive &ELSE (IF (CH = 'Q') OR (CH = 'q') THEN EXIT(PROGRAM) (ELSE *WRITE(CHR(7)); "UNTIL FALSE;  END.  STOPSYS €€€€€€€€€€€€€€€€UACopyright (c) 1983 SAGE Computer Technology, All Rights Reserved ’¢Pų~RTOPSYS 'I"§ih !²Ō$" ģ§€a³" ģ§€z²”Ō" ģ" ģ§€a£€A¢Č ķhŠ×–Ģ˜šrpš‚€r p`pᤄᤄ„……‚€)ė €?¤…Œ¤„‡„‡…Œ²Õ`€ ‡„Œ’˧€å±Õł ¤…¤„‡„‡…²Ō"„……‡„ģ`€ ‡„Œ‡„¢’˧ȇ„ķ¤„ŠÕ¤…‹‡„¤…¤„‡„‡…²Ō!„……„„‡„€?Ė×čŌ¤…‹‡„ķ¤„ŠÖ‡…‹åՇ‡„ķ¤„„„‡„€?Ėׄ……ė ‡„ķā½Ė¤„‡„Ņšrpš‚€/r pŠ š‚€1r pš„……˜„…s„…˜r pš€ tpš„……˜„…“ s„…“˜r p‡„ķ¤„‹ąžšrpš‚€3r pšrpšrp–…˜ۚ‚€Yr pš‡€Ü€Pr pšr p‡€Ü‚€lčԐ‡€Ü‚€mčńȇ€Ü‘‚€n‡€Ü˜s²ń‡€Ü‚€o‡€Ü˜ssŠÜ‚€p‡€Ü˜sīh ³ń‡€Ü§h ŅpЇ€Üia‡€Ü˜€Psa‚€q€SsaėP ²ńš‚€sr pšrp ²Õ@’ ‡€Ü§³ńL‡€Üia‡€Ü˜„€‚ s„€‚˜€Psa‚€‚„€« £s„€«˜€_sa‡€Ü˜„€³ ¢s„€³˜€ÆsaėPŠ)‡€Üia‡€Ü˜€Psa‚€Š„€‚ £s„€‚˜€_saėP–€ÜŁ„€±„€Ü¬Pc‚€’ėcģ€0¢Č‚€”„€±˜sīn&³Ÿ&²Ÿ Ōn‡€Ś€TŅ `‚€•ėŠ`‚€˜ė‡€Ūogc˜sg„€±˜„€ˆ&s„€ˆ˜€Usg`˜€ZsgėP–€Ż†‡„Ä`p€?¤„¤„‡„‡„²ÕŠ`€ ‡„Œ’˧€å±Õ³¤„ ¤„¤„‡„‡„²Ō(`€ ‡„Œ‡„¢’˧‡„‡„ģ§Ó¤„‡„ķ¤„ŠĻ‡„Ōq¤„¤„‡„‡„²Ō``€ ‡„Œ¢‡„Œ¢’˧`€ ‡„Œ¢‡„Œ¢’˧Œ¢¤„‡„Ó‡„‡„xķĆV‡„xĖīׇ„Œ¢Ä‡„ķ¤„Š—‡„ķ¤„‹&’–„§š‚€›r pšrpp–ų­…,h¦*­* ²Ō<ˆ+†V­*Ėī×xpˆˆ+įtpÓļ­)¢¦)­*ķ¦*о–q­³ńN®*ķ¦*®*®…,²Ōˆ+†V®*Ėī×xpŠ&š‚€”r pš‚€Ør pšrpp­ķ¦ ˆ+­’˧ĭ’Ņᦖ¹­ķ¦­ķ¦ˆ„+­’Ė Č­’Ņ!ˆˆ„+įtpÓš®)ķ¦)ᦖšˆ+pˆˆ+įtpÓļ­)¢¦)įlįkimb " Ół" Ņ&%Ԑ €   ­)ԁ#£€R³ń ŠńimŠ]%Ō5"€ Ņ!ķiŠ)" Ņ!¢!ā½Ė£iА !€ ¢ī !£i"Ó" mŠ%" Ņ!ā½Ėnh &²Ō €  ķhŠņŠ"Ó" "°Õl’  #³Ō Šö­)Ԑ Š÷–Ņ*`„-įu`‡….˜up¤*¤)‡…-€TҐ А `up‡…+‡)Ä`u–….Kšrpš‚€¼r pšrpšrpš‚€Ķr pšrpšrpš‚€ęr pšrpšrpšrp†*‘†*†T‘…TŅš‚€ńr pšrpšrp…T²ńΚ€"tpš†*˜r pš‚€ūr pš…Trpš‚€žr pšrpš‚r pš†Ur pšrp…U€t°…U€d° Ō …U€a£€A¢„U…U€T°…U€D° Ōæ†*˜†…U‘†…U…T†S‘š€"tpš†˜r pš‚r pš…Srpš‚r pšrpÕļž–LCP/M directory--------------------------------------------------------------- 12345678901  : K---------------------------------------------------------------------------$CP/M file name, or ? for directory: ??  . ILLEGAL FILE NAME (too long))  # : .TEXT.DATA WRITE ERROR READ ERROR --& CP/M TEXT FILE HAS NO "EOF" CHARACTERR *** TOPSYS ****1Transfers text and data files from CP/M disk in #to P-system disk in #FILE NOT FOUND ON #" is extents longIs this a T(ext or D(ata file? " is blocks longg»~ßVFOÉŒ'é n FILEOPS EXTRAIO STRINGOPPASCALIO O^¦{¦{ {$C Copyright (c) 1983 SAGE Computer Technology, All Rights Reserved }   { TO_PSYS - Transfers a CP/M text or data file to a P-system disk  "File: TOPSYS.TEXT "Date: 20-Jun-83 "Version: 1 "Programmer: Don Marsh " "Development history: " "Description: %This program will transfer a CP/M-68k text or data file to a P-system "diskette. A data file is transferred literally; a text file is formatted "(tabs decoded, beginning spaces encoded, etc.) "  }    PROGRAM TO_PSYS;   CONST CPMUNIT = 5; { Where the CP/M disk will be } (PSYSUNIT = 4; { Where the P-system disk will be } ( { WARNING: one digit only unless procedure } @{ "CONVERTFILENAME" is changed! } (  VAR CPMTITLE, PSYSTITLE: STRING; { File names of transfer file } (CPMBLOCKS, PSYSBLOCKS: INTEGER; { Size of transfer file } (FORMAT: CHAR; { Indicates whether file is } P{ a text or data file } (EXTENTS: ARRAY[1..512] OF INTEGER; { Contains the block (extent) } P{ numbers associated with the } P{ CP/M file } P    { Convert string S to upper case }  PROCEDURE UPPER(VAR S: STRING);  VAR I: INTEGER;  BEGIN  FOR I:=1 TO LENGTH(S) DO $IF (ORD(S[I])>=ORD('a')) AND (ORD(S[I])<=ORD('z')) THEN (S[I]:=CHR(ORD(S[I])-ORD('a')+ORD('A'));  END;     { Get a filename for the CP/M file from the user }  PROCEDURE GETFILENAME(VAR CPMTITLE: STRING);  CONST SPACES = ' ';  VAR I: INTEGER;   { Show the directory of the CP/M disk so the user can make an informed choice }  PROCEDURE SHOWDIRECTORY;  CONST EMPTYFLAG = 229; { Flags an empty directory entry }  VAR CPMDIRECTORY: PACKED ARRAY[0..2047] OF CHAR; { Holds the directory } $ITEM, FILENO, I, J: INTEGER;  DIRENTRIES: ARRAY[0..63] OF STRING[11]; $FILENAME: STRING[11];  FOUND: BOOLEAN;  BEGIN  WRITELN;  WRITE(  'CP/M directory--------------------------------------------------------------');  UNITREAD(CPMUNIT,CPMDIRECTORY,2048,16);  ITEM:=-1; FILENO:=-1; FILENAME:='12345678901';  FOR I:=0 TO 63 DO { Scan the directory for non-empty entries } $IF ORD(CPMDIRECTORY[32*I])<>EMPTYFLAG THEN (BEGIN (FOR J:=1 TO 11 DO { Copy filename into a string } ,FILENAME[J]:=CPMDIRECTORY[32*I+J]; (FOUND:=FALSE; (FOR J:=0 TO FILENO DO { Have we already printed this name? } ,IF FILENAME=DIRENTRIES[J] THEN FOUND:=TRUE; (IF NOT FOUND THEN { Print it } ,BEGIN ,FILENO:=FILENO+1; { Record the name for future checking } ,DIRENTRIES[FILENO]:=FILENAME; ,ITEM:=(ITEM+1) MOD 5; { Increment item's number on this line } ,IF ITEM=0 THEN { Start a new line on the screen } 0BEGIN 0WRITELN; WRITE(' '); 0END ,ELSE WRITE(' : '); { Separate directory items CP/M-style } ,WRITE(COPY(FILENAME,1,8),' ',COPY(FILENAME,9,3)); ,END; (END;  WRITELN;  WRITELN(  '---------------------------------------------------------------------------');  WRITELN;  END;    BEGIN { *** GETFILENAME ***}  REPEAT $REPEAT (WRITE('CP/M file name, or ? for directory: '); $ READLN(CPMTITLE); $ IF CPMTITLE='?' THEN SHOWDIRECTORY; { Show the CP/M directory } $UNTIL CPMTITLE<>'?'; $UPPER(CPMTITLE); { Make filename upper case, no extra spaces } $WHILE POS(' ',CPMTITLE)>0 DO DELETE(CPMTITLE,POS(' ',CPMTITLE),1);   { Delete a period from the filename, then pad filename and extension with }  { spaces so that CPMTITLE fills exactly 11 characters. This format is }  { necessary when we scan the disk directory to find the given file. } $I:=POS('.',CPMTITLE)-1;  IF I<0 THEN { No period } (BEGIN (I:=LENGTH(CPMTITLE); (IF I=0 THEN EXIT(PROGRAM); { No filename } (END $ELSE (CPMTITLE:=CONCAT(CPMTITLE,' '); { Add spaces to fill extension } $IF I>8 THEN WRITELN('ILLEGAL FILE NAME (too long)');  UNTIL I<=8; { Loop until legal filename }  IF I8) THEN I:=8;  IF ORD(FORMAT)=ORD('T') THEN EXTENSION:='.TEXT' { Choose the proper extension }  ELSE EXTENSION:='.DATA';  PSYSTITLE:=CONCAT(UNITSTR,COPY(CPMTITLE,1,I),EXTENSION);  END;     { Search the CPM directory for file CPMTITLE. If it is found, the number of }  { blocks (extents) is recorded in CPMBLOCKS (zero if not found). This }  { procedure builds the EXTENTS table which tells which blocks (extents) are }  { associated with the given filename. }  PROCEDURE SEARCHCPM(VAR CPMTITLE: STRING; VAR CPMBLOCKS: INTEGER);  CONST EMPTYFLAG=229; { Byte that flags an empty directory entry }  VAR CPMDIRECTORY: PACKED ARRAY[0..2047] OF CHAR; { Holds the directory } $DIRENTRY, BLKNO, I: INTEGER; $FOUND: BOOLEAN;  BEGIN  CPMBLOCKS:=0; { No blocks in this file, yet }  UNITREAD(CPMUNIT,CPMDIRECTORY,2048,16); { Read the directory }  FOR DIRENTRY:=0 TO 63 DO { Scan the directory for CPMTITLE } $IF ORD(CPMDIRECTORY[32*DIRENTRY])<>EMPTYFLAG THEN { Here's a non-empty } (BEGIN { directory entry } (FOUND:=TRUE; (FOR I:=1 TO 11 DO { Is this filename the same as CPMTITLE? } ,IF CPMDIRECTORY[32*DIRENTRY+I]<>CPMTITLE[I] THEN FOUND:=FALSE; (IF FOUND THEN { We found the filename we're looking for } ,FOR I:=0 TO 7 DO { Record the block numbers (extents) } 0BEGIN { associated with this file } 0BLKNO:=ORD(CPMDIRECTORY[32*DIRENTRY+16+I*2]) 2+256*ORD(CPMDIRECTORY[32*DIRENTRY+17+I*2]); 0IF BLKNO<>0 THEN 4BEGIN 4CPMBLOCKS:=CPMBLOCKS+1; { Increment block count } 4EXTENTS[CPMBLOCKS]:=BLKNO*4+16; { Convert to equiv. } 4END; { P-system block so } 0END; { we can read with } (END;  { UNITREAD }  END;     { Transfer the text or data file from CP/M disk to P-system disk }  PROCEDURE WRITEFILE(VAR PSYSTITLE: STRING; FORMAT: CHAR; CPMBLOCKS: INTEGER; 4VAR PSYSBLOCKS: INTEGER);  VAR F: FILE; { P-system file } $INBLKS, OUTBLKS: INTEGER; { Number of blocks transfered } $INBUFFER: PACKED ARRAY[0..2047] OF CHAR; $OUTBUFFER: PACKED ARRAY[0..511] OF CHAR;   { Indicate a disk write error and abort }  PROCEDURE WRITERR;  BEGIN  WRITELN('WRITE ERROR');  EXIT(PROGRAM);  END;   { Transfer a data file }  PROCEDURE WRITEDATA;  BEGIN  FOR INBLKS:=1 TO CPMBLOCKS DO { Transfer all blocks } $BEGIN $UNITREAD(CPMUNIT,INBUFFER,2048,EXTENTS[INBLKS]); { Read a CP/M block } $IF BLOCKWRITE(F,INBUFFER,4)<>4 THEN WRITERR; { Write 4 P-sys blocks } $OUTBLKS:=OUTBLKS+4; { Update block counter } $END;  END;   { Transfer a text file with appropriate formatting (decode tabs, encode }  { starting spaces, etc.) }  PROCEDURE WRITETEXT;  VAR INPTR, OUTPTR, { Pointers which access INBUFFER and OUTBUFFER } $CHRVAL, { Current character value } $COLUMN, TABCOL: INTEGER;  NEWLINE: BOOLEAN; { Flags a new line } $  { Get a text character from the input buffer }  PROCEDURE GETCHAR(VAR CHRVAL: INTEGER);  BEGIN  IF INPTR<0 THEN { If input buffer is empty, get a new one } $BEGIN $INBLKS:=INBLKS+1; { Increment CP/M block count } $IF INBLKS<=CPMBLOCKS THEN { Everything's OK } (UNITREAD(CPMUNIT,INBUFFER,2048,EXTENTS[INBLKS]) { Load a new buffer } $ELSE (BEGIN { Tried to read a non-existent block, so we } (WRITELN('READ ERROR -', { must not have gotten an end-of-file char. } 0' CP/M TEXT FILE HAS NO "EOF" CHARACTER'); (EXIT(PROGRAM); (END; $END;  INPTR:=INPTR+1; { Increment buffer pointer }  CHRVAL:=ORD(INBUFFER[INPTR]); { Get a character from buffer }  IF INPTR=2047 THEN INPTR:=-1;  { If that was the last character in the }  END; { buffer, signal that fact with -1 }   { Put a text character in output buffer }  PROCEDURE PUTCHAR(CHRVAL: INTEGER);  BEGIN  OUTPTR:=OUTPTR+1; { Increment buffer pointer }  COLUMN:=COLUMN+1; { Increment horizontal coordinate }  OUTBUFFER[OUTPTR]:=CHR(CHRVAL); { Store the character in the buffer }  IF OUTPTR=511 THEN { If that was the last character that fits, } $BEGIN { write the buffer to disk } $IF BLOCKWRITE(F,OUTBUFFER,1)<>1 THEN WRITERR; $OUTBLKS:=OUTBLKS+1; { Increment block count } $OUTPTR:=-1; $END;  END; $   BEGIN { *** WRITETEXT *** }  FILLCHAR(INBUFFER,1024,CHR(0)); { Dump two blocks of nulls to start out file }  IF BLOCKWRITE(F,INBUFFER,2)<>2 THEN WRITERR;  OUTBLKS:=OUTBLKS+2;  INPTR:=-1; OUTPTR:=-1; { Initialize buffer pointers }  COLUMN:=0;  NEWLINE:=TRUE;  REPEAT $REPEAT (GETCHAR(CHRVAL); { Get a character from the input buffer } $UNTIL CHRVAL<>10; { Strip out line feed characters } $IF CHRVAL=13 { Carriage return } THEN (BEGIN (IF NEWLINE THEN ,BEGIN ,PUTCHAR(16); PUTCHAR(32); { Output indentation indicators } ,END; (PUTCHAR(13); { Output carriage return } (IF ODD(OUTBLKS) THEN ,WHILE 512-OUTPTR<82 DO PUTCHAR(0); { Fill a small amount of space } (COLUMN:=0; { at the end of a block } (NEWLINE:=TRUE; { On a new line now } (END $ELSE IF NEWLINE THEN { Are we starting a new line? } ,IF CHRVAL=32 { Space} THEN 0COLUMN:=COLUMN+1 ,ELSE IF CHRVAL=9 { Tab } THEN 0COLUMN:=COLUMN+8-COLUMN MOD 8 ,ELSE { not a space or a tab } 0BEGIN 0PUTCHAR(16); { Output character count } 0PUTCHAR(COLUMN+32-1); 0COLUMN:=COLUMN-2; { Adj. column for two chars. just output } 0IF CHRVAL<>26 THEN { Output current char., unless it's eof } 4PUTCHAR(CHRVAL); 0NEWLINE:=FALSE;  { Not a new line anymore } 0END (ELSE ,BEGIN { Not a new line } ,IF CHRVAL=9 { Tab } THEN 0FOR TABCOL:=COLUMN MOD 8 TO 7 DO PUTCHAR(32) { Simulate tab } ,ELSE IF CHRVAL<>26 THEN PUTCHAR(CHRVAL); { Don't output CP/M eof } ,END;  UNTIL CHRVAL=26; { Process characters until end of file }  PUTCHAR(13); { Write P-system eof character }  WHILE OUTPTR>=0 DO PUTCHAR(0); { Fill out rest of this block }  WHILE ODD(OUTBLKS) DO PUTCHAR(0); { No. of text blocks must be even }  END;    BEGIN { *** WRITEFILE *** }  REWRITE(F,PSYSTITLE); { Open P-system file }  INBLKS:=0; OUTBLKS:=0;  IF FORMAT='T' THEN { Select appropriate format } $WRITETEXT  ELSE $WRITEDATA;  CLOSE(F,LOCK); { Close P-system file }  PSYSBLOCKS:=OUTBLKS; { Record size of P-system file }  END;     BEGIN { *** MAIN PROGRAM *** }   WRITELN;  WRITELN(' *** TOPSYS ***');  WRITELN;  WRITELN('Transfers text and data files from CP/M disk in #',CPMUNIT);  WRITELN('to P-system disk in #',PSYSUNIT);   REPEAT $WRITELN; $REPEAT (GETFILENAME(CPMTITLE); { Get the name of the CP/M file } (SEARCHCPM(CPMTITLE,CPMBLOCKS); { Search CP/M directory for file } (IF CPMBLOCKS=0 THEN ,WRITELN('FILE NOT FOUND ON #',CPMUNIT); $UNTIL CPMBLOCKS>0; $WRITELN('"',CPMTITLE,'" is ',CPMBLOCKS,' extents long');  $REPEAT (WRITE('Is this a T(ext or D(ata file? '); (READ(FORMAT); { Which format? } (WRITELN; (IF (FORMAT='t') OR (FORMAT='d') THEN { Convert format to upper case } ,FORMAT:=CHR(ORD(FORMAT)-ORD('a')+ORD('A')); $UNTIL (FORMAT='T') OR (FORMAT='D');  $CONVERTFILENAME(CPMTITLE,PSYSTITLE,FORMAT); { Convert CP/M file } X{ name to P-sys name } $WRITEFILE(PSYSTITLE,FORMAT,CPMBLOCKS,PSYSBLOCKS); { Transfer the file }  $WRITELN('"',PSYSTITLE,'" is ',PSYSBLOCKS,' blocks long');   UNTIL FALSE; { Loop forever (exit inside "GETFILENAME") }  END.    {  5*** Format of P-system text files *** ; %The following is an attempt to document the format of Sage P-system  '.TEXT' files.  %Each text file starts with a two-block header, followed by an even number  of text blocks (unused space in the text blocks following end-of-text is filled  out with nulls). The header blocks contain integers (stored high byte first,  low byte second) and text strings which give the following information:   Byte number Item  ----------- ------------------------------------------------------- "0-1 Contains 0004 (must be a text file constant?) "2-3 Contains the number of text markers currently active "4-11 Marker name 1 (text string, padded with spaces at end) !12-19  Marker name 2 !20-27 Marker name 3 !28-35 Marker name 4 !36-43 Marker name 5 !44-51 Marker name 6 !52-59 Marker name 7 !60-67 Marker name 8 !68-75 Marker name 9 !76-83 Marker name 10 !84-91 Marker name 11 !92-99 Marker name 12  100-107 Marker name 13  108-115 Marker name 14  116-123 Marker name 15  124-131 Marker name 16  132-139 Marker name 17  140-147 Marker name 18  148-155 Marker name 19  156-163 Marker name 20  164-171 Marker name 21  172-179 Marker name 22  180-187 Marker name 23  188-195 Marker name 24  196-203 Marker name 25  204-211 Marker name 26  212-243 UNUSED (space for 4 more marker names)  244-295 Marker flags for each marker 60000 = No marker here 60001 = Active marker 6FFFF = Marker has been deleted 6Other values are also possible for system markers  296-303 UNUSED (space for 4 more marker flags)  304-355 Marker positions (byte count from start of text)  356-363 UNUSED (space for 4 more marker positions)  364-383 Tab stops array. A set tab stop is indicated by a set bit. 4 Bits are packed into bytes loosely (4 per byte with clear 6bits in-between)  384-395 Six words that the editor seems to like set to 0001. I don't 6know what they do.  396-397 Auto Indent option (0001=on, 0000=off)  398-399 Filling option (0001=on, 0000=off)  400-401 Token default (0001=on, 0000=off)  402-403 Left margin (starts at 0000)  404-405 Right margin (starts at 0000)  406-407 Paragraph margin (starts at 0000)  408-409 Com character (ASCII)  410-411 Date of textfile creation 6first 7 bits = year (00-63H = 00-99 decimal) 6next 5 bits = day (01-1FH = 01-31 decimal) 6last 4 bits = month (1-CH = Jan-Dec)  412-413 Date of last update to textfile (same format as above)  414-415 Number of times the textfile has been updated (revision #)  416-417 Auto Buffer option (0001=on, 0000=off)  418-511 UNUSED   Block 2:  --------  0-511 UNUSED (this block is not used as far as I can tell)   % 4Text blocks format 4------------------  %The text blocks contain straight ASCII code, with two additional characters  at the start of each line which contain an indentation setting. The format is  ASCII 0DH (the carriage return from the previous line), followed by 10H  (indentation code character), and a hex byte telling how many characters to  indent this line plus 20H. To indent 4 characters, for example, the hex bytes  would be "10 24".  %Lines may be split between an odd-numbered text block and an even block,  but not between an even block and an odd block. Therefore, up to 81 nulls may  follow the last line in an even block so that a new line can begin in the next  block. There must also be an even number of text blocks, so a block of nulls is  appended to an odd number of text blocks (the smallest text file is 4 blocks  long -- 2 header blocks + 2 text blocks).  %The editor does not allow input of line feeds, so carriage returns are  represented in the textfile without the associated line feed characters. If a  file contains line feed characters, the editor will not act normally.  %Text always ends with a carriage return character (0DH), although this  character is not treated as part of the user's text and is not displayed.  % %  Don Marsh, 21-Jun-83   }  PEDGEN €€€€€€€€€€€€€€€€-  -Copyright (c) 1983 SofTech Microsystems, Inc.” üŚ’¢ |”& " $const max_pedgen_file_name_length = 255; $ $type pedgen_file_name = string[max_pedgen_file_name_length]; $ A & &pedgen_result = {Result codes returned by APED_GENERATE.} + +(pgr_no_error, @{Result indicating Asuccessful Aoperation.} 9 ,pgr_lib_error, @{Indicates I/O error either Aon open or read of a Alibrary code file.} 8 ,pgr_lib_output_error, @{Indicates I/O error when Acreating a copy of an updated Alibrary code file.} A ,pgr_chksum_error, @{I/O error occurred when Aattempting to insert new Achecksum into a referenced Alibrary code file.} A ,pgr_input_error, @{Indicates I/O error either Aon open or read of host Aprogram code file.} A ,pgr_output_error, @{Indicates I/O error writing APED to disk file.} , ,pgr_unit_error, @{Indicates failure to locate Aa referenced unit.} 9 ,pgr_bad_library_list_error, @{Library file list text file Ais not a textfile.} A ,pgr_lib_list_error, @{Indicates I/O error reading Alibrary file list text file.} A ,pgr_duplicate_unit_error, @{A unit name conflicts with Aa system unit name, or the Asystem contains more than Aone unit with the same name.} A ,pgr_lib_count_error, @{Number of library files referenced Aby execution environment exceeds Amax_library_file_refs.} A ,pgr_sys_ref_count_error, @{Number of system segments referenced Aby execution environment exceeds Amax_system_seg_refs.} A ,pgr_no_program_error, 8 {Input file is not a host Aprogram, or the operating system Ahost unit is missing from an Aoperating system host code file.} 9 ,pgr_no_boot_seg_error, @{System host code file does not Acontain the required boot segment.} A ,pgr_must_be_linked_error, @{Program environment references Aan segment which contains Aunresolved references to Aassembly language routines. AThus the program must be Alinked by the Linker before an Aenvironment can be constructed.} 9 ,pgr_obsolete_segment_error, @{Program contains a reference to Aa segment which was not compiled Awith a Version IV compiler.} A ,pgr_not_enough_mem_error, @{Not enough memory to build Arequired temporary data Astructures during environment Aconstruction process.} A ,pgr_buf_overflow_error @{The buffer into which the PED Ais being generated in not large Aenough to describe the environment Afor the program.} 9 ,); ' "{$page} " "{The following is the interface to the PED_GENERATE routine itself.} & "function ped_generate -(input_file_id: pedgen_file_name; <{File name of program code file for =which a new PED is to be constructed.} - .output_file_id: pedgen_file_name; <{File name of new code file to be =created.} = .is_system: boolean; <{If TRUE the PED for a new operating =system is to be constructed which does =not contain references to segments of =the current operating system.} = .copy_input: boolean; <{If TRUE the PED is inserted in a new copy =of the source code file; otherwise the new =PED is written to the original code file.} = .copy_libraries: boolean; <{Controls whether user is prompted for =where to copy updated versions of library =code files into which new checksums have =been inserted.} = .write_progress_messages: boolean; <{If TRUE progress messages are written =to the standard file OUTPUT describing =how the execution environment is being =constructed.} = .var the_iorslt: integer; <{When an I/O result is returned this =parameter is set to the value of IORESULT. =If no I/O errors occur, this is set to zero.} . .var the_name: pedgen_file_name <{When a unit or a library code file is =not found, or an I/O error occurs this =variable is set to the name of the unit =or file. When none of these errors =occur, this variable is set to the =empty string.} = .): pedgen_result;    {$page}   implementation  ’PEDGEN  ‰ 0"xi`aÉŹ`aÉŹ" ĖĶ%j"ꀒ±ÕŒki!#²ŌY"!×l$$ē`"ē`!×Ä "ēp!א`"瀀!×Ä "ē`!×ÉŚŌ"瀐!×l$$ē$ē$ē!ķiŠ¢"ē€Š"ē€Ņ"ē€Ń"ē€Ó"ē€Ō"ē€Õ"瀒–ž­xh ˜Ó i!yŌ !zŌ!{r!xhŠč"¦?ˆup–7 ‡h­7ia ē ˜va‚€va ē˜vaė’­8/Ä-Ō‡r.ļ–R`e«­7Č`­7p$ļ–k€`„€¬’š`˜w šw–€‚£„„«`Ȅ`pme‚€ ve`˜ve‚€€ ve˜ļ –ń`u n%j k#%Ä#ē˜Ä"{#ē$si­8pÄ­8x±!± Ō "{­8xļ#ęÓ#ē‘–B ˆu¦?­9Ä­8Ä­7‚€ė’¦ ¦¦¦¦¦¦¦¤ k#(²Ōˆ#ī×Ä#ķkŠķ­2¢¦2¦#˜¦˜¦˜¦˜¦˜¦˜¦˜¦­=Ō1ˆu­¤ (‚€Å(ē˜Ä(ē˜Ä(ē˜Ä(ēÄ(ēÄ(ē ˜ÄŠjš€ėh ˜Óaa u!¤ ( zēÅ(ē˜Ä(ē˜Ä(ē˜Ä(ēÄ(ēÄ(ē Ä­˜Ņ!¦Š$­b!p&l"¤ $Š(ē!ĊļŠ (ē!Ċր |hŠ›ˆu­¦ ­¦ ­¦ ¦ ­¤ (˜Ä(ēÄ(ēÄ(ē­>Ä(ēĦ"(ē˜Ä(ēu(|¤ ­1)ēp)ęÓ)ē‘)­Ä)ē˜Ä(|m%ę€ŅÓ%ē­%ę€Ņļ Ä%ymŠē(ēÄ­=åo(|m(}å'å %˜±”Ōzn(}å'å &²”Ōf­=Ō@(}ń%ēb&×ÉŅ(ē%ē"&ׂ€¹Ä'ń%ēb&×ÉŅ%ē"&ׂ€¹oŠ%ēb&×ÉŅ(ēĈ%ē"&×Å&ķnŠŽ%ym‹z’(}ń ļ­=Ōˆ‚€"Å'ń ļ– » „„"«`Ȅ`p‡!˜Ó=‡!mnf‚€&vf`˜vf‚€*vf%ē ˜vf‚€.vf%ē˜€+vf˜š Šme‚€/ve`˜ve‚€3€"ve˜š –#~7„4„;«„0„9«eȄ4ep`Ȅ0`p‡8˜Ó\‡8¤ ¤ „ ‚€> v„ e˜v„ ‚€D€!v„ `˜€)v„ ‚€L€/v„ *ē ˜€6v„ ‚€P€7v„ *ē˜€Fv„ ˜š Š7¤ „ ‚€Q v„ e˜v„ ‚€W€!v„ `˜€)v„ ‚€_€=v„ ˜š –<ī¤‚ „‚ €P” Ņš‡‚ ˜įr‡‚ ›€ß˜˜rp¤‚އ‚ŽÓU‡‚ ¤‚„‚›€ß˜v„‚‚€jv„‚˜˜rp¤‚އ‚ŽŅ$›€ß¤‚„‚›€ß˜v„‚‚€mv„‚ė‡‚ްՅ‡‚ ¤‚‡‚ēÉÓ ‡‚ ‡‚Žš‡‚ę‡‚ę£ih¤‚ ‡‚ åÕQ‡‚ „  sjp¤‚Ž"±‡‚ޱ Ō ‡‚ ‡‚Žš ¢h !°¤‚ m%’³ŸÕ%l’$£ „ $pk„ $#¢§ °¤ #$¢ķm(Õź$#¢k„ $§Ņ$¢l#$£€ „ $pn$&¢l#į$£€ „ #īpn#&¢k#$£o'€’²ń€’o'³Õ¢„ $„‚ 'p„‚ 'Č„‚ §¤‚¤‚‡‚‡‚²Ō-„‚ ‡‚§ƒ€pŚŌ„‚ ‡‚„‚ ‡‚§€a£€A¢Č‡‚ķ¤‚ŠŹ„‚ ‚€xčŌ¤‚ ® u® x¤‚‡‚˜Ä‡‚ē悏ē„‚ §ķ” ²ń ‡‚z„‚ 뒊š® x¦ ‹ęž‹Øž‡‚ Ō:® u® x¤‚‡‚˜Ä‡‚ē悏ē ” ²ń ‡‚z‚€€ė’Šš® x¦ ‡‚ r„‚ €P” ¦ –‚!‡€‚§³Ō"‡€‚§£ķh‡€‚˜a va‚€ˆčŌ‡€‚ v–€‚ T;„€’„¾įr„€ŗ„€’Ä­¤„»š‚€‹w š­˜w š‚€•w š`w šw ƒ€—ŚŌĢ ƒ€ŸŚÕׄ‡„»{ēė’„„ „ėš‚€§w š„€’w šw „§²ŸÕž„§šē,ÉŅp„§¤„¼j"‡„¼²Ō „"§ƒ€³ŚŌ„"„"§€a£€A¢Č"ķjŠŁ„‚€»„˜vi!Ó„!v„ ˜„€’!v‚€¼„˜viŠŽ„„§§€.Ņ „„§vŠ"„¤„¼„„¼„˜€’v„„¼‚€½€’v„„¼ė’‡€ŗ˜įr‡€ŗ„˜˜rpÓ ‡€ŗpšš‚€Ąw š­˜w š‚€Åw š„˜w šwo¤ ‡„»{ꇄ»{ę£m%²ńb%³ń%nŠn‡„»{„€»&'skp±#&± Ō ‡„»{pš‡€ŗ„€»&(slp±$&± Ō ‡€ŗpš'&¢o(&¢¤ %&£mŠ™‡€ŗrš‚€Čw š(wš‚€Ów šw„€’r–…;6£„ „„«­a„ p&h ŅN!¤‡Ņ9­ķ¦­€2²ń ē­įÄ­˜Ó­ē!Ċ!¦!¦­:Ō„ ˜˜‡¤§‹pk˜m˜¤­n&˜±-˜°”Õś&¤‡yåÕ‡zo‡ēćēćē€P” ²ŸÕö‡{˜įr‡{'˜˜rpÓ.'‚€Ūčń%‡{¤ „ '˜€’v„ ‚€ć€’v„ ˜˜rpÓ3‡ēĤ „ ‚€ęv„ '˜€’v„ ‚€ļ€’v„ ˜ļ Št‡ē&ļ Ä­0Ņ]‡|ę€ÕŅS­:Ō¤ „ ‚€õv„ '˜€’v„ ˜ļ ‡ē” '˜­8tÓ ‡{­8xļ­;Ԑ‡ē&ļ ćēÄŠļ‡zÕ¤‡|¤ j"å(˜±”Փ(¤ ¤ "å)²”ÕW‡ ēb)×ɤ *±Õ=*‡¤°‡ ē")ׄ ¹”Չ‡ 瀂)× ÉÓ„ ˜ļ‡ ēb)×ÉŌ„ ˜ ļ(¤)¤‡}ń2‡ēćē­"ć~€2²ń ļ­"ķ¦"‡ē˜Ä­ ē&Ä&¦ ‡ 瀒)פ!‡!z‡!yŒ £l#$³j‹œ*°Õ–‡ 瀒)ׄ ¹Ճ#ķk„ u,¤!‡!‡ ē")×ҁ!ē˜Ä‡!ē˜Ä‡!ē˜Ä‡!ēć!ēć!ē (ć!ē )Ä%˜Ņ,m­˜Ó­ē,Ċ,¦,¦­:Ō‡ ē")ט„ ˜&{-˜Ó#$³j)ķ¤ ‹ ž"ń&‡ y˜Ņ‡ ę€ŅÓ‡ ē&‡ ę€Ņļ だy¤ ‹dž-˜Ņ#²ń„ ˜ļ&­°­ å”Ԑ‡xn‹üü-˜Ņ­=Ō„ ˜ļ ¤§ pŠ„ ˜ļ­:Ō„ ˜&{„ u­˜Ó­ē+Ċ+¦+¦ įŅ!ē+Ċ!ē+Ä+¤‡„ Å‡ē˜Ä‡ē˜Ä‡ē˜Ä­#¦­#¤§‡ē­#Ä­#ķ¦#‡ēćē -ćē .Ä-瀒.×z¢¤­/¢¦­0°­4° Ō‡ē /” /ÓļŠ(­3­2£ķ/Œ³Ō‡ē ­1­2×Ä­2/Œ¢¦2Šļ‡ę ¤ ‡ /£Ä‡ ē/īŒp‡ ē-瀂.×ÉīׇĄ ‚¹ń‡ ēī×­!Ċ‡¦!‡ē #ćē %Ä­#¢¦‡ę ¤ &¤!‡ę 燁ę פ"‡"x‡"y¢¤‡"yŒ¤‡!{„ ‡s¤­8pć±­8x± Ō ‡!{­8xļ‡ ¢²Ōc„‡ ¢„ p„§ŅŠw„‚¹Ō‡ 燁 xķīׄ§ÄŠ'‡ ē„§īׄ˜ļ Ä­=ń„‚ ¹Ō¦‡ ¢¤Š“„‡ ¢„‡£ ¢‡£p‡£¤‡ķ¤Õ=’–¦¢­2¢īh­9­9x ¢Ä­4ŅI$ń ­1­2­3­2£ķp ¢īi­5­1!­6sjpk"!±#± Ō­5#ļ­6"¢¦6¦2Š$Ōļ–Å­3­2£ķ³ńļ`­1­2p­2¢¦2– "²ń;­3­2£ķh Ņļ­3ķh" ³ń"iŠ i#­1­2!p­2!¢¦2c#!×Ä"!£jŠĄ–+"§ķh Ō ""§ķČ ķha"Ä! ļ–¤„ `Ä.˜Ój.¤ `*Å*ę ¤ +ē¤ ,*ę פ-yl-xm*ęŅ ,瀐*ę ×xnŠn+x~o„ ,ē`*ę × ÉŹ„ ,瀀*ę ×ÉŹ„ Ź)ļ*~¤Š’–Ī6„0‡<Ő ‡=ŌV„˜ ¤ '|¤*‡*˜ÓB‡*¤-‡-ē¤.¤/¤+‡+‡/²Ō$‡.ē`‡+×É҇.ē ‡+ט ¤,‡+ķ¤+ŠÕ‡-y¤*йŠ‚ ¤!„˜ ¤ ˜¤'#¤&‡&˜±Õ¶‡&¤-‡-ę ¤%‡-ę ¤.¤,‡,‡.²ŌQ‡=Ō‡&‚¹‡%‚¹”Ō‡#¤ ‡%ē‡#ć-ę ē‡%ę 瀂‡%ę ×Éīׇ#ć#ķ¤#‡%~¤%‡,ķ¤,ŠØ‡=ń?‡-ę ē‡-ę xķī×x¤(‡(Ó(‡'˜Ņ‡-ę ē‡(īׇ Ċ‡-ę ē‡(īׇ'ć&¤'‡-~¤&‹C’‡'˜Ó‡'¤Š‡ ¤‡" ‡1p‡0ŅF!¤&‡&˜Ó‡&¤-„$‡-ć$‡-~¤&Šę)¤)‡)˜Ó!‡)¤-‡-|ę€Õ‡-{ē ‡-{琇-¤)ŠŚ‡0°‡4° Ō'#¤&‡&˜Ó‡&¤-„$‡-ę ć$‡-ę x¢Œ‡-~¤&ŠÜ#%‡0Ņ=)¤)‡)˜Ó‡)¤-„$‡-{ć$€P‡-¤)Šä!¤&‡&˜Ó‡&¤-„,‡-ę ć,‡-~¤&Šå„u–>ō€`„€¬’‡€„¦‚s­‚j‡€ƒÄ­‚i`ė’p–€„9`u l j"˜Äˆ"ē#si!±p± Ō pˆé˜ļ"ęÓ"ē‘–h"§ih !²Ō" §ƒŚŌ " " §€a£€A¢Č ķhŠŽ–ņ­Y²ń~­Y ³ń­Y¦ZŠ ¦Zˆ­d­Z­Vs¦[­[­Z±p± Ō pˆé˜ļˆ.­d­Z­Ws¦\­\­Z±p± Ō pˆi˜ļ­V­Z¢¦V­W­Z¢¦W­Y­Z£¦Y‹|’–ūh„é„‚q¬’„i„‚o¬’„.„Zįre„2įr‡‚i‚$ė’„é„i¤‚s‚%„é˜vŅ[e¤€é„€é„é˜€’v„€é‚(€’v„€é˜rpŅ&„é¤€é„€é„é˜€’v„€é‚+€’v„€é뒊 e„é˜rŠ e„é˜rpÓ p„é˜‡‚mŌN„.„i˜rpÓ p„i˜‡‚kŌ/š‚.w š„é˜w š‚3w š„i˜w šwh„eu‡‚mÕl¤W i!ę€ŃÓ!!ę€ŃÄ!xi‡Wķ¤WŠę„d u¤X j"˜±Õ"¤€é‡€é礀꤀ėl$‡€ė²ÕŖ‡€źē`$×ɱՔ‡€źē`$×ɰ‡€źēp$×x±”Ō$‡€źēp$×x¤V‡€źēp$ׇWć€źē€$×{¤Y‡€ź$×x¤V‡€ź$ׇW怼ē`$×ÉŚŌ‡€ź$×y‡€źē€$×y¢¢ī¤YЇ€ź$×y¢ī¤Y$ķl‹N’‡€éx˜Ó ‡€éē€Ń‡XķĊ‡€éē€ŃĄ.‡€éē‡Xs¤\‡\±p± Ō p„i˜‡Xķ¤X‡€éxj‹ēž‡‚kŌ#š‚6w š‡Wwš‚Aw šw„eucu# ٤]„^ ēĤ_ī¤`¤a‡‚mŌ „b„.ćW¤cŠ"„beÄ#ę€ÕÓ#ę€Õ¤WŠ ‡bę‡b棤W‡W¤c‡b‡‚n„]‡‚l‡‚k„f‡‚j„h‘¤€č‡‚i„hė’‡€č°Õ‡#礀釀éē€Ō‡Wć€éē€Õ‡f¢īÄ‡‚mŌ+„.#ēs¤\‡\±p± Ō p„i˜„.rŠ4ere„é˜re#ēs¤\‡\±p± Ō p„é˜erŠr‡‚mŌ„.r‡€čŠ`¤‚sŠ]¤‚sŠW¤‚sŠQ¤‚sŠK¤‚sŠE¤‚sŠ?¤‚sŠ9 ¤‚sŠ3 ¤‚sŠ- ¤‚sŠ' ¤‚sŠ! ¤‚sФ‚sФ‚sФ‚sŠ ¤‚sŠցI„.rer–‚r” –: Warning:  unit not foundSEGMENT ’’’ź’ń’öKERNEL USERPROGKERNEL Using  from :Using  from *SYSTEM.PASCALL Including  as segment of  from : Including  as segment of  from *SYSTEM.PASCALL.TEXT.TEXT’ž’*SYSTEM.LIBRARY*SYSTEM.LIBRARY.CODECopy updated file ? @@Copy to what codefile? ’ž’$$.CODECopying  to Copying complete. (( blocks copied)*SYSTEM.LIBRARY.CODEWarning: Library not founddInstalling new checksum into KERNEL *** REALOPS KERNEL KERNEL USERPROG’ž’.CODE.CODE.CODECopying  to Copying complete. (( blocks copied)’’£’©’Æ’µ’»’Į’Ē’Ķ’Ó’Ł’ß’å’ė’ń’÷ 6  ż 阈eSśĮ`#0ūŌø«žiŌ  { …*** EXTRAHEA PASCALIOSTRINGOPHEAPOPS CHKSUMOPEXTRAIO FILEOPS  üCHKSUMOP €€€€€€€€€€€€€€€€D%,Copyright (c) 1983 SofTech Microsystem, Inc.” ķĪ’¢ |”& " $const max_chksum_file_name_length = 255; $ $type chksum_file_name = string[max_chksum_file_name_length]; $ )chksum_result = + +(chksum_no_error, 6{Checksum operation 7successful} 4 ,chksum_obsolete_error, 6{Checksum in code 7file is obsolete; 7i.e. the contents 7of the file have 7been changed} 7 ,chksum_io_error 6{Error opening, 7reading, or 7writing code 7file} *); $ $ $function chksum_gen(file_id: chksum_file_name; 8var iorslt: integer): :chksum_result; : $function chksum_check(file_id: chksum_file_name; :var iorslt: integer): $„ #„„p""p°Äp"""xp°”Ä"xԁ°‚€L`‘!‘Ċ!ĖG‘ –Y`"ņ`Å–j „€Æ`a‘–Œ€€†€Œp‘t‘€€†€Œp–’ż€’’’žÉ’’AT #E Q V X1 S7=60 S10=30 S11=36 S12=40+++#E Q V X1 S7=60 S10=30 S11=36 S12=40ADTTHOH11’ž’MASKKFLOWINNFLOWOUTMaskk/[B õŅ>!·«ŻĒ•€ž&bD,ģ!Œ’7*** REALOPS STRINGOP œREMUNIT €€€€€€€€€€€€€€€€®2Copyright 1979 - 1983, RB&A. All rights reserved.\Ždķš’F"ˆ\Ž"   TYPE (CrDialResult = (CrOffHook, CrDialError, CrNoAutoDial ); (CrBaudResult = (CrBadParameter, CrBadRate, CrSetOk, CrSelectNotSupported); (CrWhoAmI = (CrOrig, CrAns); (CrState = (CrOn, CrOff, CrAuto); (CrRemPort = RECORD ,Part1 : INTEGER; ,Part2 : INTEGER ,END;   VAR (CrAttenChar : CHAR; (CrCurrentPort : CrRemPort;    PROCEDURE CrCommInit (Dir : CrWhoAmI; 6Atten : CHAR; 2VAR RemExists : BOOLEAN; 2VAR DialerExists : BOOLEAN);  PROCEDURE CrSetCommunications (Parity : BOOLEAN; ?Even : BOOLEAN; ?Rate : INTEGER; ?CharBits : INTEGER; ?StopBits : INTEGER; ?Dir : CrWhoAmI; ?Model : STRING; ;VAR Rslt : CrBaudResult );  PROCEDURE CrCommQuit;  PROCEDURE CrPutRem (c : CHAR);  PROCEDURE CrAnswer;  PROCEDURE CrBreak;  PROCEDURE CrDial (Number : STRING; WaitChar : CHAR; VAR Rslt : CrDialResult);  PROCEDURE CrHook (OnHook : BOOLEAN);  PROCEDURE CrSetAddress (Port : CrRemPort);  PROCEDURE CrDelay (Tenths : INTEGER);  PROCEDURE CrSetDtr (Setting : CrState);  PROCEDURE CrSetRts (Setting : CrState);  FUNCTION CrRemStat : BOOLEAN;  FUNCTION CrGetRem : CHAR;  FUNCTION CrCarrier : BOOLEAN;  FUNCTION CrClearToSend : BOOLEAN;  FUNCTION CrRinging : BOOLEAN;  FUNCTION CrDialTone : BOOLEAN;  FUNCTION CrKbStat : BOOLEAN;  FUNCTION CrGetKb : CHAR;   IMPLEMENTATION ›REMUNIT ś[*a„+¬Pšrša˜r š‚€r ‘h ƒ€ ŚŌņš sšr ƒ€ڤ-–,††€®Č ҆€® pŠ †€®p–±†€®€ Č Ņ†€® pŠ †€®p–Ɇ€p$†€ē Éåh–ꆀp$†€h ēÉ ē Éå”i–’†€p$†€x²Ÿh–†€p$†€x²Ÿh–4` p4Ō `§€”iŠ`§i–F`!Č` p–X` p`§i–|$jh "²Ō”ki!#²Ō!ķiŠö ķhŠę–`Č` p‘ `p–æ3҆€p$†€h ē ÉåiŠi–Ģ„ ‘ –ć3ŅhŠ ‚€‘h–*a„-¬Pšrš‚€$r ša˜r ‚€,‘Ō‡+Ċ‡+Ä„–.” ŌB‘ 3Ņ9„šrš‚€:r :Ņš‚€Gr šrŠš‚€Or šrŠ+‘ 3Ņ$„šr:Ņ š‚€Vr Š š‚€kr –d/f„1¬P‡8„‡7„‡6„‡5„ ‡4„ ‡3„ † fė’† §mh %²Ō † §ƒ€tŚŌ† † §€a£€A¢Č ķhŠŪ‚€|† ˜t²Ÿ„a†€ŒÅK‡6ib‚€† ˜t²ŸŹb‚€ƒ† ˜t²ŸŹb ‡5£Źb ‡8Źb ‡7ʇ4ŅbʊbŹdŹ€€ap‡0Ė8¦$„ #„„p""p°Äp"""xp°”Ä"xԁ°‚€‡`‘!Ċ!˲‘ ‘ –Ć`"ņ`Å–Š`a‘–ņ€€†€Œp‘u‘€€†€Œp– ? [y/n] : @@Get a good Dial ToneePlease Dial : Did you Succeed in DialinggPhone assumed On Hook in Originate mode. Answer mode..)Phone assumed Off Hook in Originate mode.Answering Phone..’ž’MASKKFLOWINNFLOWOUTMaskkä „‚čŃg[wE0®ŪōĄāœÕL“ź*** STRINGOPEXTRAIO PASCALIO O^¦5¦{ (.TITLE "SAGE Multi-User System Bootstrap" .PROC BOOTMU   ;********************************************************************** ;  ; SAGE COMPUTER - Multi-User System Bootstrap from floppy  ;  ; File: MU4.FBOOT.TEXT  ; Date: 7-Nov-83  ; Issue: 1A  ;  ;  ; COPYRIGHT (c) 1982, 1983 SAGE Computer Technology  ; All Rights Reserved  ;  ;**********************************************************************  ;  ; History:  ;  ; 1 3-May-83 Initial release.  ; 1A 7-Nov-83 Fixed Boot extension & User boot options.  ;  ;**********************************************************************  ;  ; This bootstrap is to be located in logical blocks 0 and 1 on a  ; floppy diskette. The floppy diskette bootstrap command in the  ; PROM Debugger will read logical blocks 0 and 1 into memory at  ; location 400H.  ;  ; The bootstrap routine first reads in the p-System directory  ; from the floppy diskette. Then the bootstrap searches the  ; directory for the file MU.BIOS which contains the SAGE  ; Multi-User Basic Input/Output System routines. Once found the  ; BIOS code is positioned into the highest memory available.  ;  ; Next the bootstrap searches for the file MU.CONFIG. If it  ; finds the file it reads it into memory. Otherwise the bootstrap  ; prompts the user for the configuration file name. An immediate  ; carriage return will terminate the bootstrap. Once the  ; configuration file is found it is read into memory and its  ; address is store at CONFADDR (208H).  ;  ; Finally the bootstrap transfers to the BIOS for initialization  ; and the Multi-User executive takes control. The BIOS only  ; returns if no tasks are defined.  ;  ; Note: The Boot extension and User bootstrap features are not yet  ; supported.  ;  ;********************************************************************** (  ; Macro for calls to PROM area.  ; (required for generation of long addresses). (.MACRO LJSR (.WORD 4EB9H (.WORD 00FEH (.WORD %1 (.ENDM (  ; Permanent jump vector assignments in PROM  KEYBCH .EQU 8H ;Get a keyboard character  TERMCHAR.EQU 14H ;Output a character  TERMTEXT.EQU 18H ;Printout text string  TERMCRLF.EQU 1CH ;Printout carriage return & line feed  FDREAD .EQU 28H ;Read from floppy diskette (  ; RAM variables for Debugger  MEMTOP .EQU 100H ;Top of memory   ; RAM variables for BIOS  BIOSBASE.EQU 200H  CONFADDR.EQU 208H  (  ; Constants for BOOT positioning  HDSIZE .EQU 26. ;Size of header data in uncompressed code file   (.ASCII "BOOT" ;This text is checked by the Debugger @; bootstrap process to insure that the @; boot area has been initialized with @; a bootstrap routine.   START ;The Debugger transfers control to @; offset 4 in this file. (  LEA SCRATCH,A3 ;Set up RAM area for bootstrap (MOVE.L (A7)+,(A3) ;Save the return address (MOVE.W (A7)+,4(A3) ;Save the drive number (CLR.B 21.(A3) ;Clear the BIOS active flag (  ; Output initial boot message (LJSR TERMCRLF (LEA INITMSG,A0 ;Printout "SAGE Multi-User Bootstrap" ( LJSR TERMTEXT (LJSR TERMCRLF (  ; Read in p-System directory (LEA DIRNAM-1,A6 ;Set up message in case of error @; note: does not have byte count. (MOVE.W #2,-(A7) ;The p-System directory is at block 2 of ( ; each devices. (LEA BUFFER,A0 ;Set up the directory buffer address (MOVE.L A0,-(A7) ;Buffer address (MOVEA.W #2048.,A0 ;The directory is 2K bytes long (MOVE.L A0,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in the directory with the floppy @; driver in PROM. (BNE BADREAD ;Found error reading directory (  ; Now search for MU.BIOS and read in first block (LEA BIOSNAM,A6 ;Set up search string (BSR SEARCH (BNE SRCHERR ;Could not find MU.BIOS (ADDQ.W #1,D1 ;Code starts at relative block 1 in file (MOVE.W D1,-(A7) ;Set up logical block for BIOS code (MOVE.W D1,6(A3)  ;Save logical block for later (LEA BUFFER2,A5 ;Set up buffer address for first block (MOVE.L A5,-(A7) ;Buffer address (MOVEA.W #512.,A0 ;Set up size for one block (MOVE.L A0,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in first block (BNE BADREAD ;Found error while reading BIOS (  ; Calculate target address for BIOS and read it into memory. (LEA BIOSPASS,A0 ;Check for BIOS password code (LEA BUFFER2+HDSIZE,A5 ;Adjust for header data in code file (CMPM.L (A5)+,(A0)+ (BNE BADPASS ;Password is not correct (MOVE.W 6(A3),-(A7) ;Set up logical block number (MOVEA.L MEMTOP,A1 ;Get current top of memory (MOVEA.W (A5)+,A0 ;Get BIOS code size (ADDA.W #HDSIZE,A0 ;Also read in header data (SUBA.L A0,A1 ;Set up code address for floppy driver (MOVE.L A1,-(A7) ;Set up BIOS codefile address in memory (MOVE.L A0,-(A7) ;Set up floppy transfer length (ADDA.W #HDSIZE,A1 ;Now form actual code address (MOVEA.L A1,A4 ;Save base of BIOS to calculate init address (MOVEA.W (A5)+,A0 ;Get size of BIOS buffer area (SUBA.L A0,A1 ;Form base of BIOS area in memory (MOVE.L A1,BIOSBASE ;Store new top of memory address (ADDA.W (A5),A4 ;Form BIOS Initialization routine address (MOVE.L A4,8(A3) ;Save starting address (MOVE.L 88.-8(A5),12.(A3) ;Save RAM Disk address (MOVE.L 92.-8(A5),16.(A3) ;Save top of RAM Disk (MOVE.B 96.-8(A5),20.(A3) ;Save RAM Disk Boot Flag (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in the whole BIOS (BNE BADREAD ;Found error while reading BIOS (  ; Read in Configuration info (LEA CONFNAME,A6 ;Set up search string (BSR SEARCH (BEQ $60 ;Found default file MU.CONFIG   ; Prompt user for name of configuration file  $10 LJSR TERMCRLF (LEA ASKCONF,A0 ;Ask for configuration file (LJSR TERMTEXT (LEA FILENAME,A6 ;Build filename string (CLR.W D1 (MOVE.B D1,(A6)  $20 LJSR KEYBCH ;Get a keyboard character (CMPI.B #0DH,D0 ;Check for carriage return (BEQ.S $50 ;Found terminator (CMPI.B #8,D0 (BEQ.S $40 ;Found Backspace (CMPI.B #" ",D0 (BLE.S $20 ;Don't process control characters or space (CMPI.B #15.,D1 (BGE.S $20 ;Too many characters (ADDQ.W #1,D1 ;Advance pointer (MOVE.B D0,0(A6,D1.W) ;Store character  CLR.B 1(A6,D1) ;Set up null terminator  $25 MOVE.B D1,(A6) ;Update string count (LJSR TERMCHAR ;Echo the character (BRA $20 ;Back for another character (  ; Handle backspace  $40 TST.W D1 (BEQ $20 ;Don't backspace past beginning (LJSR TERMCHAR ;Output Backs!pace (MOVEQ #" ",D0 ;Output blank (LJSR TERMCHAR (MOVEQ #8,D0 ;Set up another backspace (SUBQ.W #1,D1 ;Back up the pointer (BRA $25 (  ; Handle no file  $45 LEA SRCHMSG,A0 ;Printout "Could not find " (LJSR TERMTEXT (MOVEA.L A6,A0 (ADDQ.L #1,A0 (LJSR TERMTEXT ;Printout file name (LJSR TERMCRLF (BRA $10 ;Try again (  ; Handle carriage return  $50 LJSR TERMCRLF (TST.B D1 (BEQ PRTERR2 ;Null name field, exit debugger (BSR SEARCH (BNE $45 ;Did not find file (  $60 MOVE.W D1,-(A7) ;Set up logical block (LEA BUFFER3,A5 ;Set up buffer address (MOVE.L A5,-(A7) ;Buffer address for driver (ADDA.W #512.+HDSIZE+6,A5 (MOVE.L A5,CONFADDR ;Save address in BIOS area (ADDA.L D2,A5 ;Set up free address beyond configuration (MOVE.L A5,12.(A3) (MOVE.L D2,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in configuration (BNE BADREAD ;Found error while reading Configuration ( (MOVEA.L CONFADDR,A5 ;Check password on configuration (SUBQ.L #6,A5 (LEA CONFPASS,A0 (CMPM.L (A5)+,(A0)+ (BEQ.S $65 ;Password is good (LEA NOCONFIG,A0 ;Printout not configuration (LJSR TERMTEXT (LJSR TERMCRLF (BRA $10 (  ; Search for the optional MU.BOOTEXT.CODE file  $65 MOVEQ #0,D4 ;Default address (LEA BOOTEXT,A6 (BSR SEARCH (BNE.S $70 ;Optional boot extension not found (MOVE.W D1,-(A7) ;Set up logical block (LEA SCRATCH,A3 (MOVE.L 12.(A3),-(A7) ;Set up memory buffer (MOVE.L D2,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in boot extension code (BNE BADREAD ;Found error while reading boot extension (LEA SCRATCH,A3 (MOVE.L 12.(A3),D4  ADDI.L #512.+HDSIZE,D4 ;Bias to p-System assemby code (MOVEA.L D4,A5 (LEA EXBTPASS,A0  CMPM.L (A5)+,(A0)+ (BEQ.S $70 ;Good boot extension (LEA BADEXT,A0 ;Printout bad MU.BOOTEXT.CODE (LJSR TERMTEXT (LJSR TERMCRLF (MOVEQ #0,D4 ;No boot extension (  $70 LEA STACK,SP (MOVE.L D4,-(SP) ;Pass boot extension address (MOVE.W 4(A3),-(SP) ;Physical drive number  ADDQ.W #4,(SP)   ; Search for the optional USER.BOOT.CODE routine (MOVEQ #0,D4 ;Default User boot routine address (LEA USERBOOT,A6 (BSR SEARCH (BNE.S $80 ;No user boot (MOVE.W D1,D4 ;Save routine block address  $80 MOVE.L D4,-(SP) ;Pass User Boot routine address (MOVE.L D2,-(SP) ;Pass User Boot routine size (MOVE.W #0ABCDH,-(SP) ;New boot indicator code ( ; Initialize the BIOS  ENTER MOVEA.L 8(A3),A4 ;Get BIOS initialization address (JSR (A4) ;Initialize BIOS (  ; Never returns unless no tasks defined (MOVE #2700H,SR ;Make sure interrupts disabled (LEA NOTSKMSG,A0 (BRA PRTERR1 ( (  ; Search Routine for directory entry  ; A6 is pointer to target string.  ; A1 is returned with block address of start of code in file.  SEARCH (LEA BUFFER+32.,A5 ;Set up pointer to directory entry @; skipping initial volume entry. (LEA -16.(A5),A0 (MOVE.W (A0),D0 ;Get number of files (CMPI.W #77.,D0 ;Check for limit (BLE.S $5 ;Within limit  ROL.W #8,D0 ;Check if byte directory needs flipped  CMPI.W #77.,D0 ;Check limit again (BGT BADDIR ;Illegal directory   ; Swap bytes in directory (MOVE.W D0,(A0) ;Store swapped number of files (ADDQ.L #4,A0 (MOVE.W D0,D3 (BSR.S BYTSWAP ;Swap the date word (ADDQ.L #4,A0  ; Swap each dir!ectory entry  $2 BSR.S BYTSWAP ;First block (BSR.S BYTSWAP ;Last block (BSR.S BYTSWAP ;File kind (ADDA.W #16.,A0 (BSR.S BYTSWAP ;Last byte of data (BSR.S BYTSWAP ;Date (SUBQ.W #1,D3 (BNE $2 ;Back for more (  $5 TST.B D0 ;Check for empty directory (BEQ.S $40 ;Directory was empty, entry not found (  ; Base of loop for each entry  $10 MOVEA.L A6,A0 ;Set up pointer to test string (MOVEA.L A5,A1 ;Set up pointer to directory entry (CLR.L D1 (MOVE.B (A6),D1 ;Set up byte count for testing (  ; Base of loop for each character  $20 CMPM.B (A0)+,(A1)+ ;Compare the entries (DBNE D1,$20 (BNE.S $30 ;Found miscompare (CLR.L D2 (MOVE.W -6(A5),D1 ;Get starting block number (MOVE.W -4(A5),D2 ;Get trailing block number (SUB.W D1,D2 ;Form size in blocks (LSL.L #8,D2 ;Form size in bytes (LSL.L #1,D2 (CLR.B D0 ;Zero flag indicates success (RTS (  $30 SUBQ.B #1,D0 ;Check entry count (BEQ.S $40 ;Could not find entry (LEA 26.(A5),A5 ;Short way to advance address pointer (BRA.S $10 ;Back for another try (  $40 MOVE.B #1,D0 ;NE flag indicates failure (RTS (   ; Byte swap routine  BYTSWAP MOVE.W (A0),D1 (ROL.W #8,D1 (MOVE.W D1,(A0)+ (RTS    ; Found error while reading diskette.  ; Printout message about problem and return to debugger.  BADREAD LEA READMSG,A0 ;Printout "Error reading "  BRA.S PRTERR    ; Could not find "BIOS" password in SYSTEM.BIOS file.  ; Printout message about problem and return to debugger.  BADPASS LEA PASSMSG,A0 ;Printout "Not BIOS code in " (BRA.S PRTERR    ; Directory entry size was in error.  ; Printout message about problem and return to Debugger.  BADDIR ADDQ.L #4,A7 ;Get rid of return address (LJSR TERMCRLF (LEA DIRMSG,A0 ;Printout "Illegal directory" (BRA.S PRTERR    ; Could not find file in directory.  ; Printout message about problem and return to debugger.  SRCHERR LEA SRCHMSG,A0 ;Printout "Could not find " (   ; Printout error message  PRTERR LJSR TERMCRLF (LJSR TERMTEXT (MOVEA.L A6,A0 ;Set up pointer to name of item being read (ADDQ.L #1,A0 ;Bypass byte count  PRTERR1 LJSR TERMTEXT ;Printout type of information (LJSR TERMCRLF  PRTERR2 MOVEA.L (A3),A0 ;Return address to Debugger  JMP (A0)  (  ; Passwords (must have word alignment)  BIOSPASS.ASCII "BIOS" ;MU.BIOS password  CONFPASS.ASCII "MUCF" ;Configuration password  EXBTPASS.ASCII "MUBE" ;Boot extension password    ; Messages  INITMSG .ASCII "SAGE Multi-User System Bootstrap" (.BYTE 0   READMSG .ASCII "Error reading " (.BYTE 0   SRCHMSG .ASCII "Could not find " (.BYTE 0   PASSMSG .ASCII "Not BIOS code in " (.BYTE 0   NOTSKMSG.ASCII "No Tasks" (.BYTE 0   ASKCONF .ASCII "Configuration file? " (.BYTE 0   NOCONFIG.ASCII "Not MU configuration" (.BYTE 0    BADEXT .BYTE 7 (.ASCII "Bad MU.BOOTEXT.CODE" (.BYTE 0   DIRMSG .ASCII "Illegal "  ; Must fall into DIRNAM.   ; File names  DIRNAM .ASCII "directory" ;Only for error printout (.BYTE 0   BIOSNAM .BYTE 8 ;String byte count (.ASCII "MU4.BIOS" (.BYTE 0 ;Terminator for TERMTEXT   CONFNAME.BYTE 9 (.ASCII "MU.CONFIG" (.BYTE 0 (  USERBOOT.BYTE 14. (.ASCII "USER.BOOT.CODE" (.BYTE 0 (  BOOTEXT .BYTE 15. (.ASCII "MU.BOOTEXT.CODE" (.BYTE 0 ( (.BYTE 2 ;Bootstrap Version @;If bootstrap ends w"ith a non-zero value @; the device to device bootstrap transfer @; can determine the size. ( (.ALIGN 2  SCRATCH .EQU *+1024. ;Ram scratch area  ;Offsets: @; 0.- Return address to Debugger @; 4.- Drive number (0 or 1) @; 6.- Logical block for BIOS @; 8.- Starting address of BIOS @;12.- Starting address of boot extension @;16. @;20. @;21. @;22.- Temporary storage (4 bytes)   FILENAME.EQU SCRATCH+26. ;Configuration file name  STACK .EQU FILENAME+18.  BUFFER .EQU STACK+512. ;p-System directory  BUFFER2 .EQU BUFFER+2048. ;First block of BIOS  BUFFER3 .EQU BUFFER2+512. ;Configuration storage  (.END    żBOOTMU ‹BOOTMU IV.13 [a.1]ü ś’’BOOTGśŌ&Ÿ7_B+N¹žAśÜN¹žN¹žMśm?<Aś Ō/0|/?+N¹ž(fdMśVaęfrRA?7AKś¦/ 0|/?+N¹ž(f6AśpKś¢±f.?+"x0]Šü“Č/ /Ņü(I0]“Č!ÉŲÕ'L'mP 'mTmX?+N¹ž(fąMśÜabg’N¹žAśoN¹žMśBAN¹ž gZ g oč lāRA€B6N¹ž`ĪJAgŹN¹žp N¹žpSA`ŽAśčN¹ž NRˆN¹žN¹ž`‚N¹žJg„aŠfŅ?Kś˜/ Śü !ĶŪĀ'M /?+N¹ž(f*x]AśV±gAśĘN¹žN¹ž`’*xMśa|fD?Gś/+ /?+N¹ž(fÖGś(+ „*DAś±gAś‰N¹žN¹žxOś/?+XWxMś„a f8//?<«Ķ(kN”Fü'Aś`¦KśīAķ’š0 @Mo&įX @Mnj0€Xˆ6aLXˆaHaFaDŠüa>aaĪfZRA/'AKś/ 0|/N¹ža,A2 (MOVE.W #11.,(A2)+ (MOVE.W #21.,(A2)+ (MOVE.W #22.,(A2)+ (MOVE.W #23.,(A2)+   ; Write back new Channel Map (LEA CHMAPNEW,A2 (MOVE.L A2,8(A0) ;New Channel Map address (MOVEQ #12.,D0 ;Write request (TRAP #14.   ; Read in RAM Disk Configurations (LEA RDCNFARG,A0 (LEA RD1CONF,A1 (MOVE.L A1,8(A0) ;Destination address (MOVE.W #16.,14.(A0) ;Device (MOVEQ #11.,D0 ;Read request (TRAP #14. ( (LEA RDCNFARG,A0 (LEA RD2CONF,A1 (MOVE.L A1,8(A0) ;Destination address (MOVE.W #17.,14.(A0) ;Device (MOVEQ #11.,D0 ;Read request (TRAP #14.  (LEA RDCNFARG,A0 (LEA RD3CONF,A1 (MOVE.L A1,8(A0) ;Destination address (MOVE.W #18.,14.(A0) ;Device (MOVEQ #11.,D0 ;Read request (TRAP #14.  (LEA RDCNFARG,A0 (LEA RD4CONF,A1 (MOVE.L A1,8(A0) ;Destination address (MOVE.W #19.,14.(A0) ;Device (MOVEQ #11.,D0 ;Read request (TRAP #14. (  ; Read in directory from boot device  LEA DIRNAM-1,A6 ;In case of error (LEA DIRARG,A0 (LEA BUFFER,A1 (MOVE.L A1,8(A0) ;Set up buffer address (MOVEQ #11,D0 ;Read request (TRAP #14. (TST.W 2(A0) ;Check for error (BNE BADREAD ;Found read error    ; Now for each RAM Disk zero the directory (LEA RD1CONF,A2  MOVEQ #16.,D7 ;Device number (BSR ZERODIR ;Zero directory of RAM Disk  (LEA RD2CONF,A2 (MOVEQ #17.,D7 ;Device number (BSR ZERODIR ;Zero directory of RAM Disk  (LEA RD3CONF,A2 (MOVEQ #18.,D7 ;Device number (BSR ZERODIR ;Zero directory of RAM Disk  (LEA RD4CONF,A2 (MOVEQ #19.,D7 ;Device number (BSR ZERODIR ;Zero directory of RAM Disk  (BRA EXIT2    ; Zero Directory  ZERODIR (MOVE.L (A2),D0 ;Check if this RAM Disk exists (BEQ $200 ;Device is not equipped (LEA SCRATCH,A3 (MOVE.L D0,8(A3) ;Save base of RAM Disk (BTST #0,8(A2) ;Check if to be initialized (BEQ $200 ;No initializa%tion specified (MOVE.L 4(A2),D1 ;Top of RAM Disk (SUB.L D0,D1 (BMI $200 ;Too big (DIVU #512.,D1 (TST.W D1 (BMI $200 ;Too big (CMPI.W #6.,D1 (BLE $200 ;Too small (MOVEA.L (A2),A5 (ADDA.W #1024.,A5 ;Beginning of directory (MOVEA.L A5,A0 (MOVE.W #512.-1,D0 ;Clear directory  $10 CLR.L (A0)+ (DBF D0,$10 (MOVEA.L A5,A0 (ADDQ.L #2,A0 ;First block = 0 (MOVE.W #6,(A0)+ ;Next block = 6 (ADDQ.L #2,A0 ;DFKIND = 0 (LEA NEWNAME,A1 (MOVE.W #"1"+16.,D0 (SUB.B D7,D0 (MOVE.B D0,7(A1) ;Set up last character of name (MOVE.L (A1)+,(A0)+ ;Device name = RAMDSKx (MOVE.L (A1)+,(A0)+ (MOVE.W D1,(A0)+ ;Set up size of device in blocks (ADDQ.L #4,A0 ;Bypass number of files and load time (MOVE.W BUFFER+20.,(A0)+ ;Set up last date (CMPI.B #16.,D7 ;Check for first RAM Disk (BNE $200 ;Not first RAM Disk (MOVEM.L A0,-(SP) (LEA BOOTRAM,A0 ;Printout 'Copying to RAM Disk' (BSR TERMTEXT (BSR TERMCRLF (MOVEM.L (SP)+,A0 (LEA SCRATCH,A3 ;Set up scratch area (  ; Set up initial variables (ADDQ.L #4,A0 ;Advance to first file entry in directory (LEA BUFFER,A4 ;Source directory address (MOVEA.L A5,A2 ;RAM Disk address (ADDA.W #2048.,A2 ; bypass directory (MOVE.W #6,D4 ;Block number for RAM Disk (SUB.W D4,D1 ;Number of blocks left in RAM Disk (CLR.W D3 ;Number of files in RAM Disk (MOVE.W BUFFER+16.,D2 ;Number of files on source diskette (  ; Now process each file on source diskette  $20 SUBQ.W #1,D2 ;Check if done (BLT.S $100 ;Done with source files (ADDA.W #26.,A4 ;Advance source directory address  MOVE.L ENDBOOT,D0 (CMP.L 6(A4),D0 ;Check for file: ENDBOOT (BNE.S $25 ;File not found (MOVE.L ENDBOOT+4,D0 (CMP.L 10.(A4),D0 (BEQ.S $100 ;Found file, terminate copy  $25 CLR.L D0 (MOVE.W 2(A4),D0 ;Calculate file size in blocks (SUB.W (A4),D0 (SUB.W D0,D1 ;Will it fit in remaining RAM Disk (BLT.S $90 ;Would not fit ( (MOVE.W D4,(A0)+ ;Set up First block in directory (ADD.W D0,D4 (MOVE.W D4,(A0)+ ;Set up Next block in directory (ADDQ.W #1,D3 ;Advance number of RAM Disk files (  ; Set up transfer (LEA RAMMSG-1,A6 ;Set up for possible error message (MOVE.L A0,(A3) ;Save A0 temporarily (LEA ARGS,A0 (MOVE.W #9,(A0) ;Device number (ADDQ.L #4,A0 (ASL.L #8,D0 ;Multiply by 512 (ASL.L #1,D0 (MOVE.L D0,(A0)+ ;Size in bytes (MOVE.L A2,(A0)+ ;Destination of RAM Disk (ADDA.L D0,A2 ;Advance RAM Disk address (MOVE.W (A4),(A0)+ ;Logical Block on device (CLR.L (A0)+ ;Control word & High block number (MOVEQ #11.,D0 ;Set up read request (LEA ARGS,A0 (TRAP #14. (TST.W 2(A0) (BNE BADREAD ;Found error reading diskette (MOVEA.L (A3),A0 ;Restore A0 (  ; Complete the loop (LEA 4(A4),A1 ;Set up copy of directory entry (MOVEQ #11.-1,D0  $30 MOVE.W (A1)+,(A0)+ (DBF D0,$30 (BRA $20 ;Back for more files (  ; File would not fit  $90 ADD.W D0,D1 ;Put back size (BRA $20 ;Try more anyway (  ; Done transfering all files  $100 MOVE.W D3,16.(A5) ;Set up number of RAM Disk files   ; Now set up RAM Disk Bootstrap (LEA BOOTFILE,A6 ;Look for RAM Disk bootstrap file (BSR SEARCH (BNE $200 ;Could not find bootstrap (ADDQ.W #1,D1 ;Code starts at relative block 1 (LEA ARGS,A0 (MOVE.L #1536.,4(A0) ;Read 3 blocks (LEA BUFFER1,A1 (MOVE.L A1,8(A0) ;Buffer location (MOVE.W& D1,12.(A0) ;Block number (CLR.L 14.(A0) ;Control & High block number (MOVEQ #11.,D0 ;Read request (TRAP #14. (TST.W 2(A0) (BNE READMSG ;Error reading bootstrap (LEA 26.(A1),A1 (MOVE.W #256.-1,D0 (LEA SCRATCH,A3 (MOVEA.L 8(A3),A0 ;Get base of RAM Disk  $110 MOVE.L (A1)+,(A0)+ ;Move bootstrap (DBF D0,$110   $200 RTS     ; Write back Channel Map  EXIT2 LEA CHARG,A0 (LEA CHMAP,A2 (MOVE.L A2,8(A0) ;New Channel Map address (MOVEQ #12.,D0 ;Write request (TRAP #14.  ; Fall into EXIT1   ; Write back Boot Device's Control Information Block & terminate  EXIT1 LEA BDCIBARG,A0  LEA SYSCIB,A1 (MOVE.L A1,8(A0) ;Set up source address (MOVEQ #12.,D0 ;Write request  TRAP #14.  ; Fall into ALLDONE    ALLDONE LEA SCRATCH,A3 (MOVEA.L 4(A3),A0 (JMP (A0) ( (  ; Search Routine for directory entry  ; A6 is pointer to target string.  ; A1 is returned with block address of start of code in file.  SEARCH (LEA BUFFER+32.,A5 ;Set up pointer to directory entry @; skipping initial volume entry. (LEA -16.(A5),A0 (MOVE.W (A0),D0 ;Get number of files (CMPI.W #77.,D0 ;Check for limit (BLE.S $5 ;Within limit  ROL.W #8,D0 ;Check if byte directory needs flipped  CMPI.W #77.,D0 ;Check limit again (BGT BADDIR ;Illegal directory   ; Swap bytes in directory (MOVE.W D0,(A0) ;Store swapped number of files (ADDQ.L #4,A0 (MOVE.W D0,D3 (BSR.S BYTSWAP ;Swap the date word (ADDQ.L #4,A0  ; Swap each directory entry  $2 BSR.S BYTSWAP ;First block (BSR.S BYTSWAP ;Last block (BSR.S BYTSWAP ;File kind (ADDA.W #16.,A0 (BSR.S BYTSWAP ;Last byte of data (BSR.S BYTSWAP ;Date (SUBQ.W #1,D3 (BNE $2 ;Back for more (  $5 TST.B D0 ;Check for empty directory (BEQ.S $40 ;Directory was empty, entry not found (  ; Base of loop for each entry  $10 MOVEA.L A6,A0 ;Set up pointer to test string (MOVEA.L A5,A1 ;Set up pointer to directory entry (CLR.L D1 (MOVE.B (A6),D1 ;Set up byte count for testing (  ; Base of loop for each character  $20 CMPM.B (A0)+,(A1)+ ;Compare the entries (DBNE D1,$20 (BNE.S $30 ;Found miscompare (CLR.L D2 (MOVE.W -6(A5),D1 ;Get starting block number (MOVE.W -4(A5),D2 ;Get trailing block number (SUB.W D1,D2 ;Form size in blocks (LSL.L #8,D2 ;Form size in bytes (LSL.L #1,D2 (CLR.B D0 ;Zero flag indicates success (RTS (  $30 SUBQ.B #1,D0 ;Check entry count (BEQ.S $40 ;Could not find entry (LEA 26.(A5),A5 ;Short way to advance address pointer (BRA.S $10 ;Back for another try (  $40 MOVE.B #1,D0 ;NE flag indicates failure (RTS   ; Byte swap routine  BYTSWAP MOVE.W (A0),D1 (ROL.W #8,D1 (MOVE.W D1,(A0)+ (RTS    ; Found error while reading device.  ; Printout message about problem and return to debugger.  BADREAD LEA READMSG,A0 ;Printout "Error reading "  BRA.S PRTERR    ; Directory entry size was in error.  ; Printout message about problem and return to Debugger.  BADDIR ADDQ.L #4,A7 ;Get rid of return address (BSR TERMCRLF (LEA DIRMSG,A0 ;Printout "Illegal directory" (BRA.S PRTERR    ; Printout error message  PRTERR BSR TERMCRLF (BSR TERMTEXT (MOVEA.L A6,A0 ;Set up pointer to name of item being read (ADDQ.L #1,A0 ;Bypass byte count  PRTERR1 BSR TERMTEXT ;Printout type of information (BSR TERMCRLF (BRA EX&IT2   ; Printout Text String  TERMTEXT (MOVEM.L D0,-(SP)  $10 MOVE.B (A0)+,D0 ;Get a byte to output  BEQ.S $20 ;Done (TRAP #10. (BRA $10 (  $20 MOVEM.L (SP)+,D0 (RTS ( (  ; Printout Carriage Return & Line Feed  TERMCRLF (MOVEM.L D0,-(SP) (MOVEQ #13.,D0 ;Carriage return (TRAP #10. (MOVEQ #10.,D0 ;Line Feed (TRAP #10. (MOVEQ #0,D0 ;Nulls (TRAP #10. (TRAP #10. (TRAP #10. (TRAP #10. (TRAP #10. (TRAP #10. (MOVEM.L (SP)+,D0 (RTS    ; Request to read Boot Device's Control Information Block  BDCIBARG (.WORD 132. ;Device (.WORD 0 ;error (.WORD 0,2 ;Size - read control  .WORD 0,0 ;Address (.WORD 9 ;Block - logical device number (.WORD 0 ;Control - CIB access   ; Request to access Channel Map  CHARG (.WORD 128. ;Device (.WORD 0  ;error (.WORD 0,0 ;Size (.WORD 0,0 ;Address (.WORD 1 ;Block - indicates channel map (.WORD 0 ;Control - indicates system info   ; Request to access RAM Disk configuration  RDCNFARG (.WORD 128. ;Device (.WORD 0 ;Error (.WORD 0,0 ;Size (.WORD 0,0 ;Address (.WORD 0 ;Block (.WORD 16. ;Control - logical block number   ; Request to access directory  DIRARG (.WORD 9 ;Device (.WORD 0 ;Error (.WORD 0,2048. ;Size (.WORD 0,0 ;Address (.WORD 2 ;Block (.WORD 0 ;Control (.WORD 0 ;High block    ; File name to terminate the Boot copy  ENDBOOT .BYTE 7 (.ASCII "ENDBOOT"  ; New name for RAM device  NEWNAME .BYTE 7 (.ASCII "RAMDSK1"   ; RAM Disk bootstrap file  BOOTFILE (.BYTE  13. (.ASCII "RAM.BOOT.CODE" (.BYTE 0   READMSG .ASCII "Error reading " (.BYTE 0   BOOTRAM .ASCII "Copying to RAM Disk" (.BYTE 0   DIRMSG .ASCII "Illegal "  ; Must fall into DIRNAM.   ; File names  DIRNAM .ASCII "directory" ;Only for error printout (.BYTE 0   RAMMSG .ASCII "device into RAM" (.BYTE 0  ( (.ALIGN 2   SCRATCH .EQU * ;Offset 0 - Temp storage of A0 @;Offset 4 - Return from MU.BOOTEXT  ;Offset 8 - Base of RAM Disk  ARGS .EQU SCRATCH+12.  CHMAP .EQU ARGS+18. ;User Channel Map  CHMAPNEW.EQU CHMAP+64.  SYSCIB .EQU CHMAPNEW+64. ;Boot device Control Information Block  SYSCIBNW.EQU SYSCIB+12.  RD1CONF .EQU SYSCIBNW+12. ;RAM Disk Configurations  RD2CONF .EQU RD1CONF+10.  RD3CONF .EQU RD2CONF+10.  RD4CONF .EQU RD3CONF+10.  BUFFER .EQU RD4CONF+10. ;Source Directory  BUFFER1 .EQU BUFFER+2048. ;Area for bootstrap  (.END $BOOTEXT ‹BOOTEXT IV.13 [a.1]'# !’’MUBEGś"'_8f’AśjCśŖ!Ip NNEśŖp ŁQČ’üEśžź!Jp NNAśLCśü!Ip NNEś0pŁQČ’üEśD4ü 4ü4ü4üEś!Jp NNAś CśX!I1|p NNAś CśL!I1|p NNAśōCś@!I1|p NNAśŽCś4!I1|p NNMś3AśŌCś$!Ip NNJhf4Eśč~a$Eśč~aEśč~aEśč~a`h g`Gś'@*gN"*’€kD‚üJAk: Ao2*RŚü M0<’B˜QČ’ü MTˆ0üTˆCśZ0<A@ Ł Ł0ĮXˆ0ś’ fōHē€AśZa“aĀLßGś€XˆIśX$MŌü8<’DBC4:VSBmnŲü :ų°¬f :ņ°¬ gVB€0,T’@mF0ÄŲ@0ÄRCMś#&ˆAś:0¼ Xˆį€ć€ Ą ŹÕĄ0ŌB˜p Aś NNJhf SCģp 0ŁQČ’ü`’Ņ@`Ž;CMśšarfBRAAśģ!|Cś ²!I1A BØp NNJhfwCé0<’Gś° k ŁQČ’üNuAś Eśŗ!Jp NNAśźCś*!Ip NNGś€ kNŠKśtAķ’š0 @Mo&įX @Mnd0€Xˆ6aLXˆaHaFaDŠüa>a0«Xˆ Ā ė0ĮBXp Aś(NNJhfųMśčazAś0«Xˆ üCś É0ĮBXp AśöNNJhfĘ3k"#k$p NNJhf“Gś°>+Mś‡a(.kB§B§B§B§/+U—/+ B§/+??&kNÓKśĢAķ’š0 @Mo&įX @Mnj0€Xˆ6aDXˆa@a>a<Šüa6a4SCfīJgT N"MB³VÉ’üfB‚2-’ś4-’ü”AįŠćŠNuSg.Kķ`Ō2įY0ĮNuAśø`,Aś‚`Aś‹`Xa0Aś°`XAś†a a NRˆa a SNŠgNJ`ųNup NJp NJBNJNJNJNJNJNu0Multi-User UCSD p-System IV.1 BootstrapError reading Error writing Could not find Not enough memoryIllegal directory SYSTEM.INTERP SYSTEM.PASCALSYSTEM.MISCINFO 1BOOTPSYS BOOTPSYS 'A ®O^„§z(.TITLE "Multi-User UCSD p-System Version 4.1 Bootstrap" .PROC BOOTPSYS   ;********************************************************************** ;  ; SAGE COMPUTER - UCSD p-System Bootstrap  ;  ; File: MU.PBOOT.TEXT  ; Date: 24-Oct-83  ; Issue: 1A  ;  ;  ; COPYRIGHT (c) 1982, 1983 SAGE Computer Technology  ; All Rights Reserved  ;  ;**********************************************************************  ;  ; History:  ;  ; 1 3-May-83 Initial release.  ; 1A 24-Oct-83 Fixed code pool address calculation.  ;  ;**********************************************************************  ;  ; This bootstrap is to be located in logical blocks 0 and 1 on a  ; floppy diskette. The floppy diskette bootstrap command in the  ; Multi-User monitorwill read logical blocks 0 and 1 into memory at  ; the base of the task memory area.  ;  ; The bootstrap routine first reads in the p-System directory  ; from the floppy diskette.  ;  ; The bootstrap then searches the directory for the file  ; SYSTEM.INTERP and read it into memory. The file SYSTEM.MISCINFO  ; is read in to patch the Code Pool address and size.  ;  ; Finally the UCSD p-System interpreter is started after several  ; parameters are pushed onto the stack.  ;  ;********************************************************************** (  (  ; Constants for BOOT positioning  BOOTSTRT.EQU 44. ;Offset contains address of STARTUP @; in SYSTEM.INTERP  CODEPOOL.EQU 34. ;Code pool offset in SYSTEM.MISCINFO  (.ASCII "MUBT" ;This text is checked by the monitor @; bootstrap process to insure that the @; boot area has been initialized with @; a bootstrap routine.   START ;The monitor transfers control to @; offset 4 in this file. (  LEA SCRATCH,A3 ;Set up RAM area for bootstrap (MOVE.L (A7)+,(A3) ;Save the return address (MOVEQ #24.,D0 ;Get boot device (TRAP #14. (MOVE.W D0,4(A3) ;Save device number for boot reads (  ; Output initial boot message (BSR TERMCRLF (LEA INITMSG,A0 ;Printout "UCSD p-System Bootstrap" (BSR TERMTEXT (BSR TERMCRLF   ; Calculate memory areas (MOVEQ #22.,D0 ;Get base of memory area (TRAP #14. (MOVE.L A0,12.(A3) ;Save base of p-System Data area (MOVEA.L A0,A1 (ADDA.L DATASIZE,A1 (MOVE.L A1,16.(A3) ;Save top of p-System Data area (MOVEQ #23.,D0 ;Get top of memory area (TRAP #14.  CMPA.L A0,A1 (BHI NOMEMORY ;Data area too big (ADDA.W INTSIZE,A1 (MOVE.L A1,26.(A3) ;Save base of code pool (CMPA.L A0,A1 (BHI NOMEMORY ;Interpreter area too big (MOVE.L A0,D0 (SUB.L A1,D0  CMP.L #0FFFFH,D0  BLS.S $10 ((MOVE.W #0FFFFH,D0  $10 LSR.W #1,D0 ;Make into word count  MOVE.W D0,30(A3) ;Save code pool size  ; Read in p-System directory (LEA DIRNAM-1,A6 ;Set up message in case of error @; note: does not have byte count. (LEA ARGS,A0 (MOVE.W 4(A3),(A0) ;Boot device number for BIOS calls (ADDQ.L #4,A0 ;Advance to size field (CLR.W (A0)+ (MOVE.W #2048.,(A0)+ ;Size in bytes (PEA BUFFER (MOVE.L (SP)+,(A0)+ ;Set up Directory address (MOVE.W #2,(A0)+ ;Set up logical block for directory (CLR.L (A0)+ ;Control word and High part of logical block (MOVEQ #11.,D0 ;Set up read (LEA ARGS,A0 (TRAP #14. (TST.W 2(A0) ;Check error code (BNE BADREAD ;Found error reading in directory ( (  ; Search for SYSTEM.INTERP and read it into memory (LEA BOOTNAM,A6 ;Set up search string (BSR SEARCH (LEA ARGS,A0 (MOVE.W 4(A3),(A0) ;Calculate floppy number for BIOS calls (ADDQ.L #4,A0 ;Advance to size field (MOVE.L D2,(A0)+ ;Size in bytes (MOVE.L 16.(A3),(A0)+ ;Set up interpreter address (MOVE.W D1,(A0)+ ;Set up logical block for interpreter code ( ; Note: assumes a compressed code file (CLR.W (A0)+ ;Control word (MOVEQ #11.,D0 ;Set up read (LEA ARGS,A0 (TRAP #14. (TST.W 2(A0) ;Check error code (BNE BADREAD ;Found error reading in interpreter file (  ; Now patch code pool location and size in SYSTEM.MISCINFO (LEA MISCNAM,A6 ;Set up search string (BSR SEARCH (LEA ARGS,A0 (MOVE.W 4(A3),(A0) ;Device number (ADDQ.L #4,A0 (MOVE.L #512.,(A0)+ ;Size in bytes (LEA BUFFER2,A1 (MOVE.L A1,(A0)+ ;Memory address (MOVE.W D1,(A0)+ ;Set up logical block number (CLR.W (A0)+ ;Control word (MOVEQ #11.,D0 ;Set up read of SYSTEM.MISCINFO (LEA ARGS,A0 (TRAP #14. (TST.W 2(A0) ;Check error code (BNE BADREAD ;Found error reading in SYSTEM.MISCINFO (MOVE.W 30.(A3),CODEPOOL(A1) ;Set up code pool size (MOVE.L 26.(A3),CODEPOOL+2(A1) ;Set up code pool location (MOVEQ #12.,D0 ;Set up write of SYSTEM.MISCINFO (TRAP #14. (TST.W 2(A0) ;Check error on write (BNE BADWRIT ;Found error writing SYSTEM.MISCINFO   ;  Lookup SYSTEM.PASCAL and start p-System.  ENTER LEA SCRATCH,A3 (MOVE.W 4(A3),D7 ;Get drive number (LEA OPSYSNAM,A6 ; search directory for SYSTEM.PASCAL (BSR SEARCH (MOVEA.L 16.(A3),SP ; set user stack pointer (CLR.L -(SP) (CLR.L -(SP) (CLR.L -(SP) (CLR.L -(SP) (MOVE.L 16.(A3),-(SP) ; high memory (SUBQ.L #2,(SP) ; back off one word (MOVE.L 12.(A3),-(SP) ; low memory (CLR.L -(SP) (MOVE.L 16.(A3),-(SP) ; address of interpreter (MOVE.W D1,-(SP) ; block number of SYSTEM.PASCAL (MOVE.W D7,-(SP) (MOVEA.L 16.(A3),A3 ; jump into the interpreter (JMP (A3) ( ( (  ; Search Routine for directory entry  ; A6 is pointer to target string.  ; A1 is returned with block address of start of code in file.  SEARCH (LEA BUFFER+32.,A5 ;Set up pointer to directory entry @; skipping initial volume entry. (LEA -16.(A5),A0 (MOVE.W (A0),D0 ;Get number of files (CMPI.W #77.,D0 ;Check for limit (BLE.S $5 ;Within limit  ROL.W #8,D0 ;Check if byte directory needs flipped  CMPI.W #77.,D0 ;Check limit again (BGT BADDIR ;Illegal directory   ; Swap bytes in directory (MOVE.W D0,(A0) ;Store swapped number of files (ADDQ.L #4,A0 (MOVE.W D0,D3 (BSR.S BYTSWAP ;Swap the date word (ADDQ.L #4,A0  ; Swap each directory entry  $2 BSR.S BYTSWAP ;First block ((BSR.S BYTSWAP ;Last block (BSR.S BYTSWAP ;File kind (ADDA.W #16.,A0 (BSR.S BYTSWAP ;Last byte of data (BSR.S BYTSWAP ;Date (SUBQ.W #1,D3 (BNE $2 ;Back for more (  $5 TST.B D0 ;Check for empty directory (BEQ.S SRCHERR ;Directory was empty, entry not found (  ; Base of loop for each entry  $10 MOVEA.L A6,A0 ;Set up pointer to test string (MOVEA.L A5,A1 ;Set up pointer to directory entry (CLR.L D1 (MOVE.B (A6),D1 ;Set up byte count for testing (  ; Base of loop for each character  $20 CMPM.B (A0)+,(A1)+ ;Compare the entries (DBNE D1,$20 (BNE.S $30 ;Found miscompare (CLR.L D2 (MOVE.W -6(A5),D1 ;Get starting block number (MOVE.W -4(A5),D2 ;Get trailing block number (SUB.W D1,D2 ;Form size in blocks (LSL.L #8,D2 ;Form size in bytes (LSL.L #1,D2 (RTS (  $30 SUBQ.B #1,D0 ;Check entry count (BEQ.S SRCHERR ;Could not find entry (LEA 26.(A5),A5 ;Short way to advance address pointer (BRA.S $10 ;Back for another try (   ; Byte swap routine  BYTSWAP MOVE.W (A0),D1 (ROL.W #8,D1 (MOVE.W D1,(A0)+ (RTS    ; Printout not enough memory  NOMEMORY (LEA MEMMSG,A0 (BRA PRTERR1    ; Found error while reading diskette.  ; Printout message about problem and return to debugger.  BADREAD LEA READMSG,A0 ;Printout "Error reading "  BRA.S PRTERR   ; Found error while writing  BADWRIT LEA WRITMSG,A0 ;Printout "Error writing " (BRA.S PRTERR    ; Directory entry size was in error.  ; Printout message about problem and return to Debugger.  BADDIR ADDQ.L #4,A7 ;Get rid of return address (BSR TERMCRLF (LEA DIRMSG,A0 ;Printout "Illegal directory" (BRA.S PRTERR    ; Could not find file in directory.  ; Printout message about problem and return to debugger.  SRCHERR ADDQ.L #4,A7 ;Get rid of return address (LEA SRCHMSG,A0 ;Printout "Could not find " (   ; Printout error message  PRTERR BSR TERMCRLF (BSR TERMTEXT (MOVEA.L A6,A0 ;Set up pointer to name of item being read (ADDQ.L #1,A0 ;Bypass byte count  PRTERR1 BSR TERMTEXT ;Printout type of information (BSR TERMCRLF (MOVEA.L (A3),A0 (JMP (A0) ;Return to caller   ; Printout text string  TERMTEXT (MOVE.B (A0)+,D0 (BEQ.S $10 (TRAP #10. (BRA TERMTEXT  $10 RTS   ; Printout Carriage Return and Line Feed  TERMCRLF (MOVEQ #13.,D0 ;Carriage Return (TRAP #10. (MOVEQ #10.,D0 ;Line Feed (TRAP #10. (CLR.B D0 ;Nulls for slow terminals (TRAP #10. (TRAP #10.  TRAP #10. (TRAP #10. (TRAP #10. (RTS    ; Area for p-System data & Interpreter  DATASIZE.WORD 1,0000  INTSIZE .WORD 3000H   ; Messages  INITMSG .ASCII "Multi-User UCSD p-System IV.1 Bootstrap" (.BYTE 0   READMSG .ASCII "Error reading " (.BYTE 0   WRITMSG .ASCII "Error writing " (.BYTE 0   SRCHMSG .ASCII "Could not find " (.BYTE 0   MEMMSG .ASCII "Not enough memory" (.BYTE 0   DIRMSG .ASCII "Illegal "  ; Must fall into DIRNAM.   ; File names  DIRNAM .ASCII "directory" ;Only for error printout (.BYTE 0   BOOTNAM .BYTE 13. ;String byte count (.ASCII "SYSTEM.INTERP" (.BYTE 0 ;Terminator for TERMTEXT    OPSYSNAM .BYTE 13. (.ASCII "SYSTEM.PASCAL" (.BYTE 0 (  MISCNAM .BYTE 15. (.ASCII "SYSTEM.MISCINFO" (.BYTE 0 ( (.BYTE 1 ;Bootstrap Version @;If bootstrap ends with a non-zero value @; the device to device bootstrap transfer @; can determine the size. ( (.ALIGN 2 ) SCRATCH .EQU *+1024. ;Ram scratch area  ;Offsets: @; 0.- Return address to Monitor @; 4.- Boot device number @; 6.- unused (2 bytes) @; 8.- unused (4 bytes) @;12.- Base of Data area @;16.- Top of Data area @;20.- unused (2 bytes) @;22.- Temporary storage (4 bytes)  ;26.- Base of code pool (4 bytes) @;30.- Size of code pool (2 bytes)   ARGS .EQU SCRATCH+32.  BUFFER .EQU ARGS+18.  BUFFER2 .EQU BUFFER+2048.  (.END  ±ĻMUCONVERCONFIGMUCONFIGSA €€€i  ![IV a.0]°MUCONVERėdž›ś†&įt†›Ņ†œžįt„›Īā$„›Ļ†‰]ā$p„šupš‚€u pš†€Pu pšu p†§Ņp†›Ņ†˜tpÓ!š‚€u pš†˜u pšupŠ„0Ō—†›Ņ†T…›Īįv„›ŃpÓ1š‚€u pš†˜u pš‚€!u pšupp†a‚€,¹ń$š†˜u pš‚€.u pšupp†cɱ†cɱ ŌSš‚€Bu pš†cÉupš€.vpš†cÉupšupš‚€Uu pšuppš‚€gu pš†cÉupš€.vpš†cÉupš‚€su pšup†‰]†TنŠ]†TÅ †Šj†aņŠl€’ĖŹ†Šl€’ĖŹ„œh„›Ń…›Ń…œh²Õį†Šķ…›ŃĖ×O†¦…›ŃĖ×.Å.†Šķ…›ŃĖ×Oē.Ėī×ĆŠķ…›ŃĖ×O„œi…œi€)€.Ėī×…œi€.Ėī×xąœi€*€.Ėī×…œi€.Ėī×xąœi€+€.Ėī×…œi€.Ėī×xąœi€,€.Ėī×…œi€.Ėī×xąœi€.Ėī׹œi€.Ėī׹œi€.Ėī׹œi€.Ėī׹›Ń턛ы’„œh„›Ń…›Ń…œh²Ōi†Ż…›ŃĖ׆„†…›ŃĖ×ņŻ…›ŃĖׄœi…œiē €"€’ĖŹ…œiē € €’ĖŹ…œiē ąœiē €’ĖŹ…œiēŹ…›Ńķ„›ŃŠŽ†s†„ģņ‰†…ņŸ†…Å,†Ė†…DÅ ……N„Õ„œh„›Ń…›Ń…œh²ŌS†Ö…›ŃĖ׆…O…›ŃĖ×ņÖ…›ŃĖ×ē„œi…œi@ąœiē€’ĖŹ…œiē€’ĖŹ…›Ńķ„›ŃŠ¤†‘N†…›ÅĄ…‡[„“…‡\„“€@Œ„›Š„œh„›Ń…›Ń…œh²Ō6†Šm…›ŃŒ€Ė×…›ŠÄ†Šm…›ŃŒķ€Ė×€~ą›Š€ž¢„›Š…›Ńķ„›ŃŠĮ„œh„›Ń…›Ń…œh²Ō6†Šm…›ŃŒ€Ė×…›ŠÄ†Šm…›ŃŒķ€Ė×€"ą›Š€2¢„›Š…›Ńķ„›ŃŠĮ„œh„›Ń…›Ń…œh²Ō6†Šm…›ŃŒ€Ė×…›ŠÄ†Šm…›ŃŒķ€Ė×€,ą›Š€,¢„›Š…›Ńķ„›ŃŠĮ„œh„›Ń…›Ń…œh²Ō4†Šm…›ŃŒ€Ė×…›ŠÄ†Šm…›ŃŒķ€Ė׹›Š¢„›Š…›Ńķ„›ŃŠĆ†ŠmŒ€Ė×…›ŠÄ†ŠmŒķ€Ė׹›Š¢„›Š†ŠmŒ€Ė×…›ŠÄ†ŠmŒķ€Ė׹›Š¢„›Š†ŠmŒ€Ė×…›ŠÄ†ŠmŒķ€Ė×€<ą›Š€<Œ¢„›Š†ŠmŒ€Ė×…›ŠÄ†ŠmŒķ€Ė׹›ŠŒŒ¢„›Š†Šm€ Œ€Ė×…›ŠÄ†Šm€ Œķ€Ė׹›Š€@¢„›Š†Šm€!Œ€Ė×…›ŠÄ†Šm€!Œķ€Ė×€@ą›Š€@¢„›Š†Šm€"Œ€Ė×…›ŠÄ†Šm€"Œķ€Ė×€€Ä…›Š€€¢„›Š†Šm€#Œ€Ė×…›ŠÄ†Šm€#Œķ€ĖׁŒÄ…›ŠŒ¢„›Š†Šm€$Œ€Ė×…›ŠÄ†Šm€$Œķ€Ė×€ ŒÄ…›Š€ Œ¢„›Š„šupš‚€{u pš†+€Pu pšu p†+§Ņp†›ś†+˜tpÓ!š‚€Šu pš†+˜u pšupŠ„0Ō—†›ś†‰]…›Ļįv„›ŃpÓ1š‚€’u pš†+˜u pš‚€šu pšupp†›śtpÓ$š‚€¤u pš†+˜u pšupp†›Ņtpš‚€¬u pšup†›śt†›Ņt–File with old configuration: Error opening Error reading , program terminateddMUCF' is not a Multi-User Configuration file%Cannot convert Configuration Version #Can only convert Version 1.0 to 2.0Configuration Version  read correctlyFile for new configuration: Error opening Error writing  program terminatedError closing .Configuration Version 2.0 written successfullyy EXTRAIO PASCALIOFILEOPS CONFIGMUCONFIGSA )CONFIGMU– CONFIGSA ĪCONFIGSA~: ¤"‡!³‡!€ ³Ÿ”Ō`‘`‡!Ė×ɤ"–!I€€ p–^`"Å€€`p–m€€ p–‚`$Å€€`p–‘€€ p–¦`#Å€€`p–æ!‘€0ŚŌ €€ !p–į`‡Å‡‘€0ŚŌ €€`‡p–ń€€ p–`%Å€€` p–€€ p–*`!Å€€`p–9€€ p–O`‡Å€€`p–_€€ p–u `‡!Å €€`p–!¢"‘h…! ³ ²””…!å ³ ²”” Ō €€!"p–Ī"‘h…! ³ ²””…!å ³ ²”” Ō €€!"p–ä!‘ Ņ €€ !p–`‡Å‡ ‘ Ņ €€`‡ p– €€ p–'`‡Å€€`p–7€€ p–M@`‡AÅ@€€`p–A#"‹Č#‘h †ŚŌT!²Ō ŚŌlЁ€%lŠ=!ҁŠlŠ3!ҁlŠ)!^Ņ€nlŠ!Ņ€KlŠ!Ņ€2lЁK!ŒlŠ\!ҁ€%lŠR!”ŠJ€2lŠH€KlŠC€nlŠ>€–lŠ9,lŠ3XlŠ-°lŠ'lŠ!ŠlЁ` lЁĄlЁ€%lŠ KlŠրŠ € !Œ£lŠր–("‹÷#‘h †ŚŌ>!²ŌlŠ2!ŠŅlŠ(!ŅlŠ!€nҁ^lŠ!€2ҁlЁK!Œl‹!€2Ņ€0l‹„!€KŅ€1lŠz!€nŅ€2lŠp!€–Ņ€4lŠf!,Ņ€5lŠ[!XŅ€6lŠP!°Ņ€7lŠE!Ņ€8lŠ:!ŠŅ€9lŠ/!` Ņ€:lŠ$!ĄŅ€lŠ!KŅ€?lŠ€>lŠ!€ ²ń€ iŠ!²Ōi!ķ£lŠր–} ‡#³‡#€ ³Ÿ”‡"³”‡"³Ÿ”‡!³”‡!³Ÿ”Ō(`‘`‡#Ėׇ"€’ĖŹ`‡#Ėׇ!€’ĖŹ`‘–#ˆ†‘–›€€`p ±i–ėh€€`p ± ±” ±” ±”Ōš‚€r pšrpšrpp# €’”°„!–ś†‘‘ s–’³’ø’½’Ā’Ē’Ķ’Ó’Ł’ß’å’ė’ń’÷’5’ō’’ā&CONFIGSAGE must use BIOS 2.4 or MU 3.33P FA”) ōéÓ½²ŖŸ—…{sbUKC91'x *** PASCALIO INITIAL©H!@(-----| TELEVIDEO 925  '8.'''''H1FI,G6#0:<=>  6$P’’’ 1Š0-----| 31dbhgf.0G0XU()() FREEDOM 10025  %-78.'%%&%HR1FI,G6#0:Q<=>  6$P’’ 2p0FGEHKJ 31dbhgf.1e G0XU%$()VT 102L©H!@(   PP’’’ŒŒ-----|  H SAGE QUME 102 '-78.'''''HR1FI,G6# 6$=>P’’’ p0fgehkj 31}{G0XU%$()VT 52AL©H!@(  -7 #P -----|H C HJGFEMPTYAL©H!@(*EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(*EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(EMPTYAL©H!@(¹REMOTETA €€€€€€€€€€€€€€€€ƒ?Copr (c) 1977,78,79 Regents UC, 1980,81,82 SofTech Microsystems"ˆ\Ž"øREMOTETAƒ/šrš‚€r šr–N†U†U§€€¢Č†U€R p–|†U€R p†U§€€³Ō†U†U§€€£ČŠ„ƒ–“`!Č`€ Č` p–“` p`§i`§€ Ó‘p–Ų…턁š s…€(Ņ šr„– š`r ƒ€ŚŌ €a£€A¢h aŠŚŌąš sšr ¤–Ji1­‚ׁ Ł­‚ķ¦‚­‚…~҆-1…~įs…~°i¦‚–› ¤‚„¤‚‘¤‚‡‚€3°ÕČ` p¤‚`§€0³ń‘p’¤‚ ¤‚ ‡‚ ‡‚ ²ŌQ`‡‚ ‡‚ ¢§¤‚‡‚€0£¤‚`‡‚ ‡‚ ¢ķ§¤‚‡‚€0£¤‚‡‚‡‚¢‡‚¢¤‚†‡‚ ‡‚Œ‡‚¢Č‡‚ ķ¤‚ Ц‡‚€0¢¤‚‡‚€`§”€€Œ€`§”¢Ņ† Ō €.‘€5‘Ф‚€6‘Š€?‘€4‘Ї‚€6Ņšrš‚€"r ‡‚ƒ€-ŚÕ’‡‚†-1‡‚įs‡‚± ¤‚†-tp±‡‚ Ō€6‘šrš‚€1r Š€>‘–‚ ą­ķ¦­­³Ō†-1…~įs¦p±¦¦­±­å”i 1­ׁŁ–Ģ o„įhi€5n† &€6±”Ցj€3‘’¤‚ k#‡‚ ²Ō4†#§m"%¢j%€0¢m„ ##¢%Ȇ#§”l"$¢j$€0¢l„ ##¢ķ$Č#ķkŠÅ„  p"€0¢j„‚ "€€Č„‚ "€”Č„‚  p‘n&Š€.‘Š īh€?‘Šր<‹b’†-t'Ōšrš‚€@r €6‘Š€2‘‘€>Óšrš‚€Kr –‚ .†U€R€ p‡/€S°Õ‹†U€:Ț‚€Vr šd€Pr +šr d§Ņ p†-d˜tpŅΚ‚€`r šd€Pr šr d§Ņ †-t pd§¤.j"‡.²Ō†U"ķd"§Č"ķjŠģ‘‘€<ҳ‘ ‹Øš‚€or šd€Pr šr d§Ņ p†U€;Čd§¤.j"‡.²Ō†U"ķd"§Č"ķjŠģ‘‘€<Ҳš‚€~r šd€Pr šr d§Ņ†U€R€ p†U€8ȑ p†-d˜tpŅ»†U€R€ p†U€9ȑ‘ –/,‘…ƒ†U§€7±”Ō‘p…ƒń†U§¤,i!‡,²Ōb!†U!ķ§Č!ķiŠģšr†U§‹†-t‹—†-b˜tpŅš‚€Šr šb˜r €Cś€!ÉhüÅAüÅCüÅCüÅ‡üÅüŃüÉÅüŅüÅüĄ'ü4Ąü0Ą‡BüĄĮĄĮĄĮĄr@QÉ’ž0: śĄĄąHĄĄAś&n!Čxr0aQ‚Cśłčp"ČQČ’üAčCśp$IŌŁ ŹQČ’ųAś`!Čtaa)Xa3 aEųaj&aŖ/ IśśCśųaÖ(ČCś aĢ(ČCśaĀ(ČCś.aø(ČCś@a®(ČCśRa¤(Č(_ xŠč€2g Ab1Į“ĀüaPą!ČøCśūbEųp "ŚQČ’üCśūJ xŠč€Jhg8AśL(#HAśL$#H AśL #H#H(#H,AśL#H#H#HAśL#H CųAś"ČAś"ČAś&"ČAś2"ČAś>"ČAśJ"ČAśV"ČAśb"ČAśn"ČAśz"ČCų€Aś‚"ČAśŽ"ČAśš"ČAś¦"ČAś²"ČAś¾"ČAśŹ"ČAśÖ"ČaGŽaŠ xŠčt1Š&AśūŗHz !_!|}a ‚ xŠč„CśśĢp"ŲQČ’ü xŠčˆCśśųp"ŲQČ’üLßų½ 8tg0Įˆ.hŽ _N`Lß’/Hē`ąHzųĄCEśūˆüFü `F8NuLß`TÜŚŲÖĪĪŠĪr0aOZpGč$IŌŁ&ŹQČ’ų&Ł&Ł&ŁNužäŖØ  ¢ ’’’’ųrŽŒ„„†„’’’’-Ī-Ärphhjh’’’’3¼2¤VTLLNL’’’’]Š]°:80020’’’’db0eŖfŖ’’’’Iś÷,t"xpBåHŅń`J© g4r:aNzp(ČGś÷ ¹ĖfIś÷(B˜Gś$KŌŪ ŹQČ’ųp 0ŁQČ’üQŹ’¼NuXŒ`ö,d,Z+ŗ+ꦦ,+ītCśöČ Y±śö–ga, BfCśöŚQŹ’čNup/8Hz,!ßüÅJgüÉÅüÅ‡ 8ÉÅgp!ßNuPpNsB8ü%ĄsAśL`N¹žLßNu/ü ĄA8ĄAjü ĄA@ć0;Nū ü ĄA Ns ¢,6.ųr/ü ÅA8ÅAjü ÅA@ć0;6Nū2ü ÅA8Åg8ŁgPų©ų)üĄgøÅ Ns J T ^ hŽčņüųĄC08(fFü!üĄgøĄCJx(fŽ NsFü āHe/^āHeŒāHeāHe®āHe ģāHe5Žx?(`°/1ĄÄŠĘčĒ @n ćH0; N» Ns>@FNčn†ž0f(l.“.Ā.č/Tf>Ų(2ŒŹL‚>>Nu xNuüNuB8Nu/ "xt#H¢a-Ü"_NuļNuųĄC@ēaŠDßføĄCNuųĄC@ēa>DßføĄCNuAč0 / ?/ / / / /Aļp NN0(f /h$OļNu _1@OļNur p’QČ’žQÉ’ųFü'ü8Ą%ü%ĄsB8 Oļ Nłž xtB(§!hŖp(ćH1ØØųĄC xta T"HAśFä#H–#Hž#H¢AśFÖ#HšAéhpB˜QČ’üAéØpB˜QČ’üAé®ahAéĄa`AéŅaX+AéäaPAéöaHøĄC.i ac©¦ iN`FüHzFpHz*Hi–Bg?< Op NNŽüJ)$g J)&gśB)$J)g J) gśB) i’NŠHē`ųĄC@ēa– ‚1ADßføĄCLßNuHēpųĄC@ēaę DßføĄCLßNuHēš"xt0al0($€h&ĄigF@Ąh*Hz/(Nu5|’ņLßNuHēš"xt0a6&j0)Ąh$gĄh*gh./Hz/(Nuafź5|’ņLßNuBh @nNćHEńpf H@ @nV`F  f ?nFåH$HAśó, pNu  fŅ n,åH$HAśņ’ pNu @€m @…n@håH$HAśńü pNuXLß`|Hēš"xt0a’t&j0)Ąh&gĄh*gh./Hz/(NuaVfź5|’ņLßNuHēš"xt0a’0&j0($€h&Ąig Hz/( Nu5|’ņLßNu1|’ņNu1|’ńNuFü!0)Ąh(gF@Ąh*f0)h*!IFü Nu0)Ąh,gHēĄB)a@,Fü LßJ)g²Fü Nu0*gš @n2ćHAńpH@ @nåHAśšę p0($€h&Ąig/(Nu5|’ņNu)fš0*gŖ @nāćHAńpH@ @nĪåHAśš– p0)Ąh&gŗĄh*g h.//( Nua’fī` /0* f6ø&`NS@fAép&ŲQČ’ü`S@fAé`p`ģW@f)g AśņHp`ÖS@f)g Aśņrp`Ą5|’ņ _NuHēp6* j Cb gaüVLßNu Cb øŒ`ī ø`č/] Oaü4&\ _–øJ8&g*HC2‚üx4Äü„üŅB8'H‚ĆĀt8&ƒĀHĮHCցָŒ ƒ`œ j!ŠŒ] Oaūā!А\NuNuBNu5|’ņNu xt hNu xt hNu/ xtp(§f(?@ _Nu/ćI xtAč402A’ A gSAćIAśń020 _Nu2īIAśń``ī xtAč`Nu/ "xt m( ,o €m œnCé#ˆ` Céą`ō"A"ˆ"_Nu/ "xt m( ,o €m œnCé q` Céą`ō"A Q"_Nuśł’Rx*üĄ‡8ĄįX8ĄįXĄĄįXĄĄ NsųĄCų)üĄg Nsø)Hē`ą$x, ga2²Ŗk""R!É,gaœ"jN‘Lß`ų"Jaˆ`š *a†`ęB@ųĄCĄĄĄĄ‡J8Ą8Ą8Ą8ĄįBŌ@HB48*HBüĄüĄ‡8Ą“8Ąf$²8Ąf"įAŅ@J8ĄøĄCDBDAŅz’ HA2HANuJ8ĄJ8ĄøĄC`ŠaˆB€0€ü €B2Ņ@Ņ@B@H@€ü+Ņ@v<ĘĀHBp<ĄĀH@B@Ö€ŅƒNuB@ĄĄ‡8Ąį@8ĄįXD@NuHēą`a’> HAŠh dŠ|RA°zžØczž RAŅhH@0H@!@"x,$ g.³Čg6$g"B`ō"x,°©k$I"Q$ g°©jņ ‰$ˆLßNu ‰!Č,"HaL`īFü'üĄsB8NO`žHēą`"x, g³Čg$I"Q g³Čfō$LßNu"P!É,ga `īųĄC`ęaž„ )Ad ŠzżōH@S@`H@HAAdųĄCų)üĄgNuųĄCütĄ‡ü°Ą‡ @l0BAJ@g2<}H@āHŠAgČrĄĄ…ąHĄĄ…ĮĄƒąIĮĄƒøĄCNuS@2:ż„`ÜHē€Ą xt @n ćHCšp)åHCśėl qHz /(NuB@Ą@ LßNsAśėPt"X)/fNQŹ’öAśģ2t?"X)/fJQŹ’öa[BJ8¼gS8¼fø½08¾g F@ xĄĮh&Aśī\!|}až,NuS@/fŖBi*`¤S@/f®Bi*`ØY/ xt/hč _NuY/ xt/hģ _NuY/ xt/hš _NuY/ xt/hō _NuY/ xt/hų _NuY/ xt/hü _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h  _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h _NuY/ xt/h  _NuY/ xt/h$ _NuY/ xt/h( _NuY/ xt/h, _NuHē€`Cśė¬Eččp $ŁQČ’üCś<˜Ečp$ÉQČ’üLßNu/Hē@Ą zéd`0Hē@Ą zér`&Hē@Ą zé€`Hē@Ą zé~`Hē@Ą zé|`Hē@Ą zéz2h4)8f$B(E"h<Ą) °g“T‰°g\°g°(Ag‚°(Dg\2(P€hRA²h2fBA²hNgĪ1AP"hB)ŒPųs0(LJ1fHJ)åfLLß NsJg "h8(@fiAgąéBfŲ0h6©B`ĪéA`ĘJg’|(@g’r"h8©AgŖ`ČJg’J"h8iAf–©A`Ž"h"išf’2"hPé‚B)ŒPųs³ųtf ų)üĄg`’Z"h8éA`’l"h8gR(EgJ(@g (Eg>RhR`gRhT`RhVéAéBéB0h6©B©B`žņS(E©B@ēFü%Hh!x„X!ß„Fßų)üĄg`®@Øa"ˆ`ž°p=a"~`ž®ø)HēĄ@ēFü% 8„g–Į‰!éX„FßAé\JØfŽHzˆ!_1|Bh aśP)@gĄ iJ(¦f¶č¦B(ŒPųs±ųtfJ(€fœLß Hzz?< /HēĄ`†/ "hŽ]‰!IŽp"©X‰QČ’ų2ü HzN"Ÿ"_`’`FßLß`ń BŖ”ü\ j8a:Nu/ "hJ)g2)ƒx”"zčČB)Œ"_`żÄ"_`ż€H瀀Aś°a=† xt h<(@g Aś¼a=lAśŠa=dNI€NJ Cg4 Rgņ xt h<(@g Dg0 EgńĪ Fg6pNJ`¾Aś‰a=Fü! xtئLßNs xtئLß/8¼NuFü'B8ü8Ą%ü%Ąs`Ö BREAK KEY HIT - C(ontinue, R(eboot, D(ebugger, F(reeze, E(xit? Continuing after BREAK @ēHē@Ą"xt i<2)Āh*gh./Hz/(NuLßļNsHē€aóŗLßfÖLßB/NsØAFü%2(N²hPg0hRA²h2fB1ANFü Nua3“gŌB`ōHēĄ zäŌ`0HēĄ zäā`&HēĄ zäš`HēĄ zäī`HēĄ zäģ`HēĄ zäź2h6Fü%(Afd0(J°hLg,°bR@°h4mB@1@J"hB)ŒPųsLß Ns1hLJ"h0(HJ1g@Øa^B)ŒPųsØB2h8ØB`ÄāeāeÄāeäāe(A`„ØA¼` ØA2h8ØBØB2h6`’^@ēHē@ą"xt i@2)Āh*gh./$hN’LßļNsHē€aņPLßfŚLßB/Nsų,ĄC(Af¤J)m|Fü%2(L€bRA²h4mBA²hJgŽ1AL(BfH(Af@čBB)`*4h6*fJ)fpFü Hē€Ąa26LßFü%`Ųą4h8ØBFü J)g a:¾J)j/0(HJ1g@Øa øĄCJ)Lk Nua1¶g’:`čB)L/a1Ö `ęFü `ŌĄqĄsĄĄāČāÄvĄ1Ą3ĄĄāąāܶ„¾ˆÄĮÄĒāųāōäfģ¾ÄÄ‡ćāüępīČÄAÄGććčzšŅÄÄćć ź„ņÜHēĄ|pEś’h2ĀüŌĮ&x2åIÖó@J* gJ8—g`2<hŅka9(H2<bŅka9‚RA@AF/Cś^J+gCśęP2*Cń2ŖCśTrAč*IŚŁ ĶQÉ’ų Ó ė ėCśJ+gCśę2*Cń2ŖCśürAģ*IŚŁ ĶQÉ’ų Ó ė ė _j 1j 1k ?k @1k21k49k2r+!A^k!D1kD9kJ9kHk C1R69R41j89j6)H8!L:|0J+f9|»L1|ÉH`r+AØ9ALr+AØ1AHCśžˆ)INu2ńžšJūŒÖō’h"Ģč ń€ö¢*üÖČčŌr’(ܶĢųHēąšB@(@S@ĄüCśżŠ4q6q1 2h8J(1flB€‚ą€ąą€(?2(2f8Ą!gĄA;p¼@ąI€ą|&BØB h:BB(@gpr@AABLßNuJ(?2(2f€8Ą!g0A;@’žąA’ž` €@ ?567:<>?Hē`$*g aūŲS‚föLßNuHē`$*g ičB`,B)4h6*fJ)f6Fü Hē€Ąa(8LßFü%`Ųą4h8ØBFü øĄCNua'äg’~`īFü `č NsJ(0g h8!IHē`$*g*f*f$a’DS‚föLßNuFü"*až„Fü `ęFü"*až¢Fü `ŅJ(0f h:!IHē`$*g aüĄS‚föLßNuJ@f,0)Ąh*g""h8Fü%B)A1hPNB(E Ip&ažFü NuJ@f0)Ąh*gFü%1hLJFü Nu*f h8`<0(PhNlŠh26€8ĄcĄ< Gė4Ą2h4)Ą<€Ą6čR6čT6ØVNu*g h:`Ø0(LhJlŠh46€Nu0(N°hPNu0(LR@°h4mB@°hJNu h86Ø2h?7hDhC h:h@Nuk@ h8` "h:k@1S2k?1kDkCFü%aöäFü Nuø)Hēˆ(xN xJNŠLß`į˜Hē`4<ęx8ĄQVŹ’ögfŲĄStVŹ’žSfŚLßNuü’’9`ņAśaĄ 8’’9g>Hē`rAų7Bašf(B87Šgpżfg pžgp’Ą9LßNuHē`rAų0BaZJ89fNB80Ąg>pž €g6pū81ā e,pöā e&pśā epłä epųā ep÷ä epŸ` 82gpōĄ9LßNu4<ęx8ĄQVŹ’öggųĄStVŹ’žSfŚNu 8’ž9f frØ’’SˆQÉ’ų¼@B89Nuü’’9Nu/J,0g¬B€BJ8qfŖ0<€ģ628@ĀĄB€,2‚ĄB,0f$,=g²,1gcDSŅ,1Ņ,1p`āI搥<Į;²,1bLgJHAJx@f ,=gp`,2Ąģ6°øBo 8BRĮ=1Ą>,=g Jx@gP8="BNu"ü’õ9Nu28@,2‚ĄHARĮ=BAHA,0‚Ą²,1lŌĮ;HAĮ<0,6!ĄB1Ą>`¶/ AśŲ|(f&ü Ą'B€0,8!@Kś!Maēī|*_Nu fö|ačZ`źAśŲ: ( ąˆ!@ a窐h @c @ c @c p` p`p`p@ a€pJ,QgTĄĄ'|RNupJ,QgTĄĄ'B,RaēTAś×Ņ1@Hē@@(gaēÖCśJ!IB€"( ī‰Šą‰ŠāˆŠģIŠ c cp`p `pH@!@aēLß|NuAś×lü Ą'B(Nu|J*g B*ų)NuüĄgų,)üĄ'Hz!ßxNsüĄ'Ns8ĄQfü’ü9`ü’ž9üĄ'üĄ'üĄ'üĄ'ų)Nuų)NuümB89Hz’ģAśÖö ŸHz’¬AśÖų ŸüĄ'üĄ'Aś×“BAś×9¼Aų0üSx0üj0üg0üNs0üNłHz ŸJ8:f~AśÖ„B(aę–üĄ'üĄ'ü Ą'ü Ą'üĄ'AśÖäB(RB(S0(:AśÖ€B(RB(SAśÖR0¼1@üĄ'aūnfü:p’QČ’ž8ĄcgaūŒB89ażĢJ,SfąAś !Čb`ņJ,?fJ89fĄ|SAśÕÜ (gčAś !ČJ`śü 8pg’AśL!ČJAśžf!ČxAśÕø¼,<Š< @lQaśĢf`üĄ'AśÕ¦p0ünB,PB89AśałœJ,?f J89fx;P x^NŠ/ AśŌŒCśŠl"ˆAčCśPp$IŌŁ ŹQČ’ų"xŅéXp ŁQČ’üAśŌ CśŠB"ˆAčCś2p$IŌŁ ŹQČ’ų"xŅé\p ŁQČ’ü$_NuŌ̤ˆąųąųöāļ”xąčąčęŅüĄ'üĄ'üĄgų)üĄ'Hzü:!ßxNs(xVAģ$B8p,%güp(güpB@(l8!ĢN!čB!čF1č @B8q(g üqp!ĄBģ>oJ,0f ü’õ9`ČAś !ČZ`ūüülJ,?fJ89fB89JøBgœJ8pg.8Ącg ü’ö9`ź 8pf1ųD>ų@;ųA<`ałf`Aś !Č^`żęJ,?fJ89f¬B89AśŅv0< Š,jAų 8pf0üų0üĄS ųF0üRø0¼`L g00üł ųF0üĄS0üRø0¼,1ā°8;oü Ą'`ü Ą'`0üų0üĄS ür0üNq0¼NqAų !ČxAśŃ”üĄ'aöøf“AśŃ˜B€0<}!@aąō`ö–0< Š,<0Ą8<åŠ,QĄ`’AśŃhaįT8pg g0< QČ’žaöģJ,?f89fVB898p f,=güpAśž€!ČJ`¾ füpp08>ŃøF‘øB€üŃx@Aśž!ČJ`üĄ'J,Dfx9Dx9E 8pfüpS8ooh89 ’łg> ’ōfB,SR,@AśżŒ!ČJ`> ’üb ’ŸbB8:`Ž ’ūb ’öc*S8loČR,@B89Aśżx!ČJ`B8:` xJNŠx9Faų8 xVx9'Pč&B(ŒPųs(3gJ(Łg p1/ "Hap"_B($!č4VfüˆAśõ!ČJ`õźųĄCJ)$gaśgī5|’üNuPé$øĄCB)&#H8Aé( ź ź Ŗ j% JB©4ųĄC 8VgĮŠ *4fų%I4`!ÉVCśü !ÉJų)üĄgøĄCNqNqNq(f*ųĄC"xtJ)&fah`źøĄC)'H€1@B)$NuJ@f0)Ąh(g Ąh*gB(SNuBS7h6B@(27@(1 (0fć@7@p)$7@2)'7@4(D7@8(E7@:NupEč0$ŪQČ’üB8:NuEč0p&ŚQČ’üNuBSJØ0g (4Ø0€ü7|7|7@Nu5|’ņNuJØ0f5|’ņNu)g![0![41S8aNu5|’ņNu&č0&č46Ø8NuJØ0g( 8°Ø0eJØ4f!@4 (4°øb°Ø0nBØ0NuHē`t`Hē`B"(0g*B€0* ļˆ*f刊"@"*gЁ°Ø4n$Ka`5|’ņ`5|’õLßNuųĄC ād"SJgŚQÉ’üBAJfīøĄCNuŁQÉ’ü`źpĄä‰gSJg"ŚQÉ’üBAJfī"gŅ`¾$ŁQÉ’ü`ģHē`t`Hē`B0*H@0* "@"*g$Ka†LßNu@ēHē@ą"xt iD2)Āh*gh./$hN’LßļNsHē€a×ģLßfŚLßB/NsFü!BA2(:€@RA²h0mBA²hč>f(ĄĄaüĄg2(ü ĄgųĄC/ "h0(8J1g@Øa B(ŒPųs"_`ĘJ@fD0)Ąh*g:Fü!ü ĄgųĄCB(>1h: "f: "f6 "f2 "f. "f* "f& "f" "f "f "f "f "f "f "fSiˆ`šJ@f H@JgRŠ`JgVŠ`TŠ Aéhˆ ižNSiˆSfņJiˆf’~J)‚fNuB)‚ išf6Pé)¦f. i@ØAØA i–N i@čBf (B0h8€Nu ižp>N`ō/PéƒAéhR0Riˆ3@†³ųtfJ)€f ų)üĄg _Nu0* °|$f AéöHz˜`>°|%f AéäHz’`.°|&f AéŅHzŒ`°|'f AéĄHz†`°|?fVAé®Hz€!_ųĄCaŲ*f!S !Sja×n*føĄCNuųĄC(gźašgģ`č3|’ņ`ąp$"J’üö`&p%"J’üä`p&"J’üŅ`p'"J’üĄ`p?"J’ü® JB)ŒPųs(f"EéØ2gažŲ(gHēą`"( NśÖäØNuNu-Fü%J)‚f J)ƒfab`źFü NuüÅ‡üÅüŃüÉÅüŅüÅ1ü&°1ü®aPų¤NuHēüÅp€tĄÅĮĄ„rPQÉ’žCųÅzHē @ēFü'ü°ĘüĘüĘaÕ~Fß82<%QÉ’ž@ēFü'ü€Ę8Ęį[8Ęį[aÕVFßLß’DDCĘü@†Į1ò–x°g2nDC¶x®o(RgSf’xü¦`"¶x®oRgR`ęü¦` QĶ’jPų¤B8¦üÅ2<%QÉ’žLß8Nu",,f–,fŒp,4HA²@bŠHA‚ĄHA0,ÄĄĄĮBAHA”@HĀ9@, , “€m ”@9B09@.`9B.Bl0,@å44LßNul$l%)l )l)l9l"B,5AģFü!J8©f&Aś*!ČœAśŗHz÷l!_p0<}!@aÉĄ`ždFü `Hēąč(x˜øÅüÅųÅüÅųÅüÅüÅAś¹°ųĄCaÉüøĄC,f,J,fŽJ8©g|p!Ąœ,7g0SgDSgVałhfjp0,.Ѭ‘¬ €ģHĄŃ¬Pģ`üśa÷ŖfB ,5fŠ|5`Čał(f*aų6|7`žø|7l*2`žØ|’ś` ,5faöŽ,J,f@@S,2o’ ’łgH ’ųgB ’÷g< ’śg ’ōf ,2m `@ `żÜB,0<’’QČ’žR,! ,7nž.`üJ0<’’QČ’žB,R,!,!g ,ā°,2f,fań“Jl(fS,!`¤`żč ,7fS,3oŠB,,faųśa÷:l2|7`ż¶NuHē@r(00äH@ Iś¶–(tBS7lB@,7@AåI04>tNuų¦ųžž žĆĢĆĢžˆžŗøĄCHē’žNh/ xt!OŽ x|!Čt.hŽ"_Jh‚g ų)üĄgNap0(Aś¶!@HzŅ!_aŬLß’Ns xtJ(€fl±ų€g"xx#h"x€!i#H!Éx!č€"HB@B8s/ $H hJhŒf°(l(!Č|!ŹxJ(‹gp³ČfÖ$_Jg"xt³ų|NukB(€BNu|€€BNuAśµxJØgaŔBØFü'J8sføĄCNr ųĄC`’HFü `’@BŖa’8g\XLß Fü!Hē’žNh/ xt!OŽ x|!Čt.hŽ"_Jh‚gų)Nap0(Aś“ų!@Hz’®!_aĈLß’/`»Ā xtp0(Aś“Š!@Hz’†!_aÄ`NuHē€ĄųĄC xtB(PčŒB(€Fü a xtJ(LßNuųĄCaž€gAś“~aÄ BØ@ēFü!`ž :“lf xtp0(Aś“X!@Hz’!_aĆčøĄCNuB(NuPč±ųtg¢NupBøt$x4<”@åJJr gŌņ J*gJj g4<ˆJ*gr2*  gdaØ z°N³ČgX&i^&)^gN ƒb6SCåKGś²8Gó0J“f 2<a¶&ˆļK*xŚķŒŚĆ2< ŻQÉ’ü&S#K^2+RAĀėŽćIŌA`B* xĀ!Č"HSBBQŹ’üJ*gāISA3< QÉ’śk˜S| fr{*JGčŻQÉ’ü!hŖr(ćI1pØ2(ač!Ira:r a6ra2ra.ra*$x"xt IJ(gµče&µč e h³ČfāNuašJ©f#xtNuB8ü%ĄsAś*N¹ž 8H@N¹ž$H@N¹ž$AśŃN¹žNłžNur`r`r` r`r`r b8&4:, xt.h Aś"aźAśŹ00AšaŚAś#aŅ H@aŌH@aĪAśaa¼ b:Aś a®0a²Aśa  H@a¢H@aœAśūaŠ0aŽAś!a|AśīatNINJ fīAśabFü"xt.iaj)_gHp)§f)ćH01 g fAśėa$AśŒaNINJAś³a Sg sfŽų½fśé^¼fø½žü Op)§f)0€t&<ćH01°z®ņf :®čg$R‚&:®Śƒ!C!i1B BhHB1BBx¾J8¼g*Hē €t4aā0)Ąh&f0)h&1Ą¾!ČĄLßp NNJhŽüf< iJ‚g$HŌü&:®hƒŚQĖ’ü i :’°˜fN"xtAśĮa`žöAś›a`žźAś¬a`žŽAś p NN`žō„ :®g6 @Cś@±‰f,$xtCśžp%I’5|€?*.5z­č.N$xt5_.%jŖø½`žBMUBTMUBE Type S to start system: Error reading boot device No Bootstrap on boot device Insert System diskette Not enough memory, base of BIOS @  Can only boot with Configuration Version 2.x  PROCESSOR EXCEPTION: Error @ Function: Access: Inst: Type space to continue BusAddressIllegal InstructionArithmeticPriviledge ViolationUninitialized TRAP’¬’°’ø’Ģ’×’ģgNJ`ųNu/réX? c0NJ0QÉ’ä"Nu/CśØ¦ Ac  g  gBAåI"q"NuąI A?nģCś©t`čąI AnŽCśØę`ŚHē@@ xĮ!Č"HSABQÉ’üLßNuHēą  h^@gJ)Pf g mar`2)RĀ(g(`ī f0)RÄ(fA’ćI2;pN»lAPLßNu fJ)PgÜ2 b (g2`ĘJ)PgšB)P?pa0`ŒJ)igaÄ2)HĀčŽŅiJćIAˆ€©R`  .r„øĀź40<BvZ€Œā4L`†Ŗ°ČŚ 2*8BLV`jt~ˆčš¤®øĀĢÖą@†Ž¢Ō\dl–$F^z„ģ(HšxžrNu`$rNurNurNurNurNurNuJiHgSiHBNuJiHfņHē2(’iHSAg&4(ŽĀĀÄčćJGéˆÖĀ(K˜čŽ˜čŽāISA'$QÉ’üLß`@2)HRA²hg¬3AH`¦2)HRA²hfīHēGéˆ(K2(ŽÖĮÖĮĀéHāISA(ŪQÉ’üLß`śJiJg’l` JiJfJ(”g’\JiHg’TSiH3hŽJSiJ`’B2)JRA²hŽg’43AJ`’,2)JRA²hŽfģJ(”g’BiJRiH2)H²hf’SiH`’bBiHBiJ`žša’F`ņrdNu(—kž¼°hlž“3@HreNu(—kžĘ°hŽlž¾3@J`ž¶rfNuaŹ`ž¬rgNu@S`ž 2)J4BęIEńR“<fR²<g ÕüBJ*Tgź*TgÜēI‚B3AJ`ž`J(–gžX3hŽJSiJ`žJ2)J4BęIEńSjSk’:•ütJ*Tgģ*TgāēI‚B3AJ`ž2)J4BęIEńźT`żų2)J4BęIEńŖT`żąEéT2<B2QÉ’ś`żĢEéˆ2)HĀčŽćIŌĮ2)J)fB’4ĀQÉ’ü`ż¦)fEéˆ2)HĀčŽŅiJćIŌĮ2(Ž’iJSA`Ī< `ŚEéˆ2)HĀčŽćIŌĮ2(ŽSA`¬Eéˆ2)HĀčŽŅiJ`š)fEéˆ2)HĀčŽŅiJ?ćIŌĮ.2(Ā莒_SA`’v< `Ō)fEéˆ2(ĀčŽSAa’ZJ(•fž Nu(™Å)R< `ÖéR`üźéR`üąéR`üÖéR`üĢéR`üĀéR`üøéR`ü®éR`ü¤Pég`üœ©R`ü’©R`üˆ©R`ü~©R`üt©R`üj©R`ü`©R`üV©R`üLQég`üDrhNu(œEčžr(šVÉ’śg2Äf©R`éRQÉ’āJ(“güp`ś“riNu)R(…)Raś _R`ūģB)QrjNu2(ĀčŽt)QŅBćIAˆ€B1R)Q gūŗJ(“VĮŅ(²)QfĀ`ū¦Péh`ūžQéh`ū–rkNu@f`ūŠEéˆ2)HRAĀčŽSAćIŌĮ2(Ž’iJUAk5bQÉ’śB©f`ūXEéˆ2)HĀčŽŅiJćIŌĮ2(Ž’iJUAk4źQÉ’śB©f`ū&aū,`ü(HēGéˆ2)H4(ŽĀĀćIÖĮ(KÖĀÖĀ2(’iHSAg ĀĀāISA(ŪQÉ’üBB)f2(ŽSA8ĀQÉ’üLß`ūŚPéi`śČQéi`śĄB)QB©jrlNu 0m< :m: ;gT ?gj Am$ {mp` Am [mś€ am {mśrrmNuBA)QEń*kĀü ŅAkrlNuT)QBA)Q gĢEńBjjrlNuBA)QEńPźjrlNuBAAć 2;NūtŒ¬Ģś ś ś äś $8Fś ś \ś ś ś ś ś ś ś ś ś ś ’œ’œ’œ’œ’œ’œś ś ś ś ś äjvś ś ś ¦Ŗś ś ś ś ś ś ś ś ś ś ś ś ś 2)jfRA“iHjłŠBiH`ł‚2)jfRAŅiH²hm2(SA3AH`łb2)jfRAŅiJ²hŽm2(ŽSA3AJ`łB2)jfRA“iJjł2BiJ`ł*2)jgSA²hlł4)lgSB“hŽlł 3BJ3AH`ųž2)jgū¦ AgūŒ`ūŹ2)jgū> Agū`ū\aųÜSijoųŹ`ņ?)Jaż¤3_JSijoų“`źażXSijoų¦`ņJijgś¦`śŗPĀBA)QEń j’jg jjgUjč`ųtBg`ņBi`ģQĀ`ĪBAEń4*jg Bg, Bg. Bg0T²)QoÜ`ų:Jg²)Qgų.)sR`ą)€R`Ų)R`Š)R`ČFü%08”gzFü Aś ŖrāHeRAXˆ`ö P0(F@Įx”(Ng$B(NåIEś ‚$rµČg¼"HµéDg"iD±Éfņ`Ŗ$hDü–ųĄC"h@(M nŠfJ(PfPčB(čM`|LfJ*PfPźB*čM`|LøĄC(M f„#J0)J°iLgĮI0(HJ1g@ØaŲ¢ĮI&j<#K:/ Cśx+FSg$Cś„SgCś”SgCś”Sg Cś”SgCś”"‹"_|Mé+#xt`JøĄC`@Hē€Ąaģ&LßS8–f’PčB(B(LPźB*B*L|M`’8aėÄ`žv(xt)h@@&i^zaąz a“z a®zaØza¢zaœza–zazaŠza„Tŗ<"oōzavzap4+ŽSBB,J`RN0< NJ.TgzaPRWŹ’ęgązJ*ggza6za0MźˆBtr“kf²kŽgŽJ+“g*J.f+šĖ»Ę+™†a.TŽ`Ź+šČ+™ˆa0 @ g&NJRA²kŽoŖRBJ+”f +FČaōza¶`Œ/RA:+ŽšAk°^VĶ’üfXORB“koĪ`,_SA`²za¬z a€g6Mźˆ0+2+ŽĄĮćHÜĄSAJ+“gSA0NJ WÉ’öz J*hgz aHzaBg*fNJza44*Hg SBza&QŹ’ś2*Jg SAzaQÉ’śJ*igz#az ažg*SNJJ+“g Č+™Ź+šˆa`+g TāfśaĢNuøgĄzaä¹Ę+™gfĘ+›g:z VĶ’üg. WĶ’ōf&ć a’+›ĘzTā da€Jfņ+›`B†+FĘzā d ā āćaZ`āTJfčĘ+šg4zaB/BMėžz+š VĶ’üg VĶ’ōg€6PQĶ’źŠ+œNJ,_Ę+gza’,NuHē„Mė®å 6Pg6Pg NJRfīpLß@!NuųĄCB*B((j@|PčB(M©+#JøĄC`ūB0* @n ćH0;Nū 5|’ņNu,€6L0* @nāćH0;NūDŚī,Hē`*aĪ4* aŽf* @f Ač$&Ų&Ų&Ų`5|’ņLßNuHē`)g&*aŽ4* ažfųĄC*gSg,Sg\5|’ņøĄCLßNu0Ąh*g³h*`ę5|’’`Ž0Ąh(gF@Ąh*fčƒh*"xt&I²if!I`ø"i·Éfģ³h*`ÄAč$ Ū0ŪT‹Tˆ0ŪŪ`˜Jg/SB@Ą2 Nu2)NuJBkB BnTćJAń tf Bn@åJAś˜V p BNu  fä ?n&åJAś™4 p BNuDB B’mŹ  fąJ`ŚB’`ŗ<Nu/ųĄC2* AgV Af<2*g@SA xø08¶g S@JPgJAg6Ų&Ų&Ų&Ų&ŲSA`ŠüQČ’äB[B›B›B›B›øĄC"Nu5|’ņ`ī6ų“6ų¶B©R`ÜHēx v)R0* gäS@g S@g\S@fa“`ĀW@f¶Bx¶`“"K2*g¤SAųĄC48¶g>SB xøBD(H*ITJ\gRD»Œf»Œf»Œf»Œf 5|’’`nŠüQŹ’ŌŅüQÉ’¾Ųjøx“n> xøBD2*SA"K(HRDøx¶nJTf*BĆT‰(Ł(Ł(Ł(ŁŠüQÉ’Žøx¶o1Ķ`5|’ń` Šü`Ā5|’ņøĄCLß0Nu"K2*gęSABųĄC48¶g>SB xø(HTŒ*IT»Œf»Œf»Œf »ŒfBP` ŠüQŹ’ÜPÄŅüQÉ’ĘaJgž5|’’`–48¶SB xøBABCRAJPg6ŠüQŹ’ņ1ƶNu"K2*g’dSAųĄC48¶g>SB xø(H*ITJ\g&»Œf"»Œf»Œf»Œf¶Pg5|’ńŅüQÉ’Ź`’&ŠüQŹ’Ź5|’’`’/08¶g0S@ xtBA(RA xøųĄC²PfBPŠüQČ’ōa’LøĄC"NuaäŽNup)§f)6€Nu)gūĢk§Nu&©Nu)gū“#SNu0* g”P)gūœ @nū”S@gūް)g”0åHAś—h 0gūx @ųĄC&hŽ7| @Hz” '_BB(ŒøĄCNu*fDHē`(ųĄC2*Af)` An SA4åIAś— 0gś(@*f )P蓨 o "’Ø $( g$(hÜS€fś gBS€fś!L•Ø f1j #h4aVp` p`B)BpøĄCLß5@Nu(xtrt(l0* Ąl@g°j f ,R6ĀS¹ųtfÜJgĄSB[`öHēPčaž’p(åHGś“ö 3g,(@Gģ8 +g&@`ö&ˆBØB,ŒJ,Ūg p3/ "La̘"_LßNuHē@p*g @nxS@åHCś“¢ 1gh"@ųĄC*fh*fŽrIé4 gRA(@`ö6ĮrIé< gRA(@`ö6ĮrIé0 gRA(@`ö6ĮrIé8 gRA(@`ö6Į`1|øĄCLßNuBS )4gģ(@,R@'l 'lBk ³ųtfŹPģ`ÄBS )8g¼ @(R@7h'h³ųtfžaż¼!i<#H<`ŽųĄC )0J€g2 @J(g0(åHAś’œ 0g @PčBażN (!i<#H<`ŹB©0 )8J€g @ (!i<#H<`źB©8 )4J€g @1|až: (`źB©4øĄCNu$xt"J )0g& @J(gS(f1|aüŅažPųs (`Ų"i³ŹfĢNu` ¬` Ø` ¤`  ` œ` ˜` Ž` ŒNu$xŌźCśöpJfF2<8ŅjaēIčGśLr/ KŠŪ(ČQÉ’ų(ŪBœBœ _Jjf(KŲŪ!L(KŲŪ!L!R0`Aś."ˆXŠX‰QÉ’ŖAśP ŗ”Nu’r’l’r’t’~’€’v’p’’’’  "ĀÄĘČŹĢĪŠšņōöųśüž (*,.0246DFHJLNPR`bdfhjln|~€‚„†ˆŠźģīšņōöųœž ¢¤¦ØŖž  ˆŠŒŽ’”–˜šœž ¢¤¦ØŖ¬®°²“¶øŗ¼¾ĄĀÄž*,.0@BDFVXZ\ž   "$(*,.02468:<+˜+š+œ+ž+¤+¦+Ø+Ŗ+¬+®+“+¶TTTTTTTTT T"T$T&T(T*T,T.T0T2T4T6T8T:TT@TBTDTFTHTJTLTNTPTRTTTVTXTZT\T^T`TbTdTfThTjTlTnTpTrTtTvTxTzT|T~T€T„T†TˆT˜TšTœTžT T¢T¬T®T°TŌTÖTŲTŚTÜTŽTąTāTäTę[*[,[.[0[8[<[>[@[B[H[t[v[x[€[‚bbb b bbb&b(b*b,b.b0 BIOSPROG BIOSPROG Ā ’žä"MNUUNIT SIOUNIT MUTRMSETINITMENU ‹€€€‰7 ( MUTRMSETACopyright (c) 1983 SAGE Computer Technology, All Rights Reserved "  TYPE " "MNU_Cat = (MNU_Integer,MNU_String,MNU_Hex,MNU_OnorOff,MNU_SubMenu,MNU_Event, -MNU_Choice); /"MNU_Status= (MNU_Done,MNU_Get,MNU_Put,MNU_Enter,MNU_ReEnter,MNU_Exit); "MNU_Style = (MNU_1Style,MNU_2Style); "  VAR " "MNU_Value:INTEGER; "MNU_HighValue:INTEGER; "MNU_Boolean:BOOLEAN; "MNU_StrValue:STRING; " "MNU_State:MNU_Status; "MNU_MenuNumber:INTEGER; "MNU_ItemNumber:INTEGER; MNU_General:INTEGER; "MNU_Category:MNU_Cat; "MNU_Fancy:BOOLEAN; " "MNU_Aborted:BOOLEAN; "MNU_Reject:BOOLEAN; " "MNU_File:FILE OF CHAR; "MNU_Fopen:BOOLEAN; " { Procedures to Define a Menu }  PROCEDURE MNU_Menu(MenuName,MenuTitle:STRING; MenuStyle:MNU_Style; MenuNumber, 3MenuWidth:INTEGER); PROCEDURE MNU_CopyM(OldName,MenuName,MenuTitle:STRING; MenuNumber:INTEGER);   { Procedures to Define Items in a Menu }  PROCEDURE MNU_ItemI(ItemName:STRING; General,Number:INTEGER; 4HighLimit,LowLimit:INTEGER);  PROCEDURE MNU_ItemS(ItemName:STRING; General,Number:INTEGER);  PROCEDURE MNU_ItemO(ItemName:STRING; General,Number:INTEGER);  PROCEDURE MNU_ItemM(ItemName:STRING; General,Number:INTEGER; 4MenuName:STRING; DispSubItem:BOOLEAN);  PROCEDURE MNU_ItemH(ItemName:STRING; General,Number:INTEGER; 4Digits:INTEGER);  PROCEDURE MNU_ItemE(ItemName:STRING; General,Number:INTEGER; 4Redisplay:BOOLEAN);  PROCEDURE MNU_ItemC(ItemName:STRING; General,Number:INTEGER); PROCEDURE MNU_CopyI(MenuName:STRING; Number:INTEGER);    PROCEDURE MNU_Show(MenuName:STRING);   PROCEDURE MNU_Loop;  { Procedures for User Screen Output }  PROCEDURE MNU_ClrScreen;  PROCEDURE MNU_Error;  FUNCTION MNU_YesorNo(Prompt:STRING):BOOLEAN;    IMPLEMENTATION  žMNUUNIT   Fatal error  in menu systemDuplicate menu Could not find menu for copyNo menu defined before itemIncorrect item for menu styleCould not find Menu for displayyOnnOffCould not find menu *’’$’/’R’j’ę’źSubmenu  is not correct styleCould not find referenced menu Menu  is  characters too wideeToo many items in menu  -  - 'Select Menu item : Error writing to file , Type space to continuee  Illegal integer valueValue out of range  to  Illegal hex valueONNOFFMust enter ON or OFFFžž’~’ˆ’Å: 'Select menu item : Error closing previous file File for printout: .TEXTCould not open &Warning - item will not fit in displayy’؞ܒ^’’š’¤’Æ’ĄY or N? Error closing printout file nštpšupš‚€t p!Ó š!tpš‚€ t pštprhp–€!ģ € p! Ȗ¬+b„,¬Pb§¢ķi`!v!Ó‘b b§ķp ¤.–-2+ØØIč™Ī? Ičb™Ī? N«¬PØØ1iŠ 1| p2( ²|gpĄh āXd40( <?6hIč™Ī? N«čØ0āXdBh `Ä0( <1vh `¶p0(`=Ø N«–.6,ØØIč™Ī? Ičf™Ī? N«¬PØØp0(bBv0)ܰ|gD0)Ü<?6hIč™Ī? N«čØ0āXd1iÜ`6Ič™Ī? BgIč™Ī? N«‘ØØ`Ič™Ī? BgIč™Ī? N«‘ØØ0(°|gd0(<1vh 1| p2( ²|gpĄh āXd*0( <06h<06h°hdfBh `Ī0( <1vh `Ą0( r2(b<=¶hN«–0O…2Ō…mrŠštp–ņT„,„Z¬Pb„X¬P„,˜`‘ ˜Ó‘š‚€t pš„,˜t p‘†h w…e˜Ņ…h„dŠ…e…hąh„e…hi!˜Ä!ē„,˜‘Ä!ēb˜‘Ä!ē‡VÄ!ē‡UÄ!ē˜Ä!ē‡WÄ!ēÄ!ē Ä!ēw!yĘ„i–[£}„U„€ƒ¬P„,„€¬Pb„¬P„U˜`‘ ˜Ņ*‘š‚€t pš„U˜t pš‚€$t p‘†h w…e…hąh„e…hi!˜Ä!ē„,˜‘Ä!ēb˜‘Ä!ē‡~Ä!ē Ä!ē {Ä!ē }Ä!ē ęÄ!ē ę Ä!ē yÄ!y!yxķĘ„i–€„1,`w ¤+…h¤,‡+ē‡-ć-y§‡,ę ²ń ‡,ē ‡-y§Ä‡,ē‡,ęķć,²Ÿ‡-|€ Śå”Ō&‡-|°‡-~å”Ō‡+ē˜ÄŠa‡,‘‡+ēa˜‘Ċ ē˜Ä…i˜Ņ …hē Ċ…i Ä „i–-ƒ…h˜Ņ‘š‚€)t p‘…h} Ó,‘š‚€7t pš…hz˜t pš‚€At p‘–Ä+b„0¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡/Ä!ē‡.Ä!ē‡-Ä!ē‡,Ä!Ä ‘–1ų+b„.¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡-Ä!ē‡,Ä!Ä ‘–/,+b„/.¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡-Ä!ē‡,Ä!Ä ‘–/vT„,„Z¬Pb„V¬P‘`w i!ēÄ!ē„,˜‘Ä!ē‡YÄ!ē‡XÄ!Ä ēb˜‘Ä ē‡UÄ ‘–[°+b„/¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡.Ä!ē‡-Ä!Ä!ē‡,Ä ‘–0ź+b„/¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡.Ä!ē‡-Ä!Ä!ē‡,Ä ‘–0 +b„.¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡-Ä!ē‡,Ä!Ä ‘–/ 8*a„,¬Pa˜‡+`‘ xķÄ ‘–- ‘)`„*¬P`˜†j‘…j˜Ņ0‘š‚€Gt pš`˜t pš‚€Rt pštp‘…j{„k…j~„.„c–+ Ā)ˆ§­³ń `­ˆ§£Č`ģ`§€ p`˜ˆ€P” –) ć.„ga‚€YėP…jh…ky|‹ā0as ‹Üa†ėP‹Ń…ky}¤+‡+²ń 1‡+£as ¤+0‡+as ‹®2Ō a‚€ZėPŠa‚€\ėP‹–…ky~Ōq…ky}˜„,‘‡,˜Ó9¤.‡,{¤-‡-˜±‡.å”Ō‡-y{0Ҥ.Ї-x¤-Šć‡.Ō a‡-yyėPŠŠ'‘š‚€^t pš…ky}˜t pštp‘ААŠ0…ky{Ņa‚€iėPŠրja§ ²ń„ga ȅk|˜Ó…k|aėP–. Ÿh…k˜±Õ”…k|˜±Õ„c„-…kyj"|Ņd"~Ō^"}˜a‘!˜Ó7!}Ņ!~„.Š*‘š‚€st pš"}˜t pš‚€xt p‘Š‘š‚€ƒt pš"}˜t p‘Š…j~„."{„/"z„0"|„1¦hŠ…kx„kŠ„ch ÕM’– ž…jꄁu…pķ£h…ję …j¢¢i…uī ķ„s…s!Œ…o²ńOš‚€“t pš…jz˜t pš‚€–t pš…s!Œ…o£tpš‚€™t pštp‘!„r„t…s²ń…o…s!Œ£…sī„t…t ²ń „t…usķ„q…r…sŒ…t…sj"…j|§£„w…w³ń„wŠ…w„w…q¢„l…q¢„m– ²pÓ„x„y– ņØØ0)Ü<1vh 0(°|oSh0( <1vh `äp0( =Ø N«–ō„n„y…2Ōr Šštpštp…xŌ †5t†5t…w²ńš€ …wup…xŌ †5€ …wuš…j|˜t pštp…xŌ†5…j|˜t †5tštp…xŌ†5t…qīnj"&²Õń…sīoi!'²ÕĢ!…qŒ"¢k#…u³ŸÕµ#`#³ń€A#¢lŠ[#€$³ń €0#¢£lŠL#€$Ņ€*lŠB#€%Ņ€#lŠ8#€&¢³ń €a#¢€&£lŠ&‘š‚€¤t pš…jz˜t pštp‘ ē$Ä ē!…r…t¢ŒŹ ē"¢Źš$upš‚€°t pš yy˜t p…xŌ†5$u†5‚€²t †5 yy˜t …ję yy§£m%²ńš€ %up…xŌ †5€ %uš€ up…xŌ †5€ u |˜Óš |˜t p…xŌ †5 |˜t Š&…j²ńš€ …jup…xŌ †5€ …ju!…sīÓ\…t²ńš€ up…xŌ †5€ uŠš€|up…xŌ †5€|u…t²ńš€ …tup…xŌ †5€ …tu!ķi‹.žštp…xŌ†5t"ķj‹ žštp…xŌ&†5t†5‚€“t †5t†5t†5t„x…yŌ<…2Ō …q¢rŠštpš‚€Čt pš†z˜t pštpr„v–Cšupš‚€Ōt pš`t pštpŌšt p € Ņā…2ńštpštp„4–g„gh`ˆ‚€įsi…ky|‹’…kyj`ˆ†s儁g`ˆ‚€āsi ˆ§³ń„g…gŌ š‚€ćt p0"}²Ÿ0"~³Ÿ Ō2„gš‚€īt pš"~tpš‚€ųt pš"}tp‹‚†ˆėPŠx`ˆ††s儁g`ˆ‚€ūsi ˆ§³ń„g…gŌ š‚€üt pŠ;ˆs ˆ‚čŌ„Š!ˆ‚čŌ„Š„gš‚ t pŠց–Žštp…f˜Ņ†fw…f˜Ä…fē˜ÄŠ-…fx˜Ņˆw…f­Ä­ē…fÄ­˜Ä­„fŠ…fx„f…f煁jąkyh {„/ z„0 }˜‘ „-¦–g…2Ō …q¢rŠštpš…kyy˜t pš‚t pšˆ€Pt pšt pˆ§²ń3ļ!…gŌš¦Š"„c¦„-…kyh…j~„. {„/ z„0 |„1Ц–섁c¦„-…kyi…j~„.!{„/!z„0!|„1!{„…j{h ˜ÓL |˜ÓB |§²ń: | |§§€ Ó/ | |§€ ȅ2Ō" ēÉ¢…ję ¢ ēɔ š |˜t p xhа„–!¦„-…kyh…j~„. {„/ z„0 |„1…ky}Ō„cŠ„c–-i…2Ō…q¢r…q¢rš‚t pš`t pštpåՐ €!Ņ „c„3€ p…ję€&²Ō €a³ €z²”Ō €a£€A¢h…j{„k!允k˜±”Ō…k{ ŅiŠ…kx„kŠā!Ō+…ky|k#ŚŌ"Š#ŚŌ#Š#Ґ$Š#Ґ%‹  €=°Õź…2Ō …q¢rŠštp…bŌ@†5” pÓ0šupš‚0t pš†z˜t pštpr„v„bš‚?t pš†zt pšt p†z§²ńf‚I†zs †5†z˜” pÓG…2Ō …q¢rŠštpšupš‚Lt pš†z˜t pštpr„vŠ„bŠ €/°…b”Ō„xļŠ šupŠ št p„ci!Õ*ž–-9h…c‹!…4ńW…2Ō*…kēÉ¢…ję ¢…kēɔ š…k|˜t pŠ štp…gŌ…2Ō…q¢rš‚Tt p…nŌ„cŠ„c…4…g Ō …j}Ņ„c‹¢…3Ō„cŠ#…4Ԑ„cŠ…j²ń …j{„kŠ„cŠs…kx„kŠf„cŠ\ ŠX„-hŠQ…j~„.h„-„cŠ@…f˜Ó1…fz˜Ó$…fzz˜‘ h…fē˜Ä…fy˜Ó…fy„f„-Š„cŠ„cŠցh ÕŅž„4–Z…2Ōr Šštpštp„n–ń,c„-¬Phj¤/šc˜t pš€ upšat p!€Y°!€y° Ōš!up¤/jŠD!€N°!€n° Ō jš!upŠ,štpŌšt pšup ń š‚rt ph"Ō–štp–.<`r„;É„p„;É„o„<É„2–<§†5†aį” ˜„d˜„e˜„h˜„i˜„j˜„k˜„f„c„n„4„3„x„b‘&” …bŌG†5” pÓ7štpšupš‚wt pš†z˜t pštpr„v„b†5” – { x 6ń¶$ “ü[Q{ŅtĖć›TŲ¹’ /  ‚ž‘wZ=žäÄūŖ Œ&**0* FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP    FUNCTION SIO_IntRd (VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:INTEGER): 4BOOLEAN;  FUNCTION SIO_HexRd (VAR Cursor:INTEGER; VAR Source:STRING; VAR ResultH, 4ResultL:INTEGER):BOOLEAN;  FUNCTION SIO_AlphRd(VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:STRING): 4BOOLEAN;  FUNCTION SIO_AlNuRd(VAR Cursor:INTEGER; VAR Source:STRING; VAR Result:STRING): 4BOOLEAN;  FUNCTION SIO_CharRD(VAR Cursor:INTEGER; VAR Source:STRING; Check:CHAR): 4BOOLEAN;  FUNCTION SIO_ByDlim(VAR Cursor:INTEGER; VAR Source:STRING; Check:STRING): 4BOOLEAN;   PROCEDURE SIO_CharWt(Value:CHAR; VAR Result:STRING);  PROCEDURE SIO_HexWt (Value:INTEGER; Digits:INTEGER; VAR Result:STRING);  PROCEDURE SIO_IntWt (Value:INTEGER; VAR Result:STRING);  PROCEDURE SIO_Fill (Count:INTEGER; VAR Result:STRING);  PROCEDURE SIO_Upper (VAR Result:STRING);  PROCEDURE SIO_Suffix(Suffix:STRING; VAR Result:STRING);   IMPLEMENTATION żSIOUNIT Ź3k"x!§²Ō !"xģ§Ņk""xķˤ+b„,¬P¤0i‡/x‡.§²ŌQ‡.‡/xģ§hb§Ņ bģ§Ņ ¤0‡/‡/xķĊiŠ*b§²ń!b§ bģpb§Ó ¤0‡/‡/xķĊiŠiŠi!Ō –/ o$Äijh&%€-‘ŌjŠ &%€+‘Ō&x%§²Ō(%&xģ§k#ƒ€ŚŌh&&xķÄ$$x Œ#¢€0£ÄŠiŠi!ŌĖ Ō o"Ō$$xᎤ %Ä$Äh'x&§²Ō[&'xģ§j"ƒ€ŚŌG¤ ''xķÄ"ƒ€ ŚŌ€0iŠ"ƒ€ŚŌ€A £iŠ€a £i$xk%%xŒc É¢Ä$$xŒ"¢!£ÄŠhŠh Ԙ–Ąmh$x#§²Ō!#$xģ§i!ƒ€ŚŌ m$$xķÄ!"‘ŠhŠh ŌŅ–$#"‘ńmpmh$x#§²Ō#$xģ§i!ƒ€ŚŌ $$xķÄ!"‘ŠhŠh ŌŌ–?#§²ń,#§jh "²Ō!# ģ§i!€a³Ō!€z²Ō # ģ!€a£€A¢Č ķhŠŚ–Ć£„{„€„¬P‡€¤§Ņ p`‡€¤ėP`‘ „{˜`˜r`§„{§£ķ±`§„{§ķ² ``§ģ§€.±”Ō‡€¤¤*„*‡€¤˜€Pr„*„{˜€ r„*ėP‡€¤‡€¤§ģ§€.Ņ ‡€¤‡€¤§r–€¦ė4‡6s` s‡5nf‡5˜€Prf`˜€ZrfėP–6 §€P³ń §ķČ §ģ!ȖK&²Ÿ&³Ÿ”Ō2'k&īli!$³Ō&c!ĖŲÉh ³ń€0 ¢jŠ€A ¢ £j"%‘!īiŠÕ–‰z‡|²Ÿ‡|€Q³Ÿ”Ō)`‡|Č`ģ‡|€ p‡{¤*„*‡{˜€Pr„*`˜€ r„*ėP–|’t–’’~~’~’ž’’ž’’’ž’’ž’"Ød†x āʉTĒ ***  LONGOPS STRINGOP ćMUTRMSETn1 €a³ €z²”Ō €a£€A¢iŠ i–kš €Pw pšw p §Ņp ‚€čń ‚€ s iŠi–Ų2šwpš‚€w p¤„U†›šåÕń¤…š‚€#w p†›šŌ††›š˜” pҤ…‡…ń š†›š˜w pš‚€2w pšwp‡…Ō¬¤„U„„Y‚€=ė ¤…¤„W‡„W‡…²Ō„„`‡„WĖ€’Ėȇ„Wķ¤„WŠß€_¤…¤„W‡„W‡…²Ō„„p‡„W€_Ė€’Ėȇ„Wķ¤„WŠŽ¤…¤„W‡„W‡…²Ō„„ ‡„WĖ€’Ėȇ„Wķ¤„WŠß„„¬Ė€-€’ĖȄ„¬Ė€-€’ĖȄ„¬Ė€-€’ĖȄ„¬Ė€-€’ĖȄ„¬Ė€-€’ĖȄ„¬Ė€|€’ĖȤ…¤„W‡„W‡…²Ō„„Ƈ„WĖ€’Ėȇ„Wķ¤„WŠß€Ÿ¤…¤„W‡„W‡0…²Ō„„°‡„W€ŸĖ€’Ėȇ„Wķ¤„WŠŽ0„„Yŀ§¤…¤„W‡„W‡…²Ō†wp0‚€Aė ‡„Wķ¤„WŠį†” pÓ,šwpš‚€Dw pš†›š˜w pšwpp††›š˜” pÓ.šwpš‚€Mw pš†›š˜w pšwp‘p`‚€UėP¤…¤„W‡„W‡…²ŌU`쇄W€A¢Č„*‡„WĖ×)¤…„…`˜€P” „…‚€V€S” „…0˜€`” „…ėP‡„W³ń†wp‡„Wķ¤„WŠ¢šwp ¤…¤„W‡„W‡…²ŌOš„*‡„WĖ×)˜w pš€ „*‡„WĖ×)§£vpš„*‡„W ¢Ė×)˜w pšwp‡„Wķ¤„WŠØšwp‡„U²ń@š‚€Xw pš`€Pw pšw p`짐¤„X‡„X€A³‡„X€Z²”Ōɇ„X€A£¤„U†‡„U” p†wp„„Y0ŀ§š‚€gw pš`€Pw pšw p`짐¤„X‡„X€AŅš‚€rw pšwp‡„X€B³‡„X€Z²”Ō®‡„X€A£¤„T†‡„T” p†wp„„Y0ė †‡„T” p0„„Yŀ§šwpš‚€ˆw pš`€Pw pšw p`§ ²ńš‚€¤w pšwp`§ ²ŌĄ`§²ń`s 0`ė –…2+š3兛ļ”ŌAt š‚€¶w pš†›š˜w pš‚€Äw pš`w p €y° €Y° Ō†wp–Ę|š.‹‹›†Ō0ēš0˧€cĖī×)ėP‹q›†Ō0ēš0€_˧€cĖī×)ėP‹Sš0i›‚€ÉėP0ēW!€ŸĖ§h ²ŸÕ¹!ā½Ė²ń"›¤,„,›˜€P” „,‚€Ź€Q” „,ėP € ²Ō2›¤,„,›˜€P” „,†‘Æ € Ėī×RĖī×)˜€ ” „,ėPŠT €Ņ$›¤,„,›˜€P” „,‚€Ė€S” „,ėPŠ+b‚€ĶėPbģ ț¤,„,›˜€P” „,b˜€ ” „,ėP!ķi °!ā½Ė° Õ#’Šg›‚€ĪėP›ģ0ēSš0˧ȊLš/Š?0ēGš0˧Œ0ēGš0ķ˧¢ŁŠ#0ēGš0˧ŁŠ0ēGš0˧±ŁŠÖ€ĻŠրē–| ‡Ł„›ļš.‹®›s m›†Ō%€cĖī×)čn%ķm%€c²Ÿ& Ōā&Ō+š.Ņ0ēš0Ė%ĖȊ0ēš0€_Ė%ĖȊ)rš€"vpš›˜w pš‚€ów pŁ4‹2›¤€°„€°›˜€P” „€°‚€Q” „€°ėP¤€°m%‡€°²ŌY‚›˜” k#Ņ›” #Óā#²ń$g%Ė×)›˜„€±#ī” „€±ėP›#” Š g%Ė×)‚ėP%ķmŠ ‚›˜” ²ń›‚›˜” ” ŠŁ›§²ńrš‚w pŁ4p¤€°m%‡€°²Õo„€¬%Ė×įÄg%Ė×)§‹„€¬%Ė×ċ„€¬%Ė×g%Ė×)ģ§Ä‹ģg%Ė×)§°g%Ė×)ģ§€^°”Ō#g%Ė×)s „€¬%Ė×g%Ė×)ģ§€@£Ä‹©g%Ė×)s jg%Ė×)§Ņ(g%Ė×)ģ§€H°bg%Ė×)a`s”Ō „€¬%Ė× Ą€¬%Ė×x³ń\g%Ė×)‚čŌ„€¬%Ė×€Ċ?€ ¤€±l$‡€±²Ō1g%Ė×)†‘Æ$€ Ėī×RĖī×)čŌ„€¬%Ė×$Ā l$ķlŠČŠց„€¬%Ė×x³ń2rš€"vpšg%Ė×)˜w pš‚ w pŁ4p%ķm‹‰ž¤€°m%‡€°²Ō 0ēWš0%¢€ŸĖ„€¬%Ė×x€’ĖČ%ķmŠŁ‘‹Æ›§Órš‚6w pŁ4p0ēSš0˛지’ĖȊyš/Šl0ēGš0˚€’ĖČ0ēGš0ķ˚ā½Ė€’ĖȊ>0ēGš0˚€’ĖȊ+šŌ0ēGš0Ė€’€’ĖȊ0ēGš0Ė€’ĖȊց@ŠցX–€Ł ӆ†-€§” u‘‚dr r š-Š ‘Š‘Šš.ŅŁ3ŠŠ š.Ņ‘Šցgš-ŅŠ†” –*.DATA8Name of terminal definition file : Name of new file :  could not be createdINITIALEMPTYError writing to Error opening X - Source record < A to clear>? Destination record? +Sorry, you can't modify the initial record.7New name of the destination record ? #13 characters maximum -- Try again.Ready to write changes to ? (y/n)  DELXX’¾’¾’ģ’ģ’ģ’ģ’ģ’Ż’Ż’Ż’Ż’Ż’Ż’Ż’Ż’Ż’Ż’Ż’Ż’Ż’Ż’Ż žržžžž­ž­’™’“" is not a function namee    $Maximum of 4 characters per sequenceeDELžļžż’’*" is not a recognized character identifierrOne character onlyy’‘’‘’Õ’Õ’Õ’Õ’Õ’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā üOüOüOüOüĪüĪ’Q’‡MAINN’Ż’į’ń’å’óe˜o 8FSTRINGOP FILEOPS PASCALIOEXTRAIO SCREENOPSIOUNIT MNUUNIT  INITMENU Ž$š€.vp–¹t š‚€w pšwpšwpš‚€w p„›ļ‚€!‚€$r‚€2‚€Dr‚€G‚€Xr‚€Z‚€fr‚€h ‚€xr‚€{‚€~r‚€r‚€–r‚€œr‚€¢r‚€Ør‚€®r‚€“r‚€ŗr‚€Ą r‚€Ę r‚€Ģ r‚€Ņ r‚€Ų r‚€Ž r‚€är‚€źr‚€šr‚€ör‚€ür‚r‚r‚r‚r‚r‚ r‚&r‚,r‚2r‚8r‚>r‚Dr‚J‚Lr‚]‚ir‚l‚xr‚{1‚‡r‚Š‚r‚£r‚©r‚Ær‚µr‚»r‚Įr‚Ēr‚Ķr‚Ór‚Ł r‚ß r‚å r‚ė r‚ń r‚÷r‚żr‚‚r‚‚ r‚‚r‚‚r‚‚r‚‚!r‚‚'r‚‚-r‚‚3r‚‚9r‚‚?r‚‚Er‚‚Kr‚‚Qr‚‚Wr‚‚]r‚‚c€ € r‚‚i‚‚lr‚‚‚€!r‚‚ˆ€"r‚‚Ž€#r‚‚”€$r‚‚š€%r‚‚ €&r‚‚¦€'r‚‚¬€(r‚‚²€)r‚‚ø€* r‚‚¾€+ r‚‚ĝ€, r‚‚Ź€- r‚‚Š€. r‚‚֝€/r‚‚ܝ€0r‚‚ā€1r‚‚č€2r‚‚ī€3r‚‚ō€4r‚‚ś€5r‚ƒ€6r‚ƒ€7r‚ƒ €8r‚ƒ€9r‚ƒ€:r‚ƒ€;r‚ƒ$€<r‚ƒ*€=r‚ƒ0€>r‚ƒ6€?r‚ƒ<€@r‚ƒB‚ƒEr‚ƒ[€Ar‚ƒa€Br‚ƒg€Cr‚ƒm€Dr‚ƒs€Er‚ƒy€Fr‚ƒ€Gr‚ƒ…€Hr‚ƒ‹€Ir‚ƒ‘€J r‚ƒ—€K r‚ƒ€L r‚ƒ£€M r‚ƒ©€N r‚ƒÆ€Or‚ƒµ€Pr‚ƒ»€Qr‚ƒĮ€Rr‚ƒĒ€Sr‚ƒĶ€Tr‚ƒÓ€Ur‚ƒŁ€Vr‚ƒß€Wr‚ƒå€Xr‚ƒė€Yr‚ƒń€Zr‚ƒ÷€[r‚ƒż€\r‚„€]r‚„ €^r‚„€_r‚„‚„r‚„#‚„,r‚„/‚„=r‚„@ ‚„Nr‚„Q‚„Tr‚„dr‚„kr‚„rr‚„z r‚„ƒr‚„‹r‚„“r‚„œr‚„£€ r‚„Ŗ€$ r‚„³€( r‚„»€, r‚„Ɲ€0 r‚„՝€4 r‚„ę€8r‚„÷€<r‚…€ˆr‚…€Œr‚…‚… r‚…0€@r‚…C€Dr‚…T€Hr‚…`€Lr‚…l€Pr‚…x€Tr‚…„€Xr‚…€\r‚…œ€`r‚…؝€d r‚…“€h r‚…Ą€l r‚…Ģ€p r‚…Ų€t r‚…䝀xr‚…š€|r‚…ü€€r‚†€„r‚†‚† r‚†'r‚†7r‚†Hr‚†Xr‚†ir‚†xr‚††‚†‰ r‚†™€„r‚†¦r‚†³r‚†Ąr‚†Źr‚†Ōr‚†ąr‚†ķ r‚†ł r‚‡ r‚‡ r‚‡ r‚‡, r‚‡9 r‚‡Fr‚‡Sķr‚‡`¢r‚‡m¢r‚‡z¢r‚‡‡¢r‚‡”¢r‚‡”¢r†Ō€cĖī×)‚‡®ėP†Ō€cĖī×)‚‡²ėP†Ō€cĖī×)‚‡¶ėP†Ō€cĖī×)‚‡ŗėP†Ō€cĖī×)‚‡¾ėP†Ō€cĖī×)‚‡ĀėP†Ō€cĖī×)‚‡ĘėP†Ō€cĖī×)‚‡ŹėP†Ō €cĖī×)‚‡ĪėP†Ō €cĖī×)‚‡ŅėP†Ō €cĖī×)‚‡ŌėP†Ō €cĖī×)‚‡ŲėP†Ō €cĖī×)‚‡ŚėP†Ō€cĖī×)‚‡ŽėP†Ō€cĖī×)‚‡ąėP†Ō€cĖī×)‚‡äėP†Ō€cĖī×)‚‡ęėP†Ō€cĖī×)‚‡źėP†Ō€cĖī×)‚‡ģėP†Ō€cĖī×)‚‡ļėP†Ō€cĖī×)‚‡ņėP†Ō€cĖī×)‚‡öėP†Ō€cĖī×)‚‡śėP†Ō€cĖī×)‚‡žėP†Ō€cĖī×)‚ˆėP†Ō€cĖī×)‚ˆėP†Ō€cĖī×)‚ˆėP†Ō€cĖī×)‚ˆ ėP†Ō€cĖī×)‚ˆėP†Ō€cĖī×)‚ˆėP†Ō€cĖī×)‚ˆėP†Ō€ €cĖī×)‚ˆėP†Ō€!€cĖī×)‚ˆėP†Ō€"€cĖī×)‚ˆ#ėP†Ō€#€cĖī×)‚ˆ&ėP†Ō€$€cĖī×)‚ˆ)ėP†Ō€%€cĖī×)‚ˆ.ėP†Ō€&€cĖī×)‚ˆ1ėP†Ō€'€cĖī×)‚ˆ6ėP†Ō€(€cĖī×)‚ˆ;ėP†Ō€)€cĖī×)‚ˆ?ėP†Ō€*€cĖī×)‚ˆCėP†Ō€+€cĖī×)‚ˆGėP†Ō€,€cĖī×)‚ˆKėP†Ō€-€cĖī×)‚ˆOėP†Ō€.€cĖī×)‚ˆSėP†Ō€/€cĖī×)‚ˆWėP†Ō€0€cĖī×)‚ˆ[ėP†Ō€1€cĖī×)‚ˆ_ėP†Ō€2€cĖī×)‚ˆcėP†Ō€3€cĖī×)‚ˆgėP†Ō€4€cĖī×)‚ˆkėP†Ō€5€cĖī×)‚ˆoėP†Ō€6€cĖī×)‚ˆsėP†Ō€7€cĖī×)‚ˆwėP†Ō€8€cĖī×)‚ˆ{ėP†Ō€9€cĖī×)‚ˆėP†Ō€:€cĖī×)‚ˆƒėP†Ō€;€cĖī×)‚ˆ‡ėP†Ō€<€cĖī×)‚ˆ‹ėP†Ō€=€cĖī×)‚ˆėP†Ō€>€cĖī×)‚ˆ•ėP†Ō€?€cĖī×)‚ˆšėP†Ō€@€cĖī×)‚ˆžėP†Ō€A€cĖī×)‚ˆ¢ėP†Ō€B€cĖī×)‚ˆ¦ėP†Ō€C€cĖī×)‚ˆŖėP†Ō€D€cĖī×)‚ˆ®ėP†Ō€E€cĖī×)‚ˆ²ėP†Ō€F€cĖī×)‚ˆ¶ėP†Ō€G€cĖī×)‚ˆŗėP†Ō€H€cĖī×)‚ˆ¾ėP†Ō€I€cĖī×)‚ˆĀėP†Ō€J€cĖī×)‚ˆĘėP†Ō€K€cĖī×)‚ˆÉėP†Ō€L€cĖī×)‚ˆĶėP†Ō€M€cĖī×)‚ˆŃėP†Ō€N€cĖī×)‚ˆÕėP†Ō€O€cĖī×)‚ˆŁėP†Ō€P€cĖī×)‚ˆŻėP†Ō€Q€cĖī×)‚ˆāėP†Ō€R€cĖī×)‚ˆēėP†Ō€S€cĖī×)‚ˆėėP†Ō€T€cĖī×)‚ˆļėP†Ō€U€cĖī×)‚ˆóėP†Ō€V€cĖī×)‚ˆ÷ėP†Ō€W€cĖī×)‚ˆūėP†Ō€X€cĖī×)‚ˆ’ėP†Ō€Y€cĖī×)‚‰ėP†Ō€Z€cĖī×)‚‰ėP†Ō€[€cĖī×)‚‰ ėP†Ō€\€cĖī×)‚‰ėP†Ō€]€cĖī×)‚‰ėP†Ō€^€cĖī×)‚‰ėP†Ō€_€cĖī×)‚‰ėP†Ō€`€cĖī×)‚‰ėP†Ō€a€cĖī×)‚‰#ėP†Ō€b€cĖī×)‚‰'ėP†Ō€c€cĖī×)‚‰+ėP†‘Æ€ Ėī×RĖī×)‚‰/ėP†‘Æ€ Ėī×RĖī×)‚‰1ėP†‘Æ€ Ėī×RĖī×)‚‰3ėP†‘Æ€ Ėī×RĖī×)‚‰5ėP†‘Æ€ Ėī×RĖī×)‚‰7ėP†‘Æ€ Ėī×RĖī×)‚‰9ėP†‘Æ€ Ėī×RĖī×)‚‰;ėP†‘Æ€ Ėī×RĖī×)‚‰=ėP†‘Æ€ Ėī×RĖī×)‚‰?ėP†‘Æ€ Ėī×RĖī×)‚‰AėP†‘Æ€ Ėī×RĖī×)‚‰CėP†‘Æ€ Ėī×RĖī×)‚‰EėP†‘Æ€ Ėī×RĖī×)‚‰GėP†‘Æ€ Ėī×RĖī×)‚‰IėP†‘Æ€ Ėī×RĖī×)‚‰KėP†‘Æ€ Ėī×RĖī×)‚‰MėP†‘Æ € Ėī×RĖī×)‚‰OėP†‘Æ € Ėī×RĖī×)‚‰QėP†‘Æ € Ėī×RĖī×)‚‰SėP†‘Æ € Ėī×RĖī×)‚‰UėP†‘Æ € Ėī×RĖī×)‚‰WėP†‘Æ € Ėī×RĖī×)‚‰YėP†‘Æ € Ėī×RĖī×)‚‰[ėP†‘Æ € Ėī×RĖī×)‚‰]ėP†‘Æ € Ėī1×RĖī×)‚‰_ėP†‘Æ € Ėī×RĖī×)‚‰aėP†‘Æ€ Ėī×RĖī×)‚‰cėP†‘Æ€ Ėī×RĖī×)‚‰eėP†‘Æ€ Ėī×RĖī×)‚‰gėP†‘Æ€ Ėī×RĖī×)‚‰iėP†‘Æ€ Ėī×RĖī×)‚‰kėP†‘Æ€ Ėī×RĖī×)‚‰mėP†‘Æ€ Ėī×RĖī×)‚‰oėP†‘Æ€ Ėī×RĖī×)‚‰qėP†‘Æ€ Ėī×RĖī×)‚‰sėP†‘Æ€ Ėī×RĖī×)‚‰uėP†‘Æ€ Ėī×RĖī×)‚‰wėP†‘Æ€ Ėī×RĖī×)‚‰yėP†‘Æ€ Ėī×RĖī×)‚‰{ėP†‘Æ€ Ėī×RĖī×)‚‰}ėP†‘Æ€ Ėī×RĖī×)‚‰ėP†‘Æ€ Ėī×RĖī×)‚‰ėP†‘Æ€ Ėī×RĖī×)‚‰ƒėP†‘Æ€ Ėī×RĖī×)‚‰…ėP†‘Æ€ Ėī×RĖī×)‚‰‡ėP†‘Æ€ Ėī×RĖī×)‚‰‰ėP†‘Æ€ Ėī×RĖī×)‚‰‹ėP†‘Æ€ Ėī×RĖī×)‚‰ėP†‘Æ€ Ėī×RĖī×)‚‰ėP†‘Æ€ Ėī×RĖī×)‚‰‘ėP†‘Æ€ Ėī×RĖī×)‚‰“ėP†‘Æ€ Ėī×RĖī×)‚‰•ėP†‘Æ€ Ėī×RĖī×)‚‰—ėP†‘Æ€ Ėī×RĖī×)‚‰™ėP†‘Æ€ Ėī×RĖī×)‚‰›ėP†‘Æ€ Ėī×RĖī×)‚‰ėP†‘Æ€ Ėī×RĖī×)‚‰ŸėP†‘Æ€ Ėī×RĖī×)‚‰”ėP†‘Æ€ Ėī×RĖī×)‚‰£ėP†‘Æ€ Ėī×RĖī×)‚‰„ėP†‘Æ€ Ėī×RĖī×)‚‰§ėP†‘Æ€ Ėī×RĖī×)‚‰©ėP†‘Æ€ € Ėī×RĖī×)‚‰«ėP†‘Æ€ € Ėī×RĖī×)‚‰­ėP–. Multi-User Terminal Set-upp Initializing MAINNMulti-User Terminal Set-upp"Define control character functionssCTRLL Define escape sequence functionssESCDefine output sequencesOUTDefine terminal characteristicsTERMMCTRLL"Define Control Character Functionss CTRL-A 01H CTRL-B 02H CTRL-C 03H CTRL-D 04H CTRL-E 05H CTRL-F 06H CTRL-G 07H CTRL-H 08H CTRL-I 09H CTRL-J 0AH CTRL-K 0BH CTRL-L 0CH CTRL-M 0DH CTRL-N 0EH CTRL-O 0FH CTRL-P 10H CTRL-Q 11H CTRL-R 12H CTRL-S 13H CTRL-T 14H CTRL-U 15H CTRL-V 16H CTRL-W 17H CTRL-X 18H CTRL-Y 19H CTRL-Z 1AH CTRL-[ 1BH CTRL-\ 1CH CTRL-] 1DH CTRL-^ 1EH CTRL-_ 1FHESC Define Escape Sequence FunctionssESC 20H through ESC 40HESCAAESC 41H through ESC 60HESCBBESC 61H through ESC 7FHESCCCESCAA*Define Escape Sequences ESC 20H - ESC 40HH ESC SP 20H ESC ! 21H ESC " 22H ESC # 23H ESC $ 24H ESC % 25H ESC & 26H ESC ' 27H ESC ( 28H ESC ) 29H ESC * 2AH ESC + 2BH ESC , 2CH ESC - 2DH ESC . 2EH ESC / 2FH ESC 0 30H ESC 1 31H ESC 2 32H ESC 3 33H ESC 4 34H ESC 5 35H ESC 6 36H ESC 7 37H ESC 8 38H ESC 9 39H ESC : 3AH ESC ; 3BH ESC < 3CH ESC = 3DH ESC > 3EH ESC ? 3FH ESC @ 40HESCBB*Define Escape Sequences ESC 41H - ESC 60HH ESC A 41H ESC B 42H ESC C 43H ESC D 44H ESC E 45H ESC F 46H ESC G 47H ESC H 48H ESC I 49H ESC J 4AH ESC K 4BH ESC L 4CH ESC M 4DH ESC N 4EH ESC O 4FH ESC P 50H ESC Q 51H ESC R 52H ESC S 53H ESC T 54H ESC U 55H ESC V 56H ESC W 57H ESC X 58H ESC Y 59H ESC Z 5AH ESC [  5BH ESC \ 5CH ESC ] 5DH ESC ^ 5EH ESC _ 5FH ESC ` 60HESCCC*Define Escape Sequences ESC 61H - ESC 7FHH ESC a 61H ESC b 62H ESC c 63H ESC d 64H ESC e 65H ESC f 66H ESC g 67H ESC h 68H ESC i 69H ESC j 6AH ESC k 6BH ESC l 6CH ESC m 6DH ESC n 6EH ESC o 6FH ESC p 70H ESC q 71H ESC r 72H ESC s 73H ESC t 74H ESC u 75H ESC v 76H ESC w 77H ESC x 78H ESC y 79H ESC z 7AH ESC { 7BH ESC | 7CH ESC } 7DH ESC ~ 7EH ESC DEL 7FHOUTDefine Output SequencesPart A (General))OUTAAPart B (Screen attributes))OUTBBPart C (Window characters))OUTCCOUTAADefine Output Sequences, Part A * Cursor home * Cursor down* Cursor rightt* Cursor new line* Clear screennClear all tabssSet tab at cursor Normal videoo Reverse videoShow status lineeShow user lineeLoad user linee#Change cursor attr. (start of seq.) Invisible cursor (preceded by M))!Select fill char. (start of seq.)!Normal fill char. (preceded by O)Screen overwrite modeScreen insert modeeOUTBBDefine Output Sequences, Part B%Set lump screen attr. (start of seq.)!Normal lump attr. (preceded by A)Clr screen attribute 00Set screen attribute 00Clr screen attribute 11Set screen attribute 11Clr screen attribute 22Set screen attribute 22Clr screen attribute 33Set screen attribute 33Clr screen attribute 44Set screen attribute 44Clr screen attribute 55Set screen attribute 55Clr screen attribute 66Set screen attribute 66Clr screen attribute 77Set screen attribute 77OUTCCDefine Output Sequenc2es, Part CCharacter for upper left corner Character for upper right cornerrCharacter for lower left corner Character for lower right cornerrCharacter for horizontal lineCharacter for vertical lineTERMMDefine Terminal CharacteristicsTerminal Width (char/ln))Terminal Height (ln/scrn)ANSI parameter sequencessVisible lump char..Cursor wrap-arounddHome cursor on clr scrnMove curs. on no tab stopCoord. conversion codeeASCII normal cursor attr.Separately altered attr..Attr. cleared togetherrLump alterable attributesASCII conv. for lump charBit mask for monitor modeLump bit affecting attr 0Lump bit affecting attr 1Lump bit affecting attr 2Lump bit affecting attr 3Lump bit affecting attr 4Lump bit affecting attr 5Lump bit affecting attr 6Lump bit affecting attr 7ESCSEQQIGNOREEIGNORE2IGNORE3IGNORE4IGNORE5IGNORE6IGNORE7UNUSEDDCUPCUPSCRRCDNCDNSCRRCLFCLFWRPPCRTCRTWRPPCCRCHOMECNEWLCGOTORCCGOTORRCGOTOCCCATRRCTABBCBKTABBSETTABBCLRTABBCLRALLTERBOLEREOLEREOLNULLERLINEEERBOPEREOPEREOPNULLERSCRERSCRNULLERSCRATRRSETATR0SETATR1SETATR2SETATR3SETATR4SETATR5SETATR6SETATR7SETREVVSETATRRCLRATR0CLRATR1CLRATR2CLRATR3CLRATR4CLRATR5CLRATR6CLRATR7CLRREVVUNUSEDDLOADUSERRSHOWUSERRSHOWSTATTUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDINSCHRRDELCHRRINSLINNDELLINNINSONINSOFFFUNUSEDDUNUSEDDUNUSEDDUNUSEDDPARSANSIILOADFILLLDSPCTRLUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDDUNUSEDD^AASOH^BBSTX^CCETX^DDEOT^EEENQ^FFACKBELBELBSSBSSHTTHTTLFFLFF^KKVTT^LLFFFCRRCRR^NNSOO^OOSII^PPDLE^QQDC1^RRDC2^SSDC3^TTDC4^UUNAK^VVSYN^WWETB^XXCAN^YYEMM^ZZSUBESCESC^\\FSS^]]GSS^^^RSS^__USSSPPSPP OCONFIG ‹CONFIG [IV a.0]N L’’MUCF~ž~<~Ś~x~~“~R~š~Ž~,~Ź~h~ ~ ¤~ B~ ą" " D" v" Ø" Ś" , 8, d z  ¦ ¼ Š Ņ< ĀB‚@Ā€B B€@ 45@ @ 5ef@ @  f–—@ @ —ĒČ@ @ Č ų ł@ @   ł ) *@ @@ @€2@@ @ @ @ @ @@@€’’’’’’n@š@’’’’’’n@š@’’’’’’~@š@’’’’’’~@š@’’’’’’~@š@’’’’’’~@š@’’’’P*’}Ń@åP’’’’P*’}Ń@åP’’’’ *’’’’’’’’’’’’’’’’’’’’ōģ2śH2ILt @śH2ILt @śH2ILt @śH2ILt @’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’ ’’’’ ’’’’ ’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’!’’’’"’’’’#’’’’$’’’’%’’’’&’’’’'’’’’(’’’’)’’’’*’’’’+’’’’,’’’’-’’’’.’’’’/’’’’0’’’’1’’’’2’’’’3’’’’4’’’’5’’’’6’’’’7’’’’8’’’’9’’’’:’’’’;’’’’<’’’’=’’’’>’’’’?  TELEVIDEO 925  '8.'''''H1FI,G6#0:<=>  6$P’’’ 1Š0-----| 31dbhgf.0G0XU()() FREEDOM 100  %-78.'%%&%HR1FI,G6#0:Q<=>  6$P’’ 2p0FGEHKJ 31dbhgf.1e G0XU%$()3VT 102   PP’’’ŒŒ-----|  H SAGE QUME 102 '-78.'''''HR1FI,G6# 6$=>P’’’ p0fgehkj 31}{G0XU%$()VT 52  -7 #P -----|H C HJGFVIBUNIT €€€€€€€€€€€€€€€€ķ~ķ~0żLAąŲĆ\Ž\Ž’ķš’F#č\Ž‚  VAR IB_SAGE, {The bus address of the SAGE II as set by switches} $IB_ERR:INTEGER; {If <>0, an error has occurred }  IB_CHK:BOOLEAN; {Chk,if true then wrt any error msgs from this unit}  IB_X,IB_Y:INTEGER;{Wrt any error msgs at screen postion X,Y}   {NOTE: arguments are defined in implementation section}   FUNCTION IB_SWITCH:INTEGER;  PROCEDURE IB_INIT(VAR CNTRL,ADDR:INTEGER;CMDWAIT:INTEGER);  PROCEDURE IB_STAT(BDEV,STATUS:INTEGER);  PROCEDURE IB_TALK(LDEV:INTEGER;VAR TBU3F:INTEGER;LNG:INTEGER);  PROCEDURE IB_TALKS(LDEV:INTEGER;S:STRING);  PROCEDURE IB_HEAR(TDEV:INTEGER;VAR LBUF,LNG:INTEGER;MORE:BOOLEAN);  PROCEDURE IB_HEARS(TDEV:INTEGER;VAR S:STRING);  PROCEDURE IB_DIR(RDW,REG:INTEGER;VAR VAL:INTEGER);  PROCEDURE IB_SPOLL(VAR PDEV:INTEGER);  FUNCTION IB_CHKSRQ:BOOLEAN;  IMPLEMENTATION UIBUNIT TV)`„*¬P43rš‚€s pš0spš€ tpš`˜s pš†s p–+Ģ2Ōm0Ói0Šc‚€‘ Š]‚€‘ ŠT‚€%‘ ŠK‚€+‘ ŠB‚€1‘ Š9‚€N‘ Š0‚€j‘ Š'‚€‡‘ Š‚€•‘ Š‚€¢‘ Š ‚€Ŗ‘ Šր斚 Nr¢i€’h€‚b! p"åjb˧k–"! ‘ „‘–*† #Ė"€’ĖČ„† Ė׆‘ „‘–N„b†1‘ „‘0Ņ !`‘ „‘–„T„,„U¬P€'¤+¤*‡*‡+²Ō`‡*€'Ė×ć*ķ¤*Šē„,§¤)„,ģ`‡)p`‡)€OĖ €’ĖȇW`€'Ėׇ)‘–WÓ ń„††#‘ „‘Š„0Ņ "!‘ „‘–+€P¤+‡-`€)Ėׄ+‘‡+€P²ń€2„‘Ї,‡+Č`€Sˇ,ģ‡+p–-L† Ė×!Ć Ė× xÄ„† Ė׆"‘ „‘ † Ė×xĖciha`‘ „0 °j–‚ Ä„ †‘ „‘ x”˦„„6…²Ō† 6Ė×Ä6ķ„Šźu–IB_ERR=Bad call to IB_BUS routinee Please accept data, more to comee RCV timeout XMT timeout8Control timeout - Talker did not give EOI (end-of-input))6Status table indicates device is not equipped to talk..8Status table indicates device is not equipped to listen..Nobody answered serial pollNo SRQ - service requesttUnexpected SRQQ(Input greater than 80 char string lengthh2’š’£’¬’µ’¾’Ē’Š’Ł’ā’ė’ō- (4 ģÕ©—ƒzhC*** EXTRAIO PASCALIOGOTOXY  IBSAGE IBERR IBCHK AUX ASCII BLNG DIRECT CHKSRQ CMD  DEVSTAT  I IBBUS IBX IBY RD ITALK IHEAR INIT  PPOLL WT SESSION SETSTAT TRANS SPOLL  $CURSOR $EQUAL O.§ Ø4 ib.lnk.code  *SYSTEM.LIBRARY  š<ŒCDĻG TžMUUTIL INITMENUWARNINGSCONFIGMUCONFIGSAMNUUNIT SIOUNIT €€€ €€‹€T7MUUTIL MUUTIL  !‰7 [IV a.0]t (c) 1983, 1984 SAGE Computer Technology, All Rights ReservedļMUUTIL ø!sš‚€” pš†‘€P” pš” pš” p†‘§Ņp†‘C†‘˜” pÓš‚€” pš†‘˜” p‹†‘C†ā ī” hā ī ±p± Ō'š‚€” pš†‘˜” p†‘C” p‹B† Ė×x±† Ė×x±”Ōš‚€%” p†‘C” p‹ † Ė×xįÓ:š‚€:” pš† Ė×x” pš‚€E” p†‘C” p‹Ę†˧€M°†˧€U°”†˧€C°”†˧€F°”ŌYš‚€M” pš†ɔ pš€.” pš†ɔ pš‚€Y” pš” pš” p„‘Š@š‚€c” pš†‘˜” pš‚€h” pš‚€r” p†‘C” pš” pui–Tc2Õ(š” pb¤-„-‚€}” „-†‘˜€j” „-‚€‹€l” „-ėPb˜s՜†‘C†ā ī” i!ā ī±p± Ō%š‚€” pš†‘˜” pš” pŠš” pš‚€„” pš” p†‘C” pÓ#š‚€“” pš†‘˜” pš” pŠC‚€ĖsŌ)š” pš‚€Õ” pš” p†‘C” pŠ‚€ås Ł-pš” pu¤,–c(…|h ŅŁ‹æ0²Ō  thŠ th KŅŁ‹ €%ŅŁ‹ ĄŅŁ‹ƒ ` ŅŁŠw ŠŅŁŠk ŅŁŠ_ °ŅŁŠS XŅŁŠG ,ŅŁŠ; €ČŅ ŁŠ0 €–Ņ ŁŠ% €nŅ ŁŠ €KŅ ŁŠ €2Ņ ŁŠŁ–tš0h €ČŅ 0€<ŚŌsš‚€č” pŁ4p Ó0²Ō  thŠ th „|–Ŗ†{ Éi†{ Éh…|ŅŁŠ Ō!ŌŁŠŁŠŁ–…|°š/±”…|±š/°” Ōsš‚€ż” pŁ4ihŠ0š/ŅihŠš/ŅihŠ š/Ņih†{ !ʆ{ Ź–C†{Éh ŅŁŠ ŅŁŠ ŅŁŠŁ–V‘šš/°Ł–ƒš/ŅhŠš/ŅhŠ š/ŅhŠh†{ Ź–½†{ Éh ŅŁŠ" ŅŁŠ ŅŁŠ ŅŁŠŁ–Š‘ šš/°Ł–š/ŅhŠ š/ŅhŠš/ŅhŠ š/ŅhŠh†{ Ź–`‡Å¤fÉÕo`ɰ`ɀP°”aɰ”fÉå”fÉå”Ō¤‹F`ɰ`ɀP°”aÉ °”fÉå”fÉå”Ō ¤‹`ɰ`ɀ(°”aɰ”fÉå”fÉå”Ō¤‹ō`ɰ`ɀ(°”aɰ”fÉ”fÉå”Ō¤‹Ģ`ɰ`ɀ(°”aɰ”fÉ”fÉå”Ō¤‹¤`ɰ`ɀP°”aɰ”fÉ”fÉå”Ō ¤Š}`ɰ`ɀ(°”aÉ °”fÉ”fɔԤŠW`ɰ`ɀ(°”aÉ °”fÉ”fɔԤŠ1`ɰ`ɀP°”aÉ °”fÉå”fɔԤР`ÉŅ ¤–ķ­ij!ɀP°!ēÉ ŌDs‚sŌ !ēʊ/š” p‚(sŌ !ēʊjš‚5” pŁ4–Ej­i!ɀ(°!ɀ#° Ō;!ēÉŌ !ēʊ*s‚Asńš” pš‚N” pjŁ4– ī!hš/‹—Ōu ēŹ €’ĖŹ €P€’ĖŹ ē€’ĖŹ ēŹ ēŹ ēÄ ē€*€’ĖŹ 瀒€’ĖŹ ē €P€’ĖŹ ē €å€’ĖŹ ē€’ĖŹ‹Ōt ēŹ €’ĖŹ €P€’ĖŹ ē €’ĖŹ ēŹ ēŹ ēÄ ē€’ĖŹ 瀒€’ĖŹ ē € €’ĖŹ ē €å€’ĖŹ ē€’ĖŹ‹”Ōu ēŹ €’ĖŹ €(€’ĖŹ ē€’ĖŹ ēŹ ēŹ ēÄ ē€*€’ĖŹ 瀒€’ĖŹ ē €P€’ĖŹ ē €å€’ĖŹ ē€’ĖŹ‹$Ōu ēŹ €’ĖŹ €(€’ĖŹ ē€’ĖŹ ēŹ ē4Ź ēÄ ē€*€’ĖŹ 瀒€’ĖŹ ē €P€’ĖŹ ē €å€’ĖŹ ē€’ĖŹ‹§Ōu ēŹ €’ĖŹ €(€’ĖŹ ē€’ĖŹ ēŹ ēŹ ēÄ ē€*€’ĖŹ 瀒€’ĖŹ ē €P€’ĖŹ ē €å€’ĖŹ ē€’ĖŹ‹*Ōu ēŹ €’ĖŹ €P€’ĖŹ ē€’ĖŹ ēŹ ēŹ ēÄ ē€*€’ĖŹ 瀒€’ĖŹ ē €P€’ĖŹ ē €å€’ĖŹ ē€’ĖŹ‹­Ōt ēŹ €’ĖŹ €(€’ĖŹ ē €’ĖŹ ēŹ ēŹ ēÄ ē€’ĖŹ 瀒€’ĖŹ ē € €’ĖŹ ē €å€’ĖŹ ē€’ĖŹ‹1Ōt ēŹ €’ĖŹ €(€’ĖŹ ē €’ĖŹ ēŹ ēŹ ēÄ ē€’ĖŹ 瀒€’ĖŹ ē € €’ĖŹ ē €å€’ĖŹ ē€’ĖŹ‹µŌt ēŹ €’ĖŹ €P€’ĖŹ ē €’ĖŹ ēŹ ēŹ ēÄ ē€’ĖŹ 瀒€’ĖŹ ē € €’ĖŹ ē €å€’ĖŹ ē€’ĖŹŠ:sš‚i” pŁ4Š$ €’ĖŹŠsš‚r” pŁ4Šց–ż¤+sš‚” pša€P” pš” pa§Ņ š” pš‚”” pŁ4¤+‹Ā‚¬ar †‘ka˜” pÓ*š‚Æ” pša˜” pš” pu¤,‹€¤+¤€żh ‡€ż²ŌG†‘k ī” p†‘k” pÓ š” pš‚·” pš” pŠ ‚Ķ …‘k˜s ķh⤈żh ‡€ż²Ō‚Š „€Ōs‚Ņ „€Ō˜s ķhŠŻ‡+Õšž–€żŽ£š/Ņ `‚ŌėPŠd†‘kš/ī” p†‘k” pÓsŁ4š‚Ū” p`‚ńėPŠ/†‰5…‘Ėīׁ¤S‡Sp…‘kē‡Sē@p`…‘kėP†‰5…‘Ėīׁ`ė ‚ų…‘`˜s`§ ³ń-„*‚śėP `§£„*r `¤S„S„*˜€P” „S`˜€ ” „SėP‚ū…‘`˜s–€£^!€ ²ŌX!ŠP ‚żėPŠJ ‚’ėPŠA ‚‚ėPŠ8 ‚‚ėPŠ/ ‚‚ėPŠ& ‚‚ėPŠ ‚‚ ėPŠ ‚‚ ėP ģ!€@¢ČŠւ Š!€Ņ ‚‚0ėPŠ ‚‚2ėP ģ!Ȗ,c„-¬P‡/Äc§²ŸÕ„c§Ņ ‡/cģ§Ä‹“cģ§€^Ņ ‡/cģ§”ċcc§ģ§€H°cc§ģ§€h° Ōh`cabrŌ ‡/"Äpcr c‚‚3čŌ ‡/Äpc‚‚5čŌ ‡/Äpc‚‚7čŌ ‡/Äpc‚‚9čŌ ‡/Äpc‚‚;čŌ ‡/Äpc‚‚=čŌ ‡/Äpc‚‚?čŌ ‡/Äpc‚‚AčŌ ‡/Äpc‚‚CčŌ ‡/Äpc‚‚EčŌ ‡/ Äpc‚‚GčŌ ‡/ Äpc‚‚IčŌ ‡/ Äpc‚‚KčŌ ‡/ Äpc‚‚MčŌ ‡/ Äpc‚‚OčŌ ‡/Äpc‚‚QčŌ ‡/Äpc‚‚SčŌ ‡/Äpc‚‚UčŌ ‡/Äpc‚‚WčŌ ‡/Äpc‚‚YčŌ ‡/Äpc‚‚[čŌ ‡/Äpc‚‚]čŌ ‡/Äpc‚‚_čŌ ‡/Äpc‚‚ačŌ ‡/Äpc‚‚cčŌ ‡/Äpc‚‚ečŌ ‡/Äpc‚‚gčŌ ‡/Äpc‚‚ičŌ ‡/Äpc‚‚kčŌ ‡/Äpc‚‚mčŌ ‡/Äpc‚‚očŌ ‡/Äpc‚‚qčŌ ‡/Äpc‚‚sčŌ ‡/€ ÄpЇ/Ė/ƒš.€X£„“>†“@…“>Ė×x„“?†Ó…“?Ė×ɀ’Ė„“Q†Ó…“?Ė×ɀ’Ė„“P…“Q °Õ’†ˆõ…“PĖ×…“Pā½ĖĖ×hš/Šk ÉÓ ›‚‚uėPŠ ›‚‚{ėPŠQ ÉŁŠH ɀ ŒŁŠ<  ÉŁšŠ(ŁŠ#ŁŠŁŠ ŁŠ @ŁŠւ~Šւ…‹†ˆÕ…“Q€ Ėī×hš/Šk ÉÓ ›‚‚‹ėPŠ ›‚‚‘ėPŠQ ÉŁŠH ɀ ŒŁŠ<  ÉŁšŠ(ŁŠ#ŁŠŁŠ ŁŠ @ŁŠւ”Šւ›–¶š.‹#‘‹!‘‹‘‹‘ ‹š/‹œ†{ÉŁ‹“†{ÉŁ‹‡†{ÉŁŠ|†{ÉŁŠq…ƒŁŠi…„ŁŠa†…ÉŁŠV…‚ŁŠN…}ŁŠF…~ŁŠ>†ÉŁŠ3†ÉŁŠ(†…Éi!›‘ІÉŁŠ†ÉŁŠւ”‹jš/‹Å…žŁ‹æ…ŸŁ‹¶… Ł‹­…”Ł‹¤…¢Ł‹›…£Ł‹’…¤Ł‹‰…„Ł‹€…¦ŁŠx…§ŁŠp…ØŁŠh…©ŁŠ`…ŖŁŠX†«ÉŁŠM†«ÉŁŠB†¬ÉŁŠ7†¬ÉīŁŠ+…±ŁŠ#…²ŁŠ†³ÉīŁŠ†³ÉīŁŠւµ‹™†Ž‘Ł‹š/‹Æ†ŽÉŁ‹¦†ŽÉŁ‹š†ÉŁ‹Ž†”ÉŁ‹‚†•ÉīŁŠv†•ÉŁŠk†–ÉŁŠ`†”ÉŁŠU†”ÉŁŠJ…‘ŁŠB†ÉŁŠ7†ÉŁŠ,†—ÉŁŠ!†—ÉŁŠ†ÉŁŠ …’ŁŠÖ‚Ķ‹Ņš/Š1††&ÉŁŠ)††% ÉtŁŠ††%ÉŁŠ††%ÉŁŠւߋ–š/Š'…½Ł…¼ŁŠ…æŁ…¾ŁŠ†ĄÉŁŠւå‹dš/Š$…†zŁŠ…†yŁŠ…†xŁŠ††{ÉåŁŠւź‹5††{ɊŁŠŁŠ ŁŠւš‹š/І†|ÉŁŠ††|ÉŁŠւö‹ōš/³ń†Óš/Ė×ÉŁŠVš/€ ³ń†Óš/£Ė×ÉŁŠ9š/€0³ń†Óš/£Ė×ÉŁŠš/€@³ń†Óš/€ £Ė×ÉŁ‹š/Šy…ČŁ…ĒŁŠn…ŹŁ…ÉŁŠ`…ĢŁ…ĖŁŠR…ĶŁŠJ†ĪÉŁŠ?†ĪÉŁŠ4†‘ÉŁŠ)†ōÉŁŠ†ōÉŁŠ…ŅŁ…ŃŁŠւś‹żš/ŠA†ĘÉŁŠ7`†ĮÅ ŁŠ*`†ĀÅ ŁŠ`†ĆÅ ŁŠ`†ÅÅ ŁŠÖƒ‹±š/Š@†Į1ĖŲÉŁŠ3†Ā1ĖŲÉŁŠ#†Ć1ĖŲÉŁŠ†Å1ĖŲÉŁŠփ‹f†ĻÉŅŁŠ$†ĻÉŅŁŠ†Ļɀ’ŅŁŠķŁ‹0š/€dŅ…ˆµŁŠš/€eŅ †ˆ¶ÉŁ‹†õš/Ė×xŁ‹ü†ˆÕš/€ Ėī×xŁ‹č†ˆõĖך/Ė×xًІˆõĖך/Ė×xŁ‹ø†ˆõĖך/Ė×xŁ‹ †ˆõĖך/Ė×xŁ‹ˆ†ÉŁŠ}ŁŠwš/Š7†õĖ×ÉķŁŠ(†õĖ×ÉķŁŠ†õ Ė×ɱŁŠփŠ6Š2š/Š%…Ńh`ĖŲÉŁŠ…Ńh`ĖŲÉåŁŠփ Šփ$–Šsš‚ƒ®” pŁ4–źsš‚ƒĘ” pŁ4– š.€X£„“>†“@…“>5Ė×x„“?†Ó…“?Ė×ɀ’Ė„“Q†Ó…“?Ė×ɀ’Ė„“P…“Q °Õń†ˆõ…“PĖ×…“Pā½ĖĖ×hš/‹É…“QҐЛ‚ƒŽčŌ ĖŹŠ ĖŹ‹¢…“QҐРšĖŹ‹‹…“QŅŠ š€ €?ĖŹŠq…“QҐŠbšā½ĖŅRšŅ  ĖŹšŅ  ĖŹšŅ  ĖŹš Ņ  ĖŹš@Ņ  ĖŹŠŠÖƒį‹ą†ˆÕ…“Q€ Ėī×hš/‹É…“QҐЛ‚ƒēčŌ ĖŹŠ ĖŹ‹¢…“QҐРšĖŹ‹‹…“QŅŠ š€ €?ĖŹŠq…“QҐŠbšā½ĖŅRšŅ  ĖŹšŅ  ĖŹšŅ  ĖŹš Ņ  ĖŹš@Ņ  ĖŹŠŠփź–&sš‚ƒš” pŁ4–#Ż+š.‹„‘‹£‘‹ž‘ ‹™‘ ‹”š/‹®†{šŹ‹„†{šŹ‹™†{šŹ‹†{šŹ‹š„ƒŠyš„„Šq0Ņ †…šʊŠ^0Ņš„‚АŠNš„}ŠFš„~Š>†šʊ3„+›˜‘†…‡+ʊ!†š€’ĖŹŠ†š€’ĖŹŠփż‹Śš/‹ąš„ž‹Śš„Ÿ‹Ńš„ ‹Čš„”‹æš„¢‹¶š„£‹­š„¤‹¤š„„‹›š„¦‹’š„§‹‰š„Ø‹€š„©Šxš„ŖŠp†«š€’ĖŹŠa†«š€’ĖŹŠR†¬š€’ĖŹŠC†¬šķ€’ĖŹŠ3š„±Š+š„²Š#†³šķ€’ĖŹŠ†³šķ€’ĖŹŠք‹ī†Ž‘‹ęš/‹Ō†Žš€’ĖŹ‹Ē†Žš€’ĖŹ‹·†š€’ĖŹ‹§†”šŹ‹›†•šķ€’ĖŹ‹Š†•šʊ†–šʊt†”šʊi†”šʊ^š„‘ŠV†š€’ĖŹŠG†š€’ĖŹŠ8†—š€’ĖŹŠ)†—š€’ĖŹŠ†š€’ĖŹŠ š„’Šք)‹š/Šn††&šʆ†<šʊ]††% štĖŹ††; štĖŹŠ9††%š€Ėʆ†;š€ĖŹŠ††%šĖʆ†;šĖŹŠք;‹š/Š'š„½š„¼Šš„æš„¾Š†ĄšʊքA‹[š/Š$š„†zŠš„†yŠš„†xІ†{šåŹŠքF‹,šŠ††{ʊ††{ʊ ††{ʊքL‹š/І†|š€’ĖŹŠ††|š€’ĖŹŠքQ‹Żš/³ń†Óš/Ėך€’ĖŹŠbš/€ ³ń†Óš/£Ėך€’ĖŹŠAš/€0³ń†Óš/£Ėך€’ĖŹŠ š/€@³ń†Óš/€ £Ėך€’ĖŹ‹Zš/‹Ÿš„Čš„Ē‹“š„Źš„É‹„š„Ģš„ĖŠvš„ĶŠn†Īš€’ĖŹŠ_†Īš€’ĖŹŠP†‘š€’ĖŹŠAšÓ†ōšŒķ€’ĖŹŠ †ō€’ĖŹŠ†ōšʊš„Ņš„ŃŠքU‹Æš/ŠYšÓ†ĘšŒķ€’ĖŹŠ †Ę€’ĖŹŠ7šh†Į`ÅŠ*šh†Ā`ÅŠšh†Ć`ÅŠšh†Å`ÅŠքi‹Kš/Š@†Į1ĖŲšʊ3†Ā1ĖŲšʊ#†Ć1ĖŲšʊ†Å1ĖŲšʊքp‹š/Š(†Ļ€’ĖŹŠ†Ļ€’ĖŹŠ†Ļ€’€’ĖŹŠքv‹Ķš/€dŅš„ˆµŠš/€eŅ †ˆ¶šŹ‹«†õš/Ėךċ™†ˆÕš/€ Ėīךċ…†ˆõĖך/Ėךċm†ˆõĖך/ĖךċU†ˆõĖך/Ėךċ=†ˆõĖך/Ėךċ%‚„{šasa‚„}čń†š€’ĖŹŠsŁ4š‚„„” p‹ė‘‹ęš/‹š²š± Ō†õĖ×šī€’ĖŹŠsš‚„“” pŁ4Šeš€ ²š± Ō†õĖ×šī€’ĖŹŠsš‚„„” pŠ/šŌ†õ Ė×€’€’ĖŹŠ†õ Ė×€’ĖŹŠք»Š>Š:š/Š-…Ńh`ĖŲšŹ „ŃŠ…Ńh`ĖŲšåŹ „ŃŠքĄŠքÄ„–+$N„¤Th ‡T²Ō_„+‚śėPa†‰5 ĖīׁėPa§Ņa‚…NėPa§ ³ń% a§£„+r a¤U„U„+˜€P” „Ua˜€ ” „UėP‚…Q a˜s ķhŠ›–€„)`†‘k†’—€§” †‘C†’oį” „‚…S”w„‘‘…‘Ōł‘†“@Ė×Ɠ@Ė×Ɠ@Ė× Ä „“S„“T„“R…“R…“T²Ō…“Sķ„“S†“@…“RĖ×…“Są“Rķ„“RŠŲ‚…[s s š-‹J‘‹H‘‹Cš.ŅŁ3‹6š.‹;†u†…„Ė×ņĮ†uÅ„‹ †u†…„Ė×ņĮ†uÅ„‹†u†…„Ė×ņĮ†uÅ„‹ä†u†…„Ė×ņĮ†uÅ„‹Ę†u†…„Ė×ņĮ†uÅ„‹Ø†u†…„Ė×ņĮ†uÅ„‹Š†ž††}Ė×Å„‹u†ž††}Ė×Å„‹`†ž††}Ė×Å„‹K†ž††}Ė×Å„‹6†¼††FĖ× ēņĮ††FĖ× Å‹†¼††FĖ× ēņĮ††FĖ× Å‹š†¼††FĖ× ēņĮ††FĖ× Å‹Ķ†¼††FĖ× ēņĮ††FĖ× Å‹Ŗ†Į††rÅ‹ž†Ž†† ņĮ††Å‹‰†Ž††6ņĮ††0ÅŠuš.€(£„†Ē†€”1Ė×OÅOŠ\š.€8£„ŠRš0Ó#„‘0Œš0¢ī„‘†Į††õ…‘€?Ė×ÅŠ„‘Š#„ЄЄЄБРš/„‘Šօ^‹ļš.‹į†u†Įņ…„Ė׆uŋɆu†Įņ…„Ė׆uÅ‹®†u†Įņ…„Ė׆uÅ‹“†u†Įņ…„Ė׆uÅ‹x†u†Įņ…„Ė׆uÅ‹]†u†Įņ…„Ė׆uÅ‹B††FĖ× ē†¼Å††FĖ× †ĮÅ‹††FĖ× ē†¼Å††FĖ× †ĮÅ‹ü††FĖ× ē†¼Å††FĖ× †Įŋن†FĖ× ē†¼Å††FĖ× †ĮÅ‹¶††}Ė׆žÅ‹¤††}Ė׆žÅ‹’††}Ė׆žÅ‹€††}Ė׆žÅŠo††r†ĮÅŠd†† †ŽÅ†††ĮÅŠP††6†ŽÅ††0†ĮÅŠ<†€”1Ė×O†ĒÅOŠ+…‘Ō„‘††õ…‘€?Ė׆ĮÅŠ†‘k” pŠօµŠֆ š-Ņsš” p” „‘‘š-°ÕŠū‚†”†‘k” †‘C” –$Multi User Configuration File name: Could not open Error reading )Illegal code file format - wrong byte sexFile has DataSize of  inst5ead of -11Configuration Version  read successfullyyData in  was not Multi User Configuration file..Ready to write changes to : /Error writing new configuration information to Configuration changes saved..-Error closing configuration information file Abandon changes ? Configuration changes abandonedMAINN(Illegal setting for Extra Serial Channell/Must remove dip switch selection from Baud Rate%Use on an 80 track drive (read only)?Use on a 40 track drive??Sorry, no other optionsUse on an 80 track drive?4Cannot access 80 track diskettes from 40 track driveeIllegal selectionUse Low Level Change Menu ’ēūfü_üÜżYžSžĻ’K’Ę’ÜūćżÖ&Terminal Emulator Configuration File: Emulator load aborted.DATACould not open +Error reading Terminal Emulator InformationTEM11TEETEM EMPTY+Error reading Terminal Emulator Information EMPTYTEMTEENULBELBSSHTTLFFESCSPP^ ’­’ģ’ģ’ģ’ģ’ģ’ģ’¶’æ’Č’Ń’ģ’ģ’ģ’ģ’ģ’ģ’ģ’ģ’ģ’ģ’ģ’ģ’ģ’ģ’ģ’Ś’ģ’ģ’ģ’ģ’ćDEL NULSOHSTXETXEOTENQACKBELBSSHTTLFFVTTFFFCRRSOOSIIDLEDC1DC2DC3DC4NAKSYNETBCANEMMSUBESCFSSGSSRSSUSSSPP RemoveableeFixed’Õ’Ż’å’ķ’õ’’’Æ’ø’Ä RemoveableeFixed’Õ’Ż’å’ķ’õ’’’Æ’ø’Ä’a’m’Ÿ’Ŗ’y’²’ŗ’Ā’Ķ’’—’„’Ų’ē’ņ’8’A’J’S’\’e’n’w’€’ˆ’’˜’ ’Ø’³’¾’É’Õ’Ż’ń’å’N’Z’f’r’~’Š’•’ ’«’¶’¾’É’Ō’ß’ź’õ’Ģ’×’ē’ņ’Ö’ä’ņ’Ł’į’é’ń’÷’ė’ń’ē’ņ’„’’’ ’®’¶’Į’Ģ’×’ä’ļ’¼’É’Ö’ć’š’½’Ķ’Ż’ķ’Ę’Ų’ź’Ų’ź‰łīłīüœłīłīłīłīś–ś–ś–ś–üėż žžŠłŚłßłäłéūsūsü.üĖż ūgūgüjüjüjüjżżżżżżżżżżżżżżżżžOžOžOžOžOžOžOžOžOžOžOžOžOžOžOžOžšžņ’’’0’H’`’x’ƒ’‰’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ź’Ī/Drive must first be configured in channel table/Block size must be 1024,2048,4096,8192 or 16384Fixed’4’^’u’Fixed’4’^’u’Only valid for Modem Port’O’[’’¢’g’²’ŗ’Ā’’‡’s’Ķ’ß’ī’’&’/’8’A’J’S’\’e’n’w’€’ˆ’’Ÿ’®’½’Ķ’Õ’ķ’Ż’)’9’I’Y’e’v’’Œ’—’¢’Ŗ’¹’Č’×’ę’õ’’£’Ē’ć’Ö’ä’ņ’Ł’į’é’ń’ā’ė’ō’ß’ī’^’m’|’Š’’’”’°’æ’ä’ļ’¤’É’Ö’ć’š’½’Ķ’Ż’ķ’Õ’ā’ļTEE EMPTYCannot specify EMPTY emulator#Number of I/O Buffers must be 1-256+Buffer size in 512-byte blocks must be 1-32’`’›’Ń’Š’ę‰ųlųlū„ųlųlųlųlł&ł&ł&ł&ūśü#żQž3ųXų]ųbųgśśśśūŌü#śśūsūsūsūsü¦ü¦ü¦ü¦ü¦ü¦ü¦ü¦ü¦ü¦ü¦ü¦ü¦ü¦ü¦ü¦żµżµżµżµżµżµżµżµżµżµżµżµżµżµżµżµžžUžgž{ž“ž«žĆžŪ’’’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’Ā’ĘEMPTYTEEOSUTIL,SEGSCCHEMAINNVżĀżą’b’w’Vżžžž:žXžvž‹ž žµ’®’b’wžŹžķ’’3’‹’‹’‹’‹’‹’‹’‹’‹’‹’‹’‹’‹’‹’‹’‹’‹’¤’¤’¤’¤’¤’¤’¤’¤’¤’¤’¤’¤’¤’¤’¤’¤’Ż’ā’ē’ģ’ń’õUžž7’œ’°’‘žRžmžˆž£’J’\’n’€’Õ’œ’°ž¾žį’’'’Ä’Ä’Ä’Ä’Ä’Ä’Ä’Ä’Ä’Ä’Ä’Ä’Ä’Ä’Ä’Ä’ņū³ūøūŹū½žOSUTIL,SEGSCCHEń ź Ż ÷  ıryłÉ%źįÄ­¤ŒW<¬ *EXTRAHEAFILEOPS STRINGOP PASCALIO EXTRAIO CONFIGMUSCREENOPCONFIGSAMNUUNIT SIOUNIT  INITMENU ģ%š€.” p–Ճš” pš‚€” pš‚€” pš” pš‚€” p‚€"‚€%s‚€6‚€@s‚€C‚€Ks‚€M‚€Ts‚€V‚€]s‚€_‚€ds‚€f‚€qs‚€s€J‚€~s‚€€K‚€Œs‚€€L‚€šs‚€€M‚€Øs‚€«‚€³s‚€µ‚€Įs‚€Ć€O‚€Īs‚€Ń‚€Ōs‚€Ü€(‚€ęs‚€é€)‚€īs‚€š€*‚€õs‚€÷€+‚€üs‚€ž€,‚s‚€-‚ s‚ €.‚s‚€/‚s‚€0‚s‚!€1‚&s‚(€2‚-s‚60€3‚5s‚8€4‚=s‚@€5‚Es‚H€6‚Ms‚P€7‚Us‚X‚[€( s‚f‚rs‚t ‚€s‚ƒ‚Œs‚Ž ‚—s‚™ ‚¤s‚§€’s‚­s‚“€s‚¾‚És‚Ģ€s‚Ń€s‚Żs‚ēs‚ńs‚ü’’įs‚‚s‚‚ ‚‚ €Is‚‚s ‚‚s ‚‚ s ‚‚&‚‚)‚‚+€)s‚‚6‚‚9‚‚;€*s‚‚F‚‚I‚‚K€+s‚‚V‚‚Y‚‚[€,s‚‚f‚‚i‚‚k€-s‚‚v‚‚y‚‚{€.s‚‚†‚‚‰‚‚‹€/s‚‚–‚‚™‚‚›€0s‚‚¦‚‚©‚‚«€1s‚‚¶‚‚¹‚‚¼€2s‚‚ȝ‚‚Ė‚‚Ī€3s‚‚Ś‚‚Ż‚‚ą€4s‚‚ģ‚‚ļ‚‚ņ€5s‚‚ž‚ƒ‚ƒ€6s‚ƒ‚ƒ‚ƒ€7s‚ƒ"‚ƒ$s‚ƒ1‚ƒ<s‚ƒ>‚ƒHs‚ƒJ‚ƒYs‚ƒ[ ‚ƒjs‚ƒl ‚ƒ{s‚ƒ} ‚ƒŒs‚ƒŽ‚ƒ s‚ƒ ‚ƒ„s‚ƒØ‚ƒ¬s‚ƒ®‚ƒ³s‚ƒ¶‚ƒ»s‚ƒ¾’s‚ƒĒ’s‚ƒĻ ‚ƒŲs‚ƒŚs‚ƒćs‚ƒės‚ƒó s‚ƒūs‚„s‚„ ’s‚„ ’s‚„!s‚„'’’įs‚„0€?s‚„8€?s‚„A‚„Is‚„L‚„N‚„Ps‚„_‚„a‚„cs‚„s‚„u‚„w s‚„‡‚„‰‚„‹ s‚„›‚„‚„Ÿ s‚„Ɲ‚„²s‚„¼Ks ‚„Ā€%s ‚„ȝĄs ‚„Ī` s ‚„ŌŠs ‚„Śs ‚„ą°s ‚„ꝁXs ‚„ģ,s ‚„ņ€Č s ‚„ų€– s ‚„ž€n s ‚…€K s ‚… €2 s ‚…s ‚…‚…s‚…!s ‚…'s ‚…-s ‚…2s ‚…8‚…;s‚…Es ‚…Ks ‚…Rs ‚…X‚…[s‚…es ‚…ks ‚…qs ‚…ws ‚…}‚…€s‚…ˆ€s‚…‘s‚…šs‚…¤s‚…°s‚…¹‚…¾s‚…Ą‚…ŝs‚…Ē‚…Ģs‚…Ī‚…ӝs‚…՝ ‚…Śs‚…ܝ ‚…įs‚…ć ‚…čs‚…ź ‚…ļs‚…ń ‚…ös‚…ų‚…żs‚…’‚†s‚†‚† s‚† ‚†s‚†‚†s‚†‚† s‚†"‚†'s‚†)‚†+€8s‚†7s‚†>s‚†Es‚†Ns‚†T‚†V‚†X€9s‚†d‚†f‚†h€:s‚†t‚†v‚†x€;s‚†„‚††‚†ˆ€s‚†“‚†¶‚†ø€?s‚†Ä‚†Ę‚†Č€@s‚†Ō‚†Ö‚†Ų€As‚†ä‚†ę‚†č€Bs‚†ō‚†ö‚†ų€Cs‚‡‚‡‚‡€Ds‚‡‚‡‚‡€Es‚‡$‚‡&‚‡(€Fs‚‡4‚‡6‚‡8€Gs‚‡D‚‡F s‚‡S’s‚‡]’s‚‡f’s‚‡k’s‚‡p’s‚‡w’s‚‡€’s‚‡‹’’įs‚‡’ ’’įs‚‡˜ ’s‚‡¢ ’s‚‡« ’s‚‡“ ’s‚‡»s‚‡Ć€žs‚‡Ģ€’s‚‡Õs‚‡Ūs‚‡ć’s‚‡ģ€žs‚‡ö€žs‚ˆ‚ˆ‚ˆ s‚ˆ‚ˆ‚ˆs‚ˆ"‚ˆ$‚ˆ&s‚ˆ3‚ˆ5€2s‚ˆC€"‚ˆNs‚ˆQ€H‚ˆYs‚ˆ\‚ˆ^€2s‚ˆm€#‚ˆxs‚ˆ{€H‚ˆƒs‚ˆ†‚ˆ‰€"s‚ˆ˜s ‚ˆ­s ‚ˆĀs ‚ˆßs ‚ˆós ‚‰s ‚‰)s ‚‰E s ‚‰Ys ‚‰j s ‚‰s s ‚‰Œ‚‰‚‰’€#s‚‰”‚‰£s‚‰±€$‚‰·s‚‰ŗ€%‚‰Ąs‚‰Ć€&‚‰És‚‰Ģ€'‚‰Ņs‚‰Õ‚‰Ų€$s‚‰ås‚‰õs‚Šs‚Š‚Šs‚Š‚Š‚Š €%s‚Š-‚Š0‚Š3€&s‚Š@‚ŠC‚ŠF€'s‚ŠS‚ŠU€(s‚Ši‚Šps‚Šs’s‚Š}’’įs‚ŠŒ’’įs‚Š˜s‚ŠØ‚аs‚г‚ж€ s‚ŠĀs ‚ŠŃs ‚Šäs ‚Šé‚Šės‚Šó€<€<įs‚‹€ds‚‹ ‚‹ s¤Th ‡T²ŌD ³ń a‚‹ėPŠa‚‹ėP ar a¤U„Ua˜€P” „U‚‹$€Y” „UėPa˜ s ķhж¤Th ‡T²ŌI £ ³ń a‚‹)ėPŠa‚‹.ėP £ar a¤U„Ua˜€P” „U‚‹3€\” „UėPa˜ €’s ķhб‚‹:‚‹=€!s€ €/¤Th ‡T²Ō8a‚‹KėP £ar a¤U„Ua˜€P” „U‚‹P€Y” „UėPa˜ s ķhŠĀ€0€?¤Th ‡T²Ō:a‚‹UėP € £ar a¤U„Ua˜€P” „U‚‹Z€\” „UėPa˜ €’s ķhŠĄ‚‹a‚‹cs‚‹o‚‹zs‚‹}‚‹ˆs‚‹‹‚‹–s‚‹˜ ‚‹Ÿs‚‹” ‚‹Øs‚‹Ŗ‚‹±s‚‹³‚‹ŗs‚‹¼€ds‚‹Ē€es‚‹Ņ€U‚‹Žs‚‹ą‚‹ć s‚‹õs‚‹ż€’s‚Œ€’s‚Œ ’s‚Œ€žs‚Œs‚Œ( €’s‚Œ. €’s‚Œ6 €’s‚Œ? €’s‚ŒI€’s‚ŒQs‚ŒZs‚Œcs‚Œls‚Œus‚Œ|‚Œ‚Œ‚s‚Œ•‚Œ— s‚ŒŖ€ s‚Œ³€s‚Œøs‚ŒĮs‚ŒÉ‚ŒĢ€Js‚ŒÜ‚Œęs‚Œé‚Œós‚Œö‚s‚‚ s‚‚s‚‚'s‚*‚4s‚7‚As‚D ‚Ns‚Q ‚[s‚^ ‚hs‚k ‚us‚x ‚‚s‚…‚s‚’‚œs‚Ÿ‚©s‚¬‚Æ‚²€Ks‚Ā‚Å‚Č€Ls‚Ų‚Ū‚6Ž€Ms‚ī‚š€W s‚łs‚Ž€ s‚Žs‚Ž#€h‚Ž2s‚Ž4‚Ž6€h s‚ŽE€X‚ŽLs‚ŽN€Y‚ŽUs‚ŽW€Z‚Ž^s‚Ž`€[‚Žgs‚Ži€\‚Žps‚Žr€]‚Žys‚Ž{€^‚Ž‚s‚Ž„€_‚Ž‹s‚Ž€`‚Ž”s‚Ž–€a‚Žs‚ŽŸ€b‚ަs‚ŽØ€c‚ŽÆs‚ޱ€d‚Žøs‚Žŗ€e‚ŽĮs‚ŽĆ€f‚ŽŹs‚ŽĢ€g‚ŽÓs‚ŽÕ‚Ž×€X s‚Žå@s‚Žļs‚Žūą€ s‚ s‚‚‚€Ys‚"‚$‚&€Zs‚4‚6‚8€[s‚F‚H‚J€\s‚X‚Z‚\€]s‚j‚l‚n€^s‚|‚~‚€€_s‚Ž‚‚’€`s‚ ‚¢‚¤€as‚²‚“‚¶€bs‚Ä‚Ę‚Č€cs‚Ö‚Ų‚Ś€ds‚č‚ź‚ģ€es‚ś‚ü‚ž€fs‚ ‚‚€gs‚‚!€Ns¤Th ‡T²Ō% ³ń a‚0ėPŠa‚4ėP ar a˜ s ķhŠÕ‚7‚:€Os‚Is‚Ns‚Ss‚Ys‚`s‚is‚ps‚w s‚}s‚ƒs‚‰s‚ s‚šs‚„s‚°s‚»‚Ās‚Ę‚Ķs‚Ń‚Ųs‚Ü‚ćs‚ē‚ė€Ps¤Th ‡T²Ō% ³ń a‚‘ėPŠa‚‘ėP ar a˜ s ķhŠÕ‚‘ ‚‘‚‘€Qs‚‘+‚‘/‚‘3€Rs‚‘I‚‘M‚‘Q€Ss‚‘g‚‘i€Ts¤Th ‡T²Ō‚‘v s ķhŠģ‚‘}s ‚‘„‚‘†€Us¤Th ‡T²Ō‚‘’ ‚‘™s ķhŠę‚‘œ‚‘Ÿ€Vs¤Th ‡T²Ō‚‘­ s ķhŠģ‚‘“s ‚‘»‚‘½€hs¤Th ‡T²Ō*a‚‘ĶėP„+‚‘ÓėP ar „+r a˜€i ¢„+˜s ķhŠŠ‚‘՝‚‘Ų€i s‚‘ߝs‚‘č€?s‚‘ń’s¤Th ‡T²Ō-a‚‘÷ėP„+‚‘łėP ar „+r ‚‘’a˜„+˜€i ¢s ķhŠĶ‚’‚’€‰s‚’ s‚’s–€ƒ-Multi User Configuration Utility - Version 2.0 Initializing MAINN Multi User Configuration UtilityyUser ConfigurationsPARTTSerial ChannelsSER Left FloppyyFL4 Right FloppyyFL5 RAM DisksRDKParallel Printer PortPRTWinchester #1 AccesssWAC11Winchester #2 AccesssWAC22Winchester #3 AccesssWAC33Winchester #4 AccesssWAC44Time AdjustmentTAJLow Level ConfigurationLLCAuxiliary Device InfoDINFOPARTTUser SelectionnUser #0 (reserved))PT0 User #1 PT1User #2 PT2User #3 PT3User #4 PT4User #5 PT5User #6 PT6User #7 PT7User #8 PT8User #9 PT9User #100PT100User #111PT111User #122PT122User #133PT133User #144PT144User #155PT155PT0 User #0 ConfigurationChannel Map ( 0 to 15))MAPChannel Map (16 to 31))MAP11User CapabilitiesCAPCP/M InformationnCPMOperating System InfoOPSYY Boot Device Boot messageeBoot control delayyShared terminal modeeEMULLPriorityyNumber of Comm bufferssBase Memory AddressTop Memory AddresssSystem Stack Addresss Time SliceeCapability maskEMULLShared Terminal ModeeOff Foregroundd BackgrounddPT0 PT1User #1 ConfigurationPT0 PT2User #2 ConfigurationPT0 PT3User #3 ConfigurationPT0 PT4User #4 ConfigurationPT0 PT5User #5 ConfigurationPT0 PT6User #6 ConfigurationPT0 PT7User #7 ConfigurationPT0 PT8User #8 ConfigurationPT0 PT9User #9 ConfigurationPT0 PT100User #10 ConfigurationnPT0 PT111User #11 ConfigurationnPT0 PT122User #12 ConfigurationnPT0 PT133User #13 ConfigurationnPT0 PT144User #14 ConfigurationnPT0 PT155User #15 ConfigurationnSERSerial Channel SelectionnSage II Terminal PortTRMSage II Modem PorttREMSage IV Extra Serial Port #11XS1Sage IV Extra Serial Port #22XS2Sage IV Extra Serial Port #33XS3Sage IV Extra Serial Port #44XS4TRMTerminal Channel Configurationn Baud RateBAUDDParityyPAR Stop BitsSTOPP Data bitsDATAAXmit Buff LengthhRec Buff LengthType of TerminallTEEChar to chng userBREAK to rebootBREAK to debuggRemote ChannellXon/Xoff on outputtXon/Xoff on inputCount to send XOFFFCount to send XON DSR PollingDSR Poll intervalInput event numOutput event nummAccess ControllACESSTRMREMRemote Serial Channel ControlTRMXS1Extra Serial Channel #1 ControlXS1XS2Extra Serial Channel #2 ControlXS1XS3Extra Serial Channel #3 ControlXS1XS4Extra Serial Channel #4 ControlBAUDDBaud Rate Selection 19200 baudd 9600 baudd 4800 baudd 2400 baudd 2000 baudd 1800 baudd 1200 baudd 600 baudd 300 baudd 200 baudd 150 baudd 110 baudd 75 baudd 50 baudd DIP Swi7tchhPARParity Selectionn Even parity Odd parityy No parity DIP SwitchhSTOPPStop Bit Selectionn 1 Stop Bitt 1.5 Stop Bits 2 Stop BitsDATAAData Bit Selectionn 5 Data Bits 6 Data Bits 7 Data Bits 8 Data BitsACESSAccess ControllTimeout thresholdRead allowed maskWrite allowed maskkExclusive control maskkHang & Wait maskkUser #0 P00User #1 P11User #2 P22User #3 P33User #4 P44User #5 P55User #6 P66User #7 P77User #8 P88User #9 P99User #100P10User #111P11User #122P12User #133P13User #144P14User #155P15P00User #0 Access Controll Read allowedd Write allowedExclusive control Hang & WaitP00P11User #1 Access ControllP00P22User #2 Access ControllP00P33User #3 Access ControllP00P44User #4 Access ControllP00P55User #5 Access ControllP00P66User #6 Access ControllP00P77User #7 Access ControllP00P88User #8 Access ControllP00P99User #9 Access ControllP00P10User #10 Access ControlP00P11User #11 Access ControlP00P12User #12 Access ControlP00P13User #13 Access ControlP00P14User #14 Access ControlP00P15User #15 Access ControlWD1Winchester #1 ParameterssNumber of CylindersBytes per Sectorr Step Time Slew Time Step CounterrHead Settle TimeeCylinder for Precompp Special types Test flagssTrack for shippinggLow Read CounterrHigh Read Counter Header CounttNumber of HeadsNumber of RetriesSectors per Track Select BittWrite Sync BittExtra Head SettleRd after Wt RetriesWrite Cycle RetriesWD1WD2Winchester #2 ParameterssWD1WD3Winchester #3 ParameterssWD1WD4Winchester #4 ParameterssFL4Left Floppy Drive SelectionFloppy ConfigurationnFLF44Access ControllACESSFL5Right Floppy Drive SelectionnFloppy ConfigurationnFLF55Access ControllACESSFLF44Left Floppy Format Selectionn(SAGE double side, 80 track (1280 blocks))(SAGE double side, 40 track ( 640 blocks))8IBM single side, 40 track - Universal Media (320 blocks))&IBM double side, 40 track (640 blocks))5Network Consulting single side, 40 track (400 blocks)5Network Consulting double side, 40 track (800 blocks)6Network Consulting double side, 80 track (1600 blocks))'IBM double side, 80 track (1280 blocks) Non Standard Drive ConfigurationnNo drive equipped0SAGE 10 sector per track, 80 track (1600 blocks))FLF44FLF55Right Floppy Format SelectionRDKRam Disk Channel Selectionn Ram Disk #1RDK11 Ram Disk #2RDK22 Ram Disk #3RDK33 Ram Disk #4RDK44RDK11RAM Disk #1 ConfigurationBase of Ram Disk (0 = disabled)Top of Ram Disk (0 = to BIOS))Initialize Ram DiskAccess ControllACESSRDK11RDK22Ram Disk #2 ConfigurationRDK11RDK33Ram Disk #3 ConfigurationRDK11RDK44Ram Disk #4 ConfigurationPRT&Parallel Printer Configuration Controll Printer modeePMODEOutput Buffer SizeePolling attempts before delayDelay before re-pollingLinefeed after carriage returnnAccess ControllACESSPMODEPrinter Port AssignmentParallel port with interrupts$Parallel port with scheduled pollinggDisableddTAJTime AdjustmentSeconds of time adjustmenttIn number of daysMAPUser Channel Map (0 to 15)) Channel Channel device = Channel Channel subdevice ==MAP11User Channel Map (16 to 31)Channel device =Channel subdevice ==LLCLow Level ConfigurationLeft Floppy DetailssFL4DDRight Floppy DetailssFL5DDShared Floppy DetailsFLS Winchester #1WD1 Winchester #2WD2 Winchester #3WD3 Winchester #4WD4Number of SemaphoressIntercept ExceptionssLoad Terminal EmulatorrTEMFL4DD#Low Level Left Floppy ConfigurationNumber of sidesNumber of cylindersSectors per trackBytes per SectorrRetriesMotor on delay factor Data lengthGap 3 parameterGap 3 for formattPattern for formattSkew for formatIBM track formattNCI 10 sects/trkkRead 48 on 96 TPIRead after writee Ignore errorsFL4DDFL5DD$Low Level Right Floppy ConfigurationnFLS%Shared Low Level Floppy ConfigurationStep Time (msec)) Head loadHead unload timeeDouble DensityyWAC11Winchester #1 Partition AccesssDrive partition #00ACESSDrive partition #11ACESSDrive partition #22ACESSDrive partition #33ACESSDrive p7artition #44ACESSDrive partition #55ACESSDrive partition #66ACESSDrive partition #77ACESSDrive partition #88ACESSDrive partition #99ACESSDrive partition #10ACESSDrive partition #11ACESSDrive partition #12ACESSDrive partition #13ACESSDrive partition #14ACESSDrive partition #15ACESSWAC11WAC22Winchester #2 Partition AccesssWAC11WAC33Winchester #3 Partition AccesssWAC11WAC44Winchester #4 Partition AccesssCPMCP/M InformationnNumber of disk I/O Bufferss!Size of buffer in 512-byte blocksBIOS Xon/Xof handlingCP/M Disk Drive ConfigurationDRVDRVCP/M Disk Drive Configuration Disk Drive A DAA Disk Drive B DBB Disk Drive C DCC Disk Drive D DDD Disk Drive E DEE Disk Drive F DFF Disk Drive G DGG Disk Drive H DHH Disk Drive I DII Disk Drive J DJJ Disk Drive K DKK Disk Drive L DLL Disk Drive M DMM Disk Drive N DNN Disk Drive O DOO Disk Drive P DPPDAADisk Drive A: ConfigurationLogical Block Size Directory Track Offset Number of Directory Entries Disk Media DAADBBDisk Drive B: ConfigurationDAADCCDisk Drive C: ConfigurationDAADDDDisk Drive D: ConfigurationDAADEEDisk Drive E: ConfigurationDAADFFDisk Drive F: ConfigurationDAADGGDisk Drive G: ConfigurationDAADHHDisk Drive H: ConfigurationDAADIIDisk Drive I: ConfigurationDAADJJDisk Drive J: ConfigurationDAADKKDisk Drive K: ConfigurationDAADLLDisk Drive L: ConfigurationDAADMMDisk Drive M: ConfigurationDAADNNDisk Drive N: ConfigurationDAADOODisk Drive O: ConfigurationDAADPPDisk Drive P: ConfigurationOPSYYOperating System InformationnWord Word DINFOAuxiliary Device InformationnKeyboarddTerminall Left Floppy Right FloppyyParallel Printerr Remote Inputt Remote Output RAM Disk #1 RAM Disk #2 RAM Disk #3 RAM Disk #4Extra Serial Port #11Extra Serial Port #22Extra Serial Port #33Extra Serial Port #44 Winchester #1WD1INFO Winchester #2WD2INFO Winchester #3WD3INFO Winchester #4WD4INFOWD1INFO*Winchester #1 Auxiliary Device Informationn Partition Partition WD1INFOWD2INFO*Winchester #2 Auxiliary Device InformationnWD1INFOWD3INFO*Winchester #3 Auxiliary Device InformationnWD1INFOWD4INFO*Winchester #4 Auxiliary Device InformationnTEEType of Terminal Emulator EMPTY No EmulatorTEMEmulator Storage Slotss EMPTYTEM11TEM11Terminal Emulator Selection EMPTY No EmulatorDVRCommunication Channel Selection Comm Chan #DVRDVR00 Comm Chan #00Destination TaskkAttachment number Buffer sizeDVR Comm Chan #DVR00CAPUser CapabilitiesSystem Manager FlagAllow configuration changes ‹WARNINGSŠUl!#³ń p!#Ņ)"³ń ³Ō p" ³Ō pŠ ³ "²”Ō pl–£­ķ¦­²ńš‚€” pš” p pš” pš‚€” p¦¦– ž i¤h¤ k#)²Õ½†€”#Ė×O¤ *ēɱ*~±”՜*z*{*x*yŌ0š‚€” pš#” pš‚€” pš” p*zm*{¢l$³*{³Ÿ”Ō%ķm*x*y*|*}*|*}%$”Ō0š‚€2” pš#” pš‚€5” pš” p#ķk‹=’¤ k#)²Õq†€”#Ė×O¤ *ēɱ*~±”ÕP¤ j"+²ÕĶ#"±ÕĮ†€”"Ė×Oēɱ†€”"Ė×O~±”Õ”*x*y†€”"Ė×Ox†€”"Ė×Oy†€”"Ė×Ox†€”"Ė×Oy*z*{”ŌHš‚€K” pš#” pš‚€N” pš"” pš‚€[” pš” p*x*y†€”"Ė×Oz†€”"Ė×O{†€”"Ė×Oz†€”"Ė×O{*z*{”ŌHš‚€`” pš#” pš‚€c” pš"” pš‚€p” pš” p*zm*{¢l$³*{³Ÿ”Ō%ķm*x*y†€”"Ė×O|†€”"Ė×O}†€”"Ė×O|†€”"Ė×O}%$”ŌHš‚€u” pš#” pš‚€x” pš"” pš‚€…” pš” p Ō p"ķj‹-ž¤ j"+²Õm††F"Ė× ē¤ ,x±,y± ÕN*x*y,x,y,x,y*z*{”ŌIš‚€” pš#” pš‚€” pš"ķ” pš‚€Ÿ” pš” p,zm8,{l,z°,{°”ԁ’ml*x*y%$%$*z*{”ŌIš‚€¤” pš#” pš‚€§” pš"ķ” pš‚€¶” pš” p$¢³$³Ÿ”Ō%ķm$¢l,x,y*|*}*|*}%$”ŌIš‚€»” pš#” pš‚€¾” pš"ķ” pš‚€Ģ” pš” p"ķj‹ž#ķk‹‰ü¤ k#)²Õś††F#Ė× ē¤ *x±*y± ÕŪ*y*{ Ō1š‚€Ń” pš#ķ” pš‚€Ö” pš” p*z±*{± *z*{*x*y”Ō1š‚€ā” pš#ķ” pš‚€ē” pš” p¤ j"+²ÕP#"±ÕD††F"Ė× ~±††F"Ė× ± Õ(*x*y††F"Ė× ~††F"Ė× ††F"Ė× ~††F"Ė× *z*{”ŌJš‚€ó” pš#ķ” pš‚€ų” pš"ķ” pš‚” pš” p††F"Ė× ę±††F"Ė× ę ± Õ‡*x*y††F"Ė× ę††F"Ė× ę ††F"Ė× ę††F"Ė× ę *z*{”ŌJš‚ ” pš#ķ” pš‚” pš"ķ” pš‚ ” pš” p"ķj‹Ŗž#ķk‹ž¤ k#)²Õ™†€”#Ė×O¤ *ēɱ*~±”Õx¤ o'+²Õt*ē 'Ė×É °*ē 'Ė×É”°”ŌHš‚%” pš#” pš‚(” pš'” pš‚2” pš” p*ē 'Ė×ɃCŚÕļ'°'° ŌQ†…„Ė×ē ÉŌ>š‚E” pš#” pš‚H” pš‚T” pš” p‹•*ē 'Ė×Ɋ¤ Ф Ф Ф Š ¤ Ф Šց\†…„(Ė×ē ÉńVš‚r” pš#” pš‚u” pš'” pš‚” pš‚Œ” pš” p'ķo‹†ž*ē Ė×Ƀ”Ś*ē Ė×Ƀ–Ś ÕĻ*ēɰÕĤ j"+²Õ¹#"±Õ­†€”"Ė×Oēɱ†€”"Ė×O~±”Ս*ē Ė×Ɇ€”"Ė×Oē Ė×ɰ*ē Ė×Ɇ€”"Ė×Oē Ė×ɰ ŌHš‚˜” pš#” pš‚›” pš"” pš‚«” pš” p"ķj‹A’#ķk‹aż– )Too many warnings, checking is terminated Warning: task % base of memory exceeds top of memorytask +'s system stack is inside the task's memorytask 's memory overlaps task 's memorytask 's memory overlaps task 's memorytask 's memory overlaps task 's system stacktask 's memory overlaps RAM Disk 's memorytask 's memory overlaps RAM Disk 's memorytask 's stack overlaps RAM Disk 's memory RAM Disk  has odd number address RAM Disk 's base exceeds its top RAM Disk 's memory overlaps RAM Disk 's memory RAM Disk 's memory overlaps RAM Disk 's memoryTask , logical channel has a zero Winchester partitionnį†Task 's terminal channel has Remote flag ON’ß’ß’ä’ä’é’é’ī’ī’ó’ó’ų’ųTask 's logical channel  has serial channel with Remote flag OFFį†į†Task  is sharing terminal with task  without shared mode sett- TCONFIGMU– CONFIGSA ĪCONFIGSA~: ¤"‡!³‡!€ ³Ÿ”Ō`‘`‡!Ė×ɤ"–!I€€ p–^`"Å€€`p–m€€ p–‚`$Å€€`p–‘€€ p–¦`#Å€€`p–æ!‘€0ŚŌ €€ !p–į`‡Å‡‘€0ŚŌ €€`‡p–ń€€ p–`%Å€€` p–€€ p–*`!Å€€`p–9€€ p–O`‡Å€€`p–_€€ p–u `‡!Å €€`p–!¢"‘h…! ³ ²””…!å ³ ²”” Ō €€!"p–Ī"‘h…! ³ ²””…!å ³ ²”” Ō €€!"p–ä!‘ Ņ €€ !p–`‡Å‡ ‘ Ņ €€`‡ p– €€ p–'`‡Å€€`p–7€€ p–M@`‡AÅ@€€`p–A#"‹Č#‘h †ŚŌT!²Ō ŚŌlЁ€%lŠ=!ҁŠlŠ3!ҁlŠ)!^Ņ€nlŠ!Ņ€KlŠ!Ņ€2lЁK!ŒlŠ\!ҁ€%lŠR!”ŠJ€2lŠH€KlŠC€nlŠ>€–lŠ9,lŠ3XlŠ-°lŠ'lŠ!ŠlЁ` lЁĄlЁ€%lŠ KlŠրŠ € !Œ£lŠր–("‹÷#‘h †ŚŌ>!²ŌlŠ2!ŠŅlŠ(!ŅlŠ!€nҁ^lŠ!€2ҁlЁK!Œl‹!€2Ņ€0l‹„!€KŅ€1lŠz!€nŅ€2lŠp!€–Ņ€4lŠf!,Ņ€5lŠ[!XŅ€6lŠP!°Ņ€7lŠE!Ņ€8lŠ:!ŠŅ€9lŠ/!` Ņ€:lŠ$!ĄŅ€lŠ!KŅ8€?lŠ€>lŠ!€ ²ń€ iŠ!²Ōi!ķ£lŠր–} ‡#³‡#€ ³Ÿ”‡"³”‡"³Ÿ”‡!³”‡!³Ÿ”Ō(`‘`‡#Ėׇ"€’ĖŹ`‡#Ėׇ!€’ĖŹ`‘–#ˆ†‘–›€€`p ±i–ėh€€`p ± ±” ±” ±”Ōš‚€r pšrpšrpp# €’”°„!–ś†‘‘ s–’³’ø’½’Ā’Ē’Ķ’Ó’Ł’ß’å’ė’ń’÷’5’ō’’ā&CONFIGSAGE must use BIOS 2.4 or MU 3.33P FA”) ōéÓ½²ŖŸ—…{sbUKC91'x *** PASCALIO  MNUUNIT   Fatal error  in menu systemDuplicate menu Could not find menu for copyNo menu defined before itemIncorrect item for menu styleCould not find Menu for displayyOnnOffCould not find menu *’ ’’’A’Y’ę’źCould not find referenced menu Menu  is  characters too wideeToo many items in menu  -  - 'Select Menu item : Error writing to file , Type space to continuee  Illegal integer valueValue out of range  to  Illegal hex valueONNOFFMust enter ON or OFFFžž’~’ˆ’Å: 'Select menu item : Error closing previous file File for printout: .TEXTCould not open &Warning - item will not fit in displayy’؞ܒ^’’š’¤’Æ’ĄY or N? Error closing printout file Nštpšupš‚€t p!Ó š!tpš‚€ t pštprhp–`!ģ € p! ȖŒ+b„,¬Pb§¢ķi`!v!Ó‘b b§ķp ¤.–-+ØØIč™Ī? Ičb™Ī? N«¬PØØ1iŠ 1| p2( ²|gpĄh āXd40( <?6hIč™Ī? N«čØ0āXdBh `Ä0( <1vh `¶p0(`=Ø N«–.,ØØIč™Ī? Ičf™Ī? N«¬PØØp0(bBv0)ܰ|gD0)Ü<?6hIč™Ī? N«čØ0āXd1iÜ`6Ič™Ī? BgIč™Ī? N«‘ØØ`Ič™Ī? BgIč™Ī? N«‘ØØ0(°|gd0(<1vh 1| p2( ²|gpĄh āXd*0( <06h<06h°hdfBh `Ī0( <1vh `Ą0( r2(b<=¶hN«–0/…2Ō…mrŠštp–ŅT„,„Z¬Pb„X¬P„,˜`‘ ˜Ó‘š‚€t pš„,˜t p‘†h w…e˜Ņ…h„dŠ…e…hąh„e…hi!˜Ä!ē„,˜‘Ä!ēb˜‘Ä!ē‡VÄ!ē‡UÄ!ē˜Ä!ē‡WÄ!ēÄ!ē Ä!ēw!yĘ„i–[ƒ}„U„€ƒ¬P„,„€¬Pb„¬P„U˜`‘ ˜Ņ*‘š‚€t pš„U˜t pš‚€$t p‘†h w…e…hąh„e…hi!˜Ä!ē„,˜‘Ä!ēb˜‘Ä!ē‡~Ä!ē Ä!ē {Ä!ē }Ä!ē ęÄ!ē ę Ä!ē yÄ!y!yxķĘ„i–€„,`w ¤+…h¤,‡+ē‡-ć-y§‡,ę ²ń ‡,ē ‡-y§Ä‡,ē‡,ęķć,²Ÿ‡-|€ Śå”Ō&‡-|°‡-~å”Ō‡+ē˜ÄŠa‡,‘‡+ēa˜‘Ċ ē˜Ä…i˜Ņ …hē Ċ…i Ä „i–-c…h˜Ņ‘š‚€)t p‘…h} Ó,‘š‚€7t pš…hz˜t pš‚€At p‘–¤+b„0¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡/Ä!ē‡.Ä!ē‡-Ä!ē‡,Ä!Ä ‘–1Ų+b„.¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡-Ä!ē‡,Ä!Ä ‘–/ +b„.¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡-Ä!ē‡,Ä!Ä ‘–/VT„,„Z¬Pb„V¬P‘`w i!ēÄ!ē„,˜‘Ä!ē‡YÄ!ē‡XÄ!Ä ēb˜‘Ä ē‡UÄ ‘–[+b„/¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡.Ä!ē‡-Ä!Ä!ē‡,Ä ‘–0Ź+b„/¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡.Ä!ē‡-Ä!Ä!ē‡,Ä ‘–0ž+b„.¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡-Ä!ē‡,Ä!Ä ‘–/ *a„,¬Pa˜‡+`‘ xķÄ ‘–- q)`„*¬P`˜†j‘…j˜Ņ0‘š‚€Gt pš`˜t pš‚€Rt pštp‘…j{„k…j~„.„c–+ ¢)ˆ§­³ń `­ˆ§£Č`ģ`§€ p`˜ˆ€P” –) Ō.„ga‚€YėP…jh…ky|‹ó0as ‹ķa†ėP‹ā…ky}¤+‡+²ń 1‡+£as ¤+0‡+as ‹æ2Ō a‚€ZėPŠa‚€\ėP‹§…ky~Ձ…ky}˜„,‘‡,˜ÓI‡,}Ņ9¤.‡,{¤-‡-˜±‡.å”Ō‡-y{0Ҥ.Ї-x¤-Šć‡.Ō a‡-yyėPŠŠa†ėPŠ'‘š‚€^t pš…ky}˜t pštp‘ААŠ0…ky{Ņa‚€iėPŠրja§ ²ń„ga ȅk|˜Ó…k|aėP–. qh…k˜±Õƒ…k|˜Ós„c„-…kyj"|ŅH"~ŌB"}˜a‘!˜Ó!}Ņ!~„.Š…j~„."{„/"z„0Š‘š‚€st pš"}˜t p‘Š…j~„."{„/"z„0"|„1¦hŠ…kx„kŠ„ch Õk’– p…jꄁu…pķ£h…ję …j¢¢i…uī ķ„s…s!Œ…o²ńOš‚€ƒt pš…jz˜t pš‚€†t pš…s!Œ…o£tpš‚€‰t pštp‘!„r„t…s²ń…o…s!Œ£…sī„t…t ²ń „t…usķ„q…r…sŒ…t…sj"…j|§£„w…w³ń„wŠ…w„w…q¢„l…q¢„m– „pÓ„x„y– ÄØØ0)Ü<1vh 0(°|oSh0( <1vh `äp0( =Ø N«–Ę„n„y…2Ōr Šštpštp…xŌ †5t†5t…w²ńš€ …wup…xŌ †5€ …wuš…j|˜t pštp…xŌ†5…j|˜t †5tštp…xŌ†5t…qīnj"&²Õń…sīoi!'²ÕĢ!…qŒ"¢k#…u³ŸÕµ#` #³ń€A#¢lŠ[#€$³ń €0#¢£lŠL#€$Ņ€*lŠB#€%Ņ€#lŠ8#€&¢³ń €a#¢€&£lŠ&‘š‚€”t pš…jz˜t pštp‘ ē$Ä ē!…r…t¢ŒŹ 9ē"¢Źš$upš‚€ t pš yy˜t p…xŌ†5$u†5‚€¢t †5 yy˜t …ję yy§£m%²ńš€ %up…xŌ †5€ %uš€ up…xŌ †5€ u |˜Óš |˜t p…xŌ †5 |˜t Š&…j²ńš€ …jup…xŌ †5€ …ju!…sīÓ\…t²ńš€ up…xŌ †5€ uŠš€|up…xŌ †5€|u…t²ńš€ …tup…xŌ †5€ …tu!ķi‹.žštp…xŌ†5t"ķj‹ žštp…xŌ&†5t†5‚€¤t †5t†5t†5t„x…yŌ<…2Ō …q¢rŠštpš‚€øt pš†z˜t pštpr„v–šupš‚€Ät pš`t pštpŌšt p € Ņā…2ńštpštp„4–9„gh`ˆ‚€Ńsi…ky|‹’…kyj`ˆ†s儁g`ˆ‚€Ņsi ˆ§³ń„g…gŌ š‚€Ót p0"}²Ÿ0"~³Ÿ Ō2„gš‚€Žt pš"~tpš‚€čt pš"}tp‹‚†ˆėPŠx`ˆ††s儁g`ˆ‚€ėsi ˆ§³ń„g…gŌ š‚€ģt pŠ;ˆs ˆ‚€õčŌ„Š!ˆ‚€÷čŌ„Š„gš‚€łt pŠց–°štp…f˜Ņ†fw…f˜Ä…fē˜ÄŠ-…fx˜Ņˆw…f­Ä­ē…fÄ­˜Ä­„fŠ…fx„f…f煁jąkyh {„/ z„0 }˜‘ „-¦–9…2Ō …q¢rŠštpš…kyy˜t pš‚ t pšˆ€Pt pšt pˆ§²ń3ļ#…gŌš!¦Š"„c¦„-…kyh…j~„. {„/ z„0 |„1Ц–¾„c¦„-…kyi…j~„.!{„/!z„0!|„1!{„…j{h ˜ÓL |˜ÓB |§²ń: | |§§€ Ó/ | |§€ ȅ2Ō" ēÉ¢…ję ¢ ēɔ š |˜t p xhа„–ó¦„-…kyh…j~„. {„/ z„0 |„1…ky}Ō„cŠ„c–Ņ-i…2Ō…q¢r…q¢rš‚ t pš`t pštpåՐ €!Ņ „c„3€"p…ję€&²Ō €a³ €z²”Ō €a£€A¢h…j{„k!允k˜±”Ō…k{ ŅiŠ…kx„kŠā!Ō+…ky|k#ŚŌ$Š#ŚŌ%Š#Ґ&Š#Ґ'‹  €=°Õź…2Ō …q¢rŠštp…bŌ@†5” pÓ0šupš‚ t pš†z˜t pštpr„v„bš‚/t pš†zt pšt p†z§²ńf‚9†zs †5†z˜” pÓG…2Ō …q¢rŠštpšupš‚<t pš†z˜t pštpr„vŠ„bŠ €/°…b”Ō„xļŠ šupŠ št p„ci!Õ*ž–- h…c‹!…4ńW…2Ō*…kēÉ¢…ję ¢…kēɔ š…k|˜t pŠ štp…gŌ…2Ō…q¢rš‚Dt p…nŌ„cŠ„c…4…g Ō !…j}Ņ„c‹¢…3Ō„cŠ#…4Ԑ!„cŠ…j²ń …j{„kŠ„cŠs…kx„kŠf„cŠ\"ŠX„-hŠQ…j~„.h„-„cŠ@…f˜Ó1…fz˜Ó$…fzz˜‘ h…fē˜Ä…fy˜Ó…fy„f„-Š„cŠ„cŠցX ÕŅž„4–,…2Ōr Šštpštp„n–Ć,c„-¬Phj¤/šc˜t pš€ upšat p!€Y°!€y° Ōš!up¤/jŠD!€N°!€n° Ō jš!upŠ,štpŌšt pšup ń š‚bt ph"Ō–štp–.į*a„-¬Pa˜‡,`‘ ˜Ó‡+ yėP–.(T„,„X¬Pb„U¬P„,˜‡W`‘ ˜Ó) y§i!b§Ó!b§²ń !b§£bs Šb y§Č ybėP–YI<`r„;É„p„;É„o„<É„2–<݆5†aį” ˜„d˜„e˜„h˜„i˜„j˜„k˜„f„c„n„4„3„x„b‘(” …bŌG†5” pÓ7štpšupš‚gt pš†z˜t pštpr„v„b†5” – – a ŚŸ |åD:d»l»Ó‹D Ȳ©‚ s d   kށgJ-īŌ“ėš §(*** FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP żSIOUNIT Ź3k"x!§²Ō !"xģ§Ņk""xķˤ+b„,¬P¤0i‡/x‡.§²ŌQ‡.‡/xģ§hb§Ņ bģ§Ņ ¤0‡/‡/xķĊiŠ*b§²ń!b§ bģpb§Ó ¤0‡/‡/xķĊiŠiŠi!Ō –/ o$Äijh&%€-‘ŌjŠ &%€+‘Ō&x%§²Ō(%&xģ§k#ƒ€ŚŌh&&xķÄ$$x Œ#¢€0£ÄŠiŠi!ŌĖ Ō o"Ō$$xᎤ %Ä$Äh'x&§²Ō[&'xģ§j"ƒ€ŚŌG¤ ''xķÄ"ƒ€ ŚŌ€0iŠ"ƒ€ŚŌ€A £iŠ€a £i$xk%%xŒc É¢Ä$$xŒ"¢!£ÄŠhŠh Ԙ–Ąmh$x#§²Ō!#$xģ§i!ƒ€ŚŌ m$$xķÄ!"‘ŠhŠh ŌŅ–$#"‘ńmpmh$x#§²Ō#$xģ§i!ƒ€ŚŌ $$xķÄ!"‘ŠhŠh ŌŌ–?#§²ń,#§jh "²Ō!# ģ§i!€a³Ō!€z²Ō # ģ!€a£€A¢Č ķhŠŚ–Ć£„{„€„¬P‡€¤§Ņ p`‡€¤ėP`‘ „{˜`˜r`§„{§£ķ±`§„{§ķ² ``§ģ§€.±”Ō‡€¤¤*„*‡€¤˜€Pr„*„{˜€ r„*ėP‡€¤‡€¤§ģ§€.Ņ ‡€¤‡€¤§r–€¦ė4‡6s` s‡5nf‡5˜€Prf`˜€ZrfėP–6 §€P³ń §ķČ §ģ!ȖK&²Ÿ&³Ÿ”Ō2'k&īli!$³Ō&c!ĖŲÉh ³ń€0 ¢jŠ€A ¢ £j"%‘!īiŠÕ–‰z‡|²Ÿ‡|€Q³Ÿ”Ō)`‡|Č`ģ‡|€ p‡{¤*„*‡{˜€Pr„*`˜€ r„*ėP–|’t–’’~~’~’ž’’ž’’’ž’’ž’"Ød†x āʉTĒ *** 9 LONGOPS STRINGOP ­RTIO RTMISC €€Ŗ( ”Gnopr (c) 1980,81 Silicon Valley Software and 1981,82,83 SMS ¬RTIO ¾Ÿ``į×Ä {zē‚€¹ {zē‚€!¹ Ō yhŠą {jkab«! |£ic!×Äab«š‚€%s š {zēs š‚€*s š |sš‚€/s š z!Œ£sšs–ؚsš‚€5s š X¢sš‚€Ds šs p–ūi1h ˜±!”Ō j"y#ŅiŠ"xhŠé l–^$Ņ`t ē š;Ċ*2˜Ņ `t ē €Pujat ę !rŠ2h2x„ k#ē$Ä#1Ä#ēÄ#ēÄ#ēÄ „ m–‘"1Ņ"x„Š1h ˜Ó i!x"Ņ!"xÄ!xhŠģ"4Ó"2Ä"„˜„–©…€ˆŌ€@‘0}Ō€/‘–j!‘!„0˜Ņ€C‘0h ę ęŌ9 }Ō ē ę §° ę ³  ę ę ę³”jŠ ę ę ę³ ę ę ę³”j {Ōj | z±”Ōj–90h ę ē  ęīvÓ€0‘ ē Ė’0h! ę ę³Ō! ē p ę ē!ķÄ }ń ę ēĊ ę ē !vÓ€1‘ ē Ä ē!ķÄ ē Ė0¤£h ²Ÿ‡ē § ±”Ō īhŠė‡ē § Ó€2‘‡ē ķa £īp‡ē ķ £īp‘%‡ę‘&a‡ē  £īp‡ē ćē  £īˁ¬…€ˆŌ!…€‹…€Š²Ō…€‰…€‹ī!ȅ€‹ķ„€‹Š€B‘Šl0h ē ķÄ ę ęŌ@ ę ³Ō ę Ō } ęå”Ō‘'Š‘% ę‘&Š ę‘& ē ę !Č ē ę ķÄ ē Ċ04Ņ š!vŠ ę x!Č ę s–"0h ē ķÄ ę ęŌO ē ę §¦ ę ³­° Ō( ę ę ę³Ō¦Š ę Ō‘% ę‘& ē ę §¦­Ó ē ę ķĊ ę s ę x§¦–Ė…€ķ„€…€ˆŌ#…€‹…€Š²Ō…€‰…€‹ī§h…€‹ķ„€‹Š„€ hŠq5Ō6†§²Ō †6§h6ķ„Š€ hŠV0j"ę ²ń€ h"ē "ę īĊ=i* Ґ* € ²ń"ē € £īĀ hŠiŠ °„ °3 Ō € h"ē ¼Ä!ŌĆ# ĖY0i!ē!ķÄ!ę ęŌe!ę ³Ÿ!ę !ę ę³Ÿ!ę!ę ę³Ÿ ”Ō!ē !ę §h!ē !ę ķĊ/!ę!ę ę³Ō„hŠ!ę Ō‘%!ę‘&!ē !ę §h!ē !ę ķĊ!ę s!ę x§h" Ėt…€¦ih !²Ō €*‘( ķhŠņ–Œ"ih !²Ō € ‘( ķhŠņ–Ii„€`‘) € ±…€$° Ōń €-±j €-° €+° Ō#ń‘…€$Ņ‘`‘) € ±…€$± Ōk € Ņ…€©Ō!Ģ į³ń€3‘ !ŒiŠ5 €0³Ÿ €9²Ÿ Ō‘!Ģ į²Ō €8"£²Ÿ!Ķ į² Ō€3‘ !Œ€0¢ £i…€$³ń`‘)Š…€ķ„€…€$²ń•"Ō!įi%!Ė<…€ˆŌ2…€‹}³Ō€A‘…€ŒŌ}„€‹Š…€‹…€Š²Ō€ ‘(Šń}„€‹‹µ0i!|ń?!ę €>²ń€4‘!!~!}£²ń€4‘!!~!}£³ń…€ŒŌ!}Ō`‘)Š`‘+Š€ ‘(ŠŻ…€ŒŌ4!}Ō.5Ōš†€’s šs „Š!ę €>³ń`‘)Šń3ń!ē ÄŠ$!}Ō !ę ę!ęå”!ę ī°”Ō ‘'!ē !ę īÄ!|ń!!~Ó€5‘!ēĖ{…€“…€’²ń‘…€…€“…€“ķ„€“­€ ÓÜ­€a³­€z²”Ō­€ £¦–ź1!ƒ€GŚŌ!„€ŽŠV!€BҐ1!€N°!€Z° Ō!„€ŽŠ‘Š9!ƒ€MŚŌ,€0„€Ž„€…€ Œ!¢€0£„€…€“h1!ƒ€QŚńć „€“Š‘– …€“…€’²ń‘…€…€“ī§h…€“ķ„€“– E…€¢²ń …€¢ī„€¢‹"i‘0…€Ž€0Ņ…€i!²Ō‘l‘0Šl…€Ž„€£…€Ž‹ō‘0…€Ž€0Ó‘!„€¢…€„€¦…€¦²Ō‘„€ „€”…€£€F°…€£€E° Ō\‘0…€Ž€.Ó ‘‘0…€Ž€0Ó ‘…€„€„…€£€EŅ7…€“h‘0…€Ž€EŅ"‘0…€Ž€0Ó ‘…€„€¤„€§…€¤²Ō ‘Š „€“„€§‹a!„€¢…€“h‘0„€ „€”…€Ž€0Ņ„€Ø…€„€¦…€¦²Ō ‘Š„€Ø „€“‹'…€ŒŌ‘$ń‘!nj"&²Ō 3‘("ķjŠń‹įž‹$ń‘…€ŒŌ!nj"&²Ōe‘)"ķjŠóŠ!nj"&²Ō € ‘("ķjŠņ‹«ž‹Ź$ń‘!„€Ŗ‹›ž‹ŗ$Ō‘‘0…€Ž€0Ó‘…€£€+Ņ…€„€ŖŠ…€į„€Ŗ‘0…€Ž€PÓ‘‹až‹€…€œ³Ō‘…€œŅ„€”…€œķ„€œ†€”…€œī×!ƀ˜…€œī×…€“Ä‹(ž‹G$Ō‘…€œ°…€””Ō'…€†€˜ī×xÓ†€˜ī×x„€†€”ī×x„€ž„€Ÿ†€”…€œī×x²ń%†€”…€œī׆€”…€œī×xīƀ˜…€œī×x„€“‹ŗż…€œ²ń …€œī„€œ‹©ż…€ Ō+‘/…€Ÿ„€œ…€„€“†€”…€œī×…€žÄ†€˜…€œī×…€Ä‹yż‹˜$Ō‘‹mż‹Œ‘‹†…€ŒŌ‘$Ō‘k3m%€'Ó!%‘(…€“…€’²ń‘…€…€“ī§m…€“ķ„€“ŠŚ3m%€'Ņ€'‘(Š …€“ī„€“k#Ō»‹ żŠ,$Ō‘‘/‹’üŠ$Ō‘Š$Ō‘…€£€Z°„€©‹ćüŠրU– ī0¤‡ę ęՓ‡zŅ „€Œ‘/‡ēćzÓx‡ē ‡ę ‡ę £p‡}ń‡ę 燁ę đ%‡ę‡}”Ō2‡ę 燁ęķÄ`p‡ę `‡ęvÓ€0‘Їę 燁ęˁ %0h Ó‘/ :}å ę ę ę°” ę ę ę²Ÿ”Ō ę ē ę Ė ŗ‡‘!„0˜±Õ€0¤‡|Ō‘4ŠH‘5‡ę ꇁ}”Ō7‡ę ē‡ę ęķÄ`p‡ę `‡ę ęīvÓ€0‘‡ę ę‡ę ”Ō‘%‡Ō 0ę rŠ0ę r0‘#– p„„!« ‡#‘a‚€ė‡ ²ń¤ ‡ ¤¤-.²Ōa-„-ī§Č-ķ¤Šķ‡#‘"h ¤.ē‡Ä.ē‡Ä.ē‡Ä.ēćŌ .ę a˜rŠ .ę a˜r „.ę ęŌ&.ę ēÉŅ.ēĊ.ēÄ.ē Ä.ē Ċ.|ń€6‘.ē Ä–# »!‘!„0˜Ņ‘0{04±”Ō€7‘˜„€ „€Œ Ō0|Ō‘404Ņ„„š†€’s šs „– ݘ„€„ „€Œ„€ˆ"„€‰!„€Š„€‹–`…€ˆń0}ń‘…€‘„€"īih !²Ō…€ ×c«d$ēÄ ķhŠč"„€’„€“‘0…€Ž€(Ó€ ‘„€¢„€©„€œ†€”ī×ƀ˜ī×…€“Ä…€“„€„€ž„€Ÿ„€ „€Ŗ–e&īn&³ń€8‘0m%|Ō€9‘‹ę%ę ęń€:‘‹×%}Ō(’%~l&$j"Œi&$%~Œh ³Ō £h!ķiŠY&%~Œ&%~Œ¢&%~€@Œ&%~€@Œ€@¢¢ķi&%~€ Œ&€ Œ%~€ Œ¢h%ę ēÉŅ!¢i‘5…€Œ!%ę ę³!%ę ęī° %ę ę³” ”Ō€;‘%ę!ķÓ %ę Ō‘%!‘&%ē Ä%ē˰0h ę ēÉŅ ę ° ę°” ę ° ę°” iŠ ę ° ę°” ę ° ę°” i–’0hļ6Ō iŠ> ę Ņ/ ę Ō‘% 棑& ē Ä ęń ē ę ī§Ņ ē ę īĊė ē ę ī§i–ļ6ń0ē 0ę īĖŚ$‘!„0˜±Õ“0k#{Ō#ēċ¦#ę ęń€<‘#|ŌB#}ń€=‘#z°#z°#ę €>²Ÿ” Ō ‘47h8Š‘47 Ӑ8Šö87 Ņų#ēĊT#ę ēÉŅjŠj#}Ō$’#~#ęī"£Œ#ęīŒ#ę ¢#~¢iŠ#ęī"£Œ#ę ¢#~i!²ń!‘–!‘!„0˜Ó,0h |ń Ó‘/ ēÄ zŅ ēđ4 ēÄ |Ō ēĖŽ‡‘!„0˜±Õ“0¤‡|Ō‘4ŠH‘5‡ę ꇁ}”Ō7‡ę ē‡ę ęķÄ`p‡ę `‡ę ęīvÓ€0‘‡ę ęŌ7‡ę Ō‘%‡ę ēÉŅ ‡ēĊ‡ēćē ćē ćēćēćē ćēˁ…€˜Ņ‘$`‘+aī Č`‘+aī Ča"pŠ‘2…€£€IÓ€!‘"…€¦‘.–7"ih !²Ō # īב ķhŠļ–Ņ …€˜Ņ'‘$m%¤ o',²Ō`‘+„ 'ī Č'ķoŠķ„ -%p‹g‘2…€£€F±…€£€E±”Ō€"‘aĢō„€’įn`‘) € ±…€…€¦° Ōļ €-°l €-° €+° Ō…€…€¦Ņ€ hŠ`‘)k € ±…€…€¦± Õ· € Ņ…€©Ō aņ€aóĀō&ķnŠz €.Ņ &³Ō€#‘nŠh €E° €D°  €e°  €d° Ōg…€¦…€£‘.kŠD €+° €-° Ōg…€¦…€£‘. €-Ņ'įokŠ" €0³Ÿ €9²Ÿ Ō€$‘aņ€aóĀ €0£ĢĄō&ķn…€…€¦³Ÿ#å”Ō`‘)Š…€ķ„€…€…€¦²Ÿ# ÕI’$Ōaaóäō&³Ō aaó&p ĆōŠ aa󅀄p Ćō#ń…€Ŗo'³ń aaó'įp ĆōŠ aaó'p Āō-aóō–ķ"ih !²Ō # īב ķhŠļ–‚…€˜Ņ‘$`‘+aī Č`‘+aī Ča"pŠm‘2…€£€LÓ€%‘„€`‘) € ±…€…€¦° Ōļ €.Ņ…€…€¦Ņ€&‘Š`‘) €T± €F±” €t±” €f±”3å”Ō€'‘" €T° €t° Ä…€…€¦³ń`‘)Šņ–"ih !²Ō # īב ķhŠļ–\…€˜Ņ6‘$'īlj"$²Ō("&Œh&Ō "¢h&mi!%²Ōc‘+( !¢ī#Č!ķiŠģ"ķjŠÓŠ|'īlj"$²Ōr‘2…€£€AÓ€(‘…€Øń&„€¦„€…€¦&£mi!%²Ōc‘)!ķiŠó"&Œh&Ō "¢h…€¦mi!%²Ōc‘)( !¢ī#Č!ķiŠģ…€¦ķ&mi!%²Ō ( !¢ī€ Č!ķiŠī"ķjЉ– Ö…€ˆŌ…€˜Ņ€@‘„€ ‘2…€£€\Ó‘/„€ˆŠN0h…€˜Ņ‘$‘/Š2„€ ‘2…€£€\±5å”Ō‘/3Ō ē Ä5Ō„šs„3Ōšr |Ō ē3Ä ēÄ3i–}…€˜Ņ‘$g`p`ī§‘(`ī§‘(‹ƒ‘2…€£€IÓ€)‘'’įīŅ `‚€™ÅkŠ8`‚€œÅ'³ń'įomŠmk`#ī' €0¢Č' o#īk'Ņė%Ō `#ī€-Č#īk#£…€¦²ń‘,Š…€¦#££‘-#ķnl$&²Ō `$ī§‘($ķlŠš–š"ih !²Ō # ī×x‘ ķhŠī–¾­ķ¦­­²Ō ˆ­ī×x‘(Š€0‘(–”,m%ŅnŠn…€˜Ņ'‘$„-„#%p%¤,¤-‡,²Ō „#-ī§‘(-ķ¤Šķ‹¤‘2„-óĢĻń j„-„-óäōŠj¤ c„-óōcóņ€ĻŌ(¤có-p ĻŌ*-¢¤ c„-ó*p ĆōŠ-¤-ŅŪcóĢĶń9cóņ€ Ļń-¤cóĢ-īp ĆĻń*-£¤ c„-ó*įp ĀōŠ-¤-ŅÖ*ķ¤ …€£€FŅ *…€Ŗ¢…€„¢oŠ,…€Ŗ²ń…€„ķoŠ…€ŖŅ…€„oŠ…€Ŗ…€„į²ń…€„…€Ŗ¢o'³Ō#'&³Ōccóņ€&p ĆĄōŠccóņ€'p ĆĄōcóņ€ĻŌ*ķ¤ ccóņ€Ćō…€£€FŅ'ķoi&¤,¤-‡,²Ō,có¾¤ )±-'²”Ōi„-ī×)€0¢Äccó)ĢĮņ€Āō-ķ¤ŠĪ!Ōj…€£€F°Õ·*…€Ŗ¢¤ !*²Ÿ”Ō¤ …€¦…€„£ī¤ ,³ń€*‘*²Ō,"£¤ Š,*£"£¤ …€„°*²”Ō+ī¤ +³ń‘,Šd+‘-"Ō€-‘(¤…€„°*²”Ō€0‘(Š *²ń9*ī¤ Šó€.‘(…€„¤*³Ÿ‡²Ÿ”Ō€0‘(*ķ¤ ‡ī¤Šå‡¤,¤-‡,²Ō9-ķ¤Šņ‹‘…€£€E°Õ„…€Ŗ…€„į²…€Ŗ…€„ķ²Ÿ Ō€+‘!Ō¤ Š*…€Ŗ£¤ h…€§Ō*ąĢ…€¤p ĻŌh…€¦…€¤££¤ Š*ąč³Ōh…€¦£¤ …€„ķ…€Ŗ³¢"¢o('³ńh Ō‘,‹ ('£‘-"Ō€-‘(¤…€Ŗ¤,¤-‡,²Ō!-…€Ŗ±”Ō€ ‘(А9-ķ¤Šć€.‘(į…€Ŗ¤,¤-‡,³Ō €0‘(-ī¤Šš…€Ŗ³…€Ŗ…€„ķ³Ÿ”Ԑ9…€„…€Ŗą£¤,¤-‡,²Ō9-ķ¤Šņ…€§Ō€E‘(Š*ą€d³ń €E‘(„€¤Š„€¤*³ń *ᤠ€-‘(Š€+‘(„#‚€ŸÅ &¤„#/ī* €0¢Č* ¤ /ī¤*Ņč…€¤&/££¤,¤-‡,²Ō €0‘(-ķ¤Šš/ķ&¤,¤-‡,²Ō „#-ī§‘(-ķ¤ŠķŠ€,‘–.¾"ih !²Ō # ī×ó‘ ķhŠī–…€˜Ņ‘$bapaī§‘(aī§‘(Š ‘2…€£€LÓ€-‘…€¦ī‘-"Ō€T‘(Š€F‘(–"ih !²Ō # ī×x‘ ķhŠī–Ā­¦¦­¢h¦­ ²Õƒˆ ˆ«­Ņ;ˆ ī§€ °ˆ ī§° ˆ ī§€ ±ˆ ī§±””Ō ˆ ī§‘(Šˆ ī§‘(Š2i¦­!²Ō­­³ńˆ ­ī§‘(­ķ¦­ķ¦ŠÜˆ­ēÄ­ķ¦‹v’–>‡ķi…€˜Ņ‘$‡ī¤j"‡²Ō:„ !×Ä"ķjŠģŠK‡ī¤j"‡²Ō>:‘2…€£€AÓ€.‘…€Øń‡„€¦…€¦‡£‘-…€¦‡³ń…€¦oЇo:„ !×Ä"ķjм––…€ˆŌ…€˜Ņ€@‘„€ ‘2…€£€\Ó‘/„€ˆŠ.0h…€˜Ņ ‘$‘/ ēĊ„€ ‘2…€£€\Ņ ēĊ‘/ ēĖȆ€‘Jt˜„€˜„˜„˜„‚€Ø‘1„„„€ˆ–\1˜±Õˆ1„0¤‡|Ō‘4ŠH‘5‡ę ꇁ}”Ō7‡ę ē‡ę ęķÄ`p‡ę `‡ę ęīvÓ€0‘‡ę ę‡ę ”Ō‘%‡ę š;Ó ‡ę r‡x„‹r’–k! Ž‘–y‘” ‘– ’’d’’’’d’’’’d’’’’ ’’’’2’’’’2’’’’d’’’’d’’’’d’’RTIO RTMISC Segment  Proc# Offset# **** Fortran Runtime Error ## ****ū€b’’'\’zž€ž¹žF’hžF’t’Ō’tżŸż ż żŁż ż ’éž6ž’é’į -32768 CONSOLE: ‘ Oڵś„÷ Ą'ȼÆhŲŒK ˱€n ×±M` °! Q ć C ƒ ė S  A ł a  aņ ķo 2ńąŗfRø:*** REALOPS EXTRAIO EXTRAHEAHEAPOPS PASCALIOFILEOPS  RTMISC {Ž¤€‡€’¢¤€¤€ƒ‡€ƒ‡€²ŌN„€…„€•«„€–‡€–ēĤ€Ž¤€‚‡€‚‡€Ž²Ō„A‡€‡€‚¢„€…‡€‚ī§Č‡€‚ķ¤€‚ŠÜ‡€¢¤€‡€ƒķ¤€ƒŠ©¤€‡€‘¢¤€¤€ƒ‡€ƒ‡€²ŌM„€…„€“«„€”‡€”ēĤ€Ž¤€‚‡€‚‡€Ž²Ō`‡€‡€‚¢„€…‡€‚ī§Č‡€‚ķ¤€‚ŠŻ‡€¢¤€‡€ƒķ¤€ƒŠŖ‡€’‡€‘³ń'„A‡€’ķ€ ȄA‡€’ķ„A‡€’¢‡€‘‡€’£p‡€‘¤€„Š"`‡€‘ķ€ Č`‡€‘ķ`‡€‘¢‡€’‡€‘£p‡€’¤€„„A‡€„Č`‡€„ȇ€ŠK‡€„A`čĊB‡€„A`źÄŠ6‡€„A`éŸÄŠ)‡€„A`éĊ‡€„A`źŸÄЇ€„A`čŸÄŠրA–€–Ūi#Ó/#²ńjŠj#įk$h#Ō! Œi#k#²ń Œh#Ņč"Ō!i!m–+bņ€ō%Ó;%²ńlŠl%įm`fóō%Ōbbó`óĀō%m%²ń``ó`óĀō%Ņā$Ōbņ€bóĆō„ bóō–Adbós`óĀsō–S! ³ń!jŠ j–kbó`óĻńdbóōŠd`óō–}! ²ń!jŠ j–•bó`óĪńdbóōŠd`óō–ŗ`bósō`óćņ€Ļńp#dbós`óĆō–bóćņ€ Īń€>rŠ7`ņ€bóbóĀĮō`óĢĪńdbó`ósĆsōŠbóĢĻńdņ€äōŠdņ€ō–bņ€`ó‘ Įō–eóĢĶŌlŠ`góeóĆō`óćņ€Οl$ŌgóĢĻŌ„ ņ€ōŠ„ ņ€ äōŠ-b`ósōeóĢĻńgóĢĻŌ bbóņ€#ĄōŠbbóņ€&Įō„ bóō– Ÿ`bósōdņ€)`óņ€,`óĆĮĀō–½`bósōdņ€/`óņ€2`óĆĄĀō–dóćņ€5ĻŌdóĢĪńfņ€8ōŠfņ€;äōŠbdósō`ņ€>bóĆōfbó`óĮbó`óĄĆō– ³ńiŠ ŅiŠi–8`óĢĻńjŠ `óĢĶŌjŠj–㠚tp‡Ōš‚€Lt pŠ š‚€Ot p/Ō4h,¤ i!+²Ō( ³Ōc„«„.ēÄhŠ ķhšc ī§up!ķiŠÓštp‡Ōš‚€St pštppŠ!š‚€]t pšbt pštp"€ Ņߖź–ō‘v–’’ ’’’’ ’’’Ū ’’’’ ’’’’ ’’’ł"’ł"’ł"0’ł"’ł"’ł E*’ł E*’’’’’’ ’’’’’’’’ ’’’ż#3’’’’ ’’’’ ’’’’ ’’’ć’×’²’š’¾’ŹStop Pause Program terminated.,Please press or to continue..tįŅĆŽ…_MA8,#šŃ w*** EXTRAIO PASCALIOREALOPS RTIO   ·BLIB BLERR €€€€€€€€€€€€€€€€< BLIB a)2BASIC LIBRARY COPYRIGHT 1981 SOFTECH MICROSYSTEMS ž ēŅę¢śĀ`Ā Äž n>  USES "{$U KERNEL.CODE } KERNEL " ( {const} MAXUNIT, MAXDIR, VIDLENG, TIDLENG, FBLKSIZE, .EOL, DLE, STACK_SLOP, P_LOCKED, SEG_FAULT, HEAP_FAULT, & POOL_FAULT, &{type} IORSLTWD, DATEREC, UNITNUM, VID, DIRRANGE, TID, FILEKIND, .DIRENTRY, DIRP, DIRECTORY, WINDOWP, WINDOW, FIBP, FIB, INFOREC, & INT_P, TIB_P, SIB_P, E_REC_P, E_VEC_P, SEM_P, MSCWP, .P_MEM_CHUNK, VIP, BYTE, MEM_CHUNK, ALPHA, MEM_PTR, MEM_LINK, .VINFO, POOLPTR, SIB, E_VEC, E_REC, MSCW, TIB, SEM, ;.FAULT_MESSAGE, FULL_ADDRESS, UTABLENTRY, UTABLE, .SYSCOMREC, POOLDES, &{var} SYSCOM, USERINFO, IPOT, THEDATE $), $ {$U COMMANDIO.CODE } COMMANDIO $( {type} BIGSTRING, &{proc} EXCEPTION $), " "{$U SCREENOPS.CODE } SCREENOPS $( {proc} SC_CLR_SCREEN $), " "{$U FILEOPS.CODE } FILEOPS $( {proc} FINIT, SCANTITLE $); " "  TYPE 'RFILE=FILE; 'TFILE=TEXT; " SPTR=^BIGSTRING; ' 'FMODE=SET OF ( MINPUT,MOUTPUT,MUPDATE, *MAPPEND, MRELATIVE,MDEVICE ); # ' ' ' #{ 2 } FUNCTION BSPN(S1,S2:BIGSTRING):INTEGER; #{ 3 } FUNCTION BRPT(S1:BIGSTRING; N:INTEGER):SPTR; #{ 4 } FUNCTION BVAL(S:BIGSTRING):REAL; #{ 5 } FUNCTION BVAL1(S:BIGSTRING):INTEGER; #{ 6 } FUNCTION BPOS(S1,S2:BIGSTRING; N:INTEGER):INTEGER; #{ 7 } FUNCTION BSEG(S1:BIGSTRING; Position, Leng : INTEGER):SPTR; #{ 8 } PROCEDURE Dummy1; {formerly BLEN not used now} #{ 9 } FUNCTION BBRK(S1,S2:BIGSTRING):INTEGER; #{ 10 } FUNCTION BTIM:SPTR; #{ 11 } FUNCTION BDAT:SPTR; #{ 12 } FUNCTION BCHR(N:INTEGER):SPTR; #{ 13 } FUNCTION BASC(S1:BIGSTRING):INTEGER; #{ 14 } FUNCTION BSTR(X:REAL):SPTR; #{ 15 } FUNCTION BUPR(S1:BIGSTRING):SPTR; #{ 16 } FUNCTION BRND:REAL; #{ 17 } PROCEDURE BRDZ(X:REAL); #{ 18 } FUNCTION BPCH(S1:BIGSTRING):INTEGER; #{ 19 } FUNCTION BFSP(XUNIT:INTEGER):INTEGER; #{ 20 } PROCEDURE Dummy2; #{ 21 } PROCEDURE Dummy3; #{ 22 } FUNCTION BTAN(X:REAL):REAL; #{ 23 } FUNCTION BCONCAT(S1,S2:BIGSTRING):SPTR; #{ 24 } PROCEDURE BEXITPROG; # #{ 25 } FUNCTION BSDN(N:INTEGER):BOOLEAN; #{ 26 } PROCEDURE BRDN; #{ 27 } PROCEDURE BTAB(N:INTEGER); #{ 28 } PROCEDURE BISTART; #{ 29 } FUNCTION BISTART1(N:INTEGER):SPTR; #{ 30 } PROCEDURE BISTART2; #{ 31 } FUNCTION BISTRING(VAR S:BIGSTRING; MaxLength:INTEGER):BOOLEAN; #{ 32 } FUNCTION BIINUM(VAR N:INTEGER):BOOLEAN; #{ 33 } FUNCTION BIRNUM(VAR X:REAL):BOOLEAN; #{ 34 } FUNCTION BIDNUM(VAR X:REAL):BOOLEAN; #{ 35 } FUNCTION BASTRING(VAR S:BIGSTRING;N:INTEGER):BOOLEAN; #{ 36 } FUNCTION BIEND:BOOLEAN; #{ 37 } PROCEDURE BPSTART; #{ 38 } PROCEDURE BPSTRING(S:BIGSTRING;ZONE:INTEGER); #{ 39 } PROCEDURE BPINUM(N:INTEGER;ZONE:INTEGER); #{ 40 } PROCEDURE BPRNUM(X:REAL;ZONE:INTEGER); #{ 41 } PROCEDURE BPDNUM(X:REAL;ZONE:INTEGER); #{ 42 } PROCEDURE BPEND; #{ 43 } PROCEDURE BCLS; #{ 44 } PROCEDURE BSNZ(N:INTEGER); #{ 45 } PROCEDURE BPMT; #{ 46 } FUNCTION BBSZ(N:INTEGER):INTEGER; #{ 47 } PROCEDURE BGOTOXY(Y,X:INTEGER); #{ 48 } PROCEDURE BDFI(S:BIGSTRING); " #{ FILE OPS } # #{ 49 } PROCEDURE BFCR; #{ 50 } PROCEDURE BFDL; #{ 51 } PROCEDURE BFOP(N:INTEGER; S:BIGSTRING; NUMRECS, RECSIZE:INTEGER; ;MODE:FMODE); #{ 52 } PROCEDURE BFCL(N:INTEGER;DFLAG:INTEGER); #{ 53 } PROCEDURE BFCA; #{ 54 } PROCEDURE BSFL(LOC:INTEGER); #{ 55 } PROCEDURE BSRN(N:INTEGER); #{ 56 } FUNCTION BGFT(S:BIGSTRING):INTEGER; #{ 57 } FUNCTION BEFX(N:INTEGER):INTEGER; # #{ 58 } PROCEDURE BVTST(NEWFLAG:INTEGER; TSCODE:INTEGER; V:FIBP); #{ 59 } FUNCTION BSGN(N:REAL):INTEGER; #{ 60 } FUNCTION BERR:INTEGER; #{ 61 } FUNCTION BEXPI(N1,N2:INTEGER):REAL; #{ 62 } FUNCTION BEXPR(X1,X2:REAL):REAL; #{ 63 } FUNCTION BEXPD(D1,D2:REAL):REAL; #{ 64 } FUNCTION BDFC(D1:REAL):REAL; #{ 65 } FUNCTION BFDC(X:REAL):REAL; #{ 66 } FUNCTION BDIC(D:REAL):INTEGER; #{ 67 } FUNCTION BIDC(N:INTEGER):REAL; #{ 68 } PROCEDURE ERROR(N:INTEGER); #{ 69 } FUNCTION BINT(X:REAL):REAL; #{ 70 } PROCEDURE BPUNC(S:BIGSTRING); #{ 71 } PROCEDURE PERROR; " "  IMPLEMENTATION ;¶BLERR )歀‚‹Ąˆ‚€ė’‹·ˆ‚€ė’‹«ˆ‚€)ė’‹Ÿˆ‚€6ė’‹“ˆ‚€Fė’‹‡ˆ‚€\ė’Š|ˆ‚€nė’Šqˆ‚€‡ė’Šfˆ‚€™ė’Š[ˆ‚€“ė’ŠPˆ‚€Ģė’ŠEˆ‚€Śė’Š:ˆ‚€āė’Š/ˆ‚€óė’Š$ˆ‚ė’Šˆ‚ė’Šˆ‚ė’Šց%–Ora‚8ė’švšvšw‡€‚€2³Ō'š‚9w š‡€‚€2£wš€:všw‹ęš‚Bw š‡€‚wš€:všw‡€‚³Ō‹¹‡€‚‹°a‚Kė’‹©a‚Tė’‹Ÿa‚_ė’‹•a‚hė’‹‹a‚qė’‹a‚ƒė’Šxa‚‹ė’Šoa‚ė’Šfa‚¦ė’Š]a‚Æė’ŠTa‚æė’ŠKa‚Ėė’ŠBa‚Ūė’Š9a‚÷ė’Š0a‚‚ ė’Š'a‚‚ė’Ša‚‚.ė’Ša‚‚@ė’Š a‚‚Rė’Šւeša˜w šwšwš‚‚zw š`w šŅp € Ņź–€‚$You cannot write on a read-only filee&You cannot read from a write-only fileeYou cannot close file #00You cannot close a closed filee+You cannot open-for-output an existing file#You cannot open-for-output a device0Relative record number is too large or too smalll#You cannot restore an "APPEND" file4The number of records in the "OPEN" statement is badd.The record size in the "OPEN" statement is baddToo many returns from GOSUBToo many GOSUBS "FREESPACE" argument is not zeroo"Attempt to write past end-of--filee Attempt to read past end-of-fileeBad file titlee Missing Quote$=’I’U’a’m’y’„’’š’„’°’»’Ę’Ń’Ü’ē’ņ’Pascal I/O error Execution error String size errorMissing or bad numberFile is not opennNot enough inputt#Bad number (conversion from string)Too much inputt"Too many variables for print imageeIMAGE field errorEnd of DATA listtWrong type of data in DATA listFile types don't matchhYou tried to open an open filee7You cannot restore a sequential file to a record number%Read record overflow of relative file&Write record overflow of relative fileeBad arguments to SEG$ functionn#Number too large for exponentiation#Negative argument in exponentiation%"ON" statement index is out of boundsM’W’a’k’u’’ˆ’‘’š’£’¬’µ’¾’Ē’Š’Ł’ā’ė’ō’ (continue), (terminate)) tBLIB Z%! ³Ō!jŠ j–7! ³Ō jŠ!j–Cp–_š‚€)w šwp–h‘–p‘–œ€`„€¬’š€<vš`˜w š‚€:w šw–€‚Ŗ „ u–¹…Ó…u–Õ=Ņ„Š=턆 =×x„–,„€…„¬’d„¬’ij!„€…§³Ÿ"”Ō#!ķijd§kh #²Ō„€…!§d §Ņj ķhŠźŠŃ"Ō„€…§ķi! –ˆ‚b„€„¬’b§h‡€ƒ Œi!³Ÿ!€’²Ÿ ‡€ƒ³Ÿ Ō‘Di‘K7bė’7!Č!²ń Ņ 7!b§pŠ 77 ķ! £p7¤€†–€…ēl(Ģōjihnm'Ä))§ķČ))§€?Č)$§€ Ņ$ķlŠō)$§€+Ņ$ķlŠ)$§€-Ņn$ķlŠ )$§€ Ņ$ķlŠō)$§ƒ€EŚŌ((ó ĢĀ)$§€0£ĢĄō$ķl(óĢĪń"ķjŠÖ)$§€.Ņ&$ķl)$§ƒ€IŚŌ((ó ĢĀ)$§€0£ĢĄō ķh$ķlŠŻ)$§€EŅF$ķl)$§€+Ņ$ķlŠō)$§€-Ņm$ķl)$§ƒ€MŚŌ! Œ)$§€0£¢i$ķlŠä!³ńōi%Ō!įi! £i!"¢īk#€%²ń 'Ä(ņ€ōŠ)#€%į³ń(ĢōŠ!³ń ((ó!įp ĆōŠ ((ó!p Āō&Ō((óäō)$§€ Ņ$ķlŠō$)§³ń'Ė ƒc„€„¬’ca`‘L Ō‘D„€†aóō–€…%ƒc„€„¬’ca`‘L Ō¤€†Šᤀ†–€…c€„„„¬’„€„‚¬’„€˜„˜`‡„§‡£ķ” `˜” ‡¢ī¤†–…Ć€`„€ƒ¬’‘K7‚€Qė’‡€‚²‡€³Ÿ Ō‘DŠ3‡€‚`§²Ō*‡€‚‡€¢ī`§²ń `§‡€‚£ķ¤€`‡€‚7‡€p7‡€Č7¤€…–€„„€…„¬’d„¬’ij!„€…§³Ÿ"å”Ō!!ķid§kh #²Ō„€…!§d §Ņj ķhŠźŠŅ"ń„€…§ķi! –\ Ä$x"²Ÿ$x"°#x!²Ÿ” Ō'$$x"£Ä#x!³Ō##x!£ÄŠ$$xīÄ##x’!£ķ¢Ä ĖÓ&³Ō %‚€Rė’jŠ&ąn&²Ō %‚€Vė’ŠP%‚€Zė’jkli!$³Ō,&›O!×xh# ± k#Ō "ķj%" €0¢Č&›O!×xn!īiŠĻ#Ō%"Ȋ%‚€^ė’–“†‘K7‚€Qė’dcp$$¢l#³ń $ķl’#¢ķk$³ń’$¢ķlįjm%ńdcĄKe‘M"ķjŠļ"€djmįi%ńdce‘M!ķiŠļ#€<h f‘Nf§³ń ‚€_f€’” 7fė’‚€`7€’” !f‘Nf§³ń ‚€af€’” f˜7€’” ‚€b7€’” "f‘Nf§³ń ‚€cf€’” f˜7€’” 7¤€‡–€†L€‘K7‚€Qė’›D É`‘N`§³ń ‚€d`€’” 7`ė’‚€e7€’” ›DÉ`‘N`§³ń ‚€f`€’” `˜7€’” ‚€g7€’” ›DÉ`‘N`§³ń ‚€h`€’” `˜7€’” 7¤€–€€g‘K7‚€iė’7 Č7i–…€`„€¬’`§Ņ‘DŠ`§¤€ƒ–€‚į€7§³ń‚€j7€’7§ķ” Šč‚€k7€’” ­īą`‘N­³ń ‚€l`€’” ‚€m`€’” `˜7€’7§ķ” –€€Õˆ‘K7‚€Qė’g‚€nėh„€‰óĢĻńh„€‰„€‰óćōl„€‰ó’ĢĻń„€‰ó¾j„€‰ó"ĢĶŌ"7‘Nl$åÕ~k„€‰óĢĻń0„€‰ó€%p ĀĢĻń„€‰ĢōŠ„€‰ó#£p ĀĢĻń#īkŠźŠ„€‰ó#p ĻŌ#ķkŠļ#£i!€%¢³ń„€‰„€‰ó€%p Āō!€%¢iŠā!³ń„€‰„€‰ó!įp ĀōŠ„€‰„€‰ó!p Ćō„€‰„€‰óņ€Ą‘Eō„€‰óp ĻŌ„€‰„€‰ó ĢĆņ€Ą‘Eō#ķkŠÜe„€<‰ó ĢƑEō„€‰ó ĢeóĀĮæig!€0¢Čg˜7€’” „€‰eóō„€‰óĢĻńČ77§§€0Ņ 77§” Šķ#¢²Ÿ#³Ÿ7§#£¢²Ÿ” ŌOŠQ#³ń#ķk‚€o7€’” Šź#7§²ń 7¤ „ 7˜€’” „ ‚€p€’” „ 뒊Ł#7§³ń ‚€q7€’#ķ” 7§Ņ 7‚€rė’Š Ō ‚€s7€’” 7¤€‹–€Š ƒc„€„¬’‘K7cė’c§ji!"²Ō7!§h €a³ €z²”Ō7! € £Č!ķiŠą7¤€†–€…P ††óć́É'ĢĆĄō††ó̆óĢƑEĀĮō`†óĢĆō–Ń bóĢĪŌVa`p!ą ą¢h Ņ5š‚€tw šb” šw bbóćōbóĢĶńŻbóĢĪń bbó ĢĆōŠšŠb 'Ģōbbó'ĢĆōŠbóĢĻŌ bbó ĢĆōŠš†bóĢĀ‘Eō–å €`„€¬’‚€‘J–€‚ Ó€ ‘DŠ‚€” ‚€ˆ” ‘IŒi–f bfó” ō`fó” ō`óĢĻńįlŠlbóĢĻńįmŠm%$Œm`óćņ€ ĀbóćĪŌ „ %Ģņ€ĀōŠ„ bó`óĆō–± „€„„¬’c„¬’„€„§ic§h! ¢j"€’²ń‘Dj‘K7„€„ė’7"Č"²ńc7!ķ p7¤–Ļ j`óĢĶń`óĢĻńįjŠj–ś 2i!~Ō!ę‚!ē!ę vh Ó€2p¢„–y 2k#ē$Ä%#ę Ól‘P#ē Ä#ē %Ä#ēÄ#|Ś#|Ś Ō&#ę‚#ē#ę vhpj"° ± Ō#ē Ċ(#Ō$#zŅ#ę #}²ń#ē#ę Ä#灁p#ē ĖØ 2h ē ę!¢Ä ę³Ō ę ꁍ¢ ꁏ‘Q–] 2h |ŚŌI zŠ@š!w ēšwĊ1š!w ēšwĊ! ę‚x§Ä ę‚w ē ę‚wĊրŠ] ę Ō ēÄ!€ Ċ2! ē ę§Ä ēÄ!x Ņ ēÄ!€ Ä‘RŠ!xŅ‘R!‘SŠ‘R!xÓ¹ ē ę§° ę å”Ō‘RŠź–w 2i!ęń`‘SŠö!ē!ę Ė€ ‘T–Š 2ęh–Ģ 2h |ŚŌ" zŠš!vŠ ę‚x!Č ę‚wŠր•Š ē ę!Č ēÄ‘R–į 2zŅšwŠ ‘W–ī „0„–D k„"Ņ‘ŠC"Ņ „1„Š3˜h4i!˜± ˜°”Ō!y"Ņ!hŠ!ziŠé ˜Ņ „0„"„kŠ"„ x„–’ 2i"‚€Qė’!zŅ#š"€’w šw ‚€œ"€’"§ķ” !ēĊ!ęń`‘S""§ķČ""§ Ȋé–%„išē"Éh2m%|Ś%|Ś ń„‹j%z±ÕQ%ę°ÕG%ē %ę Ä%ę Ō€"„%ę²Ÿ%z°%z° ”Õį%ęŅ%ęnk#&²Ō € ‘W#ķkŠņ%ę%ę‘/%ē€˜‚€Qė’kl$å՚#%ę³Ō0šbw "€ °šw”ŌlŠ " Óš!v%ē$Ä$" ° ŌҊb‘S‘Vl$ńV" Ņ9#Ņš!v%ę%ę‘/Š"š vš€ vš v%ē€˜#” #īkŠ#ķk‚€%ē€˜€’#” %ē€˜#"ȋa’‚€ž%ē€˜€’#ķ” Š%ē€˜Y%ēÀŸ%ē€˜€’%ē€˜§ķ” %ē€˜%ē€˜§ Č%ē%ē€˜§Ä%ē%ę%ę¢£ÄŠ%ę %ę³Ō %ē Ā"„–Aš`w ‘K7‚€ ė’7 Č7j–O‚€”‘J– „2i"!{!ę £²ń„Š6"²ń1!ę£h" ³ń"h!ē!ę$# p!ē !ę ¢Ä ‘R# ¢k" £jŠŹ–‡¤€Š2¤€‡‡€‰‚€Qė’‡€‡z±Õ3‡€‡ęh‡€‡|Śń& ²‡€‡ę å”Ō‘U‡€‡ē怇ēđ‡€‡ęhŠŚ Ņ%‡€‡|ŚŌš‚€„w šw¤€Šp‹Ó Ņ ‡€‡ēċŠī€ ‡€‡ē€˜pķk‡€‡ē€˜#§€"Ņ#ķk€"mŠ€,m# #£%‡€‡ē€˜#p¢i!#²ńn%€"Ņ+!īj‡€‡ē€˜!§€"Ó€$„Š! !£€,‡€‡ē€˜!p¢iŠ!ī!ဠ‡€‡ē€˜!īp¢j"#£ķl$‡€ˆ²Ō‡€‰$ȇ€‡ē€˜#‡€‰$pŠ„¤€Š‡€‡ē€˜!”  !£h‡€‡ē Ċ$f‘Zf§lf$‘Z$‡€ˆ²Ō f‡€‰$ķpŠ„–€‰£¤‡Ģō2¤‡zÓb„€ƒ€ž‘i!¤!ń€!p„€ƒ‚€QčŌ,‡|ŚŌ!š‚€®w šw‡ēĤ€!pŠ„€ƒ‡`‘L Ō‘D¤Šb‘Zb‡p–é‚¤€„2zÓ(`‘!Ō`ó恒ĢĪŌ ‡€ƒ`óæÄŠ‘D¤€„Ф€„Šb‘Zb‡€ƒp–€ƒõ ‘!i–K‚¤€…2i!zÓ8!棇€ƒ³ń!棤€ƒ‡€„!ē€˜˜b‡€ƒ” bė’!ē€˜‚€Qė’!ēĊ ‡€„‡€ƒ‘¤€…–€„¾i2h zÓ] ę²ń ē€˜§€ Ņ ē€˜”  ē ęīĊć ę²Ÿ |Ś”Ōš‚€¶w šwi€$p ēđU ēÄ ēĊ ę ķ‘7–„2j#"{"ę £²ń„Š=i#²ń6"ę£h# ³ń#h$!"ē"ę p"ē "ę ¢Ä ‘R! ¢i# £k"ēĊŖ~„2h |Ś |Ś  |Ś ń„ŠE zÓ. ę²ń‘D ę²ń‘U ēÄ ē‚€Qė’ ē€—Ä ēĊ ę ę³Ō ē Ā!„–„2h zÓ‘X ēÄ ę ę³ń ē ęķĊ–ę2zÓ52i#²ń,#ī!ęķk#!ę³ń‘\#!ę£jh "²Ō € ‘W ķhŠņ!ē#Ċ–2Šb‡€ŒÅ€ˆ¤€‡€‹"²Ō3„ ‡€‹§i€ h‡€‹ķ"²Ō„ ‡€‹ķ§h!€#° €#°!€+°!€-° ” Ō¤€–€ŒŠ‹c‡€Å€ˆ¤€Ž€ j€ i€ h‡€Œ#²Ō„ ‡€Œ§j‡€Œķ#²Ō„ ‡€Œķ§i‡€Œ¢#²Ō „ ‡€Œ¢§h"€<Ņ c‡€Œķ^¤€ŽŠ?"!°"ƒ€¾Ś”Ō'"€*° €$°”Ōc‡€Œ¢^¤€ŽŠ c‡€Œ¢^¤€ŽŠ c‡€Œ^¤€Ž–€ˆ`‡€‹Å€ˆ¦‡€‰‡€ŠÄ‡€‰x ²„ ‡€‰x§ƒ€ĮڔԄ ‡€‰x§€#Ņ­ķ¦‡€‰‡€‰xķÄŠĶ–€‹l"#Ä$i!ēÄ"x!x²Ō5!ē"x§h""xķÄ €+Ņ!ēĊ €-Ņ!ēĊ""xīÄ$"x"ļ`!ē­Ė›$i$#"ļa"xh !x²Ō!ē"x§€.Ņ$ ķ"ļ`!ē"x ķ£Ä–ā&k$%Ä$x#x²Õ3%i#ēÄ#ēÄ#ēÄ#ēÄ#ēÄ#ē%§h €*Ņ'#ēÄ#ēÄ!¢i#ē!§€$Ņ#ēÄ!ķi&!$b‹Ž €$Ņ/#ēÄ#ēÄ&!¢$b$x#x²Ō#ē$x§€-Ņ $$xķÄ#ēċŖ €<Ņ2#ēÄ&!ķ$b$x#x²ń‘DŠ#ē$x§€>Ó‘DŠ $$xķÄ#ēĊs&!$a$xi$x#x²Ōd#ē$x§€.Ņ&!ķ$`#ēÄ#ē$x!ķ£Ä$xi€^h €^Ņ!#x²Ō#ē!§hŠ€ h!ķiŠå!īi!$x£Ņ#ēĊ !$x£Ņ#ēÄ#~Ó$!Ä#ē$x%£Ä–$#"‘_!"xÄh!x$x² å”Ō$!x‘]ń!!xķĊhŠć–_‚‡€„怄‡€„xķ怅‡€„x‘]i!‡€„x‡€…x³ Ōß!ń ‡€„‡€…xķ怃‡€…ē˜b‡€„xī” bė’–€…Š„€‹‡ė’‡§¤€ƒb‚€Qė’‡ŒxŅ „€ƒ‡Œb‘d‡Œx‡€ƒ²ń ‘\„€ƒ‡Œb‘d„€ƒ‡Œxa`‘c!‡Œx£‡‹§²ń‚€Ä‡‹€’‡‹§ķ” ŠŻ!‡Œx£‡‹§³ń‡‹‡‹§” Šäb˜‡‹€’” ‡˜„ !< !£” „ ˜‡‹€’‡‹§ķ” ‡Œ ˁ3 +‚€Qė’c‚€Åė„óĢϟ¤ „„óćō,ī¤ /¤ )~Ó)} ŚŌ)ē)īÄj„óĢĻń3„ó€%p ĀĢĻń „ĢōlŠ„ó"p ĀĢĻń"ķjŠķ£"£lŠ„ó"p ĻŌ"ķjŠš"£l$³ń„„ó$įp ĀōŠ „„ó$p Ćō„„óņ€Ą‘Eō„óp ĻŌ„„ó ĢĆņ€Ą‘Eō$ķlŠß„óĢĶŌnŠ$)£¢n)}Ņ(Ō +‚€Ęė’Š+‚€Ēė’,ī¤ Š)}Ņ(Ō +‚€Čė’Š+‚€Éė’,ī¤ )~Ó&ąm%€d³ŌoŠ % ³ŌoŠo)~£¤ j"*²Ō*')~£²ńc€*Ȋ c% €0¢Č% mc˜+€’” "ķjŠŃ&³ń c‚€ŹėŠc‚€Ėėc˜+€’” ‚€Ģ+€’” ,)~£¤ )~Ó)£l){$¢³ń„„ó){$¢įp Ćō„„óņ€Ą‘Eō„óĢĻ){³ Õƒ)ē,§ƒ€ĶŚŌ%)ē,§€,Ņ †˜+€’” Š †˜+€’” ,ī¤ ŠĶ,ī¤ ){$¢²ń‚€Š+€’” Š,`„ó ĢƑEō„ó Ģ`óĀĮæjc"€0¢Čc˜+€’” „`óō)ē){īċo’)| ŚŌ †˜+€’” (Ō&)}Ņ‚€Ń+€’” Š)}Ó ‚€Ņ+€’” Š)}Ņ ‚€Ó+€’” +§)z²ń%+‚€Qė’)z¤ j"*²Ō‚€Ō+€’” "ķjŠźŠ-c€ Č)|ŚŌc€*Č+§ķ)z¤ j"*²Ōc˜+€’” "ķjŠķ–Š „‹„‚¬’„€‹„‹ė’„‹§¤€ƒb‚€Qė’‡‚ ‚€Qė’‡‚ xŅ „€ƒ‡‚ b‘d‡‚ x‡€ƒ²ń ‘\„€ƒ‡‚ b‘d„€ƒ‡‚ xa`‘c„€ƒ„‚ ó!‡‚ gb˜‡‚ €’” „‹˜„ ! !£” „ ˜‡‚ €’‡‚ §ķ” ‡‚ Ė‚k2k#|ŚŌ1#zŅ š%˜w Š %§lj"$²Ō#ę‚x%"§Č#ę‚w"ķjŠęŠY#ēÄ#ę%§¢³ń%#ē#ę%§p%§‘RŠ2#ę£i%#ē#ę!p!‘R%§!£h%!ķ#ē#ę p#ēÄ ‘R–¾2¤‡z±Õ$‡€’Ņ‚€Õ‡€’‡§ķ” ¤‡§k‡ę²ń2‡ę퇁ę£i‡ę!²ń‡ē!Ä#‡ę²ń ‡ęk‡#ȇę#¢‡ę²ń‘\‡ę²ń‡ę¤‡²ńA‡#£h ³ń ᇁķ‡Œ ¢h ‡Ņh# ¢€’²Ō‡#ķ € p# ¢k‡#ČhŠh‡i ²ń‡zŅ š€ vŠd € pd Čdi# ¢j‡ē‡ę"¢Ä‡ē‡ę"£Ä‡ę³ń‡ēĊ‡„€…‡§ķp„€…‡§ķ‘[–ļa„€ƒ¬’2h zÓ ē§Ó ē 瀗a‘e¤€‚a‡€‚‘h–€„r„€‚‚€Qė’2¤‡zÓ[‡ē§Ó‡ē˜„ó‡瀗„€‚‘f„€‚‘hŠ2„ó‘h„óĢĻŌ ‚€Ö €’” ‚€× €’ §ķ”  ‡‘hŠ „apa‘[–02¤‡z±Õ˜‡ē§°Õ‡`‘N‡³Ō```§p``§ķČ`€ ȇz°‡ę°”‡°”‡ę¢‡ę²”Ō%``§ķ€ p`Ț`˜w ‡ē‡ę¢ÄŠ``§ķČ``§€ Č`‡‘hŠ ‡̇‘(Š„„€p„€‘[–=aó ‘(–ļƒ2¤€ƒ‡€ƒzÓG‡€ƒę‡€ƒęŅ ‘X‡€ƒēĊ'‡€ƒę‡€ƒę²Ō€ ‘W‡€ƒē‡€ƒęķÄŠį‡€ƒę‘/‡€ƒēĊY‡€ƒ{‡€ƒę £i!²ńA‡€ƒŌ!‘RŠ6!€’²ń€’hŠ!hb p!²ńb ‘[‡€ƒ{‡€ƒę £i!€’²ń€’hŠ!hŠŻ‡€ƒę ķ‘7–€ƒ 2h zŅ ēÄs ę‘/–) 2h ē!ąÄ!³ń ēĊ ēĖ8 ‚€Ų‘&–F `p$ ¤ – 2h"ī ęķj!³ń! ęi! ę²ń zŅ‘X! ę£iŠź zŅ!ī"ī”  ē!Ä ē"Ė® a„€‚¬’2zÓ2h ēaė’ ē€—Ä–€ƒ½ ‚€Ś‘J–Ė ‚€ą‘J–ō Ņˆ ” ­ę‚­ įtŠ ­ę‚˜įt–!!x5Ä!x„ ˜Ó! Ä!xē!xyķÄ!x„–-!!„ ˜Ó`˜ļk€3p–Ā&„„€”¬’„‡€ ³ń˜l‡€Ÿ³ń˜l4i!˜Ó!y‡€£Ņ ˜lŠ!ziŠź5˜Ņ `” Š5h5x„ ē〣„ „o„˜„„„„t ń€# l„‚€ęčŌ„‚€éė’„‚€īėŠj„§€#Ņb„‚€ņčŌ „‚€ōėŠN„‚€ųčŌ „‚€śėŠ:„‚€’čŌ „‚ėŠ&„‚čŌ „‚ėŠ„‚ čŌ„‚ ė„‚č„‚č „‚č „‚č „‚ č ÕŚ ¤‡€žŚŌ l‡€ž€ ŪǤ€ž„‚$čŌ¤€ ¤€Ÿ‡ē怞ŪǤ€ž‹1„‚)čŌ1‡€£Ó`0kŠ"šę%¤€ šę&¤€Ÿ‡ē怞ŪǤ€ž‹ö„‚-čŌQ‡€£Ó`1kŠ@¤€ €„¤€Ÿ‡ē怞ŪǤ€ž 炁-” j‡ę‚„˜tpn& Ņ`0k‹›„‚1čŌE¤€ €’¤€Ÿ‡ē怞ŪǤ€ž 炁-” j‡ę‚„˜tpn&Ó&€2¢ lŠL„‚4čŌB¤€ ¤€Ÿ‡ē怞ŪǤ€ž 炁-” j‡ę‚„˜tpn&Ó&€2¢ l‡ē‡€žĒćēćē ćē ćēć燀ŸÄ‡ēć燀 Ä‡ēćē‡ęćēćē‚€Qė’‡ē€˜‚€Qė’‹m ¤ ē‚€(” j‡ē‡€žŚ‡€žŚå”ćēĒćēćēćē ćē ćēįćē įćēćę‚„˜tpn‡Ō& ҇悄˜tpnŠ lŠi‡€žŚŌa‡ę‚j‡ē‚€(” j‡ę‚„˜tk"‡ē#vm‡ę‚‡ē#vl$Ó ‡ę‚t€< l#ķk%ÓČ"tpn&Ó&€2¢ l‡€žŚåÕ¾‡ēćēćēćēćēćē 怟Ņ€P¤€Ÿ‡ē‡€ŸÄ‡ē‡€ŸÄ‡€ Ņ€¤€ ‡ē‡€ Ä‡ēćēćē‚€Qė’‡ē€˜‚€Q뒇燀žĒ怞ŚŌ#ī‘QЇę‚ēÉŅ‘QŠ‘Q‡Ō‡ēp‡ēċž‡ē怟ҁ¤€Ÿ‡ē‡€ŸÄ‡€ Ņ€¤€ ‡ē‡€ Ä‡ŌP‡ēķp„ ‡€ŸĢō„ ‡€ Ģō„ „ ó„ óĀĢĮĢĆō‡ēÄ„ ó¾¤m%‡²Ō ‡ē %đP%ķmŠķŠ ‡ēćē ćē ćē đQ‡ē‡€žĒÄ6˜Ņa” Š6i6z„!燀£Ä! Ä!ē4Ä!„–€£ '˜„˜„˜„‚8€P€ Ē‘32„‚=€„€ Ē‘32„0„„0ęī0ęī” –X'‚b„€ƒ¬’b§i!²ń7†‚Bė†b§Č!²ń#†‚Cė†b§Č!²ń†‚Dė†b§Č–€„ („˜h4ij!˜ŅjŠ!y&ŅjŠ!h!zi"Ōē&Ņ„‹!˜Óz!x„&„ ˜Ņ!z„Š ē!zÄ2yŅM‘P%Ņ 2ę‚tŠ62z°2}å”Ō%2ē 2}ķÄ2ēālk#$²Ō 2ē#Č#ķkŠļ‘P2ę‚t25Ä2„Š2ē2yīÄ=!ē6Ä!„Š„–E(4h ˜Ó+ x„ y„2|Śń ‘P2ę‚tŠ 2zŅ2ę‚t zhŠŃ–S(‚E‘J–ƒ)„2k#zÓZ#|ŚŌ„ŠK$Ó „ŠB3Ó>#ę‚ēÉŅ‘QŠ‘Q#ē Ä#ē Ä#ē Ä#ēÄ#ēÄ#ēÄ#ē€˜‚€Qė’‹Å#ē Ä#ē Ä$³Ÿ$#ę³ Ō,#ē Ä$#ę²ń#ē Ä$#ęÓ„$³ńl$#ę²ń#ęl$’#{³ń$#{Œj"i"hŠX$#{Œ$#{Œ¢$#{€@Œ$#{€@Œ€@¢¢i$#{€ Œ$€ Œ#{€ Œ¢h! ‘Q#ē Ä#ē $Ė”)€`„€¬’¤€ƒ–€‚ß)j!Ņ šwŌjŠ1!³ń*j4h ˜Ó" y!Ņj xę Ō xę ŌjŠj˜hŠ zhŠŚ–*„`"Č`"Č#Ó !x`¹ń „!x`Å–*…h–=*bdó ĢƑE ĢĀō`dó‘Eō`óbóĮæn–n*¦`bódó” Āō`óņ€Īńfņ€ō¦‘DŠf`óō–½+„ óĢĶŌ„ Ģō‹9„ óĢĶŌ„ óĢĻŌ„ ĢōŠ ‘D„ ņ€ ō‹„ óĢĶŌ„ Ģō‹„ óĢϟ՜bĢō„ ó’ĢĪń8„ óįĢĶŌ„ ónŌbįĢōŠbĢōŠ‘D„ ónŌbņ€#äōŠbņ€&ōŠT„ ó„ ó¾ĢĶń‘DŠD„ ó¾l$²ń#b„ óä„ óoō&Ō bbó” ō$ŌbbóäōŠ$įom%'²Ō bbó„ óĆō%ķmŠīŠb„ ó„ óoō&Ō bbó” ōbó恒ĢĪŌ9„ ó恒ĢĪŌ.„ ó’ĢĪ„ óĢΟ”Ō„ ó¾Ģ„ óĶŌ„ ó¾Ģ„ óĶŌbbóæĢō„ bóō– Ī+dbó`ó‘>ō–ē+d'Ģōb&Ģō„ dóbó‘>ō–ņ+b`óō–ü+b`óō–,`óæj–,a Ģō–s,ecóōcó¢p Īń€EpaĢōcóć@ĢĻŌacó@ĢƑEōccóaó@ĢĀĮōcóĢĻń cóĢĮ¾hŠcó¾he Ģaó@ĢĀĄō–±,„„=…²Ō† =×€€” =ķ„Šź„†Ģō„‘m‘+‚K‘F”‘5– ''’’’’’’’’''''’’’’’’’’’’’’ž’Ø"’’''''''''!Compiler/Library Version Mismatch> NOT YET IMPLEMENTED’’’ -327688- 00:0:00/0/0 0.-E 00.0-ENTER RANDOM NUMBER: RUN PROGRAM,BLIBB BLIB,FILEOPSS½’Ļ’į’ä’ķ’ķ’ 0  0ISTART2NOT ENOUGH INPUTTMISSING NUMBERRTOO MUCH INPUTT  > - -+EP0<-+*,  ? FILE CREATE FILE DELETELP011PRINTER::PRINTER#11CONSOLE#22KEYBOARDD#66PRINTER#77REMIN#88REMOUTTCONSOLEPRINTERKEYBOARDDREMINREMOUTTKEYBOARDDCONSOLEPRINTERREMINREMOUTTCONSOLE::PRINTER::   SETFILELOCC$.,!d|hė 8 œ ² Š s ø ’ k Š õ  Į a Ŗ¤hGB>1ÖæjE0Ē_: Wˆ Qūöį9é [ņĶÄ,% Æ™aZI%ś”›ś<ā ( ż÷ŽŌŅ£•ĖÕ sy5 62õėŖŒms6)Żlä$“•…v™m<o*** HEAPOPS GOTOXY EXTRAHEA STRINGOP REALOPS PASCALIOEXTRAIO FILEOPS SCREENOPCOMMANDI œUTELETALKREMUNIT RAWCONSO  €€€Ė( ® 2Copyright 1979 - 1983, RB&A. All rights reserved.TELETALKJUnm%&²Ō št%ķmŠńuš‚€t štštš‚€t š‚€t š‚€!t š‚€$t štštš‚€)t štštš‚€@t sh ā¼ā¼Ūƒ€PŪŚŌź ŅpŠ €3ҁ,iЁ°iš!tšt „štš‚€Tt šī€A¢vš‚€Xt štbcs"ńp!‚€ads$Óp„„† ā¼ ā¼Ūƒ€kŪĒŽ† ⼃€sŪĒŽ–Ā,švštsń š‚€{t ss Ō÷sń1b‚€‚ėPb§¤,h ‡,²Ōšvš€ všv ķhŠßŠ sišt‘–,ŗį †‚£’p¢¤„‡„³ń#†‚£‡„„‚‡„£p†‚£‡„‡„£p†‚{†‚£6vÓ3štšvš‚€‰t š†„£˜t sŌ sŅp톂{`6vÓ3štšvš‚€”t š†„£˜t sŌ sŅpŠæ`†‚£¹„Õp’6¢„„‚†‚£‡„£p‡„£„–„ź"§ih !²Ō" §ƒ€ŸŚŌ " " §€a£€A¢Č ķhŠŽ–C7°†‚£7ī§ ± Ō †‚£7 Č7턆‚£77£p‘†‚{wpÓ!švš‚€§t š†„£˜t št–»,š‚€·t št1Ōwš‚€ŗt š†‚R˜t š‚€Ät sh €y° €Y° Ō$†*w„š†‚R˜t š‚€Ėt štŠ!švš†‚R˜t š‚€Ļt št‹ēš‚€Õt š†‚R€Pt št †‚R§²ń~†‚RR†=‚R§§€.҆‚R†‚R§” Š+†‚R†‚R§§€:Ó†‚Ria†‚R˜€P” a‚€ą€U” aėP†*†‚R˜wpŅ#„„„š†‚R˜t š‚€ćt št†‚R§°p° ÕO’†‚R§³Ō(†‚R˜a†‚R§£” a‚€ēčŌ†*†RįvӁ„ –,(,š‚€źt št2Õњ‚€īt š†„£˜t š‚€łt sh €c° €C° Ō!ļ„š†„£˜t š‚t štŠ~ €p° €P° ŌN†‚{wpŅ„š†„£˜t š‚t štŠ!švš‚ t š†„£˜t štŠ%š‚t š†„£˜t š‚!t št‹š‚'t š†„£€Pt št †„£§²ŸÕ†„£ļ†„£†„£§§€.҆„£†„£§” Š+†„£†„£§§€:Ó†„£ia†„£˜€P” a‚5€U” aėP†‚{†„£˜wpŅzšvš†„£˜t š‚8t sh ƒBŚŌ"†‚{wš†„£˜t š‚Jt štŠ.†‚{w†„£‚NėPš†„£˜t š‚Ot št p†‚{†„£˜wpŅ„š†„£˜t š‚St št†„£§°p° ÕĒž†„£§³Ō<†„£˜a†„£§£” a‚WčŌ †‚£p†‚{†‚£įvÓ„Š„„–,ɚtštš‚Zt štš‚wt štš‚”t štš‚Æt štštš‚Ćt s„5¼ƒŅŪŚŌķ5€ ²Ōš‚Śt š5tš€)vŠš5všt–štštš‚Żt s„5ƒļŚŌń5Ņp5Š „Š „Šļ Šց÷–Žš‚‚!t št2Ōļ„1ŌV†*wpŅ*„š‚‚$t š†„£˜t š‚‚+t štŠ!švš‚‚/t š†„£˜t štp– gš‚‚=t š‚‚Rt sh Ņ€GhŠ ƒ‚cŚŌ €a£€A¢h ƒ‚kŚÕ€ Šxš‚‚qt štŠiŠe Ša Š]š‚‚st štsŠI„š‚‚vt štŠ4p"„š‚‚zt štŠp"š‚‚„t štА Šւ‰Š švšt €G°Õ-’– ††‚{†ƒ§įw†*†Vįw‘Õ’sń‘sŌ?s„05Ņ„0† ŠŚŌš0v20†ŠŚ”Ō†‚£70Č7’³ń7ķ„Š‘‹±„sŌs„10° Ō št‘„‹‰14å”Ղ3²ń € „3ī„Šs8³Ō8†*†RįvŅ„ Š"†*wš†‚R˜t š‚‚¬t št„Š4†R8§„8ķ„ 3³ń0€ £„3³ń„„Š0Ņ į„„Š0 °„0Ó0s‹żž†‚{w†*w–( R a n d y ' s T e l e T a l k e rr 4.1bb of 21 Jul 83-Copyright 1979-84, RB&A. All rights reserved.BaudRate: 1(200, 3(00, ?  for option menuFlowIn,FlowOut,Mask’’’’’’’’’’’’’’’’’’’’’’ LOST CARRIERR LOST CARRIERRDisk write error on Disk reread error on ’ž’I/O error closing receive file SenddCurrently Sending Close it ?  Closed Left opennSend what textfile ? .TEXT Opened.TEXTRecorddCurrently Recording  C(lose, P(urge ?  Closed PurgedError closing received file Recording to continueddRecord as what textfile ? .TEXT Exists, P(urge ?  Purged Savedd Opened.TEXT9 For a mail system other than Telemail or MUSUS, you must8 define the "thaw" character. This is the character thatt5 is sent by the mail system in response to each input& sequence, (usually a line of input).  TYPE IN THE THAW CHARACTER::’žü ų xCHR((#T(eleMail, M(USUS, , or O(ther  Mt’ō’ł’ļ’ō’ł’ļExitt Receive file  SaveddError closing receive file (Options: G(o, S(end, R(ecord, W(hichmaill B(reak, T(haw, 7(, 8(, E(xit - ’ž’€¤GooBreakThawedd7 Cleared & Thawedd 8 Cleared7W’Ģ’ä’£’ł’…’›’—’·’Ÿ Finished ē–`¤w`ć­I ¶ STRINGOP FILEOPS EXTRAIO GOTOXY PASCALIOREMUNIT RAWCONSO    TYPE (CrDialResult = (CrOffHook, CrDialError, CrNoAutoDial ); (CrBaudResult = (CrBadParameter, CrBadRate, CrSetOk, CrSelectNotSupported); (CrWhoAmI = (CrOrig, CrAns); (CrState = (CrOn, CrOff, CrAuto); (CrRemPort = RECORD ,Part1 : INTEGER; ,Part2 : INTEGER ,END;   VAR (CrAttenChar : CHAR; (CrCurrentPort : CrRemPort;    PROCEDURE CrCommInit (Dir : CrWhoAmI; 6At>ten : CHAR; 2VAR RemExists : BOOLEAN; 2VAR DialerExists : BOOLEAN);  PROCEDURE CrSetCommunications (Parity : BOOLEAN; ?Even : BOOLEAN; ?Rate : INTEGER; ?CharBits : INTEGER; ?StopBits : INTEGER; ?Dir : CrWhoAmI; ?Model : STRING; ;VAR Rslt : CrBaudResult );  PROCEDURE CrCommQuit;  PROCEDURE CrPutRem (c : CHAR);  PROCEDURE CrAnswer;  PROCEDURE CrBreak;  PROCEDURE CrDial (Number : STRING; WaitChar : CHAR; VAR Rslt : CrDialResult);  PROCEDURE CrHook (OnHook : BOOLEAN);  PROCEDURE CrSetAddress (Port : CrRemPort);  PROCEDURE CrDelay (Tenths : INTEGER);  PROCEDURE CrSetDtr (Setting : CrState);  PROCEDURE CrSetRts (Setting : CrState);  FUNCTION CrRemStat : BOOLEAN;  FUNCTION CrGetRem : CHAR;  FUNCTION CrCarrier : BOOLEAN;  FUNCTION CrClearToSend : BOOLEAN;  FUNCTION CrRinging : BOOLEAN;  FUNCTION CrDialTone : BOOLEAN;  FUNCTION CrKbStat : BOOLEAN;  FUNCTION CrGetKb : CHAR;   IMPLEMENTATION ›REMUNIT ś[*a„+¬Pšrša˜r š‚€r ‘h ƒ€ ŚŌņš sšr ƒ€ڤ-–,††€®Č ҆€® pŠ †€®p–±†€®€ Č Ņ†€® pŠ †€®p–Ɇ€p$†€ē Éåh–ꆀp$†€h ēÉ ē Éå”i–’†€p$†€x²Ÿh–†€p$†€x²Ÿh–4` p4Ō `§€”iŠ`§i–F`!Č` p–X` p`§i–|$jh "²Ō”ki!#²Ō!ķiŠö ķhŠę–`Č` p‘ `p–æ3҆€p$†€h ē ÉåiŠi–Ģ„ ‘ –ć3ŅhŠ ‚€‘h–*a„-¬Pšrš‚€$r ša˜r ‚€,‘Ō‡+Ċ‡+Ä„–.” ŌB‘ 3Ņ9„šrš‚€:r :Ņš‚€Gr šrŠš‚€Or šrŠ+‘ 3Ņ$„šr:Ņ š‚€Vr Š š‚€kr –d/f„1¬P‡8„‡7„‡6„‡5„ ‡4„ ‡3„ † fė’† §mh %²Ō † §ƒ€tŚŌ† † §€a£€A¢Č ķhŠŪ‚€|† ˜t²Ÿ„a†€ŒÅK‡6ib‚€† ˜t²ŸŹb‚€ƒ† ˜t²ŸŹb ‡5£Źb ‡8Źb ‡7ʇ4ŅbʊbŹdŹ€€ap‡0Ė8¦$„ #„„p""p°Äp"""xp°”Ä"xԁ°‚€‡`‘!Ċ!˲‘ ‘ –Ć`"ņ`Å–Š`a‘–ņ€€†€Œp‘u‘€€†€Œp– ? [y/n] : @@Get a good Dial ToneePlease Dial : Did you Succeed in DialinggPhone assumed On Hook in Originate mode. Answer mode..)Phone assumed Off Hook in Originate mode.Answering Phone..’ž’MASKKFLOWINNFLOWOUTMaskkä „‚čŃg[wE0®ŪōĄāœÕL“ź*** STRINGOPEXTRAIO PASCALIO TRAWCONSOP=€€†p`†ÅaŹaŹ€€`p–ž‘š„5ē*É„5ē*Ź5ē)É„5ē)Ź5ēÉ„5ēŹrš„5ē*0Ź5ē)1Ź5ē2Ź€€†p– !***  Ō ± UTELETALKREMUNIT RAWCONSO €€€Ė( Æ 2Copyright 1979 - 1983, RB&A. All rights reserved.>ÓTELETALK%€nm%&²Ō št%ķmŠńuš‚€t štštš‚€t š‚€t š‚€!t š‚€$t štštš‚€)t štštš‚€@t sh ā¼ā¼Ūƒ€PŪŚŌź ŅpŠ €3ҁ,iЁ°iš!tšt „štš‚€Tt šī€A¢vš‚€Xt štbcs"ńp!‚€ads$Óp„„† ā¼ ā¼Ūƒ€kŪĒŽ† ⼃€sŪĒŽ s€As€Ts€Vs€1s€Es€1ssŌ€Os€Qs s–xį †‚£’p¢¤„‡„³ń#†‚£‡„„‚‡„£p†‚£‡„‡„£p†‚{†‚£6vÓ3štšvš‚€{t š†„£˜t sŌ sŅp톂{`6vÓ3štšvš‚€†t š†„£˜t sŌ sŅpŠæ`†‚£¹„Õp’6¢„„‚†‚£‡„£p‡„£„–„Ø"§ih !²Ō" §ƒ€‘ŚŌ " " §€a£€A¢Č ķhŠŽ–7°†‚£7ī§ ± Ō †‚£7 Č7턆‚£77£p‘†‚{wpÓ!švš‚€™t š†„£˜t št–y,š‚€©t št1Ōwš‚€¬t š†‚R˜t š‚€¶t sh €y° €Y° Ō$†*w„š†‚R˜t š‚€½t štŠ!švš†‚R˜t š‚€Įt št‹ēš‚€Ēt š†‚R€Pt št †‚R§²ń~†‚RR†‚R§§€.҆‚R†‚R§” Š+†‚R†‚R§§€:Ó†‚Ria†‚R˜€P” a‚€Ņ€U” aėP†*†‚R˜wpŅ#„„„š†‚R˜t š‚€Õt št†‚R§°p° ÕO’†‚R§³Ō(†‚R˜a†‚R§£” a‚€ŁčŌ†*†RįvӁ„ –,ę,š‚€Üt št2Õњ‚€ąt š†„£˜t š‚€ėt sh €c° €C° Ō!ļ„š†„£˜t š‚€õt štŠ~ €p° €P° ŌN†‚{wpŅ„š†„£˜t š‚€łt štŠ!švš‚€żt š†„£˜t štŠ%š‚ t š†„£˜t š‚t št‹š‚t š†„£€Pt št †„£§²ŸÕ†„£ļ†„£†„£§§€.҆„£†„£§” Š+†„£†„£§§€:Ó†„£ia†„£˜€P” a‚'€U” aėP†‚{†„£˜wpŅzšvš†„£˜t š‚*t sh ƒ4ŚŌ"†‚{wš†„£˜t š‚<t štŠ.†‚{w†„£‚@ėPš†„£˜t š‚At štp†‚{†„£˜wpŅ„š†„£˜t š‚Et št†„£§°p° ÕĒž†„£§³Ō<†„£˜a†„£§£” a‚IčŌ †‚£p†‚{†‚£įvÓ„Š„„–,‡štštš‚Lt štš‚it štš‚†t štš‚”t štštš‚µt s„5¼ƒÄŪŚŌķ5€ ²Ōš‚Ģt š5tš€)vŠš5všt–Ϛtštš‚Ļt s„5ƒįŚŌń5Ņp5Š „Š „Šļ Šցé–Lš‚‚t št2Ōļ„1ŌV†*wpŅ*„š‚‚t š†„£˜t š‚‚t štŠ!švš‚‚!t š†„£˜t štp– %š‚‚/t š‚‚Dt sh Ņ€GhŠ ƒ‚UŚŌ €a£€A¢h ƒ‚]ŚÕ€ Šxš‚‚ct štŠiŠeŠa Š]š‚‚et štsŠI„š‚‚ht štŠ4p"„š‚‚lt štŠp"š‚‚vt štА Šւ{Š švšt €G°Õ-’– =†‚{†ƒ§įw†*†Vįw‘ÕųsŌ?s„05Ņ„0† ŠŚŌš0v20†ŠŚ”Ō†‚£70Č7’³ń7ķ„Š‘‹±„sŌs„10° Ō št‘„‹‰14å”Ղ3²ń € „3ī„Šs8³Ō8†*†RįvŅ„ Š"†*wš†‚R˜t š‚‚žt št„Š4†R8§„8ķ„ 3³ń0€ £„3³ń„„Š0Ņ į„„Š0 °„0Ó0s‹’†‚{w†*w–( R a n d y ' s T e l e T a l k e rr 4.1bb of 21 Jul 83-Copyright 1979-84, RB&A. All rights reserved.BaudRate: 1(200, 3(00, ?  for option menuFlowIn,FlowOut,Mask’’’’’’’’’’’’’’’’’’’’’’Disk write error on Disk reread error on ’ž’I/O error closing receive file SenddCurrently Sending Close it ?  Closed Left opennSend what textfile ? .TEXT Opened.TEXTRecorddCurrently Recording  C(lose, P(urge ?  Closed PurgedError closing received file Recording to continueddRecord as what textfile ? .TEXT Exists, P(urge ?  Purged Savedd Opened.TEXT9 For a mail system other than Telemail or MUSUS, you must8 define the "thaw" character. This is the character thatt5 is sent by the mail system in response to each input& sequence, (usually a line of input).  TYPE IN THE THAW CHARACTER::’žü ų xCHR((#T(eleMail, M(USUS, , or O(ther  Mt’ō’ł’ļ’ō’ł’ļExitt Receive file  SaveddError closing receive file (Options: G(o, S(end, R(ecord, W(hichmaill B(reak, T(haw, 7(, 8(, E(xit - ’ž’€¤GooBreakThawedd7 Cleared & Thawedd 8 Cleared7W’Ģ’ä’£’ł’…’›’—’·’Ÿ FinishedźĘu?ƒV?(Ā • STRINGOP FILEOPS EXTRAIO GOTOXY PASCALIOREMUNIT RAWCONSO ?°REMUNIT G4+b„,¬Pb§ih !²Ō b §‘ ķhŠń–-‘å"²Ÿ”Ō‘ "īj!°‘”Ō‘0ŅjŠÜ‘Ō‘h €0³ €5²”Ō €0£kŠkŠk–±)`„,¬Pp" ‘‚€ ‘`˜‘‘ ‘‘ p"‡+‡*‘¤.–-ūh īh‚€ …€Æ‘i!Ó ‘ ‚€‘‘ !° ² ŌÖ!ŅjŠ‚€ …€Æ‘°j–&†€®Č ҆€® pŠ †€®p–Q†€®€ Č Ņ†€® pŠ †€®p–i†€p$†€ē Éåh–І€p$†€h ēÉ ē Éå”i–Ÿ†€p$†€x²Ÿh–µ†€p$†€x²Ÿh–Ō` p4Ō `§€”iŠ`§i–ę`!Č` p–ų` p`§i–$jh "²Ō”ki!#²Ō!ķiŠö ķhŠę–=`Č` p‘ `p–T3Ņ ‘°hŠh–w„ ‚€2X‘€"ŚŌ„Š„–ƒ3°åh–æT„,„W¬Pia‚€3ra„,˜€Rra˜X‘€#ŚŌ‡UĊ‡UÄ„–X Ō3ґԂ€5…€Æ‘Ņ„Š-3Ņ):Ņ‚€6…€Æ‘ŅŠŠ‚€7…€Æ‘Ņ„–ł/f„1¬P‡8„‡7„‡6„‡5„ ‡4„ ‡3„ † fė’† §mh %²Ō † §ƒ€9ŚŌ† † §€a£€A¢Č ķhŠŪ‚€A† ˜r²Ÿ„a†€ŒÅK‡6ib‚€D† ˜r²ŸŹb‚€H† ˜r²ŸŹb ‡5£Źb ‡8Źb ‡7ʇ4ŅbʊbŹdŹ€€ap‡0Äņ€‡6ĢĆsņ€Ā愀Ɩ8>$„ #„„p""p°Äp"""xp°”Ä"xԁ°‚€L`‘!‘Ċ!ĖG‘ –Y`"ņ`Å–j „€Æ`a‘–Œ€€†€Œp‘t‘€€†€Œp–’ż€’’’žÉ’’AT #E Q V X1 S7=60 S10=30 S11=36 S12=40+++#E Q V X1 S7=60 S10=30 S11=36 S12=40ADTTHOH11’ž’MASKKFLOWINNFLOWOUTMaskk/[B õŅ>!·«ŻĒ•€ž&bD,ģ!Œ’7*** REALOPS STRINGOP TRAWCONSOP=€€†p`†ÅaŹaŹ€€`p–ž‘š„5ē*É„5ē*Ź5ē)É„5ē)Ź5ēÉ„5ēŹrš„5ē*0Ź5ē)1Ź5ē2Ź€€†p– !***   “ ¢"u%ŻDUMP DIRINFO SYSINFO WILD #€€€€Ą< # (c) 1984 Sage Computer ³DUMP  '=G„*p$„*Ė×x²ń`„*Ė×x p–G{„S„|¬P‘š„S˜v pš`€Pv pšv p`§Ņ`¤*„*`˜€Pw„*‚€€Qw„*ėP`짤~–}¬ ƒ€ŚŌ €A£€a¢iŠ i–wX„*„Vį” †›į” ” Ž„*‚€ ” p„*„Wvp„*v p…‚d¤X¤W‡W‡X²Ō{†‚l†ƒ‡W€2Ėī×)čŌ\†›” ” Ž„*vpńD„*`€Pv p„*v p„*vpń*„*†›” p„*v p`†‚lčŌ†›†›Š” Žг‡Wķ¤W‹|’„*” –X”2b„/į” †0‚€” pb‚€” p†0…‚fķvp†0vp…‚b¤1i!‡1²ŌC†0†‹!€2Ėī×)˜v p†0vp†0†›(!€2Ėī׊ ” ” p†0vp!ķiж…‚d¤1h ‡1²Ōw¤0…‚b¤2i!‡2²Ō$†ƒ €2Ėī×)†‹!€2Ėī×)čŌ¤0!ķiŠÕ‡0ń6†0†ƒ €2Ėī×)˜v p†0vp†0†›%Š ” ” p†0vp ķhŠ‚b” –2,j…‚gm†‚l‚€ėP%l$$ę Ś”Õf†‚l$ēčńJ†‚l$ēėP‘†›Š”  ” Ō-š‚€v pš†‚l˜v pš‚€ v pšvp†›$ē É” ” ކ›†›Š'” ” €d$ēɌ” ” $ēÉ” ” ” ކ›Šį”  ” †›Š†›Š ” ”$ē ‚€1čŸ”Ւ…‚aķ„‚a†$ē˜v p†€:” p†$ē ˜v p†vp†€ ” p†$ęvp†€ ” p††›"Š ” ” p†€ ” p†vp†›"†›"Š$ę” ” ” ” ” Ž%~m%˜°Õƒž–°„‚cš‚€9v p…‚g„‚h…‚hh  ę Ś” ē§²Ÿ”Ō;…‚cķ„‚c†“…‚c€2Ėī×) ēėPš†“…‚c€2Ėī×)˜v pš€ ” p…‚h~„‚h…‚h˜Ņ švp–MV„*„Vį” „‚b„*‚€B” p„*†‚fvp„*v p…‚f„‚e„*vpń]„*vpńT„*`€Pv p„*v p„*†›” p„*v p…‚bķ„‚b†‹…‚b€2Ėī×)`ėP†›(…‚b€2Ėī׆›Š” ŽŠ£„*” –VB…‚ckh #²Ō_j…‚dli!$²Ō"†“ €2Ėī×)†ƒ!€2Ėī×)čŌj!ķiŠŁ"ń(š†“ €2Ėī×)˜v pš‚€Gv pšvp ķhŠœ…‚dki!#²Ō_j…‚clh $²Ō"†ƒ!€2Ėī×)†“ €2Ėī×)čŌj ķhŠŁ"ń?(š†ƒ!€2Ėī×)˜v pš‚€Wv pšvp!ķiŠœ‚€h‘‘€nŅp–ŌW„*„Vį” „‚d„*‚€p” pš‚€vv p„*vpńS„*`€Pv p„*v p„*vpń9…‚dķ„‚d†ƒ…‚d€2Ėī×)`ėPš€ ” pš†ƒ…‚d€2Ėī×)˜v pФšvp„*” –WÜ-¤…‚]‡.¢…‚`²Ō=‡/‡.Œ…‚]ppÓ‚€‘‘€yŅŠ×Šp…‚]‡.¢„‚]‹¬…‚]‡.¢…‚`£¤‡/‡’ˁ‡.‡£Œ…‚]ppÓ0š‚€v š„€Pv šv „ģ§‘€YŅŠ“Šp” u…‚fķ„‚fš” š‚€›v š…‚f…‚e£ķvš‚€¦v ‘šv ” u`€ p…‚f” „€P ” „§ī¤-¤‡‡-²Ō`‡’Ė„‡ķģ§Č‡ķ¤ŠŪ`„§’ĖČ`ppÓ0š‚€°v š„€Pv šv „ģ§‘€YŅŠĒŠp„‚]‡.‡£Œ¤‡/‡’ˁ‡Œ…‚]ppÓ0š‚€¾v š„€Pv šv „ģ§‘€YŅŠøŠp…‚]‡¢„‚]–/ , „Š„‹-į” ¤Š)`€ p„Ї‹%˜” p ” uš‚€Ģv pš‡‹%˜v pšvpu‡‹$” „Š,€P ” „Š,¤Š§„Ч„Š,˜€Pw„Ч‚€Ó€Rw„ЧėP„Š,„Š,§ģȅ‚_” „ŠU€P ” „Š~¤Š§„Ч‡‹%˜€Pw„Ч‚€Õ€Qw„Ч„ŠU˜€”w„Ч‚€Ö€¢w„Ч„Š,˜€ņw„ЧėP„Š~§¤Š§¤Š*‡Š*‡Š§²Ō`‡Š*Ė„Š~‡Š*ģ§Č‡Š*ķ¤Š*ŠŪ`‘ ‡‹$‡‹$  Œ£²ń ‡‹$ ķ¤‹$Ї‹$ ¤‹$‡‹$¤Š§¤Š*‡Š*‡Š§²Õł„Š` ‡Š)” p¤Š+‡Š)‡Š+¢¤Š)‡Š+°ÕÄ” š‚€×v pš‡‹%˜v pš€ ” pš‡‹$vpš€ ” pš„‹!Š ” ” pš€ ” pš†›"Š„‹!Š”  ” ” pš€ ” pš…‚]vpšvpš” pš‚€Žv pšvp†” pp`‡Š+‘ ‡Š*ķ¤Š*‹żž„Š” –‹% |H„„‚-į” `€ p„¦‚€ėėP†›%Š„}€P ” …‚f” „T€P ” „+¤Ļ„Ļ„¦˜€Pw„Ļ‚€ī€Qw„Ļ„}˜€”w„Ļ‚€ļ€¢w„Ļ„T˜€ņw„ĻėP„+§¤Ļ¤*‡*‡Ļ²Ō`‡*Ė„+‡*ģ§Č‡*ķ¤*ŠŪ`…‚]ppÓ0š‚€šv š„+€Pv šv „+ģ§‘€YŅŠÅŠp…‚]ķ„‚]†‚•‚€žėPĒ„‚j†” †‚•˜…‚j†‚gs„‚i„†‚•˜” †‚•…‚gꆛ"Š‘ †” „” –‚H”‚†‚” p†vpåÕń†„*€Pv p†v p†vpŌp†„Uvp†„V” p†v p†vpåÕ­¤S`„*ėP„*§¤Y¤T‡T‡Y²ŌN„*‡T짃ŚŌ(`‡Sģ€%ȇSķ¤S`¤Z„Z`˜€Pw„Z‚€Qw„ZėP`‡Sģ„*‡Tģ§Č‡Sķ¤S‡Tķ¤TŠ«„*`ėP†” Ē„‚j„*˜…‚j†‚gs„‚i…‚i±Õ”…‚i‹˜š„*˜v pš‚v pšvppŠuš„*˜v pš‚!v pšvppŠOš„*˜v pš‚*v pšvppŠ)š„*˜v pš‚2v pšvppŠց9„*¤Y„Y…‚gē˜w„Y‚@w„Y…‚gē ˜w„YėP…‚gę‡UÓ9š‚Av pš„*˜v pš‚Fv pšvp†” pp„*‡U„VŠ‘ †” ‹ž–€‚ˆ+†›"” ” Ž…‚dh„‚^…‚^ ²Õ憔 †‚•ia†ƒ…‚^€2Ėī×)˜€Pwa‚X€RwaėPĒ„‚j†‚•˜…‚j†‚gs„‚i…‚g˜Ó…‚h‘Š`…‚iŠXš‚Zv pšvpŠEš‚dv pšvpŠ/š‚mv pšvpŠš‚uv pšvpŠց|†” …‚^ķ„‚^‹9’†vp†” p–+o0`„-į” ‚ƒĒs„‚i‚‹‘‘€fŅ‚£Ēs„‚i‚©Ēs„‚i`‚®” p¤.‡.²ŸÕњ‚“v švš‚Ėv šv`‚Ö” †‚•‚ŽėPĒ„‚j†‚•˜…‚j†‚gs„‚i…‚g„‚h‚ą‘‘€y°¤/…‚h¤0‡0‡0ē§²Ÿ”ŌG‡/ń5š‚ķv š‡0ē˜v ‚ō‘‘€yŅ `‡0ē˜v `vŠ `‡0ē˜v `v…‚h~„‚h…‚h˜Ņ•`v`” `‚ł” p¤.‡.²ń#š‚žv šv`‚‚” `v`v`” „‚`„‚]„‚a†t †›%† ɀdŒ” ” ކ›%†›%Іɔ ” €d” ” ” ކ›%†›%Іɔ ” ” Ž`” –0?†0†‚\į” ††/į” ‘‘ ‘ †‚‚ ” p†‚•‚‚ėPĒ„‚j†‚•˜…‚j†‚gs„‚i‘‘ ‘†›¾†›"ЁX” ” ” ކ›¾Š†›¾Š…‚`”  ” …‚`” ” ” ”  ” Ō&†›†›¾Š…‚`”  ” ” ” ” ŽŠ†›†›¾Š…‚`”  ” ” ކ›¾†›¾Š†›Š” ” ކ›¾Š†›¾Š…‚`”  ” …‚`” ” ” ”  ” Ō&†›†›¾Š…‚`”  ” ” ” ” ŽŠ†›†›¾Š…‚`”  ” ” Žu ” †›"Š”  ” Ō(š‚‚v pšvp‚‚!Ēs„‚ipš‚‚)v pš†›"Š ” ” pšvpš‚‚4v pš†›"Š…‚a” ” X” ”  ” ” pšvpš†›Š ” ” pš€ ” pš…‚`vpš‚‚@v pšvpš” pš‚‚Mv p‘šv p” u„‚_‘X„‚]‘‘†0” p†” p‚‚b‚‚hs„‚i…‚iÓš‚‚mv pšvp†0” †” – ’ž’log.texttnewlog.text[*]]log.texttVolume has not been previously dumped..directory.texttVolumes on line: log.textt on line but no dump requestedd dump requested but not on line..Proceed (y/n)? dnames.textVolumes to dump::Write error, retry (y/n)? Write error, retry (y/n)? Insert backup volume  and press return..Write error, retry (y/n)? Write error, retry (y/n)? Transferring    Tra@nsfering Error reading input file.DUMPP  Write error, retry (y/n)? directory.texttdirectory.textt0h  error in file name volume off linee file not found misc. errorr’±’e’‹’×: The file # has changed size, exiting program.:== error in file name volume off linee file not found misc. errorr’Ń’„’»’ēdirectory.textt.Do you want a full or incremental dump (f/i)? dnames.textlog.textt dnames.text,This is a new dump using this prefix volume..Creating dnames.texttdnames.text[*]]=:=Dump all volumes (y/n)? Dump volume  (y/n)? log.texttCreating log.text log.text[*]directory.text[*]=:=No files to dump.directory.texttFile blocks to dump: Total blocks to dump:  block backup volume(s)..(Insert backup volume 1 and press return.. newlog.textlog.texttError renaming newlog.text.ĘMDœqp#¬ZOĮXJ! ½HEAPOPS GOTOXY EXTRAIO LONGOPS FILEOPS STRINGOPPASCALIOSCREENOPSYSINFO DIRINFO WILD   "uses $(*$U WILD.CODE*) wild; " "Type $D_DateRec = Packed Record 2Month : 0..12; 2Day : 0..31; 2Year : 0..100; 0End; $  $D_NameType = (D_Vol, D_Code, D_Text, D_Data, D_SVol, D_Temp, D_Free); $ $D_Choice = Set of D_NameType; . $D_ListP = ^D_List; $D_List = Record /D_Unit : Integer; { Unit # of entry } /D_Volume : String[7]; { volume name of unit } /D_VPat : D_PatRecP; { volume pattern info } /D_NextEntry : D_ListP; { Next entry in list } /Case D_IsBlkd : Boolean Of 1True : (D_Start, { Starting block of entry } 9D_Length : Integer; { Length (in blocks) of entry } 9Case D_Kind : D_NameType Of ;D_Vol, { Everything but D_Free } ;D_Temp, ;D_Code, ;D_Text, ;D_Data, ;D_SVol : (D_Title : String[15];{ File name } ED_FPat : D_PatRecP; { name pattern info } ED_Date : D_DateRec; { File date } ECase D_NameType of { # of files on vol } GD_Vol : (D_NumFiles : Integer))); -End; + %D_Result = (D_Okay, { Mission accomplished } 1D_Not_Found, { Couldn't find name and/or type } 1D_Exists, { Name already exists; no name change made } 1D_Name_Error, { Illegal string passed } 1D_Off_Line, { Volume not on line } 1D_Other); { Miscellaneous error } %  "Function D_Dir_List(D_Name : String; D_Select : D_Choice; ;Var D_Ptr : D_ListP; D_PInfo : Boolean) : D_Result; "{ Creates pointer to list of names of specified NameTypes $(D_Select), matching specified D_Name (wildcard characters allowed). In- $cludes information about pattern matching that occurred if requested $(by D_PInfo) } $ "  "Function D_Scan_Title(D_Name : String; Var D_VolID, D_TitleID : String; 4Var D_Type : D_NameType; Var D_Segs : Integer) : D_Result; "{ Parses D_Name } & "Function D_Change_Name(D_OldName, D_NewName : String; D_RemOld : Boolean) : D_Result; "{ Changes file name in D_OldName to name in D_NewName, removing already $existing files of name in D_NewName if D_RemOld is set } " "Function D_Change_Date(D_Name : String; D_NewDate : D_DateRec; ND_Select : D_Choice) : D_Result; "{ Changes date of directory or file name in D_Name to date specified by $D_NewDate. D_Name may contain wildcards } " "Function D_Rem_Files (D_Name : String; D_Select : D_Choice) : D_Result; "{ Removes file of specified name (wildcards allowed) } " "Procedure D_Lock; "Procedure D_Release; "{ Provide means to limit use of DirInfo routines to one task at a time " in multi-tasking environments } $ "Function D_Krunch (D_Unit, 5D_Block : Integer) : D_Result; "{ Collects all unused space on a volume around D_Block. This unit must $not be in use when this operation is performed. } $ @"Function D_Mount (D_File_Name : String) : D_Result; "Function D_DisMount (D_Vol_Name : String) : D_Result; "{ Provides a means of mounting and dismounting subsidiary volumes. $Wild cards may be used. } " $ "  {*************************************************************************} "  Implementation ” DIRINFO 9 D9H7›€Šß›€ŠŽ`įÄ2  „3ķ„–L3ī„3Ņ˜„†Ž–™jh% ģ§i!›ZŠŚŌ ##x Œ!€0£¢ÄŠj ķh $°"å Ō× °$°”Ō% īģ§€*Ņ#įÄj"n–sW„/„[¬Pk‚€„/˜ti!²ń!īiŠ„/§i!²ń¤] p!²ń‡Z„/˜e!teėP„/!t„/§ŅlŠ"‚€„/˜th °l$å ²Ÿ”Ō „/ ‡Y l$ńk$‡Z§²Ÿ”ŌJ„/‡Z˜e‡Z§£teėP„/‚€č„/‚€č Ō‡XĊ„/‚€ čŌ‡XĊ„/‚€ čŌ‡XÄ#¤]–\}[„3„`¬P‡_‚€ėP‡^‚€ėP‡]ć\Äik¤ oml!„3§²Õ®„3!ģ§j"€ Ņ(ńo„3!t‹’(Ō¤ 'Ō¤b‡_‚€ėP‡^‚€ėP‡\Äp"ƒ€ŚńIn"Š"%ŌmnŠ$ŌlnŠ!ŅnŠ !ŅnŠր&ń¤b‡_‚€ėP‡^‚€ėP‡\Äp"€a³"€z²”Ō „3!ģ"€a£€A¢Č!ķi‹I’„3§²ń„3ģ§€*҇_›@ėP„3t‚€3„3˜ti!²Ō‡_›@čń‡_›<ėP!Ņ„3tЇ_„3˜„ !īt„ ėP„3!t„3§²ńg„3ģ§€#Ņ^n„3§¤ h )²Ō„3 짃€4Śńn ķhŠę„3§³ńn&Ō‡_„3ėP„3‚€ėPФb‡_‚€ėP‡^‚€ėP‡\Äp„3‚€čŌ‡]ć_§²ńk#°„3§²Ÿ”Ō „3˜‡^‡\‡] k#¤b#Ó‡_‚€ėP‡^‚€ėP‡\Ėa¼+b„,¬Phi å!b§³Ÿ”Ō!!ķib!ģ§€%Ņ!ķiŠb!짃€8ŚŌhŠŌ ¤.–-ä+b„,¬Phi b§²!”Ō b ģ§€=°i ķhŠź!¤.–-\h$%ģppi!Ó ! ŅhŠhŠP%€MĖ× k#y±#y ±”Ōb%Äbs#ēɁŚ#ē§²”#ęƒ€@Ś”Ōšę$€Ė× #ēėŠh n–Ā-d„2¬Pkd§²ŸÕMdģ§€#°d§²Ÿ”Õ“jd"ģ§›ZŠŚi!Ō‡/‡/x Œd"ģ§¢€0£Ä"ķj!å"d§²Ÿ ŌÓ!ńkŠ@‡/xš€‡²Ō6šę‡/x€Ė× |Ō ‡4‡/x‘kŠšę‡/x€Ė× §²ńkŠk#°‡0”Ō/šę‡/x€Ė× ˜šę‡/x€Ė× ˜‡.‡0rh‡.xd§ÄЇ.˜Ä‹ˆhk‡/‡/xķĚę‡/x€Ė× |Ō ‡4‡/x‘kŠšę‡/x€Ė× §²Ōk#Ņ2‡1Ōd˜šę‡/x€Ė× ˜‡.‡0rhŠdšę‡/x€Ė× čh ‡/xš€‡° Ōƒ ŌkŠk#¤5–4}+b„0¬Ph‡3€MĖ× ę²Ÿb§²Ÿ”Յ‡/x‡3€MĖ× ę³Ÿ å”Ōn‡/‡/xķć3‡/x€MĖ× i!ē  ɀd҇-Ċ1!ēÉ҇-Ċ"!ēÉ҇-Ċ!ēÉ Ņ‡-Ċ‡-ć-x‡.ŚŌb˜!ē˜‡,‡2rh‹}’Ї/‡3€MĖ× ęÄ ¤4–3,c„1¬Pb‡0Å`u i!­Ä!ēšę­€Ė× ė!ē­Ä!ē˜Ä!ēšę­€Ė× |Ä!Ō9!ē ‡/Ä!ē‡.‡/£Ä!ē ‡3ć3Ó!ē cė!ē‡4Ä!ēbŇ3Ņ!ē‡-Ä­„x˜Ņ­„ Ċ­ē Ä ¦–4j(' Õš"lˆ^­„~ˆ5˜b­„€`a‘m(ŌL$"īnk#&²ŌBˆ^#€MĖ× yˆ^#ķ€MĖ× xÓ$˜‚€ˆ ˆ^#€MĖ× yˆ^#ķ€MĖ× xļ#ķkй%'”Ōˆ^"€MĖ× n! &ē˜&ē &x&yļ"ˆ^€MĖ× ę°­å Õf’(Ō8ˆ^€MĖ× nˆ^&ę€MĖ× y&Ó˜‚€ˆ ˆ^&ę€MĖ× y&ļ–  }„„U„„¬P„ u‡„˜Än„„U˜„ „5„ g‘m%°ÕĮ„ ˜‘i„5˜‘j„5˜‘k„^„ ˜‡„~fd‘m%°Õ…‡„€¶ŌmŠym‡„€Ś#”ŌHšę&€Ė× |Ō)„^€MĖ× ¤„T˜‚€‡„Tē ‡„Tx‡„T‡„Tꐊ˜‚€„ ’šę&€Ė× |Ō‡„€Ś#”€>‡„€€AŻø&š€‡°!å %Śå ÕT’‡„x˜ÓmŠ%Ņm%¤„ƒ–„‚S #€MĖ× ē#€MĖ× ęī€MĖÄ"#€MĖ× ęih !²Ō# €MĖ× # ķ€MĖ× Å ķhŠā–| }„„U„„¬Peuh¤ ‡„~¶Ō¤ ‹„„U˜„5„ „ c‘¤ )°Õź„5˜‘n„ ˜‘ol‘„_„5˜`„^‘¤ )°Õž¤ šę €Ė× |„ §²Ÿ”€>‡„~€AŻø”ŌS„_„ ˜d‡„~„ „^‘Ō ¤ „_$‘$īl$„_€MĖ× ę°'å ŌŠ)Ņ „_ģppj"Ó " Ҥ Ф ‡„~Ś„ ˜‘”Ō¤ šę €Ė× ‚€ė‘()° ¤ š€‡°&å )Śå Õ.’()°”Ō¤ )¤„–„€Ķ *a„,¬P‡+Äha§²ń4‡+xˆ€­€MĖ× ę³Ÿ å”Ō‡+‡+xķÄaˆ€­‡+x€MĖ× ēčhŠĢ ¤.–-. W„/„\¬Pe„Z¬Ph„/˜dļŌAhe˜cļŌ&‡YŌˆ€­$€MĖ× ēeė#$Óˆ€­#‘ŠhŠˆ€­$€MĖ× ēeė ¤^–]u õ„„Ķ„„ł¬P„„¤„„÷¬P„€«u¤€Ø¤€§„„Ķ˜„,„~a„€Ŗ‘h Ņ„„¤˜b„Ua„€Ŗ‘h °Õ÷‘„€­„,˜„€§„€¬‘h °Õۚꇀ§€Ė× ¤„£„~§Ņm‡€Øķ¤€Øšę‡€Ø€Ė× bčŌh‡€Øš€‡° ° ŌÕ Ņ‡„öŌhšę‡€Ø€Ė× ‚€ė Ó‡„£b뇄£|Ō„€­€MĖ× ēbėŠ&„U§²ŌhЇ„£|Ō„~˜„U˜‡„ö‡€§hŠh °‡„£|”Ō&‡€§„€­ģpp¤€©‡€©Ó ‡€© ŅhŠh‘ ¤„ū–„śĘ /f„2¬Pe‡1Åjf˜‘lh‡4f˜b‡0ca‘Ōh‡4"€MĖ× ē eÅ"‡4€MĖ× ę°$å ŌĪ ¤5–4ó {„„S„„~¬P„„R‡„}Å„Wu¤Y¤T‡„|¶Ōh„„R ɀd³Ōh‹ī„„S˜„+a„[„V‘h °ÕŁ„+˜‘¤X‘„\„+˜„T„Z‘h‡„|€`ŻĒ¤„| ŅRšę‡T€Ė× |ŌB‡„|Żøa§²Ÿ”Ō„\a˜„„R‡„|h‡„|Śa˜‘”Ōh„\€MĖ× ē „„RÅ °šę‡T€Ė× |”Ō!‡T„\ģpp¤U‡UÓ ‡U ŅhŠh‘‡Y ° ¤Y‡Tš€‡°‡Xå  Śå Õ9’‡Y °”Ōh ¤„€–„i š€A‡²ńiŠšę €Ė× |Ói–q‚€EvŠ£h ³ń¦ƒśŠ4 ?²ń?hŠ Œhˆƒł v¦ƒś­ƒś¦ƒś–‘ ¦„ˆƒł­ƒśŒv p–¬ph Ó ŅļŠļ–Xˆ$€MĖ× ēɱmˆ$€MĖ× ēÉ °Õ€­ƒśŒģ³ńmŠob­ƒłÄ­„"ģˆ$€MĖ× x¢ppÓmp"€MĖ× k#y±#y ±”Ōbsi"€MĖ× ękh #²Ō!" €MĖ× ēɰ i ķhŠä!åm–o +ļÕ ˆ+€MĖ× o'y'x£k'y*²ń 'xi*jlŠ'yi*ķjl­ƒś#²ń#hŠ­ƒśh$Ņ" £j! £i­„­ƒł Œ!pļ­„­ƒł Œ"pļ$Ņ" ¢j! ¢i# £k#²Ō¬'xi$Ņ'ē*'y'x£¢Ä'*Ċ '"Ä'ē*ķÄ­„ˆģpļ'ēÉ ŅUmšę šę šēÉ n&(²Ō"šę&€Ė× ¤ )~­„°)!°”Ō&m&ķnŠŁ%Óšę%€Ė× ē'xĖ ”ž‡„¤ƒü‡ƒü°Õ`‡„‘¤ƒü‡ƒü°Õõ‡ƒśŅ ¤„ p¤ƒ÷‡ƒ÷`€MĖ× ę³Ÿ`‡ƒ÷ķ€MĖ× y‡ƒ’²”Ō ‡ƒ÷ķ¤ƒ÷ŠÕ‡ƒ÷¤ƒż¤ƒų‡ƒų‡ƒż²Ō:`‡ƒų€MĖ× ¤ƒž‡ƒžx`‡ƒųī€MĖ× y²ń‡ƒų`‡ƒųī€MĖ× y‡ƒųķ¤ƒųн`€MĖ× ū`€MĖ× ę‡ƒ÷ķ¤ƒż¤ƒų‡ƒų‡ƒż³Ō0`‡ƒų€MĖ× ¤ƒž‡ƒžy‡ƒū²Ō‡ƒų‡ƒū‡ƒžxū‡ƒųųŠĒ„ƒł‡ƒśŒv‡ƒü¤„–„<„„=¬P„u„˜Ē„‘h °‡˜±”ŌZ¤‡˜ÓM‡¤‡ę i‡ę ‡ęī¢jc Źd‡ē 끁ˤ „‡ēÅa‡x€Ės¤/.”¤‡~¤Š®/ńh ¤?„u–>X,c„-¬P`uc˜Ēb‘i!°"˜±”Ō"˜Ó "ē˜s"~jŠń`u!¤/–.o˜„„†āÄē˜Äw–[].TEXT.BACK.CODE.SVOL š’£ž’’—ž’’o#:õ’ä’ķ’Ū’:’ ’’’’’’’’’?dir_infoo®XK;ü=iA†‘Ać0ōąĮ(O Ķ: ¬e™¼. *** EXTRAHEAHEAPOPS STRINGOPFILEOPS WILD    "Type SI_Date_Rec = Packed Record 7Month : 0..12; 7Day : 0..31; 7Year : 0..99; 5End; { SI_Date_Rec } " " "Procedure SI_Code_Vid (Var SI_Vol : String); ${ Returns name of volume containing current workfile code } " " "Procedure SI_Code_Tid (Var SI_Title : String); ${ Returns title of current workfile code } " " "Procedure SI_Text_Vid (Var SI_Vol : String); ${ Returns name of volume containing current workfile text } " " "Procedure SI_Text_Tid (Var SI_Title : String); ${ Returns title of current workfile text } " " "Function SI_Sys_Unit : Integer; ${ Returns number of bootload unit } " " "Procedure SI_Get_Sys_Vol (Var SI_Vol : String); " { Returns system volume name }  " "Procedure SI_Get_Pref_Vol (Var SI_Vol : String); " { Returns prefix volume name } " " "Procedure SI_Set_Pref_Vol (SI_Vol : String); ${ Sets prefix volume name } " " "Procedure SI_Get_Date (Var SI_Date : SI_Date_Rec); ${ Returns current system date } "  "Procedure SI_Set_Date (Var SI_Date : SI_Date_Rec); ${ Sets current system date } "    {**********************************************************************} " "  Implementation tSYSINFO dTa! ›ėP–/ ›ėP–= ›ėP–K ›&ėP–Wšzh–e ›@ėP–s ›<ėP–¢)`„*¬P`‚€č`‚€č Ō ›<›@ėŠ›<`ė–+Æ ›DÅ–½›D Å–Ęr–**::ZS<5.(! a ***   "  Type $ $D_PatRecP = ^D_PatRec; $D_PatRec = Record 1CompPos, { starting position of pattern in subject string } 1CompLen, { length of pattern in subject string } 1WildPos, { starting position of pattern in wild string } 1WildLen : Integer; { length of pattern in wildcard string } 1Next : D_PatRecP; { next pattern } /End; { D_PatRec } $ " "Function D_Wild_Match(Wild, Comp : String; Var PPtr : D_PatRecP; TPInfo : Boolean) : Boolean;  { Compares two strings A(one containing wildcards) and returns true if they $match. Includes information about pattern matching that occurred if re- $quested (by PInfo) } "  {*************************************************************************} "  Implementation ÜWILD hDF5+b„,¬Pb§Ó bb§ģ§€=°¤.Ф.–-k`r$x˜Ó$xi!ē#!{£Ä!"!y£Ä i!ē#Ä!ē"Ä ē$xÄ$ Ėž*a„,¬Ph å‡+x‰'²”Ōa‡+xģ§€ ±h ń‡+‡+xķÄŠŽ ¤.–-*a„.¬Ph‡-‡-xķć,a˜‡-ļåć,xń8a‡-xģ§€%Ņ%h‡-x¢‰'²Ō‡-‡-xķć+a‡-xģ§ÄЇ,Ċ ‡+a‡-xģ§Ä‡,xń‡+xˆŠŚ å”Ō‡,ć-‡-xķĖ/®¤¤¤¤‡‡xķćˆQ˜‡åćxåÕˆQ‡x짃€ڇå”Ō$ˆQ‡xģ§€~°¤ˆQ‡xģ§€%°¤‡‡xķċäˆQ‡x질Šڇå”Ō‡ċ¤ˆQ‡xģ§j‡‡xķćˆQ˜‡åćxńHˆQ‡x짃€ Śń‡Ċ1ˆQ‡xģ§€-Ņ ˆQ˜‡‡aŠ"i"!²ń‡ćˆQ˜‡åćxńP‡Ō!‡Ō c€’¼ĒŽccŠ€’¼"!¼ŻÜĒŽŠ‡ŌcĒŽccŠ"!¼ŪĒŽˆQ‡xģ§€}°¤‡‡xķĤ¤‡‡x ÕĘž‡xń<‡cŠŚń‡Ċ-‡‡xķćx®'²®z”ŌˆQ‡x질ŠŚń ‡‡x‡xļ–%%xķÄ%x®'²ń$®&ķĊ>ˆr!x¦$xh%x #!š ķh ®&²ń"Ä#xå"xå”Ōˆr!­Ĉr#x"x ŌĻ–3)Äjk­'²ŸÕ­zˆQ+질ŠŚå”Ō(*+*­&²Ÿl$­"å”åÕ”ˆQ+ģ§h$ńˆ(*ģ§i €%°#å”Ōk+ķ¤ Š$å !°”Ō#å!ƒ€Ś”ŌjŠ+ķ¤ *ķ¤ ŠZ ˆŠŚńjŠL­zŌ(*+ Š=+ķ¤ *ķ¤ +­'²­z”ŌˆQ+질ŠŚń(*+Š„ „ b!(Š„ „ )b( Šրk"å#å”*­&²Ÿ”+­'²Ÿ”Ō)Ċ*­&²Ÿ+­'²Ÿ ­"å”Ōj")x Õ’­z(x˜±”Ō(xo'ē­&'{£ķÄ'­''y£ķĖ Ęy„Q„~¬P„(„|¬P`ƒ€[ĒŽ„ƒ€cĒŽ„%r‡{˜Ä„Q˜¤"„Q§¤'„(§¤&„!‡{‡z‡{x˜±”Ō*‡{x|¤#‡{xē˜Ä‡#˜Ó‡#|¤$‡#ē‡{xć{‡#ć$¤#Šć‡!ń‡{˜Ä„%r‡!¤€€–Īs– @0 0h={ņ’Ą’ē’ 0 h YQ8… e *** HEAPOPS  ŒRESTOR €€€€€€€€€€€€€€€€ ķ~ķ~0żLAąšC\Ž\Ždķš’F#Ŗ\ŽD‹RESTOR 5)`„*¬Pš`˜r pšrpp–+R ƒ€ŚŌ €a£€A¢iŠ i–s"§ih !²Ō" ģ" ģ§‘Č ķhŠė–ŗ¤¤‡§¤¤‡‡²Ō&‡‡짃€ ŚŌ‡ Œ‡‡ģ§€0£¢¤‡ķ¤ŠÓ‡¤–{h‡}‚€ėPa‚€ėP‡~ ’˧‡|Ó9aģ‡~ ’˧ȇ}¤+„+‡}˜€Ps„+a˜€ s„+ėP ķh €PŅ‚€‘Šŗ–~;aŠaŠ t t ttttl–i† Ёīt tth† Ё‘Ņ īh l–ō,b‚€(ėP†‚\p¤,i!‡,²Ōb!ķ솂\!’˧Č!ķiŠęb‚€+čńš‚€.r pšr pжb‚€IėP i†‚\!’˧€ Ób! £ģ†‚\!’˧Č!ķiŠŻb‘„–,s†‚\p†‚\’˧€DŅ…hІ‚\†Œ…‘†Œ…‘h …ÓCšupš‚€Mr pš……£ķrpš‚€Wr pšrpšr pЇ–ƒ…ķ„‘ –SĻ„,‚€aėPb„,ėP†‚\‡€ŠppÓ4š‚€fr pš„U€Pr pšr p„Uģ§‘€YŅŠæŠp†‚\„U‘‚€x„U˜sķi†Œ\„U˜„€§!īs„€§ėPh„U!ģ§€ Ó„, ģ„U!ģ§Č!ķi ķhŠå!ķih!„U§²Ōb ģ„U!ģ§Č!ķi ķhŠē„,‘„b‘„–€Š0ƒ`„-įv‘ …t„*€P t„*¤S„S‚€ys„S„*˜€_s„S‚€€`s„SėP`„*˜vp…¤S¤)‡)‡S²Ōw†‚\‡)ķppÓ6š‚€‚r pš†Œ…€Pr pšr p†Œ…ģ§‘€YŅнŠp`†‚\‡)īupÓš‚€”r pšrp‡)ķ¤)Š‚`vp`v–€ƒŠ+b‚€ėP‡,‡,§ģ§h†rpńs‡,b蟆rpå”Ōa†b€Pr p†r p‚€šb˜si†Œ\bėP €:°!²Ÿ”Ōb!ķb§!£s†Œ×bėP†rpń††rp†† tp†r pŠ‡,bč¤-–,† † ЁXtttttކ Ёt tt„† Ё‘…¢„–Œ£`„-įv…t„)€P t„)¤R„R†Œ\˜€Ps„R‚€›€Qs„R„)˜€”s„R‚€œ€¢s„RėP……¢„‘ `†Œ\˜vpÓxš†Œ\˜r š‚€r š†Œ…€Pr šr †Œ…ģ§‘€YŅBš‚€“r š†Œ\€Pr šr †Œ\§Ņš‚€¼r šrp`†Œ\˜vŠp…B¤R„…‡R²Ōz†‚\…ppÓ0š‚€Ķr š†Œ…€Pr šr †Œ…ģ§‘€YŅŠĆŠp…ķ„…īŅ„‘ `†‚\įuÓ‚€ß‘…ķ„‹~’`v`v–€£¢R„*„S¬P`„-įv¤)†Œ\„*ėP†‚€īv„*‘Õ²¤)`†Œ\˜vp°Õ–`vš†Œ\˜r š‚€ör š†Œ…€Pr šr †Œ…ģ§‘€YŅ7š‚r š†Œ\€Pr šr †Œ\§Ņš‚r šr‹z’Š*š‚!r š†Œ…€Pr šr †Œ…ģ§‘€YÓ‹N’`v‘‘†rÕ>’‡)ń š‚1r pš†Œ®˜r pšrp`v–Tļš‚9r pš†Œ®€Pr pšr p†Œ®‘†Œ®§Ņ‚J‘†Œ®†Œ®§ģ§€:°„–%†/†‚[įv††.įv‘‘ ‘ †Œ®˜‘†‚Xv†v†/v†v–’ž’’ .Buffer to large to convert to string, exiting..12344DUMPP5Please insert the first dump volume and press return. Please insert vol.  and press return.. #Error reading backup, retry (y/n)?  directory.text[]#Error reading backup, retry (y/n)? Out of room:[]- cannot be opened, rename output file (y/n)? New file name: !No file name, skipping this file.#Error reading backup, retry (y/n)? Error writing file, exiting..directory.textt# exists, rename output file (y/n)? New file name: !No file name, skipping this file.Overwrite existing file(y/n)? Could not find file or volume name to restore: No file specified, exiting.directory.texttÕKj¬D<ü· Ž_<+ śFILEOPS EXTRAIO LONGOPS STRINGOPPASCALIO ĶDUMPDIR €€€€€€€€€€€€€€€€ ķ~ķ~0żLAąšį\Ž\Ždķš’F#Ŗ\ŽDĢDUMPDIR 0 ƒ€ŚŌ €A£€a¢iŠ i–v¤¤‡§¤¤‡‡²Ō&‡‡짃€ŚŌ‡ Œ‡‡ģ§€0£¢¤‡ķ¤ŠÓ‡¤–Ē{h‡}‚€ ėPa‚€ ėP‡~ ’˧‡|Ó-aģ‡~ ’˧ȇ}¤+„+‡}˜€Pr„+a˜€ r„+ėP ķhŠĘ–~į,b‚€ėP†p¤,i!‡,²Ōb!ķģ†!’˧Č!ķiŠēb‚€čńš‚€s pšs pŠø†ŠĪ‚€/ėP†ŠĪ솁’˧ȆŠĪ솁’˧ȆŠĪģ€/ȆŠĪģ† ’˧ȆŠĪģ† ’˧ȆŠĪģ€/ȆŠĪ솁’˧ȆŠĪ솁’˧Ț‚€4s pš†ŠĪ˜s pšspb‚€:ėP i†!’˧€ Ób! £ģ†!’˧Č!ķiŠßb‘„Šś–,u}†Š„‚€>ėP†Š|†Š„ėP†‡~p†b‘‚€Cb˜rķi†Šb˜„U!īr„UėPhb!ģ§€ ӆЄ ģb!ģ§Č!ķi ķhŠę!ķih!b§²Ō†Š| ģb!ģ§Č!ķi ķhŠē†Š„‘„Š÷†Š|‘„Šų–~Č+…Šų¤+h ‡+²Ō7† ķp†Œ)† ītpÓš‚€Ds pšsp ķhŠĆ†Œ)up–+>`„-įu`‚€Yup†Šü†ŠĪ˜s p†Šüsp`spń3`„W€Ps p`s p`„.€Ps p`s p†Šü„W˜s p†ŠüspŠÅ`up†Šüup`u–0†Œ)†Uįu†Šü†Œ(įu‘‘†ŠS„ŒQ†ŒQ‚€ar†ŒQ‚€ir†ŒQ†Š|˜€_r†ŒQ‚€j€`r†ŒQėP†Œ)†ŠS˜upÓš‚€ks šsp‘š‚€}s š†Š*€Ps šs †Š*§Ó2†Šü†Š*˜upÓš†Š*˜s š‚€†s šspŠš‚€”s šsp‘†Œ)u†Šüu–’ž’’ 12344DUMPP5Please insert the first dump volume and press return.123456788 Dump date:   )Out of room while writing temporary file.directory.texttdirectory.textt[]#Cannot open directory file exiting.File for output: cannot be opened, exiting.. No file name specified, exiting..f=óf= ¤FILEOPS EXTRAIO PASCALIOSTRINGOP $CURSOR $EQUAL A $SYNTAX jx©+O.ØØB(* PROGRAM TeleTalker 30 Dec 83 *) (* N O T I C E *** N O T I C E *** N O T I C E *** N O T I C E *) (* *) (* Copyright 1979 - 1984, RB&A. *) (* *) (* Use by USUS members for non-commercial purposes encouraged. *) (* All other rights reserved.  *) (* *) (* N O T I C E *** N O T I C E *** N O T I C E *** N O T I C E *) (*$C Copyright 1979 - 1984, RB&A. All rights reserved.*)    (* NOTE: RB&A has granted SAGE Computer Technology permission to *)  (* distribute this software to SAGE Computer users. By *)  (* allowing SAGE to distribute for commercial purposes, RB&A *)  (* does not thereby authorize any third party to distribute *)  (* or use this software for commercial purposes. *)    (*$D Musus- *) {- Telemail vers. + MUSUS vers. }  (*$D VAX- *) {- + VAX vers.}  (*$D SmartModem+ *) {- Racal VADIC type + HAYES type} (*$D SmartCom- *) (*$I-*) (*$R-*) PROGRAM TeleTalker; USES (*$U RawCon.Code *) (*$L-*) RawConsole, (*$L+*) $(*$U Rem.Hayes.Code *) (*$L-*) RemUnit; (*$L+*)  (*$L-*)(*$T T E L E T A L K E R - D e c l a r a t i o n s *)  (*$L+*)(*$P*)  (*$I :Sys.Parm.text *)  ((*$B Musus- *) (Title = ' R a n d y '' s T e l e T a l k e r'; ((*$E Musus- *) ((*$B Musus *) (Title = ' R a n d y '' s M U S U S T a l k e r'; ((*$E Musus *) (Titl2 = ' '; (Copyright = 'Copyright 1979-84, RB&A. All rights reserved.'; (* |xjm$d|nx|f8|ejb|.  |xjm$v|nx+|ejb/r/TeleTalker//VAXTalker/qun|. |xjm$sc|nx+|ejb/r/TeleTalker//SComTalker/qun|. This may not be used for commercial gain without RB&A's explicit written consent. *) (*$P*) (* Change log: #15 Jan 84 Simplified "Thaw" prompt for new computer users -vjb. #30 Dec 83 in thaw prompt. init does own clearscreen not page(output) 27 Dec 83 allow 'P' response to P(urge question. message cosmetics. 26 Dec 83 allow AttenChar to break out of BlkWrite error loops 21 Dec 83 vax option added for 8-bits, no parity 18 Dec 83 separate DisplayCharSet and RecordCharSet 28 Sep 83 change to 7 bits even parity from 8 bits no parity for telemail 23 Sep 83 Ask for thaw char rather than const 07 Sep 83 IoCheck on Closes in RClose and Receive per BillBonham 30 Aug 83 Blocksize changed to 1024 and legal textfiles attempted 21 Aug 83 SmartCom option for when remote system does not echo  10 Aug 83 fix .TEXT not being appended if name begis with "#"; Init sillies 21 Jul 83 B(reak added to menu 03 Jul 83 use RawConsole, variable Ca deleted 27 Jun 83 T(haw, 7( and 8( options added. Musus only controls ThawChar 17 Jun 83 Musus ThawChar changed from ^Q to ^A 15 Jun 83 try very hard not to drop the line across exits and reentries 15 Jun 83 hacked up for Pascal IV.x 18 Mar 83 moved console configuration to RawCon 15 Mar 83 MUSUS conditional compilation hacks. 13 Mar C83 reverse order of calls to InitRem and InitCon 19 Feb 83 hacked to M2 from uE TeleTalker in Pascal 07-Oct-81 hacked to new WD.IO per Bob P's April Draft Note to implementors / adaptors I ask that you leave the Title..Copyright banner. This code was a quick hack, it is in no way waranteed. It is meant to get you up, with something you can hack up yourself. Later note (20 Feb 83) This is now a quick hack to a two year old quick hack. What more  warning can I give? This should absolutely not be taken as an example of any kind of programming! It is only a means of getting your system on the air. *) (*$P*) (* CONST contd. *) AttenChar = 1; (* Ctrl-A from kbd breaks to menu *) BlkSz = 1024; BlkMax = 1023; Dle = 16; TYPE Block = PACKED ARRAY [0..BlkMax] OF CHAR; CharSet = SET OF CHAR; FName  = STRING; VAR c : CHAR; Sending : BOOLEAN; Recording : BOOLEAN; DleCount : INTEGER; Frozen : BOOLEAN; ThawChar : CHAR; RcvFilPtr : INTEGER; RcvBufPtr : INTEGER; XmtBufPtr : INTEGER; DisplayCharSet : CharSet; RecordCharSet : CharSet; XmtFile : FILE; XmtBlk : Block; XmtName : FName;  RcvFile : FILE; RcvBlk : Block; (RcvName : FName;  (*$L-*)(*$T T E L E T A L K E R - I n i t i a l i z a t i o n *)  (*$L+*)(*$P*) (PROCEDURE Init; (VAR (c : CHAR; (Baud : INTEGER; (RemExists : BOOLEAN; (DialExists : BOOLEAN; (Rslt : CrBaudResult; (i : INTEGER; (BEGIN (FOR i := 0 TO 23 DO ,WRITELN; (GOTOXY (0,2); (WRITELN (Title); (WRITELN; WRITELN (Titl2, CompVer, ' of ', CompDate); (WRITELN; WRITELN (Copyright); (WRITELN; WRITE ('BaudRate: 1(200, 3(00, ? '); (REPEAT ,c := CrGetKb ,UNTIL c IN ['1', '3', CHR(13), CHR(27)]; (IF c = CHR(27) THEN ,EXIT (TeleTalker) (ELSE IF c = '3' THEN ,Baud := 300 (ELSE ,Baud := 1200; (WRITELN (Baud); (ThawChar:=CHR(10); {Default to Telemail for SAGE} (WRITELN; WRITELN (' for option menu'); (*$P*) CrCommInit (CrOrig, CHR(AttenChar), RemExists, DialExists);  IF NOT RemExists THEN EXIT (TeleTalker); (*$B VAX-*) CrSetCommunications ( TRUE, (* Parity *) TRUE, (* Even *) Baud, (* Baud *) 7, (* BitsPerChar *) 1, (* StopBits *) CrOrig, (* Direction *) 'FlowIn,FlowOut,Mask', (* Options *) Rslt (* Result *) ); (*$E VAX-*) (*$B VAX+ *) CrSetCommunications ( FALSE, (* Parity *) TRUE, (* Even *) Baud, (* Baud *) 8, (* BitsPerChar *) 1, (* StopBits *) CrOrig, (* Direction *) 'FlowIn,FlowOut,Mask', (* Options *) Rslt (* Result *) ); (*$E VAX+ *) IF Rslt <> CrSetOk THEN  EXIT (TeleTalker); Sending := FALSE; Recording := FALSE; DisplayCharSet := [CHR(8), CHR(13), ' '..'~']; RecordCharSet := [CHR(13), ' '..'~']; (*$B SmartCom+ *) DisplayCharSet := DisplayCharSet + [CHR(9), CHR(12)]; RecordCharSet := RecordCharSet + [CHR(9), CHR(12)]; (*$E SmartCom+ *) (*$B VAX+ *) DisplayCharSet := DisplayCharSet + [CHR(27)]; (*$E VAX+ *) (*$B SmartModem+ *) CrPutRCem (CHR(13)); CrPutRem ('A'); CrPutRem ('T'); CrPutRem ('V'); CrPutRem ('1'); CrPutRem ('E'); CrPutRem ('1'); IF CrCarrier THEN CrPutRem ('O'); CrPutRem ('Q'); CrPutRem (CHR(13)) (*$E SmartModem+ *) END; (*$L-*)(*$T T E L E T A L K E R - U t i l i t y P r o c e d u r e s *) (*$L+*)(*$P*) (*$B SmartModem- *) PROCEDURE Options; FORWARD; PROCEDURE NoCts; CONST msg = 'LOST CARRIER'; VAR  i : INTEGER; c : CHAR; s : STRING; BEGIN WRITELN (CHR(7)); IF NOT CrKbStat THEN WRITE (msg); REPEAT UNTIL CrClearToSend OR CrKbStat; IF NOT CrKbStat THEN BEGIN s := msg; FOR i := 1 TO LENGTH (s) DO 0WRITE (CHR(8), ' ', CHR(8)); END ELSE BEGIN c := CrGetKb; WRITELN; Options END END; (*$E SmartModem- *) (*$P*) PROCEDURE BlkWrite; VAR SpareBlk : Block; LineHold : Block; i : INTEGER; BEGIN i := BlkSz + SCAN (-BlkSz, =CHR(13), RcvBlk[BlkMax]); IF i < BlkSz THEN BEGIN MOVERIGHT (RcvBlk[i], LineHold, BlkSz - i); FILLCHAR (RcvBlk[i], BlkSz - i, CHR(0)) END; REPEAT WHILE BLOCKWRITE (RcvFile, RcvBlk[0], 2, RcvFilPtr) <> 2 DO BEGIN WRITELN;  WRITE (CHR(7), 'Disk write error on ', RcvName); IF CrKbStat THEN IF CrGetKb = CHR(AttenChar) THEN EXIT (BlkWrite) END; WHILE BLOCKREAD (RcvFile, SpareBlk[0], 2, RcvFilPtr) <> 2 DO BEGIN WRITELN; WRITE (CHR(7), 'Disk reread error on ', RcvName); IF CrKbStat THEN IF CrGetKb = CHR(AttenChar) THEN EXIT (BlkWrite)  END UNTIL SpareBlk = RcvBlk; RcvFilPtr := RcvFilPtr + 2; MOVERIGHT (LineHold, RcvBlk[0], BlkSz - i); RcvBufPtr := BlkSz - i END; (*$L-*)(*$T T E L E T A L K E R - O p t i o n s M e n u *) (*$L+*)(*$P*) PROCEDURE Options; VAR c : CHAR; PROCEDURE UpCase (VAR s : STRING); VAR i : INTEGER; BEGIN FOR i := 1 TO LENGTH(s) DO IF s[i] IN ['a'..'z'] THEN  s[i] := CHR ( ORD(s[i]) - ORD('a') + ORD('A') ) END; PROCEDURE RClose; BEGIN IF (RcvBufPtr = 0) OR (RcvBlk[RcvBufPtr-1] <> CHR(13)) THEN BEGIN RcvBlk[RcvBufPtr] := CHR(13); RcvBufPtr := SUCC(RcvBufPtr) END; FILLCHAR (RcvBlk[RcvBufPtr], BlkSz - RcvBufPtr, CHR(0)); BlkWrite; CLOSE (RcvFile, LOCK); IF IORESULT <> 0 THEN WRITELN (CHR(7), 'I/O error closing receive file ', RcvName) END; (*$L-*)(*$T T E L E T A L K E R - S e n d O p t i o n *) (*$L+*)(*$P*) PROCEDURE OptSend; VAR c : CHAR; BEGIN WRITELN ('Send'); IF Sending THEN BEGIN WRITE ('Currently Sending ', XmtName, ' Close it ? '); c := CrGetKb; IF (c = 'y') OR (c = 'Y') THEN BEGIN CLOSE (XmtFile, Normal); Sending := FALSE; WRITELN (XmtName, ' Closed') END ELSE  WRITELN (CHR(7), XmtName, ' Left open') END ELSE BEGIN REPEAT WRITE ('Send what textfile ? '); READLN (XmtName); IF LENGTH (XmtName) > 0 THEN BEGIN UpCase (XmtName); IF XmtName[Length(XmtName)] = '.' THEN DELETE (XmtName, Length(XmtName), 1) ELSE IF XmtName[Length(XmtName)] <> ':' THEN XmtName := CONCAT (XmDtName, '.TEXT'); RESET (XmtFile, XmtName); IF IORESULT = 0 THEN BEGIN Sending := TRUE; DleCount := 0; Frozen := FALSE; WRITELN (XmtName, ' Opened') END END UNTIL (LENGTH(XmtName) = 0) OR (IORESULT = 0); IF LENGTH (XmtName) >= 5 THEN  IF COPY (XmtName, LENGTH(XmtName)-4, 5) = '.TEXT' THEN IF BLOCKREAD (XmtFile, XmtBlk[0], 2) <> 2 THEN; XmtBufPtr := BlkSz END END; (*$L-*)(*$T T E L E T A L K E R - R e c e i v e O p t i o n *) (*$L+*)(*$P*) PROCEDURE OptReceive; VAR c : CHAR; BEGIN WRITELN ('Record'); IF Recording THEN BEGIN WRITE ('Currently Recording ', RcvName, ' C(lose, P(urge ? '); c := CrGetKb; IF (c = 'c') OR (c = 'C') THEN BEGIN RClose; Recording := FALSE; WRITELN (RcvName, ' Closed') END ELSE IF (c = 'p') OR (c = 'P') THEN BEGIN CLOSE (RcvFile, PURGE); IF IORESULT = 0 THEN BEGIN Recording := FALSE; WRITELN (RcvName, ' Purged') END ELSE  WRITELN (CHR(7), 'Error closing received file ', RcvName) END ELSE WRITELN ('Recording to ', RcvName, ' continued') END (*$P*) ELSE BEGIN REPEAT WRITE ('Record as what textfile ? '); READLN (RcvName); IF Length (RcvName) > 0 THEN BEGIN UpCase (RcvName); IF RcvName[Length(RcvName)] = '.' THEN DELETE (RcvName, Length(RcvName), 1) ELSE IF RcvName[Length(RcvName)] <> ':' THEN RcvName := CONCAT (RcvName, '.TEXT'); RESET (RcvFile, RcvName); IF IOResult = 0 THEN BEGIN WRITE (CHR(7), RcvName, ' Exists, P(urge ? '); c := CrGetKb; IF c IN ['y', 'Y', 'p', 'P'] THEN BEGIN CLOSE (RcvFile, PURGE);  WRITELN (RcvName, ' Purged') END ELSE BEGIN CLOSE (RcvFile, LOCK); RcvName := ''; WRITELN (RcvName, ' Saved'); EXIT (OptReceive) END END; REWRITE (RcvFile, RcvName); IF IORESULT = 0 THEN BEGIN Recording := TRUE; WRITELN (RcvName, ' Opened') END END UNTIL (LENGTH(RcvName) = 0) OR (IORESULT = 0); IF LENGTH(RcvName) >= 5 THEN IF COPY (RcvName, Length(RcvName)-4, 5) = '.TEXT' THEN BEGIN FILLCHAR (RcvBlk[0], BlkSz, CHR(0)); IF BLOCKWRITE (RcvFile, RcvBlk[0], 2) <> 2 THEN; RcvFilPtr := 2 END ELSE  RcvFilPtr := 0; RcvBufPtr := 0 END END;  (*$L-*)(*$T T E L E T A L K E R - T h a w C h a r a c t e r O p t i o n*)  (*$L+*)(*$P*) (PROCEDURE SetThaw; (BEGIN (WRITELN; (WRITELN; (WRITELN(' For a mail system other than Telemail or MUSUS, you must'); (WRITELN(' define the "thaw" character. This is the character that'); (WRITELN(' is sent by the mail system in response to each input'); (WRITELN(' sequence, (usually a line of input). '); (WRITELN; D(WRITE (' TYPE IN THE THAW CHARACTER:'); (REPEAT ,ThawChar := CrGetKb ,UNTIL ThawChar IN [ CHR(1)..CHR(31), @'!'..'/', @':'..'@', @'['..'`', @'{'..'~', @'T', 't', @'M', 'm']; (IF ThawChar <= ' ' THEN ,WRITE ('CHR(', ORD(ThawChar), ')') (ELSE ,WRITE (ThawChar); (WRITELN; (END; ( (PROCEDURE SetMAIL; (BEGIN (WRITELN; (WRITELN; (WRITE ('T(eleMail, M(USUS, , or O(ther'); (REPEAT ,ThawChar := CrGetKb ,UNTIL ThawChar IN ['T','t','M','m','O','o']; (IF ThawChar = CHR(27) THEN ,EXIT (TeleTalker); (CASE ThawChar OF +'T', 't': ThawChar := CHR(10); +'M', 'm': ThawChar := CHR(1); +'O', 'o': SetThaw ; * END; {no change made} (END; (*$L-*)(*$T T E L E T A L K E R - E x i t O p t i o n *) (*$L+*)(*$P*) PROCEDURE OptExit; BEGIN WRITELN ('Exit'); IF Recording THEN BEGIN RClose; Recording := FALSE END; IF Sending THEN BEGIN CLOSE (XmtFile, NORMAL); IF IORESULT = 0 THEN BEGIN Sending := FALSE; WRITELN ('Receive file ', RcvName, ' Saved') END ELSE WRITELN (CHR(7), 'Error closing receive file ', RcvName) END; EXIT (TeleTalker) END; (*$L-*)(*$T T E L E T A L K E R - O p t i o n M e n u *) (*$L+*)(*$P*) BEGIN (* Options *) REPEAT WRITE ('Options: G(o, S(end, R(ecord, W(hichmail'); ,WRITE (' B(reak, T(haw, 7(, 8(, E(xit - ');  c := CrGetKb; IF c = CHR(13) THEN c := 'G' ELSE IF c IN ['a'..'z'] THEN c := CHR ( ORD(c) - ORD('a') + ORD('A') ); IF c IN ['G', 'S', 'R', 'B', 'T', '7', '8', 'E'] THEN CASE c OF 'G' : WRITELN ('Go'); 'S' : OptSend; 'R' : OptReceive; 4'W' : SetMail; 4'B' : BEGIN WRITELN ('Break'); CrBreak  END; 'T' : BEGIN Frozen := FALSE; WRITELN ('Thawed') END; '7' : BEGIN UNITCLEAR (7); Frozen := FALSE; WRITELN ('7 Cleared & Thawed') END; '8' : BEGIN UNITCLEAR (8);  WRITELN ('8 Cleared') END; 'E' : OptExit END ELSE WRITELN (CHR(7)) UNTIL c = 'G' END; (*$L-*)(*$T T E L E T A L K E R - M a i n P r o c e d u r e *) (*$L+*)(*$P*) BEGIN (*TeleTalker*) Init; WHILE TRUE DO BEGIN (*$B SmartModem- *) IF NOT CrClearToSend THEN NoCts; (*$E SmartModem- *)  IF CrRemStat THEN BEGIN c := CrGetRem; (* c := CHR ( ORD ( ODD(ORD(c)) AND ODD(127) ) ); clear bit-7 *) IF c = ThawChar THEN Frozen := FALSE; IF c IN DisplayCharSet THEN WRITE (c); IF Recording AND (c IN RecordCharSet) THEN BEGIN RcvBlk[RcvBufPtr] := c; IF RcvBufPtr < BlkMax THEN RcvBufPtr := SUCC(RcvBufPtr)  ELSE BlkWrite END END (*$P*) ELSE BEGIN c := CHR(0); IF CrKbStat THEN BEGIN c := CrGetKb; IF Sending OR (c = CHR(AttenChar)) THEN BEGIN WRITELN; Options; c := CHR(0) END END ELSE IF Sending AND NOT Frozen THEN E IF DleCount > 0 THEN BEGIN c := ' '; DleCount := PRED(DleCount) END ELSE IF XmtBufPtr >= BlkSz THEN IF BLOCKREAD (XmtFile, XmtBlk[0], 2) = 2 THEN XmtBufPtr := 0 ELSE BEGIN CLOSE (XmtFile, NORMAL); WRITELN (XmtName, ' Finished');  Sending := FALSE END ELSE BEGIN c := XmtBlk[XmtBufPtr]; XmtBufPtr := SUCC(XmtBufPtr); IF DleCount < 0 THEN BEGIN DleCount := ORD(c) - 32; IF DleCount < 0 THEN DleCount := 0; c := CHR(0) END  ELSE IF c = CHR(Dle) THEN BEGIN DleCount := -1; c := CHR(0) END ELSE (*$B SmartCom- *) Frozen := c = CHR(13) (*$E SmartCom- *) END; IF c <> CHR(0) THEN BEGIN CrPutRem (c); (*$B SmartCom+ *) WRITE (c)  (*$E SmartCom+ *) END END END END. Parity Selectionn Even parity Odd parityy No parity DIP SwitchhSTOPPStop Bit Selectionn 1 Stop Bitt 1.5 Stop Bits 2 Stop BitsDATAAData Bit Selectionn 5 Data Bits 6 Data Bits 7 Data Bits 8 Data BitsACESSAccess ControllTimeout thresholdRead allowed maskWrite allowed maskkExclusive control maskkHang & Wait maskkUser #0 P00User #1 P11User #2 P22User #3 P33User #4 P44User #5 P55User #6 P66User #7 P77User #8 P88User #9 P99User #100P10User #111P11User #122P12User #133P13User #144P14User #155P15P00User #0 Access Controll Read allowedd Write allowedExclusive control Hang & WaitP00P11User #1 Access ControllP00P22User #2 Access ControllP00P33User #3 Access ControllP00P44User #4 Access ControllP00P55User #5 Access ControllP00P66User #6 Access ControllP00P77User #7 Access ControllP00P88User #8 Access ControllP00P99User #9 Access ControllP00P10User #10 Access ControlP00P11User #11 Access ControlP00P12User #12 Access ControlP00P13User #13 Access ControlP00P14User #14 Access ControlP00P15User #15 Access ControlWD1Winchester #1 ParameterssNumber of CylindersBytes per Sectorr Step Time Slew Time Step CounterrHead Settle TimeeCylinder for Precompp Special types Test flagssTrack for shippinggLow Read CounterrHigh Read Counter Header CounttNumber of HeadsNumber of RetriesSectors per Track Select BittWrite Sync BittExtra Head SettleRd after Wt RetriesWrite Cycle RetriesWD1WD2Winchester #2 ParameterssWD1WD3WinchEester #3 ParameterssWD1WD4Winchester #4 ParameterssFL4Left Floppy Drive SelectionFloppy ConfigurationnFLF44Access ControllACESSFL5Right Floppy Drive SelectionnFloppy ConfigurationnFLF55Access ControllACESSFLF44Left Floppy Format Selectionn(SAGE double side, 80 track (1280 blocks))(SAGE double side, 40 track ( 640 blocks))8IBM single side, 40 track - Universal Media (320 blocks))&IBM double side, 40 track (640 blocks))5Network Consulting single side, 40 track (400 blocks)5Network Consulting double side, 40 track (800 blocks)6Network Consulting double side, 80 track (1600 blocks))'IBM double side, 80 track (1280 blocks) Non Standard Drive ConfigurationnNo drive equipped0SAGE 10 sector per track, 80 track (1600 blocks))FLF44FLF55Right Floppy Format SelectionRDKRam Disk Channel Selectionn Ram Disk #1RDK11 Ram Disk #2RDK22 Ram Disk #3RDK33 Ram Disk #4RDK44RDK11RAM Disk #1 ConfigurationBase of Ram Disk (0 = disabled)Top of Ram Disk (0 = to BIOS))Initialize Ram DiskAccess ControllACESSRDK11RDK22Ram Disk #2 ConfigurationRDK11RDK33Ram Disk #3 ConfigurationRDK11RDK44Ram Disk #4 ConfigurationPRT&Parallel Printer Configuration Controll Printer modeePMODEOutput Buffer SizeePolling attempts before delayDelay before re-pollingLinefeed after carriage returnnAccess ControllACESSPMODEPrinter Port AssignmentParallel port with interrupts$Parallel port with scheduled pollinggDisableddTAJTime AdjustmentSeconds of time adjustmenttIn number of daysMAPUser Channel Map (0 to 15)) Channel Channel device = Channel Channel subdevice ==MAP11User Channel Map (16 to 31)Channel device =Channel subdevice ==LLCLow Level ConfigurationLeft Floppy DetailssFL4DDRight Floppy DetailssFL5DDShared Floppy DetailsFLS Winchester #1WD1 Winchester #2WD2 Winchester #3WD3 Winchester #4WD4Number of SemaphoressIntercept ExceptionssLoad Terminal EmulatorrTEMFL4DD#Low Level Left Floppy ConfigurationNumber of sidesNumber of cylindersSectors per trackBytes per SectorrRetriesMotor on delay factor Data lengthGap 3 parameterGap 3 for formattPattern for formattSkew for formatIBM track formattNCI 10 sects/trkkRead 48 on 96 TPIRead after writee Ignore errorsFL4DDFL5DD$Low Level Right Floppy ConfigurationnFLS%Shared Low Level Floppy ConfigurationStep Time (msec)) Head loadHead unload timeeDouble DensityyWAC11Winchester #1 Partition AccesssDrive partition #00ACESSDrive partition #11ACESSDrive partition #22ACESSDrive partition #33ACESSDrive partition #44ACESSDrive partition #55ACESSDrive partition #66ACESSDrive partition #77ACESSDrive partition #88ACESSDrive partition #99ACESSDrive partition #10ACESSDrive partition #11ACESSDrive partition #12ACESSDrive partition #13ACESSDrive partition #14ACESSDrive partition #15ACESSWAC11WAC22Winchester #2 Partition AccesssWAC11WAC33Winchester #3 Partition AccesssWAC11WAC44Winchester #4 Partition AccesssCPMCP/M InformationnNumber of disk I/O Bufferss!Size of buffer in 512-byte blocksCP/M Disk Drive ConfigurationDRVDRVCP/M Disk Drive Configuration Disk Drive A DAA Disk Drive B DBB Disk Drive C DCC Disk Drive D DDD Disk Drive E DEE Disk Drive F DFF Disk Drive G DGG Disk Drive H DHH Disk Drive I DII Disk Drive J DJJ Disk Drive K DKK Disk Drive L DLL Disk Drive M DMM Disk Drive N DNN Disk Drive O DOO Disk Drive P DPPDAADisk Drive A: ConfigurationLogical Block Size Directory Track Offset Number of Directory Entries Disk Media DAADBBDisk Drive B: ConfigurationDAADCCDisk Drive C: ConfigurationDAADDDDisk Drive D: ConfigurationDAADEEDisk Drive E: ConfigurationDAADFFDisk Drive F: ConfigurationDAADGGDisk Drive G: ConfigurationDAADHHDisk Drive H: ConfigurationDAADIIDisk Drive I: ConfigurationDAADJJDisk Drive J: ConfigurationDAADKKDisk Drive K: ConfigurationDAADLLDisk Drive L: ConfigurationDAADMMDisk Drive M: ConfigurationDAADNNDisk Drive N: ConfigurationDAADOODisk Drive O: ConfigurationDAADPPDisk Drive P: ConfigurationOPSYYOpeFrating System InformationnWord Word DINFOAuxiliary Device InformationnKeyboarddTerminall Left Floppy Right FloppyyParallel Printerr Remote Inputt Remote Output RAM Disk #1 RAM Disk #2 RAM Disk #3 RAM Disk #4Extra Serial Port #11Extra Serial Port #22Extra Serial Port #33Extra Serial Port #44 Winchester #1WD1INFO Winchester #2WD2INFO Winchester #3WD3INFO Winchester #4WD4INFOWD1INFO*Winchester #1 Auxiliary Device Informationn Partition Partition WD1INFOWD2INFO*Winchester #2 Auxiliary Device InformationnWD1INFOWD3INFO*Winchester #3 Auxiliary Device InformationnWD1INFOWD4INFO*Winchester #4 Auxiliary Device InformationnTEEType of Terminal Emulator EMPTY No EmulatorTEMEmulator Storage Slotss EMPTYTEM11TEM11Terminal Emulator Selection EMPTY No EmulatorDVRCommunication Channel Selection Comm Chan #DVRDVR00 Comm Chan #00Destination TaskkAttachment number Buffer sizeDVR Comm Chan #DVR00CAPUser CapabilitiesSystem Manager FlagAllow configuration changes ‹WARNINGSŠVl!#³ń p!#Ņ*"³ń ³Ō p" ³Ō pŠ ²Ÿ "²”Ō pl–£­ķ¦­²ńš‚€” pš” p pš” pš‚€” p¦¦– ž i¤h¤ k#)²Õ½†€”#Ė×O¤ *ēɱ*~±”՜*z*{*x*yŌ0š‚€” pš#” pš‚€” pš” p*zm*{¢l$³*{³Ÿ”Ō%ķm*x*y*|*}*|*}%$”Ō0š‚€2” pš#” pš‚€5” pš” p#ķk‹=’¤ k#)²Õq†€”#Ė×O¤ *ēɱ*~±”ÕP¤ j"+²ÕĶ#"±ÕĮ†€”"Ė×Oēɱ†€”"Ė×O~±”Õ”*x*y†€”"Ė×Ox†€”"Ė×Oy†€”"Ė×Ox†€”"Ė×Oy*z*{”ŌHš‚€K” pš#” pš‚€N” pš"” pš‚€[” pš” p*x*y†€”"Ė×Oz†€”"Ė×O{†€”"Ė×Oz†€”"Ė×O{*z*{”ŌHš‚€`” pš#” pš‚€c” pš"” pš‚€p” pš” p*zm*{¢l$³*{³Ÿ”Ō%ķm*x*y†€”"Ė×O|†€”"Ė×O}†€”"Ė×O|†€”"Ė×O}%$”ŌHš‚€u” pš#” pš‚€x” pš"” pš‚€…” pš” p Ō p"ķj‹-ž¤ j"+²Õm††F"Ė× ē¤ ,x±,y± ÕN*x*y,x,y,x,y*z*{”ŌIš‚€” pš#” pš‚€” pš"ķ” pš‚€Ÿ” pš” p,zm,{l,z°,{°”ԁ’ml*x*y%$%$*z*{”ŌIš‚€¤” pš#” pš‚€§” pš"ķ” pš‚€¶” pš” p$¢³$³Ÿ”Ō%ķm$¢l,x,y*|*}*|*}%$”ŌIš‚€»” pš#” pš‚€¾” pš"ķ” pš‚€Ģ” pš” p"ķj‹ž#ķk‹‰ü¤ k#)²Õś††F#Ė× ē¤ *x±*y± ÕŪ*y*{ Ō1š‚€Ń” pš#ķ” pš‚€Ö” pš” p*z±*{±*z*{*x*y” Ō1š‚€ā” pš#ķ” pš‚€ē” pš” p¤ j"+²ÕP#"±ÕD††F"Ė× ~±††F"Ė× ± Õ(*x*y††F"Ė× ~††F"Ė× ††F"Ė× ~††F"Ė× *z*{”ŌJš‚€ó” pš#ķ” pš‚€ų” pš"ķ” pš‚” pš” p††F"Ė× ę±††F"Ė× ę ± Õ‡*x*y††F"Ė× ę††F"Ė× ę ††F"Ė× ę††F"Ė× ę *z*{”ŌJš‚ ” pš#ķ” pš‚” pš"ķ” pš‚ ” pš” p"ķj‹Ŗž#ķk‹ž¤ k#)²Õ™†€”#Ė×O¤ *ēɱ*~±”Õx¤ o'+²Õt*ē 'Ė×É °*ē 'Ė×É”°”ŌHš‚%” pš#” pš‚(” pš'” pš‚2” pš” p*ē 'Ė×ɃCŚÕļ'°'° ŌQ†…„Ė×ē ÉŌ>š‚E” pš#” pš‚H” pš‚T” pš” p‹•*ē 'Ė×Ɋ¤ Ф Ф Ф Š ¤ Ф Šց\†…„(Ė×ē ÉńVš‚r” pš#” pš‚u” pš'” pš‚” pš‚Œ” pš” p'ķo‹†ž*ē Ė×Ƀ”Ś*ē Ė×Ƀ–Ś ÕĻ*ēɰÕĤ j"+²Õ¹#"±Õ­†€”"Ė×Oēɱ†€”"Ė×O~±”Ս*ē Ė×Ɇ€”"Ė×Oē Ė×ɰ*ē Ė×Ɇ€”"Ė×Oē Ė×ɰ ŌHš‚˜” pš#” pš‚›” pš"” pš‚«” pš” p"ķj‹A’#ķk‹aż– )Too many warnings, checking is terminated Warning: task % base of memory exceeds top of meFmorytask +'s system stack is inside the task's memorytask 's memory overlaps task 's memorytask 's memory overlaps task 's memorytask 's memory overlaps task 's system stacktask 's memory overlaps RAM Disk 's memorytask 's memory overlaps RAM Disk 's memorytask 's stack overlaps RAM Disk 's memory RAM Disk  has odd number address RAM Disk 's base exceeds its top RAM Disk 's memory overlaps RAM Disk 's memory RAM Disk 's memory overlaps RAM Disk 's memoryTask , logical channel has a zero Winchester partitionnį†Task 's terminal channel has Remote flag ON’ß’ß’ä’ä’é’é’ī’ī’ó’ó’ų’ųTask 's logical channel  has serial channel with Remote flag OFFį†į†Task  is sharing terminal with task  without shared mode sett- TCONFIGMU– CONFIGSA ĪCONFIGSA~: ¤"‡!³‡!€ ³Ÿ”Ō`‘`‡!Ė×ɤ"–!I€€ p–^`"Å€€`p–m€€ p–‚`$Å€€`p–‘€€ p–¦`#Å€€`p–æ!‘€0ŚŌ €€ !p–į`‡Å‡‘€0ŚŌ €€`‡p–ń€€ p–`%Å€€` p–€€ p–*`!Å€€`p–9€€ p–O`‡Å€€`p–_€€ p–u `‡!Å €€`p–!¢"‘h…! ³ ²””…!å ³ ²”” Ō €€!"p–Ī"‘h…! ³ ²””…!å ³ ²”” Ō €€!"p–ä!‘ Ņ €€ !p–`‡Å‡ ‘ Ņ €€`‡ p– €€ p–'`‡Å€€`p–7€€ p–M@`‡AÅ@€€`p–A#"‹Č#‘h †ŚŌT!²Ō ŚŌlЁ€%lŠ=!ҁŠlŠ3!ҁlŠ)!^Ņ€nlŠ!Ņ€KlŠ!Ņ€2lЁK!ŒlŠ\!ҁ€%lŠR!”ŠJ€2lŠH€KlŠC€nlŠ>€–lŠ9,lŠ3XlŠ-°lŠ'lŠ!ŠlЁ` lЁĄlЁ€%lŠ KlŠրŠ € !Œ£lŠր–("‹÷#‘h †ŚŌ>!²ŌlŠ2!ŠŅlŠ(!ŅlŠ!€nҁ^lŠ!€2ҁlЁK!Œl‹!€2Ņ€0l‹„!€KŅ€1lŠz!€nŅ€2lŠp!€–Ņ€4lŠf!,Ņ€5lŠ[!XŅ€6lŠP!°Ņ€7lŠE!Ņ€8lŠ:!ŠŅ€9lŠ/!` Ņ€:lŠ$!ĄŅ€lŠ!KŅ€?lŠ€>lŠ!€ ²ń€ iŠ!²Ōi!ķ£lŠր–} ‡#³‡#€ ³Ÿ”‡"³”‡"³Ÿ”‡!³”‡!³Ÿ”Ō(`‘`‡#Ėׇ"€’ĖŹ`‡#Ėׇ!€’ĖŹ`‘–#ˆ†‘–›€€`p ±i–ėh€€`p ± ±” ±” ±”Ōš‚€r pšrpšrpp# €’”°„!–ś†‘‘ s–’³’ø’½’Ā’Ē’Ķ’Ó’Ł’ß’å’ė’ń’÷’5’ō’’ā&CONFIGSAGE must use BIOS 2.4 or MU 3.33P FA”) ōéÓ½²ŖŸ—…{sbUKC91'x *** PASCALIO  MNUUNIT   Fatal error  in menu systemDuplicate menu Could not find menu for copyNo menu defined before itemIncorrect item for menu styleCould not find Menu for displayyOnnOffCould not find menu *’ ’’’A’Y’ę’źCould not find referenced menu Menu  is  characters too wideeToo many items in menu  -  - 'Select Menu item : Error writing to file , Type space to continuee  Illegal integer valueValue out of range  to  Illegal hex valueONNOFFMust enter ON or OFFFžž’~’ˆ’Å: 'Select menu item : Error closing previous file File for printout: .TEXTCould not open &Warning - item will not fit in displayy’؞ܒ^’’š’¤’Æ’ĄY or N? Error closing printout file Nštpšupš‚€t p!Ó š!tpš‚€ t pštprhp–`!ģ € p! ȖŒ+b„,¬Pb§¢ķi`!v!Ó‘b b§ķp ¤.–-+ØØIč™Ī? Ičb™Ī? N«¬PØØ1iŠ 1| p2( ²|gpĄh āXd40( <?6hIč™Ī? N«čØ0āXdBh `Ä0( <1vh G`¶p0(`=Ø N«–.,ØØIč™Ī? Ičf™Ī? N«¬PØØp0(bBv0)ܰ|gD0)Ü<?6hIč™Ī? N«čØ0āXd1iÜ`6Ič™Ī? BgIč™Ī? N«‘ØØ`Ič™Ī? BgIč™Ī? N«‘ØØ0(°|gd0(<1vh 1| p2( ²|gpĄh āXd*0( <06h<06h°hdfBh `Ī0( <1vh `Ą0( r2(b<=¶hN«–0/…2Ō…mrŠštp–ŅT„,„Z¬Pb„X¬P„,˜`‘ ˜Ó‘š‚€t pš„,˜t p‘†h w…e˜Ņ…h„dŠ…e…hąh„e…hi!˜Ä!ē„,˜‘Ä!ēb˜‘Ä!ē‡VÄ!ē‡UÄ!ē˜Ä!ē‡WÄ!ēÄ!ē Ä!ēw!yĘ„i–[ƒ}„U„€ƒ¬P„,„€¬Pb„¬P„U˜`‘ ˜Ņ*‘š‚€t pš„U˜t pš‚€$t p‘†h w…e…hąh„e…hi!˜Ä!ē„,˜‘Ä!ēb˜‘Ä!ē‡~Ä!ē Ä!ē {Ä!ē }Ä!ē ęÄ!ē ę Ä!ē yÄ!y!yxķĘ„i–€„,`w ¤+…h¤,‡+ē‡-ć-y§‡,ę ²ń ‡,ē ‡-y§Ä‡,ē‡,ęķć,²Ÿ‡-|€ Śå”Ō&‡-|°‡-~å”Ō‡+ē˜ÄŠa‡,‘‡+ēa˜‘Ċ ē˜Ä…i˜Ņ …hē Ċ…i Ä „i–-c…h˜Ņ‘š‚€)t p‘…h} Ó,‘š‚€7t pš…hz˜t pš‚€At p‘–¤+b„0¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡/Ä!ē‡.Ä!ē‡-Ä!ē‡,Ä!Ä ‘–1Ų+b„.¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡-Ä!ē‡,Ä!Ä ‘–/ +b„.¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡-Ä!ē‡,Ä!Ä ‘–/VT„,„Z¬Pb„V¬P‘`w i!ēÄ!ē„,˜‘Ä!ē‡YÄ!ē‡XÄ!Ä ēb˜‘Ä ē‡UÄ ‘–[+b„/¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡.Ä!ē‡-Ä!Ä!ē‡,Ä ‘–0Ź+b„/¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡.Ä!ē‡-Ä!Ä!ē‡,Ä ‘–0ž+b„.¬P‘`w i!ēÄ!ēb˜‘Ä!ē‡-Ä!ē‡,Ä!Ä ‘–/ *a„,¬Pa˜‡+`‘ xķÄ ‘–- q)`„*¬P`˜†j‘…j˜Ņ0‘š‚€Gt pš`˜t pš‚€Rt pštp‘…j{„k…j~„.„c–+ ¢)ˆ§­³ń `­ˆ§£Č`ģ`§€ p`˜ˆ€P” –) Ō.„ga‚€YėP…jh…ky|‹ó0as ‹ķa†ėP‹ā…ky}¤+‡+²ń 1‡+£as ¤+0‡+as ‹æ2Ō a‚€ZėPŠa‚€\ėP‹§…ky~Ձ…ky}˜„,‘‡,˜ÓI‡,}Ņ9¤.‡,{¤-‡-˜±‡.å”Ō‡-y{0Ҥ.Ї-x¤-Šć‡.Ō a‡-yyėPŠŠa†ėPŠ'‘š‚€^t pš…ky}˜t pštp‘ААŠ0…ky{Ņa‚€iėPŠրja§ ²ń„ga ȅk|˜Ó…k|aėP–. qh…k˜±Õƒ…k|˜Ós„c„-…kyj"|ŅH"~ŌB"}˜a‘!˜Ó!}Ņ!~„.Š…j~„."{„/"z„0Š‘š‚€st pš"}˜t p‘Š…j~„."{„/"z„0"|„1¦hŠ…kx„kŠ„ch Õk’– p…jꄁu…pķ£h…ję …j¢¢i…uī ķ„s…s!Œ…o²ńOš‚€ƒt pš…jz˜t pš‚€†t pš…s!Œ…o£tpš‚€‰t pštp‘!„r„t…s²ń…o…s!Œ£…sī„t…t ²ń „t…usķ„q…r…sŒ…t…sj"…j|§£„w…w³ń„wŠ…w„w…q¢„l…q¢„m– „pÓ„x„y– ÄØØ0)Ü<1vh 0(°|oSh0( <1vh `äp0( =Ø N«–Ę„n„y…2Ōr Šštpštp…xŌ †5t†5t…w²ńš€ …wup…xŌ †5€ …wuš…j|˜t pštp…xŌ†5…j|˜t †5tštp…xŌ†5t…qīnj"&²Õń…sīoi!'²ÕĢ!…qŒ"¢k#…u³ŸÕµ#` #³ń€A#¢lŠ[#€$³ń €0#¢£lŠL#€$Ņ€*lŠB#€%Ņ€#lŠ8#€&¢³ń €a#¢€&£lŠ&‘š‚€”t pš…jz˜t pštp‘ ē$Ä ē!…r…t¢ŒŹ ē"¢Źš$upš‚€ t pš yy˜t p…xŌ†5$u†5‚€¢t †5 yy˜t …ję yy§£m%²ńš€ %up…xŌ †5€ %uš€ up…xŌ †5€ u |˜Óš |˜t p…xŌ †5 |˜t Š&…j²ńš€ …jup…xŌ †5€ …ju!…sīÓ\…t²ńš€ up…xŌ †5€ uŠš€|up…xŌ †5€|u…t²ńš€ …tup…xŌ †5€ …tu!ķi‹.žštp…xŌ†5t"ķj‹ žštp…xŌ&†5t†5‚€¤t †5t†5t†5t„x…yŌ<…2Ō …q¢rŠštpš‚€øt pš†z˜t pštpr„v–šupš‚€Ät pš`t pštpŌšt p € Ņā…2ńštpštp„4–9„gh`ˆ‚€Ńsi…ky|‹’…kyj`ˆ†s儁g`ˆ‚€Ņsi ˆ§³ń„g…gŌ š‚€Ót p0"}²Ÿ0"~³Ÿ Ō2„gš‚€Žt pš"~tpš‚€čt pš"}tp‹‚†ˆėPŠx`ˆ††s儁g`ˆ‚€ėsi ˆ§³ń„g…gŌ š‚€ģt pŠ;ˆs ˆ‚€õčŌ„Š!ˆ‚€÷čŌ„Š„gš‚€łt pŠց–°štp…f˜Ņ†fw…f˜Ä…fē˜ÄŠ-…fx˜Ņˆw…f­Ä­ē…fÄ­˜Ä­„fŠ…fx„f…f煁jąkyh {„/ z„0 }˜‘ „-¦–9…2Ō …q¢rŠštpš…kyy˜t pš‚ t pšˆ€Pt pšt pˆ§²ń3ļ#…gŌš!¦Š"„c¦„-…kyh…j~„. {„/ z„0 |„1Ц–¾„c¦„-…kyi…j~„.!{„/!z„0!|„1!{„…j{h ˜ÓL |˜ÓB |§²ń: | |§§€ Ó/ | |§€ ȅ2Ō" ēÉ¢…ję ¢ ēɔ š |˜t p xhа„–ó¦„-…kyh…j~„. {„/ z„0 |„1…ky}Ō„cŠ„c–Ņ-i…2Ō…q¢r…q¢rš‚ t pš`t pštpåՐ €!Ņ „c„3€"p…ję€&²Ō €a³ €z²”Ō €a£€A¢h…j{„k!允k˜±”Ō…k{ ŅiŠ…kx„kŠā!Ō+…ky|k#ŚŌ$Š#ŚŌ%Š#Ґ&Š#Ґ'‹  €=°Õź…2Ō …q¢rŠštp…bŌ@†5” pÓ0šupš‚ t pš†z˜t Gpštpr„v„bš‚/t pš†zt pšt p†z§²ńf‚9†zs †5†z˜” pÓG…2Ō …q¢rŠštpšupš‚<t pš†z˜t pštpr„vŠ„bŠ €/°…b”Ō„xļŠ šupŠ št p„ci!Õ*ž–- h…c‹!…4ńW…2Ō*…kēÉ¢…ję ¢…kēɔ š…k|˜t pŠ štp…gŌ…2Ō…q¢rš‚Dt p…nŌ„cŠ„c…4…g Ō !…j}Ņ„c‹¢…3Ō„cŠ#…4Ԑ!„cŠ…j²ń …j{„kŠ„cŠs…kx„kŠf„cŠ\"ŠX„-hŠQ…j~„.h„-„cŠ@…f˜Ó1…fz˜Ó$…fzz˜‘ h…fē˜Ä…fy˜Ó…fy„f„-Š„cŠ„cŠցX ÕŅž„4–,…2Ōr Šštpštp„n–Ć,c„-¬Phj¤/šc˜t pš€ upšat p!€Y°!€y° Ōš!up¤/jŠD!€N°!€n° Ō jš!upŠ,štpŌšt pšup ń š‚bt ph"Ō–štp–.į*a„-¬Pa˜‡,`‘ ˜Ó‡+ yėP–.(T„,„X¬Pb„U¬P„,˜‡W`‘ ˜Ó) y§i!b§Ó!b§²ń !b§£bs Šb y§Č ybėP–YI<`r„;É„p„;É„o„<É„2–<݆5†aį” ˜„d˜„e˜„h˜„i˜„j˜„k˜„f„c„n„4„3„x„b‘(” …bŌG†5” pÓ7štpšupš‚gt pš†z˜t pštpr„v„b†5” – – a ŚŸ |åD:d»l»Ó‹D Ȳ©‚ s d   kށgJ-īŌ“ėš §(*** FILEOPS GOTOXY STRINGOP HEAPOPS EXTRAHEAEXTRAIO PASCALIOSIOUNIT SCREENOP żSIOUNIT Ź3k"x!§²Ō !"xģ§Ņk""xķˤ+b„,¬P¤0i‡/x‡.§²ŌQ‡.‡/xģ§hb§Ņ bģ§Ņ ¤0‡/‡/xķĊiŠ*b§²ń!b§ bģpb§Ó ¤0‡/‡/xķĊiŠiŠi!Ō –/ o$Äijh&%€-‘ŌjŠ &%€+‘Ō&x%§²Ō(%&xģ§k#ƒ€ŚŌh&&xķÄ$$x Œ#¢€0£ÄŠiŠi!ŌĖ Ō o"Ō$$xᎤ %Ä$Äh'x&§²Ō[&'xģ§j"ƒ€ŚŌG¤ ''xķÄ"ƒ€ ŚŌ€0iŠ"ƒ€ŚŌ€A £iŠ€a £i$xk%%xŒc É¢Ä$$xŒ"¢!£ÄŠhŠh Ԙ–Ąmh$x#§²Ō!#$xģ§i!ƒ€ŚŌ m$$xķÄ!"‘ŠhŠh ŌŅ–$#"‘ńmpmh$x#§²Ō#$xģ§i!ƒ€ŚŌ $$xķÄ!"‘ŠhŠh ŌŌ–?#§²ń,#§jh "²Ō!# ģ§i!€a³Ō!€z²Ō # ģ!€a£€A¢Č ķhŠŚ–Ć£„{„€„¬P‡€¤§Ņ p`‡€¤ėP`‘ „{˜`˜r`§„{§£ķ±`§„{§ķ² ``§ģ§€.±”Ō‡€¤¤*„*‡€¤˜€Pr„*„{˜€ r„*ėP‡€¤‡€¤§ģ§€.Ņ ‡€¤‡€¤§r–€¦ė4‡6s` s‡5nf‡5˜€Prf`˜€ZrfėP–6 §€P³ń §ķČ §ģ!ȖK&²Ÿ&³Ÿ”Ō2'k&īli!$³Ō&c!ĖŲÉh ³ń€0 ¢jŠ€A ¢ £j"%‘!īiŠÕ–‰z‡|²Ÿ‡|€Q³Ÿ”Ō)`‡|Č`ģ‡|€ p‡{¤*„*‡{˜€Pr„*`˜€ r„*ėP–|’t–’’~~’~’ž’’ž’’’ž’’ž’"Ød†x āʉTĒ ***  LONGOPS STRINGOP ?StopBits : INTEGER; ?Dir : CrWhoAmI; ?Model : STRING; ;VAR Rslt : CrBaudResult );  PROCEDURE CrCommQuit;  PROCEDURE CrPutRem (c : CHAR);  PROCEDURE CrAnswer;  PROCEDURE CrBreak;  PROCEDURE CrDial (Number : STRING; WaitChar : CHAR; VAR Rslt : CrDialResult);  PROCEDURE CrHook (OnHook : BOOLEAN);  PROCEDURE CrSetAddress (Port : CrRemPort);  PROCEDURE CrDelay (Tenths : INTEGER);  PROCEDURE CrSetDtr (Setting : CrState);  PROCEDURE CrSetRts (Setting : CrState);  FUNCTION CrRemStat : BOOLEAN;  FUNCTION CrGetRem : CHAR;  FUNCTION CrCarrier : BOOLEAN;  FUNCTION CrClearToSend : BOOLEAN;  FUNCTION CrRinging : BOOLEAN;  FUNCTION CrDialTone : BOOLEAN;  FUNCTION CrKbStat : BOOLEAN;  FUNCTION CrGetKb : CHAR;   IMPLEMENTATION H°REMUNIT G4+b„,¬Pb§ih !²Ō b §‘ ķhŠń–-‘å"²Ÿ”Ō‘ "īj!°‘”Ō‘0ŅjŠÜ‘Ō‘h €0³ €5²”Ō €0£kŠkŠk–±)`„,¬Pp" ‘‚€ ‘`˜‘‘ ‘‘ p"‡+‡*‘¤.–-ūh īh‚€ …€Æ‘i!Ó ‘ ‚€‘‘ !° ² ŌÖ!ŅjŠ‚€ …€Æ‘°j–&†€®Č ҆€® pŠ †€®p–Q†€®€ Č Ņ†€® pŠ †€®p–i†€p$†€ē Éåh–І€p$†€h ēÉ ē Éå”i–Ÿ†€p$†€x²Ÿh–µ†€p$†€x²Ÿh–Ō` p4Ō `§€”iŠ`§i–ę`!Č` p–ų` p`§i–$jh "²Ō”ki!#²Ō!ķiŠö ķhŠę–=`Č` p‘ `p–T3Ņ ‘°hŠh–w„ ‚€2X‘€"ŚŌ„Š„–ƒ3°åh–æT„,„W¬Pia‚€3ra„,˜€Rra˜X‘€#ŚŌ‡UĊ‡UÄ„–X Ō3ґԂ€5…€Æ‘Ņ„Š-3Ņ):Ņ‚€6…€Æ‘ŅŠŠ‚€7…€Æ‘Ņ„–ł/f„1¬P‡8„‡7„‡6„‡5„ ‡4„ ‡3„ † fė’† §mh %²Ō † §ƒ€9ŚŌ† † §€a£€A¢Č ķhŠŪ‚€A† ˜r²Ÿ„a†€ŒÅK‡6ib‚€D† ˜r²ŸŹb‚€H† ˜r²ŸŹb ‡5£Źb ‡8Źb ‡7ʇ4ŅbʊbŹdŹ€€ap‡0Äņ€‡6ĢĆsņ€Ā愀Ɩ8>$„ #„„p""p°Äp"""xp°”Ä"xԁ°‚€L`‘!‘Ċ!ĖG‘ –Y`"ņ`Å–j „€Æ`a‘–Œ€€†€Œp‘t‘€€†€Œp–’ż€’’’žÉ’’AT #E Q V X1 S7=60 S10=30 S11=36 S12=40+++#E Q V X1 S7=60 S10=30 S11=36 S12=40ADTTHOH11’ž’MASKKFLOWINNFLOWOUTMaskk/[B õŅ>!·«ŻĒ•€ž&bD,ģ!Œ’7*** REALOPS STRINGOP œREMUNIT €€€€€€€€€€€€€€€€®2Copyright 1979 - 1983, RB&A. All rights reserved.\Ždķš’F"ˆ\Ž"   TYPE (CrDialResult = (CrOffHook, CrDialError, CrNoAutoDial ); (CrBaudResult = (CrBadParameter, CrBadRate, CrSetOk, CrSelectNotSupported); (CrWhoAmI = (CrOrig, CrAns); (CrState = (CrOn, CrOff, CrAuto); (CrRemPort = RECORD ,Part1 : INTEGER; ,Part2 : INTEGER ,END;   VAR (CrAttenChar : CHAR; (CrCurrentPort : CrRemPort;    PROCEDURE CrCommInit (Dir : CrWhoAmI; 6Atten : CHAR; 2VAR RemExists : BOOLEAN; 2VAR DialerExists : BOOLEAN);  PROCEDURE CrSetCommunications (Parity : BOOLEAN; ?Even : BOOLEAN; ?Rate : INTEGER; ?CharBits : INTEGER; ?StopBits : INTEGER; ?Dir : CrWhoAmI; ?Model : STRING; ;VAR Rslt : CrBaudResult );  PROCEDURE CrCommQuit;  PROCEDURE CrPutRem (c : CHAR);  PROCEDURE CrAnswer;  PROCEDURE CrBreak;  PROCEDURE CrDial (Number : STRING; WaitChar : CHAR; VAR Rslt : CrDialResult);  PROCEDURE CrHook (OnHook : BOOLEAN);  PROCEDURE CrSetAddress (Port : CrRemPort);  PROCEDURE CrDelay (Tenths : INTEGER);  PROCEDURE CrSetDtr (Setting : CrState);  PROCEDURE CrSetRts (Setting : CrState);  FUNCTION CrRemStat : BOOLEAN;  FUNCTION CrGetRem : CHAR;  FUNCTION CrCarrier : BOOLEAN;  FUNCTION CrClearToSend : BOOLEAN;  FUNCTION CrRinging : BOOLEAN;  FUNCTION CrDialTone : BOOLEAN;  FUNCTION CrKbStat : BOOLEAN;  FUNCTION CrGetKb : CHAR;   IMPLEMENTATION H›REMUNIT ś[*a„+¬Pšrša˜r š‚€r ‘h ƒ€ ŚŌņš sšr ƒ€ڤ-–,††€®Č ҆€® pŠ †€®p–±†€®€ Č Ņ†€® pŠ †€®p–Ɇ€p$†€ē Éåh–ꆀp$†€h ēÉ ē Éå”i–’†€p$†€x²Ÿh–†€p$†€x²Ÿh–4` p4Ō `§€”iŠ`§i–F`!Č` p–X` p`§i–|$jh "²Ō”ki!#²Ō!ķiŠö ķhŠę–`Č` p‘ `p–æ3҆€p$†€h ē ÉåiŠi–Ģ„ ‘ –ć3ŅhŠ ‚€‘h–*a„-¬Pšrš‚€$r ša˜r ‚€,‘Ō‡+Ċ‡+Ä„–.” ŌB‘ 3Ņ9„šrš‚€:r :Ņš‚€Gr šrŠš‚€Or šrŠ+‘ 3Ņ$„šr:Ņ š‚€Vr Š š‚€kr –d/f„1¬P‡8„‡7„‡6„‡5„ ‡4„ ‡3„ † fė’† §mh %²Ō † §ƒ€tŚŌ† † §€a£€A¢Č ķhŠŪ‚€|† ˜t²Ÿ„a†€ŒÅK‡6ib‚€† ˜t²ŸŹb‚€ƒ† ˜t²ŸŹb ‡5£Źb ‡8Źb ‡7ʇ4ŅbʊbŹdŹ€€ap‡0Ė8¦$„ #„„p""p°Äp"""xp°”Ä"xԁ°‚€‡`‘!Ċ!˲‘ ‘ –Ć`"ņ`Å–Š`a‘–ņ€€†€Œp‘u‘€€†€Œp– ? [y/n] : @@Get a good Dial ToneePlease Dial : Did you Succeed in DialinggPhone assumed On Hook in Originate mode. Answer mode..)Phone assumed Off Hook in Originate mode.Answering Phone..’ž’MASKKFLOWINNFLOWOUTMaskkä „‚čŃg[wE0®ŪōĄāœÕL“ź*** STRINGOPEXTRAIO PASCALIO O^¦5§I(.TITLE "SAGE IV Multi-User System Bootstrap" .PROC BOOTMU   ;********************************************************************** ;  ; SAGE IV COMPUTER - Multi-User System Bootstrap  ;  ; File: MU4.FBOOT.TEXT  ; Date: 20-Sep-83  ; Issue: 1A  ;  ;  ; COPYRIGHT (c) 1982, 1983 SAGE Computer Technology  ; All Rights Reserved  ;  ;**********************************************************************  ;  ; History:  ;  ; 1  3-May-83 Initial release.  ; 1A 20-Sep-83 Fixed Boot extension & User boot options.  ;  ;**********************************************************************  ;  ; This bootstrap is to be located in logical blocks 0 and 1 on a  ; floppy diskette. The floppy diskette bootstrap command in the  ; PROM Debugger will read logical blocks 0 and 1 into memory at  ; location 400H.  ;  ; The bootstrap routine first reads in the p-System directory  ; from the floppy diskette. Then the bootstrap searches the  ; directory for the file MU.BIOS which contains the SAGE  ; Multi-User Basic Input/Output System routines. Once found the  ; BIOS code is positioned into the highest memory available.  ;  ; Next the bootstrap searches for the file MU.CONFIG. If it  ; finds the file it reads it into memory. Otherwise the bootstrap  ; prompts the user for the configuration file name. An immediate  ; carIriage return will terminate the bootstrap. Once the  ; configuration file is found it is read into memory and its  ; address is store at CONFADDR (208H).  ;  ; Finally the bootstrap transfers to the BIOS for initialization  ; and the Multi-User executive takes control. The BIOS only  ; returns if no tasks are defined.  ;  ; Note: The Boot extension and User bootstrap features are not yet  ; supported.  ;  ;********************************************************************** (  ; Macro for calls to PROM area.  ; (required for generation of long addresses). (.MACRO LJSR (.WORD 4EB9H (.WORD 00FEH (.WORD %1 (.ENDM (  ; Permanent jump vector assignments in PROM  KEYBCH .EQU 8H ;Get a keyboard character  TERMCHAR.EQU 14H ;Output a character  TERMTEXT.EQU 18H ;Printout text string  TERMCRLF.EQU 1CH ;Printout carriage return & line feed  FDREAD .EQU 28H ;Read from floppy diskette (  ; RAM variables for Debugger  MEMTOP .EQU 100H ;Top of memory   ; RAM variables for BIOS  BIOSBASE.EQU 200H  CONFADDR.EQU 208H  (  ; Constants for BOOT positioning  HDSIZE .EQU 26. ;Size of header data in uncompressed code file   (.ASCII "BOOT" ;This text is checked by the Debugger @; bootstrap process to insure that the @; boot area has been initialized with @; a bootstrap routine.   START ;The Debugger transfers control to @; offset 4 in this file. (  LEA SCRATCH,A3 ;Set up RAM area for bootstrap (MOVE.L (A7)+,(A3) ;Save the return address (MOVE.W (A7)+,4(A3) ;Save the drive number (CLR.B 21.(A3) ;Clear the BIOS active flag (  ; Output initial boot message (LJSR TERMCRLF (LEA INITMSG,A0 ;Printout "SAGE Multi-User Bootstrap" (LJSR TERMTEXT (LJSR TERMCRLF (  ; Read in p-System directory (LEA DIRNAM-1,A6 ;Set up message in case of error @; note: does not have byte count. (MOVE.W #2,-(A7) ;The p-System directory is at block 2 of ( ; each devices. (LEA BUFFER,A0 ;Set up the directory buffer address (MOVE.L A0,-(A7) ;Buffer address (MOVEA.W #2048.,A0 ;The directory is 2K bytes long (MOVE.L A0,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in the directory with the floppy @; driver in PROM. (BNE BADREAD ;Found error reading directory (  ; Now search for MU.BIOS and read in first block (LEA BIOSNAM,A6 ;Set up search string (BSR SEARCH (BNE SRCHERR ;Could not find MU.BIOS (ADDQ.W #1,D1 ;Code starts at relative block 1 in file (MOVE.W D1,-(A7) ;Set up logical block for BIOS code (MOVE.W D1,6(A3)  ;Save logical block for later (LEA BUFFER2,A5 ;Set up buffer address for first block (MOVE.L A5,-(A7) ;Buffer address (MOVEA.W #512.,A0 ;Set up size for one block (MOVE.L A0,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in first block (BNE BADREAD ;Found error while reading BIOS (  ; Calculate target address for BIOS and read it into memory. (LEA BIOSPASS,A0 ;Check for BIOS password code (LEA BUFFER2+HDSIZE,A5 ;Adjust for header data in code file (CMPM.L (A5)+,(A0)+ (BNE BADPASS ;Password is not correct (MOVE.W 6(A3),-(A7) ;Set up logical block number (MOVEA.L MEMTOP,A1 ;Get current top of memory (MOVEA.W (A5)+,A0 ;Get BIOS code size (ADDA.W #HDSIZE,A0 ;Also read in header data (SUBA.L A0,A1 ;Set up code address for floppy driver (MOVE.L A1,-(A7) ;Set up BIOS codefileI address in memory (MOVE.L A0,-(A7) ;Set up floppy transfer length (ADDA.W #HDSIZE,A1 ;Now form actual code address (MOVEA.L A1,A4 ;Save base of BIOS to calculate init address (MOVEA.W (A5)+,A0 ;Get size of BIOS buffer area (SUBA.L A0,A1 ;Form base of BIOS area in memory (MOVE.L A1,BIOSBASE ;Store new top of memory address (ADDA.W (A5),A4 ;Form BIOS Initialization routine address (MOVE.L A4,8(A3) ;Save starting address (MOVE.L 88.-8(A5),12.(A3) ;Save RAM Disk address (MOVE.L 92.-8(A5),16.(A3) ;Save top of RAM Disk (MOVE.B 96.-8(A5),20.(A3) ;Save RAM Disk Boot Flag (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in the whole BIOS (BNE BADREAD ;Found error while reading BIOS (  ; Read in Configuration info (LEA CONFNAME,A6 ;Set up search string (BSR SEARCH (BEQ $60 ;Found default file MU.CONFIG   ; Prompt user for name of configuration file  $10 LJSR TERMCRLF (LEA ASKCONF,A0 ;Ask for configuration file (LJSR TERMTEXT (LEA FILENAME,A6 ;Build filename string (CLR.W D1 (MOVE.B D1,(A6)  $20 LJSR KEYBCH ;Get a keyboard character (CMPI.B #0DH,D0 ;Check for carriage return (BEQ.S $50 ;Found terminator (CMPI.B #8,D0 (BEQ.S $40 ;Found Backspace (CMPI.B #" ",D0 (BLE.S $20 ;Don't process control characters or space (CMPI.B #15.,D1 (BGE.S $20 ;Too many characters (ADDQ.W #1,D1 ;Advance pointer (MOVE.B D0,0(A6,D1.W) ;Store character  CLR.B 1(A6,D1) ;Set up null terminator  $25 MOVE.B D1,(A6) ;Update string count (LJSR TERMCHAR ;Echo the character (BRA $20 ;Back for another character (  ; Handle backspace  $40 TST.W D1 (BEQ $20 ;Don't backspace past beginning (LJSR TERMCHAR ;Output Backspace (MOVEQ #" ",D0 ;Output blank (LJSR TERMCHAR (MOVEQ #8,D0 ;Set up another backspace (SUBQ.W #1,D1 ;Back up the pointer (BRA $25 (  ; Handle no file  $45 LEA SRCHMSG,A0 ;Printout "Could not find " (LJSR TERMTEXT (MOVEA.L A6,A0 (ADDQ.L #1,A0 (LJSR TERMTEXT ;Printout file name (LJSR TERMCRLF (BRA $10 ;Try again (  ; Handle carriage return  $50 LJSR TERMCRLF (TST.B D1 (BEQ PRTERR2 ;Null name field, exit debugger (BSR SEARCH (BNE $45 ;Did not find file (  $60 MOVE.W D1,-(A7) ;Set up logical block (LEA BUFFER3,A5 ;Set up buffer address (MOVE.L A5,-(A7) ;Buffer address for driver (ADDA.W #512.+HDSIZE+6,A5 (MOVE.L A5,CONFADDR ;Save address in BIOS area (ADDA.L D2,A5 ;Set up free address beyond configuration (MOVE.L A5,12.(A3) (MOVE.L D2,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in configuration (BNE BADREAD ;Found error while reading Configuration ( (MOVEA.L CONFADDR,A5 ;Check password on configuration (SUBQ.L #6,A5 (LEA CONFPASS,A0 (CMPM.L (A5)+,(A0)+ (BEQ.S $65 ;Password is good (LEA NOCONFIG,A0 ;Printout not configuration (LJSR TERMTEXT (LJSR TERMCRLF (BRA $10 (  ; Search for the optional MU.BOOTEXT.CODE file  $65 MOVEQ #0,D4 ;Default address (LEA BOOTEXT,A6 (BSR SEARCH (BNE.S $70 ;Optional boot extension not found (MOVE.W D1,-(A7) ;Set up logical block (LEA SCRATCH,A3 (MOVE.L 12.(A3),-(A7) ;Set up memory buffer (MOVE.L D2,-(A7) ;Length of transfer (MOVE.W 4(A3),-(A7) ;Set up drive number (LJSR FDREAD ;Read in boot extension code (BNE BADREAD ;Found error while reading boot extension (LEA SCRATCH,A3 (MOVE.LJ 12.(A3),D4  ADDI.L #512.+HDSIZE,D4 ;Bias to p-System assemby code (MOVEA.L D4,A5 (LEA EXBTPASS,A0  CMPM.L (A5)+,(A0)+ (BEQ.S $70 ;Good boot extension (LEA BADEXT,A0 ;Printout bad MU.BOOTEXT.CODE (LJSR TERMTEXT (LJSR TERMCRLF (MOVEQ #0,D4 ;No boot extension (  $70 LEA STACK,SP (MOVE.L D4,-(SP) ;Pass boot extension address (MOVE.W 4(A3),-(SP) ;Physical drive number  ADDQ.W #4,(SP)   ; Search for the optional USER.BOOT.CODE routine (MOVEQ #0,D4 ;Default User boot routine address (LEA USERBOOT,A6 (BSR SEARCH (BNE.S $80 ;No user boot (MOVE.W D1,D4 ;Save routine block address  $80 MOVE.L D4,-(SP) ;Pass User Boot routine address (MOVE.L D2,-(SP) ;Pass User Boot routine size (MOVE.W #0ABCDH,-(SP) ;New boot indicator code ( ; Initialize the BIOS  ENTER MOVEA.L 8(A3),A4 ;Get BIOS initialization address (JSR (A4) ;Initialize BIOS (  ; Never returns unless no tasks defined (MOVE #2700H,SR ;Make sure interrupts disabled (LEA NOTSKMSG,A0 (BRA PRTERR1 ( (  ; Search Routine for directory entry  ; A6 is pointer to target string.  ; A1 is returned with block address of start of code in file.  SEARCH (LEA BUFFER+32.,A5 ;Set up pointer to directory entry @; skipping initial volume entry. (LEA -16.(A5),A0 (MOVE.W (A0),D0 ;Get number of files (CMPI.W #77.,D0 ;Check for limit (BLE.S $5 ;Within limit  ROL.W #8,D0 ;Check if byte directory needs flipped  CMPI.W #77.,D0 ;Check limit again (BGT BADDIR ;Illegal directory   ; Swap bytes in directory (MOVE.W D0,(A0) ;Store swapped number of files (ADDQ.L #4,A0 (MOVE.W D0,D3 (BSR.S BYTSWAP ;Swap the date word (ADDQ.L #4,A0  ; Swap each directory entry  $2 BSR.S BYTSWAP ;First block (BSR.S BYTSWAP ;Last block (BSR.S BYTSWAP ;File kind (ADDA.W #16.,A0 (BSR.S BYTSWAP ;Last byte of data (BSR.S BYTSWAP ;Date (SUBQ.W #1,D3 (BNE $2 ;Back for more (  $5 TST.B D0 ;Check for empty directory (BEQ.S $40 ;Directory was empty, entry not found (  ; Base of loop for each entry  $10 MOVEA.L A6,A0 ;Set up pointer to test string (MOVEA.L A5,A1 ;Set up pointer to directory entry (CLR.L D1 (MOVE.B (A6),D1 ;Set up byte count for testing (  ; Base of loop for each character  $20 CMPM.B (A0)+,(A1)+ ;Compare the entries (DBNE D1,$20 (BNE.S $30 ;Found miscompare (CLR.L D2 (MOVE.W -6(A5),D1 ;Get starting block number (MOVE.W -4(A5),D2 ;Get trailing block number (SUB.W D1,D2 ;Form size in blocks (LSL.L #8,D2 ;Form size in bytes (LSL.L #1,D2 (CLR.B D0 ;Zero flag indicates success (RTS (  $30 SUBQ.B #1,D0 ;Check entry count (BEQ.S $40 ;Could not find entry (LEA 26.(A5),A5 ;Short way to advance address pointer (BRA.S $10 ;Back for another try (  $40 MOVE.B #1,D0 ;NE flag indicates failure (RTS (   ; Byte swap routine  BYTSWAP MOVE.W (A0),D1 (ROL.W #8,D1 (MOVE.W D1,(A0)+ (RTS    ; Found error while reading diskette.  ; Printout message about problem and return to debugger.  BADREAD LEA READMSG,A0 ;Printout "Error reading "  BRA.S PRTERR    ; Could not find "BIOS" password in SYSTEM.BIOS file.  ; Printout message about problem and return to debugger.  BADPASS LEA PASSMSG,A0 ;Printout "Not BIOS code in " (BRA.S PRTERR    ; Directory entry size was in error.  ; Printout Jmessage about problem and return to Debugger.  BADDIR ADDQ.L #4,A7 ;Get rid of return address (LJSR TERMCRLF (LEA DIRMSG,A0 ;Printout "Illegal directory" (BRA.S PRTERR    ; Could not find file in directory.  ; Printout message about problem and return to debugger.  SRCHERR LEA SRCHMSG,A0 ;Printout "Could not find " (   ; Printout error message  PRTERR LJSR TERMCRLF (LJSR TERMTEXT (MOVEA.L A6,A0 ;Set up pointer to name of item being read (ADDQ.L #1,A0 ;Bypass byte count  PRTERR1 LJSR TERMTEXT ;Printout type of information (LJSR TERMCRLF  PRTERR2 MOVEA.L (A3),A0 ;Return address to Debugger  JMP (A0)  (  ; Passwords (must have word alignment)  BIOSPASS.ASCII "BIOS" ;MU.BIOS password  CONFPASS.ASCII "MUCF" ;Configuration password  EXBTPASS.ASCII "MUBE" ;Boot extension password    ; Messages  INITMSG .ASCII "SAGE IV Multi-User System Bootstrap" (.BYTE 0   READMSG .ASCII "Error reading " (.BYTE 0   SRCHMSG .ASCII "Could not find " (.BYTE 0   PASSMSG .ASCII "Not BIOS code in " (.BYTE 0   NOTSKMSG.ASCII "No Tasks" (.BYTE 0   ASKCONF .ASCII "Configuration file? " (.BYTE 0   NOCONFIG.ASCII "Not MU configuration" (.BYTE 0    BADEXT .BYTE 7 (.ASCII "Bad MU.BOOTEXT.CODE" (.BYTE 0   DIRMSG .ASCII "Illegal "  ; Must fall into DIRNAM.   ; File names  DIRNAM .ASCII "directory" ;Only for error printout (.BYTE 0   BIOSNAM .BYTE 8 ;String byte count (.ASCII "MU4.BIOS" (.BYTE 0 ;Terminator for TERMTEXT   CONFNAME.BYTE 9 (.ASCII "MU.CONFIG" (.BYTE 0 (  USERBOOT.BYTE 14. (.ASCII "USER.BOOT.CODE" (.BYTE 0 (  BOOTEXT .BYTE 15. (.ASCII "MU.BOOTEXT.CODE" (.BYTE 0 ( (.BYTE 2 ;Bootstrap Version @;If bootstrap ends with a non-zero value @; the device to device bootstrap transfer @; can determine the size. ( (.ALIGN 2  SCRATCH .EQU *+1024. ;Ram scratch area  ;Offsets: @; 0.- Return address to Debugger @; 4.- Drive number (0 or 1) @; 6.- Logical block for BIOS @; 8.- Starting address of BIOS @;12.- Starting address of boot extension @;16. @;20. @;21. @;22.- Temporary storage (4 bytes)   FILENAME.EQU SCRATCH+26. ;Configuration file name  STACK .EQU FILENAME+18.  BUFFER .EQU STACK+512. ;p-System directory  BUFFER2 .EQU BUFFER+2048. ;First block of BIOS  BUFFER3 .EQU BUFFER2+512. ;Configuration storage  (.END    žBOOTMU ‹BOOTMU IV.13 [a.1]Kż ū’’BOOTGśÖ&Ÿ7_B+N¹žAśÜN¹žN¹žMśp?<Aś Ö/0|/?+N¹ž(fdMśYaęfrRA?7AKśØ/ 0|/?+N¹ž(f6AśpKś¤±f.?+"x0]Šü“Č/ /Ņü(I0]“Č!ÉŲÕ'L'mP 'mTmX?+N¹ž(fąMśßabg’N¹žAśrN¹žMś BAN¹ž gZ g oč lāRA€B6N¹ž`ĪJAgŹN¹žp N¹žpSA`ŽAśėN¹ž NRˆN¹žN¹ž`‚N¹žJg„aŠfŅ?Kśš/ Śü !ĶŪĀ'M /?+N¹ž(f*x]AśV±gAśÉN¹žN¹ž`’*xMśa|fD?Gś/+ /?+N¹ž(fÖGś(+ „*DAś±gAśŒN¹žN¹žxOś/?+XWxMśØa f8//?<«Ķ(kN”Fü'Aś`¦KśšAķ’š0 @Mo&įX @Mnj0€Xˆ6aLXˆaHaFaDŠüa>aaĪfZRA/'AKś/ 0|/N¹ža,A2 (MOVE.W #11.,(A2)+ (MOVE.W #21.,(A2)+ (MOVE.W #22.,(A2)+ (MOVE.W #23.,(A2)+   ; Write back new Channel Map (LEA CHMAPNEW,A2 (MOVE.L A2,8(A0) ;New Channel Map address (MOVEQ #1N2.,D0 ;Write request (TRAP #14.   ; Read in RAM Disk Configurations (LEA RDCNFARG,A0 (LEA RD1CONF,A1 (MOVE.L A1,8(A0) ;Destination address (MOVE.W #16.,14.(A0) ;Device (MOVEQ #11.,D0 ;Read request (TRAP #14. ( (LEA RDCNFARG,A0 (LEA RD2CONF,A1 (MOVE.L A1,8(A0) ;Destination address (MOVE.W #17.,14.(A0) ;Device (MOVEQ #11.,D0 ;Read request (TRAP #14.  (LEA RDCNFARG,A0 (LEA RD3CONF,A1 (MOVE.L A1,8(A0) ;Destination address (MOVE.W #18.,14.(A0) ;Device (MOVEQ #11.,D0 ;Read request (TRAP #14.  (LEA RDCNFARG,A0 (LEA RD4CONF,A1 (MOVE.L A1,8(A0) ;Destination address (MOVE.W #19.,14.(A0) ;Device (MOVEQ #11.,D0 ;Read request (TRAP #14. (  ; Read in directory from boot device  LEA DIRNAM-1,A6 ;In case of error (LEA DIRARG,A0 (LEA BUFFER,A1 (MOVE.L A1,8(A0) ;Set up buffer address (MOVEQ #11,D0 ;Read request (TRAP #14. (TST.W 2(A0) ;Check for error (BNE BADREAD ;Found read error    ; Now for each RAM Disk zero the directory (LEA RD1CONF,A2  MOVEQ #16.,D7 ;Device number (BSR ZERODIR ;Zero directory of RAM Disk  (LEA RD2CONF,A2 (MOVEQ #17.,D7 ;Device number (BSR ZERODIR ;Zero directory of RAM Disk  (LEA RD3CONF,A2 (MOVEQ #18.,D7 ;Device number (BSR ZERODIR ;Zero directory of RAM Disk  (LEA RD4CONF,A2 (MOVEQ #19.,D7 ;Device number (BSR ZERODIR ;Zero directory of RAM Disk  (BRA EXIT2    ; Zero Directory  ZERODIR (MOVE.L (A2),D0 ;Check if this RAM Disk exists (BEQ $200 ;Device is not equipped (LEA SCRATCH,A3 (MOVE.L D0,8(A3) ;Save base of RAM Disk (BTST #0,8(A2) ;Check if to be initialized (BEQ $200 ;No initialization specified (MOVE.L 4(A2),D1 ;Top of RAM Disk (SUB.L D0,D1 (BMI $200 ;Too big (DIVU #512.,D1 (TST.W D1 (BMI $200 ;Too big (CMPI.W #6.,D1 (BLE $200 ;Too small (MOVEA.L (A2),A5 (ADDA.W #1024.,A5 ;Beginning of directory (MOVEA.L A5,A0 (MOVE.W #512.-1,D0 ;Clear directory  $10 CLR.L (A0)+ (DBF D0,$10 (MOVEA.L A5,A0 (ADDQ.L #2,A0 ;First block = 0 (MOVE.W #6,(A0)+ ;Next block = 6 (ADDQ.L #2,A0 ;DFKIND = 0 (LEA NEWNAME,A1 (MOVE.W #"1"+16.,D0 (SUB.B D7,D0 (MOVE.B D0,7(A1) ;Set up last character of name (MOVE.L (A1)+,(A0)+ ;Device name = RAMDSKx (MOVE.L (A1)+,(A0)+ (MOVE.W D1,(A0)+ ;Set up size of device in blocks (ADDQ.L #4,A0 ;Bypass number of files and load time (MOVE.W BUFFER+20.,(A0)+ ;Set up last date (CMPI.B #16.,D7 ;Check for first RAM Disk (BNE $200 ;Not first RAM Disk (MOVEM.L A0,-(SP) (LEA BOOTRAM,A0 ;Printout 'Copying to RAM Disk' (BSR TERMTEXT (BSR TERMCRLF (MOVEM.L (SP)+,A0 (LEA SCRATCH,A3 ;Set up scratch area (  ; Set up initial variables (ADDQ.L #4,A0 ;Advance to first file entry in directory (LEA BUFFER,A4 ;Source directory address (MOVEA.L A5,A2 ;RAM Disk address (ADDA.W #2048.,A2 ; bypass directory (MOVE.W #6,D4 ;Block number for RAM Disk (SUB.W D4,D1 ;Number of blocks left in RAM Disk (CLR.W D3 ;Number of files in RAM Disk (MOVE.W BUFFER+16.,D2 ;Number of files on source diskette (  ; Now process each file on source diskette  $20 SUBQ.W #1,D2 ;Check if done (BLT.S $100 ;Done with source files (ADDA.W #26.,A4 ;Advance source directory address  MOVE.L ENDBOOT,D0 (CMP.L 6(A4),D0 ;Check for file: ENDBOOT (BNE.S $25 ;File not foundN (MOVE.L ENDBOOT+4,D0 (CMP.L 10.(A4),D0 (BEQ.S $100 ;Found file, terminate copy  $25 CLR.L D0 (MOVE.W 2(A4),D0 ;Calculate file size in blocks (SUB.W (A4),D0 (SUB.W D0,D1 ;Will it fit in remaining RAM Disk (BLT.S $90 ;Would not fit ( (MOVE.W D4,(A0)+ ;Set up First block in directory (ADD.W D0,D4 (MOVE.W D4,(A0)+ ;Set up Next block in directory (ADDQ.W #1,D3 ;Advance number of RAM Disk files (  ; Set up transfer (LEA RAMMSG-1,A6 ;Set up for possible error message (MOVE.L A0,(A3) ;Save A0 temporarily (LEA ARGS,A0 (MOVE.W #9,(A0) ;Device number (ADDQ.L #4,A0 (ASL.L #8,D0 ;Multiply by 512 (ASL.L #1,D0 (MOVE.L D0,(A0)+ ;Size in bytes (MOVE.L A2,(A0)+ ;Destination of RAM Disk (ADDA.L D0,A2 ;Advance RAM Disk address (MOVE.W (A4),(A0)+ ;Logical Block on device (CLR.L (A0)+ ;Control word & High block number (MOVEQ #11.,D0 ;Set up read request (LEA ARGS,A0 (TRAP #14. (TST.W 2(A0) (BNE BADREAD ;Found error reading diskette (MOVEA.L (A3),A0 ;Restore A0 (  ; Complete the loop (LEA 4(A4),A1 ;Set up copy of directory entry (MOVEQ #11.-1,D0  $30 MOVE.W (A1)+,(A0)+ (DBF D0,$30 (BRA $20 ;Back for more files (  ; File would not fit  $90 ADD.W D0,D1 ;Put back size (BRA $20 ;Try more anyway (  ; Done transfering all files  $100 MOVE.W D3,16.(A5) ;Set up number of RAM Disk files   ; Now set up RAM Disk Bootstrap (LEA BOOTFILE,A6 ;Look for RAM Disk bootstrap file (BSR SEARCH (BNE $200 ;Could not find bootstrap (ADDQ.W #1,D1 ;Code starts at relative block 1 (LEA ARGS,A0 (MOVE.L #1536.,4(A0) ;Read 3 blocks (LEA BUFFER1,A1 (MOVE.L A1,8(A0) ;Buffer location (MOVE.W D1,12.(A0) ;Block number (CLR.L 14.(A0) ;Control & High block number (MOVEQ #11.,D0 ;Read request (TRAP #14. (TST.W 2(A0) (BNE READMSG ;Error reading bootstrap (LEA 26.(A1),A1 (MOVE.W #256.-1,D0 (LEA SCRATCH,A3 (MOVEA.L 8(A3),A0 ;Get base of RAM Disk  $110 MOVE.L (A1)+,(A0)+ ;Move bootstrap (DBF D0,$110   $200 RTS     ; Write back Channel Map  EXIT2 LEA CHARG,A0 (LEA CHMAP,A2 (MOVE.L A2,8(A0) ;New Channel Map address (MOVEQ #12.,D0 ;Write request (TRAP #14.  ; Fall into EXIT1   ; Write back Boot Device's Control Information Block & terminate  EXIT1 LEA BDCIBARG,A0  LEA SYSCIB,A1 (MOVE.L A1,8(A0) ;Set up source address (MOVEQ #12.,D0 ;Write request  TRAP #14.  ; Fall into ALLDONE    ALLDONE LEA SCRATCH,A3 (MOVEA.L 4(A3),A0 (JMP (A0) ( (  ; Search Routine for directory entry  ; A6 is pointer to target string.  ; A1 is returned with block address of start of code in file.  SEARCH (LEA BUFFER+32.,A5 ;Set up pointer to directory entry @; skipping initial volume entry. (LEA -16.(A5),A0 (MOVE.W (A0),D0 ;Get number of files (CMPI.W #77.,D0 ;Check for limit (BLE.S $5 ;Within limit  ROL.W #8,D0 ;Check if byte directory needs flipped  CMPI.W #77.,D0 ;Check limit again (BGT BADDIR ;Illegal directory   ; Swap bytes in directory (MOVE.W D0,(A0) ;Store swapped number of files (ADDQ.L #4,A0 (MOVE.W D0,D3 (BSR.S BYTSWAP ;Swap the date word (ADDQ.L #4,A0  ; Swap each directory entry  $2 BSR.S BYTSWAP ;First block (BSR.S BYTSWAP ;Last block (BSR.S BYTSWAP ;File kind (ADDA.W #16.,A0 (BSR.S BYTSWAP ;Last byte of data (BSR.S BYTSWAP ;Date (SUBQ.W #1,D3 (BNE O$2 ;Back for more (  $5 TST.B D0 ;Check for empty directory (BEQ.S $40 ;Directory was empty, entry not found (  ; Base of loop for each entry  $10 MOVEA.L A6,A0 ;Set up pointer to test string (MOVEA.L A5,A1 ;Set up pointer to directory entry (CLR.L D1 (MOVE.B (A6),D1 ;Set up byte count for testing (  ; Base of loop for each character  $20 CMPM.B (A0)+,(A1)+ ;Compare the entries (DBNE D1,$20 (BNE.S $30 ;Found miscompare (CLR.L D2 (MOVE.W -6(A5),D1 ;Get starting block number (MOVE.W -4(A5),D2 ;Get trailing block number (SUB.W D1,D2 ;Form size in blocks (LSL.L #8,D2 ;Form size in bytes (LSL.L #1,D2 (CLR.B D0 ;Zero flag indicates success (RTS (  $30 SUBQ.B #1,D0 ;Check entry count (BEQ.S $40 ;Could not find entry (LEA 26.(A5),A5 ;Short way to advance address pointer (BRA.S $10 ;Back for another try (  $40 MOVE.B #1,D0 ;NE flag indicates failure (RTS   ; Byte swap routine  BYTSWAP MOVE.W (A0),D1 (ROL.W #8,D1 (MOVE.W D1,(A0)+ (RTS    ; Found error while reading device.  ; Printout message about problem and return to debugger.  BADREAD LEA READMSG,A0 ;Printout "Error reading "  BRA.S PRTERR    ; Directory entry size was in error.  ; Printout message about problem and return to Debugger.  BADDIR ADDQ.L #4,A7 ;Get rid of return address (BSR TERMCRLF (LEA DIRMSG,A0 ;Printout "Illegal directory" (BRA.S PRTERR    ; Printout error message  PRTERR BSR TERMCRLF (BSR TERMTEXT (MOVEA.L A6,A0 ;Set up pointer to name of item being read (ADDQ.L #1,A0 ;Bypass byte count  PRTERR1 BSR TERMTEXT ;Printout type of information (BSR TERMCRLF (BRA EXIT2   ; Printout Text String  TERMTEXT (MOVEM.L D0,-(SP)  $10 MOVE.B (A0)+,D0 ;Get a byte to output  BEQ.S $20 ;Done (TRAP #10. (BRA $10 (  $20 MOVEM.L (SP)+,D0 (RTS ( (  ; Printout Carriage Return & Line Feed  TERMCRLF (MOVEM.L D0,-(SP) (MOVEQ #13.,D0 ;Carriage return (TRAP #10. (MOVEQ #10.,D0 ;Line Feed (TRAP #10. (MOVEQ #0,D0 ;Nulls (TRAP #10. (TRAP #10. (TRAP #10. (TRAP #10. (TRAP #10. (TRAP #10. (MOVEM.L (SP)+,D0 (RTS    ; Request to read Boot Device's Control Information Block  BDCIBARG (.WORD 132. ;Device (.WORD 0 ;error (.WORD 0,2 ;Size - read control  .WORD 0,0 ;Address (.WORD 9 ;Block - logical device number (.WORD 0 ;Control - CIB access   ; Request to access Channel Map  CHARG (.WORD 128. ;Device (.WORD 0  ;error (.WORD 0,0 ;Size (.WORD 0,0 ;Address (.WORD 1 ;Block - indicates channel map (.WORD 0 ;Control - indicates system info   ; Request to access RAM Disk configuration  RDCNFARG (.WORD 128. ;Device (.WORD 0 ;Error (.WORD 0,0 ;Size (.WORD 0,0 ;Address (.WORD 0 ;Block (.WORD 16. ;Control - logical block number   ; Request to access directory  DIRARG (.WORD 9 ;Device (.WORD 0 ;Error (.WORD 0,2048. ;Size (.WORD 0,0 ;Address (.WORD 2 ;Block (.WORD 0 ;Control (.WORD 0 ;High block    ; File name to terminate the Boot copy  ENDBOOT .BYTE 7 (.ASCII "ENDBOOT"  ; New name for RAM device  NEWNAME .BYTE 7 (.ASCII "RAMDSK1"   ; RAM Disk bootstrap file  BOOTFILE (.BYTE O 13. (.ASCII "RAM.BOOT.CODE" (.BYTE 0   READMSG .ASCII "Error reading " (.BYTE 0   BOOTRAM .ASCII "Copying to RAM Disk" (.BYTE 0   DIRMSG .ASCII "Illegal "  ; Must fall into DIRNAM.   ; File names  DIRNAM .ASCII "directory" ;Only for error printout (.BYTE 0   RAMMSG .ASCII "device into RAM" (.BYTE 0  ( (.ALIGN 2   SCRATCH .EQU * ;Offset 0 - Temp storage of A0 @;Offset 4 - Return from MU.BOOTEXT  ;Offset 8 - Base of RAM Disk  ARGS .EQU SCRATCH+12.  CHMAP .EQU ARGS+18. ;User Channel Map  CHMAPNEW.EQU CHMAP+64.  SYSCIB .EQU CHMAPNEW+64. ;Boot device Control Information Block  SYSCIBNW.EQU SYSCIB+12.  RD1CONF .EQU SYSCIBNW+12. ;RAM Disk Configurations  RD2CONF .EQU RD1CONF+10.  RD3CONF .EQU RD2CONF+10.  RD4CONF .EQU RD3CONF+10.  BUFFER .EQU RD4CONF+10. ;Source Directory  BUFFER1 .EQU BUFFER+2048. ;Area for bootstrap  (.END $BOOTEXT ‹BOOTEXT IV.13 [a.1]# !’’MUBEGś"'_8f’AśjCśŖ!Ip NNEśŖp ŁQČ’üEśžź!Jp NNAśLCśü!Ip NNEś0pŁQČ’üEśD4ü 4ü4ü4üEś!Jp NNAś CśX!I1|p NNAś CśL!I1|p NNAśōCś@!I1|p NNAśŽCś4!I1|p NNMś3AśŌCś$!Ip NNJhf4Eśč~a$Eśč~aEśč~aEśč~a`h g`Gś'@*gN"*’€kD‚üJAk: Ao2*RŚü M0<’B˜QČ’ü MTˆ0üTˆCśZ0<A@ Ł Ł0ĮXˆ0ś’ fōHē€AśZa“aĀLßGś€XˆIśX$MŌü8<’DBC4:VSBmnŲü :ų°¬f :ņ°¬ gVB€0,T’@mF0ÄŲ@0ÄRCMś#&ˆAś:0¼ Xˆį€ć€ Ą ŹÕĄ0ŌB˜p Aś NNJhf SCģp 0ŁQČ’ü`’Ņ@`Ž;CMśšarfBRAAśģ!|Cś ²!I1A BØp NNJhfwCé0<’Gś° k ŁQČ’üNuAś Eśŗ!Jp NNAśźCś*!Ip NNGś€ kNŠKśtAķ’š0 @Mo&įX @Mnd0€Xˆ6aLXˆaHaFaDŠüa>a