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šĽąŠ+šĽ˛Š#†łší€˙Ëʊ†łší€˙Ëʊք‹î†Ž‘‹ćš/‹Ô†Žš€˙ËʋdžŽš€˙Ëʋˇ†š€˙Ëʋ§†”šʋ›†•ší€˙ËʋŠ†•šʊ†–šʊ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