IMD 1.16: 16/08/2007 16:31:59 user group 51-75  M68UGL3 0201061377USER-GROUP-LIBRARY \lx€ˆ˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUG54S SA\ÅUG62S SA¨ÅUG70S SAÅMDOSOV0 SY\òDIR CMðòMDOSOV4 SYˆòUG58S SAÜÅUG66S SA˜ÅUG74S SA<ÅMDOS SYòMDOSOV6 SY˜òUG51S SAÅUG55S SA ÅUG63S SAÀÅUG71S SAÅMDOSOV1 SYlòUG59S SA(ÅUG67S SA¤ÅUG75S SA\ÅMDOSOV3 SY€òMDOSER SY åBACKUP CM°òUG52S SA$ÅUG53S SAHÅUG60S SADÅUG61S SA„ÅMDOSOV5 SYòUG56S SA°ÅUG64S SAØÅUG72S SA$ÅCOPY CMÔrUG57S SAÔÅUG65S SAÅUG69S SA°ÅUG73S SA,ÅMDOSOV2 SYxòUG68S SA¨Å|½èu½ëÀΠ¦u—æ+.ĦHYHY‹É×—¦wæv—׿z¦{67îx߆S6†è6~èm†?— ~èS@€?@Ù0201£ÿ €CN0 LP0 DK0MDOSER SY 0¦æÀ‚Îÿ¡&á'LŒÿ/&ñ0®431¯5¦X%;Á€$*÷DÎzîÿU0¦6¦æî2½T06ç3ç3Ä„ï6;Æ!½b~ÍþnWþn·¹oùõ»ûáä£Ô%(4]_fo|…™Ù  ¿³µýb¯±¿\lr„…†¢£¤´ÁÕÛáAD÷½¿"ggggÍ}üý*26…'Ɔ}ÿO&Æ*†760Ʀ6 Z&ùþÿünþnî§#Z&õ9 î¡&Z&ó90îî¦0îl&l90îl&l9† §Z&ú9A%6‹¥290%6‹Æ2%„9«§$l9@«§%j96hiJ&ù296dfJ&ù29ÿ$Œ®&ÁP+ÆO?'ÿ&Î ?% ¦æî?.' 9Á 'ïÆ? ?6 ¶üô…' 29…'ú¶üõ„'÷ ä ¶üõ¶üõ9O½ð¶üô…'ù9ö*Äß÷* Æ ŒÆÿ$ á&ûÿ&Î ?$~Îæ Ê ç æ¦0ç§æ¦9Æ ŒÆÿI á&ûÿKÎE?$Ú~Î0¦æ9ÿ ö ¶ 90§ç90æ§çæ¦ç§~÷_0§ç h0«6Šû§é¤§29_?&?.06§2§ç C0 6Šû§â Ù0á&¡9ÿ ñ &± 90gf90hi9† 440æçJ&ø0榧 ç ¦æ6¦290¦ æ §ç† æç J&ø110 Þ†€…OÎèi †€…OÎèÿIÄ×Î߯670îæ¦îß×—½$–1'24'.8'*9'& 320îÖç$…€'90¦æ€Âî§çÆ? ?0j'ÕæÎ‚Á&Ö–?.Y$½èu V×—½èx~9Ö–?*ÎÑ?/%éÆ†Ñ ã÷6¶Š€·29þÿÿúŽÿŠ~èþÿúŒ*' Œ'Žÿн ¾ Îfÿÿ¶Š€·Î ÿ½è"½èu½èS|½èu~ûDK9LPFCRSCP`CNmHRzr –Á€¦1€ *Q€{e€ W T Q NS¦*"¦ª' ¦"æ!¡â$½%3l&lî æ &¦ª&¦ §¦§îçl&l¦"æ!¡â$E0î11n0î~†‚Œ†AÿoèÄ' æÅ 'Å' ÆŒÆ ç9Ä?„À§Äþæ ë¦"æ!  â' Æ ŒÆŒÆ ç 9&ð†€¥' ¦æ â+æ¦æÿÂÿ+Ùæ â&æ +ÍÄ|Ë$~)æ ¶6¶6î?240?31111½ö¶ç§†þ6L6î¦*5i¦+`32P@$Z«é€7Â3$O_§ç† ?(?!I% ¦Š§~C~+„|‹_?3?*67) â*0l&ll&l¶ö‹€É¡&˜á&”11~&0î 0îîî9î¦æë§ç Ä|Ë?3?+?$à§ç~Cî?2Í6¦æ ÄHYHY0«É1674î½æ ¦0+?Œ?31111§¦ æ§ç¦æ¡ â +§ æç l&l 9    }¦* |ÿS½ð6]3&l½ð f0îîî9~è~  U Rz )&}ÿ* †V· )H†7F $9ц § 1Îÿ ' ¶üôG$÷öüõÄ 9 9†W· )}ÿ*†7 ¶üý„_·üô† 0î11n†~ù϶üý„?·üô†½ð}ÿ&¯­ ÛW~ K~ e~ ‚~ ‚~˜Á & }ÿ*Î]À &ý9 µ|ÿb}ÿ*²†0°†¬† ¨†¤ÿb}ÿ*“˜†9½ðÆOZ&û ‚ËÆ2O„Z&û† ½ð§ Ï    ½ëÌ$0îî ½ëÀ0î11nÄ&~ „÷  V$ý]&óæÄ×½èu0î ö Ä!' m&†§ Y½ Ì‹HHH0î§ ì0'l >0î¦ö Ä!„ø°'‹ ]'~ ˆ†]&¡&ö Ä'~ €} &~ Œ~ $§_½  ¦„HHHHî?(ÿ †ÿ¡&÷ ÿ  •m&~ ö Á&þ ÿ 0îÿ Î Æ?ö Á'B_9Á &Æ ?'¦æ0î¤ ¨ &äè& Æ~ ÿ 0îÿ Æ Î ?'~ ö ÄD'¦~ ”þ ÆÀå '~ œÆ†ÿ?0îÆ½  îÿ 0î†ÿ§§?"$Æ ? ?ö ¶ ç§~ ”ö Ä!'~ „&\0îö ' çþ ÿ 0îö Á@'o o ooo?!]'Á'?Á';Æ ? ?_Bÿ þ ÿ Î Æ?Æ0î*ö Á'~ ”Æ 9Æ úÆ öÆ òÆ îÆ êÆ æÆ âÿ ÷ æ¦îÿ „øDDD · Î } &? ?þ 9Æ ÷  _÷ · æÀ%*_¶ ù Yz &äVFFFFÄÁ#ÀÁ "GY9÷JîÿOÄ' V$ý]'~ RöJÄ(&ööJ*Åx&íÅ'éÆ0·`¶J…@&"?$ Á&~ cÆ ? ?†¤ &~ g¦ „&õ½ sþTîxÿV½ øöV¶WþX?)ÿXþV½ ª$~ kþXöJÄ'†?(ÿZ½ Ì%çöJÄ' þZ_?]&ÖöJÄ'böJÅ&8Å'þ\ þO½ “ÿK½5½ Õ}a&ŽÿŠ ¾Z¶KöL76¶^ö_76~èmþ\ÿÿþVÿÿþZÿÿ½'½5ÎÿÿúÎðó ´½ Õ½èm¶VöW0î§ç¶\ö]§çÖÁ0&_9 9Æ0î¶O§¶P§ 9Æ íÆ éÆ åÆ ᦠæ îÿT·R÷Sö`ÎQ?þTîzÿ\9?$þV?/$11 ÏþX?&?/%ó9aöJÅ8& Å'ö¶ ö¶|a?-9ö ¶ ?.90î¶`—þRßþT¦u‹„ø—îvßþVß9þTîv'# ÿXÎX†?þT¦u'‹„øJ»Y·Y$|X911~ gÎÿoŒÿc' ö9öJ*þÿÿúþÿÿø½'9èS>ÿ7÷=Á#IÎ9½ÎÿœÿnÎÿÜÿ pþ{'½ËÎj?'Á &þÿœ¼9&íþlÆçÎÿž Î=ÿ7·Æÿ Î_HY?)îö=?#ÿ3ÎÿÆ çÆ*ççÿ5þ7ö='>Á&æ¦Îܽ–Š0·êÖ–Îð½þ3¦'_\'0þ5§ÿ5þ3ÿ3 á}>&Ü|>¦ÎPm'С&æ~o ïÿ3¦Î?m'¶¡'Æ?' ò|4&|3æîÿi½h ˜þ5†§Î *­ Îÿ½ð$½ð! 9þ5ÿ;þ7ÿ9ÆÎ9?þ;†.§ÿ;ÆÎ9?þ7æþ;†:§çÿ5þ9ÿ79þ7ÿ9þ5»6·6$|5¶:Á&ö9½9½9þ7¦9·:G»8·8$|7 Å0î ÿ7~Æ626 §2§9DDDD„‹09#‹90 †1Æ3í8 "#$ % &  ' ( )*+,-. ÀINVALID MESSAGE \3 AT \8UNIF. I/O ERROR-STATUS=\3 AT \8PROM I/O ERROR-STATUS=\3 AT XXXX ON DRIVE X-PSN XXXX0MDOSOV SYÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿsý~Õö/ ~Þö1 ~çö3 ~ðö5ÿg0¦€§¦‚§¦Î_…\€$û÷u¦H·„·Îæ¦÷·¶6ÎõÆ@?% 2·0æî ~ù†V— ½èS          ½6½6½6½6½6½6½6½6½6½6­ ì~Á  ½>½>½>½>½>  ½F½F Îÿ{ÿ‡966Î~966Î&~A66Î+~I66Î-~Q229 ½N¿ vÎ ‚†M§¡'ù ÿ þÿúÿþÿøÿÎ*ÿÿúÎúÿÿø¾ †/ηü|üÿ xÎõÆ?%(æ ¦ þ x§çŒ&ßÎ z?Î Æ?Î z?¾ v9†V— ½èSµÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ € ÃÃ~á~á½6½6½6½6½6½6½6½6ÿPæ÷Oî'ƆнÉ$~Í ÿRÎR†?þR Î ÿRþÿWþPî ';½ îÿYZ†9þR ÿ]Î]†?_þ]½É$~ÕþY½ã?'ÿ_ÿg Îÿ_ ÿgÎÿUöOÎT?þ_'~¶ÿa½Š&.%,þ_ÿeÎÿ[½¹%½Š& % þ[ÿ[ ë½È ½È~ë½¹$È~ëÿcab½Š%'þPÆå &Îÿ_~xþaÿa¼R'½¹$Ö Ûþa&~ÑöR¶S?&½É$ þPî&éþaÿRþPm &m 'Æå ' þg¼c'~Ñþcÿ_þRÿ[½Šêçþ_ÿ_þ[ ÿ[&éöOÎT?þPî &þWÆ€O?ZþWçþc?1?1ÿU ÿUöOÎT?þWm+ øÿ]þc¼g'KþRÿ[_† ½É$÷[·\¶\?,ÿRþcÿY?)ÿcö\þY½õþ]ç§ÿ] îÿgþR&¸~=þ] ÿ]î½ã÷[† & þ]ÿ] –·a_þR?&½É$¶S·a¶aþR?,ÿRþc?(ÿcö[ûaþY½õþ]ç§~ÍÎÿÿÿeþWÿYîög¶h½É&^þg½ãXXZþe?'ÿ_½bÊ€þ]ç§öOÎT?þPî &öU¶VþPç § _9þPög¶hç§öe¶fç§ö_¶`ç § Û½ãXXþe?'ÿeþY~FÆ 9Æ úÆ öÆ òÆ îÆ êÿPæ÷OþÿWþPî &~ɽÆtÎmÿkþWÿiÎi?þPîŒÿÿ'~ÒþPæ÷]ÄøTTTÁ-Á#~ÙU÷VöOÎT?ö]ÄXXXXþW?'¦ÿ'~ÝÆ€þWO?þPî ÿUöOÎT?þPo o Îmm*~ÿ]ÎÿUöOÎT?þ]î* öOÎT?~½ã÷Rÿ_½Š%Säçþ_ÿ_öRZ÷R&æþ]ÿ] Á?0?0ÿ[þWÿ]þ]î*~ͽãR÷Sÿ_þRö[¶\½É%R?.÷[·\þ]ÿ]þ[&ǽþPæ¦Ê€þ]ç§ÿ]þWƆt?)¼]' þ]oo äöOÎT?þY~{½öSð\¶\þ_?(½õþYç§þ_ö\½õþ]ç§ÿ]~ö_¶`νÉ$9 þW?( å9ÄTFVFVD6YYYO FZ,ü29þ_ÿ_Ɔÿ½É9þ[öa¶b½É$ þ[ÿaþeÿc9½bÄ|WW\7½bÄ?%39ZXX7½bÄ?%3O?*9þ]öW¶X?-½bÎm?)ÿY9ƆнÉ$11~ÉÿUöOÎT?þWÆm+ \Á: /õ11~ÉÁ'÷9ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ€ Ãý6½6~ï~ù~W~@~u~o~r90îî¦90êç9½S0oƽp]'Á'd*&ÆàÖ.&PÆ‚½p]' *&ÆÊÀ:&† 0î?ÆÁ½p† 0î?£0æ90î î¦;' ' 0î l&lî¦9Æu ¼#'zÆ€½é ‘„?6½BÅ€& 'õÅ@'?$ @?%Ä?0îî]'§Z0½T¡?%äŠ0 äÄ?')760á'î î?0¦î ?23*& ½B?$ù?$õ†*190î6?29ƽé0î†?ƈ½p~6Á'-þ ¶ öÿ?-?&0 5?&þ?) ö ¶ ?/%(ö¶?/$!ö¶ ÿ0m& ¶‹öÉç§_ŒÆŒÆ2W9¦ …@&-„ $*¦?%$¦ ?%þÿ;î'?/'þ; ì~ ~~þ;î'ðÿ=þ;îŒDK&~þ=¦J0îæ Ä%Zþ=]'† ?(Z ÷ÿ=î'»þ=oo¦…€' 0¦æþ=§ç¶>ö=0î§ ç¦ Š@§ ¦„?Ч Æ0¦îç9ÆŒÆŒÆ í0îæ Äþ=¦·?¦ $ à † ?(z?&ð Ù~Å6¦ …@'¦…'¦ „¿§ ?2îoo?3oo Æ ÆŒÆ 2ç9ÆŒÆÿŒÆÿì÷'~»… '~¾„&~¾ñ|ñ¦„·ï'''~Á¦…&ñ榧çîô¦…'|ôþìæ ¦ Áÿ&ÿ&o o î …'sôîÿê­ì$~Äþ즄?Š@§}î&~¶ï'~ó}î*~–ðþì¦æî½É%mæþìl&lÁ &}ô/%}ñ& |ð†±ð&Ͻ¨ 0}ñ& }ð'7½¨%"3¶ï&¶î' Á & ½÷ ¶ò·ò½~$~µ~(óƽ~$6~µ¶ï&%}î' þìîæÁ '!}ô,þìŒ &æ Å '  $~µ½÷%ø~Ê}î&|ó ¶ï&ôöòP½~9ó}ô.Æ ½~%Æ ½~% }ô.ƽ~9ÆE}î+ ÆH}î'ÆDó½~$~µòO}î+þìæ¦î ?.]'~Çÿ$ùL»ò·òó}î&|ó ¶ï'ô½~%B}î*~Ï~}ó'7ÄðTTTT½˜3% Äþê½ã9Ê0Á:%Ë9öððÊ€ó ÉþìæŒÆŒÆ ŒÆ ŒÆŒÖŒÆÁ' 7þê­ì3þìç]' 9€Xÿÿ~~½>½>½>Æ _÷Bÿ@îÿ>þ@Æå'~/†¤&~1† ¥&÷½a$~<CIþ@æ¦ç§}B&†¤'''~8~}Eþ>†D¥'|Dþ@æÁ - ÁZ.½k$~<½%_ Æ÷F½€$~@}D'ZÁ& ½÷'ÝM&ZJþ@ç§C?%æ½k$Å~<Á&½ê~CÁ&(½ê%êþ@îÿGþ@æ¦þG?/'™æÿG½k%É åÎLá'…¶S¡&ôÁ &8þ@îç}D'}F&½ñ ½ê$~<}I'~@}C'~I½Uþ@o_9½6'Á&|I]*Ä'÷GÆ ½zG' ô½~–½€$~@}B'ÁH' ½6' ÁE&|I ÁD'½à ÖJ}B&tþ@†¤&i†·E½Ë%¾½Ø÷K&~Q}I'Á&ô}B'Á&ëzK' ½Ë%—½ؽ î½Ë%нØ}J&̽€%äÁ &÷þ@æ¦á&¡'m&jj~;†ÿ •0îç] 9ÆÆ ½U ïÆ ÷Æ ó}B&Æ êÆ æÆ âÆ Þ7þ>î­@39þ>î­@9þ@†@ª„§þ>î­ @9þ@†€ª„¿ é½€%%½à"$1111~QXXXX÷¶½€% ½à%æû¶ 9À0%Ëé% Ë*Ë%Ë 9}E+½€9½‹9¶J·J97Á &½a39Æ ½k%Æ ½k9þ@æ¦î?/9þ@æ¦î}E&M&ZJ½É97½%3ç½bþ@ç§9†·C39þ>†¥9 ÿ € ÿÿ½>½>~~X~ØÿN†¥'~Bæ¦ ÷P·Q†¤&þPî­ NþN†ª§o_9þP†¥'ᆥ' þN† ¥'~ÄþN†¤''&¼?8'¸~:þN†@¥' Dæ ¦ Áÿ&ÿ'8æ¦&]'/î?/')þNæ!¦"î?/%o ÷þN† ª§?†ß¤§]'~:þNoo†¥&~,î Œÿÿ&QþN†À¥'~F¦·Ræ îÿV„øDDD-#~JT·UÎS?öRÄXXXXþV?'†ÿÆ?þNæ ÎS?þNÆ ?'?"%~,0îç] 9Æ ôÆ ðÆ ìîÆå&0îo_90î?&\æÄøTTTÁ-RÁ# LÔ÷Õæ þÿÖÎÓ?0îæÄXXXXþÖ?'æÁÿ''ÿÔ0îÆ ?'ÿÖÎÔ6Æ ?20î?90îç 9Æ õÆ ñÄ&~Ï÷îÿ ¦·0îîÿ Ä' „æÄ&Ûþ Æ?$~Ó½ìÿöÄ'Mþ ¦ æ„Äÿ· ÷þ ¦ æ·÷„Äÿ± '~Ûñ&øöÄ&þ¶ö§ ç öÎ?_9Æþ ?%~×þ öÄ' ¶ö§ çÆ ?'ÿþ ?'ÿÎÆ?öÎ?þÆ ½ßþ Æ@?%!öÎ?þ†ÿ¡&ƽß~eÆ 9Æ úÆ öÆ ò†ÿ?öÎ?9¦îÿ„HHHH?(ÄøVVV÷9"€(ss~y½FÿrÆå&~#†@¥ &~'“îÿtþr†¥'¦„'~Kþt†€¥&.~+½Wo_9þt†¥'þr†?¤§†¤'&~~|“ àþt† ¥&~/½aþt†¥&~þrÆ ?'Æ?$Á'Æ ? ?þr†¤&~~3þr†¤' †€¥'~G†÷¤§oo†ÿ§ § §§ooîÿwþræ îÿyÎv?þyæ*~7¦þrç §þyÆ:m+Z&÷~7æ¦Äþrç§~¶}“'~¶½W?6'~øm 'Æ ?'ÿwþrîÿyÆ Îw?&þrîÿwþrÆ ?'ÿyÆÎw?~¶þrî¦ þr§?'üÁ 'øÁ '¦ «þt†@¥&~/½aþr¦„§„&þt†¥&† †þræÄø6§2''& þtÆå&~KþtÆå&~’þrÆ ?'Æ?$Á&~;Á&~?Á&~CÆ ? ?þr†ª§~C' ''~K}“'~¶þrîÿþrîÿ‘þrÆ ?'?$þrç§?%Æ?'?$þrç§½W?7ö¶ç§ö‘¶’ç§m&~¹†ª§~þt†¥&~+†`¤`&½a~0îç] 9Æ ôÆ ðÆ ìÆ èÆ äÆ àÆ ÜÆ ØÆ ÔÆ ÐÆ ÌÆ ÈÆ Äþr†ï¤§9þtî­r$11~O9$€Xss½F~y~‘A‘ƒ¨§ö:@ ÿÿ€°°#÷vQ "01040177"/ ) :1 0,LXO=ROMDIAG:1 1 XO=PUTRC:1 ,MAP:1,ABS:1,OVLY:1,FINI:1 sEND CHAIN¶HHHHC„ð´'Æ1~w? $Æ0 õþŸÿ|þ“ ÿ“΂æÊ ç?'Æ ×þ|ÿŸ½ç? %ÑΧ¦@'C\&ÿ|0æî$§ ']'Z ñ¶„·0¦¦î9Æ)~wÿ~þ|¦ÿ|þ~9¦*'..'*½WJ'tC'fL'_ÿ€½^S&~Êÿ‚½^T'%Æ2 ¹6ö~'Χ? 2.&4ÎŽ? ? $~©½ð #6¶·“ö¶ô€´þ‚?/  ½ä2~Ѷ„·~ óÿ‚|½äþ§Œ@L&õΧ½W¼‚&ê Ò¶ö´€ôº~ú·÷ ¸O †6΂æÄßç?&%2M' ¶~&Χ? þ|ÿ|þ€ÿxÎw_?Χ9Á &4¶'Æ3~w¶+Æ4 ô¶ƒŠ·ƒÎÿÿÿ΂?& ?&΄? ~y~ÇÆ?'ÿ|þ|ÿ|Î|6½Ž2&þ~9Æ ? þÿŒÎ‚???ooÆ0+( # €+ .‹ ÿ|7Æxy~Z&÷»·3Z&Ò9&€pýý~ Î!_Æ?έoßþ_Î!Z?þ!]îÿ!0¼&%þ!]î ÿ!3¼&Îÿ!_Î!Œÿ!aÆÎ!_?' †RŒ†I— ½èS úÆ? ¶ÿ'~ †U~ HÎ ¦ …@'ÎE¦ …@' þ{'3Îj? ,Î ?%È?%ÄÆêçÎE?%·?%³Îj?%¬?%¨Î!*? †=·3ήÆO? ? _÷3÷¶„·έßþÿ!6Î!:ÿ!8†0§§ÎCMÿ!CÎ!6?]&*þ!6ßþÆÎ!:?Á'†Á'†Á'†Á'† ? ~ Î!S? Æ€?#¶Š€·~  MDOS . !f!åWHAT?!f!cý½N ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ (€ 0BCOMMANDSYNTAXERROR 05NAMEREQUIRED 06\0DOESNOTEXIST 08\0DUPLICATEFILENAME 1BFILENAMENOTFOUND 1ADUPLICATEFILENAME 0DOPTIONCONFLICT 30CHAINABORTED--BREAKKEY 31CHAINABORTED--SYSTEMERRORSTATUSWORD 1CFILEISDELETEPROTECTED 24DEVICENOTREADYAT\8 0EINVALIDTYPEOFOBJECTFILE 0FINVALIDLOADADDRESS 13INVALIDFILETYPE 1ECONFLICTINGFILETYPES 1F\0HASINVALIDFILETYPE 27INVALIDDATATRANSFERTYPEAT\8 22DEVICEALREADYRESERVEDAT\8 23DEVICENOTRESERVEDAT\8 25FILENOTOPENORALREADYOPENAT\8 26ENDOFFILEAT\8 29BUFFEROVERFLOWAT\8 2ACHECKSUMERRORAT\8 15LOGICALSECTORNUMBEROUTOFRANGE 07ILLEGALFILENAME 2BFILEISWRITEPROTECTEDAT\8 20\0ISWRITEPROTECTED 09NOSUCHDEVICE 04ILLEGALDRIVENUMBER 12INVALIDEXECUTIONADDRESS 0AINVALIDDEVICE 11INVALIDRIB 1DTOOMANYSOURCEFILES 16ILLEGALSTART/ENDSPECIFICATIONS 17ILLEGALPAGEFORMAT 14FILEEXHAUSTEDBEFORELINEFOUND 28ENDOFMEDIAAT\8 18ILLEGALLINENUMBERORRANGE 19LINENUMBERENTEREDBEFORESOURCEFILE 02DIRECTORYSPACEFULL 03DISKSPACEFULL 10NOTENOUGHSEGMENTDESCRIPTORSPACE 2CINVALIDDIRECTORYENTRYNO.AT\8 2DCANNOTDE-ALLOCATEALLSPACE-DIRECTORYENTRYEXISTSAT\8 2ERECORDLENGTHTOOLONGAT\8 0CINTERNALSYSTEMERRORAT\8 21INVALIDSCALL 2FCHAINOVERLAYCANNOTBEFOUNDORLOADED 32CHAINABORTED--ILLEGALOPERATOR 33CHAINABORTED--UNDEFINEDLABEL 34CHAINABORTED--PREMATUREENDOFFILE ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ ,€ h! $0200 _"¤"·"¾g"°"È)1#  "u_"Œ"Ž"ç SYNTAX ERRORSYSTEM SECTOR COPY/VERIFY ERRORDIRECTORY READ/WRITE ERRORSOURCE FILE COPY ERROROBJECT FILE CREATION COPY ERRORCANNOT DELETE DUPLICATE NAMEDRIVE 1 SCRATCH? APPEND TO DRIVE 1?DISK NAME: DATE(MMDDYY): USER NAME: NO FILES TO COPYDELETE FILE NOS.: NEW NAME: STARTING TO COPY FILESINSUFFICIENT MEMORYENTER FILE COPY SELECTION COMMANDS: SAVE (S), DELETE (D), PRINT (P), QUIT (Q), NO MORE (CR)S, D, P, Q, (CR):.  NOT FOUND .SECTOR  OFFSET DR0- DR1-COPYING . - DUPLICATION: IS IT TO BE COPIED? NOT COPIEDCOPYINGMDOS SY OV0OV1OV2OV3OV4OV5OV6ER Ž ˆÎ OÆ?Þþ¦ 'ù '$;&ñ¦ßYÎ$С' Œ$ú&ô :î­ÞY â11–!+Î!a&Î!s½.ôÎ Æ? ¦Y'?O—)L—1–!.~$ú~&úÆ ? ~/þ–!&õJ—!9–!&íL ö–!&æ† î†š — 9†€ ÷|%9|#†—(9|&9|"9|$9–'&»z'ÆÎ#ÿ ¹Î ¹~-+–'&¦|'Æ Î"ù é $z $:A$‚C$ŠD$‘I$•L$™N$¡R${S$¥U$©V$sY$­Z$Âþ–$&΀½-öß9ß7ß/ßQþßMÆ??$„€HYI—O×PÞO}!*DV—O×P„DVF›NÙM×S—T_†?/"f–!+½. Îß*Îß,½&(Îß*Îß,½&(%>ÞMßQ|-Æ7½&(3%.Z&ö–$'-Îß*ÞOß,κÖ,–-?-$?)ß,ÎßY½&(ÞY&è~/î~/ä~/ÖÖO–PTFTF—[—\ÎßYß*Îß,Þ9¦ÆHZ&ü—;Æ×?Î$Zÿ%ÊÎ$“ÿ%ÌÎ%ÊÆ?†.·$›þ$bÿ$œ9Ö++Î$Zÿ%ÊÎ%Üÿ%ÌÎ%Ê?&–,*O J'þ$b¼%ä ¶$b±%ä9Î%Òÿ%ÊÎ$¡ÿ%ÌÎ%ÊÆ?Æ.¶$fÎ$¡H%çŒ$¦&õ¶$f„ª§9–!…&? 9z-&†<—-Æ?49?2Î%æ† Z'§ ø†§Î%æ?5?390 $Å%DDRIVE : DISK I.D. : . !WDSCN0 *NO SDW'S* NO DIRECTORY ENTRY FOUND TOTAL NUMBER OF SECTORS : /$ TOTAL DIRECTORY ENTRIES SHOWN : /$ NO TERMINATOR FOUND IN FILE'S R.I.B. ]'/l&lÿ&êþ&ꦄ #‹‹0m&jjî§þ&ê Z&Ýþ&ê96†dfJ&ù29]&~'„l&l÷'—ÿ'™Î'…ÿ'”†·'˜þ'™¦æÎ'oîà¢%Î'l ñë©Î'67¦‹0æ 'Z&ü§32Î'l&ll&lj ,Ãïî¦Î'î m&jjî§Î'l&lj&Þþ'™O9'èd †«Š§‹Æ$†0§ Z&ì9ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ  A€ NAM RDR 1.B *LOADER FOR MOTOROLA FORMAT HEX TAPE *USING DIGITRONICS 2500 READER. *20 NOV 1975 D L KAUFMAN ORG $1E00 OPT O BASE EQU $ACF8 PIACR1 EQU BASE+1 PIACR2 EQU BASE+3 PIADRA EQU BASE *DATA DIR REG A DATA CHAN. PIADRB EQU BASE+2 *DATA DIR REG B ******************STROBE PB7,RDR RUN PB0 INIT CLR A STA A PIACR1 STA A PIACR2 STA A PIADRA STA A HDFLG STA A FLG1 LDS #$1FFF LDA A #$01 STA A PIADRB LDA A #$34 *CR1 OUTPUT DATA REG SELECTED STA A PIACR1 STA A PIACR2 JSR CRLF CHAR1 JSR GTCHR *HEAD OF BLOCK DISPATCH ACC B HAS A *CHAR NON NUL/RUBOUT NON DEVICE CONTROL * HEAD CMP B #'S BEQ STRTC CMP B #$0D *CAR RET BEQ RTN CMP B #$0A *LF BEQ RTN JSR FAULT *NOT BLOCK START RTN JSR GTCHR BRA HEAD STRTC JSR GTCHR *GET RECORD TYPE CHAR CMP B #'0 BEQ HDR CMP B #'1 BEQ DATAR CMP B #'9 BEQ EOFR JSR FAULT *UNKNOWN RECORD TYPE  SPC 2 *HEADER RECORD HDFLG FCB $00 HDR INC HDFLG JSR BYTEC JSR SIZE HDR1 JSR RDFRA TST BYTE BEQ HDR2 JSR TYPBYT BRA HDR1 HDR2 JMP CHAR1 *GET A NEW BLOCK *EOF RECORD EOFR CLR HDFLG JSR BYTEC JSR SIZE JSR RDFRA JMP QUIT SPC 2 *DATA RECORD BLOCK DATAR TST HDFLG BEQ DATAR2 JSR BYTEC JSR SIZE DATAR1 JSR RDFRA TST BYTE BEQ DATEND STA B 0,X INX BRA DATAR1 DATAR2 BSR FAULT *NEVER SAW START BLOCK DATEND JMP CHAR1 *HALT PROGRAM QUIT LDA B #$07 BSR CRLF BRA FL FAULT LDA B #'? FL JSR TYPBYT BRA * SPC 2 *TYPE CHAR IN B ON TTY *PRESERVES A AND B TYPBYT PSH B TYPB1 LDA B $FCF4 BIT B #$02 BEQ TYPB1 PUL B STA B $FCF5 RTS *CARRIAGE RETURN LINE FEED CRLF PSH B LDA B #$0D BSR TYPBYT LDA B #$0A  BSR TYPBYT PUL B RTS *STORE BYTE COUNT IN BYTE, INITIALIZE * PARTSU AND CHECKSUM BYTEC CLR PARTSU CLR CKSUM JSR GTCHR JSR ASCBIN JSR GTCHR JSR ASCBIN STA B BYTE RTS PARTSU RMB $1 CKSUM RMB $1 BYTE RMB $1 SPC 2 *CONVERT ASCII HEX 7BIT CHAR *IN ACC B TO BINARY IN B AND PARTSU *ADD TO CKSUM ASCBIN CMP B #$30 BLT FAULT CMP B #$40 BLT ASC1 CMP B #$47 BGE FAULT ADD B #$09 ASC1 AND B #$0F TST FLG1 BNE ASC2  INC FLG1 ASL B ASL B ASL B ASL B STA B PARTSU RTS ASC2 ADD B PARTSU STA B PARTSU ADD B CKSUM STA B CKSUM LDA B PARTSU CLR FLG1 RTS FLG1 RMB $1 *2ND FRAME FLAG SPC 2 *STORE ADDRESS SIZE IN INDEX REG *AND SIZREG,SIZREG+1 SIZE JSR RDFRA STA B SIZREG JSR RDFRA STA B SIZREG+1 LDX SIZREG RTS SIZREG RMB $2 *READ A 2 CHAR FRAME FROM TAPE *UPDATE BYTE COUNT & CHECKSUM RDFRA JSR GTCHR JSR ASCBIN JSR GTCHR RDF11 JSR ASCBIN DEC BYTE BEQ CHEKSM *LAST BYTE RDFR1 RTS *NOT LAST CHEKSM INC CKSUM BNE CKER  RTS CKER JSR FAULT *PARITY ERROR SPC 2 *GET ONE CHAR FROM TAPE TO ACC B *IGNORE NULLS AND RUBOUTS *AND X  ON ,XOFF,PUNON,PUNOFF GTCHR INC PIADRB GTCH0 LDA A PIADRB BMI GTCH0 *LOOP TO FEED SPACE GTCH1 LDA A PIADRB  BPL GTCH1 *LOOP TIL FEED HOLE DEC PIADRB *STOP READER LDA B PIADRA COM B AND B #$7F *DROP PARITY BEQ ENDCH *NULL TRY NEXT CMP B #$7F BEQ ENDCH *RUBOUT CMP B #$11 *XON BEQ ENDCH CMP B #$12 *PUNON  BEQ ENDCH CMP B #$13 *XOFF BEQ ENDCH CMP B #$14 *PUNOFF BEQ ENDCH DONE RTS ENDCH BRA GTCHR *TRY FOR NEXT CHAR PATCH RMB 1 STAK EQU $1FFF-PATCH END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ I€"NAMMISCAN OPTO,NOG *"MISSIONARIESANDCANNIBALS"GAME *ORIGINALPROGRAMBYPHILIPN.THEURER *REV.1.0BYMOTOROLAMICROSYSTEMSNOVEMBER25,1976 *STARTINGADDRESS:0100 SPC1 ORG$0000 MISARMB1 MISBRMB1 CANARMB1 CANBRMB1 MISATRMB1 MISBTRMB1 CANATRMB1 CANBTRMB1 TRIPRMB1 COUNT1RMB1 COUNT2RMB1 COUNT3RMB1 COUNT4RMB1 SPC1 INCHNPEQU$F015 OUTCHEQU$F018 PCRLFEQU$F021 PDATAEQU$F024 PSPACEEQU$F02A SPC1 ORG$0100 BEGINLDX#INTROPRINTINSTRUCTIONS BEGIN1JSRPDATA BEGIN2LDAA#3 STAAMISA STAACANA CLRA STAAMISB STAACANB STAATRIP SPC1 GAMEJSRP2SP JSRP2SP JMPRIVER SPC1 CONTINJSRPCRLF TSTTRIP BNERGHTAR LDAA#'< BRAF1 SPC1 RGHTARLDAA#'> F1JSROUTCH JSROUTCH LDXMISASTORELASTLINEVALUES STXMISAT LDXCANA STXCANAT LDAA#2 STAACOUNT2 STAACOUNT3 LOOPJSRINCHNP CMPA#'M BEQF2 CMPA#'C BEQF3 CMPA#'E BEQF4 LDX#CR2LF CMPA#'R BEQBEGIN1 CMPA#'I BEQBEGIN BRAERRORR SPC1 F4DECCOUNT3 BNEF5 BRAERRORR SPC1 F2TSTTRIPMOVEMISSIONARY BNEODDMIS TSTMISB BNEMISBNZ BRAERRORRNOMISSIONARYB,ERROR SPC1 MISBNZDECMISBMOVELEFTIFTRIPFLAG0 INCMISA BRAF5 SPC1 ODDMISTSTMISA BNEMISANZ ERRORRJMPERRORNOMISSIONARYA,ERROR SPC1 MISANZDECMISAMOVERIGHTIFTRIPFLAGNOT0 INCMISB BRAF5 SPC1 F3TSTTRIPMOVECANNIBAL BNEODDCAN TSTCANB BNECANBNZ BRAERRORRNOCANNIBALB,ERROR SPC1 CANBNZDECCANBMOVELEFT INCCANA BRAF5 SPC1 ODDCANTSTCANA BNECANANZ BRAERRORRNOCANNIBALA,ERROR SPC1 CANANZDECCANAMOVERIGHT INCCANB F5DECCOUNT2 BNELOOP RIVERLDAA#10 STAACOUNT1 LDAA#$20 SLOOPBSROUTCHR DECCOUNT1 BNESLOOP LDAACANAPRNTCANAVALUE BSRONC LDAA#'C BSROC2S LDAAMISAPRINTMISAVALUE BSRONC LDAA#'M BSROC2S LDAA#16 STAACOUNT1 F6TSTTRIP BNERGHTPT LDAA#'< BSROUTCHR BRAF7 SPC1 OUTCHRJMPOUTCH SPC1 RGHTPTLDAA#'> BSROUTCHR F7DECCOUNT1 BNEF6 BSRP2SP LDAACANBPRINTCANBVALUE BSRONC LDAA#'C BSROC2S LDAAMISBPRINTMISBVALUE BSRONC LDAA#'M BSROUTCHR TSTMISAMISAANDCANA=‚0??? BNEF9 TSTCANA BNEF9 BRACONGTRYESWIN SPC1 F9LDAACANAISCANA>MISA? CMPAMISA BLEF10 TSTMISAMISANOT0? BEQF10 BRABURNYESLOSE SPC1 F10LDAACANBISCANB>MISB CMPAMISB BLEF11 TSTMISBMISBNOT0? BEQF11 BRABURNYESLOSE SPC1 F11  COMTRIPCOMPLEMENTTRIPFLAG JMPCONTIN SPC3 *SUBROUTINES SPC1 OC2SBSROUTCHR P2SPJSRPSPACE JSRPSPACE RTS SPC1 ONCORAA#$30 BSROUTCHR RTS SPC1 ERRORLDAA#'? BSROUTCHR LDAA#7BELL BSROUTCHR LDXMISATRESTOREVALUETO STXMISAPREVIOUSTRIP LDXCANAT STXCANA JMPCONTIN SPC1 BURNLDX#LOSEPRINTLOSEMSG JSRPDATA JMPBEGIN2 SPC1 CONGTRLDX#WINPRINTWINMSG JSRPDATA WAITJSRINCHNP CMPA#'I BNEWAIT JMPBEGIN SPC3 *MESSAGES SPC1 INTROFCB$A,$A,$A,$A FCC"MISSIONARIESANDCANNIBALS" FCB$D,$A,$A,$A,0 FCC"ƒTHREEMISSIONARIESANDTHREE" FCC"CANNIBALSARETRAVELINGTOGETHER" FCB$D,$A,,0 FCC"ANDCOMEUPONTHEGREATUGAHNA" FCC"RIVERWHICHTHEYMUSTCROSS.‚UN-" FCB$D,$A,,0 FCC"FORTUNATELYTHEYHAVEONLYONEB" FCC"OATANDITCANONLYHOLDTWOPEOPLE." FCB$D,$A,,0 FCC"TOFURTHERCOMPLICATEMATTERS," FCC"THECANNIBALSAREUNCIVILIZEDAND" FCB$D,$A,,0 FCC"WILLEATTHEMISSIONARIESIFAT" FCC"ANYTIMETHEYOUTNUMBERTHEM." FCB$D,$A,,0 FCC"ƒYOURMISSIONISTOMOVEALLTHE" FCC"CANNIBALSANDMISSIONARIESACROSS" FCB$D,$A,,0 FCC"THERIVERWITHOUTHAVINGANYOF" FCC"THEMISSIONARIESDEVOUREDBYTHE" FCB$D,$A,,0 FCC"CANNIBALS.‚ARROWSWILLSHOWWHICH" FCC"WAYTHEBOATISREADYTOSAIL." FCB$D,$A,,0 FCC"TYPEAN'M'TOPLACEAMISSIONARY" FCC"INTHEBOAT,A'C'TOPLACEA" FCB$D,$A,,0 FCC"CANNIBALINTHEBOAT,ORAN'E'TO" FCC"LEAVEANEMPTYSEAT.‚TORESTART" FCB$D,$A,,0 FCC"THEGAMETYPEAN'R',ORTOHAVE" FCC"THEINSTRUCTIONSREPRINTEDTYPEAN'I'" FCB$D,$A,,0 FCC"GOODLUCK!" CR2LFFCB$D,$A,$A,4 WINFCC"ƒCONGRATULATIONSSMARTALEC." FCC"CANNIBALSALLOVERTHEWORLDWILL" FCB$D,$A,,0 FCC"STARVEBECAUSEOFYOU!!!" FCB$D,$A,$A,4 LOSEFCC"ƒICANSEETHATYOUAREDOING" FCC"YOURPARTFORZEROPOPULATION" FCB$D,$A,,0 FCC"GROWTH." FCB$D,$A,$A,0 FCC"BURP!!!!" FCB7,$D,$A,$A,4 SPC1 END R€ 100 NAM DUMP  110 OPT M=MDUMP  120 OPT O=ODUMP  130 OPT SYMBOL  140 * MEMORY DUMP FOR USE WITH MIKBUG.  150 * PGM LOADS INTO RAM AT $0200.  160 * CONTENTS OF A048,A049 ARE CHANGED  170 * TO $0200 (BEGINNING ADDR FOR DUMP).  180 * AFTER LOADING, PRESS "G" TO GO  190 * TO DUMP ROUTINE.  200 * IN RESPONSE TO "A?" TYPE IN START  210 * AND END ADDRESSES IN HEX.  220 * FORMAT IS AAAA M0 M1 M2 ... ME MF  230 ORG $0200  240 SDUMP LDAA #'A PRINT A?  250 JSR OUTCH  260 LDAA #'?  270 JSR OUTCH  280 JSR BADDR FETCH START & END ADDR  290 STX LOADD  300 LDAA #'   310 JSR OUTCH  320 JSR BADDR  330 STX HIADD  340 NLINE LDAA #$0D PRINT CR & LINE FEED  350 JSR OUTCH  360 LDX #$8000 DELAY .25 SEC  370 DLY1 DEX  380 BNE DLY1  390 LDAA #$0A  400 JSR OUTCH  410 LDX #LOADD PRINT ADDRESS  420 JSR OUT4HS  430 NBYTE LDX LOADD PRINT BYTE  440 JSR OUT2HS  450 * NOTE THAT X REG HAS BEEN INCREMENTED  460 CP  X HIADD CHECK FOR END OF JOB  470 BEQ EOJOB  480 STX LOADD  490 LDAA LOADD+1 CHECK FOR END OF LINE  500 ANDA #$0F  510 BNE NBYTE  520 BRA NLINE  530 EOJOB JSR OUT2HS PRINT LAST BYTE  540 LDAA #$0D  550 JSR OUTCH  560 LDX #$8000 DELAY .25 SEC  570 DLY2 DEX  580 BNE DLY2  590 LDAA #$0A  600 JSR OUTCH  610 SWI RETURN TO MIKBUG  620 LOADD RMB 2  630 HIADD RMB 2  640 BADDR EQU $E047 INPUT HEX ADDRESS  650 OUTCH EQU $E075 PRINT ASCII CHARACTER  660 OUT4HS EQU $E0C8 PRINT 4 HEX CHAR & SPACE  670 OUT2HS EQU $E0CA PRINT 2 HEX CHAR & SPACE  680 ORG $A048 TARGET PC IN MIKBUG RAM  690 FDB $0200 START ADDR (SDUMP)  700 * PGM IS RELOCATABLE BY CHANGING ORG STMT  710 * AT LINE 230 AND FDB STMT AT LINE 690.  720 END  730 MON  ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ@W€@NAMKEY-XY *REV.1.0BYMOTOROLAMICROSYSTEMSAPRIL1977 * * *KEYBOARDTOX-YRECORDERCHARACTERCONVERSION * *AUTHOR:R.SLIVJANOVSKI *COMPANY:SCHERINGCORP.,BLOOMFIELD,N.J. *DATE:JULY1975 *COMPUTER:M6800 *LANGUAGE:ASSEMBLY *VERSION:PARALLELKEYBOARDINTERFACE(PIFLAG=0) *SERIALKEYBOARDINTERFACE(PIFLAG=1) * *PROGRAMACCEPTSASCIICODEDCHARACTERFROMTHE *KEYBOARDANDTRANSLATESITINTOSERIESOF *X-YDISPLACEMENTSEGMENTS,FORMINGTHESHAPE *OFENTEREDCHARACTERONX-YRECORDER * *MINIMUMCONFIGURATION: *(1)MC6800MPU *(2)MC6871ACLOCK *(3)MC1455TIMER-POWER-ONRESTART *(4)MCM6830LROM(2)-PROGRAMSTORAGE *(5)MCM6810L-1RAM-STACKANDWORKINGSTORAGE *(6)MC6820ORMC6850-KEYBOARDINTERFACE *(7)MC6820PIA2-X-YRECORDERINTERFACE *(8)8-BITD/ACONVERTER(2) *(9)CURRENTLOOPINTERFACE(SERIALONLY) * *ACCEPTABLECHARACTERSINASCIISEQUENCE: *…!"()+,-./0123456789:;= *…ABCDEFGHIJKLMNOPQRSTUV *…WXYZ * *SPECIALFUNCTIONS: *„(1)PENPOSITIONINGCOMMANDS *Œ1.TOP„-TYPE"[" *Œ2.BOTTOM-TYPE"]" *Œ3.LEFTƒ-TYPE"\" *Œ4.RIGHT‚-PRESSSPACEBAR *„(2)CHARACTERSIZEMODIFICATION *Œ-TYPE"@"FOLLOWEDBYTWODIGIT *ŽHEXADECIMALNUMBERREPRESENTING *ŽDESIREDSIZEOFTHECHARACTER *„(3)PLOTTINGSPEEDMODIFICATION *Œ-TYPE"#"FOLLOWEDBYFOURDIGIT *ŽHEXADECIMALNUMBERREPRESENTING *ŽDESIREDDELAYDURATIONIN *ŽEIGHTMICROSECONDSINCREMENTS * SPC2 * * *CHARACTERSUBROUTINEPOINTERS * * SPC1 ORG$6000 OPTNOG SPC2 CSPNT‚EQU* FDBSPA,EXCL,QUOT,DELC,DUMMY,DUMMY,DUMMY,DUMMY FDBLP,RP,DUMMY,PLUS,COMMA,MINUS,PERD,SLASH FDBZERO,ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN FDBEIGHT,NINE,COLON,SEMCL,LP,EQUAL,RP,DUMMY FDBSIZE,ACH,BCH,C,D,E,F,G FDBH,I,J,K,L,M,N,O FDBP,Q,R,S,T,U,V,W FDBXCH,Y,Z FDBVERUPˆ"[" FDBBACKSP‡"\" FDBVERDNˆ"]" SPC2 * * *CHARACTERSUBROUTINES * * SPAFDBH3,H1,RET  EXCLFDBPEND,PENU,V1,PEND,V1,PENU,S7,RET QUOTFDBV1,PEND,V1,PENU,H1,PEND,V2,PENU,S3,RET DELCFDBDELC1,RET LPFDBH1,PEND,S4,S1,PENU,S7,RET RPFDBPEND,S1,S4,PENU,S9,RET PLUSFDBH1,PEND,V3,PENU,S2,PEND,H3,PENU,S3,RET COMMAFDBPEND,V2,PENU,S1,RET MINUSFDBV1,PEND,H3,PENU,S3,RET PERDFDBPEND,PENU,H1,RET SLASHFDBPEND,S10,PENU,S7,RET ZEROFDBPEND,S10,H4,V4,H3,V3,PENU,S7,RET ONEFDBV1,PEND,S1,V4,PENU,H1,RET TWOFDBV3,PEND,H3,V2,H2,S2,H3,PENU,H1,RET THREEFDBPEND,H3,V3,H4,PENU,S3,PEND,H1,PENU,S3,RET FOURFDBH3,PEND,V3,PENU,H4,PEND,V2,H3,PENU,S3,RET FIVEFDBPEND,H3,S4,H2,V1,H3,PENU,S7,RET SIXFDBV1,PEND,H3,V2,H4,V3,H3,PENU,S7,RET SEVENFDBPEND,S10,H4,PENU,S9,H1,RET EIGHTFDBV1,PEND,H3,V2,H4,V3,H3,V2,PENU,S3,RET NINEFDBPEND,H3,V3,H4,V2,H3,PENU,S3,RET COLONFDBPEND,PENU,V3,PEND,PENU,S7,RET SEMCLFDBPEND,V2,PENU,V3,PEND,PENU,S3,RET EQUALFDBPEND,H3,PENU,V1,PEND,H4,PENU,S6,H1,RET SIZEFDBCHSIZ,RET ACHFDBPEND,V3,H3,V4,PENU,V1,PEND,H4,PENU,S6,H1,RET BCHFDBS1,PEND,S1,H4,V4,H3,V1,H4,PENU,S6,H1,RET CFDBS10,PEND,H2,S2,S3,H1,PENU,H1,RET DFDBPEND,H1,S1,S4,H2,V4,PENU,H3,H1,RET EFDBH3,PEND,H4,V3,H3,PENU,S5,PEND,H1,PENU,S6,RET FFDBPEND,V3,H3,PENU,S5,PEND,H1,PENU,S6,RET GFDBS1,PEND,H1,V2,H4,V3,H3,PENU,S7,RET HFDBPEND,V3,PENU,V2,PEND,H3,PENU,V1,PEND FDBV4,PENU,H1,RET IFDBPEND,V3,PENU,S7,RET JFDBV1,PEND,V2,H3,V3,PENU,S7,RET KFDBPEND,V3,PENU,H3,PEND,S5,S6,PENU,H1,RET LFDBV3,PEND,V4,H3,PENU,H1,RET MFDBPEND,V3,S3,S1,V4,PENU,H1,RET NFDBPEND,V3,S9,V3,PENU,S7,RET OFDBPEND,H3,V3,H4,V4,PENU,H3,H1,RET PFDBPEND,V3,H3,V2,H4,PENU,S6,H1,RET QFDBH3,PEND,V3,H4,V4,H3,S4,PENU,S6,RET RFDBPEND,V3,H3,V2,H4,PENU,H1,PEND,S3,PENU,H1,RET SFDBPEND,H3,V1,H4,V1,H3,PENU,S7,RET TFDBH1,PEND,V3,PENU,H2,PEND,H3,PENU,S7,RET UFDBV3,PEND,V4,H3,V3,PENU,S7,RET VFDBV3,PEND,S7,S8,PENU,S7,RET WFDBV3,PEND,V4,S1,S3,V3,PENU,S7,RET XCHFDBPEND,S10,PENU,H4,PEND,S9,PENU,H1,RET YFDBH1,PEND,V1,S4,PENU,S3,PEND,S1,PENU,S7,RET ZFDBH3,PEND,H4,S10,H4,PENU,S9,H1,RET VERUPFDBV3,V1,RET BACKSPFDBH4,H2,RET VERDNFDBV4,V2,RET DUMMYFDBRET SPC2 * * *SEGMENTSUBROUTINES * * PIADAEQU$8008 PIACAEQU$8009 PIADBEQU$800A PIACBEQU$800B * PIAKBDEQU$8010 PIAKBCEQU$8011 * CHSZEQU$42 XMEMEQU$44 YMEMEQU$46 DELDEQU$48 PIFLAGEQU00=>PARALLEL,1=>SERIALINTERFACE * ORG$6400 SPC2 DELLDXDELDDELAYAFTEREACHMOVEMENT DEXOFTHEPEN BNE*-1(DEFAULT-APPROX.360MILISECONDS) RTS * OUTSTAAXMEMOUTPUTNEWPENCOORDINATES STABYMEM STAAPIADA STABPIADB BSRDEL RTS * PENDLDAA#$3EPENDOWN STAAPIACASETCRA3(CA2GOESHIGH) BSRDEL RTS * PENULDAA#$36PENUP STAAPIACACLEARCRA3(CA2GOESLOW) BSRDEL RTS * * H13ADDAXMEM H131LDABYMEM BRAOUT H24SUBAXMEM NEGA BRAH131 V13ADDBYMEM V131LDAAXMEM BRAOUT V24SUBBYMEM NEGB BRAV131 S110TAB S1101ADDAXMEM S1102ADDBYMEM BRAOUT S25SUBAXMEM NEGA S251SUBBYMEM NEGB BRAOUT S39TAB S3679ADDAXMEM BRAS251 * H1LDAACHSZ BRAH13 H2LDAACHSZ BRAH24 V1LDABCHSZ BRAV13 V2LDABCHSZ BRAV24 S1LDAACHSZ BRAS110 S2LDAACHSZ TAB BRAS25 S3LDAACHSZ BRAS39 S4LDAACHSZ TAB SUBAXMEM NEGA BRAS1102 V3LDABCHSZ ASLB BRAV13 H3LDAACHSZ ASLA BRAH13 V4LDABCHSZ ASLB BRAV24 H4LDAACHSZ ASLA BRAH24 S5LDAACHS Z TAB ASLA BRAS25 S6LDAACHSZ TAB ASLA BRAS3679 S7LDAACHSZ TAB ASLB BRAS3679 S8LDAACHSZ TAB ASLB BRAS1101 S9LDAACHSZ ASLA BRAS39 S10LDAACHSZ ASLA JMPS110 RETINS INS RTI SPC2 * * *CHANGECHARACTERSIZE("@"TYPED) CHSIZBSRFORMB STAACHSZ BRAOUT1 *CHANGEDELAYDURATION("#"TYPED) DELC1BSRFORMB STAADELD BSRFORMB STAADELD+1 BRAOUT1 *FORMTHEBYTEFROMTWOHEXADECIMALCHARACTERS *ENTEREDFROMTHEKEYBOARD IFNEPIFLAG FORMBLDAA#$0DDISABLERECEIVEINTERRUPT ‚STAAACIAC ENDC IFEQPIFLAG FORMBLDAA#$06DISABLERECEIVEINTERRUPTFROMPIA STAAPIAKBC ENDC BSRINHEX ASLA ASLA ASLA ASLA TAB BSRINHEX ABA RTSRETURNWITHTHEBYTEINREGISTERA *INPUTHEXADECIMALCHARACTERFROMTHEKEYBOARD IFNEPIFLAG INHEXLDAAACIAC ASRA BCCINHEX LDAAACIADINPUTCHAR STAAACIADECHOIT ENDC IFEQPIFLAG INHEXLDAAPIAKBC ASLA BCCINHEXWAITFOR"IRQA1" LDAAPIAKBDINPUTACHARACTER ENDC SUBA#$30 BMIPEXITNOTHEX CMPA#$09 BLEEXIT CMPA#$11 BMIPEXITNOTHEX CMPA#$16 BGTPEXITNOTHEX SUBA#7 EXITRTS PEXITINS INS INS INS IFNEPIFLAG OUT1LDAA#$8DENABLEINTERRUPTS STAAACIAC ENDC IFEQPIFLAG OUT1LDAA#$07ENABLERECEIVEINTERRUPT STAAPIAKBCFROMPIA ENDC RTS SPC2 * * *KEYBOARDTOX-YRECORDER * *MAINPROGRAM * * STACKEQU$3F * STARTLDS#STACKINITIALIZESTACKPOINTER IFNEPIFLAG LDAA#$03RESETACIA S7AAACIAC ENDC COMPIADAALLBITSOFPIA2SIDEA-OUTPUT COMPIADBALLBITSOFPIA2SIDEB-OUTPUT LDAA#$36CA2FOLLOWSCRA3 STAAPIACAINITIALYZERO-PENUP STAAPIACBSAMEFORCB2 CLRPIADASETXANDYDISPLACEMENTINITIALY CLRPIADBTOZERO CLRXMEM CLRYMEM LDAA#5SETUPDEFAULTCHARACTERSIZE STAACHSZ LDX#$AFFFSETUPDEFAULTDELAYDURATION STXDELD *PIA1CHARACTERISTICS: *†-POSITIVETRANSITIONONCA1SETSCRA-7HIGH *†-IRQAENABLED IFNEPIFLAG LDAA#$8D STAAACIAC ENDC IFEQPIFLAG LDAA#$07 STAAPIAKBC ENDC * CLIENABLEINTERRUPTS WAIWAITFORINTERRUPTLOOP BRA*-1 SPC2 * * *KEYBOARDTOX-YRECORDER * *INTERRUPTSERVICEROUTINE * * POINTREQU$4A SAVEXEQU$4C * INTRPTEQU* IFNEPIFLAG LDABACIAD STABACIAD ENDC IFEQPIFLAG LDABPIAKBD ENDC CMPB#$20VALIDCHARACTERRANGESFROM BLTRETURN$20(SPACE)TO$5D("]") CMPB#$5D BGTRETURN SUBB#$20FORMTHEPOINTERTOCHARACTER ASLBSUBROUTINEADDRESSES LDX#CSPNTMAINTAINPOSITIONINDEPENDENTCODE STXPOINTR ADDBPOINTR+1 BCCSKIP INCPOINTR SKIPSTABPOINTR+1 LDXPOINTR LDX0,XGETTHECHARACTERSUBROUTINEADDRESS STXSAVEXSAVEIT LOOPLDX0,XGETTHESEGMENTSUBROUTINEADDRESS JSR0,XEXECUTETHESEGMENTSUBROUTINE LDXSAVEX INXACCESSNEXTSEGMENTSUBROUTINE INX STXSAVEX BRALOOP RETURNRTIINVALIDCHARACTERRETURN SPC2 * * *INTERRUPTMEMORYASSIGNMENT * * ORG$67F8 SPC2 FDBINTRPTHARDWARE FDBINTRPTSOFTWARE FDBSTARTNMI FDBSTARTRESTART SPC5 END /* ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ  h€ NAMCRCC OPTO BUFFEREQU$0000STARTOFBUFFER EBUFEQU$0010ENDOFBUFFER POLEQU$94POLYNOMIALFORCASSETTECRCCCHECKING SPC2 * * ORG$00FCMEMORYLOCATIONS XTEMPRMB2TEMPORARYXSTORAGE CRRMB1CRCCCHECKCHARACTERSTORAGE TEMPRMB1TEMPORARYSTORAGE * * * ORG$0100 SCRCCPSHBSTOREPRESENTVALUES PSHA STXXTEMP CLRCRCLEARCRINITIALLY LDX#BUFFERBEGINNINGOFDATABUFFER S1LDAA0,XDATAWORD STAATEMPDATAWORDTOTEMP LDAA#$80ACCAPOINTSTOBITTOBEINTERROGATED SCR1ASLCRSHIFT0INTOLOWCR,SHIFTHIGHCRTOCY BITATEMPISCURRENTBIT0OR1 BEQSCR2IFEQ,CURRENTBIT=0 BCSNOCHABIT=1,FEEDBACKFROMCRCC=1,NOCHANGETOCR BRACHANGBIT=1,FEEDBACK=0,CHANGECR SCR2BCCNOCHABIT=0,FEEDBACK=0,NOCHANGETOCR CHANGLDAB#POLBIT=0,FEEDBACK=2,FEEDBACK=0 EORBCRDOEXCLUSIVEORWITHCR STABCR NOCHALSRAINTERROGATENEXTBIT BNESCR1 INXWORDFINISHED,GOTONEXTWORD CPX#EBUFISBUFFERDONE? BNES1 PULAFINISHED,RESTOREVALUES PULB LDXXTEMP RTSRETURNTOCALLINGROUTINE * * * *TESTPROGRAMWILLCALCULATECRFORLOCATING0000-000F *TAKECRANDPUTITATENDOFBUFFER(0010)THENCHANGE *THESCRCCPROGRAMTOALLOWFORONEMOREWORDINTHE *BUFFERTHENCALCULATETHECRFORTHEENLARGEDBUFFER. *ATTHEENDOFTHISPROCEDURE,CRANDACCA=0INDICATING *ACORRECTCRCC TESTLDS#$007F BSRSCRCCCALCULATECRFORLOCATIONS0-F LDAACRPUTCRATENDOFBUFFER LDX#EBUF STAA0,X INCNOCHA+6INCREASEVALUEOFEBUFFERINPROGRAM BSRSCRCC DECNOCHA+6RESTOREVALUEOFEBUFFERINPROGRAM LDAACR SWISETBREAKPOINTERRORINEXORCISORFOREXAMINATION END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ l€NAMDECODE *‚REV.1.0BYMOTOROLAMICROSYSTEMSAPRIL1977 OPTO,NOG XBUGEQU$F564 AFLGEQU$80 BFLGEQU$40 IMMFLGEQU$20 BRFLGEQU$10 E4FLGEQU$08 E2FLGEQU$04 XFLGEQU$06 * ORG$2000 BEGINBSRCRLF BSRCRLF LDX#MSG1 BSRPLMSG LDX#ADDR BSRINHEX LDX#MSG2 BSRPLMSG LDX#ENDAD BSRINHEX TSTB BNE*+5 JMPXBUG BSRCRLF TESTJSRCRLF LDX#ADDR LDAA0,X LDAB1,X SUBB3,X SBCA2,X BCSSTART BRABEGIN PLMSGJMP$F024 INHEXJMP$F00F OUT4HSJMP$F01E OUT2HSJMP$F01B CRLFJMP$F021 STARTBSROUT4HS LDXADDR BSROUT2HS LDXADDR LDAA0,X STAABYTE1 LDX1,X STXBYTE2 CLRB CMPA#$8D BNEZ1 LDAA#$21 Z1‚EORA#$20 BITA#$F0 BNEZ15 PAGE JMPLK2 Z15EORA#$12 BITA#$FB BNEZ2 ORAB#AFLG Z2EORA#$01 BITA#$FB BNEZ3 ORAB#BFLG Z3EORA#$33 BITA#$C0 BEQLK1 EORA#$40 BITA#$F0 BNEZ4 ORAB#AFLG Z4EORA#$10 BITA#$F0 BNEZ5 ORAB#BFLG Z5EORA#$30 BITA#$30 BNEZ6 ORAB#XFLG Z6EORA#$10 BITA#$30 BNEZ7 ORAB#E4FLG Z7EORA#$70 BMITOP ANDA#$4F LK1LDX#TABLE1 LK1ACMPA0,X BEQFOUND INX INX INX INX CPX#ENTBL1 BNELK1A FOUNDLDAA1,X  STAACHAR1 LDX2,X STXCHAR2 BRAPRINT TOPEORA#$0C BITA#$0C BEQODD ORAB#BFLG BITA#$40 BNE*+4 ORAB#AFLG BITA#$30 BNE*+4 ORAB#IMMFLG ANDA#$8F BACKEORA#$0C ORAB#E2FLG ANDA#$CF BRALK1 ODDBITA#$3D BNE*+6 ORAB#E4FLG ORAB#IMMFLG BRABACK LK2ORAB#BRFLG LDX#TABLE2 ASLA ANDA#$1E STAAPNT1 FCB$EE PNT1FCB$00 STXCHAR2 LDAA#'B STAACHAR1 PRINTLDX#BYTE2 BSRINCAD BITB#$08 BEQNOT4 JSROUT4HS BSRINCAD BSRINCAD BRAARG INCADINCADDR+1 BNE*+5 INCADDR RTS SPACEPSHA BSROUTS PULA DECA BNESPACE RTS OUTSJMP$F02A PMESSJMP$F027 NOT4BITB#$14 BNEOVER LDAA#$5 BSRSPACE BRAARG OVERBSRINCAD JSROUT2HS LDAA#$02 BSRSPACE ARGLDAA#$07 BSRSPACE LDX#CHAR1 BSRPMESS PAGE ROLB BCSPRNA BMIPRNB IMMROLB ROLB BCSPRNIMM BMIBRANCH ETESTLDX#BYTE2 ROLB ROLB BCSP4D ROLB BMIPRNX BCCOUT P2DLDAA#$24 BSROUCH JSROUT2HS TSTB BMIPRNX1 OUTJMPTEST OUCHJMP$F018 PRNALDAA#'A BSROUCH BSROUTS BRAIMM PRNBLDAA#'B BRAPRNA+2 PRNIMMLDAA#$23 BSROUCH BRAETEST P4DLDAA#$24 BSROUCH JSROUT4HS BRAOUT PRNXLDAA0,X CMPA#$09 BHIP2D ORAA#$30 BSROUCH PRNX1LDAA#$2C BSROUCH LDAA#$58 BSROUCH BRAOUT BRANCHLDAA#$8 ASRBYTE2 RORBYTE3 DECA BNEBRANCH+2 LDX#ADDR LDAA0,X LDAB1,X ADDB6,X ADCA5,X PAGE STAA5,X STAB6,X LDX#BYTE2 BRAP4D TABLE1FCB$01 FCC3,NOP FCB$06 FCC3,TAP FCB$07 FCC3,TPA FCB$08 FCC3,INX FCB$09 FCC3,DEX FCB$0A FCC3,CLV FCB$0B FCC3,SEV FCB$0C FCC3,CLC FCB$0D FCC3,SEC FCB$0E FCC3,CLI FCB$0F FCC3,SEI FCB$10 FCC3,SBA FCB$11 FCC3,CBA FCB$16 FCC3,TAB FCB$17 FCC3,TBA FCB$19 FCC3,DAA FCB$1B FCC3,ABA FCB$30 FCC3,TSX FCB$31 FCC3,INS FCB$32 FCC3,PUL FCB$33 FCC3,PUL FCB$34 FCC3,DES FCB$35 FCC3,TXS FCB$36 FCC3,PSH FCB$37 FCC3,PSH PAGE FCB$39 FCC3,RTS FCB$3B FCC3,RTI FCB$3E FCC3,WAI FCB$3F FCC3,SWI FCB$40 FCC3,NEG FCB$43 FCC3,COM FCB$44 FCC3,LSR FCB$46 FCC3,ROR FCB$47 FCC3,ASR FCB$48 FCC3,ASL FCB$49 FCC3,ROL FCB$4A FCC3,DEC FCB$4C FCC3,INC FCB$4D FCC3,TST FCB$4E FCC3,JMP FCB$4F FCC3,CLR FCB$80 FCC3,SUB FCB$81 FCC3,CMP FCB$82 FCC3,SBC FCB$84 FCC3,AND FCB$85 FCC3,BIT FCB$86 FCC3,LDA FCB$87 FCC3,STA FCB$88 FCC3,EOR FCB$89 FCC3,ADC FCB$8A FCC3,ORA FCB$8B FCC3,ADD PAGE FCB$8C FCC3,CPX FCB$8D FCC3,JSR FCB$8E FCC3,LDS FCB$8F FCC3,STS FCB$CE FCC3,LDX FCB$CF FCC3,STX ENTBL1FCB$00 FCC3,*** TABLE2FCC'RASRHILSCCCSNEEQ' FCC'VCVSPLMIGELTGTLE' MSG1FCC'BEGIN:' FCB4 MSG2FCC'END:' FCB4 ADDRRMB2 ENDADRMB2 BYTE1RMB1 BYTE2RMB1 BYTE3RMB1 CHAR1RMB1 CHAR2RMB1 CHAR3RMB1 FCB$20,$04 END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ u€* *PRTMSG *PRINTSAMESSAGEBYNUMBER.‚WHENCALLED, *XSHOULDCONTAINTHELOCATIONOFTHE *MESSAGETABLE,ANDBSHOULDCONTAINTHE *MESSAGENUMBER,ANON-NEGATIVEINTERGER. *INTHEMESSAGETABLE,AMESSAGEIS *TERMINATEDBYTHE#SYMBOL.‚ *THETABLEMUSTBETERMINATEDBY##. *IFTHEMESSAGEISOUTPUT,BRETURNS *WITHO;OTHERWISE-1. * SPC2 PRTMSGCLC TSTNRTSTBISTHISTHEMESSAGE? BNESKIP1 MSGCHRLDAAX CMPA#$23#ISENDOFMESSAGE. BNEOUTIT RTSRETURNOINB. OUTITJSROUTPRC INX BRAMSGCHR SKIP2INX SKIP1LDAA#$23 CMPAX BNESKIP2 SBCB#1DECREMENTMESSAGENUMBER. INX CMPAX##ISSTOPPER. BNETSTNR LDAB#-1RETURN-1INB. RTS * OUTPRCEQU$E1D1 END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅHw€INAMDISKFILETRANSFER9/13/76 **************************************************** *REVISION1.0 *THISPROG.SUPERCEDES"DISKFILETRANSFER4/21/76"* *²* *²* *B.W.SAUNDERS¤* *SPRAGUEELECTRICCO.ž* *87MARSHALLST.£* *NORTHADAMS,MA.01247œ* *²* *²* *THEPURPOSEOFTHISPROGRAMISTOGIVEEXORCISER‚* *USERSWITHSINGLEDRIVEUNITEXORDISKSTHECAPA-‚* *BILITYTOCOPYFILESFROMONEDISKETTETOANOTHER* *WITHOUTUSINGPAPERTAPEORCASSETTEASANINTER-* *MEDIATEMEDIUM.£* *²* *THEMAXIMUMFILESIZEWHICHCANBETRANSFERRED„* *IS123SECTORS(007BHEX).‚THISSIZEISBASEDON* *AMINIMUMUSERMEMORYOF16KBYTESCONTIGUOUS…* *FROM0000TO3FFF.‚FORLARGERORSMALLERUSER„* *MEMORIES,THEPROGRAMMAYBEREADILYCHANGED†* *USINGTHEMAIDEXAMINEANDCHANGEMEMORYFUNC-„* *TION.‚TOALTERTHEPROGRAMSOLVETHEFOLLOWINGƒ* *EQUATION(ALLVALUESINHEXADECIMAL):* *²* *‚(USER'SMEMORYSIZE-0280)/0080=XXXX‰* *²* *THENUSETHEMAIDEXAMINEANDCHANGEMEMORYDATA‚* *FUNCTIONTOPLACETHERESULTINLOCATIONS008E„* *(MSB)AND0094(LSB).‚THEMAXIMUMPOSSIBLEFILE‚* *SIZEALLOWING65KOFRAM,LESSTHEAREAOCCUPIED‚* *BYTHEEXBUGANDFDOS-IIRESIDENTFIRMWAREIS…* *459SECTORS(01CBHEX).›* *²* *²* *TOEXECUTE:‚LOAD,FITROš* *GOTOMAID›* *TYPE50;Gœ* *²* *TOEXIT:(1)PRESS"ABORT"˜* *‰(2)PRESS"RESTART"–* **************************************************** PAGE **************************************************** *‹DESCRIPTIONOFOPERATION* **************************************************** *²* *(1)THEUSERINITIATESPROGRAMEXECUTIONUSINGTHE* *MAID"GOTO"FUNCTION.œ* *²* *(2)THEPROGRAMPROMPTSTHEUSERTOENTERA5…* *CHARACTERFILENAMEBYPRINTING"FILENAME:".†* *²* *(3)THEUSERTHENENTERSTHEFULL5CHARACTER…* *FILENAME,INCLUDINGTRAILINGSPACES.‚IFANERROR* *ISMADEENTERINGTHEFILENAME,THEUSERSHOULD„* *PRESSTHE"ABORT"OR"RESTART"SWITCHANDRESTART* *THEPROGRAM.¦* *²* *(4)IMMEDIATELYAFTERTHE5THCHARACTERISTYPEDA* *CR,LF,NULLISSENTTOTHETERMINALANDA6.8SEC* *TIMEDELAYOCCURS.‚THETIMEDELAYALLOWSTHEDISK* *TOCOMEUPTOSPEED.ž* *²* *(5)THEPROGRAMTHENSEARCHESTHEFILEDIRECTORY‚*  *OFTHEDISKETTEINTHEDRIVEUNITFORTHEFILENAME* *IFTHEFILENAMEISNOTFOUND,"NSF"(NOSUCHFILE)* *ISTYPEDANDTHEPROGRAMRETURNSTOSTEP(2).…* *²* *(6)IFTHEFILENAMEISFOUND,THEFILESIZEIS…* *CHECKEDTODETERMINEIFTHEFILEWILLFITINTOTHE* *USER'SMEMORY.‚IFTHEFILEISTOOLARGE"FTL"„* *(FILETOOLARGE)ISTYPEDANDTHEPROGRAMRETURNS* *TOSTEP(2).¦* *²* *(7)IFTHEFILEISNOTTOOLARGE,THEFILEISREAD* *INTOMEMORY.¦* *²* *(8)THEPROGRAMNOWPROMPTSTHEUSERTOPLACETHE* *DISKETTETOWHICHITISDESIREDTOCOPYTHEFILE‚* *(THETARGETDISKETTE)INTHEDRIVEUNITBYTYPING* *"CHNGEDSKS-TYPERETURN"(EXCHANGEDISKETTES-TYPE* *RETURN).ª* *²* *(9)AFTERTHEDISKETTESARESWITCHED,THEUSER„* *SHOULDPRESSTHE"RETURN"KEY.‚IFTHEUSER‡* *PRESSESANYOTHERKEY,THEPROGRAMRETURNSTO…* *STEP(8).©* *²* *(10)WHENTHE"RETURN"KEYISPRESSED,ACR,LF,‚* *NULLISGENERATED,ANDA6.8SECONDTIMEDELAY„* *OCCURS.‚THEPROGRAMSEARCHESTHEFILEDIRECTORY‚* *OFTHETARGETDISKETTEFORTHEFILENAME.‚IFTHE‚* *FILENAMEISFOUND,"DFN"(DUPLICATEFILENAME)IS* *TYPEDANDTHEPROGRAMRETURNSTOSTEP(8)‰* **************************************************** PAGE **************************************************** *(11)IFTHEFILENAMEISNOTFOUND,THEFILESIZE‚* *ISCHECKEDTODETERMINEIFTHEFILEWILLFITINTO* *THETARGETDISKETTE.‚IFTHEFILEISTOOLARGE,ƒ* *"NR"(NOROOM)ISTYPEDANDTHEPROGRAMRETURNSTO* *STEP(8).©* *²* *(12)IFTHEFILEISNOTTOOLARGE,THEFILEIS„* *WRITTENTOTHETARGETDISKETTE,THEFILEDIRECTORY* *ISUPDATED,ANDTHEPROGRAMRETURNSTOSTEP(2).‚* **************************************************** PAGE OPTO,NOG ORG$4 **************************************************** *DISKPARAMETERS“* **************************************************** ISIZERMB2IFILESIZE ITRKRMB1IFILETRACK ISCTRRMB1IFILESECTOR ICNTRRMB1IFILEBUFFERCOUNTER OSIZERMB2OFILESIZE OTRKRMB1OFILETRACK OSCTRRMB1OFILESECTOR OCNTRRMB1OFILEBUFFERCOUNTER **************************************************** *ˆEXBUG&EDOSRESIDENTSUBROUTINES‰* **************************************************** RIEQU$E91BFDOSRIROUTINE WRTEQU$E98EFDOSWRTROUTINE PDATAEQU$FA33EXBUGI/OROUTINES PDATA1EQU$FA35 PCRLFEQU$FA41 INCHPEQU$FAA0 **************************************************** *VARIABLESTORAGE&TEXTŽ* **************************************************** FSIZERMB2FILESIZE ATTRRMB1FILEATTRIBUTES SCTRRMB1FILEDIRECTORYSECTOR# SAVEXRMB2TEMPORARY-X-STORAGE FLNMRMB2TEMPXSTORAGEUSED BUFFRMB2BYSEARCHROUTINE PNTRRMB2FILEDIRECTORYPOINTER FLNAMERMB5FILENAME INPUT1FCC/FILENAME:/TTYOUTPUTS FCB$04 NOFILEFCC/NSF/ FCB$04 CHDISKFCC/CHNGEDSKS-TYPERETURN/ FCB$04 DUPFILFCC/DFN/ FCB$04 TOOBIGFCC/FTL/ FCB$04 NOROOMFCC/NR/ FCB$04 BUFF1EQU$200FILEDIRECTORYBUFFER BUFF2EQU$280FILEBUFFER AECHOEQU$FF53USEDBYEXBUGINCHPROUTINE PAGE **************************************************** *ŽDISKFILETRANSFER’* **************************************************** ORG$50 CLRAECHO INPUT2LDX#INPUT1PRINT"FILENAME:" JSRPDATA LDX#FLNAMEINPUT5CHARACTERFILENAME R0JSRINCHP STAA0,X INX CPX#FLNAME+5 BNER0 JSRPCRLF JSRSEARCH SEARCHFDFORFILENAME TSTAFILENAMEFOUND? BEQRDFILEYES-CONTINUE LDX#NOFILENO-PRINT"NSF" JSRPDATA1 BRAINPUT2RETURNTOINPUT RDFILELDAA5,XREADATTRIBUTES STAAATTRSTOREFORLATERUSE LDAA6,XOPENINPUTFILE STAAITRK LDAA7,X DECA STAAISCTR LDX8,X STXISIZE STXFSIZESTOREFILESIZEFORLATERUSE LDAAFSIZEFILETOOLARGEFORBUFFER? CMPA#$00 BHIL1 LDAAFSIZE+1 CMPA#$7C BHIL1 BRAL2 L1LDX#TOOBIGYES-PRINT"FTL" JSRPDATA1 BRAINPUT2RETURNTOINPUT L2LDX#BUFF2NO-READFILEINTORAM JSRDISKRD INPUT3LDX#CHDISKPRINT"CHANGEDISKS- JSRPDATATYPERETURN" JSRINCHPINPUTRESPONSE CMPA#$0DRESPONSE=CR? BEQGO2YES-CONTINUE BRAINPUT3N0-GETANOTHERRESPONSE GO2JSRPCRLF JSRSEARCHSEARCHFDFORFILENAME TSTAFILENAMEFOUND? BNEGO3NO-CONTINUE LDX#DUPFILYES-PRINT"DFN" JSRPDATA BRAINPUT3RETURNTOCHANGE GO3LDAAFLNAMEUPDATEFDWITHFILENAME STAA0,X LDAAFLNAME+1 STAA1,X LDAAFLNAME+2 STAA2,X LDAAFLNAME+3 STAA3,X LDAAFLNAME+4 STAA4,X LDAAATTROPENOUTPUTFILETO STAA5,XWRITEFILETODISK, LDAAFSIZEALSOUPDATEFILE STAA8,XDIRECTORY LDAAFSIZE+1 STAA9,X LDAB6,X STABOTRK LDAA7,X STAAOSCTR LDX8,X DEX STXOSIZE TB3INCAISTHEREENOUGHROOMON CMPA#26DISKFORTHISFILE? BLSTB1 INCB CMPB#76 BLSTB2 LDX#NOROOMNO-PRINT"NR" JSRPDATA BRAINPUT3 TB2LDAA#1 TB1DEX BNETB3 LDX#BUFF2YES-WRITEFILETODISK BSRDISKWT LDAAOSCTRSAVENEXTAVAILABLESTARTING PSHATRACK&SECTORDATAONSTACK LDAAOTRK PSHA LDXPNTRISTHISLASTENTRYINTHIS CPX#BUFF1+110SECTOROFFD? BNEEOFDUDNO-WRITEEOFDATAINNEXTFCB CLROTRKYES-WRITETHISSECTORTO INCSCTRFD,WRITEEOFDATAINFIRST LDAASCTRFCBOFNEXTSECTOR STAAOSCTR LDX#1 STXOSIZE LDX#BUFF1 BSRDISKWT LDX#BUFF1-11 EOFDUDLDAB#11WRITEEOFCHARACTERSAND EOF1INXDATAINFD DECB BNEEOF1 LDAB#5 LDAA#'* EOF2STAA0,X INX DECB BNEEOF2 LDAA#$FF STAA0,X PULA STAA1,X PULA STAA2,X CLROTRK INCSCTR LDAASCTR STAAOSCTR LDX#1 STXOSIZE LDX#BUFF1WRITEFDTODISK BSRDISKWT JMPINPUT2 PAGE **************************************************** *DISKWTWRITESTHEOUTPUTFILEDEFINEDBYOTRK,„* *OSCTR,OSIZEANDSTARTINGAT-X-.‘* **************************************************** DISKWTCLROCNTR OBYTELDAA0,X STXSAVEX JSRWRT LDXSAVEX INX TSTOSIZE BNEOBYTE TSTOSIZE+1 BNEOBYTE RTS **************************************************** *DISKRDREADSTHEINPUTFILEDEFINEDBYITRK,ISCTR* *ANDISIZE.‚THEFILEISSTOREDBEGINNINGAT-X-.‚* **************************************************** DISKRDCLRICNTR IBYTESTXSAVEX JSRRI BCSRET LDXSAVEX STAA0,X INX BRAIBYTE RETRTS PAGE **************************************************** *SEARCHSEARCHESTHEFILEDIRECTORYOFTHEDISKETTE* *INTHEDRIVEUNITFOR-FLNAME-.‚IFFILENAMEISƒ* *FOUNDSEARCHRETURNS-X-=1STBYTEOFFCB,ANDƒ* *-A-=0.‚IFFILENAMEISNOTFOUND,SEARCHRETURNS* *PNTR=-X-=1STBYTEOFNEXTVACANTFCB,-A-=1* **************************************************** SEARCHBSRTIMER LDAA#2 STAASCTR CP009CLRITRK LDX#2 STXISIZE INCSCTR LDAASCTR STAAISCTR LDX#BUFF1 BSRDISKRD LDX#FLNAME STXFLNM LDX#BUFF1 CP002LDAB#5 CP010LDAA0,X  INX STXBUFF LDXFLNM CMPA0,X BNECP001 INX STXFLNM LDXBUFF DECB BNECP010 BSRCP003 CLRA RTS CP001LDX#FLNAME STXFLNM LDXBUFF CP004‚DECB BEQCP006 CP005INX CMPB#$FB BNECP004 CPX#BUFF1+121 BNECP002 BRACP009 CP006LDAA#$FF CMPA0,X BNECP005 BSRCP003 STXPNTR LDAA#1 RTS CP003LDAB#5 CP008DEX DECB BNECP008 RTS SPC2 **************************************************** *TIMERCAUSESATIMEDELAYOFAPPROX.6.8SECS…* **************************************************** TIMERLDAA#13 OTIMELDX#0 ITIMEDEX BNEITIME DECA BNEOTIME RTS * END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅŠ€ NAM QLOAD * * VERSION 1.0 5 APRIL 1976 * * QUICK LOAD FOR EXORCISER * DOES NOT TURN READER OFF AFTER EACH RECORD * * WILL LOAD ANY EXORCISER FORMAT TAPE ON ANY * TERMINAL WITH AUTOMATIC READER CONTROL WITH THE * FOLLOWING RESTRICTIONS: * IT SKIPS S0 RECORDS * IT STOPS ON S9 RECORDS * SOME GARBAGE CHARACTERS MAY BE PRINTED UPON *  RETURN TO EXBUG OR FOLLOWING THE BKPT * ERROR MESSAGE. THESE CHARACTERS WERE * BEING RECEIVED FROM THE TAPE WHEN IT WAS * TURNED OFF * AT 1200 BAUD IT WILL LOSE THE CASSETTE BLOCK * FOLLOWING AN S9 RECORD IF IT IS RESTARTED * WITHOUT REPOSITIONING THE TAPE * CAN LOAD A CONTINUOUS FORMAT CASSETTE BUT *  WILL LOSE THE REMAINING DATA FOLLOWING * THE S9 IN THE BLOCK * SHOULD NOT LOAD OVER LOADER * * PRINTS BKPT ERROR MESSAGE IF MEMORY DID NOT * CHANGE OR A CHECKSUM ERROR OCCURRED * IF NO CHANGE ERROR: * A=DATA TO BE STORED * B=00 * X=ADDRESS WHERE DATA WAS TO BE STORED * IF CHECKSUM ERROR: * A=CHECKSUM CHAR FROM TAPE * B=CHECKSUM RESULT(+1) FROM RECORD * X=LAST LOCATION LOADED * * START QLOAD BY TYPING 24;G IN MAID * * WITH TI 733 ASR AT 1200 BAUD IT LOADS: * CO-RESIDENT EDITOR IN 1 MINUTE * CO-RESIDENT ASSEMBLER IN 2:20 MINUTES * OPT O * XSTACK EQU $FF8A EXBUG STACK AREA OCHAR EQU $F9CF OUTPUT CHAR-NO NUL PAD OUTCH EQU $F018 OUTPUT CHAR-PAD NULS AECHO EQU $FF53 INPUT ECHO FLAG INCHNP EQU $F015 INPUT CHAR-NO PARITY EXBUG EQU $F564 EXBUG ENTRY CBCDHX EQU $F006 CONVERT ASCII TO HEX  PAGE ORG $20 TEMP RMB 2 BUILD ADDRESS HERE CKSM RMB 1 CHECKSUM STORAGE COUNT RMB 1 BYTE COUNT STORAGE SPC 2 * START QLOAD HERE QLOAD LDS #XSTACK INITIALIZE STACK LDAA #$11 TURN READER ON JSR OCHAR LOAD3 INC AECHO GET CHAR JSR INCHNP CMPA #'S BNE LOAD3 NOT S INC AECHO HAVE S-GET NEXT CHAR JSR INCHNP CMPA #'9 BEQ LOAD9 STOP IF EOF RECORD CMPA #'1 BNE LOAD3 HEADER OR INVALID SECOND CHAR BSR RDBYTE HAVE DATA RCRD-GET BYTE COUNT STAA CKSM INITIALIZE CHECKSUM DECA ADJUST BYTE COUNT STAA COUNT SAVE IT BSR RDBYTE GET ADDRESS STAA TEMP BSR RDBYTE STAA TEMP+1 LDX TEMP DEX ADJUST ADDRESS FOR LOAD LOOP LOAD5 INX INC ADDRESS LDAA COUNT CHECK BYTE COUNT BEQ LOAD7 DONE BSR RDBYTE  NOT DONE-GET DATA BYTE STAA X STORE IT CMPA X DID IT STORE? BEQ LOAD5 YES CLRB NO-PUT FLAG IN B ACC BRA LOAD8 GO STOP TAPE AND PRINT ERROR LOAD7 BSR RDBYTE GET CHECKSUM INC CKSM INC CHECKSUM BEQ LOAD3 CHECKSUM GOOD LOAD8 PSHA SAVE A ACC LDAA #$13 CHECKSUM BAD-STOP TAPE JSR OUTCH PULA RESTORE A ACC SWI GENERATE BKPT ERROR MESSAGE LOAD9 LDAA #$13 DONE-STOP TAPE JSR OCHAR JMP EXBUG GO TO EXBUG PAGE * RDBYTE BSR RDHEX GET 4 MSB OF BYTE ASLA SHIFT TO 4 MSB  ASLA ASLA ASLA TAB SAVE THEM BSR RDHEX GET 4 LSB OF BYTE ABA COMBINE MSB AND LSB TAB PUT IN B ACC ALSO ADDB CKSM UPDATE CHECKSUM STAB CKSM DEC COUNT DEC BYTE COUNT RTS * RDHEX INC AECHO GET CHAR JSR INCHNP JMP CBCDHX CONVERT TO HEX * END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ<‘€;NAMM2RIO OPTO,S *‚NAM:M2RIO‚VER:1.3‚DAT:05-07-76‚CMP:M6800 * *ƒSYS:M68RES * *ƒDES:THISISTHEM6800RESIDENTI/OPACKAGE *‡FORUSEWITHTHERESIDENTEDITOR1.3AND *‡RESIDENTASSEMBLER1.3UTILIZING *‡MINIBUGIIANDEVALMODULEII * *ƒREV:0 * *ƒNOTE:FORUSEWITHASM1.2ANDEDT1.2 *‰ASTARTEQU$8F4ASM1.2START *‰ESTARTEQU$1641EDT1.2START * *- SPC2 SPC4 *‚*************************************** *‚*************************************** * *‚THISISTHEI/ODRIVERREGION *‚THEFOLLOWINGDRIVERROUTINESAREREQUIRED: * *‚CI‚CONSOLEDEVICEINPUTROUTINE.RETURNSWITH *†INPUTCHARACTERINA-REGISTER.DOESNOT *†ECHOCHARACTER * *‚CIECONSOLEDEVICEINPUTROUTINE.SAMEASCI *†BUTECHOSCHARACTER. * *‚CO‚CONSOLEOUTPUTROUTINE.OUTPUTSCHARACTER *†INA-REGISTER. * *‚POCPUNCHDEVICEOUTPUTCHARACTERROUTINE. *†OUTPUTSCHARACTERINA-REGISTER.TURNS *†PUNCHON. * *‚PORPUNCHDEVICEOUTPUTRECORDROUTINE. *†OUTPUTSCHARACTERSTRINGPOINTEDTOBY *†XREGISTERANDTERMINATEDBY$04.TURNS *†PUNCHONANDOFF. * *‚RICREADERDEVICEINPUTCHARACTERROUTINE. *†READSRECORDINTOBUFFERIFBUFFEREMPTY. *†RETURNSWITHNEXTCHARACTERFROMBUFFERIN *†A-REGISTERIFNOTIMEOUTOCCURRED,AND *†ALSORESETSCARRY.IFTIMEOUTOCCURRED, *†CARRYISSETANDA-REGISTERCONTAINS$1A. *†TURNSPUNCHOFFBEFOREREADING.CARRIAGE *†RETURNENDSRECORD. * *‚RIRREADERDEVICEINPUTRECORDROUTINE.READS *†RECORDINTOBUFFER.TURNSPUNCHOFF *†BEFOREREADING.CARRIAGERETURNENDS *†RECORD. * *‚********************************************** *‚********************************************** SPC4 *MINIBUGEQUATES INCHNPEQU$E11FMINIBUGCHARACTERINPUT OUTCH‚EQU$E108OUTPUTCHAR PDATAMEQU$E130MINIBUGPDATA1 AECHOEQU$A00CINCHNPNOECHOFLAG MTTYDIEQU$8009†TTYDATAIN MTTYDOEQU$8009†TTYDATAOUT MTTYSIEQU$8008†TTYSTATUSIN MTTYSOEQU$8008†TTYSTATUSOUT SBITEQU$A019STOPBITCONTROLFORACIA MINBUGEQU$E040MINIBUGENTRYPOINT SPC5 *‚ASSEMBLERANDEDTORENTRYLOCATIONS SPC1 ASTARTEQU$304ASSEMBLER1.3ENTRYPOINT ESTARTEQU$1610EDITOR1.3ENTRYPOINT SPC5 ORG$F0 *‚I/OFLAGANDSTORAGEAREA RCEMTRMB1READBUFFEREMPTYFLAG R CGCPTRMB2READGETCHARPOINTER NTIMEORMB1RIRNOTIMEOUTFLAG PNCHRMB1PUNCHONFLAG IOSVX1RMB2SAVEXREG IOSVX2RMB2SAVEX SPC4 ORG$100 *‚I/OJUMPTABLE ASMJMPASTARTENTERASSEMBLER EDJMPESTARTENTEREDITOR XIOINTJMPINXIOINITIALIZEIO XPOCJMPPOCPUNCHOUTPUT-CHAR XPORJMPPORPUNCHOUTPUT-RECORD XRICJMPRICREADERINPUT-CHAR XRIRJMPRIRREADERINPUT-RECORD XCOJMPCOCONSOLEOUTPUT XCIJMPCICONSOLEINPUT-NOECHO XCIEJMPCIECONSOLEINPUT-ECHO XDATAJMPPDATAPRINTCRLFDATASTRING XDATA1JMPPDATA1PRINTDATASTRING XCRLFJMPPCRLFPRINTCRLF XLEADJMPLEADPUNCHLEADER-TRAILER XNCHONJMPPNCHONTURNPUNCHON XNCHOFJMPPNCHOFTURNPUNCHOFF XBUGJMPMINBUGENTERMINIBUG XHEADJMPXDATAPRINTASSEMBLYHEADING XLINEJMPXDATA1PRINTASSEMBLYLINE JUMP1JMP*RESERVEDJUMPLOCATION JUMP2JMP*RESERVEDJUMPLOCATION SPC4 *‚SUBROUTINETOINITIALIZEIOFLAGS INXIOEQU* CLRRCEMTREADBUFFEREMPTY CLRPNCHPUNCHISOFF ‚CLRNTIMEOTIMEOUT RTS SPC5 *‚SUBROUTINETOINPUTCHARACTERFROMCONSOLE CIEQU*CONSOLEINPUT SEC ROLAECHO BRACI1 CIECLRAECHO CI1JSRINCHNPMINIBUGCHARACTERINPUT ***STRIPCHARACTERSFROMINPUT*** LDX#NCHAR CI2CMPAXBADCHAR? BEQCI1YES-IGNORECHAR INXNO-KEEPCHECKING CPX#ENCHARDONE? BNECI2NO *********************************** RTS SPC5 *‚SUBROUTINETOOUTPUTCHARACTERTOCONSOLE COEQU* CMPA#$09TAB? BNECO1NOTTAB LDAA#$20CHANGETABTOSPACE CO1CMPA#$DC/R? BNECO2NO BRAXCRLFYES-OUTPUTCRLF CO2JSROUTCHOUTPUTCHAR CO4RTS SPC4 *‚SUBROUTINETOPUNCH5INCHESOFBLANKTAPE LEADEQU* ‚LDAB#505IN=50CHARS LEAD1CLRA ‚BSRXPOCPUNCHNULL ‚DECB ‚BNELEAD1NOTDONE ‚BRAXNCHOFTURNPUNCHOFF SPC5 *‚SUBROUTINETOPUNCHCHARACTER POCEQU* BSRXNCHONTURNPUNCHON BRAXCO SPC5 *‚SUBROUTNETOPUNCHDATASTRING POREQU* BSRXNCHONTURNPUNCHON JSRPDATA1PUNCHDATASTRING BRAXNCHOFTURNPUNCHOFF SPC5 *‚SUBROUTINETOREADRECORD-CHARACTERORIENTED RICEQU* TSTRCEMTBUFFEREMPTY? BNERIR19NO-GETNEXTCHAR CLRNTIMEOYES-RESETNTIMEOFLAG BRARIR3READRECORD SPC2 *‚SUBROUTINETOREADRECORD-RECORDORIENTED RIRINCNTIMEOSETNTIMEOFLAG RIR3LDX#RCBUFFILLBUFFERWITHCR'S LDAA#$D RIR71STAAX INX CPX#RCBUF+72DONE? BNERIR71NO-KEEPFILLING ‚TSTPNCHYES-PUNCHON? BEQRDRNO-GOTESTSPEED JSRXNCHOFYES-TURNPUNCHOFF SPC1 SPC1 SPC1 RDRƒLDAASBITREADERRELAYON ORAA#$40 STAAMTTYSO SPC1 LDAA#$11DC1READERON JSROUTCH SPC1 RDR09EQU* LDX#RCBUFREADRECORDINTOBUFFER RDR11SEC JSRINCTINPUTCHAR SPC1 STAAXSTORECHAR BCSRDR31TIMEOUT-STOPREADING CMPA#$DC/R? BEQRDR31YES-STOPREADING ‚SPC1 CPX#RCBUF+71BUFFERFULL? BEQRDR11YES-SKIPRESTOFRECORD INX BRARDR11GETNEXTCHAR RDR31EQU* CLRNTIMEORESETNTIMEOFLAG LDAASBITREADERRELAYOFF ‚STAAMTTYSO ‚LDAA#$13READEROFF ‚JSROUTCH LDX#FOUR0OUTPUT4NULLS JSRPDATAM SPC1 INCRCEMTSETBUFFERNOTEMPTY LDX#RCBUFINZGETCHARPOINTER STXRCGCPT SPC1 RIR19LDXRCGCPTGETNEXTCHAR †LDAAX(A)CHAR ‚INXINCGETCHARPOINTER STXRCGCPTSAVEGETCHARPOINTER CMPA#$1AENDOFTEXT? BEQRIR33YES CMPA#$DCR? BNERIR31NOTC/R RIR33CLRRCEMTSETBUFFEREMPTY RIR31RTS SPC5 *‚SUBROUTINETOTURNPUNCHON PNCH ONEQU* TSTPNCHPUNCHALREADYON? BNEP20YES-RETURN PSHANO-SAVEAREG INCPNCHSETPUNCHONFLAG LDAASBIT CMPA#$1530CPS? BNEP10 LDAA#$10 BSROCHARATTENTIONRDC LDAA#'0TURNPRINTEROFF JSROCHAR P10EQU* ***SENDRUBOUTBEFOREPUNCHON**************** LDAA#$7F BSROCHAR ********************************************* LDAA#$12TURNTTYPUNCHON BSROCHAROUTPUTCHAR PULARESTOREAREG P20RTS SPC4 *‚SUBROUTINETOTURNPUNCHOFF PNCHOFEQU* LDAA#$14TURNTTYPUNCHOFF BSROCHAROUTPUTCHAR LDAASBIT CMPA#$1530CPS? BNEPUN325NO LDAA#$10 BSROCHARATT.RDC LDAA#'9TIPRINTERON BSROCHAR PUN325EQU* CLRPNCHRESETPUNCHONFLAG RTS SPC5 * *SUBROUTINETOPRINTORPUNCHDATASTRING *POINTEDTOBYXREG * PDATABSRPCRLFPRINTCR/LF PDATA1LDAAX CMPA#4 BEQPDATA9STOPONEOT BSROCHAR INX BRAPDATA1 PDATA9RTS SPC2 PCRLFSTXIOSVX2 LDX#CRLFƒCRLF†STRING BSRPDATA1 LDXIOSVX2 RTS SPC5 * *SUBROUTINETOOUTPUTCHARINAREG *IFCR,FOLLOWWITH4NULLS * OCHARSTXIOSVX1 JSROUTCHOUTPUTCHAR CMPA#$DISITCR? BNEOCHAR9NO LDX#FOUR0 JSRPDATAMMINIBUGPDATA OCHAR9LDXIOSVX1 RTS SPC4 *‚SUBROUTINETOREADCHARACTER-NOPARITY INCTEQU* ‚STXIOSVX1SAVEXREG INCT2TSTNTIMEOWANTTIMEOUTTEST? BEQINCT3YES JSRXCINO-USECIROUTINE BRAINCT6GOCHECKCHAR INCT3LDX#$FF00SETTIMEOUTCOUNTER INCT5DEX ‚BEQINCT9TIMEOUT LDAAMTTYSI ASRA BCCINCT5NOTREADY LDAAMTTYDIINPUTDATA ANDA#$7FREMOVEPARITY INCT6LDX#NCHARIGNORECHARS CCHKCMPAX BEQINCT2BADCHAR INX CPX#ENCHARDONE? BNECCHKNO CMPA#$09TAB? BNEINCT7NO LDAA#$20YES-CHANGETOSPACE INCT7LDXIOSVX1RESTOREXREG CLCCLEARCARRY-NOTIMEOUT RTS SPC1 INCT9LDAA#$1ATIMEOUT LDXIOSVX1RESTOREXREG SECSETTIMEOUTBIT RTS SPC5 *‚CHARACTERSSTRIPPEDFROMINPUT: *‚NULL,RUBOUT,LINEFEED,DC1,DC2,DC3,DC4 NCHARFCB0,$7F,$0A,$11,$12,$13,$14 ENCHAREQU* CRLFƒFCB$D,$A,4 FOUR0FCB0,0,0,0,4 SPC5 *‚PUTREADERBUFFERJUSTBEFORE$300 RCBUFEQU$300-73 SPC5 END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ ¡€SRTTST: PROCEDURE OPTIONS (MAIN) $ OPT P,MEM ! ! THIS IS THE TEST PROGRAM FOR THE MPL VERSION ! OF A MODIFIED SHELL SORT. AT THE REVISION LEVEL ! OF THE CURRENT COMPILER THE PROGRAM REQUIRES HEX ! 28C BYTES OF MEMORY FOR THE SORT SUB. ! ! WRITTEN BY JOEL BONEY FOR MOTOROLA INC. JAN 76. ! ! ! THE TEST PROGRAM TAKES 75 MSEC TO SORT THE BUFFER ! THIS IS QUITE AWHILE. TIME COULD BE SAVED BY ! USING THE PTR MODE. ! ! ! DUE TO THE FACT THAT REVISIONS MAY OCCUR TO THE ! MPL COMPILER IT WILL BE NECESSARY FOR THE ! USER TO GET THE ASSEMBLY LISTING TO BE ABLE   ! TO SIMULATE THIS TEST. ! !------------------------------- ! THIS PROCEDURE TESTS THE CORE SORT (CSORT) ! SUBROUTINE. DECLARE SIZE BINARY (1) INITIAL (14) !BUFFER SIZE DECLARE ESIZE BINARY (1) INITIAL(2) !ENTRY SIZE DECLARE SFLAG !SORTED FLAG DECLARE SBUF(14) BINARY (2) INITIAL (17,21,13,8,500, 23,16,12,0,-5,73,62,1,28) !TEST BUFFER ! EXECUTABLE COST START: CALL CSORT (SIZE,ESIZE,SFLAG) IF SFLAG EQ 0 THEN GO TO BAD CALL CSORT (SIZE,ESIZE,SFLAG) !ALREADY SORTED  IF SFLAG NE 0 THEN GO TO BAD2 OKAY: GO TO OKAY ! HERE WHEN UNSORTED DATA WAS NOT SORTED BAD: GO TO BAD ! HERE WHEN SORTED DATA WAS SORTED BAD2: GO TO BAD2 END SRTTST  $PAGE CSORT: PROCEDURE (BUFSIZ,ENSIZ,IFLAG) ! ! BINARY (2) CORE SORT ! ! THIS SUBROUTINE SORTS A CORE BUFFER STORED IN ARRAY ! NAMED SBUF OF LENGTH BUFSIZ AND ENTRY SIZE ENSIZ. ! BUFSIZ MUST BE LESS THAN 256 ! SBUF CAN BE BINARY (1) OR (2). ! ENTRIES ARE CONSIDERED TO BE MULTIPLE PRECISION ! NUMBERS OR ASCII STRINGS AND ARE SORTED FROM ! MSB TO LSB ! ! ! BUFSIZ=CORE BUFFER SIZE (BINARY (1)) ! ENSIZ= SIZE OF EACH INDIVIDUAL ENTRY (BINARY (1)) ! IFLAG= SET TO NON ZERO IF SOMETHING WAS SORTED ! SET TO 0 IF NO SORT RESULTED ! ! JOEL BONEY FOR MOTOROLA INC. JAN 76 ! DECLARE M,NO,IFLAG,K,J,I,II,IIM,NUM,LOCFLG DECLARE CTR,PTR1,PTR2,BUFSIZ,ENSIZ,LENSIZ  DECLARE ITEMP BINARY (2) !EXECUTABLE CODE CSRTA: M=BUFSIZ/ENSIZ !ENTRIES/ BUFFER NO=M  !UNCHANGING COPY OF M LOCFLG=0 !USE A LOCAL FLAG FOR SPEED LENSIZ=ENSIZ !START OF BIG SORT LOOP BIGLOP: M=M%-1; !DIVIDE M BY 2 IF M EQ 0 THEN GO TO OUT  K=NO-M !NBR OF VALUES NOT IN M AREA CAT: DO J=1 TO K !COMPARE M VALUES TO ALL K'S  !AND ORDER I=J !INIT INDEX CKREST: II=(I-1)*LENSIZ+1 !CALCULATE ARRAY SUBSCRIPT IIM=(I+M-1)*LENSIZ+1 !OTHER IS M AWAY CSRTB: DO NUM=1 TO LENSIZ  !COMPARE ALL CHARS PTR1=II+NUM-1 PTR2=IIM+NUM-1 IF SBUF (PTR1)SBUF(PTR2) THEN GO TO SWAP END CSRTB SWAP: LOCFLG=LOCFLG+1  !SET SORTED FLAG CSRTC: DO CTR=1 TO LENSIZ !SWAP THE ENTRIES ITEMP=SBUF(II) !SAVE FIRST  SBUF(II)=SBUF(IIM) !MOVE 2ND TO 1ST SBUF(IIM)=ITEMP !MOVE FIRST TO 2ND  II=II+1 IIM=IIM+1 END CSRTC I=I-M !DO WE NEED TO GO BACK UP  IF I GE 1 THEN GO TO CKREST !CHECK WITH ONES ABOVE SKIP: END CAT !NO, DO NEXT ENTRY  GO TO BIGLOP !DO NEXT ITERATIOON OUT: IFLAG=LOCFLG !COPY LOCAL FLAG TO GLOBAL RET URN END CSORT BEÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅŪ€NAMCLOCK OPTNOG HOURSRMB1 MINSRMB1 SECSRMB1 STRMSGFCC'SETTIMEHH:MM:SS' ERRMFCC'INPUTERR' SEAFDBSECS‚ADDRESSOFSECONDS MEAFDBMINS‚ADDRESSOFMINUTES HEAFDBHOURS‚ADDRESSOFHOURS ERRFDBERRM‚ADDRESSOFERRORMESSAGE ORG$100 STARTJSRCLRCRT‚ERASETHECRTDISPLAY FIXITLDX#STRMSG‚POINTTOSTARTUPMESSAGE LDAB#$00‚SETCHARACTERCOUNTER LOOPLDAAX‚GETCHARACTER JSROUTEEE‚WRITEITTOTERMINAL INX‰POINTTOCHARACTER INCB‰COUNTCHARACTERS CMPB#$11‚COUNTER=ZERO? BLTLOOP‚BRANCHIFNOT JSRGETCHR‚GOGETHOURS STAAHOURS‚SETHOURS JSRINEEE‚GOGETCOLON CMPA#$3A‚ISITACOLON? BNEERRMSG‚ERRORIFNOT JSRGETCHR‚GOGETMINUTES STAAMINS‚SETMINUTES JSRINEEE‚GOGETCOLON CMPA#$3A‚ISITACOLON? BNEERRMSG‚ERRORIFNOT JSRGETCHR‚GOGETSECONDS STAASECS‚SETSECONDS JSRCLRCRT‚CLEARTHESCREEN LDAA‚HOURS‚GETHOURS CMPA#$24‚HOURSGREATERTHAN24? BHIERRMSG‚IFTRUE-ERROR TIMITJSRDELAY‚GODELAYFORONESECOND LDXSEA‚POINTTOSECONDS LDAB#$59‚SETMODULUS-1 JSRCOUNT‚COUNTSECONDS BVCSHOW‚GODISPLAYTIME LDXMEA‚ LDAB#$59‚GETMOD-1 JSRCOUNT‚COUNTMINUTES BVCSHOW LDXHEA‚POINTTOHOURS LDAB#$24 JSRCOUNT‚COUNTHOURS SHOWLDXHEA‚DISPLAYHOURS JSRDISPLY LDAA#$3A‚DISPLAYCOLON JSROUTEEE‚WRITETOCONTROLTERMINAL LDXMEA‚POINTTOMINUTES JSRDISPLY‚DISPLAYMINUTES LDAA#$3ADISPLAYCOLON JSROUTEEE LDXSEA‚POINTTOSECONDS JSRDISPLY‚DISPLAYSECONDS BRATIMIT‚GOBACKANDTIMEANOTHERSECOND ORG$176‚170-175ISPATCHSPACE CLRCRTLDAA#$10‚HOMEUPTOCLEARCRTSCREEN JSROUTEEE LDAA#$16‚ERASETOEOF JSROUTEEE RTS *GETINPUT GETCHRJSRINEEE‚READFIRSTCHARACTER ASLAŽLEFTJUSTIFYFIRSTCHARACTER ASLA ASLA ASLA TAB JSRINEEE EORA#$30‚REMOVEASCIIPREFIXOF2NDCHAR. ABA CMPA#$59‚CHECKFORSIZEERROR BHIERRMSG‚ONERROR-BRANCH RTS *OUTPUTANERRORMESSAGE ERRMSGLDXERR‚POINTTOMESSAGE LDAB#$0C‚SETLOOPCOUNTER ERLOOPLDAAX‚GETCHARACTER JSROUTEEE‚WRITEIT INX‰POINTTONEXTCHARACTER DECBˆCOUNTLOOPS CMPB#$0‚FINISHED? BGTERLOOP‚NO-DOTHELOOPAGAIN JMPFIXIT *DELAYLOOP-ADJUSTBYCHANGINGLOOPCOUNTVALUE DELAYLDX#$BB00‚LOOPCOUNTER DLOOPTSTX DEX CPX#$0000 BNEDLOOP RTS *VARIABLEMODULUSCOUNTER COUNTLDAAX‚GETVALUE ADDA#1‚INCREMENTIT DAA„MAKEITBCDFORM STAAX CBA„COMPAREWITHMOD-1 CLVRESETOVERFLOW BLENSAME‚,LE.MOD-1? CLRXNO-.GT.SETTOZERO SEV…SETOVERFLOW NSAMERTS NOP *FORMATTHEDISPLAY DISPLYCPXHEA‚DISPLAYINGHOURS? BNENOTHRS‚NO JSROUTEEE NOTHRSLDAAX‚ELSECONVERTTOASCII LSRA‡RIGHTJUSTIFYHIORDERDIGIT LSRA LSRA LSRA ORAA#$30‚TACKONPREFIX JSROUTEEE‚WRITETOTERMINAL LDAAX‚GET LOORDERDIGIT ANDA#$0F ORAA#$30‚PREFIXIT JSROUTEEE‚WITETOTERMINAL RTS OUTEEEEQU$E1D1 INEEEEQU$E1AC END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅŰ€NAMTTYI0 * *THISISAI/OROUTINEDESIGNEDTOLOAD&DUMP *THECONTENTSOFAUSERDEFINEDBUFFERTOTHE *TELETYPE. * *ITUSES2BUFFERSDEFINEDINTHECALLINGPROGRAM * *ACCUMA-CONTAINSAFLAG1=INPUT *0=OUTPUT * *BBUF-CONTAINSHEXREPRESENTATIONOFOBJECTBUFFER * *CBUF-ISTHEOBJECTBUFFERTOBEDUMPED * *THETWOBUFFERSAREINCONTIGUOUSSTORAGE * *THECALLTOTTYIOSHOULDBRANCHTO$9010 * * *WRITTENBYW.D.PIERCE6F.E.CARDEN *STARTED9-16-75 * * ORG$9010 OPT‚O=TTYOBJ OPTSYMBOL OPTNEQU$9000 SIZEQU$9001 ACIACEQU$8008ACIACONTROLLOCATION ACIADEQU$8009ACIADATALOCATION COUNTEQU$9002 TEMPEQU$9003 INDXAEQU$9004 * NOP NOP NOP STAAOPTNSTOREOPTIONCODE LDAA0,X STAASIZSTOREBUFFERSIZE CMPA#$00 BEQJMPX JMPCONTA JMPX‚JMPENDC CONTA‚CLRCOUNTCLEARCOUNTER LDAAOPTNCHECKFORINPUTOROUTPUTO CMPA#$00 BEQOUTPT ERRORNOP LDAB#$3F(?)=(00111111) JSRDOUT JMPINPUT DOUTLDAAACIACMAINOUTPUTROUTINE LSRA LSRA BCCDOUT STABACIAD RTS INPUTNOPINPUTROUTINE STXINDXA INX LOOPLDAAACIAC TAB ANDB#$70(01110000)=ERRORFLAGS BNEERRORERRORCHECK RORA BCCLOOPCHECKIFACHAR.ISIN LDAAACIAD ANDA#$7F STAATEMP TAB JSRDOUTECHOBACK LDAATEMP CMPA#$5F)BACKARROW)=CHAR.DELETE BEQBKSPC CMPA#$18(CNTL+X)=LINEDELETE BEQREST CMPA#$0D(CR)=ENDOFINPUT BEQ‚ENDB STAA0,X INX INCCOUNT LDAACOUNT CMPASIZCHECKIFBUFFERISFULL BEQENDC JMPLOOP BKSPCDEXDELETELASTCHAR. DECCOUNT JMPLOOP * RESTDEXLINEDELETE DECCOUNT LDAACOUNT CMPA#$00 BNERESTCHECKIFRESETISCOMPLETE LDAB#$0DC/R JSRDOUT LDAB#$0AL/F JSRDOUT JMPLOOP * OUTPTINXOUTPUTROUTINE LOOP1LDAB0,X JSRDOUT INX INCCOUNT LDAACOUNT CMPASIZCHECKIFBUFFERHASBEENDU BEQENDC JMPLOOP1 * * ENDBLDXINDXARESETBUFFERSIZE LDAACOUNT STAA0,X LDAB#$A JSRDOUT RTS * ENDCLDAB#$0D JSRDOUT LDAB#$0A JSRDOUT RTS PAGE * *INPUTROUTINE * *USAGE:INTHECALLINGPROGRAMTHEFOLLOWING *ˆISINSERTED; * *INPUTEQU$910C‚(ATTHESTARTOFCALLINGPROGRAM) * * *LDX#NAM(TOUSEINPUT) *JSRINPUT * * *NAMRMB1(THEINPUTBUFFER) *RMB72 * *WRITTENBYW.D.PIERCE&F.E.CARDEN *STARTED9-18-75 * ORG$910A TTYIOEQU$9010 TEMP2RMB2 LDAA#72 STAA0,X LDAA#$01 JSRTTYIO RTS PAGE * *OUTPUTROUTINE * *USAGE:INTHECALLINGPROGRAMTHEFOLLOWING *ˆISINSERTED; * *OUTPUTEQU$90F0‚(ATTHESTARTOFTHECALLINGPROG) * * *LDX#NAM‚(TOUSEOUTPUT) *JSROUTPUT * * *NAMFCBNN(WHERENNISTHESIZEOFTHEOUTPUTBUFFER) *…FCC/‚OUTPUTBUFFER‚/ * *WRITTENBYW.D.PIERCE&F.E.CARDEN *STARTED9-18-75 * ORG$90F0 LDAA#$00 JSRTTYIO RTS END PAGE ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ (¶€(NAMGRAPH *THISPROGRAMGENERATESAGRAPHOFSEVEN *PARAMETERSPLOTTEDAGAINSTANINDEXNUMBER. *SPACEMUSTBEALLOTTEDINRAMFORTHIS *TEMPORARYSTORAGEANDTHESTARTINGLOCATION *MUSTBEENTEREDPRIORTOTHEDATATAKING *RUNINLOCATIONGRPHIRH&L.ƒTHELOCATIONS *OFTHESEVENPARAMETERSANDTHEINDEX *PARAMETERMUSTBELOCATEDBYANEQUATE *DIRECTIVE.‚EACH8BITPARAMETERISPLOTTED *AT1/4RESOLUTIONBYANAPLHABETICCHARACTER *ANDWHERETWOCHARACTERLOCATIONSCOINCIDE *THELETTERCLOSESTTOAWILLBEPRINTED. *THEDATALOADROUTING,GRPHIN,ISCALLED *INTHEMAINPROGRAMATTHEDESIREDPOINTOF *DATACOLLECTION.APROGRAMREENTRYROUTINE *WITHTHREECHOICESISCALLEDUPATTHEEND *OFTHEGRAPH.‚THEINDEXNUMBERISCONVERTED *TODECIMALANDPRINTEDATTHEBEGINNINGOF *EACHLINE. SPC2 OPTO,NOG ORG$1000 SPC1 *LABELLIST SPC1 GRPHIREQU$0D INDEXEQU$0C NUM3EQU$0B NUM2EQU$0A NUM1EQU$09 PARAM1EQU20 PARAM2EQU21 PARAM3EQU22 PARAM4EQU23 PARAM5EQU24 PARAM6EQU25 PARAM7EQU26 DATAEQU$100 DATAFEQU$0F VALCNTEQU$10 SPC2 *THISPROGRAMTAKESTHREEEIGHTBIT *BINARYNUMBERSANDCONVERTSTHEM *INTOTHREETHREEDIGITBCDNUMBERS. *BINARYNUMBERSINNUM1,NUM2,NUM3. *BCDNUMBERSAT00,03,06. SPC1 HEXDECLDAANUM1…BINNUM1TOACCA LDX#0RESETDIGITPNTR BSRHNDRDS ‚LDAANUM2ŒBINNUM2TOACCA BSRHNDRDS LDAANUM3BINNUM3TOACCA BSRHNDRDS RTS HNDRDSCLRBŒCLEARCNTR SBL7STAB0,XŠSTORECNTRVALUEHUNDREDS SUBA#100 BCSTENS INCB BRASBL7 TENSADDA#100 INX CLRB SBL8STAB0,XŠSTORECNTRVALUETENS SUBA#10 BCSUNITS INCB BRASBL8 UNITSADDA#10 INX CLRB SBLGSTAB0,XŠSTORECNTRVALUEUNITS SUBA#1 BCSSBL10 INCB BRASBLG SBL10INX RTSŽRETURN SPC2 *DIAGNOSTICOUTPUTROUTINE *GRAPHICALDATALOAD SPC2 GRPHINLDAAINDEX…INDEXNUM(HEX) LDXGRPHIRDATALOCATIONTOIR STAA0,X† INX LDAAPARAM1 STAA0,X INX LDAAPARAM2 STAA0,X INX LDAAPARAM3 STAA0,X INX LDAAPARAM4 STAA0,X INX LDAAPARAM5 STAA0,X INX LDAAPARAM6 STAA0,X INX LDAAPARAM7 STAA0,X INX STXGRPHIR RTS SPC2 *THISROUTINEGENERATESAGRAPHICALOUTPUT *ONATERMINALKEYBOARD‚ *ITINCLUDESROUTINES *FORINTERFACINGWITHTHE‚EXBUGPROGRAM *KBDROUTINEANDTABLESOFTEXTCHARACTERS. SPC1 CREQU$0D LFEQU$0A SPC1 GRAPHLDAA#CR”C.R. JSRPRNTCH LDAA#LF”L.F. JSRPRNTCH JSRPRNTCH LDX#HDRTBLŽHEADERTABLESTARTTOPNTR JSRPRNTCH“PRINTHEADER LDX#DATA‚DATATABLESTART NEWLINLDAA0,X BEQLPUG17…LASTDATATEST STXGRPHIR JSRHEXDEC+2 LDXGRPHIR LDAA$00 JSRPRNTNU“MSDPDC LDAA$01 JSRPRNTNU“ISDPDC LDAA$02 JSRPRNTNU“LSDPDC INX LDAA#$20”LOADSPACE BSRPRINT”TYPE2SPACES BSRPRINT CLRVALCNT…LOADVALUECNTR LPUG1LDXGRPHIR INX CLRDATAF LDAA#'A…LOADCHAR. BSRSEARCH…FIND1STPARAM LDAA#'B‡....=VALUECNTR BSRSEARCH LDAA#'C BSRSEARCH LDAA#'D BSRSEARCH LDAA#'E BSRSEARCH LDAA#'F BSRSEARCH LDAA#'G BSRSEARCH TSTDATAF BNELPUG5 BSRDOTS LPUG5INCVALCNT“INCRVALUECOUNTER LDAAVALCNT…VALCNTOVERFLOW? CMPA#$42 BNELPUG1 BSRLINE CPX#$0300‡LAST DATALOC.? BEQLPUG17 CPX#$0500 BNENEWLIN LPUG17LDX#MSG1•MSG1 BSRPRNTCH TYPINJSR$FA8BEXBUGKBDINPUT CMPA#$47”GRAPH? BNELPUG18 BSRLINE JMPENTRY1ƒUSERPROGRAM‚ LPUG18CMPA#$52”NEWRUN? BNELPUG3 BSRLINE JMPNEWRUNƒUSERPROGRAM LPUG3CMPA#'WWAIT? BNELPUG4 BSRLINE JMPWAITƒUSERPROGRAM LPUG4CMPA#'X…EXBUG? BNELPUG4A BSRLINE SWI LPUG4ABRATYPIN LINELDAA#CR BSRPRINT LDAA#LF BSRPRINT RTS PRINTJSR$F9DC RTS SPC1 SEARCHLDAB0,X…NEWPARAMVALUE LSRB…DIVIDEBY4 LSRB TSTDATAF…CHAR.WRITTEN? BNELPUG6 CMPBVALCNT…VALUE=VALCNT? BNELPUG6 COMDATAF…SETDATAF BSRPRINT…PRINTCHAR LPUG6INX RTS SPC1 *NUMBERALREADYLOCATEDINACCA PRNTNULDAB#$30ŽCONVERSIONTOASCII ABA BSRPRINT RTS PRNTCHLDAA00,XŽFETCHCHARACTER CMPA#'~•ENDOFTABLE?"~" BEQENDTAB BSRPRINT”PRINT INXšINCRCHARCNTR BRAPRNTCH ENDTABRTS SPC1 DOTSLDABVALCNT LPUG14CMPB#$00ŽZEROTHDOT? BEQLPUG12 SUBB#$05 BCCLPUG14COUNTNEG LDAA#$20–SPACE BSRPRINT BRALPUG16 LPUG12LDAA#'.PRINTDOT BSRPRINT LPUG16RTS SPC2 *THISSUBROUTINECLEARSTHEMEMORYLOCATIONSWHICH *ARETOBEUSEDFORTHEDIAGNOSTICROUTINEGRAPH SPC2 CLRDATLDX#$0100‚1STDATALOCATION LPUG1NCLR00,X INX CPX#$0500ƒLASTDATALOCATION BEQLPUG20 BRALPUG1N LPUG20RTS SPC2 SPC1 *TABLES SPC1 MSG1FCB,CR,LF, FCC/G=GRAPH/ FCB,CR,LF, FCC/W=WAITFORNEWRUN/ FCB,CR,LF, FCC/R=NEWRUN/ FCB,CR,LF, FCC/X=EXBUG/ FCB,CR,LF, FCC/DONEXT?ƒ/ FCB,'~, RTS SPC1 HDRTBLFCB,CR,LF,LF, FCC/‚A=PARAM1/ FCB,CR,LF, FCC/‚B=PARAM2/ FCB,CR,LF, FCC/‚C=PARAM3/ FCB,CR,LF, FCC/‚D=PARAM4/ FCB,CR,LF, FCC/‚E=PARAM5/ FCB,CR,LF, FCC/‚F=PARAM6/ FCB,CR,LF, FCC/‚G=PARAM7/ FCB,CR,LF,LF,'~, RTS SPC1 SPC5 ********** *USERSUPPLIEDROUTINES: *‚ENTRY1 *‚NEWRUN *‚WAIT * ********** SPC1 ENTRY1EQU* NEWRUNEQU* WAITEQU* BRA* SPC3 END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ|Áá€NAMMICROƒMICROBASIC * * *ˆ******VERSION1.3******* * *‰BYROBERTHUITERWYK,TAMPA,FLORIDA * *THISPROGRAMASSUMESTHATTHE *MOTOROLAMIKBUGROMISINSTALLED *ANDTHATITSASSOCIATED128BYTE *RAMISALSOPRESENT *THESPANDXSTACKWILLHAVETO *BEMOVEDIFTHISISNOTTHECASE SPC5 *SAVEFIRST$20BYTESFOR *FUTUREDISKUSE OPTNOG ORG$20 INDEX1FDB$0000 INDEX2FDB$0000 INDEX3FDB$0000 INDEX4FDB$0000 SAVESPFDB$0000 NEXTBAFDBEND WORKBAFDBEND SOURCEFDBEND *TOBECHANGEDATPROGRAMMERSOPTION PACKLNFDB$0000 HIGHLNFDB$0000 BASPNTFDB$0000 BASLINFDB$0000 PUSHTXFDB$0000 XSTACKFDB$A07F RNDVALFDB$0000 DIMPNTFDB$0000 DIMCALFDB$0000 PRCNTFCB0 MAXLINFCB72 BACKSPFCB$0F CANCELFCB$18 MEMENDFDB$1FFF SPC2 ARRTABFDB$0000 KEYWDFDB$0000 TSIGNFCB0 NCMPRFCB0 TNUMBFCB0 ANUMBFCB0 BNUMBFCB0 AESTKFDBASTACK FORPNTFDBFORSTK VARPNTFDBVARTAB  SBRPNTFDBSBRSTK SBRSTKRMB16 FORSTKRMB48 DIMVARFDBVARTAB SPC2 ORG$00AC BUFNXTFDB$00B0 ENDBUFFDB$00B0 ORG$00B0 BUFFERRMB$50‚I/OBUFFER=80DECIMAL SPC2 ORG$0100 PROGMJMPSTART VARTABRMB78 FCB$1E COMMANFCC/RUN/ FCB$1E FDBRUN FCC/LIST/ FCB$1E FDBCLIST FCC/NEW/ FCB$1E FDBSTART FCC/PAT/ FCB$1E FDBPATCH GOLISTFCC/GOSUB/ FCB$1E FDBGOSUB FCC/GOTO/ FCB$1E FDBGOTO FCC/GOTO/ FCB$1E FDBGOTO FCC/SIZE/ FCB$1E FDBSIZE FCC/THEN/ FCB$1E FDBIF2 FCC/PRINT/ FCB$1E FDBPRINT FCC/LET/ FCB$1E FDBLET FCC/INPUT/ FCB$1E FDBINPUT FCC/IF/ FCB$1E FDBIF FCC/END/ FCB$1E FDBREADY FCC/RETURN/ FCB$1E FDBRETURN FCC/DIM/ FCB$1E FDBDIM FCC/FOR/ FCB$1E FDBFOR FCC/NEXT/ FCB$1E FDBNEXT FCC/REM/ FCB$1E FDBREMARK PAUMSGFCC/PAUSE/ FCB$1E FDBPAUSE FCB$20 COMENDFCB$1E IMPLETFDBLET RMB60 ASTACKEQU*-1 SPC2 RDYMSGFCB$0D FCB$0A FCB$15 FCB$0A FCB$15 FCC/READY/ FCB$1E PROMPTFCB$23 FCB$11 FCB$1E FCB$1E PGCNTLFCB$10 FCB$16 FCB$1E FCB$1E FCB$1E ERRMS1FCC/ERROR#/ FCB$1E ERRMS2FCC/INLINE/ FCB$1E SPC2 *ALLPURPOSEKEYBDROUTINE KEYBDLDAA#$3F‚OUTPUT"?" BSROUTCH *SUBROUTINEENTRYWITHOOUT"?" KEYBD0LDX#BUFFER‚STARTOFKEYBDROUTINE LDAB#10 KEYBD1BSRINCH‚GETACHARACTER CMPA#$00 BNEKEYB11 DECB BNEKEYBD1 KEYB10JMPREADY KEYB11CMPACANCEL BEQDEL CMPA#$0D‚ISITC/R? BEQIEXITIFSOEXIT KEYBD2CMPA#$0A‚ISITLF BEQKEYBD1‚IFSOIGNORE CMPA#$15 BEQKEYBD1 CMPA#$13 BEQKEYBD1 KEYB55CMPABACKSP BNEKEYBD3‚IFNOT,CONTINUE CPX#BUFFER‚ISITFIRSTCHARACTER? BEQKEYBD1‚IFSO,JUSTRELOOP DEX‚OTHERWISE,BACKSPACE BRAKEYBD1‚ANDTHENRELOOP KEYBD3CPX#BUFFER+71 BEQKEYBD1‚IFSO,IGNOREANDRELOOP STAA0,X INX BRAKEYBD1 DELBSRCRLF CNTLINLDX#PROMPT BSROUTNCR BRAKEYBD0 IEXITLDAA#$1E STAAX STXENDBUF BSRCRLF RTS SPC1 OUTCHBSRBREAK JMPOUTEEE OUTEEEEQU$E1D1 SPC1 INCHJMPINEEE SPC1 BREAKJMPBREAK1 BREAK1PSHA LDAAPIAD PIADEQU$8004 BMIBREAK2 JMPREADY BREAK2PULA RTS INEEEEQU$E1AC SPC2 *UNIVERSALOUTPUTROUTINE OUTPUTEQU* BSROUTNCR BRACRLF OUTPU2BSROUTCH OUTPU3INX OUTNCRLDAA0,X CMPA#$1E BNEOUTPU2 RTS CRLFBSRPUSHX LDX#CRLFST BSROUTNCR BSRPULLX RTS CRLFSTFCB$13 FCB$0D FCB$0A FCB$15 FCB$00,$00 CRENDFCB$1E,$FF,$FF FCB$1E‚RS PUSHXSTXPUSHTX LDXXSTACK DEX DEX STXXSTACK PSHA LDAAPUSHTX STAA0,X LDAAPUSHTX+1 STAA1,X PULA LDXPUSHTX RTS PULLXLDXXSTACK LDX0,X INCXSTACK+1 INCXSTACK+1 RTS SPC5 STOREPSHA PSHB BSRPUSHX JSRPULLAE LDXAESTK INX INX STXAESTK DEX LDX0,X STAA0,X STAB1,X BSRPULLX PULB PULA RTS SPC5 INDBSRPUSHX PSHA PSHB LDXAESTK INX INX STXAESTK DEX LDX0,X LDAA0,X LDAB1,X JSRPUSHAE PULB PULA BSRPULLX RTS SPC5 LISTLDXNEXTBA STXWORKBA LDXSOURCE BRALIST1 LIST0LDXINDEX3 LIST1CPXWORKBA BEQLEXIT BSROUTLIN INX‚SKIPOVERTHE04ATENDOFLINE BRALIST1 LEXITRTS SPC5 OUTLINLDAA0,X CLRPRCNT INX LDAB0,X INX CLRTSIGN JSRPRN0 BSRPRINSP OUTLI1LDAA0,X INX BSRPUSHX LDX#COMMAN STXKEYWD STAAKEYWD+1 LDXKEYWD DEX OUTLI2DEX LDAA0,X CMPA#$1E BNEOUTLI2 INX INX INX JSROUTNCR JSRPULLX JMPOUTPUT SPC2 PRI NSPPSHA LDAA#$20 JSROUTCH PULA RTS SPC5 RANDOMINX INX LDAA0,X CMPA#'D BNETSTVER JSRPUSHX LDAARNDVAL LDABRNDVAL+1 LDX#0000 RAND1ADCB1,X ADCA0,X INX INX CPX#RNDVAL BNERAND1 ANDA#$7F STAARNDVAL STABRNDVAL+1 STXINDEX1 LDAAINDEX1 LDABINDEX1+1 JMPTSTV9 TSTVJSRSKIPSP JSRBREAK JSRTSTLTR BCCTSTV1 RTS TSTV1CMPA#'R BNETSTV2 LDAB1,X CMPB#'N BEQRANDOM TSTV2JSRPUSHX SUBA#$40 STAAVARPNT+1 ASLA ADDAVARPNT+1 STAAVARPNT+1 LDXVARPNT LDAAVARPNT LDABVARPNT+1 TST2,X BNETSTV20 JMPTSTV9 TSTV20LDX0,X STXDIMPNT INX INX STXDIMCAL JSRPULLX JSRINXSKP CMPA#'( BEQTSTV22 TSTVERJMPDBLLTR TSTV22INX JSREXPR JSRPUSHX JSRPULLAE TSTA BEQTSTV3 SUBER1JMPSUBERR TSTV3LDXDIMPNT TSTB BEQSUBER1 CMPB0,X BHISUBER1 LDAA1,X STAAANUMB BEQTST666 LDXDIMCAL TSTV4DECB BEQTSTV6 LDAAANUMB TSTV5INX INX DECA BNETSTV5 BRATSTV4 TSTV6STXDIMCAL JSRPULLX JSRSKIPSP CMPA#', BNETSTVER INX JSREXPR JSRPUSHX JSRPULLAE TSTA BNESUBER1 LDXDIMPNT TSTB BEQSUBER1 CMPB1,X BHISUBER1 TST666LDXDIMCAL TSTV7INX INX DECB BNETSTV7 DEX DEX STXDIMCAL JSRPULLX JSRSKIPSP TSTV8CMPA#') BNETSTVER JSRPUSHX LDAADIMCAL LDABDIMCAL+1 TSTV9JSRPULLX INX JSRPUSHAE CLC RTS TSTLTRCMPA#$41 BMINONO CMPA#$5A BLEYESNO SPC2 TESTNOCMPA#$30 BMINONO CMPA#$39 BLEYESNO NONOSEC RTS YESNOCLC RTS SPC5 PULPSHBSRPULLAE SPC1 PUSHAESTSSAVESP LDSAESTK PSHB PSHA STSAESTK LDSSAVESP RTS SPC2 PULLAESTSSAVESP LDSAESTK PULA PULB STSAESTK LDSSAVESP RTS SPC2 FACTJSRSKIPSP JSRTSTV BCSFACT0 JSRIND RTS FACT0JSRTSTN BCSFACT1 RTS FACT1CMPA#'( BNEFACT2 INX BSREXPR JSRSKIPSP CMPA#') BNEFACT2 INX RTS FACT2LDAB#13 JMPERROR SPC5 TERMBSRFACT TERM0JSRSKIPSP CMPA#'* BNETERM1 INX BSRFACT BSRMPY BRATERM0 TERM1CMPA#'/ BNETERM2 INX BSRFACT JSRDIV BRATERM0 TERM2RTS SPC5 EXPRJSRSKIPSP CMPA#'- BNEEXPR0 INX BSRTERM JSRNEG BRAEXPR1 EXPR0CMPA#'+ BNEEXPR00 INX EXPR00BSRTERM EXPR1JSRSKIPSP CMPA#'+ BNEEXPR2 INX BSRTERM JSRADD BRAEXPR1 EXPR2CMPA#'- BNEEXPR3 INX BSRTERM JSRSUB BRAEXPR1 EXPR3RTS SPC5 MPYBSRMDSIGN LDAA#15 STAA0,X CLRB CLRA MPY4LSR3,X ROR4,X BCCMPY5 ADDB2,X ADCA1,X BCCMPY5 MPYERRLDAB#2 JMPERROR MPY5ASL2,X ROL1,X DEC0,X BNEMPY4 TSTA BMIMPYERR TSTTSIGN BPLMPY6 JSRNEGAB MPY6STAB4,X STAA3,X JSRPULLX RTS SPC5 MDSIGNJSRPUSHX CLRA LDXAESTK TST1,X BPLMDS2 BSRNEG LDAA#$80 MDS2INX INX STXAESTK TST1,X BPLMDS3 BSRNEG ADDA#$80 MDS3STAATSIGN DEX DEX RTS SPC5 DIVBSRMDSIGN TST1,X BNEDIV33 TST2,X BNEDIV33 LDAB#8 JMPERROR DIV33LDAA#1 DIV4INCA ASL2,X ROL1,X BMIDIV5 CMPA#17 BNEDIV4 DIV5STAA0,X LDAA3,X LDAB4,X CLR3,X CLR4,X DIV163SUBB2,X SBCA1,X BCCDIV165 ADDB2,X ADCA1,X CLC BRADIV167 DIV165SEC DIV167ROL4,X ROL3,X LSR1,X ROR2,X DEC0,X BNEDIV163 TSTTSIGN BPLDIV169 BSRNEG DIV169JSRPULLX RTS SPC5 NEGPSHA PSHB JSRPULLAE BSRNEGAB JSRPUSHAE PULB PULA RTS SPC2 NEGABCOMA COMB ADDB#1 ADCA#0 RTS SPC5 SUBBSRNEG SPC2 ADDJSRPULLAE ADD1STABBNUMB STAAANUMB JSRPULLAE ADDBBNUMB ADCAA  NUMB JSRPUSHAE CLC RTS SPC2 FINDNOLDAAHIGHLN LDABHIGHLN+1 SUBBPACKLN+1 SBCAPACKLN BCSHIBALL FINDN1LDXSOURCE FIND0JSRPULPSH SUBB1,X SBCA0,X BCSFIND3 BNEFIND1 TSTB BEQFIND4 FIND1INX FIND2BSRINXSKP CMPA#$1E BNEFIND2 INX CPXNEXTBA BNEFIND0 HIBALLLDXNEXTBA FIND3SEC FIND4STXWORKBA JSRPULLAE RTS SPC2 SKIPSPLDAA0,X CMPA#$20 BNESKIPEX INXSKPINX BRASKIPSP SKIPEXRTS SPC2 LINENOJSRINTSTN BCCLINE1 LDAB#7 JMPERROR LINE1JSRPULPSH STAAPACKLN STABPACKLN+1 STXBUFNXT RTS SPC2 NXTLINLDXBASPNT NXTLI2LDAA0,X INX CMPA#$1E BNENXTLI2 STXBASLIN RTS SPC2 CCODEBSRSKIPSP STXINDEX4 STSSAVESP LDX#COMMAN-1 LOOP3LDSINDEX4 DES LOOP4INX PULA LDAB0,X CMPB#$1E BEQLOOP7 CBA BEQLOOP4 LOOP5INX CPX#COMEND BEQCCEXIT LDAB0,X CMPB#$1E BNELOOP5 LOOP6INX INX BRALOOP3 LOOP7INX STSBUFNXT STSBASPNT LOOP8LDSSAVESP RTS CCEXITLDSSAVESP LDX#IMPLET RTS SPC2 SPC5 *STARTOFMAINPROGRAM * * STARTLDXSOURCESETTOFIRSTBASICLOCATION STXNEXTBA STXWORKBA STXARRTAB DEX CLRA START2INX STAA0,X CPXMEMEND BNESTART2 START1CLRA STAAPACKLN STAAPACKLN+1 STAAPRCNT LDXPACKLN STXHIGHLN READYLDS#$A045 LDX#RDYMSG JSROUTPUT NEWLINLDS#$A045 LDX#$A07F STXXSTACK CLRPRCNT NEWL3JSRCNTLIN LDX#BUFFER JSRSKIPSP STXBUFNXT JSRTESTNO BCSLOOP2 JMPNUMBER LOOP2CMPA#$1E BEQNEWLIN JSRCCODE LDX0,X JMP0,X SPC5 ERRORLDS#$A045 JSRCRLF LDX#ERRMS1 JSROUTNCR CLRA JSRPUSHAE JSRPRN LDX#ERRMS2 JSROUTNCR CLRB LDAABASLIN BEQERROR2 LDXBASLIN LDAA0,X LDAB1,X ERROR2JSRPRN0 JSRCRLF BRAREADY SPC5 RUNLDXSOURCE‚WITHTEXTBUFFERPOINTER STXBASLIN LDX#SBRSTK STXSBRPNT LDX#FORSTK STXFORPNT LDX#$A07F STXXSTACK LDXNEXTBA STXARRTAB CLRA DEX RUN1INX STAA0,X CPXMEMEND BNERUN1 LDX#VARTAB LDAB#78 RUN2STAA0,X INX DECB BNERUN2 JMPBASIC SPC5 CLISTLDX#PGCNTL JSROUTPUT LDXBASPNT CLIST1JSRSKIPSP CMPA#$1E BEQCLIST4 JSRINTSTN STXBASPNT JSRFINDN1 STXINDEX3 LDXBASPNT PSHA JSRSKIPSP CMPA#$1E PULA BNECLIST2 JSRPUSHAE BRACLIST3 CLIST2INX JSRINTSTN CLIST3CLRA LDAB#1 JSRADD1 JSRFINDN1 JSRLIST0 BRACLIST5 CLIST4JSRLIST CLIST5JMPREMARK NOP SPC2 PATCHJSRNXTLIN LDX#BASIC STX$A046 LDS#$A040 STSSP SPEQU$A008‚INMIKBUGRAM JMPCONTRL CONTRLEQU$E0E3‚INMIKBUG SPC2 NUMBERJSRLINENO NUM1JSRFINDNO BCCDELREP *YOUHAVEIDENTICALNUMBERANDUMUSTDELETEANDINSERT LDXWORKBA CPXNEXTBA BEQCAPPEN‚IFATENDFILE *YOUMERELYAPPEND *OTHERWISEJUSTINSERTANDRETURN BSRINSERT BRANEXIT DELREPLDXBUFNXT‚GETFIRSTCHARACTERAFTERLINENO JSRSKIPSP CMPA#$1EISFIRSTCHARACTERRS BNEREPLAC‚IFNOTYOUAREREPLACINGLINE LDXNEXTBA CPXSOURCE BEQNEXIT BSRDELETE‚OTHERWISEONLYDELETEANDRETURN BRANEXIT REPLACBSRDELETE BSRINSERT NEXITJMPNEWLIN CAPPENBSRINSERT LDXPACKLN‚ANDMAKETHISLINENEWHIGHLINENO STXHIGHLN BRANEXIT SPC2 DELETESTSSAVESP LDXWORKBA LDSNEXTBA LDAB#2 INX INX DES DES DEL2LDAA0,X DES INX INCB CMPA#$1E‚IFNOTRS,DOITAGAIN BNEDEL2 STSNEXTBA‚STACKWASDECREMENTEDBY#OFCHAINLINE STSARRTAB LDXWORKBA STABDEL5+1‚THISPUTSREALOFFSET *INATOBJECTTIME DEL4CPXNEXTBA!  BEQDELEX DEL5LDAA0,X STAA0,X‚HONEST0OFFSET INX BRADEL4 DELEXLDSSAVESP RTS SPC2 INSERTLDXBUFNXT JSRCCODE INS1STXKEYWD LDABENDBUF+1 SUBBBUFNXT+1 ADDB#$04 STABOFFSET+1‚THEDUMMYOFFSETSBELOW ADDBNEXTBA+1 LDAA#$00 ADCANEXTBA CMPAMEMEND BHIOVERFL STABNEXTBA+1 STAANEXTBA‚THISINCREMENTSNEXTBAFOROFFSETAMOUNT LDXNEXTBA STXARRTAB INS2CPXWORKBA BEQBUFWRT DEX LDAA0,X OFFSETSTAA0,X‚FALSEOFFSET BRAINS2 BUFWRTLDXWORKBA‚WEHAVEOPENEDHOLE,NOWCANINSERT *THEKEYBDBUFFER STSSAVESP LDAAPACKLN STAA0,X INX LDAAPACKLN+1 STAA0,X INX LDAAKEYWD+1 STAA0,X INX LDSBUFNXT DES BUF3PULA STAA0,X INX CMPA#$1E BNEBUF3 LDSSAVESP RTS OVERFLLDAB#14 JMPERROR SPC5 BASICLDXBASLIN CPXNEXTBA BNEBASIC1 BASIC0JMPREADY BASIC1TSTBASLIN BEQBASIC0 INX INX LDAA0,X INX STXBASPNT LDX#COMMAN STXKEYWD STAAKEYWD+1 LDX#ASTACK STXAESTK LDXKEYWD LDX0,X BASIC2JMP0,X SPC5 GOSUBLDXBASLIN STXINDEX1 JSRNXTLIN LDXSBRPNT CPX#SBRSTK+16 BNEGOSUB1 LDAB#9 JMPERROR GOSUB1LDAABASLIN STAA0,X INX LDAABASLIN+1 STAA0,X INX STXSBRPNT LDXINDEX1 STXBASLIN GOTOLDXBASPNT JSREXPR JSRFINDN1 BCCGOTO2 LDAB#7 JMPERROR GOTO2STXBASLIN BRABASIC SPC5 RETURNLDXSBRPNT CPX#SBRSTK BNERETUR1 LDAB#10 JMPERROR RETUR1DEX DEX STXSBRPNT LDX0,X STXBASLIN BRABASIC SPC5 SPC5 PAUSELDX#PAUMSG JSROUTNCR JSRPRINSP LDXBASLIN LDAA0,X INX LDAB0,X INX JSRPRN0 PAUSE1JSRINCH CMPA#$0D BNEPAUSE1 JSRCRLF PAUSE2JMPREMARK SPC5 INPUTLDAABASPNT BNEINPUT0 LDAB#12 BRAINPERR INPUT0JSRKEYBD LDX#BUFFER STXBUFNXT LDXBASPNT INPUT1JSRTSTV BCSINPEX STXBASPNT LDXBUFNXT INPUT2BSRINNUM BCCINPUT4 DEX LDAA0,X CMPA#$1E BEQINPUT3 LDAB#2 INPERRJMPERROR INPUT3‚JSRKEYBD LDX#BUFFER BRAINPUT2 INPUT4JSRSTORE INX STXBUFNXT LDXBASPNT JSRSKIPSP INX CMPA#', BEQINPUT1 INPEXDEX CLRPRCNT CMPA#$1E BEQPAUSE2 DBLLTRLDAB#3 JMPERROR SPC5 TSTNBSRINTSTN BCSTSTN0 JSRPULLAE TSTA BPLTSTN1 TSTN0SEC RTS TSTN1JSRPUSHAE RTS SPC2 INNUMJSRSKIPSP STAATSIGN INX CMPA#'- BEQINNUM0 DEX INTSTNCLRTSIGN INNUM0JSRSKIPSP JSRTESTNO BCCINNUM1 RTS INNUM1DEX CLRA CLRB INNUM2INX PSHA LDAA0,X JSRTESTNO BCSINNEX SUBA#$30 STAATNUMB PULA ASLB ROLA BCSINNERR STABBNUMB STAAANUMB ASLB ROLA BCSINNERR ASLB ROLA BCSINNERR ADDBBNUMB ADCAANUMB BCSINNERR ADDBTNUMB ADCA#0 BCCINNUM2 INNERRLDAB#2 JMPERROR INNEXPULA TSTTSIGN BEQINNEX2 JSRNEGAB INNEX2JSRPUSHAE CLC RTS SPC2 PRINTLDXBASPNT PRINT0JSRSKIPSP CMPA#'" BNEPRINT4 INX PRINT1LDAA0,X INX CMPA#'" BEQPRIN88 CMPA#$1E BNEPRINT2 LDAB#4 BRAPRINTE PRINT2JSROUTCH JSRENLINE BRAPRINT1 PRINT4CMPA#$1E BNEPRINT6 DEX LDAA0,X INX CMPA#'; BEQPRINT5 JSRCRLF CLRPRCNT PRINT5INX STXBASLIN JMPBASIC PRINT6CMPA#'T BNEPRINT8 LDAB1,X CMPB#'A BNEPRINT8 INX INX LDAA0,X CMPA#'B BEQPRINT7 LDAB#11 PRINTEJMPERROR PRINT7INX JSREXPR JSRPULLAE SUBBPRCNT BLSPRIN88 PRIN77JSRPRINSP BSRENLINE DECB BNEPRIN77 BRAPRIN88 PRINT8JSREXPR JSRPRN PRIN88JSRSKIPSP CMPA#', BNEPRIN99 INX PRLOOPLDAAPRCNT TAB ANDB#$F8 SBA BEQPRI999 JSRPRINS" P BSRENLINE BRAPRLOOP PRIN99CMPA#'; BNEPREND INX PRI999JMPPRINT0 PRENDCMPA#$1E BEQPRINT4 LDAB#6 BRAPRINTE SPC5 ENLINEPSHA LDAAPRCNT INCA CMPAMAXLIN BNEENLEXT JSRCRLF CLRA ENLEXTSTAAPRCNT PULA RTS SPC5 PRNJSRPRINSP BSRENLINE LDAA#$FF STAATSIGN JSRPULLAE TSTA BPLPRN0 JSRNEGAB PSHA LDAA#'- JSROUTCH BSRENLINE PULA PRN0JSRPUSHX LDX#KIOK PRN1CLRTNUMB PRN2SUBB1,X SBCA0,X BCSPRN5 INCTNUMB BRAPRN2 PRN5ADDB1,X ADCA0,X PSHA LDAATNUMB BNEPRN6 CPX#KIOK+8 BEQPRN6 TSTTSIGN BNEPRN7 PRN6ADDA#$30 CLRTSIGN JSROUTCH BSRENLINE PRN7PULA INX INX CPX#KIOK+10 BNEPRN1 JSRPULLX RTS SPC1 KIOKFDB10000 FDB1000 FDB100 FDB10 FDB1 SPC5 LETLDXBASPNT JSRTSTV BCCLET1 LET0LDAB#12 LET00JMPERROR LET1JSRSKIPSP INX CMPA#'= BEQLET3 LET2LDAB#6 BRALET00 LET3JSREXPR CMPA#$1E BNELET2 JSRSTORE BRAREMARK SPC5 SIZELDABARRTAB+1 LDAAARRTAB SUBBSOURCE+1 SBCASOURCE JSRPRN0 JSRPRINSP LDABMEMEND+1 LDAAMEMEND SUBBARRTAB+1 SBCAARRTAB JSRPRN0 JSRCRLF REMARKJSRNXTLIN JMPBASIC SPC5 DIMLDXBASPNT DIM1JSRSKIPSP JSRTSTLTR BCCDIM111 JMPDIMEX DIM111SUBA#$40 STAADIMVAR+1 ASLA ADDADIMVAR+1 STAADIMVAR+1 JSRPUSHX LDXDIMVAR TST0,X BNEDIMERR TST1,X BNEDIMERR TST2,X BNEDIMERR LDAAARRTAB+1 STAA1,X LDAAARRTAB STAA0,X STAA2,X JSRPULLX JSRINXSKP CMPA#'( BEQDIM2 DIMERRLDAB#5 DIMER1JMPERROR DIM2INX JSREXPR JSRPULPSH TSTB BEQSUBERR TSTA BEQDIM3 SUBERRLDAB#15 BRADIMER1 DIM3BSRSTRSUB LDAA0,X CMPA#', BNEDIM6 INX JSREXPR JSRPULPSH TSTB BEQSUBERR TSTA BNESUBERR BSRSTRSUB JSRMPY DIM6CLRA LDAB#2 JSRPUSHAE JSRMPY LDAA0,X CMPA#') BNEDIMERR INX LDABARRTAB+1 LDAAARRTAB JSRADD1 CLRA LDAB#2 JSRADD1 JSRPULLAE CMPAMEMEND BLSDIM7 JMPOVERFL DIM7STAAARRTAB STABARRTAB+1 JSRSKIPSP CMPA#', BNEDIMEX INX JMPDIM1 DIMEXCMPA#$1E BNEDIMERR JMPREMARK SPC2 STRSUBJSRPUSHX LDXDIMVAR LDX0,X STRSU2TST0,X BEQSTRSU3 INX BRASTRSU2 STRSU3STAB0,X JSRPULLX RTS SPC5 FORLDXBASPNT JSRTSTV BCCFOR1 JMPLET0‚ERRORJUMP FOR1STXBASPNT JSRPULPSH LDXFORPNT CPX#FORSTK+48 BNEFOR11 LDAB#16 JMPERROR FOR11STAA0,X INX STAB0,X INX STXFORPNT LDXBASPNT JSRSKIPSP INX CMPA#'= BEQFOR3 FOR2JMPLET2‚ERRORJUMP FOR3JSREXPR JSRSTORE INX CMPA#'T BNEFOR2 LDAA0,X INX CMPA#'O BNEFOR2 JSREXPR JSRPULLAE STXBASPNT LDXFORPNT STAA0,X INX STAB0,X INX STXFORPNT LDXBASPNT LDAA0,X CMPA#$1E FOR8BNEFOR2‚ERRORJUMP INX STXBASLIN LDXFORPNT LDAABASLIN STAA0,X INX LDABBASLIN+1 STAB0,X INX STXFORPNT JMPBASIC SPC5 NEXTLDXBASPNT JSRTSTV BCCNEXT1 JMPLET0‚ERRORJUMP NEXT1JSRSKIPSP CMPA#$1E BNEFOR8‚ERRORJUMP INX STXBASLIN LDX#FORSTK JSRPULPSH NEXT2CPXFORPNT BEQNEXT6 CMPA0,X BNENEXT5 CMPB1,X BNENEXT5 JSRIND JSRPULPSH SUBB3,X SBCA2,X BCSNEXT4 STXFORPNT NEXT3JMPBASIC NEXT4JSRPULLAE ADDB#1 ADCA#0 JSRPUSHX LDX0,X STAA0,X STAB1,X JSRPULLX LDX4,X STXBASLIN BRANEXT3‚EXIT NEXT5INX INX INX INX INX INX BRANEXT2 NEXT6LDAB#17 JMPERROR SPC5 IFLDXBASPNT JSREXPR BSRRELOP STAANCMPR JSREXPR STXBASPNT BSRCMP# R BCCIF2 JMPREMARK IF2LDXBASPNT JSRCCODE LDX0,X JMP0,X SPC2 RELOPJSRSKIPSP INX CMPA#'= BNERELOP0 LDAA#0ƒ= RTS RELOP0LDAB0,X CMPA#'< BNERELOP4 CMPB#'= BNERELOP1 INX LDAA#2ƒ<= RTS RELOP1CMPB#'> BNERELOP3 RELOP2INX LDAA#3‚<> RTS RELOP3LDAA#1‚< RTS RELOP4CMPA#'> BEQREL44 LDAB#6 JMPERROR REL44CMPB#'= BNERELOP5 INX LDAA#5ƒ>= RTS RELOP5CMPB#'< BEQRELOP2 LDAA#4ƒ> RTS SPC5 CMPRLDAANCMPR ASLA ASLA STAAFUNNY+1 LDX#CMPR1 JSRSUB JSRPULLAE TSTA FUNNYJMP0,X‚OFFSETGETSCHANGED CMPR1BEQMAYEQ BRANOCMPR BMIOKCMPR BRANOCMPR BMIOKCMPR BRACMPR1 BNEOKCMPR BRAMYNTEQ BEQMYNTEQ BMINOCMPR BPLOKCMPR NOCMPRSEC RTS OKCMPRCLC RTS MAYEQTSTB BEQOKCMPR BRANOCMPR MYNTEQTSTB BNEOKCMPR BRANOCMPR SPC2 SPC2 ENDEQU* ORG$A048 FDBPROGM END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅæ€ ‡NAM†INTERFACE * *†IEEEINTERFACEPROGRAM * *†PROGRAMER‡G.L.EVANS *†LOCATIONˆTHEPOLYTECHNICOFTHESOUTHBANK *†DATEŒ27-9-'76 *†SYSTEMŠDEC10.FORTRANCROSSASSEMBLER * * PIACRAEQU†$800B PIACRBEQU†$8009 PIADRAEQU†$800A PIADRBEQU†$8008 ‡ORG†$10 BEGIN‚CLRA‹SETUPTHEPIA ‡STAA…PIACRA ‡STAA…PIACRB ‡LDAA…#$80 ‡STAA…PIADRA ‡LDAA…#$F0 ‡STAA…PIADRB ‡LDAA…#$04 ‡STAA…PIACRA ‡STAA…PIACRBPIAISSETUP ‡LDAA…#$80 ‡STAA…PIADRASETDAVHIGH(INACTIVE) BUSIP1LDAA…PIADRA ‡BITA…#$03ƒTESTFORNRFDANDNDACHIGH ‡BEQ†BUSIP1BRANCHIFBOTHINACTIVE ‡CLRAŒ# ‡STAA…PIADRB# ‡LDAA…#$80ƒ# ‡STAA…PIADRB#BEGINCONVERSIONPULSE PERIPHLDAA…PIADRB ‡ANDA…#$01ƒCHECKFORENDOFCONVERSION ‡BNE†PERIPH! BUSIP2LDAA…PIADRA ‡BITA…#$01ƒCHECKIFREADYFORDATA ‡BEQ†BUSIP2BRANCHBACKIFNOT ‡CLRA ‡STAA…PIADRASETDAVLOW(ACTIVE) BUSIP3LDAA…PIADRA ‡BITA…#$02ƒCHECKIFDATAACCEPTEDYET ‡BEQ†BUSIP3BRANCHBACKIFNOT ‡LDAA…#$80 ‡STAA…PIADRASETDAVHIGH ‡BRA†BUSIP1BRANCHBACKFORNEXTCHARACTER * *NOTE:- *†DAV†DATAAVAILABLEFROMIEEEBUSS *†NRFD…IEEEBUSSNOTREADYFORDATA *†NDAC…DATANOTYETACCEPTEDBYIEEEBUSS * *†THESELINESAREALLACTIVELOW ‡END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅé€* THIS PROGRAM IS AVAILABLE ON PAPER TAPE ONLY. ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ$ ê€ NAM GRAY/BIN OPT O ORG $100 SPC 2 ****************************************** * GRAY CODE TO BINARY CONVERSION  * * 16 BIT ACCURACY - REENTRANT CODE * ****************************************** SPC 2 GRYBIN PSHA PSHB  LDAA #$0F PSHA TSX LDAA 2,X G2 LSRA RORB EORA 2,X EORB 1,X DEC 0,X BNE G2 INS INS INS RTS SPC 2 END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅLì€L NAM P2708 OPT O,NOG * ************************************************ * * STARTING ADDRESS OF THE PROGRAM IS $400.  * * * PROGRAM / USER CONVERSATION * * PROM LOADER * * FILE NAME = XYZ * PROM ADDRESS = NN00 * * . * * PROM PROGRAMMER * * % (PP LO PROMPT) * * * XYZ IS THE NAME OF THE OBJECT FILE FOLLOWED BY * A CARRIAGE RETURN * NN00 IS THE STARTING ADDRESS OF THE PROM FOLLOWED BY * BY A CARRIAGE RETURN * * THE ADDRESSES IN THE OBJECT FILE ARE CONVERTED TO * (ADDRESS - NN00 + 1000). * DATABYTES WITH CONVERTED ADDRESSES FROM 1000 THRU * 1FFF ARE LOADED. * * IF THE OBJECT FILE IS LOADED CORRECTLY, THE * MOTOROLA PROMPROGRAMMER PP LO IS STARTED. * * CODE FOR 1ST 2708: 1000 - 13FF * CODE FOR 2ND 2708: 1400 - 17FF * CODE FOR 3RD 2708: 1800 - 1BFF * CODE FOR 4TH 2708: 1C00 - 1FFF * * * * THE OBJECT FILE OBJ OF THE FOLLOWING PROGRAM * HAS TO BE MERGED WITH PP LO AS FOLLOWS: * * MERGE,P2708,PP LO,OBJ * * THEN PP LO HAS TO NEW COMMANDS: * * %L START PROM LOADER TO LOAD * NEXT OBJECT FILE * %D START EDOS-II * ********************************************* PAGE ORG $400 * START LDS #$FFF JSR RESET INITIALIZE FLOPPY DISK JSR TEXT FCC /__PROM LOADER__@/ FN LDS #$FFF JSR TEXT FCC /_FILE NAME = @/ LDAA #' SPACE STAA A1 A1 - A5 ARE FILLED WITH STAA A2 SPACE CODE STAA A3 STAA A4 STAA A5  CLR UNIT UNIT IS PRESET TO 0 LDX #A1 X POINTER TO A1 * *INPUT FILE NAME * INPUT JSR INCH INPUT CHARACTER CMPA #$7F CHARACTER IS RUBOUT ? BNE L1 NO RUBO LDAA #'< YES, JSR OUTCH OUTPUT < BRA FN RETURN TO FN L1 CMPA #': CHARACTER IS : ? BEQ RU YES, READ UNIT NUMBER CMPA #$D NO; CHARACTER IS CR ? BEQ IFR YES, INPUT FILE NAME READY CPX #UNIT NO, X POINTER TO UNIT ? BEQ INPUT YES, MORE THEN 5 CHARACTERS STAA 0,X NO, STORE CHARACTER INX INCREMENT POINTER BRA INPUT INPUT NEXT CHARACTER * * RU CLRB READ UNIT NUMBER RU1 JSR INCH INPUT CHARACTER CMPA #$7F CHARA% CTER IS RUBOUT ? BEQ RUBO YES CMPA #$D NO, CHARACTER IS CR ? BEQ IFR YES, INPUT FILE NAME READY TSTB NO; B=0 ?  BNE RU1 NO, WAIT FOR CR CMPA #'3 TEST FOR 0,1,2, AND 3 BGT QM ILLEGAL CHARACTER SUBA #'0 BMI QM ILLEGAL CHARACTER RORA SHIFT BITS 0 AND 1 RORA INTO POSITIONS 6 AND 7 RORA ANDA #$C0 CLEAR BITS 0 THRU 5 STAA UNIT UNIT NUMBER IN BITS 6,7 INCB B=1, UNIT NUMBER STORED BRA RU1 WAIT FOR CR * QM JSR TEXT OUTPUT QUESTION MARKS FCC /???_@/ BRA FN RETURN TO FN * *INPUT FILENAME READY * IFR JSR CRLF CARRIAGE RETURN, LINE FEED LDX #$30 INITIALIZE FOR DIRECTORY STX ISIZE CLR ITRK TRACK 0 CLR ICNTR COUNTER = 0 LDAA #3 SECTOR 4 (-1) AND ADDA UNIT UNIT NUMBER  STAA ISCTR * RSECT LDAA #128 READ SECTOR STAA CNT CNT=128 LDX #BB BEGIN BUFFER STX SX SX BUFFER POINTER RBYTE JSR RI READ BYTE FROM DISK LDX SX STAA 0,X STORE BYTE IN BUFFER INX INCREMENT BUFFER POINTER STX SX DEC CNT 128 BYTES ? BNE RBYTE NO, READ NEXT BYTE LDAB #11 YES, B=11 LDX #BB X BUFFER POINTER * *SEARCH FILE NAME IN DIRECTORY * TEST LDAA 5,X READ ATTRIBUTE CMPA #$80 DELETED FILE ? BNE TEST1 NO NEXT DECB LAST FCB IN SECTOR ?  BEQ RSECT YES, READ NEXT SECTOR STX SX NO, INCREMENT X BY 11 LDAA SX+1 ADDA #11 STAA SX+1 LDAA #0 ADCA SX  STAA SX LDX SX BRA TEST NEXT FCB * TEST1 CMPA #$FF END OF DIRECTORY ? BEQ QM YES, FILE NOT FOUND * *COMPARE FILENAME WITH NAME IN DIRECTORY * LDAA 0,X CMPA A1 FIRST CHARACTER = A1 ? BNE NEXT NO, NEXT FCB LDAA 1,X CMPA A2 SECOND CHARACTER = A2 ? BNE NEXT NO, NEXT FCB LDAA 2,X CMPA A3 THIRD CHARACTER = A3 ? BNE NEXT NO, NEXT FCB LDAA 3,X CMPA A4 FOURTH CHARACTER = A4 ? BNE NEXT NO, NEXT FCB LDAA 4,X CMPA A5 FIFTH CHARACTER = A5 ? BNE NEXT NO, NEXT FCB * *INITIALIZE FOR READING FILE * LDAA 6,X TRACK NUMBER STAA ITRK LDAA UNIT UNIT NUMBER ADDA 7,X + SECTOR NUMBER DECA - 1 STAA ISCTR CLR ICNTR CLEAR COUNTER LDX 8,X SIZE STX ISIZE * *INPUT FIRST ADDRESS OF PROM * PA1 JSR TEXT FCC /PROM ADDRESS = @/ CLRA CLRB PA2 PSHA JSR INCH INPUT CHARACTER CMPA #$D CARRIAGE RETURN ? BEQ LOAD YES CMPA #'0 NO, TEST FOR HEX DIGIT BLT PA4 IL@FGL CHARACTER CMPA #'9 BLE PA3  CMPA #'A BLT PA4 ILLEGAL CHARACTER CMPA #'F BGT PA4 ILLEGAL CHARACTER ADDA #9 PA3 ANDA #$F CLEAR BITS 4 THRU 7 STAA PROMA TEMPORARY STORAGE PULA MULTIPLY OLD ADDRESS ASLA BY 16 ROLB ASLA ROLB ASLA ROLB ASLA  ROLB ADDA PROMA ADD NEW DIGIT BRA PA2 INPUT NEXT DIGIT PA4 LDAA #'? ILLEGAL CHARACTER JSR OUTCH OUTPUT ? AND  JSR CRLF CARRIAGE RETURN, LINE FEED INS ADJUST STACK POINTER BRA PA1 * *LOAD HEX FILE * *ADRESSES OF THE FILE ARE CONVERTED IN *(ADDRESS-PROMA+1000) *MAX. 4K DATA BYTES ARE STORED IN *LOCATIONS 1000-1FFF * LOAD INS ADJUST STACKPOINTER STAB PROMA FIRST ADDRESS OF PROM CLR PROMA+1 LS BYTE = 0 JSR CRLF CARRIAGE RETURN, LINE FEED LDX #$1000 X POINTER TO BUFFER RAM LDAA #$01 FILLER (NOP) FILL STAA 0,X FILL BUFFER WITH FILLER INX CPX #$2000 BUFFER FILLED & ? BNE FILL NO STAA CKSUM CHECKSUM NOT 0 LOAD1 JSR IN INPUT BYTE FROM DISK CMPA #'S ASCII S ? BNE LOAD1 NO, GET NEXT BYTE JSR IN YES, INPUT BYTE FROM DISK CMPA #'9 ASCII 9 ? BNE LOAD2 NO LDAA #'. YES, S9 MARK JSR OUTCH  OUTPUT . BRA LOAD1 READ NEXT BYTE LOAD2 CMPA #'1 ASCII 1 ? BNE LOAD1 NO, READ NEXT BYTE CLR CKSUM YES, S1 MARK, CLEAR CKSUM JSR BYTE READ BYTECOUNT SUBA #2 SUBTRACT 2 STAA BYTECT STORE # OF BYTES -2 JSR BYTE READ MS ADDRESS BYTE STAA ADR JSR BYTE READ LS ADDRESS BYTE STAA ADR+1 LOAD3 JSR BYTE READ BYTE DEC BYTECT LAST BYTE ? BEQ LOAD4 YES LDX ADR NO, COMPUTE ADDRESS STX SX SAVE X INX INCREMENT ADR STX ADR LDAB SX B = MS BYTE SX SUBB PROMA - MS BYTE PROMADDRESS ADDB #$10 +10 (HEX) CMPB #$1F B HIGHER THEN 1F (HEX) ? BHI LOAD3 YES, DON'T STORE DATA  CMPB #$F B HIGHER THEN F (HEX) ? BLS LOAD3 DON'T STORE DATA STAB SX STORE MS BYTE ADDRESS LDX SX STAA 0,X STORE DATA CMPA 0,X DATA STORED CORRECTLY ? BEQ LOAD3 YES, GET NEXT BYTE JSR TEXT NO FCC /_CAN'T LOAD RAM@/ JMP FN RETURN TO FN LOAD4 INC CKSUM CHECKSUM OK ? BEQ LOAD1 YES, NEXT LINE LOAD5 JSR TEXT NO FCC /_CHECKSUM ERROR@/ JMP FN RETURN TO FN * *READ BYTE FROM DISK AND TEST *FOR END OF FILE * IN JSR RI READ BYTE, END OF FILE ? BCS IN1 YES RTS NO, RETURN FROM SUBROUTINE IN1 INS ADJUST STACK POINTER INS TST CKSUM CHECKSUM=0 ? BNE LOAD5 NO, CHECKSUM ERROR JSR TEXT YES FCC /__PROM PROGRAMMER_@/ JMP $20 START PP LO * * BYTE BSR INHEX INPUT HEX DIGIT ASLA (MS BITS) ASLA ASLA ASLA PSHA BSR INHEX INPUT HEX DIGIT PULB (LS BITS) ABA FORM BYTE TAB ADDB CKSUM ADD BYTD TO CHECKSUM STAB CKSUM RTS RETURN FROM SUBROUTINE * * INHEX BSR IN INPUT BYTE FROM DISK CMPA #'0 TEST FOR HEX DIGIT BLT FE ILLEGAL CHARACTER CMPA #'9 BLE INHEX1 CMPA #'A BLT FE ILLEGAL CHARACTER CMPA #'F BGT FE ILLEGAL CHARACTER ADDA #9 INHEX1 ANDA #$F CLEAR BITS 4 THRU 7 RTS RETURN FROM SUBROUTINE FE JSR TEXT ILLEGAL CHARACTER FCC /_FORMAT ERROR_@/ JMP FN RETURN TO FN * * A1 RMB 1 1ST CHARACTER FILE NAME A2 RMB 1 2ND CHARACTER FILE NAME A3 RMB 1 3RD CHARACTER FILE NAME A4 RMB 1 4TH CHARACTER FILE NAME A5 RMB 1 5TH CHARACTER FILE NAME UNIT RMB 1 UNIT NUMBER SX RMB 2 TEMPORARY STORAGE X CNT RMB 1 COUNTER ADR RMB 2 ADDRESS CKSUM RMB 1 CHECKSUM BYTECT RMB 1 BYTECOUNT PROMA RMB 2 PROMADDRESS BB RMB 128 128 BUFFER LOCATIONS * * RESET EQU $E806 OUTCH EQU $F9DC INCH EQU $FAA0 ISIZE EQU $4 ITRK EQU $6 ISCTR EQU $7 ICNTR EQU $8 RI EQU $E809 * * *TEXT ROUTINE, * _ = CARRIAGE RETURN, LINE FEED * @ = END OF TEXT * *MAX. 254 CHARACTERS * *A, B, AND X ARE SAVED * TEXT STX TXTSX SAVE X TSX X POINTER TO RETURNADDRESS STX TXTRP SAVE X FOR RETURN PSHA SAVE A AND B PSHB LDX 0,X X = DATAPOINTER CLRB B = COUNTER TEXT1 LDAA 0,X GET CHARACTER INCB INCREMENT COUNTER INX INCREMENT DATAPOINTER CMPA #'@ END OF TEXT ? BEQ TEXT3 YES CMPA #'_ NO, CRLF ? BNE TEXT2 NO BSR CRLF YES BRA TEXT1 GET NEXT CHARACTER * *'  CRLF LDAA #$A OUTPUT CARRIAGE RETURN, JSR $F9DC LINE FEED LDAA #$D JSR $F9DC CLRA JMP $F9DC * * TEXT2 JSR $F9DC OUTPUT CHARACTER BRA TEXT1 GET NEXT CHARACTER TEXT3 CLRA COMPUTE RETURN ADDRESS LDX TXTRP ADDB 1,X ADCA 0,X STAA 0,X STAB 1,X PULB RESTORE B, A, AND X PULA LDX TXTSX RTS RETURN FROM SUBROUTINE TXTSX RMB 2  TXTRP RMB 2 * * *EXTENSION OF PP LO *TEST FOR L AND D COMMANDS * CHLD JSR $AE SUBROUTINE IN PP LO CMPA #'L A = ASCII L ? BNE CHLD1 NO JMP START YES, START LOADER CHLD1 CMPA #'D A = ASCII D ? BNE CHLD3 NO JSR CRLF YES, 2 CRLF'S JSR CRLF LDS #$FF8A INITIALIZE STACK LDX #0 CHLD2 INX DELAY LOOP BNE CHLD2 JMP $E800 START EDOS CHLD3 RTS RETURN TO PP LO * * *PATCH ON PP LO * JSR $AE IS REPLACED BY JSR CHLD * ORG $6B JSR CHLD * END  ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ € NAMEIATOASCII OPTO,S ENDLOCEQU$1FFD OUTCHEQU$0227 INCTEQU$023D PNCHONEQU$01EF LEADEQU$0139 PNCHOFEQU$0204 TEMP1EQU$1FFF TBLADXEQU$1E88 PIASBEQU$8007 ORG$1E00 TABLEFCB$20 FCC:123456789?*??&?0/STUVWXYZ: FCB$08 FCC:,??: FCB$09 FCC:?-JKLMNOPQR?%????+ABCDEFGHI#.!??:‚ FCB$7F FCB$0D LDS#$1F00SETSTACKPOINTER LDAA#$FF STAA$026FMODIFY"INCT"DONOTCLEARPARITY STAA$02A1MODIFY"NCHAR"DONOTIGNORENULL STAA$02A2DONOTIGNORE$7F STAA$02A3DONOTIGNORE$0A STAA$02A4DONOTIGNORE$11 STAA$02A5DONOTIGNORE$12 STAA$02A6DONOTIGNOER$13 STAA$02A7DONOTIGNORE$14 LDAA#$3C STAAPIASBSUPPRESSECHO,READERRELAYON LDX#$2000STARTOFBUFFER LDAA#$11 JSROUTCHREADERON MORINJSRINCTINPUTCHARACTER STAATEMP1 TPA PSHA‚SAVESTATUSREG LDAATEMP1RECALLCHARACTER PSHA‚STORECHARACTER LSRA‚ELIMINATEEIAPARITYBIT ANDA#$70 STAATEMP1STOREHIGHHALFOFEIACHAR *WITHPARITYREMOVED PULA‚RECALLORIGINALCHAR ANDA#$0FSEPARATELOWHALFOFEIACHAR ORAATEMP1COMBINEHALVES STAATBLADX LDAATABLE *TBLADX=LASTBYTEOFTHEPREVIOUSINSRUCTION STAATEMP1RESTORESTATUSREG PULA TAP LDAATEMP1 STAAX INX BCCMORINGETNEXTCHARACTER STXENDLOC LDAA#$13 JSROUTCHREADEROFF LDAA#$7FRESTORE"INCT"TOORIGCONFIG STAA$026F STAA$02A2‚RESTORE"NCHAR"TOORIGINAL LDAA#$00 STAA$02A1 LDAA#$0A STAA$02A3 LDAA#$11 STAA$02A4 LDAA#$12 STAA$02A5 LDAA#$13 STAA$02A6 LDAA#$14 STAA$02A7 LDX#$2000STARTOFBUFFER LDAA#$39MODIFY"LEAD"NOTSHUTOFFPNCH STAA$0141 JSRPNCHON JSRLEAD MOROUTLDAAX JSROUTCH INX CPXENDLOC BNEMOROUT JSRLEAD JSRPNCHOF END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ( €0010*TELEPHONEDIALERPROGRAMUSINGTHEMEK6800D1 0020*EVALUATIONKIT. 0030* 0040* 0050*DIALINGRELAYISNORMALLYCLOSEDANDINSERIESWITH 0060*THETELEPHONE.‚DIALPULSES(NEGATIVEGOING)OUTOF 0070*PA0WILLOPENTHERELAY. 0080*INORDERTODIAL,REMOVETHEPHONEFROMTHEHOOKAND 0090*PUSHG. 0100* 0110* 0120* 0130* 0140* 0150†ORG0000 0160†LDS#$00FF…*SETSTACKPOINTER 0170†JMPOUTPUT 0180* 0190*20MSEC.DELAYSUBROUTINE 0200* 0210DELAY…PSHA 0220†PSHB 0230†TPA 0240†PSHA 0250†LDAB#$0D 0260LUP2LDAA#$FF 0270LUP1DECA 0280†BNELUP1 0290†DECB 0300†BNELUP2 0310†PULA 0320†TAP 0330†PULB 0340†PULA 0350†RTS 0360* 0370*SETUPOUTPUTPORTAT$8008(PA0) 0380* 0390OUTPUTLDAA#$01 0400†STAAIOA1 0410†LDAA#$04 0420†STAACRA1 0430* 0440*TOMBENZIEANDPAULSCHMITT 0450* 0460*DIALINGPROGRAMFOLLOWS: 0470*NUMBERSARESELECTEDFROMTABLE. 0480*1THRU9ARENORMAL,0ISA10 0490*AZEROENDSTHEDIALING 0500* 0510* 0520* 0530* 0540*HOLD4SECONDSFORADIALTONE 0550* 0560TONE…INCIOA1…*CLOSERELAY 0570†LDAA#100 0580TONE1JSRDELAY 0590†DECA 0600†BNETONE1 0610†LDAA#100 0620TONE2JSRDELAY 0630†DECA 0640†BNETONE2 0650* 0660* 0670*DIALINGROUTINEFOLLOWS 0680* 0690* 0700DIALLDX#TABLE…*XPOINTSTO 0710*“*BEGINNINGOFTABLE 0720DIAL1LDAAXˆ*LOADFIRSTDIGIT 0730DIAL2DECIOA1†*60MSECDELAYOPEN 0740‡LDAB#3 0750DIAL3JSRDELAY 0760‡DECB 0770‡BNEDIAL3 0780‡INCIOA1†*40MSEC.DELAYCLOSED 0790‡LDAB#2 0800DIAL4JSRDELAY 0810‡DECB 0820‡BNEDIAL4 0830‡DECA 0840‡BNEDIAL2 0850‡LDAB#30‡*INTERDIGITDELAYƒ600MSEC 0860DIAL5JSRDELAY 0870‡DECB 0880‡BNEDIAL5 0890‡INXŒTESTNEXTDIGITFORZERO 0900* 0910‡TSTX 0920‡BNEDIAL1†*NEXTDIGITIFNOTZEROBRANCH 0930* 0940* 0950*ENDOFDIALINGSEQUENCE 0960* 0970* 0980HOLD…BRAHOLD„*HOLDOFFHOOKSTATUS 0990* 1000* 1030*TELEPHONENUMBERISSTOREDSTARTINGATLOCATION"TABLE". 1040* 1050*THEEXAMPLETELEPHONENUMBERIS320-8218. 1060* 1070* 1080*AZEROINTHELASTBYTEENDSTHEDIALING. 1090* 1100* 1110TABLE…FCB3,2,10,8,2,1,8,0 1120* 1130IOA1EQU$8008 1140CRA1EQU$8009 1150†ORG$A048 1160†FDB0000‡*PROGRAMSTARTVECTOR 1180†END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ €NAMISQRT ********************************************************* *THISSUBROUTINECALCULATESTHEINTEGER *SQUAREROOTOFANYPOSITIVENUMBERUP *TO255DECIMAL.‚ENTERWITHNUMBERIN *ACCUMULATORA,RESULTWILLBERETURNED *INACCUMULATORA.‚BANDCCREGISTERS *AREAFFECTED.‚PROGRAMISRELOCATABLE. * *PROGRAMMEDBYDONL.JACKSON11/27/76 *************************************************************** SPC1 ORG$2100 ISQRTLDAB#$FF ISQRT2ADDB#2 SBA BCCISQRT2 TBA LSRA RTS SPC1 ENDISQRT ) ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ €  NAM MUSIC OPT NOP,S ORG 0 REPLAY CLR $8005 CLEAR CRA-2 BIT INC $8004 INCR DATA DIRECTION REG  COM $8005 SET CRA-2 BIT LDS #TEMP POINT TO FIRST NOTE -1 NUNOTE LDX #$08FF TIME PER NOTE PUL B PULL NEXT NOTE FROM STACK TSTB HAS LAST NOTE BEEN PLAYED? BEQ REPLAY IF NOT, CONTINUE STAB TEMP STORE NOTE-CODE TONLUP INCA TOGGLES OUTPUT WHEN STORED LDAB TEMP GET NOTE-CODE COUNT DEX HOLD TONE FOR AWHILE BEQ NUNOTE LONG ENOUGH YET? DECB BNE COUNT STAA $8004 TOGGLES OUTPUT BRA TONLUP TEMP RMB 1 FCB $53,$42,$53,$42,$53,$42,$53,$42,$53 FCB $42,$53,$42,$37,$42,$37,$42,$37,$42,$37,$42 FCB $22,$2B,$22,$2B,$20,$29,$20,$29 FCB $20,$29,$20,$29,$20,$29,$20,$29,$20 FCB $29,$20,$29,$20,$29,$20,$29,$20,$29 FCB $20,$29,$2B,$37,$2B,$37,$24,$2B,$24 FCB $2B,$29,$37,$29,$37,$42,$37,$42,$37 FCB $42,$37,$42,$37,$3A,$46,$3A,$46,$3E FCB $4A,$3E,$4A,$3E,$4A,$3E,$4A,$3E,$4A FCB $3E,$4A,$3E,$4A,$3E,$4A,$3E,$4A,$3E FCB $4A,$3E,$4A,$3E,$4A,$3E,$58,$3E,$58 FCB $3E,$58,$3E,$58,$3E,$58,$3E FCB $58,$37,$4A,$37,$4A,$37,$4A,$37,$4A FCB $31,$3E,$31,$3E,$2B,$37,$2B,$37,$2B FCB $37,$2B,$37,$2B,$37,$2B,$37,$2B,$37 FCB $2B,$37,$2B,$37,$2B,$37,$2B,$37,$2B  FCB $37,$31,$3E,$31,$3E,$37,$42,$37,$42 FCB $3A,$46,$3A,$46,$3E,$4A,$3E,$4A,$3E FCB $4A,$3E,$4A,$24,$3E,$24,$3E,$29,$42 FCB $29,$42,$29,$42,$29,$42,$29,$42,$29 FCB $42,$29,$42,$29,$42,$2B,$31,$37,$3E FCB $42,$4A,$00 END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ€NAMFLOAD OPTO,NOG ORG$2500 JMPSRCH JMPLOADFORLOADFUNCTION JMPVERFFORVERIFYFUNCTION SRCHLDX#SMSGFROSEARCHMODE JSRPRNTCR LDAA#$FFFORSEARCHFUNCTION STAAMODEFGSAVEMODE BRALOAD1 LOADLDX#LMSGFORLOADMODE JSRPRNTCR CLRMODEFG BRASTART VERFLDX#VMSGFORVERIFYMODE JSRPRNTCR LDAA#1FORVERIFY STAAMODEFG CLRERRFGFORERRORS STARTLDX#$FB85LOADSINGLE/CONTINOUSMESSAGE JSRPRNTPRINTMESSAGE JSRKEYBRDGETKEYBOARDCHARACTER STAASFLAGSAVEIT CMPA#'SISITANS BEQLOAD1YESCONTINUE CMPA#'CISITAC BNESTARTNOPRINTMESSAGEAGAIN LOAD1JSRCRLFPRINTCRLF LOAD4JSRRECORDGETRECORDFROMTAPE LDAATYPEWHICHTYPERECORDISIT? CMPA#'0ISITAHEADER? BNELOAD2NO LDAABYTECTYESAHEADERGETBYTECT LDX#BYTECTPOINTERTOINPUTBUFFER LOAD3INX DECAATLASTCHARACTER? BNELOAD3NO LDAA#$04LOADSTOP* CODEFORPRINTER STAA0,XSAVEIT LDX#INBUFLOADFILENAME JSRPRNTCRPRINTNAME JSRCKSMOKCKECKSUMOK? TSTMODEFGWHATMODE BPLLOAD4IFLOADORVERIFY SRCH1LDX#SRCHMINSEARCHMODE JSRPRNTCRPRINTMESSAGE JSRKEYBRDGETCHARACTER CMPA#'CWASITACFORCONTINUE BEQLOAD4TRYAGAIN CMPA#'LWASITALFORLOAD BEQLOADYESWASLOAD CMPA#'VWASITAVFORVERIFY? BEQVERF BRASRCH1TRYANOTHERMESSAGE LOAD2TSTMODEFGWHATMODE? BMILOAD4IFSEARCHMODE JSRCKSMOKCHECKSUMOK? LDAATYPEGETTYPERECORD CMPA#'1ISITDATA? BEQLOAD5YES CMPA#'9ISITENDOFFILERECORD? BNELOAD4NOGETANOTHERRECORD LDAASFLAGLOADSINGLE/CONTINOUSFLAG CMPA#'CISITCONTINOUS BEQLOAD4YESTRYAGAIN JMPEXECNOEXITTOEXBUG LOAD5LDAABYTECTGSTBYTECOUNT SUBA#$03ACCOUNTFORADDRESSANDBYTECOUNT STAABYTECT LDX#INBUFGETINPUTPOINTER STXINPTRSAVEIT LDXINBUF-2GETADDRESS LOAD6STXOUTPTRSAVEOUTPPUTADDRESS LDAAOUTPTRGETADDRESS ANDA#$0FGETRIDOFHIGHADDRESS ORAA#$30INTO$3000RANGE STAAOUTPTRSAVENEWADDRESS LDXINPTRLOADINPTR LDAA0,XGETWORD INXSETUPFORNEXTONE STXINPTRSAVENEWADDRESS LDXOUTPTRLOADADDRESSTOWRITE TSTMODEFGISITVERIFYORLOAD BEQLOAD8FORLOAD CMPA0,XWASITSAMEASMEMORY? BEQCONTYESCONTINUE PSHASAVEBYTE STXOUTPTRSAVEOUTPTR TSTERRFGANYERRORS? BNEVERF1YESDON'TPRINTHEADER SEC ROLERRFGSETERRORFLAG LDX#ERRMSGGETERRORMESSAGE JSRPRNTCRPRINTMESSAGE VERF1LDX#OUTPTRGETTMEMORYADDRESS JSRCRLFPRINTCRLF JSRPWDSPPRINTADDRESS LDXOUTPTRLOADMEMORYADDRRESS JSRPBTSPPRINTBYTE TSXGETWORNGTAPEWORD JSRPBTSPPRINTIT PULARESTORESTACK LDXOUTPTRREESTOREOUTPTR BRACONTCONTINUE LOAD8STAA0,XWRITEIT CMPA0,XISITSAME? BNEERRORNOERROR CONTINXSETUPFORNEXTOUTPUT DECBYTECTAMIDONE? BNELOAD6NONOTDONE JMPLOAD4GETANOTHERRRECORD ERRORJMPLDERROPRINTLOADERRORMESSAGE CKSMOKTSTCKSMWASITOK? BEQCKSM1YEESOK LDX#CKSMM JSRPRNTCRPRINTMESSAGE LDX#INBUF-2LOADADDRESSTHATSTARTED JSRPWDSPPRINTWORNGADDRESS CKSM1RTS CKSMMFCC/CKSMERROR/ FCB07,04 SMSGFCC/SEARCHMODE/ FCB04 VMSGFCC/VERIFYMODE‚/ FCB04 LMSGFCC/LOADMODE‚/ FCB04 MODEFGEQU$FF5A ERRFGEQU$FF61 SRCHMEQU$FB4A ERRMSGEQU$FB6B PBTSPEQU$FA24 PWDSPEQU$FA22 LDERROEQU$F89B PRNTEQU$FA35 EXECEQU$F5DC PRNTCREQU$FA33 KEYBRDEQU$FA4E SFLAGEQU$FF58 CRLFEQU$FA41 RECORDEQU$F8A4 TYPEEQU$FF8C BYTECTEQU$FF8D CKSMEQU$FF8B INBUFEQU$FF90 OUTPTREQU$FF56 INPTREQU$FF08 END ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ5€310 NAM FUNCTN 20 ARG EQU $80 ARG ADRESS 25 FLOPT EQU $2800 HEX FLOAT PT ADRESS 30 ADD EQU+  FLOPT 40 SUB EQU FLOPT+2 50 MUL EQU FLOPT+4 60 DIV EQU FLOPT+6 70 EXP EQU ARG 80 OPT O 90 ORG $2500 100 *EXP(ARG)********** 110 *ARG=4 BYTES 120 *HEXADECIMAL FLOATING POINT FORMAT 130 *USING HEX FLOAT POINT SUBROUTS 140 *FORM:ARG+0=SIGN(MANT)/EXP(2'S COMPL) 150 * ARG+1=A.16EXP-1 + B.16EXP-2+ 160 * ARG+2=C.16EXP-3 + D.16EXP-4+ 170 * ARG+3=E.16EXP-5 + F.16EXP-6 180 *RESULT IN ARG+12 190 *ARG IS CHANGED 220 EXPNT CLRB B=X**2 COUNTER 230 LDAA EXP 240 PSHA SAVE SIGN 250 ANDA #$7F 260 PSHA SAVE EXP-SIGN 270 ANDA #$40 280 PULA 290 BEQ POSEX 300 ORAA #$80 REAL 2'S COMPL FORM 310 TSTM CMPA #$FE 320 BLE CALCU 330 ADDB #4 EXP>$FE (-2) 340 DECA 350 BRA TSTM 360 POSEX ADDB #4 370 DECA 380 BPL POSEX 390 BRA TSTM 400 CALCU STAA EXP EXP<= -2 410 PULA 420 TSTA NEG ARG? 430 BMI GOCAL 440 LDAA EXP 450 ANDA #$7F 460 STAA EXP 470 GOCAL PSHB SAVE X**2 CNTR! 500 BSR AD1X (1+X) 540 BSR QUADR (1+X)**2 550 JSR ADD 560 FDB ARG+12 (1+X)**2+1 570 FDB EINS 580 FDB ARG+12 590 LDX #ARG 610 LSR 13,X ((1+X)**2+1)/2 620 ROR 14,X 630 ROR 15,X 680 DEFLA PULB PUL X**2 COUNTR 690 DECB INFLATION 700 BPL DFLW 710 RTS 720 DFLW PSHB 730 BSR QUADR 740 BRA DEFLA 750 QUADR LDX ARG+12 (ARG+12)**2 770 STX ARG+8 780 LDX ARG+14 800 STX ARG+10 810 JSR MUL 820 FDB ARG+12 830 FDB ARG+8 840 FDB ARG+12 850 RTS 860 AD1X JSR ADD 1+X 870 FDB ARG 880 FDB EINS 890 FDB ARG+12 900 RTS 910 *LOGARITHMUS NATURALIS***** 920 *LN (ARG) 930 *HEX FLOAT POINT FORM 940 *RESULT IN ARG+12 950 *MISTAKE: OVERFLOW-BIT=1! ARG UNCHANGED 960 *LOGNAT IS USING SUBROUTINES OF EXPNT!!! 1000 LOGNAT LDAA EXP FUNCTION LN(ARG) 1010 BPL GDA 1020 MIST SEV MISTAKE 1040 RTS 1041 GDA LDX #ARG+1 1042 LDAB #3 1043 TSTON TST 0,X ARG=0?-->MISTAKE 1044 BNE GOOD 1045 INX 1046 DECB 1047 BNE TSTON 1048 BRA MIST 1050 GOOD LDX #ARG 1060 LDAB #4 1070 LDAA 1,X MSBYTE (ARG) 1080 ANDA #$F0 1090 BNE ANOT0 16**EXP-1 NOT ZERO? 1100 VIERM ASL 3,X HEX FORMAT TO BINARY 1110 ROL 2,X 1120 ROL 1,X 1130 DECB 1140 BNE VIERM 1150 LDAA 0,X 1160 BEQ MEX 1170 D, EC 0,X 1180 BRA GOOD 1190 MEX LDAA #$3F 1200 STAA 0,X 1210 BRA GOOD 1220 TSTEX PSHA EXP NEG? 1230 LDAA 0,X 1240 ANDA #$40 1250 PULA 1260 RTS 1270 ANOT0 LDAA 0,X 1280 BSR TSTEX 1290 BEQ PLEX 1300 ORAA #$80 FORM 2'S COMPL 1310 NEGA 1320 PLEX ASLA EXP MULT 4,TO BECOME N 1330 ASLA 1340 LDAB 1,X  MSBYTE (ARG) 1350 WTRS BSR TSTEX 1360 BEQ DECRE 1370 INCA NEG EXP->INC EXP 1380 BRA SHFTB 1390 DECRE DECA POS EXP->DEC EXP 1400 SHFTB ASLB 1410 BCC WTRS 1420 BSR TSTEX 1430 BEQ NRDY 2'S EXP=N 1440 NEGA 1450 NRDY PSHA SAVE N! 1460 LDAA #$80 SET 2**N,MSBYTE (ARG) 1470 STAA 5,X 1480 LDAA 0,X SET EXP (ARG)=EXP(2**N) 1490 STAA 4,X 1500 CLR 6,X 1510 CLR 7,X 1520 LDAA 1,X DEFINE MSBIT(ARG) 1530 S2EX BMI CLCLT 1540 LSR 5,X 1550 ASLA 1560 BRA S2EX 1570 CLCLT JSR DIV EQUATION (8) 1580 FDB ARG+4 2**N 1590 FDB ARG ARG 1600 FDB ARG M=X/2**N 1610  JSR SUB 1620 FDB ARG M 1630 FDB EINS 1640 FDB ARG+4 M-1 1650 JSR AD1X M+1 1660 JSR DIV 1670 FDB ARG+12 M+1 1680 FDB ARG+4 M-1 1690 FDB ARG+12 Z=(M-1)(M+1) 1700 LDX ARG+12 SAVE Z 1710 STX ARG+4 1720 LDX ARG+14 1730 STX ARG+6 1740 JSR QUADR Z**2 1750 JSR DIV 1760 FDB DREI 1770 FDB ARG+12 1780 FDB ARG Z**2/3 1790 JSR AD1X 1800 JSR MUL 1810 FDB ARG+4 1+Z**2/3 1820 FDB ARG+12 Z 1830 FDB ARG+8 Z(1+Z**2/3) 1840 JSR MUL 1850 FDB ZWEI 1860 FDB ARG+8 - " - 1870 FDB ARG+4 LN(M) 1880 PULA N(2'S EX) IN 2'S CMPL! 1890 LDX #ARG 1900 TSTA 1910 BMI NMIN 1920 LDAB #2 1930 BRA COMM 1940 NMIN NEGA 1950 LDAB #$82 1960 COMM STAB 0,X EXP N 1970 STAA 1,X ARG N 1980 CLR 2,X 1990 CLR 3,X 2000 JSR MUL 2010 FDB ARG N 2020 FDB LN2 0,6931471 2030 FDB ARG+12 2040 JSR ADD 2050 FDB ARG+4 LN(M) 2060 FDB ARG+12 N.LN2 2070 FDB ARG+12 2080 RTS 2200 EINS FDB $110,0 2210 ZWEI FDB $120,0 2220 DREI FDB $130,0 2230 LN2 FDB $B1,$7200 2300 END 2320 MON  ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ- ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅåååååååååååååååååååååååå. åååååååååååååååååååååååååå/ åååååååååååååååååååååååååå0 åååååååååååååååååååååååååå1 åååååååååååååååååååååååååå2 åååååååååååååååååååååååååå3 åååååååååååååååååååååååååå4 åååååååååååååååååååååååååå5 åååååååååååååååååååååååååå6 åååååååååååååååååååååååååå7 åååååååååååååååååååååååååå8 åååååååååååååååååååååååååå9 åååååååååååååååååååååååååå: åååååååååååååååååååååååååå; åååååååååååååååååååååååååå< åååååååååååååååååååååååååå= åååååååååååååååååååååååååå> åååååååååååååååååååååååååå? åååååååååååååååååååååååååå@ ååååååååååååååååååååååååååA ååååååååååååååååååååååååååB ååååååååååååååååååååååååååC ååååååååååååååååååååååååååD ååååååååååååååååååååååååååE ååååååååååååååååååååååååååF ååååååååååååååååååååååååååG ååååååååååååååååååååååååååH ååååååååååååååååååååååååååI ååååååååååååååååååååååååååJ ååååååååååååååååååååååååååK ååååååååååååååååååååååååååL åååååååååååååååååååååååååå