¥'É Ð¥+JJJJ À…?©\…>­þmÿþ®ÿ0½M…=Îÿ­þ…'Îþ¦+l>îþîþ ‰þ “þ /û¦+lý   d§°©¨]¶‘@­ÅµLÒ¦­]¶ðî½µÐî¾µ©]¶LF¥¼µ ¨¦ ê¢L}¢ ±BÐÈÀÐ÷ ±B™¤µÈÀÐöL¼¦¢ÿŽ]¶Ðö­æµÐ ­Äµð­Ëµ¸ª­Ìµ¹ª­ÃµËµ­ÄµÌµLô¶L–¬Lo³ ¶°°øîäµÐîåµîĵî̵ε­ÂµÐåLx¶ Žé·Ž÷·©ø·ê·­à·á·©ì·©í·¬ç·ˆŒñ·©ô·ŠJJJJª©øx “·¢ÿšŽë· “þ ‰þL„­ç·8íñ·á·­ç·ñ·Îñ·©ì·©í·©ô· “·­ç·þ¶i ñ·© á·8éÿ¶í· “·`­å·¬ä· µ·¬í·ˆ êêÎì·Œí·Îñ·Îá·Ðß`x ½°(`(8`­¼µñ·©ð·­ùµIÿë·`©¨‘BÈÐû` è·¶`þû··þ`ïò¢ ˆ±>J>¼J>¼™»èàVí¢˜Ðè¢U½¼)?¼Êõ`8†'Žx½À½ŽÀ0|­¼…&©ÿÀŒÀHhê Hh ¹¸ˆÐø©Õ ¸¸©ª ¸¸©­ ¸¸˜ Vй¼Yÿ»ª½)º¦'À½ŒÀˆÐë¥&êY»ª½)º®xÀ½ŒÀ¹»ÈÐꪽ)º¦' »¸©Þ ¸¸©ª ¸¸©ë ¸¸©ÿ ¸¸½ŽÀ½ŒÀ`HhÀŒÀ` ¢VÊ0û¹»^¼*^¼*‘>ÈÄ&Ðë`  ˆða½ŒÀûIÕÐô꽌ÀûɪÐò V½ŒÀûÉ­Ð穈„&¼ŒÀûYº¤&™¼Ðî„&¼ŒÀûYº¤&™»ÈÐÀûٺнŒÀûÉÞР꽌Àûɪð\8` ü„&ÈÐæ&ðó½ŒÀûÉÕÐð꽌ÀûɪÐò ½ŒÀûÉ–Ðç©…'½ŒÀû*…&½ŒÀû%&™,E'ˆç¨Ð·½ŒÀûÉÞЮ꽌ÀûɪФ`†+…*ÍxðS©…&­x…'8å*ð3°IÿîxiþÎxÅ&¥&É °¨8 î¹¹º º¥' ñ¹¹º ºæ&Ðà º­x)*+ª½€À¦+`ª  ¢ÊÐýæFÐæG8éÐð`0($ p,&"–—š›žŸ¦§«¬­®¯²³´µ¶·¹º»¼½¾¿ËÍÎÏÓÖ×ÙÚÛÜÝÞßåæçéêëìíîïòóôõö÷ùúûüýþÿ¢ Jù©…@…A Œ ß¼¥A ãý¥@ Úý  ¹È¿ íýˆ÷L/®Åij°ˆ˜™œ ¡¢£¤¥¨©ª °±¸ÀÁÂÃÄÅÆÇÈÉÊÌÐÑÒÔÕ !Ø"#$%&'(àáâãä)*+è,-./012ðñ345678ø9:;<=>?  9 +* " " ( (9"1 ( ,.(0# 2  /#0/#0 *?'#07#00/0/'#07#0:"4<*55/**5/*%5/)1/)1/)1/)'#0/#0*5/*75/**5/*:5//#0/#0'#07#0:::*::'#07#0.<,<$>>)!)!6$:"48)¡E!‚€B å+!¬¨h(+  ‰1ˆ2P H !D)" EäŠÄ`€  @ $ °C » ` À ƒÊDQ &J€8½À½ŽÀ0^©ÿÀÝŒÀHh ü üÀÝŒÀêˆÐð©Õ Õ¼©ª Õ¼©– Õ¼¥A ļ¥D ļ¥? ļ¥AEDE?HJ>À½ŒÀh ª Ô¼©Þ Õ¼©ª Õ¼©ë Õ¼½ŽÀ½ŒÀ`HJ>ÀÝŒÀhêêê ªêêHhÀÝŒÀ`¹ò³ð ûHø¥@i…@¥Ai…AØhèˆÐá`¤„H…I Œø Œø ±Hª ÑHðŠH±HªhH‘H½ŽÀ ½ŒÀÝŒÀÐöˆÐøhª½ŽÀ½ŒÀ ½ŒÀHhHhŽøÝŒÀЈÐÀ ±H™6ÈÀ Ðö ±<…G ±H ÑHð‘H( j½ŠÀ°½‹Àf5(Ð   ºˆÐú®ø ±H Z¾(ФG  ˆÐýæFÐ÷æGÐó  ±HðZÉðXj° ¸ 0Œx®ø D¹$Îxó­xH©` •¾Îøð(©ø© Z¾h Z¾L¼½¤.Ìxð­xH˜ •¾hÎøÐåðÊh©@(LH¾ð9L¯¾ ±HH¥/ ‘HhðÅ/ð© Ðá ±H¨¹¸¿Å-З( ܸ°Ž(¢†& ¸®ø$8  ‘H½ˆÀ` *¸ð©°îH ± V©…D™ÿ»ˆÐú™»ˆÐú©P •¾©(…E¥D Z¾ ¿©°$©0x8Îxð D¹°õ¥-Ðñ ܸ°ìæD¥DÉ#Ó  ‘H8½ˆÀ`©…? €Ð¤E V¼°k *¸°fæ?¥?Éì „?©0x™¨¿ˆú¤E ‡¿ ‡¿ ‡¿HhêˆÐñ D¹°#¥-ð©ÅE¥Eé…EÉ°8` D¹° ܸÎxÐñ D¹° ¥-ÉÐ ܸŒÎxÐë8`¤-¹¨¿0Ý©ÿ™¨¿Æ?Ê¥DÐ ¥EÉåÆEÆE`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÅÅÒÆ ÓÒÏÔÃÅӠ̵Lضcªpªqª` [§Œ·ª` ~®®›³š £ºŽ›³© L…³Óœž½žuª“ª`ª»µêžŸ"Ÿ.ŸQŸ`ŸpŸN¥¤–£Ð¤ï¤b¢p¢t¢é¢¥Å¥¥Ü¥¢¢—¢€¢m¥2¢<¢(¢-¢P¢y¥¥0£k££|¢ü¤ü¤eØà<ÔòÔ àå¤àààü¤ü¤eØà<ÔòÔ­¸ªËµ­¹ªLÕ¿­é·JJJJjª­ê·hª­àI жª¢ ½aUÊÐ÷L¼©@¶ª¢ ½kUÊÐ÷8°­¶ªÐ© Ð ©L ²¥ Q¨©^ªRª(jQª0l^l\ ¶ª¢ ½wUÊÐ÷¢½“ªuªÊ÷­±ªWª Ô§­³ªð H ¦h ‘@ [§­_ªÐ ¢/½QžÐÊ÷­SžóI¥ô­Ržò©Ð­bªð_ªL€¡`L¿L„LýªLµ·­¬`­Âª¬Áª`LQ¨êêLYúLeÿLXÿLeÿLeÿeÿ Ñž­QªðH­\ª‘(h0L&¦ ê¤$©`‘(­³ªð ‚¦©Rª ºŸ ºž\ªŽZªL³Ÿl8 Ñž­Rª ª½H½H­\ª`\ªŽZªŒ[ªºèèŽYª¢½Sª•6Êø`®·ªðLxŸ®QªðÉ¿ðuÅ3ð'¢ŽRªÍ²ªÐÊŽRªÊŽ]ª®]ªèŽ]ªÉÐuLÍŸÉÐ}¢ŽRªL¤Ÿ¢ŽRªÉ𭳪ðgÐ^H8­³ªÐ ^¦hì®ZªLŸÉЩRª ¦L™ŸÍ²ªð…ÉŠðñ¢ŽRªÐá©Rªð%©·ª Q¨Lܤ­Ͳªð ©¢ŽZª©@ЩЩ -^ªð ºŸ ÅŸ\ªŒ[ªŽZª Q¨®Yªš­\ª¬[ª®Zª8`l6©LÅŸ ÿŒ_ªÈŒbªî_ª¢½ͲªÐèŽ]ª ¤¡)Y„¨È ðhð(𠹄¨ÐÖ­ͲªðL¤Ÿ­ÉÐ [§L•ŸLĦ_ª¬_ª ^¦ ©9 ©ð©LÒ¦ÀЄ3© 9 ©ða •  ¤¡ð 0L jLY  “¡ð ™uªÈÀ<ó “¡Ðû(Ь_ª©9 ©ð  ÐË­“ªÉ ð­uªÉ ÐK¬_ª©À9 ©ð?L  <© ™tªˆÐú`uª© 9 ©ð' ¹¡°¨Ðà°¬_ª©9 ©ðà°Î ŠÐ©LÒ¦LĦ©eªtªfªlªmª Ü¿­]ª ¤¡ÐÉÐ÷®_ª­eª ©] ©Ð“®cªðvcªŽ]ªÐÜ¢ Ý@©ðÊÐøð¶½J©0G eªeªÊŽdª ¹¡°¢­dª ¨¥EÐ ¥DÙU©Œ¥EÙX© Ѓ¥DÙW©Ðõ­cªÐ”˜J¨¥E™gª¥D™fªLè H©€ eªeªh) tªtªÐé𜠀¡LƒŸ [§ ®¡­_ªª½H½H`®]ª½ÉðèŽ]ªÉ¬` “¡ðúÉ ð÷`© ™ºµˆÐú`©…D…E ¤¡ɤð<(LΡ ¤¡Ð¦D¥E`8é°0!É ° þ¡eDª©eE¨ þ¡ þ¡ŠeD…D˜eE…EÏ8`D&E`( ¤¡ðÅ8é°0îÉ é0æɰ⢠þ¡ÊÐúD…DL¢¥DL•þ¥DL‹þ­^ª tª^ª`,tªP ÈŸ©pMtª-^ª^ª`©³ª¥DH £hWªLÔ§© ª¢ d§ ˜‘@`©Ð© ª¢Lꢩ Ðö­½µ­ ¾µ© cª È¢Lê¢ £¢ Œ¦ÐûLq¶©LÕ£©cª­lªÐ ­mªÐ©lª­lª½µ­mª¾µ ꢥEÐLȦ…A¥D…@ C§ N§ §­cª»µL¨¦­uªÉ ð% d§°: ü¢Lê¢ ¯§Ð©³ª ˜‘@ N§©»µL¨¦ ’§Ð š§ð ¯§ðö ª§ðñ ü¢L£`© -eªÉ ðL © Õ£­sª¬rª ࣭mª¬lª ࣭sª¬rªLÿ£Ll£ («L^¯êêêêêê© Õ£ z¤ª­eª)ÐŽrªŒsª z¤®rª¬sªLq¤ l£ Q¨lrª­¶ªð ¥ÖL̦© Õ£8¥¯åg¨¥°åh ࣥh¤gLÿ£© Õ£8¥Låʨ¥MåË à£¥Ë¤ÊLÿ£ÂµH ¨¢hLħŒÁµŒÃµÂµ©»µ©¼µ ¨¦­ÂµÃµL¨¦ŒÃµÄµ©L†¶ ¨¦Lê¢LЦ £ ¨¢©#-µððµ­¶ªð(© ±¤ z¤egª˜ehÅt°p…°…j†¯†i¦g¤h q¤ Q¨l`© ±¤ z¤8¥Lí`ªª¥MíaªE¨ÄK@ð>„ˆʎõŒÄµL ¤­ õ­ ĵ©Âµ©Áµ©»µ©¼µ ¨¦­aªÂµ¨­`ªÁµ` ê¢L̦͵ð®_ªŽbªJðLž¥Lz¥uª“ªÊ÷Lz¥`­¶ªð·ª ¤ ÈŸ Q¨lX¥J…Ì¥K…ÍlV ¤ ÈŸ Q¨lV eÖ…3…ØLÒ× e…3…ØLÔ &¥©RªLƒŸ &¥©QªLƒŸ d§ £¢L4¥ N§­eª)ð¢½nª½µÊ÷© »µ ¨¦`©@-eªð­fªÐ©þfª­ ¼µ© ª¢L—£© ª¢­¿µfª`©L ²¥ð.Ð"¶ª  — ¢ ½·ªtªÊÐ÷©ÀQªLѤ© ²¥ð©LÒ¦©·ªL„Íàð€ÀÍàðÀÍà` £¢­Oª´ª­Pªµª­uª³ªÐ d§ £¢Lë¥ N§­eª)ð­nªÐ®oªðÎoªÎnª Œ¦ð8ÉÐ÷ðå` ^¦°f­\ªÃµ©»µ©¼µL¨¦ ^¦°N©Rª Œ¦Ð ü¢©ÍRªðΩLÒ¦Éà)\ª®Zªð ʽ €L³ŸH­¶ªð¦vèð ¦3àÝðh`¥Ù0ùh8` ü¢ [§L³Ÿ ¦ N§©С©»µ©¼µ ¨¦­Ãµ`­µª…A­´ª…@` «­ÅµÉðL^¶L’¶êêêꢎõ`© Ð © ЩЩ \ª æ¿­¶ªð¥Ø0¢ §®\ª § ÈŸ Q¨ ^¦®\ª©°lZl^½?ªªŽcª½q©H € ÅŸ®cªèhí`­fª¿µ­hªÀµ­jªÁµ­õ­ĵ¥@Oª¥APª` ¹uª‘@ˆø` ±@™©µÈÀ&Ðö` ŒQªŒRª`©…E ’§Ls§ š§ð ª§Ð ¥@…D¥A…EÐì ±@ÙuªÐãˆö`8`­®Ð  %±@𠪈±@†A…@Š` ±@`­³ªð­´ªÅ@ЭµªÅAðÊ`Mµð )ð ê¢LЦ`8­…@­…A­Wªcª ˜‘@ 8¥@é-‘@H¥AéÈ‘@ªÊhHÈ‘@ŠÈ‘@ªÊhHÈ‘@ÈŠ‘@Îcªðªh8é&È‘@HŠéÈ‘@…Ah…@Lå§H©È‘@È‘@­¶ªð h…t…ph…s…o`h…M…Ëh…L…Ê`¥9ÍðVª¥8Uª­…8­…9¥7ÍðTª¥6Sª­…6­…7`INIÔLOAÄSAVÅRUÎCHAIÎDELETÅLOCËUNLOCËCLOSÅREAÄEXEÃWRITÅPOSITIOÎOPEÎAPPENÄRENAMÅCATALOÇMOÎNOMOÎPR£IN£MAXFILEÓFÐINÔBSAVÅBLOAÄBRUÎVERIFÙ!p p¡p p p p p p`" t""#x"p0p@p@€@€@p@!y q q pÖÄÓÌÒÂÁÃÉÏ@ À þÿÿÿÿÿ LANGUAGE NOT AVAILABLÅRANGE ERROÒWRITE PROTECTEÄEND OF DATÁFILE NOT FOUNÄVOLUME MISMATCÈI/O ERROÒDISK FULÌFILE LOCKEÄSYNTAX ERROÒNO BUFFERS AVAILABLÅFILE TYPE MISMATCÈPROGRAM TOO LARGÅNOT DIRECT COMMANÄ$3>L[dmx„˜ª»-˜ðýýô (  þÐÈÅÌÌÏ                                                       „@–ÐÌÅÓÏÆÔè·»³»´À~³!«¬W¬o¬*­—­î¬õ¬9¬­®­~³~³‰¬•¬†¬’¬~³~³½¬É¬º¬Æ¬~³àð¢Ž_ªºŽ›³ j®­»µÉ ° ª½ÊªH½ÉªH`Lc³ `£L³ Ü«©ãµ®¾µ­½µÐàÐèèµŽéµ É±^Žœ³®_ª½ ©®œ³J° ­QªÉÀÐL_³Ls³©è´©ç´Žœ³ D²®œ³Ç´ÒµÔµ­ñµÆ´ÑµÓµ­ÂµÈ´ 7° ¯ Ö· :¯®œ³©ŵ½Æ´Ñµ½Ç´Òµ½È´Âµöµ½ç´îµ½è´ïµŽÙµ©ÿàµáµ­â³Úµ`êꩪѵèà-Ðø­¿µIÿùµ­Àµøµ­Áµ ªŽ÷µ©úµ` ¯ 4¯ ò©-Õµð! ÷¯© °8ÎصÐ÷®Ùµ­îµç´­ïµè´ 7°L³ («­öµ0+­½µ…B­¾µ…C®œ³ ² 7°L³­¼µÉ° ª½æªH½åªH`Lg³L{³­öµ0ø­¼µÉ°î ª½òªH½ñªH` ³ ¨¬ÃµL³ ³ µ± ¨¬H ¢± h‘BL³¶ ¶°° ±BH [± ”±h`Lo³ ³­Ãµ Ú¬L³ ³ ¢± ±B Ú¬ µ±LʬH ¶°h‘B©@ ÕµÕµ [±L”±©€ž³Ð©ž³ («®œ³½È´) ž³È´ 7°L³ ³L³ `£ ¶°°ïîäµÐöîåµL­ («®œ³½È´L{³®œ³½Æ´Ñµæ´©ÿÆ´¼Ç´ŒÒµ 7° ^¯°* ¯  Œœ³±B0 ð HȱB¨h ‰­¬œ³ÈÈÐç­Óµ¬Ôµ ‰­8°Ñ û¯L³8 ݲ©¢ðµÊú` Ü«©ÿùµ ÷¯©³ /® /®¢ ½¯³ íýÊ÷†E­ö·…D B® iº /® °°]¢Žœ³½Æ´ðS0J  ½È´ ª˜ íý½È´)  °ˆÐú¹§³ íý©  íý½ç´…D½è´…E B®©  íýèè蠽ƴ íýèˆö /® 0²§°žL³© íýγÐ ý©³` ©H¥DÙ¤³ù¤³…D¥Eé…EhiHLG®h ° íýˆÛ` ¯ ŒÅµ±B™ÑµÈÀ-Ðö` ¯ ¹Ñµ‘BÈÀ-Ðö` Ü«© X°­ùµIÿÁ³©볩ì³¢8©»³èÐú¢ àŒð ¹ ³ó³èˆöàDÐì¢HÐè û¯¢Š»´èÐú E°©¬ð³ˆˆì·¼´Œ½´ÈŒí·© X°¬½´ˆ0Ðì˜ðæ · J·L³¢ð¢Ð¢½Çµ…B½Èµ…C`,Õµp` 䯩 R°©¿-ÕµÕµ`­Õµ0` K¯© R°©-ÕµÕµ`­Éµð·­Êµñ·®Óµ¬Ôµ` 4¯ K¯ ¯(° ®Ñµ¬ÒµLµ¯ ±BðªÈ±B¨Lµ¯­»µÉð8` D² ‘BHˆ­ñµ‘BH :¯ Ö· ­Þµ‘BÈ­ßµ‘Bhªh¨©Ð©ŽÓµŒÔµ R° ±Bܵmڵ޵ȱBݵm۵ߵ` 䯩LR°¬Ëµ­ÌµŒð·ñ·®Öµ¬×µ`©Ð©¬ÃªŒð·¬ÄªŒñ·®úµ LR° E°(°¬½³®¼³Ð ®¼´Ð8`¬½´Ž—³Œ˜³© R°` E°®—³¬˜³©LR°­Åªð·­Æªñ·`Žì·Œí·ô·ÉÐ ÕµÕµ­ùµIÿë·­÷µé·­øµê·­âµò·­ãµó·©è·¬Áª­Âª µ·­ö·¿µ©ÿë·°`­õ· É ð Éð ˜L…³­äµÍàµÐ­åµÍáµðf ¯­åµÍݵЭäµÍܵ­åµÍߵЭäµÍÞµ ^¯×`8­äµíܵ i ¨ ¯±BЭ»µÉð8` 4±L ±ÖµÈ±B×µ ܯ­äµàµ­åµáµ ¯¬æµ`Œ³ D²¬³È‘B×µˆ­ñµ‘BÖµ ¯ Ö·©À ÕµÕµ`®êµŽ½µ®ëµŽ¾µ®ìµ¬íµŽ¿µŒÀµèÐÈÌéµÐìèµÐ ¢ îêµÐî뵎쵌íµ`îæµÐîäµÐîåµ`¬Ãµ®Äµ„B†CîõÐîĵ`¬ÁµÐ®ÂµðεÎÁµ`L³ ÷¯­Ãµ…B­Äµ…C©³©Øµîص °°Q¢Žœ³½Æ´ð0" èèè±BÝÆ´Ð ÈÀÐ󮜳` 0²Û°Ï¬³ÐÁ¬³Ðï èèè±BÆ´ÈÀÐõ®œ³8`­œ³i#ªàõ`©¬³Ð—Lw³­ñµð!Îðµ0¢>ñµÊÐúðîîµÐîïµ­ðµ`©ñµ©ž³ ÷¯­ë³mì³ð ÍﳩÿÐ ­ž³Ð7©ž³ì³ië³ñµ¨ ¨¢¹ö³ñµð8©™ö³ˆÊÐî½ û¯­ð³ðµÐ‰Lw³­ñµÐ`H ÷¯¬ðµh ݲ©ñµLû¯¢ü~ö´èÐúÈÌð³Ðò ¨ð¢½ñµö³™ö³ˆÊÐó`­½µæµêµ­¾µäµëµ©åµ ª­æµJ°Š­åµmèµåµŠméµjnåµnäµn浈ÐÛ­¿µìµmæµæµ­Àµíµmäµäµ©måµåµ`©Ð"©Ð©Ð©Ð©Ð©ÐLí¿ê© Эŵ8ŵ©…H ~®(®›³š` îÒ€ÿÿ dÔÉÁÂÓÒÐÌ ÅÍÕÌÏÖ ËÓÉÄÄþz#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ þuª˜—–`FTHECORRECT(èDOSOK1ƒLDA$B98A‰;BYTESAREN'TTHEREò‰STADOSBYTE+1 ü‰CMP#$B7 ‰BEQDOSOK2 ‰DECSTDDOS*$ DOSOK2ƒJSRMAKETBL‡;MAKECRC-16TABLES.. ‰JSRPARMDFT‡;RESETPARAMETERSTODEFAULTS&8 ‰JSRPARMINT‡;INTERPRETPARAMETERS'L REDRAWƒJSRT Ž‰LDA#0+˜‰STASECPTRˆ;SECPTRALWAYSPAGE-ALIGNED.¬‰STASTDDOSˆ;ASSUMESTANDARDDOSINITIALLY$¶‰LDA$B92E‰;SAVECONTENTSOFDOS À‰STADOSBYTE‡;CHECKSUMBYTES ʉCMP#$13-Ô‰BEQDOSOK1ˆ;ANDDECREMENTSTDDOS(MAKING+Þ‰DECSTDDOSˆ;ITNONZERO)I‚.DA#5,#0,#1,#5,#1,#0,#0,#0‚;DEFAULTPARMVALUES4*À9->*START-MAINPROGRAMH*À9-RSTART„CLD;BINARYMODE\‰JSR$FE84‰;NORMALTEXT&f‰JSR$FB2F‰;TEXTMODE,FULLWINDOW#p‰JSR$FE89‰;INPUTFROMKEYBOARD'z‰JSR$FE93‰;OUTPUTTO40-COLSCREENMANYKEY‚.EQ34Œ;__ANYKEY:_"²MDONT„.EQ36Œ;<-DONOTCHANGE¼MABOUTƒ.EQ38Œ;ABOUTADT...%ÆMTEST„.EQ40Œ;TESTINGDISKFORMAT*ÐMPCANSƒ.EQ42Œ;AWAITINGANSWERFROMPCäÀ:* ø‰.OR$803ý‰.TFADT.SS' ‰JMPSTART‰;SKIPDEFAULTPARAMETERS< DEFAULTQ20Œ;NONSENSEFROMPC'lMNOT16ƒ.EQ22Œ;NOTA16SECTORDISKvMERRORƒ.EQ24Œ;ERROR:FILE_,€MCANT„.EQ26Œ;|CAN'TBEOPENED.…(|=CR)$ŠMEXISTS‚.EQ28Œ;|ALREADYEXISTS.)”MNOT140‚.EQ30Œ;|ISNOTA140KIMAGE.'žMFULL„.EQ32Œ;|DOESN'TFITONDISK.¨INPROMPT-&MDIRCON‚.EQ8;CONTINUEDDIRECTORYPROMPT+0MDIREND‚.EQ10Œ;ENDOFDIRECTORYPROMPT$:MFRECVƒ.EQ12Œ;FILETORECEIVE:_!DMFSENDƒ.EQ14Œ;FILETOSEND:_-NMRECV„.EQ16Œ;RECEIVINGFILE_„(_=SPACE)XMSEND„.EQ18Œ;SENDINGFILE_$bMCONFUS‚.EHAR‚.EQ$FD75‰;LINEINPUT%ÌCOUT1„.EQ$FDF0‰;CHARACTEROUTPUT"ÖCROUT„.EQ$FD8E‰;OUTPUTRETURNê*MESSAGESþMTITLEƒ.EQ0;TITLESCREEN.MCONFIG‚.EQ2;CONFIGURATIONTOPOFSCREEN1MCONFG2‚.EQ4;CONFIGURATIONBOTTOMOFSCREENMPROMPT‚.EQ6;MA$32‹;INVERSEFLAG*†CLREOLƒ.EQ$FC9C‰;CLEARTOENDOFLINE,CLREOPƒ.EQ$FC42‰;CLEARTOENDOFSCREEN&šHOME….EQ$FC58‰;CLEARWHOLESCREEN#¤TABV….EQ$FB5B‰;SETBASLFROMA$®VTAB….EQ$FC22‰;SETBASLFROMCV$¸RDKEY„.EQ$FD0C‰;CHARACTERINPUT!ÂNXTCT2000-8FFF(28KB)+,CRCTBLL‚.EQ$9000‰;CRCLOWTABLE‰(256B),6CRCTBLH‚.EQ$9100‰;CRCHIGHTABLEˆ(256B)J*MONITORSTUFF*^CH‡.EQ$24‹;CURSORHORIZONTALPOSITION(hCV‡.EQ$25‹;CURSORVERTICALPOSITION#rBASL….EQ$28‹;BASELINEADDRESS |INVFLGƒ.EQ(2B).ÒSECPTRƒ.EQ$8Œ;POINTERTOSECTORDATA‚(2B),ÜTRKCNTƒ.EQ$1E‹;COUNTSSEVENTRACKS…(1B)"æCRC†.EQ$EB‹;TRACKCRC-16Œ(2B),ðPREV….EQ$ED‹;PREVIOUSBYTEFORRLEƒ(1B)$úYSAVE„.EQ$EE‹;TEMPSTORAGEŒ(1B)*BIGFILES2"TRACKSƒ.EQ$2000‰;7TRACKSAn*CONSTANTS‚ESC†.EQ$9B‹;ESCAPEKEYŒACK†.EQ$06‹;ACKNOWLEDGE%–NAK†.EQ$15‹;NEGATIVEACKNOWLEDGE/ PARMNUM‚.EQ8;NUMBEROFCONFIGURABLEPARMS>´*ZEROPAGELOCATIONS(ALLUNUSEDBYDOS,BASIC&MONITOR)/ÈMSGPTRƒ.EQ$6Œ;POINTERTOMESSAGETEXT6-BITCRCERRORDETECTION)*-AUTOMATICRE-READSOFBADSECTORS/(*VERSION1.01CORRECTSTHEFOLLOWINGBUGS:62*-INITIALIZATIONROUTINECRASHEDWITHSOMECARDS.<*-FULL8.3MS-DOSFILENAMESNOWACCEPTED)P*VERSION1.00-FIRSTPUBLICRELEASEUSERPUSHESESCAPE#Ä*-FIXESTHE"256RETRIES"BUG'Î*-HASMOREEFFICIENTCRCROUTINES7â*VERSION1.11SETSIOBVOLTO0BEFORECALLINGRWTS+ö*VERSION1.10ADDSTHESEENHANCEMENTS:9*-DIFFERENTIALRLECOMPRESSIONTOSPEEDUPTRANSFER" *-10V*FORMATISCOMPATIBLEWITHRANDYSPURLOCK'S`*APL2EMEMULATOR.t*VERSIONHISTORY:6ˆ*VERSION1.21FILLSUNREADABLESECTORSWITHZEROSœ*VERSION1.20 ¦*-HASACONFIGURATIONMENU °*-HASADIRECTORYFUNCTION.º*-ABORTSINSTANTLYIFhè‰.LISTOFFí*À-ò*APPLEDISKTRANSFER1.21ü*BYPAULGUERTIN*GUERTINP@IRO.UMONTREAL.CA*OCTOBER13TH,1994*DISTRIBUTEFREELY$*À-.*-B*THISPROGRAMTRANSFERSA16-SECTORDISK.L*TOA140KMS-DOSFILEANDBACK.THEFILE                                   ALUE´‰LDAPARMSIZ,X ¾‰SBC#1ȉSTAPARMS,XÒLEFTOKƒJMPREFRESHæNOTLEFT‚CMP#$95ð‰BNENOTRGT$ú‰LDAPARMS,X‡;RIGHTARROWPUSHED$‰ADC#0Œ;INCREMENTCURRENTVALUE‰CMPPARMSIZ,X‰BCCRIGHTOK "‰LDA#0,RIGHTOK‚STAPARMS,X6‰JMPRHOWM1'F*À-SECONDPART:CHANGEVALUESÀ-+ZGETCMDƒLDA$C000‰;WAITFORNEXTCOMMANDd‰BPLGETCMDn‰BIT$C010(x‰LDXCURPARM‡;CURRENTPARAMETERINX Œ‰CMP#$88–‰BNENOTLEFT# ‰DECPARMS,X‡;LEFTARROWPUSHED(ª‰BPLLEFTOKˆ;DECREMENTCURRENTVTCURRENTLINEĉINXΉCPX#PARMNUM؉BCCNXTLINE‡;LOOP8TIMES+ì‰LDASTDDOSˆ;IFNON-STANDARDDOS,WRITE*ö‰BEQGETCMDˆ;"DONOTCHANGE"ONSCREEN)‰LDA#9Œ;NEXTTOTHECHECKSUMSOPTION ‰JSRTABV ‰LDY#23 ‰STYCH(‰LDY#MDONT2‰JSRSLOOPLENDPRTƒLDA#$A0V‰JSRCOUT1`‰LDA#$FFŠ;BACKTONORMALj‰STAINVFLGtENDVALƒDEX(~‰BPLVALLOOP‡;PRINTREMAININGVALUES’‰STYYSAVE‰;CLREOLUSESY&œ‰JSRCLREOLˆ;REMOVEGARBAGEATEOL¦‰JSRCROUT°‰LDYYSAVE(º‰LDXLINECNT‡;INCREMEN‰CMPCURPARM‡;THENPRINTVALUEININVERSE'Þ ‰BNEPRTVALˆ;ELSEPRINTITNORMALLY è ‰LDA#$3Fò ‰STAINVFLG/PRTVALƒLDA#$A0Š;SPACEBEFORE&AFTERVALUE‰JSRCOUT1PRTLOOP‚INY;PRINTVALUE$‰LDAPARMTXT,Y.‰BEQENDPRT8‰JSRCOUT1B‰JMPPRTf ‰TAX;STARTINGWITHTHELASTONEp ‰DEX1„ VALLOOP‚CPXCURVALˆ;XEQUALTOCURRENTVALUE?Ž ‰BEQPRINTIT‡;YES,PRINTIT˜ SKIPCHR‚INY;NO,SKIPIT¢ ‰LDAPARMTXT,Y¬ ‰BNESKIPCHR¶ ‰BEQENDVAL5Ê PRINTIT‚LDALINECNT‡;IFWE'REONTHEACTIVELINE,-Ô ;OFFSETINTOPARAMETERTEXT* NXTLINE‚STXLINECNT‡;SAVECURRENTLINE ‰LDA#15 * ‰STACH4 ‰CLC0> ‰LDAPARMSIZ,X…;GETCURRENTVALUE(NEGATIVE:*H ‰SBCPARMS,X‡;LASTVALUEHASCURVAL=0)R ‰STACURVAL1\ ‰LDAPARMSIZ,X…;XWILLBEEACHPOSSIBLEVALUE$M-1„;SAVEPREVIOUSPARAMETERS*ž SAVPARM‚LDAPARMS,Y‡;INCASEOFESCAPE¨ ‰STAOLDPARM,Y² ‰DEY¼ ‰BPLSAVPARM'Ð *À-FIRSTPART:DISPLAYSCREENÀ-0ä REFRESH‚LDA#3Œ;FIRSTPARAMETERISONLINE3 î ‰JSRTABVø ‰LDX#0Œ;PARAMETERNUMBER) ‰LDY#$FFŠJMPPUTCŠ;ESCAPE,SEND00ANDRETURN: *À9- D *CONFIG-ADTCONFIGURATIONN *À9-!X CONFIGƒJSRHOMEŠ;CLEARSCREEN,b ‰LDY#MCONFIG†;SHOWCONFIGURATIONSCREENl ‰JSRSHOWM1v ‰LDY#MCONFG2/€ ‰JSRSHOWMSG‡;IN2PARTSBECAUSE>256CHARS-” ‰LDY#PARMNUDIREND†;NOMOREFILES,WAITFORKEY ‰JSRSHOWMSG‡;ANDRETURNÌ ‰JSRRDKEYÖ ‰RTS8ê DIRCONT‚LDY#MDIRCON†;SPACETOCONTINUE,ESCTOSTOPô ‰JSRSHOWMSGþ ‰JSRRDKEY, ‰EOR#ESCŠ;NOTESCAPE,CONTINUENORMALLY$ ‰BNEDIR‹;BYSENDINGA"D"TOPC) ‰GETCŠ;PRINTPCOUTPUTEXACTLYAS/h ‰BEQDIRSTOP‡;ITARRIVES(PCISRESPONSIBLE(r ‰ORA#$80Š;FORFORMATTING),UNTIL00| ‰JSRCOUT1‰;RECEIVED† ‰JMPDIRLOOP0š DIRSTOP‚JSRGETCŠ;GETCONTINUATIONCHARACTER&¤ ‰BNEDIRCONT‡;NOT00,THERE'SMORE.¸ ‰LDY#M$B98Að ‰JMP$3D0Š;ANDQUITTODOS *À9-2 *DIR-GETDIRECTORYFROMTHEPCANDPRINTIT:" *PCSENDS0,1AFTERPAGES1..N-1,0,0AFTERLASTPAGE, *À9-6 DIR†JSRHOMEŠ;CLEARSCREEN%@ ‰LDA#"D"Š;SENDDIRCOMMANDTOPC J ‰JSRPUTC0^ DIRLOOP‚JSR‚ ‰LDY#MABOUT‡;YES,SHOWMESSAGE,WAIT%Œ ‰JSRSHOWMSG‡;FORKEY,ANDRETURN– ‰JSRRDKEY  ‰JMPMAINLUP´ KQUIT„CMP#"Q"Š;QUIT?%¾ ‰BNEMAINLUP‡;NOPE,WASABADKEY0È ‰LDADOSBYTE‡;YES,RESTOREDOSCHECKSUMCODEÒ ‰STA$B92EÜ ‰LDADOSBYTE+1æ ‰STAINE ‰JMPREDRAW2 KCONF„CMP#"C"Š;CONFIGURE? < ‰BNEKABOUTˆ;NOPE,TRYABOUT*F ‰JSRCONFIGˆ;YES,DOCONFIGUREROUTINE*P ‰JSRPARMINT‡;ANDINTERPRETPARAMETERSZ ‰JMPREDRAW-n KABOUTƒCMP#$9FŠ;ABOUTMESSAGE?("?"KEY)x ‰BNEKQUIT‰;NOPE,TRYQUIT)EIVE#° ‰JSRSENDŠ;YES,DOSENDROUTINEº ‰JMPMAINLUPÎ KRECV„CMP#"R"Š;RECEIVE?Ø ‰BNEKDIRŠ;NOPE,TRYDIR)â ‰JSRRECEIVE‡;YES,DORECEIVEROUTINEì ‰JMPMAINLUP KDIR…CMP#"D"Š;DIR?# ‰BNEKCONF‰;NOPE,TRYCONFIGURE! ‰JSRDIR‹;YES,DODIRROUTITLE‰;DRAWTITLESCREEN*` MAINLUP‚LDY#MPROMPT†;SHOWMAINPROMPT%j ‰JSRSHOWMSG‡;ATBOTTOMOFSCREENt ‰JSRRDKEY‰;GETANSWER#~ ‰AND#$DFŠ;CONVERTTOUPPERCASE,ˆ MOD0…BIT$C088‰;CLEARSSCINPUTREGISTERœ ‰CMP#"S"Š;SEND?!¦ ‰BNEKRECV‰;NOPE,TRYREC'SAPROBLEM‰JSRTITLE‰;CLEARSTATUS ‰LDXDIRECTN*‰LDYTFRTBL,X'4‰JSRSHOWMSG‡;SHOWTRANSFERMESSAGE#HSHOWFNƒLDA#2Œ;ANDADDFILENAMER‰STAMSGPTR+1 \‰LDA#0f‰STAMSGPTRp‰TAY,z‰JMPMSGLOOP‡;ANDRETURNTHROUGHSHOWMSG"ŽPCERROR‚PHOADACCWITH"R"OR"S"ž‰ADCDIRECTN¨‰JSRPUTCŠ;ANDSENDTOPC ²‰LDX#0*¼FNLOOPƒLDA$200,Xˆ;SENDFILENAMETOPC ƉJSRPUTCЉBEQGETANSˆ;STOPATNULLÚ‰INXä‰BNEFNLOOP/øGETANSƒJSRGETCŠ;ANSWERFROMPCSHOULDBE0#‰BNEPCERROR‡;THERECCESSFUL$0‰LDY#MNOT16‡;NOT16-SECTORDISK:‰JSRSHOWMSG D‰LDY#MANYKEY†;APPENDPROMPTN‰JSRSHOWM1X‰JSRAWBEEPb‰JSRRDKEY‰;WAITFORKEYl‰JMPABORT‰;ANDABORT1€DISKOKƒLDY#MPCANS‡;"AWAITINGANSWERFROMPC"Š‰JSRSHOWMSG'”‰LDA#"R"Š;LDISK"¸‰JSRSHOWMSG,‰LDA#TRACKS/$100‚;READTRACK1SECTOR10̉STAIOBBUF+1†;TOSEEIFTHERE'SA16-SECTORÖ‰LDA#1Œ;DISKINTHEDRIVEà‰STAIOBCMDê‰STAIOBTRKô‰STAIOBSECþ‰LDA#IOB/$100 ‰LDY#IOB ‰JSR$3D9 ‰BCCDISKOKˆ;READSUON(0=RECV,1=SEND)J‰LDYPRMPTBL,XT‰JSRSHOWMSG‡;ASKFILENAME^‰LDX#0Œ;GETANSWERAT$200h‰JSRNXTCHARr‰LDA#0Œ;NULL-TERMINATEIT|‰STA$200,X†‰TXA‰BNEFNAMEOK$š‰JMPABORT‰;ABORTIFNOFILENAME*®FNAMEOK‚LDY#MTESTˆ;"TESTINGTHEAVE>=48KRAM?܉RTS;(YES)/ðSPDTXTƒ.AS-"‚003002100420084006900291"-úBPSCTRL‚.DA#$16,#$18,#$1A,#$1C,#$1E,#$1F(TRYTBLƒ.DA#0,#1,#2,#3,#4,#5,#10,#99"*À9-+,*GETNAME-GETFILENAMEANDSENDTOPC6*À9-7@GETNAME‚STXDIRECTN‡;TFRDIRECTI‰BPLTRYLUP(Œ‰LDX#0Œ;IFPCKSUMIS'NO',WEPATCH&–‰LDY#0Œ;DOSTOIGNOREADDRESSAND% ‰LDAPCKSUMˆ;DATACHECKSUMERRORSª‰BNERWTSMOD´‰LDXDOSBYTE+1¾‰LDYDOSBYTE1ÈRWTSMOD‚STX$B98A‰;ISTHEREANAPPLEIITODAY,Ò‰STY$B92E‰;THATDOESN'THNOWCOPYö‰TAY;FIVECHARACTERSINTO‰LDX#4Œ;TITLESCREEN PUTSPDƒLDASPDTXT,Y‰STAMTSPD,X‰INY(‰DEX2‰BPLPUTSPD&F‰LDY#1Œ;CONVERTRETRIESFROM0..7'PTRYLUPƒLDXPRETRY,Y†;TO0..5,10,128Z‰LDATRYTBL,Xd‰STAREALTRY,Yn‰DEYxˆ‰STXMOD0+1ˆ;SELF-MODSFOR$C088+S0’‰STXMOD2+1ˆ;INMAINLOOP%œ‰STXMOD4+1ˆ;ANDINGETCANDPUTC¦‰INX'°‰STXMOD1+1ˆ;SELF-MODSFOR$C089+S0!º‰STXMOD3+1ˆ;INGETCANDPUTCΉTYA;GETSPEED(0..5)؉ASLâ‰ASL'ì‰ADCPSPEEDˆ;5*SPEEDINY,‰ASL$‰ASL.‰ASL8‰ASL;NOW$S0 B‰ADC#$88L‰TAX*V‰LDA#$0BŠ;COMMAND:NOPARITY,RTSON,'`‰STA$C002,X‡;DTRON,NOINTERRUPTS-j‰LDYPSPEEDˆ;CONTROL:8DATABITS,1STOP-t‰LDABPSCTRL,Y…;BIT,BAUDRATEDEPENDSON~‰STA$C003,X‡;PSPEED'..2¬‰STYIOBDRVˆ;STOREINIOB¶‰TYA'À‰ORA#"0"Š;CONVERTTOASCIIANDPUT!ʉSTAMTDRV‰;INTOTITLESCREEN#Þ‰LDYPSSCŠ;GETSSCSLOT#(0..6)è‰INY;NOW1..7ò‰TYA'ü‰ORA#"0"Š;CONVERTTOASCIIANDPUT!‰STAMTSSC‰;INTOTITLESCREEN‰TYA#"0"Š;CONVERTTOASCIIANDPUT!4‰STAMTSLT‰;INTOTITLESCREEN>‰TYAH‰ASLR‰ASL\‰ASLf‰ASL;NOW$S0p‰STAIOBSLTˆ;STOREINIOBz‰ADC#$89Š;NOW$89+S0)„‰STAMOD5+1ˆ;SELF-MODFOR"DRIVESON""˜‰LDYPDRIVEˆ;GETDRIVE#(0..1)¢‰INY;NOW1$¼CURPARM‚.HS00Œ;ACTIVEPARAMETER,ÆCURVALƒ.HS00Œ;VALUEOFACTIVEPARAMETER2ÐOLDPARM‚.BSPARMNUM‡;OLDPARAMETERSSAVEDHEREî*À9-$ø*PARMINT-INTERPRETPARAMETERS*À9-( PARMINT‚LDYPDSLOTˆ;GETSLOT#(0..6)‰INY;NOW1..7 ‰TYA'*‰ORAˆ;RETURNPUSHED,STOPCONFIGURE X‰CMP#ESCb‰BNENOTESC/l‰LDY#PARMNUM-1„;ESCAPEPUSHED,RESTOREOLD8vPARMRST‚LDAOLDPARM,Y…;PARAMETERSANDSTOPCONFIGURE€‰STAPARMS,YŠ‰DEY”‰BPLPARMRSTžENDCFGƒRTS'²LINECNT‚.HS00Œ;CURRENTLINENUMBERD&̉CPX#PARMNUM†;INCREMENTPARAMETERÖ‰BCCDOWNOK à‰LDX#0êDOWNOKƒSTXCURPARMô‰JMPREFRESHNOTDOWN‚CMP#$84‰BNENOTCTLD0‰JSRPARMDFT‡;CTRL-DPUSHED,RESTOREDEFAULT"&NOTESCƒJMPREFRESH‡;PARAMETERS:NOTCTLD‚CMP#$8D.D‰BEQENDCFGEFRESHJNOTRGTƒCMP#$8BT‰BNENOTUP^‰DEX;UPARROWPUSHED"h‰BPLUPOKŠ;DECREMENTPARAMETERr‰LDX#PARMNUM-1|UPOK…STXCURPARM†‰JMPREFRESHšNOTUP„CMP#$8A¤‰BEQISDOWN ®‰CMP#$A0¸‰BNENOTDOWN*ÂISDOWNƒINX;DOWNARROWORSPACEPUSHE;NO,DONEXTBYTE n‰BNESS1‹;LOOPIFMORETODOx‰RTS;ELSERETURNŒSS2†JSRUPDCRC–SS3†INY;ANYMOREBYTES?% ‰BEQSS4‹;NO,ITWAS00UPTOEND&ª‰LDA(SECPTR),Y„;LOOKATNEXTBYTE ´‰CMPPREV&¾‰BEQSS2‹;SAMEASBEFORE,CONTINUE"ÈSS4†TYA;DPREVIOUSCHARACTER(SS1†LDA(SECPTR),Y„;GETBYTETOSEND‰JSRUPDCRCˆ;UPDATECRC(‰TAX;KEEPACOPYINX 2‰SEC;SUBTRACTFROMPREVIOUS <‰SBCPREV!F‰STXPREVŠ;SAVEPREVIOUSBYTEP‰JSRPUTCŠ;SENDDIFFERENCEZ‰BEQSS3‹;WASITAZERO?d‰INY„RTS/œSRCHARƒ.AS-"OI"Š;STATUSCHARACTERS:OUT/IN¦WHAT2DO‚.HS00Ä*À9-,Î*SENDSEC-SENDCURRENTSECTORWITHRLE"Ø*CRCISCOMPUTEDBUTNOTSENTâ*À9-'ìSENDSEC‚LDY#0Œ;STARTATFIRSTBYTEö‰STYCRC‹;ZEROCRC‰STYCRC+1$ ‰STYPREVŠ;NONISHED‰LDATRKCNT&$‰CMP#2Œ;STARTINGLASTTRACK,TURN-.‰BNENOTONEˆ;DRIVEON,EXCEPTINTHELAST8‰LDASAVTRKˆ;BLOCK B‰CMP#$1CL‰BEQNOTONEVMOD5…BIT$C089jNOTONEƒDECTRKCNTt‰BEQSREND(~‰JMPS7TRK‰;LOOPUNTIL7TRACKSDONE ˆSRENDPCCRC+1¢‰BEQSROKAY/¶RECVERR‚LDA#NAKŠ;CRCERROR,ASKFORRESENDÀ‰STAMESSAGEʉBNES7SEC Þ*À-BACKTOCOMMONLOOPÀ-4òSROKAYƒJSRCHRREST‡;RESTOREPREVIOUSSTATUSCHARü‰INCSECPTR+1†;NEXTSECTOR‰DECIOBSEC"‰BPLS7SEC‰;TRACKNOTFIVSECTOR ‰JSRPUTC *‰JSRRECVSEC‡;RECEIVESECTOR 4‰JSRGETC>‰STAPCCRC‰;ANDCRC H‰JSRGETCR‰STAPCCRC+1"\‰JSRUNDIFFˆ;UNCOMPRESSSECTOR#p‰LDACRC‹;CHECKRECEIVEDCRCVSz‰CMPPCCRC‰;CALCULATEDCRC„‰BNERECVERRŽ‰LDACRC+1˜‰CMPMANYKEY†;APPENDPROMPT”‰JSRSHOWM1ž‰JSRAWBEEP¨‰JSRRDKEY‰;WAITFORKEY²‰JMPABORT‰;ANDABORTÆ*À-RECEIVINGÀ-#ÚDORECVƒLDY#0Œ;CLEARNEWSECTORä‰TYAîCLRLOOP‚STA(SECPTR),Yø‰INY‰BNECLRLOOP,‰LDAMESSAGE‡;SENDRESULTOFPREPUTC&‰LDACRC+1 0‰JSRPUTC#:‰JSRGETCŠ;GETRESPONSEFROMPCD‰CMP#ACKŠ;ISITACK?N‰BEQSROKAYˆ;YES,ALLRIGHTX‰CMP#NAKŠ;ISITNAK?b‰BEQS7SEC‰;YES,SENDAGAIN%v‰LDY#MCONFUS†;SOMETHINGISWRONG€‰JSRSHOWMSG‡;TELLBADNEWS Š‰LDY#O0¤‰STAIOBSEC-®S7SEC„LDXWHAT2DO‡;PRINTSTATUSCHARACTER¸‰LDASRCHAR,X‰JSRCHROVER)Ö‰LDAWHAT2DO‡;EXECUTESENDORRECEIVEà‰BNEDORECVˆ;ROUTINEô*À-SENDINGÀ-%‰JSRSENDSEC‡;SENDCURRENTSECTOR‰LDACRC‹;FOLLOWEDBYCRC ‰JSRRECEIVE(X=1)7TRACKSJ*À9-5TSR7TRKƒSTXWHAT2DO‡;X=0FORSEND,X=1FORRECEIVE^‰LDA#7Œ;DO7TRACKSh‰STATRKCNT$r‰LDA#TRACKS/$100‚;STARTINGHERE|‰STASECPTR+1'†‰JSRHOMECUR‡;RESETCURSORPOSITION,šS7TRK„LDA#$F‹;COUNTSECTORSFROMFTˆ;READ7TRACKSFROMDISK Ò‰LDX#0$܉JSRSR7TRKˆ;SEND7TRACKSTOPCæ‰LDAIOBTRK%ð‰CMP#$23Š;REPEATUNTILTRACK$23ú‰BCCSENDLUP‰LDAERRORS$‰JSRPUTCŠ;SENDERRORFLAGTOPC‰JMPAWBEEPˆ;BEEPANDEND6*À9-3@*SR7TRK-SEND(X=0)ORCTION=APPLE-->PC/n‰JSRGETNAME‡;ASKFORFILENAME&SENDTOPCx‰LDA#ACKŠ;SENDINITIALACK ‚‰JSRPUTCŒ‰LDA#0Œ;STARTONTRACK0–‰STAIOBTRK# ‰STAERRORSˆ;NODISKERRORSYET*´SENDLUP‚STASAVTRKˆ;SAVECURRENTTRACK ¾‰LDX#1(ȉJSRRW7TRK‰LDAIOBTRK%ì‰CMP#$23Š;REPEATUNTILTRACK$23ö‰BCCRECVLUP‰LDAMESSAGE‡;SENDLASTACK ‰JSRPUTC‰LDAERRORS$‰JSRPUTCŠ;SENDERRORFLAGTOPC(‰JMPAWBEEPˆ;BEEPANDENDF*À9-P*SEND-MAINSENDROUTINEZ*À9-'dSEND…LDX#1Œ;DIREAGEALWAYSACK~‰STAMESSAGEˆ‰LDA#0Œ;STARTONTRACK0’‰STAIOBTRK#œ‰STAERRORSˆ;NODISKERRORSYET*°RECVLUP‚STASAVTRKˆ;SAVECURRENTTRACK º‰LDX#1)ĉJSRSR7TRKˆ;RECEIVE7TRACKSFROMPC ΉLDX#2'؉JSRRW7TRKˆ;WRITE7TRACKSTODISKâRT‰;ANDRESTARTDIRECTN‚.HS00PRMPTBL‚.DA#MFRECV,#MFSEND$TFRTBLƒ.DA#MRECV,#MSENDB*À9-$L*RECEIVE-MAINRECEIVEROUTINEV*À9-*`RECEIVE‚LDX#0Œ;DIRECTION=PC-->APPLE/j‰JSRGETNAME‡;ASKFORFILENAME&SENDTOPC%t‰LDA#ACKŠ;1STMESSA;SAVEERRORNUMBER%˜‰LDY#MERROR‡;SHOW"ERROR:FILE"¢‰JSRSHOWMSG‡;SHOWFILENAME¬‰JSRSHOWFN¶‰PLAÀ‰TAY#ʉJSRSHOWM1ˆ;SHOWERRORMESSAGE Ô‰LDY#MANYKEY†;APPENDPROMPTÞ‰JSRSHOWM1è‰JSRAWBEEPò‰JSRRDKEY‰;WAITFORKEYü‰JMPABO‰DEX;HIGHBITWASCLEAR,DONOTHING:%‰BNECRCBIT1D%‰BEQCRCSAVE1N%CRCFLIP‚EOR#$21Š;HIGHBITWASSET,FLIPBITSX%‰STACRC‹;0,5,AND12b%‰LDACRC+1 l%‰EOR#$10v%‰STACRC+1€%‰DEXŠ%‰BNECRCBIT!ž%‰LDACRC‹;STORECRCINTABLES¨%CRCSAVE‚STARTS®$*À9-"¸$*MAKETBL-MAKECRC-16TABLESÂ$*À9-Ì$MAKETBL‚LDX#0 Ö$‰LDY#0!à$CRCBYTE‚STXCRC‹;LOWBYTE=0!ê$‰STYCRC+1‰;HIGHBYTE=INDEXþ$‰LDX#8Œ;FOREACHBIT%CRCBITƒLDACRC%CRCBIT1‚ASL;SHIFTCRCLEFT%‰ROLCRC+1&%‰BCSCRCFLIP(0%ABVŠ;VALIDATEBASL,Hæ#CHROVER‚LDYCHð#‰STA(BASL),Yú#‰RTS$*À9-6"$*UPDCRC-UPDATECRCWITHCONTENTSOFACCUMULATOR,$*À9-6$UPDCRCƒPHA@$‰EORCRC+1J$‰TAX T$‰LDACRC^$‰EORCRCTBLH,Xh$‰STACRC+1r$‰LDACRCTBLL,X |$‰STACRC†$‰PLA$‰#CHRSAVE‚LDYCH%n#‰LDA(BASL),Y†;SAVENEWCHARACTERx#‰STASAVCHR‚#‰RTS–#ADVANCE‚INCCVŒ;CURSORDOWN  #‰LDACVª#‰CMP#21‹;STILLINDISPLAY? ´#‰BCCNOWRAPˆ;YES,WE'REDONE)¾#TOPNEXT‚INCCHŒ;NO,GOTOTOPOFNEXTÈ#‰LDA#5Œ;COLUMN$Ò#NOWRAPƒJMPT#HOMECUR‚LDYSAVTRK#‰INY;CURSORON0THCOLUMN #‰STYCH#(#‰JSRTOPNEXT‡;TOPOF1STCOLUMN$2#‰JMPCHRSAVE‡;SAVE1STCHARACTER-F#CHRREST‚LDASAVCHRˆ;RESTOREOLDCHARACTER-P#CHRADVƒJSRCHROVER‡;OVERWRITESTATUSCHAR Z#‰JSRADVANCE‡;ADVANCECURSORd‰RTSÄ"*À9-3Î"*HOMECUR-RESETCURSORPOSITIONTO1STSECTOR:Ø"*CHRREST-RESTOREPREVIOUSCONTENTS&ADVANCECURSOR2â"*CHRADV‚-WRITENEWCONTENTS&ADVANCECURSOR#ì"*ADVANCE-JUSTADVANCECURSOR'ö"*CHROVER-JUSTWRITENEWCONTENTS#*À9- ‚.HS00+$"REALTRY‚.HSÀ0Š;REALNUMBEROFRETRIESB"*À9-$L"*CLRSECT-CLEARCURRENTSECTORV"*À9-1`"CLRSECT‚LDAIOBBUF+1†;POINTTOCORRECTSECTORj"‰STACSLOOP+2t"‰LDY#0Œ;ANDFILL256ZEROS~"‰TYAˆ"CSLOOPƒSTA$FF00,Y’"‰INYœ"‰BNECSLOOP¦"INCIOBBUF+1†;NEXTPAGEINBUFFERÊ!‰DECIOBSECˆ;NEXTSECTOR)Ô!‰BPLNEXTSEC‡;LOOPUNTILENDOFTRACKÞ!‰INCIOBTRKˆ;NEXTTRACK)è!‰DECTRKCNTˆ;LOOPUNTIL7TRACKSDONEò!‰BNENEXTTRKü!‰RTS3"RWCHARƒ.AS-"RW"Š;STATUSCHARACTERS:READ/WRITE"RETRIES,z!‰DECRETRIES‡;ERROR:SOMEPATIENCELEFT? „!‰BPLRWAGAIN‡;YES,TRYAGAIN*Ž!‰ROLERRORSˆ;NO,SETERRORSTONONZERO(˜!‰JSRCLRSECT‡;FILLSECTORWITHZEROS*¢!‰LDA#'*'Š;ANDPUTINVERSE*INSTATUS4¶!SECTOKƒJSRCHRADVˆ;PRINTSECTORSTATUS&ADVANCE&À!‰PEPUSHED?*!‰BNERWCONTˆ;NO,CONTINUE4!‰JMPSABORTˆ;YES,ABORT6H!RWCONTƒLDA#IOB/$100…;GETIOBADDRESSINREGISTERS R!‰LDY#IOB'\!‰JSR$3D9Š;CALLRWTSTHROUGHVECTOR)f!‰LDA#"."Š;CARRYCLEARMEANSNOERROR*p!‰BCCSECTOKˆ;NOERROR:PUT.INSTATUSRF(READIS!Ð ‰STAIOBSECˆ;FASTERTHISWAY),Ú NEXTSEC‚LDXIOBCMDˆ;GETMAXRETRIESFROM$ä ‰LDAREALTRY-1,Xƒ;PARAMETERDATAî ‰STARETRIES+ø ‰LDARWCHAR-1,X„;PRINTSTATUSCHARACTER!‰JSRCHROVER%!RWAGAIN‚LDA$C000‰;CHECKKEYBOARD !‰CMP#ESCŠ;ESCAE,CALLSABORTv *À9-2€ RW7TRKƒSTXIOBCMDˆ;X=1FORREAD,X=2FORWRITEŠ ‰LDA#7Œ;COUNT7TRACKS” ‰STATRKCNT3ž ‰LDA#TRACKS/$100‚;STARTATBEGINNINGOFBUFFER¨ ‰STAIOBBUF+1'² ‰JSRHOMECUR‡;RESETCURSORPOSITION/Æ NEXTTRK‚LDA#$F‹;STARTATSECTOþ‰ADCPREVŠ;ADDTOBASE ‰JSRUPDCRCˆ;UPDATECRC# ‰STAPREVŠ;THISISTHENEWBASE$ ‰STA(SECPTR),Y„;STOREREALBYTE& ‰INY!0 ‰BNEUDLOOPˆ;REPEAT256TIMES: ‰RTSX *À9-1b *RW7TRK-READ(X=1)ORWRITE(X=2)7TRACKS(l *USESA,X,Y.IFESCAPRC1‹;LOOPIFINDEX<>0†‰RTS;ELSERETURN¤*À9-6®*UNDIFF-‚FINISHRLEDECOMPRESSIONANDUPDATECRC¸*À9-ÂUNDIFFƒLDY#0̉STYCRC‹;CLEARCRCÖ‰STYCRC+1#à‰STYPREVŠ;INITIALBASEISZERO-êUDLOOPƒLDA(SECPTR),Y„;GETNEWDIFFERENCEô‰CLCJSRGETCŠ;GETDIFFERENCE$6‰BEQRC2‹;IFZERO,GETNEWINDEX,@‰STA(SECPTR),Y„;ELSEPUTCHARINBUFFERJ‰INY;ANDINCREMENTINDEX'T‰BNERC1‹;LOOPIFNOTATBUFFEREND^‰RTS;ELSERETURNhRC2†JSRGETCŠ;GETNEWINDEXr‰TAY;INYREGISTER |‰BNEIFFERENCENOTAZEROÒ‰JSRPUTCŠ;SENDNEWADDRESS&܉BNESS1‹;ANDGOBACKTOMAINLOOP$æ‰RTS;ORRETURNIFNOMOREBYTES*À9-;*RECVSEC-RECEIVESECTORWITHRLE(NOTIMETOUNDIFF)*À9-0"RECVSEC‚LDY#0Œ;STARTATBEGINNINGOFBUFFER ,RC1†AS-"NOTA16-SECTORDISK." ¿,‰.HS00Î,MSG13„.AS-"ERROR:"ƒ;INVØ,‰.AS-"FILE" Ý,‰.HS00ì,MSG14„.HS8Dö,‰.AS-"CAN'TBEOPENED." û,‰.HS00 -MSG15„.HS8D-‰.AS-"ALREADYEXISTS." -‰.HS00(-MSG16„.HS8D 2-‰.AS-"ISNOTA140KIMAGE." 7FILETORECEIVE:" [,‰.HS00`,MSG08„.AS-"FILETOSEND:" e,‰.HS00t,MSG09„.AS"RECEIVINGFILE" y,‰.HS00~,MSG10„.AS"SENDINGFILE" ƒ,‰.HS00’,MSG11„.AS-"ERROR:"ƒ;INVœ,‰.AS-"NONSENSEFROMPC." ¡,‰.HS00°,MSG12„.AS-"ERROR:"ƒ;INV"º,‰.‰.AS-"RETURNTOACCEPT,CTRL-DFORDEFAULTS." ,‰.HS006.,MSG04„.AS-"SEND,RECEIVE,DIR,CONFIGURE,QUIT?" 3,‰.HS0018,MSG05„.AS-"SPACETOCONTINUE,ESCTOSTOP:" =,‰.HS00/B,MSG06„.AS-"ENDOFDIRECTORY,TYPESPACE:" G,‰.HS00"V,MSG07„.AS-"" Ï+‰.HS8DÔ+‰.AS-"SSCSPEED" Ù+‰.HS8DÞ+‰.AS-"READRETRIES" ã+‰.HS8Dè+‰.AS-"WRITERETRIES" í+‰.HS8Dò+‰.AS-"USECHECKSUMS" ÷+‰.HS8Dü+‰.AS-"ENABLESOUND" ,‰.HS007,MSG03„.AS-"USEARROWSANDSPACETOCHANGEVALUES," ,‰.HS8D2,‚À0À1222‚"„;INV ‰+‰.HS8DŽ+‰.AS"‚"©;INV:˜+HEXNUMƒ.AS"0123456789ABCDEF0123456789ABCDEF012‚"†;INV +‰.HS8D00)¬+MSG02„.AS-"ADTCONFIGURATION"ƒ;INV±+‰.HS8D8D8D¶+‰.AS-"DISKSLOT" »+‰.HS8DÀ+‰.AS-"DISKDRIVE" Å+‰.HS8DÊ+‰.AS-"SSCSLOT,MSG11,MSG12,MSG13,MSG142 +‰.DAMSG15,MSG16,MSG17,MSG18,MSG19,MSG20,MSG21*+‰.DAMSG22>+MSG01„.AS-"SSC:S"H+MTSSC„.AS-","R+MTSPD„.AS-"ˆ"\+‰.AS-"ADT1.21"ƒ;INVf+‰.AS-"„DISK:S"p+MTSLT„.AS-",D"z+MTDRV„.AS-""+‰.HS8D8D8D„+‰.AS"v*‰STAMSGPTR€*‰LDAMSGTBL+1,YŠ*‰STAMSGPTR+1 ž*‰LDY#0¨*MSGLOOP‚LDA(MSGPTR),Y²*‰BEQMSGEND¼*‰JSRCOUT1Æ*‰INYÐ*‰BNEMSGLOOPÚ*MSGENDƒRTSø**À-MESSAGESÀ-8 +MSGTBLƒ.DAMSG01,MSG02,MSG03,MSG04,MSG05,MSG06,MSG072+‰.DAMSG08,MSG09,MSG10CALLSHOWM1TOSHOWANYWHEREWITHOUTERASING**À9-$*SHOWMSG‚STYYSAVE‰;CLREOPUSESY &*‰LDA#00*‰STACHŒ;COLUMN0:*‰LDA#22‹;LINE22 D*‰JSRTABV#N*‰JSRCLREOPˆ;CLEARMESSAGEAREAX*‰LDYYSAVE3l*SHOWM1ƒLDAMSGTBL,Y†;CALLHERETOSHOWANYWHEREr)‰STA(BASL),Y |)‰INCCV†)‰DEX)‰BPLSHOWSEC&¤)‰LDA#"_"Š;SHOWLINEOFUNDERLINES ®)‰LDX#38‹;ABOVEINVERSETEXT¸)SHOWUND‚STA$500,XÂ)‰DEXÌ)‰BPLSHOWUNDÖ)‰RTSô)*À9-<þ)*SHOWMSG-SHOWNULL-TERMINATEDMESSAGE#YATBOTTOMOF:**SCREEN.‚FTITLESCREEN!ð(‰LDX#15‹;SHOWSECTORNUMBERS ú(‰LDA#5Œ;INDECREASINGORDER)‰STACVŒ;FROMTOPTOBOTTOM)SHOWSEC‚JSRVTAB )‰LDA#$20 ")‰LDY#38,)‰STA(BASL),Y 6)‰LDY#0@)‰STA(BASL),YJ)‰LDAHEXNUM,XT)‰INY^)‰STA(BASL),Y h)‰LDY#37BORTƒJSRAWBEEPˆ;BEEP)n(ABORT„LDX#$FFŠ;POPGOESTHESTACKPTRx(‰TXS‚(‰BIT$C010‰;STROBEKEYBOARDŒ(‰JMPREDRAWˆ;ANDRESTARTª(*À9-´(*TITLE-SHOWTITLESCREEN¾(*À9- È(TITLE„JSRHOMEŠ;CLEARSCREENÒ(‰LDY#MTITLE.Ü(‰JSRSHOWM1ˆ;SHOWTOPPARTOCMP#ESCŠ;ESCAPE=ABORTì'‰BEQSABORT%ö'MOD3…LDA$C089‰;CHECKSTATUSBITS (‰AND#$68 (‰CMP#$8$(‰BNEGETCŠ;INPUTREGEMPTY,LOOP!(MOD4…LDA$C088‰;GETCHARACTER((‰RTSF(*À9-8P(*ABORT-STOPEVERYTHING(CALLSABORTTOBEEPALSO)Z(*À9-d(SAQSABORT%`'MOD1…LDA$C089‰;CHECKSTATUSBITS j'‰AND#$70 t'‰CMP#$10%~'‰BNEPUTC1‰;OUTPUTREGFULL,LOOPˆ'‰PLA!’'MOD2…STA$C088‰;PUTCHARACTERœ'‰RTSº'*À9-<Ä'*GETC-GETACHARACTERFROMSERIALLINE(XYUNCHANGED)Î'*À9-Ø'GETC…LDA$C000â'‰P1„LDY#$80 À&BEEP2„TAX Ê&BEEP3„DEXÔ&‰BNEBEEP3Þ&‰BIT$C030‰;WHAPSPEAKERè&‰DEYò&‰BNEBEEP2ü&NOBEEPƒRTS'*À9-:$'*PUTC-SENDACCOVERTHESERIALLINE(AXYUNCHANGED).'*À9- 8'PUTC…PHAB'PUTC1„LDA$C000L'‰CMP#ESCŠ;ESCAPE=ABORTV'‰BEH&‰RTSf&*À9-,p&*AWBEEP-CUTETWO-TONEBEEP(USESAXY)z&*À9-/„&AWBEEPƒLDAPSOUNDˆ;IFSOUNDOFF,RETURNNOWŽ&‰BNENOBEEP,˜&‰LDA#$80Š;STRAIGHTFROMAPPLEWRITER][-¢&‰JSRBEEP1‰;(CANNIBALISMISTHESINCEREST ¬&‰LDA#$A0Š;FORMOFFLATTERY)¶&BEECRCTBLL,Y²%‰LDACRC+1¼%‰STACRCTBLH,YÆ%‰INYÐ%‰BNECRCBYTE‡;DONEXTBYTEÚ%‰RTSø%*À9-<&*PARMDFT-RESETPARAMETERSTODEFAULTVALUES(USESAX) &*À9-&PARMDFT‚LDX#PARMNUM-1 &DFTLOOP‚LDADEFAULT,X*&‰STAPARMS,X4&‰DEX>&‰BPLDFTLOOP z     Ž ¥ëÍÐ¥ìÍð©Ð’  æ Îþˆ¥ÉÐ ­Éð,‰ÀÆðL³ `ÏÉ „ë„ì„í± D ª8åí†í ¬ ðÈÐí` D Èð±Åíðô˜ ¬ ÐÚ`   ð‘ÈÐö`  ¨Ðï` „ë„ì„í±eí D …í‘ÈÐñ`Ž©…©   ©þ®½ ½ý ? ­ÀÉ›ÐLÖ © ù Ù©® Î æ.  ©* " îÎþÄîýÆи`ÒèÐõ  Ð â ®< ¼? ©…©…¨L3H    h¨ ' " ' “ ýLÙ ¢ Ÿ ©©ý¢ ¥ ¢ ¦ ­ýÉ#ì­ ¬ ­ ¬ L“ ¢ Ÿ © ¬ ©ý¢ ¦ ¢ ¥ ­ýÉ#ì­ ¬ L“ ŽJ ©…© …  ©þ®J ½H ? ­J Ð+ K ¥ë ¬ ¥ì ¬  ÉðLÉðÚ   " ' “ ýLÙ  ˜‘ÈÐû­ ¬ ¬òÈŒû˜ °¬óȘ °o˜ iˆª© À¬ô¹‘ ÀŽSŽ¿ ŽÓ 莵 ŽÊ ˜ mô¨¢¹s qÈÊö ¾õ½— ™ ˆô¢ ­÷Ю¬ŽŠ¹Œ.¹`  °°³ °°²± °°´² °°¸´ °°¶¹°°²¹± cŽ< ¼= ¢ uý©ŠÐLÙ  ( © ©ýþ© ù Ù   " ' “ ýLÙ  * ©Òm< ¬ ¢½ ¬ ðýñß ½yªÊìß ðȹÐúð&­Ý ÍÞ Ð©?…2©  ðýȹð ðýL) ©  ðý©ÿ…2ÊÊ„î œü Žý¤î®Ý èࢭð© [û „$ $ '­Àû,À®Þ ɈÐÞñ½yéñLìɕнñiÝy©ñLìɋРʢŽÞ LìÉŠðÉ Ð èà¢ŽÞ LìÉ„Ð ‡ LìÉðÉ›Ðõ ¹à ™ñˆ÷`¬ñȘ °˜ úi‰>  LØ „þ /û ‰þ “þ©…­.¹ÉðέŠ¹É·ðÎ V ‡ è â    ý)ß,ˆÀÉÓÐ v LHÉÒÐ A LHÉÄÐ ¢LEÉÃÐ Ô è LEÉŸÐ  &  ýLHÉÑе­.¹­Š¹LÐ Xü©Ä ¬  ð € ðýLª  Р   ý`   ýI›ÐÑL¬ Xü  '   ¹ñ™à ˆ÷© [û¢ ÿŽÝ ©…$½y       LEAST1DISKERRORTESCHANGEDBYADT)”/STDDOSƒ.HS00Œ;ZEROIF"STANDARD"DOS'ž/SAVTRKƒ.HS00Œ;FIRSTTRACKOFSEVEN/¨/SAVCHRƒ.HS00Œ;CHAROVERWRITTENWITHSTATUS,²/MESSAGE‚.HS00Œ;SECTORSTATUSSENTTOPC'¼/PCCRC„.HSÀ0Š;CRCRECEIVEDFROMPC0Æ/ERRORSƒ.HS00Œ;NON0IFAT.HSÀ0Š;UNUSED,0/IOBCMDƒ.HS01Œ;COMMAND(1=READ,2=WRITE):/‰.HS00Œ;ERRORCODED/‰.HSFEŒ;ACTUALVOLUMEN/‰.HS60Œ;PREVIOUSSLOTX/‰.HS01Œ;PREVIOUSDRIVE2b/DCT†.HS0001EFD8†;DEVICECHARACTERISTICSTABLEv/*À-MISCÀ--Š/DOSBYTE‚.HSÀ0Š;DOSBYTSFER?(Y)Â.*À-IOBÀ-Ö.IOB†.HS01Œ;IOBTYPEà.IOBSLTƒ.HS60Œ;SLOT*$10ê.IOBDRVƒ.HS01Œ;DRIVEô.‰.HS00Œ;VOLUMEþ.IOBTRKƒ.HS00Œ;TRACK/IOBSECƒ.HS00Œ;SECTOR'/‰.DADCT‹;DEVICECHARTABLEPOINTER,/IOBBUFƒ.DATRACKSˆ;SECTORBUFFERPOINTER&/‰DSLOTƒ.DA#5Œ;DISKSLOT(6)!|.PDRIVEƒ.DA#0Œ;DISKDRIVE(1)†.PSSC….DA#1Œ;SSCSLOT(2)$.PSPEEDƒ.DA#5Œ;SSCSPEED(19200)2š.PRETRYƒ.DA#1,#0‰;READ/WRITEMAXRETRIES(1,0)*¤.PCKSUMƒ.DA#0Œ;USERWTSCHECKSUMS?(Y)0®.PSOUNDƒ.DA#0Œ;SOUNDATENDOFTRAN‰.DA#'0+$80,#0,#'1+$80,#0B.‰.DA#'2+$80,#0,#'3+$80,#0D.‰.DA#'4+$80,#0,#'5+$80,#0F.‰.DA#'1+$80,#'0+$80,#0H.‰.DA#'9+$80,#'9+$80,#0J.‰.AS-"YES" L.‰.HS00N.‰.AS-"NO" P.‰.HS00T.‰.AS-"YES" V.‰.HS00X.‰.AS-"NO" Z.‰.HS00 h.PARMS r.P&.‰.AS-"2400" '.‰.HS00,.‰.AS-"4800" -.‰.HS00..‰.AS-"9600" /.‰.HS000.‰.AS-"19200" 1.‰.HS006.‰.DA#'0+$80,#0,#'1+$80,#08.‰.DA#'2+$80,#0,#'3+$80,#0:.‰.DA#'4+$80,#0,#'5+$80,#0<.‰.DA#'1+$80,#'0+$80,#0>.‰.DA#'9+$80,#'9+$80,#0@.,#0,#'4+$80,#0.‰.DA#'5+$80,#0,#'6+$80,#0 .‰.DA#'7+$80,#0.‰.DA#'1+$80,#0,#'2+$80,#0.‰.DA#'1+$80,#0,#'2+$80,#0.‰.DA#'3+$80,#0,#'4+$80,#0.‰.DA#'5+$80,#0,#'6+$80,#0.‰.DA#'7+$80,#0".‰.AS-"300" #.‰.HS00$.‰.AS-"1200" %.‰.HS00EAL.CA" ›-‰.HS00%ª-MSG21„.AS-"TESTINGDISKFORMAT." ¯-‰.HS00)¾-MSG22„.AS-"AWAITINGANSWERFROMPC." Ã-‰.HS00Ü-*À-PARAMETERSÀ->ð-PARMSIZ‚.DA#7,#2,#7,#6,#8,#8,#2,#2„;#OPTIONSOFEACHPARM%.PARMTXT‚.DA#'1+$80,#0,#'2+$80,#0.‰.DA#'3+$80-‰.HS00F-MSG17„.HS8D P-‰.AS-"DOESN'TFITONDISK." U-‰.HS00d-MSG18„.AS-"‚ANYKEY:" i-‰.HS00!x-MSG19„.AS-"<-DONOTCHANGE" }-‰.HS004Œ-MSG20„.AS-"APPLEDISKTRANSFER1.21…1994-10-13" ‘-‰.HS8D3–-‰.AS-"PAULGUERTIN:GUERTINP@IRO.UMONTRTABV….EQ$FB5B‰;SETBASLFROMA$®VTAB….EQ$FC22‰;SETBASLFROMCV$¸RDKEY„.EQ$FD0C‰;CHARACTERINPUT!ÂNXTCHAR‚.EQ$FD75‰;LINEINPUT%ÌCOUT1„.EQ$FDF0‰;CHARACTEROUTPUT"ÖCROUT„.EQ$FD8E‰;OUTPUTRETURNê*MESSAGESþMTITLEƒ.EQ0;TITLESCREEN.MRHORIZONTALPOSITION(hCV‡.EQ$25‹;CURSORVERTICALPOSITION#rBASL….EQ$28‹;BASELINEADDRESS |INVFLGƒ.EQ$32‹;INVERSEFLAG*†CLREOLƒ.EQ$FC9C‰;CLEARTOENDOFLINE,CLREOPƒ.EQ$FC42‰;CLEARTOENDOFSCREEN&šHOME….EQ$FC58‰;CLEARWHOLESCREEN#¤‹;PREVIOUSBYTEFORRLEƒ(1B)$úYSAVE„.EQ$EE‹;TEMPSTORAGEŒ(1B)*BIGFILES2"TRACKSƒ.EQ$2000‰;7TRACKSAT2000-8FFF(28KB)+,CRCTBLL‚.EQ$9000‰;CRCLOWTABLE‰(256B),6CRCTBLH‚.EQ$9100‰;CRCHIGHTABLEˆ(256B)J*MONITORSTUFF*^CH‡.EQ$24‹;CURSOEPARMS>´*ZEROPAGELOCATIONS(ALLUNUSEDBYDOS,BASIC&MONITOR)/ÈMSGPTRƒ.EQ$6Œ;POINTERTOMESSAGETEXT(2B).ÒSECPTRƒ.EQ$8Œ;POINTERTOSECTORDATA‚(2B),ÜTRKCNTƒ.EQ$1E‹;COUNTSSEVENTRACKS…(1B)"æCRC†.EQ$EB‹;TRACKCRC-16Œ(2B),ðPREV….EQ$EDRASHEDWITHSOMECARDS.<*-FULL8.3MS-DOSFILENAMESNOWACCEPTED)P*VERSION1.00-FIRSTPUBLICRELEASEn*CONSTANTS‚ESC†.EQ$9B‹;ESCAPEKEYŒACK†.EQ$06‹;ACKNOWLEDGE%–NAK†.EQ$15‹;NEGATIVEACKNOWLEDGE/ PARMNUM‚.EQ8;NUMBEROFCONFIGURABLTS+ö*VERSION1.10ADDSTHESEENHANCEMENTS:9*-DIFFERENTIALRLECOMPRESSIONTOSPEEDUPTRANSFER" *-16-BITCRCERRORDETECTION)*-AUTOMATICRE-READSOFBADSECTORS/(*VERSION1.01CORRECTSTHEFOLLOWINGBUGS:62*-INITIALIZATIONROUTINECSœ*VERSION1.20 ¦*-HASACONFIGURATIONMENU °*-HASADIRECTORYFUNCTION.º*-ABORTSINSTANTLYIFUSERPUSHESESCAPE#Ä*-FIXESTHE"256RETRIES"BUG'Î*-HASMOREEFFICIENTCRCROUTINES7â*VERSION1.11SETSIOBVOLTO0BEFORECALLINGRW0V*FORMATISCOMPATIBLEWITHRANDYSPURLOCK'S`*APL2EMEMULATOR.t*VERSIONHISTORY:9~*VERSION1.21BWORKSONAPPLECOMMCARD,HIBAUDRATE6*(MODBYPAULSCHLYTER,APR2000,PAUSCH@SAAF.SE)6ˆ*VERSION1.21FILLSUNREADABLESECTORSWITHZERO«gè‰.LISTOFFí*À-ò*APPLEDISKTRANSFER1.21ü*BYPAULGUERTIN*GUERTINP@IRO.UMONTREAL.CA*OCTOBER13TH,1994*DISTRIBUTEFREELY$*À-.*-B*THISPROGRAMTRANSFERSA16-SECTORDISK.L*TOA140KMS-DOSFILEANDBACK.THEFILE                                                        þ`ïØÅ ÄÉÓË ÔÒÁÎÓÆÅÒ ±®²±     ±¹¹´­±°­±³ÐÁÕÌ ÇÕÅÒÔÉκ ÇÕÅÒÔÉÎÐÀÉÒÏ®ÕÍÏÎÔÒÅÁÌ®ÃÁÔÅÓÔÉÎÇ ÄÉÓË ÆÏÒÍÁÔ®Á×ÁÉÔÉÎÇ ÁÎÓ×ÅÒ ÆÒÏÍ Ðî±²³´µ¶·±²±²³´µ¶·³°°±²°°²´°°´¸°°¹¶°°±¹²°°°±²³´µ±°¹¹°±²³´µ±°¹¹ÙÅÓÎÏÙÅÓÎÏ` ÔÙÐÅ ÓÐÁÃź ÆÉÌÅ ÔÏ ÒÅÃÅÉÖź ÆÉÌÅ ÔÏ ÓÅÎĺ ÒÅÃÅÉÖÉÎÇ ÆÉÌÅ ÓÅÎÄÉÎÇ ÆÉÌÅ ÅÒÒÏÒº ÎÏÎÓÅÎÓÅ ÆÒÏÍ ÐîÅÒÒÏÒº ÎÏÔ Á ±¶­ÓÅÃÔÏÒ ÄÉÓË®ÅÒÒÏÒº ÆÉÌÅ ÃÁΧԠÂÅ ÏÐÅÎÅÄ®ÁÌÒÅÁÄÙ ÅØÉÓÔÓ®ÉÓ ÎÏÔ Á ±´°Ë ÉÍÁÇÅ®ÄÏÅÓΧԠÆÉÔ ÏΠÄÉÓË®  ÁÎÙ ËÅÙº ¼­ ÄÏ ÎÏÔ ÃÈÁÎÇÅÁÐÐÌ ÓÌÏÔÄÉÓË ÄÒÉÖÅÓÓàÓÌÏÔÓÓàÓÐÅÅÄÒÅÁÄ ÒÅÔÒÉÅÓ×ÒÉÔÅ ÒÅÔÒÉÅÓÕÓÅ ÃÈÅÃËÓÕÍÓÅÎÁÂÌÅ ÓÏÕÎÄÕÓÅ ÁÒÒÏ×Ó ÁÎÄ ÓÐÁÃÅ ÔÏ ÃÈÁÎÇÅ ÖÁÌÕÅÓ¬ÒÅÔÕÒΠÔÏ ÁÃÃÅÐÔ¬ ÃÔÒÌ­Ä ÆÏÒ ÄÅÆÁÕÌÔÓ®ÓÅÎĬ ÒÅÃÅÉÖŬ ÄÉÒ¬ ÃÏÎÆÉÇÕÒŬ ÑÕÉÔ¿ ÓÐÁÃÅ ÔÏ ÃÏÎÔÉÎÕŬ ÅÓàÔÏ ÓÔÏк ÅÎÄ ÏÆ ÄÉÒÅÃÔÏÒ٬ȑ( %‘(æ%Êä©ß¢&Êú`„î©…$© [û Bü¤î¹>…¹?… ±ð ðýÈÐö`jåY§Íî .>Le‚¡²ÈÞêûK`ÓÓúӠ¬         ÁÄÔ ±®²±     ÄÉÓ˺Ӡ¬Ä   °°°°°°°°°°°°°°°°±±±±±±±±±±±±±±±±²²²    °±²³´µ¶·¸¹ÁÂÃÄÅÆ°±²³´µ¶·¸¹ÁÂÃÄÅÆ°±²   ÁÄÔ ÃÏÎÆÉÇÕÒÁÔÉÏΠÄÉÓË×­  ˜™ÿÈÐú`¬È„$ 8 L( ­ ? 0 ¤$±(`æ%¥%Éæ$©L[û¤$‘(`HE쪥ë]‘…ì½…ëh`¢ †ë„좥ë &ì°ÊÐøðI!…ë¥ìI…ìÊÐç¥ë™¥ì™‘ÈÐÔ`¢½ñÊ÷`­øЩ€ Ÿ ©  €ªÊÐý,0ÀˆÐö`H­ÀÉ›ð"­‰À)pÉÐðhˆÀ`­Àɛ𠭉À)hÉÐð­ˆÀ` “ ¢ÿš,ÀLE Xü  '¢©…% "ü©  &‘( ‘(½¾ä REFRESH‚LDA#3Œ;FIRSTPARAMETERISONLINE3 î ‰JSRTABVø ‰LDX#0Œ;PARAMETERNUMBER) ‰LDY#$FFŠ;OFFSETINTOPARAMETERTEXT* NXTLINE‚STXLINECNT‡;SAVECURRENTLINE ‰LDA#15 * ‰STACH4 ‰CLC0> ‰LDAPARMSIZ,X…;GETCURRENTVALUE(NEGATIVE:*H ‰SSCREENl ‰JSRSHOWM1v ‰LDY#MCONFG2/€ ‰JSRSHOWMSG‡;IN2PARTSBECAUSE>256CHARS-” ‰LDY#PARMNUM-1„;SAVEPREVIOUSPARAMETERS*ž SAVPARM‚LDAPARMS,Y‡;INCASEOFESCAPE¨ ‰STAOLDPARM,Y² ‰DEY¼ ‰BPLSAVPARM'Ð *À-FIRSTPART:DISPLAYSCREENÀ-0MSGþ ‰JSRRDKEY, ‰EOR#ESCŠ;NOTESCAPE,CONTINUENORMALLY$ ‰BNEDIR‹;BYSENDINGA"D"TOPC) ‰JMPPUTCŠ;ESCAPE,SEND00ANDRETURN: *À9- D *CONFIG-ADTCONFIGURATIONN *À9-!X CONFIGƒJSRHOMEŠ;CLEARSCREEN,b ‰LDY#MCONFIG†;SHOWCONFIGURATIONRLOOP0š DIRSTOP‚JSRGETCŠ;GETCONTINUATIONCHARACTER&¤ ‰BNEDIRCONT‡;NOT00,THERE'SMORE.¸ ‰LDY#MDIREND†;NOMOREFILES,WAITFORKEY ‰JSRSHOWMSG‡;ANDRETURNÌ ‰JSRRDKEYÖ ‰RTS8ê DIRCONT‚LDY#MDIRCON†;SPACETOCONTINUE,ESCTOSTOPô ‰JSRSHOW, *À9-6 DIR†JSRHOMEŠ;CLEARSCREEN%@ ‰LDA#"D"Š;SENDDIRCOMMANDTOPC J ‰JSRPUTC0^ DIRLOOP‚JSRGETCŠ;PRINTPCOUTPUTEXACTLYAS/h ‰BEQDIRSTOP‡;ITARRIVES(PCISRESPONSIBLE(r ‰ORA#$80Š;FORFORMATTING),UNTIL00| ‰JSRCOUT1‰;RECEIVED† ‰JMPDIWASABADKEY0È ‰LDADOSBYTE‡;YES,RESTOREDOSCHECKSUMCODEÒ ‰STA$B92EÜ ‰LDADOSBYTE+1æ ‰STA$B98Að ‰JMP$3D0Š;ANDQUITTODOS *À9-2 *DIR-GETDIRECTORYFROMTHEPCANDPRINTIT:" *PCSENDS0,1AFTERPAGES1..N-1,0,0AFTERLASTPAGEPARAMETERSZ ‰JMPREDRAW-n KABOUTƒCMP#$9FŠ;ABOUTMESSAGE?("?"KEY)x ‰BNEKQUIT‰;NOPE,TRYQUIT)‚ ‰LDY#MABOUT‡;YES,SHOWMESSAGE,WAIT%Œ ‰JSRSHOWMSG‡;FORKEY,ANDRETURN– ‰JSRRDKEY  ‰JMPMAINLUP´ KQUIT„CMP#"Q"Š;QUIT?%¾ ‰BNEMAINLUP‡;NOPE,ì ‰JMPMAINLUP KDIR…CMP#"D"Š;DIR?# ‰BNEKCONF‰;NOPE,TRYCONFIGURE! ‰JSRDIR‹;YES,DODIRROUTINE ‰JMPREDRAW2 KCONF„CMP#"C"Š;CONFIGURE? < ‰BNEKABOUTˆ;NOPE,TRYABOUT*F ‰JSRCONFIGˆ;YES,DOCONFIGUREROUTINE*P ‰JSRPARMINT‡;ANDINTERPRETNVERTTOUPPERCASE#ˆ MOD0…BIT$C08F‰;RESETCOMMCARDœ ‰CMP#"S"Š;SEND?!¦ ‰BNEKRECV‰;NOPE,TRYRECEIVE#° ‰JSRSENDŠ;YES,DOSENDROUTINEº ‰JMPMAINLUPÎ KRECV„CMP#"R"Š;RECEIVE?Ø ‰BNEKDIRŠ;NOPE,TRYDIR)â ‰JSRRECEIVE‡;YES,DORECEIVEROUTINEC-16TABLES.. ‰JSRPARMDFT‡;RESETPARAMETERSTODEFAULTS&8 ‰JSRPARMINT‡;INTERPRETPARAMETERS'L REDRAWƒJSRTITLE‰;DRAWTITLESCREEN*` MAINLUP‚LDY#MPROMPT†;SHOWMAINPROMPT%j ‰JSRSHOWMSG‡;ATBOTTOMOFSCREENt ‰JSRRDKEY‰;GETANSWER#~ ‰AND#$DFŠ;CODOSBYTE‡;CHECKSUMBYTES ʉCMP#$13-Ô‰BEQDOSOK1ˆ;ANDDECREMENTSTDDOS(MAKING+Þ‰DECSTDDOSˆ;ITNONZERO)IFTHECORRECT(èDOSOK1ƒLDA$B98A‰;BYTESAREN'TTHEREò‰STADOSBYTE+1 ü‰CMP#$B7 ‰BEQDOSOK2 ‰DECSTDDOS*$ DOSOK2ƒJSRMAKETBL‡;MAKECR&f‰JSR$FB2F‰;TEXTMODE,FULLWINDOW#p‰JSR$FE89‰;INPUTFROMKEYBOARD'z‰JSR$FE93‰;OUTPUTTO40-COLSCREEN Ž‰LDA#0+˜‰STASECPTRˆ;SECPTRALWAYSPAGE-ALIGNED.¬‰STASTDDOSˆ;ASSUMESTANDARDDOSINITIALLY$¶‰LDA$B92E‰;SAVECONTENTSOFDOS À‰STA2Œ;AWAITINGANSWERFROMPCäÀ:* ø‰.OR$803ý‰.TFADT.CC' ‰JMPSTART‰;SKIPDEFAULTPARAMETERS< DEFAULT‚.DA#5,#0,#1,#5,#1,#0,#0,#0‚;DEFAULTPARMVALUES4*À9->*START-MAINPROGRAMH*À9-RSTART„CLD;BINARYMODE\‰JSR$FE84‰;NORMALTEXTTS‚.EQ28Œ;|ALREADYEXISTS.)”MNOT140‚.EQ30Œ;|ISNOTA140KIMAGE.'žMFULL„.EQ32Œ;|DOESN'TFITONDISK.¨MANYKEY‚.EQ34Œ;__ANYKEY:_"²MDONT„.EQ36Œ;<-DONOTCHANGE¼MABOUTƒ.EQ38Œ;ABOUTADT...%ÆMTEST„.EQ40Œ;TESTINGDISKFORMAT*ÐMPCANSƒ.EQ4EQ14Œ;FILETOSEND:_-NMRECV„.EQ16Œ;RECEIVINGFILE_„(_=SPACE)XMSEND„.EQ18Œ;SENDINGFILE_$bMCONFUS‚.EQ20Œ;NONSENSEFROMPC'lMNOT16ƒ.EQ22Œ;NOTA16SECTORDISKvMERRORƒ.EQ24Œ;ERROR:FILE_,€MCANT„.EQ26Œ;|CAN'TBEOPENED.…(|=CR)$ŠMEXISCONFIG‚.EQ2;CONFIGURATIONTOPOFSCREEN1MCONFG2‚.EQ4;CONFIGURATIONBOTTOMOFSCREENMPROMPT‚.EQ6;MAINPROMPT-&MDIRCON‚.EQ8;CONTINUEDDIRECTORYPROMPT+0MDIREND‚.EQ10Œ;ENDOFDIRECTORYPROMPT$:MFRECVƒ.EQ12Œ;FILETORECEIVE:_!DMFSENDƒ.ADDRESSAND% ‰LDAPCKSUMˆ;DATACHECKSUMERRORSª‰BNERWTSMOD´‰LDXDOSBYTE+1¾‰LDYDOSBYTE1ÈRWTSMOD‚STX$B98A‰;ISTHEREANAPPLEIITODAY,Ò‰STY$B92E‰;THATDOESN'THAVE>=48KRAM?܉RTS;(YES)/ðSPDTXTƒ.AS-"‚003002100420084006900291"-SPDTXT,Y‰STAMTSPD,X‰INY(‰DEX2‰BPLPUTSPD&F‰LDY#1Œ;CONVERTRETRIESFROM0..7'PTRYLUPƒLDXPRETRY,Y†;TO0..5,10,128Z‰LDATRYTBL,Xd‰STAREALTRY,Yn‰DEYx‰BPLTRYLUP(Œ‰LDX#0Œ;IFPCKSUMIS'NO',WEPATCH&–‰LDY#0Œ;DOSTOIGNORECOMMCARD'ˆ‰STXMOD1+1ˆ;SELF-MODSFOR$C088+S0’‰STXMOD3+1ˆ;INGETC/PUTCœ‰INX'¦‰STXMOD0+1ˆ;SELF-MODSFOR$C089+S0!°‰STXMOD2+1ˆ;INMAINLOOPAND!º‰STXMOD4+1ˆ;INGETCANDPUTCΉLDY#3Œ;ONLYONESPEED‰LDX#4Œ;TITLESCREEN PUTSPDƒLDAY;NOW1..7ò‰TYA'ü‰ORA#"0"Š;CONVERTTOASCIIANDPUT!‰STAMTSSC‰;INTOTITLESCREEN‰TYA‰ASL$‰ASL.‰ASL8‰ASL;NOW$S0 B‰ADC#$8EL‰TAX V‰LDA#$03 `‰STA$C000,X‡;RESETCOMMCARD j‰LDA#$11-t‰STA$C000,X‡;SETHIBAUDRATEONŠ;NOW$89+S0)„‰STAMOD5+1ˆ;SELF-MODFOR"DRIVESON""˜‰LDYPDRIVEˆ;GETDRIVE#(0..1)¢‰INY;NOW1..2¬‰STYIOBDRVˆ;STOREINIOB¶‰TYA'À‰ORA#"0"Š;CONVERTTOASCIIANDPUT!ʉSTAMTDRV‰;INTOTITLESCREEN#Þ‰LDYPSSCŠ;GETSSCSLOT#(0..6)è‰INNTERPRETPARAMETERS*À9-( PARMINT‚LDYPDSLOTˆ;GETSLOT#(0..6)‰INY;NOW1..7 ‰TYA'*‰ORA#"0"Š;CONVERTTOASCIIANDPUT!4‰STAMTSLT‰;INTOTITLESCREEN>‰TYAH‰ASLR‰ASL\‰ASLf‰ASL;NOW$S0p‰STAIOBSLTˆ;STOREINIOBz‰ADC#$89ONFIGURE€‰STAPARMS,YŠ‰DEY”‰BPLPARMRSTžENDCFGƒRTS'²LINECNT‚.HS00Œ;CURRENTLINENUMBER$¼CURPARM‚.HS00Œ;ACTIVEPARAMETER,ÆCURVALƒ.HS00Œ;VALUEOFACTIVEPARAMETER2ÐOLDPARM‚.BSPARMNUM‡;OLDPARAMETERSSAVEDHEREî*À9-$ø*PARMINT-IT‡;CTRL-DPUSHED,RESTOREDEFAULT"&NOTESCƒJMPREFRESH‡;PARAMETERS:NOTCTLD‚CMP#$8D.D‰BEQENDCFGˆ;RETURNPUSHED,STOPCONFIGURE X‰CMP#ESCb‰BNENOTESC/l‰LDY#PARMNUM-1„;ESCAPEPUSHED,RESTOREOLD8vPARMRST‚LDAOLDPARM,Y…;PARAMETERSANDSTOPCšNOTUP„CMP#$8A¤‰BEQISDOWN ®‰CMP#$A0¸‰BNENOTDOWN*ÂISDOWNƒINX;DOWNARROWORSPACEPUSHED&̉CPX#PARMNUM†;INCREMENTPARAMETERÖ‰BCCDOWNOK à‰LDX#0êDOWNOKƒSTXCURPARMô‰JMPREFRESHNOTDOWN‚CMP#$84‰BNENOTCTLD0‰JSRPARMDF;INCREMENTCURRENTVALUE‰CMPPARMSIZ,X‰BCCRIGHTOK "‰LDA#0,RIGHTOK‚STAPARMS,X6‰JMPREFRESHJNOTRGTƒCMP#$8BT‰BNENOTUP^‰DEX;UPARROWPUSHED"h‰BPLUPOKŠ;DECREMENTPARAMETERr‰LDX#PARMNUM-1|UPOK…STXCURPARM†‰JMPREFRESHX Œ‰CMP#$88–‰BNENOTLEFT# ‰DECPARMS,X‡;LEFTARROWPUSHED(ª‰BPLLEFTOKˆ;DECREMENTCURRENTVALUE´‰LDAPARMSIZ,X ¾‰SBC#1ȉSTAPARMS,XÒLEFTOKƒJMPREFRESHæNOTLEFT‚CMP#$95ð‰BNENOTRGT$ú‰LDAPARMS,X‡;RIGHTARROWPUSHED$‰ADC#0Œ)‰LDA#9Œ;NEXTTOTHECHECKSUMSOPTION ‰JSRTABV ‰LDY#23 ‰STYCH(‰LDY#MDONT2‰JSRSHOWM1'F*À-SECONDPART:CHANGEVALUESÀ-+ZGETCMDƒLDA$C000‰;WAITFORNEXTCOMMANDd‰BPLGETCMDn‰BIT$C010(x‰LDXCURPARM‡;CURRENTPARAMETERINEOLUSESY&œ‰JSRCLREOLˆ;REMOVEGARBAGEATEOL¦‰JSRCROUT°‰LDYYSAVE(º‰LDXLINECNT‡;INCREMENTCURRENTLINEĉINXΉCPX#PARMNUM؉BCCNXTLINE‡;LOOP8TIMES+ì‰LDASTDDOSˆ;IFNON-STANDARDDOS,WRITE*ö‰BEQGETCMDˆ;"DONOTCHANGE"ONSCREENE‰JSRCOUT1PRTLOOP‚INY;PRINTVALUE$‰LDAPARMTXT,Y.‰BEQENDPRT8‰JSRCOUT1B‰JMPPRTLOOPLENDPRTƒLDA#$A0V‰JSRCOUT1`‰LDA#$FFŠ;BACKTONORMALj‰STAINVFLGtENDVALƒDEX(~‰BPLVALLOOP‡;PRINTREMAININGVALUES’‰STYYSAVE‰;CLR‰LDAPARMTXT,Y¬ ‰BNESKIPCHR¶ ‰BEQENDVAL5Ê PRINTIT‚LDALINECNT‡;IFWE'REONTHEACTIVELINE,-Ô ‰CMPCURPARM‡;THENPRINTVALUEININVERSE'Þ ‰BNEPRTVALˆ;ELSEPRINTITNORMALLY è ‰LDA#$3Fò ‰STAINVFLG/PRTVALƒLDA#$A0Š;SPACEBEFORE&AFTERVALUBCPARMS,X‡;LASTVALUEHASCURVAL=0)R ‰STACURVAL1\ ‰LDAPARMSIZ,X…;XWILLBEEACHPOSSIBLEVALUE$f ‰TAX;STARTINGWITHTHELASTONEp ‰DEX1„ VALLOOP‚CPXCURVALˆ;XEQUALTOCURRENTVALUE?Ž ‰BEQPRINTIT‡;YES,PRINTIT˜ SKIPCHR‚INY;NO,SKIPIT¢ EY²‰JMPABORT‰;ANDABORTÆ*À-RECEIVINGÀ-#ÚDORECVƒLDY#0Œ;CLEARNEWSECTORä‰TYAîCLRLOOP‚STA(SECPTR),Yø‰INY‰BNECLRLOOP,‰LDAMESSAGE‡;SENDRESULTOFPREVSECTOR ‰JSRPUTC *‰JSRRECVSEC‡;RECEIVESECTOR 4‰JSRGETC>‰STAPCCKŠ;ISITACK?N‰BEQSROKAYˆ;YES,ALLRIGHTX‰CMP#NAKŠ;ISITNAK?b‰BEQS7SEC‰;YES,SENDAGAIN%v‰LDY#MCONFUS†;SOMETHINGISWRONG€‰JSRSHOWMSG‡;TELLBADNEWS Š‰LDY#MANYKEY†;APPENDPROMPT”‰JSRSHOWM1ž‰JSRAWBEEP¨‰JSRRDKEY‰;WAITFORK,X‰JSRCHROVER)Ö‰LDAWHAT2DO‡;EXECUTESENDORRECEIVEà‰BNEDORECVˆ;ROUTINEô*À-SENDINGÀ-%‰JSRSENDSEC‡;SENDCURRENTSECTOR‰LDACRC‹;FOLLOWEDBYCRC ‰JSRPUTC&‰LDACRC+1 0‰JSRPUTC#:‰JSRGETCŠ;GETRESPONSEFROMPCD‰CMP#ACECEIVE^‰LDA#7Œ;DO7TRACKSh‰STATRKCNT$r‰LDA#TRACKS/$100‚;STARTINGHERE|‰STASECPTR+1'†‰JSRHOMECUR‡;RESETCURSORPOSITION,šS7TRK„LDA#$F‹;COUNTSECTORSFROMFTO0¤‰STAIOBSEC-®S7SEC„LDXWHAT2DO‡;PRINTSTATUSCHARACTER¸‰LDASRCHARDAIOBTRK%ð‰CMP#$23Š;REPEATUNTILTRACK$23ú‰BCCSENDLUP‰LDAERRORS$‰JSRPUTCŠ;SENDERRORFLAGTOPC‰JMPAWBEEPˆ;BEEPANDEND6*À9-3@*SR7TRK-SEND(X=0)ORRECEIVE(X=1)7TRACKSJ*À9-5TSR7TRKƒSTXWHAT2DO‡;X=0FORSEND,X=1FORRŠ;SENDINITIALACK ‚‰JSRPUTCŒ‰LDA#0Œ;STARTONTRACK0–‰STAIOBTRK# ‰STAERRORSˆ;NODISKERRORSYET*´SENDLUP‚STASAVTRKˆ;SAVECURRENTTRACK ¾‰LDX#1(ȉJSRRW7TRKˆ;READ7TRACKSFROMDISK Ò‰LDX#0$܉JSRSR7TRKˆ;SEND7TRACKSTOPCæ‰LAGE‡;SENDLASTACK ‰JSRPUTC‰LDAERRORS$‰JSRPUTCŠ;SENDERRORFLAGTOPC(‰JMPAWBEEPˆ;BEEPANDENDF*À9-P*SEND-MAINSENDROUTINEZ*À9-'dSEND…LDX#1Œ;DIRECTION=APPLE-->PC/n‰JSRGETNAME‡;ASKFORFILENAME&SENDTOPCx‰LDA#ACK‰STAERRORSˆ;NODISKERRORSYET*°RECVLUP‚STASAVTRKˆ;SAVECURRENTTRACK º‰LDX#1)ĉJSRSR7TRKˆ;RECEIVE7TRACKSFROMPC ΉLDX#2'؉JSRRW7TRKˆ;WRITE7TRACKSTODISKâ‰LDAIOBTRK%ì‰CMP#$23Š;REPEATUNTILTRACK$23ö‰BCCRECVLUP‰LDAMESS#MRECV,#MSENDB*À9-$L*RECEIVE-MAINRECEIVEROUTINEV*À9-*`RECEIVE‚LDX#0Œ;DIRECTION=PC-->APPLE/j‰JSRGETNAME‡;ASKFORFILENAME&SENDTOPC%t‰LDA#ACKŠ;1STMESSAGEALWAYSACK~‰STAMESSAGEˆ‰LDA#0Œ;STARTONTRACK0’‰STAIOBTRK#œWFILENAME¬‰JSRSHOWFN¶‰PLAÀ‰TAY#ʉJSRSHOWM1ˆ;SHOWERRORMESSAGE Ô‰LDY#MANYKEY†;APPENDPROMPTÞ‰JSRSHOWM1è‰JSRAWBEEPò‰JSRRDKEY‰;WAITFORKEYü‰JMPABORT‰;ANDRESTARTDIRECTN‚.HS00PRMPTBL‚.DA#MFRECV,#MFSEND$TFRTBLƒ.DAJSRSHOWMSG‡;SHOWTRANSFERMESSAGE#HSHOWFNƒLDA#2Œ;ANDADDFILENAMER‰STAMSGPTR+1 \‰LDA#0f‰STAMSGPTRp‰TAY,z‰JMPMSGLOOP‡;ANDRETURNTHROUGHSHOWMSG"ŽPCERROR‚PHA;SAVEERRORNUMBER%˜‰LDY#MERROR‡;SHOW"ERROR:FILE"¢‰JSRSHOWMSG‡;SHO0*¼FNLOOPƒLDA$200,Xˆ;SENDFILENAMETOPC ƉJSRPUTCЉBEQGETANSˆ;STOPATNULLÚ‰INXä‰BNEFNLOOP/øGETANSƒJSRGETCŠ;ANSWERFROMPCSHOULDBE0#‰BNEPCERROR‡;THERE'SAPROBLEM‰JSRTITLE‰;CLEARSTATUS ‰LDXDIRECTN*‰LDYTFRTBL,X'4‰;APPENDPROMPTN‰JSRSHOWM1X‰JSRAWBEEPb‰JSRRDKEY‰;WAITFORKEYl‰JMPABORT‰;ANDABORT1€DISKOKƒLDY#MPCANS‡;"AWAITINGANSWERFROMPC"Š‰JSRSHOWMSG'”‰LDA#"R"Š;LOADACCWITH"R"OR"S"ž‰ADCDIRECTN¨‰JSRPUTCŠ;ANDSENDTOPC ²‰LDX#UF+1†;TOSEEIFTHERE'SA16-SECTORÖ‰LDA#1Œ;DISKINTHEDRIVEà‰STAIOBCMDê‰STAIOBTRKô‰STAIOBSECþ‰LDA#IOB/$100 ‰LDY#IOB ‰JSR$3D9 ‰BCCDISKOKˆ;READSUCCESSFUL$0‰LDY#MNOT16‡;NOT16-SECTORDISK:‰JSRSHOWMSG D‰LDY#MANYKEY†Œ;GETANSWERAT$200h‰JSRNXTCHARr‰LDA#0Œ;NULL-TERMINATEIT|‰STA$200,X†‰TXA‰BNEFNAMEOK$š‰JMPABORT‰;ABORTIFNOFILENAME*®FNAMEOK‚LDY#MTESTˆ;"TESTINGTHEDISK"¸‰JSRSHOWMSG,‰LDA#TRACKS/$100‚;READTRACK1SECTOR10̉STAIOBBúBPSCTRL‚.DA#$16,#$18,#$1A,#$1C,#$1E,#$1F(TRYTBLƒ.DA#0,#1,#2,#3,#4,#5,#10,#99"*À9-+,*GETNAME-GETFILENAMEANDSENDTOPC6*À9-7@GETNAME‚STXDIRECTN‡;TFRDIRECTION(0=RECV,1=SEND)J‰LDYPRMPTBL,XT‰JSRSHOWMSG‡;ASKFILENAME^‰LDX#0RCURRENTSECTORV"*À9-1`"CLRSECT‚LDAIOBBUF+1†;POINTTOCORRECTSECTORj"‰STACSLOOP+2t"‰LDY#0Œ;ANDFILL256ZEROS~"‰TYAˆ"CSLOOPƒSTA$FF00,Y’"‰INYœ"‰BNECSLOOP¦"‰RTSÄ"*À9-3Î"*HOMECUR-RESETCURSORPOSITIONTO1STSECTOR:Ø"*CHRREST-;LOOPUNTILENDOFTRACKÞ!‰INCIOBTRKˆ;NEXTTRACK)è!‰DECTRKCNTˆ;LOOPUNTIL7TRACKSDONEò!‰BNENEXTTRKü!‰RTS3"RWCHARƒ.AS-"RW"Š;STATUSCHARACTERS:READ/WRITE"RETRIES‚.HS00+$"REALTRY‚.HSÀ0Š;REALNUMBEROFRETRIESB"*À9-$L"*CLRSECT-CLEA!‰ROLERRORSˆ;NO,SETERRORSTONONZERO(˜!‰JSRCLRSECT‡;FILLSECTORWITHZEROS*¢!‰LDA#'*'Š;ANDPUTINVERSE*INSTATUS4¶!SECTOKƒJSRCHRADVˆ;PRINTSECTORSTATUS&ADVANCE&À!‰INCIOBBUF+1†;NEXTPAGEINBUFFERÊ!‰DECIOBSECˆ;NEXTSECTOR)Ô!‰BPLNEXTSEC‡DA#IOB/$100…;GETIOBADDRESSINREGISTERS R!‰LDY#IOB'\!‰JSR$3D9Š;CALLRWTSTHROUGHVECTOR)f!‰LDA#"."Š;CARRYCLEARMEANSNOERROR*p!‰BCCSECTOKˆ;NOERROR:PUT.INSTATUS,z!‰DECRETRIES‡;ERROR:SOMEPATIENCELEFT? „!‰BPLRWAGAIN‡;YES,TRYAGAIN*ŽETRIESFROM$ä ‰LDAREALTRY-1,Xƒ;PARAMETERDATAî ‰STARETRIES+ø ‰LDARWCHAR-1,X„;PRINTSTATUSCHARACTER!‰JSRCHROVER%!RWAGAIN‚LDA$C000‰;CHECKKEYBOARD !‰CMP#ESCŠ;ESCAPEPUSHED?*!‰BNERWCONTˆ;NO,CONTINUE4!‰JMPSABORTˆ;YES,ABORT6H!RWCONTƒLDA#7Œ;COUNT7TRACKS” ‰STATRKCNT3ž ‰LDA#TRACKS/$100‚;STARTATBEGINNINGOFBUFFER¨ ‰STAIOBBUF+1'² ‰JSRHOMECUR‡;RESETCURSORPOSITION/Æ NEXTTRK‚LDA#$F‹;STARTATSECTORF(READIS!Ð ‰STAIOBSECˆ;FASTERTHISWAY),Ú NEXTSEC‚LDXIOBCMDˆ;GETMAXRENEWBASE$ ‰STA(SECPTR),Y„;STOREREALBYTE& ‰INY!0 ‰BNEUDLOOPˆ;REPEAT256TIMES: ‰RTSX *À9-1b *RW7TRK-READ(X=1)ORWRITE(X=2)7TRACKS(l *USESA,X,Y.IFESCAPE,CALLSABORTv *À9-2€ RW7TRKƒSTXIOBCMDˆ;X=1FORREAD,X=2FORWRITEŠ ‰LDECOMPRESSIONANDUPDATECRC¸*À9-ÂUNDIFFƒLDY#0̉STYCRC‹;CLEARCRCÖ‰STYCRC+1#à‰STYPREVŠ;INITIALBASEISZERO-êUDLOOPƒLDA(SECPTR),Y„;GETNEWDIFFERENCEô‰CLCþ‰ADCPREVŠ;ADDTOBASE ‰JSRUPDCRCˆ;UPDATECRC# ‰STAPREVŠ;THISISTHY„;ELSEPUTCHARINBUFFERJ‰INY;ANDINCREMENTINDEX'T‰BNERC1‹;LOOPIFNOTATBUFFEREND^‰RTS;ELSERETURNhRC2†JSRGETCŠ;GETNEWINDEXr‰TAY;INYREGISTER |‰BNERC1‹;LOOPIFINDEX<>0†‰RTS;ELSERETURN¤*À9-6®*UNDIFF-‚FINISHRLEOMAINLOOP$æ‰RTS;ORRETURNIFNOMOREBYTES*À9-;*RECVSEC-RECEIVESECTORWITHRLE(NOTIMETOUNDIFF)*À9-0"RECVSEC‚LDY#0Œ;STARTATBEGINNINGOFBUFFER ,RC1†JSRGETCŠ;GETDIFFERENCE$6‰BEQRC2‹;IFZERO,GETNEWINDEX,@‰STA(SECPTR),JSRUPDCRC–SS3†INY;ANYMOREBYTES?% ‰BEQSS4‹;NO,ITWAS00UPTOEND&ª‰LDA(SECPTR),Y„;LOOKATNEXTBYTE ´‰CMPPREV&¾‰BEQSS2‹;SAMEASBEFORE,CONTINUE"ÈSS4†TYA;DIFFERENCENOTAZEROÒ‰JSRPUTCŠ;SENDNEWADDRESS&܉BNESS1‹;ANDGOBACKTATECRC(‰TAX;KEEPACOPYINX 2‰SEC;SUBTRACTFROMPREVIOUS <‰SBCPREV!F‰STXPREVŠ;SAVEPREVIOUSBYTEP‰JSRPUTCŠ;SENDDIFFERENCEZ‰BEQSS3‹;WASITAZERO?d‰INY;NO,DONEXTBYTE n‰BNESS1‹;LOOPIFMORETODOx‰RTS;ELSERETURNŒSS2†,Î*SENDSEC-SENDCURRENTSECTORWITHRLE"Ø*CRCISCOMPUTEDBUTNOTSENTâ*À9-'ìSENDSEC‚LDY#0Œ;STARTATFIRSTBYTEö‰STYCRC‹;ZEROCRC‰STYCRC+1$ ‰STYPREVŠ;NOPREVIOUSCHARACTER(SS1†LDA(SECPTR),Y„;GETBYTETOSEND‰JSRUPDCRCˆ;UPDIVEON,EXCEPTINTHELAST8‰LDASAVTRKˆ;BLOCK B‰CMP#$1CL‰BEQNOTONEVMOD5…BIT$C089jNOTONEƒDECTRKCNTt‰BEQSREND(~‰JMPS7TRK‰;LOOPUNTIL7TRACKSDONE ˆSREND„RTS/œSRCHARƒ.AS-"OI"Š;STATUSCHARACTERS:OUT/IN¦WHAT2DO‚.HS00Ä*À9-MESSAGEʉBNES7SEC Þ*À-BACKTOCOMMONLOOPÀ-4òSROKAYƒJSRCHRREST‡;RESTOREPREVIOUSSTATUSCHARü‰INCSECPTR+1†;NEXTSECTOR‰DECIOBSEC"‰BPLS7SEC‰;TRACKNOTFINISHED‰LDATRKCNT&$‰CMP#2Œ;STARTINGLASTTRACK,TURN-.‰BNENOTONEˆ;DRRC‰;ANDCRC H‰JSRGETCR‰STAPCCRC+1"\‰JSRUNDIFFˆ;UNCOMPRESSSECTOR#p‰LDACRC‹;CHECKRECEIVEDCRCVSz‰CMPPCCRC‰;CALCULATEDCRC„‰BNERECVERRŽ‰LDACRC+1˜‰CMPPCCRC+1¢‰BEQSROKAY/¶RECVERR‚LDA#NAKŠ;CRCERROR,ASKFORRESENDÀ‰STA¼*‰JSRCOUT1Æ*‰INYÐ*‰BNEMSGLOOPÚ*MSGENDƒRTSø**À-MESSAGESÀ-8 +MSGTBLƒ.DAMSG01,MSG02,MSG03,MSG04,MSG05,MSG06,MSG072+‰.DAMSG08,MSG09,MSG10,MSG11,MSG12,MSG13,MSG142 +‰.DAMSG15,MSG16,MSG17,MSG18,MSG19,MSG20,MSG21*+‰.DAMSG22>+MSG01„.AS-‰STACHŒ;COLUMN0:*‰LDA#22‹;LINE22 D*‰JSRTABV#N*‰JSRCLREOPˆ;CLEARMESSAGEAREAX*‰LDYYSAVE3l*SHOWM1ƒLDAMSGTBL,Y†;CALLHERETOSHOWANYWHEREv*‰STAMSGPTR€*‰LDAMSGTBL+1,YŠ*‰STAMSGPTR+1 ž*‰LDY#0¨*MSGLOOP‚LDA(MSGPTR),Y²*‰BEQMSGENDBOVEINVERSETEXT¸)SHOWUND‚STA$500,XÂ)‰DEXÌ)‰BPLSHOWUNDÖ)‰RTSô)*À9-<þ)*SHOWMSG-SHOWNULL-TERMINATEDMESSAGE#YATBOTTOMOF:**SCREEN.‚CALLSHOWM1TOSHOWANYWHEREWITHOUTERASING**À9-$*SHOWMSG‚STYYSAVE‰;CLREOPUSESY &*‰LDA#00*BOTTOM)SHOWSEC‚JSRVTAB )‰LDA#$20 ")‰LDY#38,)‰STA(BASL),Y 6)‰LDY#0@)‰STA(BASL),YJ)‰LDAHEXNUM,XT)‰INY^)‰STA(BASL),Y h)‰LDY#37r)‰STA(BASL),Y |)‰INCCV†)‰DEX)‰BPLSHOWSEC&¤)‰LDA#"_"Š;SHOWLINEOFUNDERLINES ®)‰LDX#38‹;AŒ(‰JMPREDRAWˆ;ANDRESTARTª(*À9-´(*TITLE-SHOWTITLESCREEN¾(*À9- È(TITLE„JSRHOMEŠ;CLEARSCREENÒ(‰LDY#MTITLE.Ü(‰JSRSHOWM1ˆ;SHOWTOPPARTOFTITLESCREEN!ð(‰LDX#15‹;SHOWSECTORNUMBERS ú(‰LDA#5Œ;INDECREASINGORDER)‰STACVŒ;FROMTOPTO(‰BEQGETCŠ;INPUTREGEMPTY,LOOP!(MOD4…LDA$C088‰;GETCHARACTER((‰RTSF(*À9-8P(*ABORT-STOPEVERYTHING(CALLSABORTTOBEEPALSO)Z(*À9-d(SABORTƒJSRAWBEEPˆ;BEEP)n(ABORT„LDX#$FFŠ;POPGOESTHESTACKPTRx(‰TXS‚(‰BIT$C010‰;STROBEKEYBOARDUTREGFULL,LOOPˆ'‰PLA!’'MOD2…STA$C088‰;PUTCHARACTERœ'‰RTSº'*À9-<Ä'*GETC-GETACHARACTERFROMSERIALLINE(XYUNCHANGED)Î'*À9-Ø'GETC…LDA$C000â'‰CMP#ESCŠ;ESCAPE=ABORTì'‰BEQSABORT%ö'MOD3…LDA$C089‰;CHECKSTATUSBITS (‰AND#$01$Rè&‰DEYò&‰BNEBEEP2ü&NOBEEPƒRTS'*À9-:$'*PUTC-SENDACCOVERTHESERIALLINE(AXYUNCHANGED).'*À9- 8'PUTC…PHAB'PUTC1„LDA$C000L'‰CMP#ESCŠ;ESCAPE=ABORTV'‰BEQSABORT%`'MOD1…LDA$C089‰;CHECKSTATUSBITS t'‰AND#$02%~'‰BEQPUTC1‰;OUTPDAPSOUNDˆ;IFSOUNDOFF,RETURNNOWŽ&‰BNENOBEEP,˜&‰LDA#$80Š;STRAIGHTFROMAPPLEWRITER][-¢&‰JSRBEEP1‰;(CANNIBALISMISTHESINCEREST ¬&‰LDA#$A0Š;FORMOFFLATTERY)¶&BEEP1„LDY#$80 À&BEEP2„TAX Ê&BEEP3„DEXÔ&‰BNEBEEP3Þ&‰BIT$C030‰;WHAPSPEAKEEÚ%‰RTSø%*À9-<&*PARMDFT-RESETPARAMETERSTODEFAULTVALUES(USESAX) &*À9-&PARMDFT‚LDX#PARMNUM-1 &DFTLOOP‚LDADEFAULT,X*&‰STAPARMS,X4&‰DEX>&‰BPLDFTLOOPH&‰RTSf&*À9-,p&*AWBEEP-CUTETWO-TONEBEEP(USESAXY)z&*À9-/„&AWBEEPƒLP‚EOR#$21Š;HIGHBITWASSET,FLIPBITSX%‰STACRC‹;0,5,AND12b%‰LDACRC+1 l%‰EOR#$10v%‰STACRC+1€%‰DEXŠ%‰BNECRCBIT!ž%‰LDACRC‹;STORECRCINTABLES¨%CRCSAVE‚STACRCTBLL,Y²%‰LDACRC+1¼%‰STACRCTBLH,YÆ%‰INYÐ%‰BNECRCBYTE‡;DONEXTBYTY#0!à$CRCBYTE‚STXCRC‹;LOWBYTE=0!ê$‰STYCRC+1‰;HIGHBYTE=INDEXþ$‰LDX#8Œ;FOREACHBIT%CRCBITƒLDACRC%CRCBIT1‚ASL;SHIFTCRCLEFT%‰ROLCRC+1&%‰BCSCRCFLIP(0%‰DEX;HIGHBITWASCLEAR,DONOTHING:%‰BNECRCBIT1D%‰BEQCRCSAVE1N%CRCFLIPDCRC-UPDATECRCWITHCONTENTSOFACCUMULATOR,$*À9-6$UPDCRCƒPHA@$‰EORCRC+1J$‰TAX T$‰LDACRC^$‰EORCRCTBLH,Xh$‰STACRC+1r$‰LDACRCTBLL,X |$‰STACRC†$‰PLA$‰RTS®$*À9-"¸$*MAKETBL-MAKECRC-16TABLESÂ$*À9-Ì$MAKETBL‚LDX#0 Ö$‰LD#ADVANCE‚INCCVŒ;CURSORDOWN  #‰LDACVª#‰CMP#21‹;STILLINDISPLAY? ´#‰BCCNOWRAPˆ;YES,WE'REDONE)¾#TOPNEXT‚INCCHŒ;NO,GOTOTOPOFNEXTÈ#‰LDA#5Œ;COLUMN$Ò#NOWRAPƒJMPTABVŠ;VALIDATEBASL,Hæ#CHROVER‚LDYCHð#‰STA(BASL),Yú#‰RTS$*À9-6"$*UTOPOF1STCOLUMN$2#‰JMPCHRSAVE‡;SAVE1STCHARACTER-F#CHRREST‚LDASAVCHRˆ;RESTOREOLDCHARACTER-P#CHRADVƒJSRCHROVER‡;OVERWRITESTATUSCHAR Z#‰JSRADVANCE‡;ADVANCECURSORd#CHRSAVE‚LDYCH%n#‰LDA(BASL),Y†;SAVENEWCHARACTERx#‰STASAVCHR‚#‰RTS–RESTOREPREVIOUSCONTENTS&ADVANCECURSOR2â"*CHRADV‚-WRITENEWCONTENTS&ADVANCECURSOR#ì"*ADVANCE-JUSTADVANCECURSOR'ö"*CHROVER-JUSTWRITENEWCONTENTS#*À9- #HOMECUR‚LDYSAVTRK#‰INY;CURSORON0THCOLUMN #‰STYCH#(#‰JSRTOPNEXT‡;DISKERRORDKERRORVCHRƒ.HS00Œ;CHAROVERWRITTENWITHSTATUS,²/MESSAGE‚.HS00Œ;SECTORSTATUSSENTTOPC'¼/PCCRC„.HSÀ0Š;CRCRECEIVEDFROMPC0Æ/ERRORSƒ.HS00Œ;NON0IFATLEAST1DISKERRORVTOPC'¼/PCCRC„.HSÀ0Š;CRCRECEIVEDFROMPC0Æ/ERRORSƒ.HS00Œ;NON0IFATLEAST1OLUMEN/‰.HS60Œ;PREVIOUSSLOTX/‰.HS01Œ;PREVIOUSDRIVE2b/DCT†.HS0001EFD8†;DEVICECHARACTERISTICSTABLEv/*À-MISCÀ--Š/DOSBYTE‚.HSÀ0Š;DOSBYTESCHANGEDBYADT)”/STDDOSƒ.HS00Œ;ZEROIF"STANDARD"DOS'ž/SAVTRKƒ.HS00Œ;FIRSTTRACKOFSEVEN/¨/SA.‰.HS00Œ;VOLUMEþ.IOBTRKƒ.HS00Œ;TRACK/IOBSECƒ.HS00Œ;SECTOR'/‰.DADCT‹;DEVICECHARTABLEPOINTER,/IOBBUFƒ.DATRACKSˆ;SECTORBUFFERPOINTER&/‰.HSÀ0Š;UNUSED,0/IOBCMDƒ.HS01Œ;COMMAND(1=READ,2=WRITE):/‰.HS00Œ;ERRORCODED/‰.HSFEŒ;ACTUALV#5Œ;SSCSPEED(19200)2š.PRETRYƒ.DA#1,#0‰;READ/WRITEMAXRETRIES(1,0)*¤.PCKSUMƒ.DA#0Œ;USERWTSCHECKSUMS?(Y)0®.PSOUNDƒ.DA#0Œ;SOUNDATENDOFTRANSFER?(Y)Â.*À-IOBÀ-Ö.IOB†.HS01Œ;IOBTYPEà.IOBSLTƒ.HS60Œ;SLOT*$10ê.IOBDRVƒ.HS01Œ;DRIVEô#'0+$80,#0H.‰.DA#'9+$80,#'9+$80,#0J.‰.AS-"YES" L.‰.HS00N.‰.AS-"NO" P.‰.HS00T.‰.AS-"YES" V.‰.HS00X.‰.AS-"NO" Z.‰.HS00 h.PARMS r.PDSLOTƒ.DA#5Œ;DISKSLOT(6)!|.PDRIVEƒ.DA#0Œ;DISKDRIVE(1)†.PSSC….DA#1Œ;SSCSLOT(2)$.PSPEEDƒ.DAHS006.‰.DA#'0+$80,#0,#'1+$80,#08.‰.DA#'2+$80,#0,#'3+$80,#0:.‰.DA#'4+$80,#0,#'5+$80,#0<.‰.DA#'1+$80,#'0+$80,#0>.‰.DA#'9+$80,#'9+$80,#0@.‰.DA#'0+$80,#0,#'1+$80,#0B.‰.DA#'2+$80,#0,#'3+$80,#0D.‰.DA#'4+$80,#0,#'5+$80,#0F.‰.DA#'1+$80,'1+$80,#0,#'2+$80,#0.‰.DA#'3+$80,#0,#'4+$80,#0.‰.DA#'5+$80,#0,#'6+$80,#0.‰.DA#'7+$80,#0".‰.AS-"300" #.‰.HS00$.‰.AS-"1200" %.‰.HS00&.‰.AS-"2400" '.‰.HS00,.‰.AS-"4800" -.‰.HS00..‰.AS-"9600" /.‰.HS000.‰.AS-"19200" 1.‰.PC." Ã-‰.HS00Ü-*À-PARAMETERSÀ->ð-PARMSIZ‚.DA#7,#2,#7,#6,#8,#8,#2,#2„;#OPTIONSOFEACHPARM%.PARMTXT‚.DA#'1+$80,#0,#'2+$80,#0.‰.DA#'3+$80,#0,#'4+$80,#0.‰.DA#'5+$80,#0,#'6+$80,#0 .‰.DA#'7+$80,#0.‰.DA#'1+$80,#0,#'2+$80,#0.‰.DA#00!x-MSG19„.AS-"<-DONOTCHANGE" }-‰.HS004Œ-MSG20„.AS-"APPLEDISKTRANSFER1.21…1994-10-13" ‘-‰.HS8D3–-‰.AS-"PAULGUERTIN:GUERTINP@IRO.UMONTREAL.CA" ›-‰.HS00%ª-MSG21„.AS-"TESTINGDISKFORMAT." ¯-‰.HS00)¾-MSG22„.AS-"AWAITINGANSWERFROM14„.HS8Dö,‰.AS-"CAN'TBEOPENED." û,‰.HS00 -MSG15„.HS8D-‰.AS-"ALREADYEXISTS." -‰.HS00(-MSG16„.HS8D 2-‰.AS-"ISNOTA140KIMAGE." 7-‰.HS00F-MSG17„.HS8D P-‰.AS-"DOESN'TFITONDISK." U-‰.HS00d-MSG18„.AS-"‚ANYKEY:" i-‰.HS y,‰.HS00~,MSG10„.AS"SENDINGFILE" ƒ,‰.HS00’,MSG11„.AS-"ERROR:"ƒ;INVœ,‰.AS-"NONSENSEFROMPC." ¡,‰.HS00°,MSG12„.AS-"ERROR:"ƒ;INV"º,‰.AS-"NOTA16-SECTORDISK." ¿,‰.HS00Î,MSG13„.AS-"ERROR:"ƒ;INVØ,‰.AS-"FILE" Ý,‰.HS00ì,MSGQUIT?" 3,‰.HS0018,MSG05„.AS-"SPACETOCONTINUE,ESCTOSTOP:" =,‰.HS00/B,MSG06„.AS-"ENDOFDIRECTORY,TYPESPACE:" G,‰.HS00"V,MSG07„.AS-"FILETORECEIVE:" [,‰.HS00`,MSG08„.AS-"FILETOSEND:" e,‰.HS00t,MSG09„.AS"RECEIVINGFILE"" í+‰.HS8Dò+‰.AS-"USECHECKSUMS" ÷+‰.HS8Dü+‰.AS-"ENABLESOUND" ,‰.HS007,MSG03„.AS-"USEARROWSANDSPACETOCHANGEVALUES," ,‰.HS8D2,‰.AS-"RETURNTOACCEPT,CTRL-DFORDEFAULTS." ,‰.HS006.,MSG04„.AS-"SEND,RECEIVE,DIR,CONFIGURE, +‰.HS8D00)¬+MSG02„.AS-"ADTCONFIGURATION"ƒ;INV±+‰.HS8D8D8D¶+‰.AS-"DISKSLOT" »+‰.HS8DÀ+‰.AS-"DISKDRIVE" Å+‰.HS8DÊ+‰.AS-"CCSLOT" Ï+‰.HS8DÔ+‰.AS-"HISPEED" Ù+‰.HS8DÞ+‰.AS-"READRETRIES" ã+‰.HS8Dè+‰.AS-"WRITERETRIES"SSC:S"H+MTSSC„.AS-","R+MTSPD„.AS-"ˆ"\+‰.AS-"ADT1.21"ƒ;INVf+‰.AS-"„DISK:S"p+MTSLT„.AS-",D"z+MTDRV„.AS-""+‰.HS8D8D8D„+‰.AS"‚À0À1222‚"„;INV ‰+‰.HS8DŽ+‰.AS"‚"©;INV:˜+HEXNUMƒ.AS"0123456789ABCDEF0123456789ABCDEF012‚"†;INVÄþz#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ     ÈÅÌÌÏ                         ÁÄÔßÓÓ®Óà                    j ÁÄÔ®ÓÓ                         ÁÄÔßÃîÓà                    j ÁÄÔ®Ãà                        ïØÅÒ ±®²±     ±¹¹´­±°­±³ÐÁÕÌ ÇÕÅÒÔÉκ ÇÕÅÒÔÉÎÐÀÉÒÏ®ÕÍÏÎÔÒÅÁÌ®ÃÁÔÅÓÔÉÎÇ ÄÉÓË ÆÏÒÍÁÔ®Á×ÁÉÔÉÎÇ ÁÎÓ×ÅÒ ÆÒÏÍ Ðî±²³´µ¶·±²±²³´µ¶·³°°±²°°²´°°´¸°°¹¶°°±¹²°°°±²³´µ±°¹¹°±²³´µ±°¹¹ÙÅÓÎÏÙÅÓÎÏ`ý þ`ÆÉÌÅ ÔÏ ÒÅÃÅÉÖź ÆÉÌÅ ÔÏ ÓÅÎĺ ÒÅÃÅÉÖÉÎÇ ÆÉÌÅ ÓÅÎÄÉÎÇ ÆÉÌÅ ÅÒÒÏÒº ÎÏÎÓÅÎÓÅ ÆÒÏÍ ÐîÅÒÒÏÒº ÎÏÔ Á ±¶­ÓÅÃÔÏÒ ÄÉÓË®ÅÒÒÏÒº ÆÉÌÅ ÃÁΧԠÂÅ ÏÐÅÎÅÄ®ÁÌÒÅÁÄÙ ÅØÉÓÔÓ®ÉÓ ÎÏÔ Á ±´°Ë ÉÍÁÇÅ®ÄÏÅÓΧԠÆÉÔ ÏΠÄÉÓË®  ÁÎÙ ËÅÙº ¼­ ÄÏ ÎÏÔ ÃÈÁÎÇÅÁÐÐÌÅ ÄÉÓË ÔÒÁÎÓÆÉÖÅ ÃàÓÌÏÔ ÈÉ ÓÐÅÅÄÒÅÁÄ ÒÅÔÒÉÅÓ×ÒÉÔÅ ÒÅÔÒÉÅÓÕÓÅ ÃÈÅÃËÓÕÍÓÅÎÁÂÌÅ ÓÏÕÎÄÕÓÅ ÁÒÒÏ×Ó ÁÎÄ ÓÐÁÃÅ ÔÏ ÃÈÁÎÇÅ ÖÁÌÕÅÓ¬ÒÅÔÕÒΠÔÏ ÁÃÃÅÐÔ¬ ÃÔÒÌ­Ä ÆÏÒ ÄÅÆÁÕÌÔÓ®ÓÅÎĬ ÒÅÃÅÉÖŬ ÄÉÒ¬ ÃÏÎÆÉÇÕÒŬ ÑÕÉÔ¿ ÓÐÁÃÅ ÔÏ ÃÏÎÔÉÎÕŬ ÅÓàÔÏ ÓÔÏк ÅÎÄ ÏÆ ÄÉÒÅÃÔÏÒÙ¬ ÔÙÐÅ ÓÐÁÃź ©ß¢&Êú`„î©…$© [û Bü¤î¹1…¹2… ±ð ðýÈÐö`]ØLšÀá!1?Xu‚”¥»ÑÝî>SÓÓúӠ¬         ÁÄÔ ±®²±     ÄÉÓ˺Ӡ¬Ä   °°°°°°°°°°°°°°°°±±±±±±±±±±±±±±±±²²²    °±²³´µ¶·¸¹ÁÂÃÄÅÆ°±²³´µ¶·¸¹ÁÂÃÄÅÆ°±²   ÁÄÔ ÃÏÎÆÉÇÕÒÁÔÉÏΠÄÉÓË ÓÌÏÔÄÉÓË ÄÒ  ˜™ÿÈÐú`¬È„$ / L ­ 6 ' ¤$±(`æ%¥%Éæ$©L[û¤$‘(`HE쪥ë]‘…ì½…ëh`¢ †ë„좥ë &ì°ÊÐøðI!…ë¥ìI…ìÊÐç¥ë™¥ì™‘ÈÐÔ`¢½äÊ÷`­ëЩ€ – ©  €ªÊÐý,0ÀˆÐö`H­ÀÉ›ð­‰À)ðòhˆÀ`­Àɛ𠭉À)ðò­ˆÀ` Š ¢ÿš,ÀLE Xü  ¢©…% "ü©  &‘( ‘(½±È‘( %‘(æ%Êä ·  … ¥ëÍÐ¥ìÍð©Ð’  æ Îñˆ¥ÉÐ ­Éð,‰ÀÆðLª `ÏÉ „ë„ì„í± ; ª8åí†í £ ðÈÐí` ; Èð±Åíðô˜ £ ÐÚ`  · ð‘ÈÐö` · ¨Ðï` „ë„ì„í±eí ; …í‘ÈÐñ`Žø©…© õ ©ñ®ø½÷ ÷ ½ô 6 ­ÀÉ›ÐLÉ © ì Ù©® Î÷ æ.  ú ©*  îõÎñÄîðÆи`Ò×­õ Õ ®3 ¼6 ©…©…¨L&H   h¨  "  Š ýLÌ ¢ – ©©ð ¢ œ ¢ ­ðÉ#ì­ £ ­  £ LŠ ¢ – © £ ©ð ¢ ¢ œ ­ðÉ#ì­  £ LŠ ŽA ©…© … ©ñ®A ½? 6 ­A Ð+ B ¥ë £ ¥ì £ · ÉðLÉðÚ   "  Š ýLÌ  ˜‘ÈÐû­ £ q · ¬åÈŒî˜ °ƒ¬æȘ °b˜ iŽª©À©ÀŽ¬ Ž¿ èŽSŽ´ ŽÆ  ¢¹j dÈÊö ¾è½Ž ™ø ˆô¢ ­êЮ¬ŽŠ¹Œ.¹`  °°³ °°²± °°´² °°¸´ °°¶¹°°²¹± cŽ3 ¼4 ¢ uý©ŠÐLÌ  ( © õ©øðñ© ì Ù   "  Š ýLÌ  * ©Òm3 £ ¢½ £ ðèÐõ · Ðýäß ½lªÊìß ðȹtÐúð&­Ý ÍÞ Ð©?…2©  ðýȹtð ðýL) ©  ðý©ÿ…2ÊÊ„î œü Žý¤î®Ý èࢭð© [û „$ $ ­Àû,À®Þ ɈÐÞä½léäLìɕнäiÝl©äLìɋРʢŽÞ LìÉŠðÉ Ð èà¢ŽÞ LìÉ„Ð ~ LìÉðÉ›Ðõ ¹à ™äˆ÷`¬äȘ °€˜ íi‰5  LØ „þ /û ‰þ “þ©…­.¹ÉðέŠ¹É·ðÎ M ~ è Õ    ý)ß,ÀÉÓÐ m LHÉÒÐ 8 LHÉÄÐ ¢LEÉÃÐ Ô è LEÉŸÐ  &  ýLHÉÑе­.¹­Š¹LÐ Xü©Ä £ · ð € ðýLª · Ð    ý`   ýI›ÐÑL£ Xü     ¹ä™à ˆ÷© [û¢ ÿŽÝ ©…$½l     —ºç(4);"CATALOG")