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 š‚€3s š |sš‚€8s š z!Œ£sšs–Øšsš‚€>s š X¢sš‚€Ms šs p–ûi1h ˜±!¡Ô j"y#ÒiŠ"xhŠé l–^$Ò`t ç š;ÄŠ*2˜Ò `t ç €Pujat æ !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£¥€…€“h1!ƒ€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ý‹Œ‘‹†…€ŒÔ‘$Ô‘k3m%€'Ó!%‘(…€“…€’²ñ‘…€…€“î§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°#æ €>²Ÿ¡ Ô ‘47h8Š‘47 Ó8Šö87 Òø#çÄŠ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‡Ôš‚€bt pŠ š‚€et p/Ô4h,¤ i!+²Ô( ³Ôc„«„.çÄhŠ íhšc î§up!íiŠÓštp‡Ôš‚€it pštppŠ!š‚€st 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ˆ‚€ÚëÿŠ:ˆ‚€âëÿŠ/ˆ‚€óëÿŠ$ˆ‚ëÿŠˆ‚ëÿŠˆ‚ëÿŠÖ%–Ora‚8ëÿšvšvšw‡€‚€2³Ô'š‚9w š‡€‚€2£wš€:všw‹æš‚Bw š‡€‚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š‚‚zw š`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 š‚€Mw š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!×xh# ± k#Ô "íj%" €0¢È&›O!×xn!îiŠÏ#Ô%"ÈŠ%‚€qëÿ–º†‘K7‚€dëÿdcp$$¢l#³ñ $ílÿ#¢ík$³ñÿ$¢ílájm%ñdcÀKe‘M"íjŠï"€djmái%ñdce‘M!íiŠï#€Ó‘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 Èdi# ¢j‡ç‡æ"¢Ä‡ç‡æ"£Ä‡æ³ñ‡çÄŠ‡„€…‡§íp„€…‡§í‘[–7a„€ƒ¬ÿ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š‚€Ct pš‚€Rt pštpštpš‚€Ut pštpštpštp𤇿 î¥ š‚€_t pš9tpš‚€ut p¥ ; 9¼€0ÛÚÔÍš‚€wt 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š‚€8t pš:tpš€,sp‘7Œ=Œî¥……€²ñ 8…£¥ Š8…€£¥ …‚Ô¥Š8¥…‚Ô64¢8²ñ86£¥Š 64£³ñ6¥4²ŸÕ9…‚Ôš‚€Ct pš;tp‘…‚ñ64£¥4îh¥3 ²Õ݆†”Å€€=îi¥2!²Õ‚;††‚2×x×x=6…¢3¢Œ†‚2×x¢ppÓQštpš‚€Rt 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š‚€9s pšspš‚€=s pš†spšspñšsp2†0îp‘0 ²ñƆ€MË× ç0Ä3Ô†„ûr2†ìp‘Šš‚€Ws 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‚€EvУ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 ±Õïš‚€Ir pî…„¢¥„¥„…„…„²Ô$š†Ëî×…„ÿ˧sp…„í¥„ŠÓš‚€br pšrp†Ëî×€ÿË×xÒ#š‚€dr 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°Õ´š‚€8r š…Cršr45Ò"š‚€@r š4rš‚€Qr šr ¥C4…F…C†×xŒ…Cp…Cí¥C…C2Œ…D³p± ÔÚpÒš‚€[r š…CršrŠ+š‚€dr š…Cîrš‚€sr š4ršrŠ+š‚€wr š…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š‚€Qr pšrpš‚€cr pšrpš‚€xr 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‘–¬š‚1r pšrpš‚Er pšrpš‚Wr pšrpš‚kr 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š‚‚Rr pšrpš‚‚fr pšrpš‚‚yr 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š‚ƒCr pšrpš‚ƒVr pšrpš‚ƒir 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ÌÿþNuap0<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‘ Š'‚€‡‘ Š‚€•‘ Š‚€¢‘ Š ‚€ª‘ ŠÖ€¿–ð Nr¢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ÌÿþNuap0<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>+|"_vxvx7vx~<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ÕaJ_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Õ0WNÕ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‚é™pA4à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çÀpAr 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ç? OpNNXN«æ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ÕaJ_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Õ0WNÕ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‚é™pA4à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çÀpAr 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ç? OpNNXN«æ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ß?.ŸNuBJfJ€g<ÿ `ÜJ€gØJj¬0<€á€á€0<`ÌB€`ÂHçü / "/ã˜ã™³á˜á™BCBD@þAþRSDoHRRSCoPRä™è˜˜C6HA€Á4ÆÂB@ƒä€ÁHÂHÀHBå€Ð‚ã€DNºÞà˜ââ/@ Lß?.ŸNufã˜`´¸g&J€g` gJf`JgJ€f B€`ÊJ€g <ÿ`¾²€eJgÃ@àˆâˆ`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ã‰Jfæº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ß/_TNwÿ¯Nu"/a oHB4HÐ _PNÐ&HCã‰á™BBf<Jg*<`$´<ÿf4<`B<Jg<`<SB<B•â™à‰B€Nu oLÐ6HB o Nuaìa _PNÐ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Õ>/-ŸxTNÕ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üŰt7vE„ã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ÕaJ_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Õ0WNÕ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‚é™pA4à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çÀpAr 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ç? OpNNXN«æ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Ð _PNÐ&HCã‰á™BBf<Jg*<`$´<ÿf4<`B<Jg<`<SB<B•â™à‰B€Nu oLÐ6HB o Nuaìa _PNÐ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ÿÿþBBvJjDÃB€Nu la*€BJ€f JkJCjDNu2<€áá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-ŸxTNÕ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š‚€1r 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š‚€1r pšˆ‡€Pr pšr pšrpˆ‡§Ò †*spp†*ˆ‡˜spÒhŠ!š‚€Br pšˆ‡˜r pšrp Ôƒ¦¦¦–—ˆ­Ȇ*ˆ˜r †*rpÓ;šrpš‚€Kr pšˆ‡˜r pšrp†*sp†spp¦–äØm†rpÔl$²ñ†*spÓ3šrpš‚€Yr pš„‡˜r pšrp†spp†spšrpš‚€cr pšrpp†„€‡!thpÓ,šrpš‚€mr pš„°˜r pšrpp! â½ËÒ$šrpš€<tpš!rpš€>tpš€.tp!íi„€‡%ÿ˧j" ÒŠ3"±" ±¡Ô*$íl$€ÿ²ñšrpš‚€ur pšrpf$"È%í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Š š‚€1r pš„……˜„…s„…˜r pš€ tpš„……˜„…“ s„…“˜r p‡„í¤„‹àþšrpš‚€3r pšrpšrp–…˜Ûš‚€Yr pš‡€Ü€Pr pšr p‡€Ü‚€lèÔ‡€Ü‚€mèñȇ€Ü‘‚€n‡€Ü˜s²ñ‡€Ü‚€o‡€Ü˜ssŠÜ‚€p‡€Ü˜sîh ³ñ‡€Ü§h ÒpЇ€Üia‡€Ü˜€Psa‚€q€SsaëP ²ñš‚€sr 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„‚‚€jv„‚˜˜rp¤‚އ‚ŽÒ$›€ß¤‚„‚›€ß˜v„‚‚€mv„‚뇂ްՅ‡‚ ¤‚‡‚çÉÓ ‡‚ ‡‚Žð‡‚懂æ£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 š‚3w š„i˜w šwh„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Ô#š‚6w š‡Wwš‚Aw šw„eucu# Ť]„^ çĤ_î¤`¤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 :Òš‚€Gr šrŠš‚€Or šrŠ+‘ 3Ò$¥šr:Ò š‚€Vr Š š‚€kr –d/f„1¬P‡8¥‡7¥‡6¥‡5¥ ‡4¥ ‡3¥ † fëÿ† §mh %²Ô † §ƒ€tÚÔ† † §€a£€A¢È íhŠÛ‚€|† ˜t²Ÿ¥a†€ŒÅK‡6ib‚€† ˜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úBAN¹þ gZ g oè lâRA€B6N¹þ`Î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ú‹`Xa0Aú°`XAú†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š‚€Bu pš†cÉupš€.vpš†cÉupšupš‚€Uu pšuppš‚€gu pš†cÉupš€.vpš†cÉupš‚€su 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Š3XlŠ-°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ÿÿ 2p0FGEHKJ 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š‚€1r Š€>‘–‚ à­í¦­­³Ô†-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š‚€Kr –‚ .†U€R€ p‡/€S°Õ‹†U€:Èš‚€Vr šd€Pr +šr d§Ò p†-d˜tpÒΚ‚€`r šd€Pr šr d§Ò †-t pd§¤.j"‡.²Ô†U"íd"§È"íjŠì‘‘€<Ò³‘ ‹¨š‚€or š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ú`!Ètaa)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ÿÿÿÿdb0eªfªÿÿÿÿIú÷,t"xpBå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!ßNuPpNsB8ü%À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úñü pNuXLß`|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€ü €B2Ò@Ò@B@H@€ü+Ò@v<ÆÂHBp<ÀÂH@B@Ö€ÒƒNuB@ÀÀ‡8Àá@8ÀáXD@NuHçà`aÿ> HAÐh dÐ|RA°zþ¨czþ 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@HAAdøÀ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²h2fB1ANFü 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(PhNlÐh26€8ÀcÀ< Gë4À2h4)À<€À6èR6èT6¨VNu*g h:`¨0(LhJlÐ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€BJ8qfª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"SJgÚQÉÿüBAJfî¸ÀCNuÙQÉÿü`êpÀä‰gSJg"ÚQÉÿüBAJfî"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žNSiˆ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,!`¤`ýè ,7fS,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\XLß 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²hg¬3AH`¦2)HRA²hfî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²hfÿSiH`ÿbBiHBiJ`þðaÿF`òrdNu(—kþ¼°hlþ´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²hm2(SA3AH`ùb2)jfRAÒiJ²hŽm2(ŽSA3AJ`ùB2)jfRA“iJjù2BiJ`ù*2)jgSA²hlù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–zazaŠza„Tº<"oôzavzap4+ŽSBB,J`RN0< NJ.TgzaPRWÊÿægàzJ*ggza6za0MêˆBtr´kf²kŽgŽJ+“g*J.f+šË»Æ+™†a.TŽ`Ê+šÈ+™ˆa0 @ g&NJRA²kŽoªRBJ+”f +FÈaôza¶`Œ/RA:+ŽšAk°^VÍÿüfXORB´koÎ`,_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*ITJ\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*ITJ\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} Ó,‘š‚€7t pš…hz˜t pš‚€At 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‘š‚€Gt pš`˜t pš‚€Rt 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!}Ò!~¥.Š*‘š‚€st pš"}˜t pš‚€xt 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š‚0t 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š‚Lt 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š‚Tt 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 ñ š‚rt 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š‚wt 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š‚€2w 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š‚€Dw pš†›ð˜w pšwpp††›ð˜” pÓ.šwpš‚€Mw 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²ñ@š‚€Xw pš`€Pw pšw p`짤„X‡„X€A³‡„X€Z²¡Ôɇ„X€A£¤„U†‡„U” p†wp„„Y0Å€§š‚€gw pš`€Pw pšw p`짤„X‡„X€AÒš‚€rw 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š‚6w pÙ4p0çSš0˛지ÿËÈŠyš/Šl0çGš0Ëš€ÿËÈ0çGš0íËšâ½Ë€ÿËÈŠ>0çGš0Ëš€ÿËÈŠ+šÔ0çGš0Ë€ÿ€ÿËÈŠ0çGš0Ë€ÿËÈŠÖ@ŠÖX–€Ù Ó††-€§” u‘‚dr 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‚€Dr‚€G‚€Xr‚€Z‚€fr‚€h ‚€xr‚€{‚€~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‚2r‚8r‚>r‚Dr‚J‚Lr‚]‚ir‚l‚xr‚{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‚‚3r‚‚9r‚‚?r‚‚Er‚‚Kr‚‚Qr‚‚Wr‚‚]r‚‚c€ € r‚‚i‚‚lr‚‚‚€!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‚ƒEr‚ƒ[€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‚„@ ‚„Nr‚„Q‚„Tr‚„dr‚„kr‚„rr‚„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‚†7r‚†Hr‚†Xr‚†ir‚†xr‚††‚†‰ r‚†™€„r‚†¦r‚†³r‚†Àr‚†Êr‚†Ôr‚†àr‚†í r‚†ù r‚‡ r‚‡ r‚‡ r‚‡, r‚‡9 r‚‡Fr‚‡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úH2ILt @úH2ILt @úH2ILt @úH2ILt @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ!ÿÿÿÿ"ÿÿÿÿ#ÿÿÿÿ$ÿÿÿÿ%ÿÿÿÿ&ÿÿÿÿ'ÿÿÿÿ(ÿÿÿÿ)ÿÿÿÿ*ÿÿÿÿ+ÿÿÿÿ,ÿÿÿÿ-ÿÿÿÿ.ÿÿÿÿ/ÿÿÿÿ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ÿÿ 2p0FGEHKJ 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‘ Š'‚€‡‘ Š‚€•‘ Š‚€¢‘ Š ‚€ª‘ ŠÖ€¿–ð Nr¢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‚Asñš” 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‡Sp…‘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‚€Ks‚€M‚€Ts‚€V‚€]s‚€_‚€ds‚€f‚€qs‚€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‚5s‚8€4‚=s‚@€5‚Es‚H€6‚Ms‚P€7‚Us‚X‚[€( s‚f‚rs‚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‚ƒ>‚ƒHs‚ƒJ‚ƒYs‚ƒ[ ‚ƒjs‚ƒ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‚„Is‚„L‚„N‚„Ps‚„_‚„a‚„cs‚„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 ‚…2s ‚…8‚…;s‚…Es ‚…Ks ‚…Rs ‚…X‚…[s‚…es ‚…ks ‚…qs ‚…ws ‚…}‚…€s‚…ˆ€s‚…‘s‚…šs‚…¤s‚…°s‚…¹‚…¾s‚…À‚…Ås‚…Ç‚…Ìs‚…΂…Ós‚…Õ ‚…Ús‚…Ü ‚…ás‚…ã ‚…ès‚…ê ‚…ïs‚…ñ ‚…ös‚…ø‚…ýs‚…ÿ‚†s‚†‚† s‚† ‚†s‚†‚†s‚†‚† s‚†"‚†'s‚†)‚†+€8s‚†7s‚†>s‚†Es‚†Ns‚†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€"‚ˆNs‚ˆQ€H‚ˆYs‚ˆ\‚ˆ^€2s‚ˆm€#‚ˆxs‚ˆ{€H‚ˆƒs‚ˆ†‚ˆ‰€"s‚ˆ˜s ‚ˆ­s ‚ˆÂs ‚ˆßs ‚ˆós ‚‰s ‚‰)s ‚‰E s ‚‰Ys ‚‰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‚Šps‚Š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‚‹cs‚‹o‚‹zs‚‹}‚‹ˆs‚‹‹‚‹–s‚‹˜ ‚‹Ÿs‚‹¡ ‚‹¨s‚‹ª‚‹±s‚‹³‚‹ºs‚‹¼€ds‚‹Ç€es‚‹Ò€U‚‹Þs‚‹à‚‹ã s‚‹õs‚‹ý€ÿs‚Œ€ÿs‚Œ ÿs‚Œ€þs‚Œs‚Œ( €ÿs‚Œ. €ÿs‚Œ6 €ÿs‚Œ? €ÿs‚ŒI€ÿs‚ŒQs‚ŒZs‚Œcs‚Œls‚Œus‚Œ|‚Œ‚Œ‚s‚Œ•‚Œ— s‚Œª€ s‚Œ³€s‚Œ¸s‚ŒÁs‚ŒÉ‚ŒÌ€Js‚ŒÜ‚Œæs‚Œé‚Œós‚Œö‚s‚‚ s‚‚s‚‚'s‚*‚4s‚7‚As‚D ‚Ns‚Q ‚[s‚^ ‚hs‚k ‚us‚x ‚‚s‚…‚s‚’‚œs‚Ÿ‚©s‚¬‚¯‚²€Ks‚‚łȀLs‚؂ۂ6Þ€Ms‚î‚ð€W s‚ùs‚Ž€ s‚Žs‚Ž#€h‚Ž2s‚Ž4‚Ž6€h s‚ŽE€X‚ŽLs‚ŽN€Y‚ŽUs‚ŽW€Z‚Ž^s‚Ž`€[‚Žgs‚Ži€\‚Žps‚Žr€]‚Žys‚Ž{€^‚Ž‚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‚Is‚Ns‚Ss‚Ys‚`s‚is‚ps‚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Š3XlŠ-°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} Ó,‘š‚€7t pš…hz˜t pš‚€At 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‘š‚€Gt pš`˜t pš‚€Rt 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Š‘š‚€st 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š‚Dt 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 ñ š‚bt 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š‚gt 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š‚€5s š X¢sš‚€Ds šs p–ûi1h ˜±!¡Ô j"y#ÒiŠ"xhŠé l–^$Ò`t ç š;ÄŠ*2˜Ò `t ç €Pujat æ !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£¥€…€“h1!ƒ€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ý‹Œ‘‹†…€ŒÔ‘$Ô‘k3m%€'Ó!%‘(…€“…€’²ñ‘…€…€“î§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°#æ €>²Ÿ¡ Ô ‘47h8Š‘47 Ó8Šö87 Òø#çÄŠ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‡Ôš‚€Lt pŠ š‚€Ot p/Ô4h,¤ i!+²Ô( ³Ôc„«„.çÄhŠ íhšc î§up!íiŠÓštp‡Ôš‚€St 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ˆ‚€ÚëÿŠ:ˆ‚€âëÿŠ/ˆ‚€óëÿŠ$ˆ‚ëÿŠˆ‚ëÿŠˆ‚ëÿŠÖ%–Ora‚8ëÿšvšvšw‡€‚€2³Ô'š‚9w š‡€‚€2£wš€:všw‹æš‚Bw š‡€‚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š‚‚zw š`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!×xh# ± k#Ô "íj%" €0¢È&›O!×xn!îiŠÏ#Ô%"ÈŠ%‚€^ëÿ–´†‘K7‚€Qëÿdcp$$¢l#³ñ $ílÿ#¢ík$³ñÿ$¢ílájm%ñdcÀKe‘M"íjŠï"€djmái%ñdce‘M!íiŠï#€Ó‘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 Èdi# ¢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‡€£Ó`0kŠ"šæ%¤€ šæ&¤€Ÿ‡ç怞ÛǤ€ž‹ö„‚-èÔQ‡€£Ó`1kŠ@¤€ €„¤€Ÿ‡ç怞ÛǤ€ž ç‚-” j‡æ‚„˜tpn& Ò`0k‹›„‚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š‚€Tt šî€A¢vš‚€Xt štbcs"ñp!‚€ads$Ó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í¥†‚£77£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 š‚8t sh ƒBÚÔ"†‚{wš†„£˜t š‚Jt štŠ.†‚{w†„£‚NëPš†„£˜t š‚Ot št p†‚{†„£˜wpÒ¥š†„£˜t š‚St št†„£§°p° ÕÇþ†„£§³Ô<†„£˜a†„£§£” a‚WèÔ †‚£p†‚{†‚£ávӥХ¥–,Éštštš‚Zt štš‚wt š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 š‚‚Rt sh Ò€GhŠ ƒ‚cÚÔ €a£€A¢h ƒ‚kÚÕ€ Šxš‚‚qt štŠiŠe Ša Š]š‚‚st štsŠI¥š‚‚vt štŠ4p"¥š‚‚zt š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 :Òš‚€Gr šrŠš‚€Or šrŠ+‘ 3Ò$¥šr:Ò š‚€Vr Š š‚€kr –d/f„1¬P‡8¥‡7¥‡6¥‡5¥ ‡4¥ ‡3¥ † fëÿ† §mh %²Ô † §ƒ€tÚÔ† † §€a£€A¢È íhŠÛ‚€|† ˜t²Ÿ¥a†€ŒÅK‡6ib‚€† ˜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š‚€Tt šî€A¢vš‚€Xt štbcs"ñp!‚€ads$Ó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í¥†‚£77£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 š‚At štp†‚{†„£˜wpÒ¥š†„£˜t š‚Et št†„£§°p° ÕÇþ†„£§³Ô<†„£˜a†„£§£” a‚IèÔ †‚£p†‚{†‚£ávӥХ¥–,‡štštš‚Lt štš‚it š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 š‚‚Dt sh Ò€GhŠ ƒ‚UÚÔ €a£€A¢h ƒ‚]ÚÕ€ Šxš‚‚ct štŠiŠeŠa Š]š‚‚et štsŠI¥š‚‚ht štŠ4p"¥š‚‚lt štŠp"š‚‚vt š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¥ ‚€2X‘€"ÚÔ¥Š¥–ƒ3°åh–¿T„,„W¬Pia‚€3ra„,˜€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‡6ib‚€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š‚€9v 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š‚€Gv pšvp íhŠœ…‚dki!#²Ô_j…‚clh $²Ô"†ƒ!€2Ëî×)†“ €2Ëî×)èÔj íhŠÙ"ñ?(š†ƒ!€2Ëî×)˜v pš‚€Wv pšvp!íiŠœ‚€h‘‘€nÒp–ÔW„*„Vá” ¥‚d„*‚€p” pš‚€vv 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š‚2v pšvppŠÖ9„*¤Y„Y…‚gç˜w„Y‚@w„Y…‚gç ˜w„YëP…‚gæ‡UÓ9š‚Av pš„*˜v pš‚Fv pšvp†” pp„*‡U„VБ †” ‹þ–€‚ˆ+†›"” ” Ž…‚dh¥‚^…‚^ ²Õ¿†” †‚•ia†ƒ…‚^€2Ëî×)˜€Pwa‚X€RwaëPÇ¥‚j†‚•˜…‚j†‚gs¥‚i…‚g˜Ó…‚h‘Š`…‚iŠXš‚Zv pšvpŠEš‚dv pšvpŠ/š‚mv pšvpŠš‚uv 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š‚‚4v pš†›"Ð…‚a” ” X” ”  ” ” pšvpš†›Ð ” ” pš€ ” pš…‚`vpš‚‚@v pšvpš” pš‚‚Mv p‘šv p” u¥‚_‘X¥‚]‘‘†0” p†” p‚‚b‚‚hs¥‚i…‚iÓš‚‚mv 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‚€EvУ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