IMD 1.16: 28/05/2007 16:31:15 -FOG/UTL013   åååååååååå  åååååååååå  åååååååååå  -FOG/UTL013CTERM C 1CTERM COM@CTERM DOC PLNK0124ASM< PLNK0124COM DIRLABELASMSDIRLABELCOM åSWEEP36 COM\ !"#$%&'()*+,DISK DOC -åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå/* Configurable Terminal Program, (c) 1981 by Joe Felsenstein */ /* OK to copy for nonprofit purposes */ /* This is the version preconfigured for the Osborne-1 */ #include "B:BDSCIO.H" #define TRUE 1 #define FALSE 0 #define BUFRåSIZE 32000 #define CTRLD 4 #define CTRLE 5 #define CTRLF 6 #define CTRLG 7 #define LF 10 #define CR 13 #define CTRLR 18 #define CTRLW 23 #define CTRLZ 26 /* these following d  eclarations declare the configuration parameters */ int halfduplex; char cpch; /* external storage location for CPM 2.x BDOS(6, ) calls */ char iobuf[BUFSIZ]; /* the IO buffer */ char filename[80]; /* room for a file name */ char buffer[BUFRSIZE printf("%s\n","(type Y or N)"); c = getchar(); printf("\n"); if ((c=='Y') | (c=='y')) striplf = TRUE; else striplf = FALSE; ]; /* the storage buffer */ int stash, buflong, bsize; modemrdy() { int cx; cx = call(0x4000, 0, 0, 0, 0); if ((cx & 0x01) != 0) return(TRUE); else return(FALSE); } modemread() { int x; x = bdos(3, 0); /* Os gotcr = FALSE; for (i = 1; i <= buflong; i++) { c = buffer[i]; if ( (c == LF) && gotcr && striplf ) ; else modemsend (c); borne modem port is CP/M Reader device */ return (x); } keyrdy() { int x; cpch = bdos (6, 0xFF); if (cpch != 0) x = 1; else x = 0; return(x); } keyread() { char ch; ch = cpch; /* if keyrdy, char if (!halfduplex) putch (c); if (striplf) gotcr = (c == CR); } printf("%s\n", "------ FINISHED TRANSMITTING BUFFER -----"); break; case CTRLE : break;  was stored in cpch */ return(ch); } modemsend(ch) char ch; { int cx; cx = bdos(5, ch); /* Osborne modem output is on CP/M list device */ if (halfduplex) putch(ch); } buferrmsg() { printf("%c%c%c%s", CTRLG, CTRLG, CTRLG,  case CTRLF : printf("%s", "name of file to read from your disk? "); gets(filename); i = fopen(filename, iobuf); buflong = 0; if (i == -1) "BUFFER FULL! "); printf("%s\n", "BUFFER FILLING TURNED OFF!"); } docommand(ch) char ch; { int i, gotcr, striplf; char c; switch (ch) { case CTRLD : printf("%s", "Want to change to ? ");  printf("%s %s\n", "Can't find file:", filename); else { i = c = getc(iobuf); while ( (i != -1) && (c != CTRLZ) ) { buffer[++buflong] = c;    putch(c); i = c = getc(iobuf); if (buflong == bsize) { buferrmsg(); i = -1; } }  } configure() { char c; int i; printf("\n%s\n", "Want terminal to be half-duplex? (Y or N)"); c = getchar(); halfduplex = (toupper(c) == 'Y'); c = call(0x1F70, 0, 0, 0, 0); /* move modem ready routine */ poke (0x0003, fclose (iobuf); printf("%s\n", "------- FINISHED READING FILE --------"); } break; case CTRLR : stash = !stash; if (stash) (peek(0x0003) & 0xF3) | 0x04); /* set IOBYTE */ } main () { char ch, kch; int x, i; printf("%s\n", "Configurable Terminal Program, v2.0"); printf("%s\n", "(c) 1981 by Joe Felsenstein"); printf("%s\n\n", "OK to copy for nonpr buflong = 0; break; case CTRLW : printf("%s ", "name of file to write on your disk:"); gets(filename); i = fcreat(filename, iobuf); if (i != -1) { ofit purposes"); configure(); printf("\n%s\n", "Commands: (^ indicates these are control characters)"); printf("%s\n", " ^D Dump contents of buffer to modem"); printf("%s\n", " ^E Exit to CP/M"); printf("%s\n", " ^F Fi for (i = 1; i <= buflong; i++) { putch(c = buffer[i]); putc(c, iobuf); } putc(CTRLZ, iobuf); fflush(iobuf); ll buffer from CP/M file (asks for name)"); printf("%s\n", " ^R toggles filling of buffer from modem port"); printf("%s\n", " ^W Writes buffer to CP/M file (asks for name)"); printf("%s\n", "Now you are a terminal (control-E to stop fclose(iobuf); printf("%s\n", "---------- FILE WRITTEN ------------"); } else printf("%s %s\n", "ERROR IN CREATING FILE:", filename); break; } being one)..."); stash = FALSE; buflong = 0; bsize = BUFRSIZE; do { if (modemrdy()) { ch = modemread(); if (stash) { if (buflong == bsize) { buferrmsg(); stash = !stas  h; } else buffer[++buflong] = ch; } putch(ch & 0177); } if (keyrdy()) { kch = keyread() & 0177; /* automatically strip parity bit */ switch (kch) { å case CTRLD : case CTRLE : case CTRLF : case CTRLR : case CTRLW : docommand(kch); break; default : modemsend(kch); bråeak; } } } while ( kch != CTRLE); exit(); }  docommand(kch); break; default : modemsend(kch); brååååå  *ùÍKÍžÃ+Aže_ÂÃ'Ã+ÃFÃŽÃrÃÃû Í– þ8Ê{ æÄ‚w#w#wÑÁÉÍÆÃÞá^#V#å*~#foÉá^#å*~#foÉá^#V#å*nÉá^#å*nÉá^#V#åë ~#foÉá^#åë& ~#foÉ!È+É!È#É!Ø+É!Ø#É!ð+É!ø+ÉÈÉÈÉØÉØÉðÉøÉ}»À|ºÉëz¼À{½Éë|ºÀ}»Éë|ªòìz5>sÍ‹5>@2=Ã#R1Í¿5Ã#ÍÑ(Â,#:==2=áñÍ)ÉÍê(Â@#>sÍ‹5Ã#͘(ÂY#X1:à<·ÊS#]1Í¿5Ã#ˆ2Í¿5Ã#*="ü<*&="þ<:$=æÊÃ#:à<·Â¤#Íê(—#>>Í‹5:&=Í‹5c1Í¿5Ã#f1Í¿5¯2=Ã#Íê(—#>Í‹5:&=Í‹5>{Í‹5c1Í¿5Ã#Íê(ÂÜ#:$=æÀµ#>}Í‹5c1Ú#:$=æÀÄ;-͘(Âó#>&Í‹5¯Í‹5f2Ú#:$=æÊ$Ív+è":·ð7Éë|ªòó|·ð7ÉzõÍZëÍZëÍ)ñ·ð|/g}/o#É|µÈÕå͉ÑÍk|/g}/o#Ñɯ2qÍZëÍZÍk:qÐ|/g}/o#É|·ð/g}/o#:q<2qÉÅÍqÁÉDM!x±ÈxGyOÒƒë)ëÃv|µÈÅÍ”`iÁÉ|·ú )ÖëxõÍÝÚ·Õz/W{/_ѯzW{_ñ=ÈõyOxGæ¯2qÍZëÍZë͉ÃM|ºØÀ}»Éëȯ|g}oÃæëÈ)Ãô|/g}/o=æÂ$Í,Ív+Ã2#:$=æÀ>åÊ$$>ÕÍ‹5Ív+>ÑÍ‹5>@2$=Ã2#å*="ü<áä1Í¿5:=æþö2=É"ü<|·Âs$}·Âd$[2Í¿5Éõñõ·Êz$Âg$ñ[3Í¿5Éñ>�GÈ>)Í‹5Ã$#Íž*ÍD)ñõÍ�,ͶÍÏ,Ív+Í+4þÊʱ$ÃÂÃmÃ5 Ãý ÃW È Ã&Ãð Ã< Ã] Ã'Ã@Å!úÿ9ùDM!\ å!€ åÍ¡ÑÑ!„ å!  åÍ¡ÑÑ!¤ å!Æ åÍ¡ÑÑͤ!Ë å! åÍ¡Ñ#Éz/W{/_É!9~#foÉ!à !à ! à ! à !à !à Ÿ!9Å~#ÂAÁÉá"s!`å*"³!è"µ!ÜY"—>Û2­>Ó2°>É2¯2²!Ì"�!"“!@"‘!"• ÍæÊžÍ!€ßF#x·Â±Ã~#±¯!ßb¯2r~#þ ÊÈ·Êþ"ÂÞ2rÃß+}|~#·ÊÅG:r·xÁÊþ"Âæ¯2rÑ! å!0 åÍ¡ÑÑ!4 å!K åÍ¡ÑÑ!O å!„ åÍ¡ÑÑ!ˆ å!¼ åÍ¡ÑÑ!À å!õ åÍ¡ÑÑ!ù å!1 åÍ¡ÑÑ*Y�¯w#w*[�¯w#w*]�6#6}ͧ|µÊëͪë`isÍMY�|µÊØÍM[�åÍM]�ÑÍå¸Í­ÍMY�|µÍ�å*Y�Ñs#rÃØ*[�^#Vr+sëå*YÑå`inëás`in&|¢g}£oåͰÑͳ|µÊE Ͷ|¢g}£oë+w#þ Âæ+6#ÃÈÕ!×6#¯2w2x*sé!ÿÿÉ>õÍrÚ<o&åÍFáñ=þÂ-ÃÍ`Í ÍrÚ'~æÊhåÍÅÍëÍÁá6þÿ!À+ÉÍ`WÖØþ?ØÕ_!×~æ7ÑzÈ?ÉÍ`ÅÍ åþ:>ªÍÖ@w#ÍGþ.¶ÍƯww#Ã?Åþ*>?ÊéÍñÚçw#ÂÇÁÍñØÃÞ> w#ÂéÁÉÍþ.7Èþ:7Èþ7È! s! n}þÊ' þÊ' þÊ' þÊ' þÊ' Ã6 ! n&å͹ÑÃE ! n&åͼÑÃE ! n}þÂqÍ¿ë!9ùëÁÉConfigurable Terminal Program, v2.0%s (c) 1981 by Joe Felsenstein%s OK to copy for nonprofit purposes%s Commands: (^ indicates these are control characters)þ!ÉþaØþ{ÐÖ Éþ Ê þ Ê ÉÅÍ`·OÂE×!·æyÂ6ÁÉÕ$Ñ Â-7ÁÉÍrÚBÖo&))T])))ë!·yÁÉÕÅõå€ÍáñÁÑÉV5ñÉå:=æÂb#:=æÂù#:$=æÊ2#Ív+:à<·Âò"Íê(ÂÃ">6Í‹5:&=Í‹5Ã#*&=|µÂÔ"M1Í¿5Ã#>6Í‹5:&=Í‹5>#Í‹5>6Í‹5:'=Í‹5Ã#*&="ü<Íê(Â#>Í‹5:&=Í‹ %s ^D Dump contents of buffer to modem%s ^E Exit to CP/M%s ^F Fill buffer from CP/M file (asks for name)%s ^R toggles filling of buffer from modem port%s ^W Writes buffer to CP/M file (asks for name)%s Now you   are a terminal (control-E to stop being one)...%s ÃJ ÃmÃCÛÃxÖáÅ!ýÿ9ùDM!Î å!ø åÍ8 ÑÑÍ; ë`is`in&åÍ> ÑYÍåÍ�å*Ñs#r!å!å!å!å!påÍA ÑÑÑÑÑë`is!åÍG Ñó|¢g}£o|²g}³oå!åÍD ÑÑë!9ùëÁÉWant terminal to be half-duplex? (Y or N) %s à ÛåÍ` ÑÑ* åÍl Ñ*###å* åÍ{ ÑÑë`is#rÍ�#|µÊÂ`i6#6Í�åÍM[�ÑÍÚŒÍ�å*YÑnë! sÕÍi Ñ*###å! n&åÍ~ ÑÑ`i^#Vr+sÃ?*###å!åÍ~ ÑÑ*###åÍ� Ñ*###åÍx Ñ!ßå!åÍ` ÑÑÃØ* å!å! åÍ` ÑÑÑÃÛë!9ùëÁÉWant to change to <ÃxÅ!þÿ9ùDM!å!å!å!å!@åÍ ÑÑÑÑÑë`is#rÍ�|¢g}£o|µÊH !ÃN ÃN !ÃN ë!9ùëÁÉÃ] èÅ!þÿ9ùDM!å!åÍZ ÑÑë`is#rÍ�à ë!9ùëÁÉÃŽ ÃmÅ!º å!å!å!å!È åÍ‹ ÑÑÑÑÑ!Ñ å!ì åÍ‹ ÑÑÁÉBUFFER FULL! %c%c%c%sBUFFER FILLING TURNED OFF!%s Ãö èÅ!þÿ9ùDM!ÿCR>? %s(type Y or N)%s ------ FINISHED TRANSMITTING BUFFER -----%s name of file to read from your disk? %sCan't find file:%s %s ------- FINISHED READING FILE --------%s name of file to write on your disk:%s ---------- FILE WRITTEN ---------å!åÍó ÑÑå*##ÑsÍw}·Ê& `i6#6Ã, `i¯w#wÍ�Ã3 ë!9ùëÁÉÅ!ÿÿ9ùDMÍwë`is`in&ÃT ë!9ùëÁÉÄ ÃmÃCÃ'Ã&ûÃÓÃÈ ÃÃ8Ã�ÃÍÅ!ùÿ9ùDM! n}þÊ® þʾþÊÁþÊÍþÊûÃÛ!äå!åÍ` ÑÑ! å!åÍ` ÑÑÍc ë! s!åÍ` Ñ! n}þYÍ�å! n}þyÍ�Ñ|²g}³o|µÊ! ---%s ERROR IN CREATING FILE:%s %s Ã0èÃ&Å!þÿ9ùDM! n&å!åÍ*ÑÑë`is#rÍ\|µÊd! n&åÍ-Ñë!9ùëÁÉÃvÃÉÅ!yÿ9ùDM!‹ å`iåÍpÑÑ`iåÍsÑë!‡9ùëÁÉáûÅ!9ùDM! n&åÍžÑ|µÊÈ! n&àÿÃÍ! n&ÁÉÁÉÃÙÃèÅ!9ùDMÍ�å!åÍ�åÍÖÑÑëás#rz·ò!ÿ6#6Ã! ¯w#w! ¯w#w`i6#6Í�åÍM[�ÑÍÚ®Í�å*YÑnë! s! n}þ ÂeÍ�|µÊeÍ�|µÊeÃq! n&åÍf ÑÍ\|µÂ†! n&åÍi ÑÍ�|µÊ¢! n}þ Í�ë! s#r`i^#Vr+sÃ!å!GåÍ` ÑÑÃÛÃÛ!Kå!qåÍ` ÑÑ* åÍl Ñ*###å* åÍo ÑÑë`is#r*[�¯w#wÍÿÁÉÍ�##¯w#wÍ�~#foÁÉÁÉÃ%ÃCèÃ,Å!þÿ9ùDMÍ�|µÂ<ÍÃþÍ�+++|µÂS!åÍÑÃþÍ�##^#Vr+sz³Ê}Í�^#Vr+sën&Ãþ!åÍ�åÍ�~#foåÍ"ÑÑÑë`is#r!ÍÚºÍ�##^#Vr+sëÃþÍ�##åÍ�€Í?+ëás#rÍ�åÍ�ëás#rÍ�^#Vr+sën&Ãþë!�#|µÂ"* å!tå!…åÍ` ÑÑÑÃÊ*###åÍr Ñë! s`is#6Í�#|µÊ²! n}þʲ*[�^#Vr+sëå*YÑå! nëás! n&åÍi Ñ*###åÍr Ñë! s`is#6ÍM[�åÍM]�ÑÍå¯Íu `i6ÿ#6ÿÃ9*###åÍx Ñ!Œå!³åÍ` ÑÑÃÛÍMY�|µÍ�å*Y�Ñs#rÍMY�|µÊø*[�¯w#wÃÛ!·å!9ùëÁÉà âÅ!9ùDMÍ�ÍëÒ'!ÁÉÍ�~#foåÍ ÑÁÉÁÉÃ>Ã¥Å!9ùDMÍ�åÍ�åÍ;Ñëás#rz·òc!ÿÿÁÉÍ�åÍ�ëás#rÍ�##6#6Í�~#foÁÉÁÉÜÃÖèÃÅ!9ùDMÍ�+|µÂ¼! n&åÍ“ÑÁÉÍ�++|µÂÚ! n&å!åÍ–ÑÑÁÉÍ�+++|µÂù! n&å!åÍ–ÑÑÁÉÍ�+++  +|µÂ1! n}þ Â! å!åÍ–ÑÑ! n&å!åÍ–ÑÑÁÉÍ�##^#Vr+sz³ÊbÍ�^#Vr+sÕ! nëásë&ÁÉ!åÍ�åÍ�~#foåÍ™ÑÑÑÍåÊŒ!ÿÿÁÉÍ�##6ÿ#6Í�åÍ�ëás#rÍ�^#Vr+sÕ! nëásë&ÁÉÁÉÃÙÃÃnÿÅ!þÿ9ùDMÍ�ÍëÒô!ÃÍ�##~#fosënëás{·Ê!œ ^#Vr+sÃñ!� n}·ÊK!’ ^#Vr+s!ÍÒK!œ ^#Vr+së6 Ã$Ãa!œ ^#Vr+sÕ`inëásÃw!œ ^#Vr+sÕ`inëásÃXÍ�œ6ë!˜9ùëÁÉÃ�ÃÖÅ!9ùDMÍ�n}·Ê¹! ^#Vr+sën&åÍŒÑ×ÁÉÅ!9ùDM! n&aÍùͯÚæ! n&zÍͯÁÉÁÉÃðÃêÅ!ÿÿ9ùDMÍ�åÍ�Íå !ÃÍ�##~#fo€ëÍËÍúë`is#rÍ�åÍ�åÍ�~#foåÍÐÑÑÑåÍ�ÑÍåÊZ!ÿÿÃÍ�+€Í?ë`is#rÍ�##~#fo|µÊê!€åÍ�åÍ�åÍ�ÑåÍÓÑÑÑÍ�##å~#foåÍ�Ñëás#rÍ�å~#foåÍ�ÑÍúëás#r!å!ÿÿåÍ�~#foåÍÖÑÑÑÃÍ�##6#6Í�åÍ� ÑÍìÒ@Í�^#Vr+sÕÍ� ÍëÒ-Í�0Ã5Í�7ëás!&ËÍ� åÍ�åÍ� Ñ͉åÍ�åÍíÑÑÑë`isÍ� åÍ�åÍ� ÑÍ)åÍ�åÍíÑÑÑ`in&#&Ëë!9ùëÁÉÅ!9ùDM! n&0ÍùͯÚ¿! n&9ÍͯÁÉÁÉÃÉÔÅ!þÿ9ùDM`i¯w#wÍ�~#fon&åÍÆÑ}·ÊÍ� Í?åÍ�^#Vrëás#r!Ãë!9ùëÁÉÃ)ÃêÔÃÃÛÅ!hÿ9ùDM!ž ^#Vr+së~#foë! s#rÍ�žë!– s#r! ^#Vr+sënë`is{·Êz`in}þ%Âd! ë!� s#r!” 6#6!‘ s!� s!� sÍ�n}þ-¹! ^#Vr+s!� 4Í�n}þ0ÂÉ!‘ 4Í�n&åÍ Ñ}·Êæ! åÍ#ÑÃé!ë!’ s#r! ^#Vr+sënë+sënѯgÐÿë`is#rÃ×Í�Ãë!9ùëÁÉÍ Å_þ Â; Í ÍÁÉà :w·oÊR¯2w&ÉÅÍÁþÊþ!ÿÿÈoþ ÂuÅ ÍÁ. &ÉÍ7Å*§ë*¥DM:¡!”å*Ÿå*£ÉÁÉÍ7*Ÿ:¡wÉÍ n&ÉÍ7Å:ŸO*¡ëÍo`ÁÉÍ Å6ÿ ëÕÕÕÍ Íá#F#Ñx·Êã~#ÃÖ¯áÁÉÍ7¯Í,Ú2që*ŸëÅÍ&`is{þ.Â1! åÍ#Ñë!” s#r!� 4! ^#Vr+sënë`is`in&åÍ&Ñ}þDÊ]þUÊ™þXÊ¢þOÊ«þCÊñþSÊ"ÃNÍ�–~#fo|·ò™!� ^#Vr+së6-Í�–åÍ�–~#foÍúëás#r!’ ^#Vr+s! 6 ñ! 6ñ! 6!’ å~#foå! n&å!– ^#Vr+së~#foå!� åÍÑÑÑѯgÍúëás#rÚ!� ^#Vr+sÕ!–ÍþÿÁÊ:qÍ):¡·Ê$=Ê$=Âr:qo&ÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u*£|µÊ‚*¡ëÍ*sëÕÍÑþÁÊÅþ‡! ~þ€Â‚6*uÁÉ*£+"£*¡€"¡*u#"uÃNÃ#îÃ*ÃèÍ7*ŸÅåͨÑ\ÍþÿÁÊ!å*ŸåÍ«ÑÑÉÍ Åþ Âê Í> _Í ÍæÂúÁÉÍþ ^#Vr+së~#foëás!’ ^#Vr+sÚ!� n}·Â5!” 6È#6!– ^#Vr+së~#foë! s#rÍ�n}·ÊšÍ�”|µÊš!� ^#Vr+sÕ! ^#Vr+sënëás!” ^#Vr+s!’ ^#Vr+sÃPÍ��6! ë!� s#r!� n}·Âñ!’ ^#Vr+s!ÍÒñ!œ ^#Vr+sÕ!‘ n}·Êè!0Ãë! ëásöÍ�œå!� ^#Vr+ÊÁÉÍ7:ŸÍ)Ú~æÊÅ:ŸÍ,"s!"u€Í*£|µ*uÊl*¡€€~#ÂC"¡*sëÍ·*uÂl#"u*£+"£Ã0ÁÉÍ7*£|µÈÅDM*¡ë*Ÿ͹Ú�><ê‘í°ÁÉ~# x±Â‘ÁÉ ë ë><ê­í¸ÁÉ~+ x±Â­ÁÉ|ºÀ}»ÉÃÅÃ?Í7:ŸÍ,ÚÅå*ŸåÍÂÑë:£*¡·Êç}|æ2qã å¾ÊãëÕÍ  ÑáþÿÂÑÁÃ:qwÕÍÑþÿÊ ! Ñ{æwëÁÉÍ Åë!\Í&Í!ÁÉÍ Í,ÚÅ FN¯xg>G�oy òc$ÁÉ@!� ~# ÂyÉóÓ>2ï:*2@Ó>2ïû:@oÉì Configurablå Termi� naì  program¬  buô insteaä thå versioî preconfigureä  foò � the Osborne-1. 5®  Tï ruî thå prograí jusô typå CTERM®  Answeò  thå � questioî aó tï whetheò yoõ wanô halæ oò fulì duplex®  Thå � rest is self-explanatory (more or lesë "ÖÍIÉÍ È!"ë :Ï·Â1 ÍRõæÄÝ ñöÍO*ÒÍUÉÍRæÌ× ÍXë*ÒÍóÄ× ÉG:Ï·xÊl ÅÍ: þ *ÒÌ© :ï þÁÒl xÍ– *Ð#"ÐÉåEÍH áDÃH Æ0þ:ØÆÉÍ~ !ï ^4! wÉõæ͆ ñæÆ *Òë!ï å6zÕÍ– Ñ{Í– á4ÉõÅ>RÍÁñÉõå>VÍáñÉõ>DÃæ õ>PÃæ õ>LÃæ õ>NÍñÉCONST‘LOCs). 6® Oncå iî CTERM¬ ^Æ permitó yoõ tï filì youò buffer witè  á nameä filå yoõ have¬  anä ^Ä permitó yoõ tï  dumð � youò  bufferó  contentó tï thå seriaì porô foò  transmis� sion®  ^Ò  permitó yoõ tï opeî youò buffeò foò  incominç � data¬  anä  ^ CTERM EXPLANATION copyright (c) by Joe Felsenstein, 1982. It is OK to copy cterm and this text for nonprofit purposes. 1® CTERÍ nï longeò assumeó thaô thå CP/Í seriaì porô � ió addresseä RDR:=PTR:® CTERÍ takeó carå oæ tÒ repeateä wilì closå youò buffeò  (E.g®  iô � "toggles¢  youò  buffer)®  ^× wilì theî  permiô  yoõ  tï � "write¢ (e.g® save© thå datá loadeä iî youò buffeò afteò � ^Ò  ió useä intï á filå nameä bù you®  NOTEº  Wheî ^Ò ió � used¬ iô startó fillinç froí haô itself® � Tï booô CTERM¬ alì yoõ havå tï dï ió typå CTERM¬ carriagå � return¬  answeò yeó oò nï tï halæ duplex¬ anä you'rå off® � Á staô commanä ió nï longeò necessary. 2®  Thå  bauä  ratå foò CTERÍ ió determineä bù  thå � systeí  SETUÐ programthå beginninç oæ thå buffer¬ � causinç losó oæ alì previouó contentó oæ thå  buffer®  ^Å � wilì  permiô yoõ tï exiô froí thå terminaì prograí intï á � CP/Í commanä line® 7®  Alì  otheò  characteró typeä gï ouô  thå  seriaì � port®  Alì  characteró r¬  whicè haó thå twï optionó oæ  30° � bauä  anä 120° baud®  Yoõ shoulä checë tï makå surå  thå � bauä ratå ió whaô yoõ want® 3® Thå source-codå filå CTERM.à ió iî BDÓ C¬ which runó beautifullù iî Osborne-1's. 4®  Thió versioî ió NOÔ thå fuleceiveä aô thaô porô gï ontï  thå � screen. 8®  Buffeò  sizå  shoulä bå 32,00°  characteró  (NOÔ � 32K)®  Originallù á buç iî thå prograí limiteä iô tï 8K¬ � buô thió haó beeî repaired® 9®  Thió prograí ió fullù legal® Owinç tï thå wisdoí � a  nä public-spiritednesó oæ BÄ Software'ó Leoò Zolman, theù placå nï restrictioî oò royaltieó oî distribution oæ compileä code¡ Pleaså feeì freå tï distributå the codå tï otheò Osbornå users® Alì É asë ió that: a® Nï onå makå á profiô froí thåå distribution of this software. b. No one attempt to remove my name or copyright. Joe Felsenstein Seattle, 2/5/82 Document revised by D. Slaughter 5/4/82åååå; PLINK.ASM ; (latest version JAN 24 1982 by BC Reagan) ; (prior version OCT 18 1980) ; ; PLINK - SUPPORT COMMUNICATIONS LINK WITH CYBER ; ;PLINK IS A CP/M TRANSIENT COMMAND WHICH ALLOWS THE USER TO ;ESTABLISH A COMMUNICATIONS LINK åWITH A REMOTE COMPUTER ; ; ORIGINAL BY L.E. HUGHES EDCAM JULY, 1977 ; ; This version by Keith Petersen, W8SDZ. ; WITH HEATH EQUATES ADDED BY TOM JORGENSON ; ; TRS-80 MODEL 1 mods by Steve Vinokuroff, Vanc CBBS ; Optional Triger characters   by Steve Vinokuroff ; TRS-80 mods by Dennis Breckenridge, Burnaby CBBS ; D.C.Hayes mods by Bruce Ratoff, Iselin NJ Remote CP/M ; CP/M Alternate Console Device mods added by ; Ben Reagan, Lynnwood, WA ; ;This program currently supports the following mY SAVE INCOMING ASCII IN RAM BUFFER * ; * FOR LATER TRANSFER TO DISK * ; * CONTROL Q WRITE RAM BUFFER TO DISK - ASKS * ; * FOR DRIVE AND FILENAME.TYP * ; * DELETE BACKSPACE WHEN IN COMMAND MODE * ; * ASKING FOR FILENAME * Š; * Codems ; or computers via conditional assembly. ; ; 1. PMMI modem ; 2. ANY serial i/o board (TUART INCLUDED) ; 3. TRS-80 model 1 ; 4. TRS-80 model 2 ; 5. HEATH H8 WITH 8251 UART AT PORT 330Q ; 6. D.C.Hayes 80-103A or Micromodem 100 ; 7. External ONTROL U ABORT CURRENT LINE WHEN IN COMMAND * ; * MODE ASKING FOR FILENAME * ; * * ; * (NOTE: ALL OTHER CONTROL CODES ARE PASSED TO * ; * MODEM OUTPUT) * ; **************************************************** ; ; ;CONDITIONAdumb modem connected to a physical CP/M ; device (TTY, CRT, BAT, or UC1 but different than ; local console) ; 8. OSBORNE 1 ; ;-->NOTE: IF ASSEMBLED AS WRITTEN WILL WORK WITH AN external dumb ; modem connected to the CP/M 'CRL ASSEMBLY SWITCHES <<-- SET FOR YOUR SYSTEM ; TUART SET 0 ;CROMEMCO TUART I/O BOARD PMMI EQU 0 ;PUT A 1 HERE IF YOU HAVE A PMMI DCH EQU 0 ;PUT A 1 HERE IF YOU HAVE A D.C.HAYES TRS1 EQU 0 ;PUT A 1 HERE IF YOU HAVE TRS80-MOD1 TRSPT EQU 0 ;PUT 1 HERE IT' device port. ; ;PLINK CURRENTLY SUPPORTS TWO WAY TRANSFER OF TEXT FILES ;BETWEEN THE CP/M DISK AND THE REMOTE COMPUTER. THE FOLLOWING ;CONTROL CODES MAY BE INITIATED FROM THE CONSOLE KEYBOARD: ; ; **************************************************F YOU HAVE TRS80-MOD2 ;USING PICKLES & TROUT CP/M 2.X H84 EQU 0 ;PUT 1 HERE IF YOU HAVE H8/H8-4 CPMDUM EQU 1 ;PUT 1 HERE IF YOU ARE USING A CP/M ;CONSOLE I/OBYTE DEVICE WITH AN EXTERNAL ;DUMB (ACOUSTIC) MODEM. BE SURE TO ;SET THE ALTERNA** ; * COMMANDS: * ; * * ; * CONTROL E EXIT PLINK TO CP/M WARM BOOT * ; * CONTROL T TRANSMIT ASCII FILE TO MODEM. * ; * ASKS FOR DRIVE AND FILENAME.TYP * ; * CONTROL C ABORT FILE SEND TO MODEM * ; * CONTROL TE CONSOLE DEVICE BELOW. IF CPMDUM ALTCON EQU 1 ;PUT ALTERNATE (MODEM) CONSOLE ;DEVICE HERE. 0=TTY 1=CRT 2=BAT 3=UC1 ;IMPORTANT: THE 'ALTCON' MUST BE ;DIFFERENT THAN THE NORMAL CONSOLE ;DEVICE USED BY THE LOCAL OPERATOR, ;SINCE THIS   PROGRAM SWITCHES BETWEEN ;THE TWO DEVICES. ENDIF IF H84 TUART SET 1 ENDIF ; OSBORNE EQU 1 ;PUT 1 HERE IF OSBORNE 1 ; INIT$REQUIRED EQU 1 ;PUT 1 HERE IF INITIALIZATION NEEDED ;(NEEDED FOR MOST VERSIONS INCLUDING ; 'CPMDUMSK BUFFER ADDRESS ; ;ASCII CONTROL CHARACTERS ; CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED DEL EQU 7FH ;DELETE (RUBOUT) BELL EQU 07H ;BELL SIGNAL TAB EQU 09H ;HORIZONTAL TAB XON EQU 11H ;X-ON CHARACTER NULL EQU 00H ;NULL CHAR ; ;THE FOLL') ; IF TRS1 OR PMMI OR TUART OR DCH PORT EQU 1 ENDIF ; IF TRSPT OR CPMDUM PORT EQU 0 ;STILL NEED THE SWITCH ENDIF ; ; ; ;BDOS ENTRY POINT AND FUNCTION CODES ; IF NOT TRS1 BASE SET 0 ;STANDARD CPM ENDIF ; IF TRS1 OR H84 ŠBASE SET 4OWING "TRIGER" EQUATE IS SET TO "LF" (LINEFEED) ;BY DEFAULT. AN OPTIONAL TRIGER CHAR MAY BE PASSED VIA FCB1 ; ; IE: PLINK B WILL SET TRIGER TO "BELL" ; ;THE FOLLOWING OPTIONS ARE ALLOWED ; ; 1. B = BELL 07H ; 2. X = XON 11H ; 3. U = UPLOAD NO200H ;TRS-80 MODEL 1 CP/M BASE ADDRESS ENDIF ; BDOS EQU BASE+5 RESDSK EQU 13 ;RESET DISK SYSTEM OFFC EQU 15 ;OPEN FILE CFFC EQU 16 ;CLOSE FILE DFFC EQU 19 ;DELETE FILE RRFC EQU 20 ;READ RECORD WRFC EQU 21 ;WRITE RECORD MFFC EQU 22 ;MAKE FILE  TRIGER CHECK AT ALL ;ANY OTHER ASCII CHARACTER MAY BE PASSED THROUGH FCB1 ; ; TRIGER EQU LF ;DEFAULT VALUE Š; ; ;WARNING CHARACTER FOR LOW MEMORY ; WRNSIG EQU BELL ;IF YOU HAVE ONE, PUT 'BELL' HERE ;...ELSE PUT '*' HERE. ; ;MODEM I/O PORT ADIOGET EQU 7 ;GET I/O STEERING BYTE IOSET EQU 8 ;SET I/O STEERING BYTE ; ; TRS80 PICKLES AND TROUT SIO CALLS ; OFFSET BY -3 THAT IS ADD 3 TO ALL CALLS ; SETSIO EQU 30H ;SET UP Z80 SIO SIOTST EQU 33H ;READ SIO STATUS SIOINP EQU 36H ;INPUT A CHAR SIODRESSES ; IF PMMI MODD EQU 0C1H ;MODEM DATA PORT MODS EQU 0C0H ;MODEM STATUS PORT MODINIT EQU 29H ;INITIALIZE BYTE ORIGINATE, ;7 DATA, EVEN PARITY, 1 STOP ENDIF ; IF DCH MODD EQU 80H ;MODEM DATA PORT MODS EQU 81H ;MODEM STATUS PORT MODINIOUT EQU 39H ;OUTPUT A CHAR ; ;DEFAULT FCB AND FIELD DEFINITIONS ; FCB EQU BASE+5CH FN EQU 1 ;FILE NAME FIELD (REL) FT EQU 9 ;FILE TYPE FIELD (REL) EX EQU 12 ;FILE EXTENT FIELD (REL) NR EQU 32 ;NEXT RECORD FIELD (REL) DBUF EQU BASE+80H ;DEFAULT DIT EQU 05H ;7 DATA, EVEN PARITY, 1 STOP ENDIF ; IF TRS1 MODD EQU 0EBH ;TRS80 MOD 1 RS232 DATA PORT MODS EQU 0EAH ; AND THE RS232 STATUS PORT ENDIF ; IF TUART MODD EQU 0D8H ;<<--MODIFY FOR YOURS MODS EQU 0DDH ;<<--MODIFY FOR YOURS ENDIF ; ;  MODEM STATUS PORT BIT DEFINITIONS ; IF PMMI MTBE EQU 01H ;MODEM TRANS. BUFFER READY FLAG MRDA EQU 02H ;MODEM RECEIVE DATA AVAIL. FLAG MXOR EQU 03H ;MASK TO MAKE MTBE AND MRDA "LOW TRUE" ENDIF ; IF DCH MTBE EQU 02H ;MODEM TRANS. BUFFER READY FLA JMP SKP ; TRGBEL MVI A,BELL JMP SETTRG ; TRGXON MVI A,XON JMP SETTRG ; TRGUPL XRA A ;ZERO OUT JUMP STA OVERL1+1 ;CHANGE CHECK FOR C/R TO NULL STA OVERL2+1 ;AND SEND LINEFEEDS AS WELL JMP SKP ; SKP EQU $ IF H84 MVI A,80H; SET DLAB BG MRDA EQU 01H ;MODEM RECEIVE DATA AVAIL. FLAG MXOR EQU 03H ENDIF ; IF TRS1 MTBE EQU 40H ;TRS80 MOD1 RS232 BUFFER READY MRDA EQU 80H ;MODEM RECEIVE DATA AVAIL. MXOR EQU 0C0H ENDIF ; IF TUART ;<<--OR ANY OTHER SERIAL I/O MTBE EQU 20H ;<<--MOIT IN 8250 UART OUT 0DBH; 8250 AT PORT D8H (330Q) NOP ! NOP ! NOP NOP ! NOP MVI A,01H; MSB OF BAUD RATE DIVISOR OUT 0D9H; ...TO UART NOP ! NOP ! NOP NOP ! NOP MVI A,80H; LSB OF BAUD RATE DIVISOR OUT 0D8H; ...TO UART NOP ! NOP ! NOP NODIFY FOR YOURS MRDA EQU 1H ;<<--MODIFY FOR YOURS ŠMXOR EQU 21H ;<<--MODIFY FOR YOURS ENDIF ; ; **MAIN PROGRAM** ; ORG BASE+100H LINK: IF NOT OSBORNE LXI SP,STACK+64 ;CREATE LOCAL STACK ENDIF LHLD BASE+1 ;POINT TO CP/M JP ! NOP MVI A,03H; 8 BITS, 1 STOP BIT, NO PARITY, DLAB RESET Š OUT 0DBH; ...TO UART NOP ! NOP ! NOP NOP ! NOP MVI A,0; RESET CONTROL REGISTER OUT 0DCH; ...TO UART JMP CONT ENDIF IF INIT$REQUIRED AND NOT H84 AND NOT CPMDUM OR PMMI AND NOT H8MP TABLE LXI D,3 ;GET READY TO ADD 3 DAD D ;POINT TO CON STATUS JMP SHLD CITCAL+1 ;MODIFY CALL ADRS DAD D ;POINT TO CON IN JMP SHLD RCCAL+1 ;MODIFY CALL ADRS DAD D ;POINT TO CON OUT JMP SHLD WCCAL+1 ;MODIFY CALL ADRS LDA FCB+1 ;SEE IF OPTIO4 MVI A,MODINIT OUT MODS ;INITIALIZE MODEM PORT ENDIF ; IF TUART MVI A,80H ;DSR ON BIT 7 PARL PORT B OUT 54H ENDIF ; IF TRSPT ;MUST SET UP SERIAL CHANNEL RESET: LXI H,INITR ;STORE RETURN ADDRESS PUSH H LHLD 1 LXI D,SETSIO ;SIO SENAL TRIGER CHAR CPI 20H ;BLANK.. ? JZ SKP ;..BLANK SO USE DEFAULT "LF" CPI 'B' ;BELL WANTED JZ TRGBEL CPI 'X' ;XON WANTED JZ TRGXON CPI 'U' ;UPLOADING NO CHECKING FOR TRIGER JZ TRGUPL ; SETTRG STA OVERLY+1 ;STORE THE CHARACTER AS IS THEN TUP ROUTINE DAD D PUSH H ;STORE ON STACK MVI C,00H ;NO PARITY CHAN-A MVI D,0E6H ;8 bits ,1 STOP MVI E,3 ;300 BAUD MVI L,00H ;DISABLE EXT/ACK SIO FUNCTIONS MVI H,'S'-40H ;CONTROL S (X-ON) RET ;TROUGH SETUP PROG INITR NOP ;DO IT TO   IT ENDIF ; IF TRS1 ;INIT FOR TRS80 MOD1 RS232 OUT 0E8H ;RESET RS232 IN 0E9H ;READ THE SWITCHES ANI 0F8H ORI 5 OUT 0EAH ;SET DSR AND CTS MVI A,55H ;300 BAUD OUT 0E9H ENDIF ; ; IF PORT IN MODD ;CLEAR MODEM UART READ BUH ;SET DATA VALID BIT STA OUTCH ;STORE IN OUTPUT CHAR BUFFER LINK6: CALL MOTEST ;JUMP IF MODEM XMIT BUFFER BUSY JZ LINK7 LDA INCH ;JUMP IF NO DATA FOR MODEM ORA A JP LINK7 ANI 7FH ;DISCARD VALID DATA BIT ; IF PORT OUT MODD ;OUTPUT CHAR FFERS IN MODD ENDIF ; IF CPMDUM SAVIO: PUSH H ! PUSH D ! PUSH B ! PUSH PSW MVI C,IOGET ;SAVE ENTRY I/OBYTE CALL BDOS STA ORGIO POP PSW ! POP B ! POP D ! POP H Š ENDIF ; CONT XRA A ;CLEAR CHAR BUFFERS STA INCH STA OUTCH STA FLAG ;TO MODEM ENDIF ; IF TRSPT PUSH B ;STORE REGISTERS PUSH H PUSH D CALL WMC ;SEND CHAR POP D POP H POP B Š ENDIF ; IF CPMDUM CALL WMC ;SEND CHAR TO MODEM ENDIF ; XRA A ;...THEN CLEAR INPUT CHAR BUFFER STA INCH LINK7: JMP LINCLEAR TEXT SAVE FLAG LXI H,TBUF ;SET PTR TO TBUF SHLD PTR LXI H,0 ;SIZE = 0 SHLD SIZE LXI H,LINKMS ;PRINT SIGN-ON MESSAGE CALL WCS ; ; MAIN LOOP ; LINK3: CALL CITEST ;JUMP IF NO DATA FROM CONSOLE JZ LINK4 CALL RCC ;ELSE READ CONSK3 ;END OF MAIN LOOP ; LINKMS: DB CR,LF,'PLINK as of 24-JAN-82' IF TUART DB CR,LF,'(For TUART I/O)' ENDIF IF PMMI DB CR,LF,'(For PMMI Modem)' ENDIF IF DCH DB CR,LF,'(For DCH Modem)' ENDIF IF TRS1 DB CR,LF,'(For TRS80-MOD1)' ENDIFOLE DATA CPI 20H CC PCC ;CALL PCC IF CONTROL CHAR JC LINK4 ;JUMP IF PCC HANDLED CHAR ORI 80H ;ELSE SET VALID DATA BIT STA INCH ;AND STORE IN INPUT CHAR BUFFER LINK4: LDA OUTCH ;JUMP IF NO DATA FOR CONSOLE ORA A JP LINK5 ANI 7FH ;ELSE DIS IF TRSPT DB CR,LF,'(For TRS80-MOD2)' ENDIF IF H84 DB CR,LF,'(For H8/H8-4)' ENDIF IF CPMDUM DB CR,LF,'(For CP/M Alternate Console Device' DB CR,LF,'with External Dumb Modem)' ENDIF DB CR,LF,LF,'READY',CR,LF,LF,0 ; ; PCC - PROCESS CCARD VALID DATA BIT CALL WCC ;SEND CHAR TO CONSOLE XRA A ;THEN CLEAR OUTPUT CHAR BUFFER STA OUTCH LINK5: CALL MITEST ;JUMP IF NO DATA FROM MODEM JZ LINK6 CALL RMC2 ;ELSE READ MODEM DATA CALL SAVE ;SAVE CHAR IN TEXT BUFFER IF FLAG ON ORI 80ONTROL CHARACTER ; PCC: CPI 'E'-40H ;JUMP OUT IF CTRL E JNZ PCC1 PUSH H LXI H,AYS ;PRINT 'ARE YOU SURE' CALL WCS POP H CALL RCC ;GET ANSWER CALL WCC ;ECHO IT ANI 5FH ;MAKE UPPER CASE CPI 'Y' ;YES? JZ PCCEX ;EXIT CALL WCCR ;CRLF   STC ;TELL LINK TO IGNORE THIS CHARACTER ; IF TRSPT POP PSW ;GOBBLE UP CALL ADDRESS JMP RESET ;RE-INITIALIZE SIO ENDIF Š; IF PORT OR CPMDUM RET ENDIF ; PCC1: CPI 'T'-40H ;JUMP IF NOT CONTROL-T JNZ PCC2 CALL STF ;TRANSMIT TEXT FILE TOLE TO SEND JC STF6 ;JUMP IF FILE NAME ERROR CALL OPEN ;TRY TO OPEN SPECIFIED FILE CPI 255 ;JUMP IF FILE NOT FOUND Š JZ STF7 STF1: CALL READ ;READ NEXT RECORD INTO DBUF CPI 1 ;JUMP IF END-OF-FILE JZ STF5 LXI H,DBUF ;POINT TO DISK BUFFER  MODEM STC ;TELL LINK TO IGNORE THIS CHARACTER RET ; PCC2: CPI 'Y'-40H ;JUMP IF NOT CONTROL-Y JNZ PCC3 MVI A,1 ;TURN ON TEXT SAVE FLAG STA FLAG LXI H,PCCMR ;PRINT 'SAVING INCOMING TEXT IN MEMORY' CALL WCS STC ;TELL LINK TO IGNORE T MVI C,128 STF2: MOV A,M ;FETCH NEXT CHAR FROM DBUF INX H CPI 'Z'-40H ;JUMP IF END-OF-FILE CHARACTER JZ STF5 OVERL2 CPI LF ;IGNORE LINE FEEDS JZ STF4 CALL WMC ;WRITE CHARACTER TO MODEM CALL WCC ;WRITE CHARACTER TO CONSOLE OVERL1 CPI CR HIS CHARACTER RET ; PCC3: CPI 'Q'-40H ;JUMP IF NOT CONTROL-Q JNZ PCC4 XRA A ;TURN OFF TEXT SAVE FLAG STA FLAG CALL WTB ;WRITE TEXT BUFFER TO DISK STC RET ; PCC4: STC ;LET LINK HANDLE ALL OTHER CONT. CODES CMC RET ; PCCEX: LX;JUMP IF NOT CARRIAGE RETURN JNZ STF4 STF3: CALL CITEST ;CHECK CONSOLE DATA READY JZ STF3A ;NO DATA THERE CALL RCC ;GET CONSOLE CHARACTER CPI 'C'-40H ;CONTROL C ABORTS IT JZ STF8 STF3A: CALL MITEST ;WAIT FOR NEXT MODEM KHARACTER JZ STF3 CAI H,DISMS ;PRINT 'MODEM NOT DISCONNECTED' CALL WCS JMP BASE ;EXIT TO WARM BOOT ; AYS: DB CR,LF,'EXIT TO CP/M - ARE YOU SURE (Y OR N)?',0 IF PMMI OR DCH DISMS: DB CR,LF,'++DON''T FORGET - THE MODEM ' DB 'IS NOT DISCONNECTED++',CR,LF DB 'USE "MOLL RMC2 ;CHECK MODEM FOR TRIGGER CHAR. OVERLY CPI TRIGER JNZ STF3 CALL WCCR ;SEND CRLF TO CONSOLE STF4: DCR C ;LOOP THRU REST OF DBUF JNZ STF2 JMP STF1 ;GO GET NEXT RECORD FROM DISK ; STF5: LXI H,STFSM ;PRINT 'FILE SEND COMPLETE' CALL WCSDEM D" TO DISCONNECT',0 ENDIF ; IF NOT PMMI AND NOT DCH DISMS: DB CR,LF,'+++ EXIT TO CP/M +++',CR,LF,0 ENDIF ; PCCMR: DB CR,LF,'SAVING INCOMING TEXT IN MEMORY',CR,LF,0 ; ; STF - SEND TEXT FILE (TO MODEM) ; STF: CALL GFN ;GET NAME OF DISK FI RET ; STF6: LXI H,STFS1 ;PRINT 'FILE NAME ERROR' CALL WCS RET ; STF7: LXI H,STFS2 ;PRINT 'FILE NOT FOUND' CALL WCS RET ; STF8: LXI H,STFSA ;PRINT 'FILE SEND ABORTED' CALL WCS RET ; STFSM: DB 'FILE SEND COMPLETE',CR,LF,0 STFS1: D  B 'FILE NAME ERROR',CR,LF,0 STFS2: DB 'FILE NOT FOUND',CR,LF,0 STFSA: DB CR,LF,'FILE SEND ABORTED',CR,LF,0 ; ; SAVE - SAVE CHAR IN TEXT BUFFER IF FLAG ON ; ; ENTRY CONDITIONS Š; A - CHARACTER TO SAVE ; SAVE: PUSH PSW LDA FLAG ORA A JNZ  - WRITE TEXT BUFFER TO DISK Š; WTB: LHLD SIZE ;JUMP IF TEXT BUFFER EMPTY MOV A,L ORA H JZ WTB5 MVI C,RESDSK ;RESET IN CASE READ-ONLY CALL BDOS CALL GFN ;GET FILE NAME JC WTB6 ;JUMP IF FILE NAME ERROR CALL DELT ;DELETE OLD FILE, IF ANY SAVE1 POP PSW RET ; SAVE1: POP PSW CPI DEL ;RUBOUT (DEL) ? RZ ;YES, IGNORE IT CPI 20H ;TEST FOR CONTROL CHARACTERS JNC SAVE2 ;JUMP IF NOT CONTROL CHAR. CPI CR ;ALLOW CR TO BE SAVED JZ SAVE2 CPI LF ;ALLOW LF TO BE SAVED JZ SAVE2 CP CALL MAKE ;MAKE NEW FILE LHLD SIZE ;DE = TBUF SIZE XCHG LXI H,DBUF ;TOP OF STACK POINTS TO DBUF PUSH H LXI H,TBUF ;HL POINTS TO TBUF WTB1: MVI C,128 ;DISK BUFFER SIZE WTB2: MOV A,M ;FETCH NEXT BYTE OF TBUF INX H XTHL MOV M,A ;STORE IN I TAB ;ALLOW TAB TO BE SAVED JZ SAVE2 RET ;IGNORE ALL OTHER CONTROL CHARS. ; SAVE2: PUSH H LHLD SIZE ;SIZE = SIZE + 1 INX H SHLD SIZE LHLD PTR MOV M,A INX H SHLD PTR PUSH PSW LDA BASE+7 ;GET SYSTEM SIZE SUI 1 ;SO WE DONT CRASH CDBUF INX H XTHL DCX D ;SIZE = SIZE - 1 MOV A,D ;EXIT LOOP IF SIZE = 0 ORA E JZ WTB3 DCR C ;LOOP UNTIL DBUF FULL JNZ WTB2 CALL WRITE ;WRITE FULL DBUF TO DISK XTHL ;TOP OF STACK POINTS TO DBUF LXI H,DBUF XTHL JMP WTB1 ;LOOP UNTP/M CMP H ;ARE WE OUT OF ROOM? JZ SAVEAB ;YES, ABORT SUI 4 ;LEAVE SOME ROOM (1K) CMP H MVI A,WRNSIG ;SIGNAL CONSOLE RUNNING OUT OF SPACE CC WCC POP PSW POP H RET ; ; SAVEAB - RAN OUT OF ROOM, ISSUE MESSAGE AND FLOW ; THROUGH TO DISIL END OF TBUF ; WTB3: POP H ;HL POINTS TO CURRENT PLACE IN DBUF WTB4: MVI M,'Z'-40H ;STORE EOF CODE INX H DCR C ;LOOP THRU REST OF DBUF JNZ WTB4 CALL WRITE ;WRITE LAST SECTOR TO DISK CALL CLOSE ;CLEAN UP ACT AND GO HOME LXI H,TBUF ;CLK SAVE ROUTINE ; SAVEND: DB BELL,CR,LF,'ABORTING - NO ROOM LEFT',0 ; SAVEAB: LXI SP,STACK+64 ;REINITIALIZE STACK LXI H,SAVEND ;PRINT 'ABORTING - NO ROOM LEFT' CALL WCS LXI H,LINK ;SET UP RETURN ADDRESS PUSH H ;LEAVE IT ON THE STACK ; ; WTBEAR TEXT BUFFER SHLD PTR LXI H,0 SHLD SIZE LXI H,WTBSM ;PRINT 'BUFFER SAVED ON DISK' CALL WCS RET ; WTB5: LXI H,WTBS1 ;PRINT 'TEXT BUFFER EMPTY' CALL WCS RET ; WTB6: LXI H,WTBS2 ;PRINT 'FILE NAME ERROR' Š CALL WCS RET ; WTBSM: D  B CR,LF,'BUFFER SAVED ON DISK',CR,LF DB 'MEMORY SAVE CANCELLED',CR,LF,0 WTBS1: DB 'TEXT BUFFER EMPTY',CR,LF,0 WTBS2: DB 'FILE NAME ERROR',CR,LF,0 ; ; WCS - WRITE CONSOLE STRING ; ; ; ENTRY CONDITIONS ; HL - POINTS TO STRING (TERM BY ZERO BYTECHO CHAR TO CONSOLE MOV M,A ;STORE CHAR IN IBUF INR B ;INCREMENT COUNT CPI CR ;JUMP IF CARRIAGE RETURN JZ RCS4 INX H ;ELSE ADVANCE POINTER JMP RCS1 ; AND LOOP ; RCS4: MVI A,LF ;ISSUE LINE FEED AND RETURN CALL WCC RET ; ; RCC - RE) ; WCS: MOV A,M INX H ORA A RZ CALL WCC JMP WCS ; ; WCCR - WRITE CONSOLE CARRIAGE RETURN (AND LINE FEED) ; WCCR: MVI A,CR CALL WCC MVI A,LF ; ; WCC - WRITE CONSOLE CHARACTER ; ; ENTRY CONDITIONS: ; A - CHARACTER TO WRITE AD CONSOLE CHARACTER ; ; EXIT CONDITIONS ; A - CHARACTER READ ; RCC: PUSH B PUSH D PUSH H RCCAL: CALL $-$ ;MODIFIED BY INI\. POP H POP D POP B RET ; ; WMC - WRITE MODEM CHARACTER ; ; ENTRY CONDITIONS ; A - CHARACTER TO WRI ; WCC: PUSH PSW PUSH B PUSH D PUSH H MOV C,A ;GET CHARACTER FOR CBIOS WCCAL: CALL $-$ ;MODIFIED BY INIT. POP H POP D POP B POP PSW RET ; ; RCS - READ CONSOLE STRING (WITH ECHO) ; ; EXIT CONDITIONS ; B - NUMBER OF CHARACTERTE ; ; IF PORT WMC: PUSH PSW WMCL: IN MODS XRI MXOR ANI MTBE JNZ WMCL POP PSW ANI 7FH ;STRIP PARITY BIT OUT MODD Š RET ENDIF ; IF TRSPT WMC: PUSH H PUSH D PUSH PSW WMCL: CALL MOTEST ;TEST STATUS JZ WMCL ;LOOP TILL TX EMPTS READ (<255) ; HL - POINTS TO LAST CHAR STORED (CR) ; RCS: LXI H,IBUF MVI B,0 RCS1: CALL RCC ;READ NEXT CHAR FROM CONSOLE CPI DEL ;JUMP IF NOT DEL JNZ RCS2 Š INR B ;IGNORE DEL IF IBUF ALREADY EMPTY DCR B JZ RCS1 DCX H ;ELSE DISCARD Y POP PSW ;RESTORE CHAR ANI 7FH ;STRIP PARITY PUSH B ;STORE B MOV C,A ;PUT CHAR INTO C MVI B,00H ;CHANNEL A LXI H,WMCRE ;STORE RETURN ADDRESS PUSH H LHLD 1 ;GET BASE ADDRESS LXI D,SIOOUT DAD D PCHL ;JUMP TO IT WMCRE: POP B ;RESTORE LAST CHAR MOV A,M ;ECHO DISCARDED CHAR TO CONSOLE CALL WCC DCR B ;DECREMENT COUNT JMP RCS1 ; AND LOOP ; RCS2: CPI 'U'-40H ;JUMP IF NOT CONTROL U JNZ RCS3 CALL WCCR ;ELSE ABORT CURRENT LINE JMP RCS ; AND START OVER ; RCS3: CALL WCC ;EIT POP D POP H RET ENDIF ; IF CPMDUM WMC: PUSH H ! PUSH D ! PUSH B PUSH PSW WMCL: LDA ORGIO ;GET ENTRY I/OBYTE ANI 0FCH ;SAVE ALL BITS EXCEPT 0 & 1 ADI ALTCON ;SET BITS 0 & 1 TO 'CRT' MOV E,A MVI C,IOSET ;SET NEW I/OBYTE CALL BDOS    POP PSW ANI 7FH CALL WCC ;OUTPUT CHAR TO MODEM LDA ORGIO ;RESTORE ENTRY I/OBYTE MOV E,A MVI C,IOSET ;SET I/OBYTE CALL BDOS POP B ! POP D ! POP H RET ; ; RMC - READ MODEM CHARACTER ; ; EXIT CONDITIONS: ; A - CHARACTER READ ; ; ;ALLOW 16 DRIVES (AS IN CP/M 2.X) JNC GFN STA FCB GFNB: LXI H,GFNS1 ;PRINT 'FILENAME? ' CALL WCS CALL RCS ;READ RESPONSE INTO IBUF LXI H,FCB+FN ;BLANK FILL FN AND FT FIELDS MVI C,11 GFN1: MVI M,' ' INX H DCR C JNZ GFN1 LXI H,IBUF  IF PORT RMC: IN MODS XRI MXOR ANI MRDA Š JNZ RMC RMC2: IN MODD ANI 7FH RET ENDIF ; IF TRSPT RMC: CALL MITEST ;CHAR AVAILABLE JZ RMC ;LOOP IF NOT READY RMC2: PUSH B ;STORE B PUSH D PUSH H MVI B,00H ;CHANNEL A LXI H,RMCRE ;RE;POINT TO INPUT BUFFER LXI D,FCB+FN ;SCAN OFF FN FIELD MVI C,9 GFN2: MOV A,M ;FETCH NEXT CHAR FROM IBUF INX H CPI 61H ;IF LC, CONVERT TO UC JC GFN2A SUI 20H GFN2A: CPI CR ;JUMP IF END OF LINE JZ GFN5 CPI '.' ;JUMP IF END OF NAME JZ GTURN ADDRESS PUSH H LHLD 1 LXI D,SIOINP DAD D PCHL RMCRE: POP H POP D POP B ANI 7FH ;STRIP PARITY RET ENDIF ; IF CPMDUM RMC: RMC2: PUSH H ! PUSH D ! PUSH B LDA ORGIO ;GET ENTRY I/OBYTE ANI 0FCH ;SAVE ALL BITS EXCEPT 0 & 1 ADFN3 STAX D ;ELSE STORE CHAR IN FN FIELD INX D DCR C ;LOOP IF 8 OR LESS CHARS SO FAR JNZ GFN2 JMP GFN6 ;ELSE TAKE ERROR EXIT ; GFN3: LXI D,FCB+FT ;SCAN OFF FT FIELD MVI C,4 GFN4: MOV A,M ;FETCH NEXT CHAR FROM IBUF INX H CPI 61H ;IF LCI ALTCON ;SET BITS 0 & 1 TO 'CRT' MOV E,A MVI C,IOSET ;SET NEW I/OBYTE CALL BDOS CALL RCC ;INPUT CHAR FROM MODEM PUSH PSW LDA ORGIO ;RESTORE ENTRY I/OBYTE MOV E,A MVI C,IOSET ;SET I/OBYTE CALL BDOS POP PSW ANI 7FH POP B ! POP D ! PO, CONVERT TO UC JC GFN4A SUI 20H GFN4A: CPI CR ;JUMP IF END OF LINE JZ GFN5 STAX D ;ELSE STORE CHAR IN FT FIELD INX D DCR C ;LOOP IF 3 OR LESS CHARS SO FAR JNZ GFN4 JMP GFN6 ;ELSE TAKE ERROR EXIT ; GFN5: XRA A STA FCB+EX ;SET EXTENP H RET ENDIF ; ; ; GFN - GET FILE NAME ; GFN: LXI H,GFNSD ;PRINT 'WHICH DRIVE?' CALL WCS CALL RCC ;GET ANSWER FROM CONSOLE CALL WCC ;ECHO IT TO CONSOLE ANI 5FH ;MAKE UPPER CASE Š SUI 'A'-1 JC GFN ;REQUIRE ALPHABETIC JZ GFN CPI 17 T NUMBER TO ZERO STA FCB+NR ;SET RECORD NUMBER TO ZERO STC ;CLEAR ERROR FLAG AND RETURN CMC RET ; ŠGFN6: STC ;SET ERROR FLAG AND RETURN RET ; GFNSD: DB CR,LF,'WHICH DRIVE? ',0 GFNS1: DB CR,LF,'FILENAME? ',0 ; ; OPEN - OPEN DISK FILE    ; OPEN: PUSH H PUSH D PUSH B LXI D,FCB MVI C,OFFC CALL BDOS POP B POP D POP H RET ; ; READ - READ RECORD FROM DISK FILE ; READ: PUSH H PUSH D PUSH B LXI D,FCB MVI C,RRFC CALL BDOS POP B POP D POP H RET ; SH B PUSH H PUSH D MVI B,00 ;CHANNEL A LXI H,MITSTR PUSH H LHLD 1 LXI D,SIOTST DAD D PCHL MITSTR: POP D POP H ANI 01 ;TX EMPTY POP B RET ;ZERO FLAG HOLDS THE ANSWER ENDIF ; IF CPMDUM MITEST: PUSH H ! PUSH D ! PUSH B LDA  ; CLOSE - CLOSE DISK FILE ; CLOSE: PUSH H PUSH D PUSH B LXI D,FCB MVI C,CFFC CALL BDOS POP B POP D POP H RET ; ; DELT - DELETE DISK FILE ; DELT: PUSH H PUSH D PUSH B LXI D,FCB MVI C,DFFC CALL BDOS POP B POP DORGIO ;GET ENTRY I/OBYTE ANI 0FCH ;SAVE ALL BITS EXCEPT 0 & 1 ADI ALTCON ;SETS BITS 0 & 1 TO 'CRT' MOV E,A MVI C,IOSET ;SET NEW I/OBYTE CALL BDOS CALL CITEST ;GET INPUT STATUS PUSH PSW ;SAVE IT LDA ORGIO ;RESTORE ENTRY I/OBYTE MOV E,A M Š POP H RET ; ; WRITE - WRITE RECORD TO DISK ; WRITE: PUSH H PUSH D PUSH B LXI D,FCB MVI C,WRFC CALL BDOS POP B POP D POP H RET ; ; MAKE - MAKE NEW DISK FILE ; MAKE: PUSH H PUSH D PUSH B LXI D,FCB MVI C,MFFC CAVI C,IOSET ;SET I/OBYTE CALL BDOS POP PSW ;INPUT STATUS POP B ! POP D ! POP H RET ENDIF ; ; MOTEST - CHECK MODEM OUTPUT STATUS ; ; IF PORT MOTEST: IN MODS ;GET MODEM UART STATUS XRI MXOR ;INVERT HIGH-TRUE BITS ANI MTBE ;UART READY FOR LL BDOS POP B POP D POP H RET ; ; CITEST - CHECK CONSOLE INPUT STATUS ; CITEST: PUSH B PUSH D PUSH H CITCAL: CALL $-$ ;MODIFIED BY INIT. ORA A ;SET ZERO FLAG POP H POP D POP B RET ;ZERO FLAG CARRIES ANSWER ; ; MITEST - CHECKCHARACTER? MVI A,0 JNZ MOTST1 ;ZERO FLAG CARRIES ANSWER CMA MOTST1: ORA A ;SET ZERO FLAG IF READY RET ENDIF ; IF TRSPT MOTEST: PUSH B PUSH H Š PUSH D MVI B,00 ;CHANNEL A LXI H,MOTSTR PUSH H LHLD 1 LXI D,SIOTST DAD D PCHL MOT MODEM INPUT STATUS ; IF PORT MITEST: IN MODS ;GET MODEM UART STATUS XRI MXOR ;INVERT HIGH-TRUE BITS ANI MQRDA ;ANY DATA AVAILABLE? MVI A,0 JNZ MITST1 CMA MITST1: ORA A RET ;ZERO FLAG CARRIES ANSWER ENDIF ; ; Š IF TRSPT ; MITEST: PUSTR: ANI 02 ;BUFFER EMPTY POP D POP H POP B RET ENDIF ; IF CPMDUM MOTEST: MVI A,0 ;ALWAYS REPORT 'CRT' (MODEM) ;OUTPUT STATUS AS READY. ;*** MAY NOT WORK IN ALL SYSTEMS *** CMA ORA A RET ENDIF ; ; DATA AREA ; INCH: DS 1   ;INPUT CHAR BUFFER (TO CYBER) OUTCH: DS 1 ;OUTPUT CHAR BUFFER (FROM CIBER) STACK: DS 80 ;LOCAL STACK IBUF: DS 256 ;INPUT BUFFER ORGIO: DS 1 ;ENTRY I/OBYTE BUFFER (USED WITH ;EXTERNAL MODEM ON CP/M 'CRT' DEVICE) ; ; TEXT BUFFER ; FLAG: DS 1  External Dumb Modem) READY þÂ@å!vÍÒáÍ*Íãæ_þYÊmÍÜ7ÉþÂJÍÚ7ÉþÂ\>2÷!·ÍÒ7ÉþÂj¯2÷Í 7É7?É!žÍÒà EXIT TO CP/M - ARE YOU SURE (Y OR N)? +++ EXIT TO CP/M +++ SAVING INCOMING TEXT IN MEMORY Í|Ú9ÍþÿÊ@Í'þÊ2!€€~#þÊ2þ Ê+;TEXT SAVE FLAG PTR: DS 2 ;TEXT BUFFER POINTER SIZE: DS 2 ;TEXT BUFFER SIZE TBUF: EQU $ ;START OF TEXT BUFFER ; END LINK ; Í4Íãþ Â+ÍrÊÍ*þÊGÍ}Ê ÍXþ  ÍÜ ÂõÃè!NÍÒÉ!cÍÒÉ!uÍÒÉ!†ÍÒÉFILE SEND COMPLETE FILE NAME ERROR FILE NOT FOUND FILE SEND ABORTED õ:÷·Â¦ñÉñþÈþ Ò¿þ Ê¿þ Ê¿þ Ê¿Éå*ú#"ú*øw#"øõ:Ö¼ÊÿÖ¼>ÜãñáÉ ABORTING - NO ROOM LEFT1åæ!äÍÒ!å*ú}´Ên ÍÍ|ÚuÍEÍc*úë!€å!ü€~#ãw#ãz³ÊM Â2ÍTã!€ãÃ0á6# ÂNÍTÍ6!ü"ø!"ú!|ÍÒÉ!¬ÍÒÉ!ÀÍÒÉ BUFFER SAVED ON DISK MEMORY SAVE CANCELLED TEXT BUFFER EMPTY FILE NAME ERROR ~#·ÈÍãÃÒ> Íã> õÅÕåOÍáÑÁñÉ!öÍ*þ Êåõ+~ÍãÃõþÂÍÜÃðÍãwþ Ê$#Ãõ> ÍãÉÅÕåÍáÑÁÉåÕÅõ:öæüÆ_ÍñæÍã:ö_ÍÁÑáÉåÕÅ:öæüÆ_ÍÍ*õ:ö_ÍñæÁÑáÉ!ûÍÒÍ*Íãæ_Ö@Ú|Ê|þÒ|2\! ÍÒÍð!] 6 # ¨!ö] ~#þaÚÀÖ þ Êïþ.ÊÓ ·Ãùe~#þaÚáÖ þ Êï ÂØÃù¯2h2|7?É7É WHI*"v"."é:]þ ÊCþBÊ/þXÊ4þUÊ92$ÃC>Ã)>Ã)¯22ýÃCåÕÅõÍ2öñÁÑá¯2¤2¥2÷!ü"ø!"ú!¿ÍÒÍrÊ…Í*þ Ü!Ú…ö€2¤:¥·ò•æÍã¯2¥Í}ʦÍXÍœö€2¥ÍŸʼ:¤·ò¼æÍ4¯2¤Ão PLINK as of 24-JAN-82 (For CP/M Alternate Console Device withCH DRIVE? FILENAME? åÕÅ\ÍÁÑáÉåÕÅ\ÍÁÑáÉåÕÅ\ÍÁÑáÉåÕÅ\ÍÁÑáÉåÕÅ\ÍÁÑáÉåÕÅ\ÍÁÑáÉÅÕåÍ·áÑÁÉåÕÅ:öæüÆ_ÍÍrõ:ö_ÍñÁÑáÉ>/·É  åDY). ; 5) TYPE B:DIRLABEL ; 6) PLACE ANOTHER DISC IN DRIVE A AND REPEAT ; AS MANY TIMES AS YOU WOULD LIKE. ; ; 8/82 Revised by Jim Woolley, FOG Disk Librarian ; 4 files/line, " | " between files, unidirectional print ; (unidir. pråint = esc,U,1 may only work with Graftrax) ; ; 9/82 Revised by Dennis McFerran, FOG, to look for disk ; number on USER 15. This was you can ERA *.* without ; effecting the disk number. Also if there is room on ; the label, the program will now; 6/25/82---THIS PROGRAM, WHICH WAS ADAPTED FROM ; THE FMAP(CATALOG) PROGRAM, WILL LIST ; YOUR FILE DIRECTORY ON A LABEL SIZED ; OUTPUT. IT WAS WRITTEN USING AN EPSON ; MX-100. I DON'T KNOW WHETHER OR NOT IT ; print SPACE LEFT on ; the disk and the DATE that you labelled the disk. ; ;*********EQUATE TABLE - BDOS*********************** ; * RDCHR EQU 1 ;READ CHAR FROM CONSOLE * WRCHR EQU 5 ;WRITE CHR TO PRINTER * PRINT EQU 9 ;PRINT WILL WORK WITH MX-80 BUT TRY IT. IT USES ; EPSON CONTROL CODES SO WOULD PROBABLY HAVE ; TO BE MODIFIED FOR OTHER PRINTERS. ; ; ANY SUGGESTIONS OR COMMENTS SHOULD BE FORWARDED ; TO: DENNIS MC FERRAN ; 1038 POLK LAN CONSOLE BUFF * RDCON EQU 10 ;READ CONS BUFFER * CONST EQU 11 ;CHECK CONS STAT * FSRCHF EQU 17 ; " " * FSRCHN EQU 18 ; " " * FCB EQU 5CH ;FILE CONTROL BLOCK * BDOS EQU 5 ; * TPATOP EQU 0C700H-1;TOPE ; SAN JOSE, CA 95117 ; (408-296-6021) ; ; ; TO USE-------- ; 1) PLACE DISC WITH THIS PROGRAM ON IT IN DRIVE B ; 2) TURN ON YOUR PRINTER. ; 3) PLACE DISC THAT YOU WOULD LIKE TO LABEL IN DRIVE A: ; 4) GET INTO CPM (IF YOU'RE NOT THERE ALREA OF TRANSIENT PROG AREA* DATEBUFF EQU TPATOP-16;BEGINNING OF DATE BUFFER * ; * ;**********EPSON MX-100 PRINTER CODES*************** ESCAPE EQU 27 ; * SPACING EQU 65 ;LINE SPACING * CONDON EQU 15 ;CONDENSE  D PRINTING ON * CONDOFF EQU 18 ;CONDENSED PRINTING OFF * UNIDIR EQU 'U' ;UNIDIRECTIONAL PRINT * FORLEN EQU 67 ;SETS FORM LENGTH * FORMFEED EQU 12 ;FORM FEED * CR EQU 13 ;CARRIAGE RETURN * LF EQU 10 ;LINE FEED  MVI C,FSRCHF ;GET 'SEARCH FIRST' FNC LXI D,FCB CALL BDOS ;READ FIRST INR A ;WERE THERE ANY? STA TEMP ;SAVE CNZ SOME1 ;GOT SOME - PRT TITLE, CONT LXI D,NONMSG MVI C,9 CALL BDOS JMP EXIT1 SOME1 CALL SOME MVI E,00 MVI C,32 CALL* ;*************************************************** ; ORG 100H START LXI H,0 ;SAVE THE OLD STACK DAD SP ;H=STACK SHLD STACK ;SAVE IT LXI SP,STACK ;GET NEW STACK ;RESET SYSTEM MVI C,13 CALL BDOS ;SAVE FILE WRITE REQUEST CHAR LDA FC BDOS JMP PRTTL ;READ MORE DIRECTORY ENTRIES MOREDIR MVI C,FSRCHN ;SEARCH NEXT LXI D,FCB CALL BDOS ;READ DIR ENTRY INR A ;CHECK FOR END (0FFH) RZ ;GOTFCB1 ;NO MORE - SORT & PRINT ;POINT TO DIRECTORY ENTRY SOME DCR A ;UNDO PREV 'INR A' B+17 STA FILESW ;DATE REQUEST MVI A,'$' STA DATEBUFF+10 MVI A,8 STA DATEBUFF DTE LDA DATEBUFF+8 CPI '8' JZ OKDATE LXI D,DATEREQ MVI C,PRINT CALL BDOS MVI C,RDCON LXI D,DATEBUFF CALL BDOS JMP DTE ;NO ANI 3 ;MAKE MODULUS 4 ADD A ;MULTIPLY... ADD A ;..BY 32 BECAUSE ADD A ;..EACH DIRECTORY ADD A ;..ENTRY IS 32 ADD A ;..BYTES LONG LXI H,81H ;POINT TO BUFFER ;(SKIP TO FN/FT) ADD L ;POINT TO ENTRY MOV L,A ;SAVE (CAN'T CARRY TO H) ;MOVE  FCB SPECIFIED? MKBLANK MVI A,' ' STA DATEBUFF+2 RET OKDATE LDA DATEBUFF+2 CPI '0' CZ MKBLANK LXI H,FCB+1 MOV A,M CPI ' ' JNZ GOTFCB ;NO FCB - MAKE FCB ALL '?' MVI B,11 ;FN+FT COUNT QLOOP MVI M,'?' ;STORE '?' IN FCB INX H DCR BENTRY TO TABLE XCHG ;ENTRY TO DE LHLD NEXTT ;NEXT TABLE ENTRY TO HL MVI B,31 ;ENTRY LENGTH TMOVE LDAX D ;GET ENTRY CHAR MOV M,A ;STORE IN TABLE INX D INX H DCR B ;MORE? JNZ TMOVE SHLD NEXTT ;SAVE UPDATED TABLE ADDR LDA COUNT ;GET PREV JNZ QLOOP ;LOOK UP THE FCB IN THE DIRECTORY GOTFCB MVI C,FSRCHF ;GET 'SEARCH FIRST' FNC LXI D,FCB CALL BDOS ;READ FIRST INR A ;WERE THERE ANY? STA TEMP ;SAVE CNZ SOME ;GOT SOME - PRT TITLE, CONT GOTFCB1 MVI E,15 MVI C,32 CALL BDOS COUNT INR A STA COUNT JMP MOREDIR ;PRINT TITLE PRTTL LXI H,TTL CALL WRCON ;SORT AND PRINT SPRINT LDA COUNT ;INIT THE ORDER TABLE LXI H,ORDER LXI D,TABLE LXI B,31 ;ENTRY LENGTH BLDORD MOV M,E ;SAVE LO ORD ADDR INX H MOV M,D ;SA  VE HI ORD ADDR INX H XCHG ;TABLE ADDR TO HL DAD B ;POINT TO NEXT ENTRY XCHG DCR A ;MORE? JNZ BLDORD ;..YES LDA COUNT ;GET COUNT STA FILCOUNT;SAVE AS # TO PRINT STA SCOUNT ;SAVE AS # TO SORT DCR A ;ONLY 1 ENTRY? JZ DONE ;..YES, SO SKINX H ;UNUSED MOV A,M ;GET REC COUNT DCR A ;FUDGE RAR ;DIVIDE RAR ;..BY 8 RAR ANI 1FH ;DELETE GARBAGE INR A ;MAKE RELATIVE TO 1, NOT 0 MVI B,16 ;SAVE AS MAX # EXTENTS MOV A,M ;RELOAD RECORD COUNT INX H ;SKIP RECORD COUNT EXTLP MOIP SORT SORT XRA A ;GET A ZERO STA SWITCH ;SHOW NONE SWITCHED LDA SCOUNT ;GET COUNT DCR A ;USE 1 LESS STA TEMP ;SAVE # TO COMPARE STA SCOUNT ;SAVE HIGHEST ENTRY JZ DONE ;EXIT IF NO MORE LXI H,ORDER ;POINT TO ORDER TABLE SORTLP CALL COMPR ;CV A,M ;GET EXTENT BYTE ORA A ;EMPTY? JZ ENDEXT ;..YES PUSH PSW LDA EXTCOUNT INR A DAA INR A DAA STA EXTCOUNT POP PSW INX H ;POINT TO NEXT CHR DCR B ;MORE IN EXTENT? JZ ENDEXT MVI A,0 CMP M JNZ EXTLP ;YES OMPARE 2 ENTRIES CM SWAP ;SWAP IF NOT IN ORDER INX H ;BUMP ORDER INX H ;..TABLE POINTER LDA TEMP ;GET COUNT DCR A STA TEMP JNZ SORTLP ;CONTINUE ;ONE PASS OF SORT DONE LDA SWITCH ;ANY SWAPS DONE? ORA A JNZ SORT ;SORT IS ALL DONE - PRINENDEXT MVI B,16 LDA NFILE ;GET # FILES INR A ;BUMP DAA ;MAKE DECIMAL STA NFILE ;SAVE IT BACK LDA PRCOUNT DCR A STA PRCOUNT CPI 0 JZ CLCR LXI H,SPACES CALL WRCON JMP CLCRPLUS CLCR CALL CR1 ;END, TYPE C/R MVI A,4 T ENTRIES DONE LXI H,ORDER SHLD NEXTT MVI A,4 STA PRCOUNT ;PRINT AN ENTRY ENTRY MVI C,CONST ;CK STATUS OF KB CALL BDOS ;ANY KEY PRESSED? DCR A JZ ABORT ;YES, ABORT LHLD NEXTT ;GET ORDER TABLE POINTER MOV E,M ;GET LO ADDR INX H MOV STA PRCOUNT ;SEE IF MORE ENTRIES CLCRPLUS LDA COUNT DCR A STA COUNT JNZ ENTRY ;YES, MORE JMP EXIT ;TYPE CHAR IN A TYPE PUSH B PUSH D PUSH H MOV E,A MVI C,WRCHR CALL BDOS POP H POP D POP B RET WRCON MVI A,24H  D,M ;GET HI ADDR INX H SHLD NEXTT ;SAVE UPDATED TABLE POINTER XCHG ;TABLE ENTRY TO HL MVI B,8 ;FILE NAME LENGTH CALL TYPEIT ;TYPE FILENAME MVI A,'.' CALL TYPE MVI B,3 ;GET THE FILETYPE CALL TYPEIT INX H ;SKIP EXTENT INX H ;SKIP CMP M RZ MOV A,M PUSH H CALL TYPE POP H INX H JMP WRCON TYPEIT MOV A,M CALL TYPE INX H DCR B JNZ TYPEIT RET SPACE MVI A,' ' JMP TYPE CR1 MVI E,13 ;PRINT MVI C,5 ;C/R CALL BDOS MVI E,10 ;LF MVI C,5 JMP BDOS TEMP DS 1   ;SAVE DIR ENTRY ;ERROR EXIT ERXIT POP D ;GET MSG MVI C,PRINT JMP CALLB ;PRINT MSG, EXIT ;ABORT - READ CHAR ENTERED ABORT MVI C,RDCHR CALLB CALL BDOS ;DELETE THE CHAR ;FALL INTO EXIT ;EXIT - ALL DONE , RESTORE STACK EXIT LDA FILCOUNT CPI MOV E,M ;LOAD LO INX H MOV D,M ;LOAD HI INX H MOV C,M INX H MOV B,M ;BC, DE NOW POINT TO ENTRIES TO BE COMPARED XCHG CMPLP LDAX B CMP M INX H INX B JZ CMPLP POP H RET ;COND CODE TELLS ALL ;SWAP ENTRIES IN THE ORDER TABLE SWAP 25 ;DID IT PRINT MORE THAN SIX LINES JNC EXIT1 ;IF SO DON'T PRINT SPACE MESSAGE CPI 24 ;DID IF PRINT 6 FULL LINES JZ NOCRLF ;IF SO DON'T DO EXTRA CR/LF CPI 21 ;DID IT PRINT MORE THAN FIVE LINES JNC NOCRLF2 ;IF SO DON'T DO EXTRA CR MVI A,1 STA SWITCH ;SHOW A SWAP WAS MADE MOV C,M INX H PUSH H ;SAVE TABLE ADDR+1 MOV B,M INX H MOV E,M MOV M,C INX H MOV D,M MOV M,B POP H MOV M,D DCX H ;BACK POINTER TO CORRECT LOC'N MOV M,E RET ;HEX OUTPUT XO PUSH PSW /LF CPI 20 JZ NOCRLF2 CPI 16 JZ NOCRLF2 CPI 12 JZ NOCRLF2 CPI 8 JZ NOCRLF2 CPI 4 JZ NOCRLF2 MVI A,CR CALL TYPE MVI A,LF CALL TYPE NOCRLF2 MVI A,CR CALL TYPE MVI A,LF CALL TYPE NOCRLF LXI H,EXTMSG CALL WRCON LDA ;SAVE CHAR RAR RAR RAR RAR CALL NIBBL ;PRINT LEFT NIBBLE POP PSW ;GET VALUE BACK NIBBL ANI 0FH ;ISOLATE NIBBLE CPI 10 ;NUMBER? JC XNUM ;YES ADI 7 ;FUDGE ALPHA HEX XNUM ADI '0' ;MAKE PRINTABLE JMP TYPE DS 30 ;STACK AREA STACK DS 2 ; EXTCOUNT MOV B,A MVI A,92H SUB B DAA CALL XO MVI A,'K' CALL TYPE LXI H,LABDAT CALL WRCON LXI H,DATEBUFF+2 CALL WRCON EXIT1 MVI E,00 MVI C,32 CALL BDOS LXI H,RESPRINT CALL WRCON LHLD STACK ;GET OLD STACK SPHL SAVE OLD STACK HERE NFILE DB 0 ;NUMBER OF FILES PRINTED ; NEXTT DW TABLE ;NEXT TABLE ENTRY EXTCOUNT DB 02 EXTMSG DB 'Space Left on Disk = $' COUNT DB 0 ;ENTRY COUNT SCOUNT DB 0 ;# TO SORT PRCOUNT DB 0 ;COUNTER FOR ITEMS ON LINE FILCOUNT DB ;MOVE TO STACK RET ;..AND RETURN RESPRINT DB FORMFEED,CONDOFF,ESCAPE,SPACING,12 DB ESCAPE,FORLEN,66 ;EPSON CODES DB ESCAPE,UNIDIR,0,'$' ;TO RESTORE PRINTER TO NORMAL ;COMPARE ROUTINE FOR SORT COMPR PUSH H ;SAVE TABLE ADDR  0 SPACES DB ' | $' DATEREQ DB 'Please enter today''s date as mm/dd/yy---->$' NONMSG DB CR,LF,'++This program is looking for a file with the name' DB CR,LF,' -disknam.###(disk number) in USER 15. This becomes' db CR,LF,' the disc referenc  e and will remain on the disc even' db CR,LF,' if you ERA *.*.' db CR,LF,LF,'Please save your disk number now as follows:' db CR,LF,' A> USER 15' db CR,LF,' A> SAVE 0 -disknam.### ' db CR,LF,' this dash--^ is åmandatory' db CR,LF,' A> USER 0',CR,LF,'$' TTL DB ESCAPE,FORLEN,0,1 ;SET PAGE LENGTH AT 1". DB ESCAPE,SPACING,8 ;SET LINE SIZE TO 8/72" DB ESCAPE,UNIDIR,1 ;SET UNIDIRECTIONAL PRINT.å DB CONDON,'$' ;SET CONDENSED PRINT. LABDAT DB ' Label Date--$' SWITCH DB 0 ;SWAP SWITCH FOR SORT FILESW DS 1 ;'F' IF WRITING FILE BUFAD DW 80H ;OUTPUT ADDR MYFCB DB 0,'NAMES SUB',0 DS 19 DB 0 ORDER DS 128 ;ORDER TABLE TABLåE EQU $ ;READ ENTRIES IN HERE END 100H DS 1 ;'F' IF WRITING FILE BUFAD DW 80H ;OUTPUT ADDR MYFCB DB 0,'NAMES SUB',0 DS 19 DB 0 ORDER DS 128 ;ORDER TABLE TABLååå  !9"Ë1Ë Í:m2¥>$2ùÆ>2ïÆ:÷Æþ8Ê@ï Í ïÆÍÃ> 2ñÆÉ:ñÆþ0Ì:!]~þ ÂZ 6?#ÂS\Í<2åÄ¡ Í\Í<2åÄŠ ÍÃRÍ¡ ÍÃÉ\Í<È=懇‡‡‡!�…oë*Îw#´"Î:ç<2ç×!~ͺ:ç!ÉIs#r#ë ë=ÂÛ:ç2ê2è=Ê ¯2¤:è=2å2èåÊ !ÉÍpü‚##:å=2åÂ:¤·Âó!É"Î>2é Í=Êì*Î^#V#"ÎëÍÈ>.Í­ÍÈ###~=æ<~#~·Êyõ:Ð<'<'2Ðñ#Êy>¾Â]:Í<'2Í:é=2éþʘ!ëͺàÍ×>2é:ç=2çÂ+ÃñÅÕå_ÍáÑÁÉ>$¾È~åÍ­á#ú~Í­#ÂÈÉ> í Í ÃÑ ÃîÍ:êþÒRþÊ0þåÒ&þÊ&þÊ&þ Ê&þÊ&þÊ&> Í­> Í­> Í­> Í­!Ñͺ:ÐG>’�'Í–>KÍ­!Šͺ!ñÆÍº Í!dͺ*ËùÉ A CBU$å^#V#N#Fë ¾#ÊyáÉ>2¤N#åF#^q#Vpár+sÉõÍŸñæþ 򬮮0íÅÕå_ÍáÑÁÉ>$¾È~åÍ­á#ú~Í­#ISpace Left on Disk = $ | $Please enter todaåy's date as mm/dd/yy---->$ ++This program is looking for a file with the name -disknam.###(disk number) in USER 15. This becomes the disc reference and will remain on the disc even if you ERA *.*. Please save your disk number now as follows: Í`^>2rh!"phÍÒ4å!ÑÍÌ7|µÂ;R8ÍÄC!@c>ÍUÍôBÍÜ]Í¥4Í™4~·ÂRÍ*5o‡Ÿg#}õÍ™4ñwÍ™4~o‡Ÿg@ }õ3>!shÍ&UÍ�4#ë![cxÍuTÂ�>ÿ2th!uh]c>Í_UÃ,Í�4#åÍ�4#>ÍU!^cõ> ÍUÍs8+Má>ÍDTëG!uh>Í_U!hcuh>ÍVTÊú!uhÍUͰQ}2th*phë:tho‡ŸgͼXò÷Í�4#hc>GÍpUÃÍ�4#h A> USER 15 A> SAVE 0 -disknam.### this dash--^ is mandatory A> USER 0 $CAU$ Label Date--$r€NAMES SUBsc even if you ERc>GÍpUÍ�4#ë!hcxÍuTÂ,ÍI52th!“hÍ“!uhÍÍUõÍ™4#ñÍÛT!‡h Í&UÍ×4ÍLÍÉÍ?Íw5!|h6€:|h·ò9!ƒh~#¶Â�RŒÍÄC!ø`Í/B!jc> ÍUÍ´8ÍÜ]ÃR·ÍÄC!ÿ`Í/B*…h> Í$SÍ´8!tc>ÍUÍ´8ÍÜ]!•hÍ/RÍÄC! aÍ/BÍ|4ûÿå*…hÍ XÑ^#Vë> Í$SÍ´8!vc>ÍUÍ´8Í|4+å*…h  Í XÑ>ÍUÍ´8ÍÜ]ͨ4!™hÍ&U!—hÍ!}hÍ&U!yc}hxÍuTÆÿŸ!ƒhõ~#¶ÖŸÁ !zc}hõxÍuTÆÿŸÁ !{c}hõxÍuTÆÿŸÁ ò‹RˆÍÄC>Í/E!|c>ÍUÍôBÍÜ]Ã6!~c}hxÍuTÖŸ!c}hõxÍuTÖŸÁ°ò¸!šhÍ´/Ã6!€c}hxÍuTÂÍÍ€.Ã6!�c}hxÍuTÂå!œhÍû/Ã6!‚c}hxÍuTÂDRÍÄC!auTÆÿŸÁ°õÍ|4÷ÿå*ÛhÍ XÑ~õÍ|4÷ÿå*ÝhÍ XÑñ–ÆÿŸÁ°òA*Ûh#"ÛhÍ|4ìÿå*ÛhÍ XÑåÍ|4ìÿå*ÝhÍ XÑëáÍ-T*Ýh#"ÝhÕ*Ûh"ƒhÉÃp Í™4~o‡Ÿg+"ñh!ïhÍ> "ëh!œcͱX*nh##~o‡Ÿg+++ÍÝ7ÍÏR"éh*éhå*ëhÑÍ X"ëh!"íh#"áh*ƒh"óh*óhë*áhͼXúí Í|4úÿå*áhÍ XÑ~o‡Ÿg"åhÍ|4øÍ/B!ƒc>ÍUÍ´8ÍÜ]!¦h‰c>ÍpU!¢hÍÌ)2§h!žhÍÅ"2~hRAÍÄC>Í/EÍÜ]Ã6!‰c}hxÍuTÂYÍÃ6!Šc}hxÍuTÂnͬ Ã6!yc}hxÍuTƒÍ4Ã6!‹c}hxÍuT˜Í -Ã6!Œc}hxÍuT­Í)Ã6!zc}hxÍuTÂÂÍs Ã6!�c}hxÍuTÂà!¨hÍ>0!ªhÍ´/Ã6!Žc}hxÍuTÂø!¬hÍ1Ã6!�c}hÿå*áhÍ XÑ~o‡Ÿg)))))åÍ|4ùÿå*áhÍ XÑ~o‡ŸgÑ"ãh:æh·òJ !"åh*ãh#"ãh*ãh))))"ãh*åh >åo‡ŸgÑÍkX"çh*ãhë*çhåÍ|4+++å*áhÍ XÑÑs#r*çhë*éh+å*éhÑÍkXå*éhÑÍ X"çh*ãhë*çhåÍ|4ûÿå*áhÍ XÑÑs#rÍ|4ûÿå*áhÍ XÑ^#Vëë*íh"íh*áh#"áhÃÓR+ ÍÄC!aÍ/B*ƒh>xÍuT Íþ1Ã6!�c}hxÍuTÂ"ÍÉÃ6!{c}hxÍuTÂ6!|h6Ã_Í¥4Ãx!�c‡h >Í98|µÂqÍ™4#‘c>GÍpUÍ™4 ™c>GÍpUÃ~!‡hœc> ÍpUÍ™4 6?Í™46?Í™4~=2·h!µhÍÜ4:th·ò²¯2±h:ph2°hþ:th2±h:th2°hÍ¡4"ºh!¸hÍ/5!"ƒh:±h2¯h:°h2¼h:¼ho‡Ÿgë:¯ho‡ŸgͼXú\!½hÍP5Í™4"Áh!¿h Í$SÍ´8! c>ÍUÍ´8*íh> Í$SÍ´8!±c>ÍUÍ´8ÍÜ]R^ ÍÄC!&aÍ/B!²c>ÍUÍ´8*ëh> Í$SÍ´8!³c> ÍUÍ´8ÍÜ]Ro ÍÄC>Í/EÍÜ]ÉÃ; R� ÍÄC!2aÍ/B!¿c>ÍUÍ´8ÍÜ]!úhÍÌ)2ùh:ùhÖÿ¢ É:ùho‡Ÿg+"i!þhÍ> "õh!œcͱX*nh##~o‡Ÿg+++ÍÝ7*õhÍÀSͦVÍÏR"õhR) ÍÄC>Í/E!7aÍ/B!Èc>ÍUÍ´8*õh> ÍÍõ42®h:®hÖÿÊU*ƒh#"ƒhÍ¡4#:®håo‡Ÿg)))))Ñë!Åh>GÍ_U!ÃhÍöõÍ|4ìÿå*ƒhÍ XÑñÍ&UÍ¡4 :®håo‡Ÿg)))))Ñë!Ðh>Í_U!ÎhÍöõÍ|4ôÿå*ƒhÍ XÑñÍ&UÍ¡4 :®håo‡Ÿg)))))Ñ~õÍ|4ùÿå*ƒhÍ XÑñwÍ¡4:®håo‡Ÿg)))))Ñ~õÍ|4øÿå*ƒhÍ XÑñw:¯hõÍ|4÷ÿå*ƒhÍ$SÍ´8!Îc>ÍUÍ´8!øh>ÍUÍ´8!ãc>ÍUÍ´8ÍÜ]R: ÍÄC>Í/EÍÜ]ÉÃê ^#Vë"i*i~2i!iÍÜ4ÍD5"nhÍ75"i*nh^#Vë>åo‡ŸgÑÍkX#"i*nh^#Vë#"i!" i*i"i*ië* iͼXúæ !" i* i÷ÿ |·òÕ *i~! iFÍ!Tæ€Ö€ÂË *i+"i* i#" iæ *i#"i* i#" iÓ *iÉÃ|!ƒh~#¶Â÷ ÉÍ|4ìÿå* XÑñwÍ¡4:®håo‡Ÿg)))))Ñ~õÍ|4úÿå*ƒhÍ XÑñwÍ|4+å*ƒhÍ XÑ~c>GÍpUÍý42®hÃ!¯h4ÃÜÍí Í{Í„!"h"�h!ÙhÍ"…hÉÃ�!ƒh~#¶Â…É!"Ûh#"Ýh*ƒh"ßh*ßhë*ÝhͼXúzÍ|4ìÿå*ÛhÍ XÑåÍ|4ìÿå*ÝhÍ XÑÑxÍuTÆÿŸõÍ|4ôÿå*ÛhÍ XÑåÍ|4ôÿå*ÝhÍ XÑÑx̓h#Í XÑ"iÍ|4ìÿå*ƒh##Í XÑ"iÍ|4ìÿå*ƒh###Í XÑ"iÍ|4"i!"i*iüÿå*i))Ñ6#6*ƒhå*i++å*i))ÑÑs#r!i¯¾#žò{*iüÿå*i))Ñ^#Vë"#i*i++å*i))Ñ^#Vë"%i*i+"i*#ië*%iͼXòx*#i"i*%i"!i*ië*!i>åo‡ŸgÑÍkX"i*iå*iìÿå*iÍ XÑëáÍ-T*!i  ë*iͼXúë *iìÿå*iÍ XÑå*iÑxÍuTÒ5 *i#"ià *iå*iìÿå*!iÍ XÑÑxÍuTÒ` *!i+"!iÃ5 *!ië*iͼXúè *iå*iìÿå*iÍ XÑëáÍ-T*iìÿå*iÍ XÑå*iìÿå*!iÍ XÑëáÍ-T*iìÿå*!iÍ XÑå*iëáÍ-T*i#"i*!i+"!iÃý *i#"i*%ië*iͼXå*!iUÍ´8ÍÜ]R*ÍÄC>Í/E!raÍ/B!jd>ÍUÍ´8ÍÜ]RLÍÄC>Í/E!yaÍ/B!‚d>#ÍUÍ´8ÍÜ]RnÍÄC>Í/E!€aÍ/B!¥d>ÍUÍ´8ÍÜ]R�ÍÄC>Í/E!‡aÍ/B!µd>$ÍUÍ´8ÍÜ]R²ÍÄC>Í/E!ŽaÍ/B!Ùd>-ÍUÍ´8ÍÜ]RÔÍÄC>Í/E!•aÍ/B!e>3ÍUÍ´8ÍÜ]RöÍÄC>Í/E!œaÍ/B!9e>ÍUÍ´8ÍÜ]RÍÄC>ë*#iͼXÑͼXòC*#iå*iüÿå*i))ÑÑs#r*!iå*i++å*i))ÑÑs#r*i"#iÃu*iå*iüÿå*i))ÑÑs#r*%iå*i++å*i))ÑÑs#r*!i"%iï Ãt ÉÃ1^#Vë"'i*'ië!äc xÍuTš!É*ƒh")i!"+i*)ië*+iͼXú*+ië*)i>åo‡ŸgÑÍkX"-iÍ|4ôÿå*-iÍ XÑ>ÍUõÍ|4ìÿå*-iÍ XÑñÍÛT*'i Í/E!£aÍ/B!Le>ÍUÍ´8ÍÜ]R:ÍÄC>Í/E!ªaÍ/B!he>ÍUÍ´8ÍÜ]R\ÍÄC>Í/E!±aÍ/B!‚e>ÍUÍ´8ÍÜ]R~ÍÄC>Í/E!¸aÍ/B!“e>ÍUÍ´8ÍÜ]R ÍÄC>Í/E!¿aÍ/B!®e>ÍUÍ´8ÍÜ]RÂÍÄC>Í/E!ÆaÍ/B!¿e>ÍUÍ´8ÍÜ]RäÍÄC>Í/E!ÍaÍ/B!Òe>ÍUÍ´8ÍÜ]R%ÍÄC>Í/E!ÔaÍ/B!çe>ÍUÍ_TÒ*-i#"+iÃ*-i+")iæ*ƒhë*+iͼXò-!"+i*+iÉÃ�RQÍÄC!EaÍ/B!ïc>ÍUÍ´8ÍÜ]!1iÍÌ)2/i:/iÖÿÂcÉ:/iõÍ™4ñw!sh0i>GÍpU:xh2th!uhyh>Í[UÍÉÍ?ÉÃó^#Vë"5i*5i~o‡Ÿg>Í$S!:iÍ&U*5i~o‡Ÿgöÿ |·òÖ!:i{Í?TëG!7i>Í_UÃê!:i>Í?TëG!7i>Í_U!7iÍUÃ�UÃH^#Vë"Bi*BiÍ´8!sh>ÍUÍ´8!uhÍUÍ´8!ãc>ÍUÍ´8ÍÜ]ÉÃÍ™4~=2’i!�iÍÜ4RTÍÄC!ÙaÍ/B!íe>ÍUÍ´8ÍÜ]�qÍÀC!ÞaÍ/BÍÏ?!yiÍÍ28"Ži!yiå*Ži#ëáÍ=TëG!•i>Í_U!“iÍK!yiÍÍVT¶ÉÃ!]cyi>Í28|µÆÿŸ!�cyiõ>Í28|µÆÿŸÁ°òâÍ¿ÃRóÍÄC>Í/EÍÜ]!°iÍk!²i Í&"Di>2Fi*Bin&}2Gi:Gio‡Ÿgë:Fio‡ŸgͼXú?*Di:Fiåo‡ŸgÑ>¦w!Fi4Ã*BiÍUÃ�UÞ^#Vë"Hi*HiÍU!~cõ>ÍUÍs8"Ji!Ji~#¶Ê’*Hiå*JiëáÍ=TëG!Ri> Í_U!PiÍ¡Ã�UÃ�!öc>ÍUÃ�UÉÃ^#Vë"_i!ai6!"ni*_in&"pi*pië*niͼXúù*_iå*ni]áÍ8TëG!ti>ÍpU!riÍ!ai Í£T*ni#"niü!aiÍUÃU!ªiÍRÍÄC>Í/EÍÜ]Éü¾i~# Â!Í|4ìÿå*ƒh#Í XÑ"ÄiÍ™4~*ÄiwÍ|4ìÿå*¾i^#VëÍ XÑå*Äi#Ñ>GÍpUÍ|4ôÿå*¾i^#VëÍ XÑå*Äi Ñ>GÍpU*Äi 6?*Äi�c>GÍpU*Ài> ÍDTå*ÄiGÑ>ÍpU*Ài > Í?Tå*ÄiGÑ>ÍpU*Äi6*Äi6?*Äi�c>GÍpUÍ|4�UÃI^#Vë"ui*uin&"wi*wiŸÿ |/*wi… õ|Á ò>*wiàÿ }õ3>*uiGÍ&U*ui>ÍUÃ�UÃÆRiÍÄC!JaÍ/B!öc> ÍUÍ´8ÍÜ]R‹ÍÄC>Í/E!QaÍ/B!d>ÍUÍ´8ÍÜ]R¨ÍÄC!XaÍ/B!&d>ÍUÍ´8ÍÜ]RÅÍÄC!_aÍ/B!7d>ÍUÍ´8ÍÜ]ÉÃ&RëÍÄC>Í/E!faÍ/B!Hd> ÍUÍ´8ÍÜ]RÍÄC!kaÍ/B!Qd>Í÷ÿå*¾i^#VëÍ XÑ"Ëi!ËiÍP5*Äi"Ïi!ÍiÍõ4ÖÿÊ¥R¤ÍÄC>Í/E!ãaÍ/B!f>ÍUÍ´8!sh>ÍUÍ´8Í|4÷ÿå*¾i^#VëÍ XÑ"Ñi!ãc>ÍU!ÑiõÍ“ÍíTÍ´8*Ài> ÍUÍ´8!f>ÍUÍ´8ÍÜ]É!Ói͵·ò'RÌÍÄC!ôaÍ/B!f>ÍUÍ´8ÍÜ]*¾i"Õi!ÕiÍ/RõÍÄC!ûaÍ/B!$f>ÍUÍ´8ÍÜ]ͨ4!ÙiÍ&U  !×iÍ!ÆiÍ&U!AfÆixÍuTÂ&!ÚiÍ<5Ã'É*Âi~·òORLÍÄC!bÍ/B!Bf>ÍUÍ´8ÍÜ]ÃlRlÍÄC!bÍ/B!Qf> ÍUÍ´8ÍÜ]*¾i"Üi!ÜiÍ/R•ÍÄC!bÍ/B!Zf>ÍUÍ´8ÍÜ]R ÍÄC!bÍ/B!sh>ÍUÍ´8Í|4÷ÿå*¾i^#VëÍ XÑ"Þi!ãc>ÍU!ÞiõÍ“ÍíTÍ´8*Äi>ÍUÍ´8!af>ÍUÍ´8*Äi>*”jóÿ |·òe*�jå*”j]á> ÍDTå!–jõå*”j]á> ÍDTÁÑÍuTÆÿŸ*�jõå*”j]á> ÍDTëG!�c>ÍuTÆÿŸÁ ò[¯É*”j#"”jÃ>€Éò^#Vë"£j*£jë!af>Í28"¥j!¥j~#¶Ê½*£jå*¥j+MáÍ8TëG!©j>ÍpU*£jå*¥j#ëáÍ=TëG!±j>ÍpUÃÕ*£jë!©j>ÍlU!±jzf>GÍpU!´j6!"§j*§j÷ÿ |õ:´j/Á ò4!©jå*§j]á>ÍÍUÍ´8ÍÜ]!ÆiAf>GÍpU*Âi~·òTR;ÍÄC!bÍ/B!bf>ÍUÍ´8ÍÜ]ͨ4!âiÍ&U!àiÍ!ÆiÍ&U!AfÆixÍuT»*Äi"åi!ãiÍ"5*ÄiåÍ|4ìÿå*¾i^#VëÍ XÑÑ>GÍpU*ÄiåÍ|4ôÿå*¾i^#VëÍ XÑÑ>GÍpUÉÃ0RáÍÄC>Í/E!$bÍ/B!ef> ÍUÍ´8ÍÜ]�þÍÀC!)bÍ/BÍÏ?!çiÍÍuTÂ*!´j6€!©jå*§jëá>Í?T‘cÍpU*§j#"§jÃà!´j6!"§j*§jüÿ |õ:´j/Á ò“!±jå*§j]á>ÍDTëG!]c>ÍuT‰!´j6€!±jå*§jëá>Í?T™cÍpU*§j#"§jÃ?!±j>ÍU!afõ>ÍU!©jÍÛTÍíTÃ�UÃ^#Vë"µjÍ¡4"ºj!¸jÍ/5*µj"¼j!¼jÍõ42·j:·jÖÿÂá¯É>õ3>õÍ¡4 :·jåo‡Ÿg)))))Ññiå!ãcçi>Í28#ëáÍ=TëG!j>Í_U!jÍK!çiÍÍVTÂ:É!-jÍk!üi Í&UReÍÄC!.bÍ/B!of> ÍUÍ´8ÍÜ]�‚ÍÀC!3bÍ/BÍÏ?!çiÍÍ/EÍÜ]!çiå!ãcçi>Í28#ëáÍ=TëG!1j>Í_U!/jÍK!çiÍÍVTÂÏÉ!FjÍk!j Í&U!"j*ƒh"Hj*Hjë*jͼXú!JjÍŸ·òÍ_TÒ >€ÉïÉÉÃ|¾j~# ÂÍ|4ìÿå*ƒh#Í XÑ"Âj*Àj~*ÂjwÍ|4ìÿå*¾j^#VëÍ XÑå*Âj#Ñ>GÍpUÍ|4ôÿå*¾j^#VëÍ XÑå*Âj Ñ>GÍpU*Âj 6?*Âj�c>GÍpU*Àj~=2Çj!ÅjÍÜ4Í|4÷ÿå*¾j^#VëÍ XÑ"Èj!ÈjÍP5!Êj͵·òVRúÍÄC>Í/E!8bÍ/B!f>ÍUÍ´8ÍÜ]*¾j"Ìj!TjÍ3!Xj Í&U!NjÍ*j#"jÃéR/ÍÄC>Í/EÍÜ]ÉÜdj~# Â8Í|4ôÿå*fj^#VëÍ XÑ>ÍU!afõ>ÍUõÍ|4ìÿå*fj^#VëÍ XÑñÍÛTÍíT!lj Í&U!"hj*hjóÿ |·òë*djå*hj]á> ÍDTëG!xj>ÍpU!�cxjxÍuTÊá!ljå*hj]á> ÍDTxjÍpU*hj#"hjÔ!"jj"hj*hjóÿ |·òR!ÌjÍ/R#ÍÄC!=bÍ/B!}f>ÍUÍ´8ÍÜ]ͨ4!ÐjÍ&U!ÎjÍ!ÄjÍ&U!AfÄjxÍuTÂT!ÑjÍ<5ÃV¯É!ÓjÍ5RyÍÄC!BbÍ/B!šf> ÍUÍ´8ÍÜ]>€Éé RœÍÄC!GbÍ/B!£f>ÍUÍ´8ÍÜ]ͨ4!ÙjÍ&U!×jÍ!AfÍ_TʹÉÍ™4"Üj!ÚjÍ·úÊÉÍ|4+å*…hÍ XÑë!]cxÍuTÂ* *håÍ|4ûÿå*…hÍ XÑ^#!ljå*hj]á> ÍDTëG!xj>ÍpU!~cxjxÍuTÊH!ljå*jj]á> ÍDTxjÍpU*jj#"jj*hj#"hjÃô*jj"hj*hjóÿ |·ò†!ljå*hj]á> ÍDT~cÍpU*hj#"hjÃX!{jlj> Í_U!yjÍkÃ�UÃh�j~# ¤Í|4ôÿå*’j^#VëÍ XÑ>ÍU!afõ>ÍUõÍ|4ìÿå*’j^#VëÍ XÑñÍÛTÍíT!–j Í&U!"”jVëÑͼX"h*�håÍ|4+++å*…hÍ XÑ^#VëÑͼX"�h*ƒh+"ƒh*…h"Õj*ƒh"Þj*Þjë*ÕjͼXú„ Í|4ìÿå*ÕjÍ XÑåÍ|4ìÿå*Õj#Í XÑëáÍ-T*Õj#"ÕjÃ= *ƒhë*…hͼXò¨ R¢ ÍÄC>Í/EÍÜ]!"…hÉÃÂ"RÎ ÍÄC>Í/E!LbÍ/B!³f>)ÍUÍ´8ÍÜ]ͨ4!èjÍ&U!æjÍ!�cÍ_TÖŸ2åjR!ÍÄC>Í/E!QbÍ/  B!Üf>%ÍUÍ´8ÍÜ]ͨ4!ëjÍ&U!éjÍ!gÍ_TÆÿŸ2áj:áj·òW!RW!ÍÄC>Í/E!VbÍ/B!g>ÍUÍ´8ÍÜ]Rh!ÍÄC>Í/EÍÜ]!âj6!"ãj*ƒh"ìj*ìjë*ãjͼX/õ:âj/Á òÌ!Í|4+å*ãjÍ XÑë!]cxÍuTʸ!:åj·úµ!ÍÕ!ÃÂ!:åj·òÂ!ÍÕ!*ãj#"ãjÃy!ÍÉÍ?ÃÁ":áj·òr"Rþ!ÍÄC>Í/E![bÍ/B!g>ÍUÍ´8ÍÜ]!î!ŒbÍ/B!‡g>ÍUÍ´8!k>ÍUÍ´8!Mk͓ʹ8!ãc>ÍUÍ´8ÍÜ]:’h·òW&RW&ÍÄC!‘bÍ/B!�g>ÍUÍ´8ÍÜ]*)k#"%k!k6!k6€:k·ú¨'!"k*)k~=2Qk!OkÍÜ4Í|4÷ÿå*ýj^#VëÍ XÑ"Rk!RkÍP5!"k*k+"Tk*Tkë*kͼX/õ:k/Á ò '*%kå*k)Ñ"Xk!VkÍ/5*k@ "k*)k"\k!ZkÍ 5ÖÊ'!k6€*k"jÍ/R!"ÍÄC!`bÍ/B!$g> ÍUÍ´8ÍÜ]ͨ4!òjÍ&U!ðjÍ!àjÍ&U!AfàjxÍuTÂ["Í™4"õj!ójÍ2~hÃo"!€càjxÍuTÂo"!âj6€ÃÀ"R”"ÍÄC>Í/E!ebÍ/B!-g>ÍUÍ´8ÍÜ]!÷jÍ/Í™4"ûj!ùjÍ2~hÍÈ4·òÀ"ͨ4!àjÍ&U!âj6€ÉÉÃÉ)ýj~# ÂÊ"*ÿj~ÖÿÂÝ"¯É*ÿj~o‡Ÿg@ }õ3>!kÍ&UÍ|4ìÿå*ƒhk*k#"kó&!"k*'k~=2`k!^kÍÜ4!akÍP5!"k*k+"ck*ckë*kͼX/õ:kÁ ò¥'*%kå*k)Ñ"gk!ekÍ/5*'k"kk!ikÍ5ÖÊt'!k6!k6€:’h·ò‘'*%kå*k)Ñ"qk!mkÍŽ5"!k*k@ "k*k#"kÃ2'Ãk&*'k"uk!skÍí4Í S2~h:’hõ:kÁ ò´(*)k "%k*'k6*'k 6*'k"yk!wkÍå4Í S2~h!k6:k·ú~(#Í XÑ"'k*'k#")k*ÿj~*'kwÍ|4ìÿå*ýj^#VëÍ XÑå*'k#Ñ>GÍpUÍ|4ôÿå*ýj^#VëÍ XÑå*'k Ñ>GÍpU*'k 6*)kå*'këá$Í-TÍ™4~*)kw!shkxÍuT­#*'k {ÍDT5gÍpU:xh·òÒ#Í|4÷ÿå*ýj^#VëÍ XÑ~2kÃØ#:xh2k!+kÍP5*'k"/k!-k͵·òY$RV$ÍÄC>Í/E!jbÍ!"k"k*k+"{k*{kë*kͼX/õ:k/Á ò{(*%kå*k)Ñ"k!}kÍ/5*'k"ƒk!�kÍ 5ÖÊQ(!k6€Ãg(*%kå*k)Ñ"‰k!…kÍŽ5"#k*k@ "k*k#"kÃ(Ãù'*!kå*#kÑͼXµÊ´(!k6R´(ÍÄC>Í/E!–bÍ/B!¡g>ÍUÍ´8ÍÜ]:k·úð(RØ(ÍÄC!›bÍ/B!´g>ÍUÍ´8ÍÜ]*'k 6?*'k"�k!‹kÍ5ñ)!shkxÍuT±)Í/B!k>ÍUÍ´8!ãc>ÍU!1kõÍ“ÍíTÍ´8*'k#>ÍUÍ´8!af>ÍUÍ´8*'k >ÍUÍ´8!6g>ÍUÍ´8ÍÜ]>€É*'k"5k!3kÍ5!shkxÍuTÖŸõÍ|4÷ÿå*ýj^#VëÍ XÑ~!k–ÆÿŸÁ ò %*)k"9k!7k͵·ò%R%ÍÄC>Í/E!vbÍ/B!k>ÍUÍ´8!ãc>ÍU!;kõÍ“ÍíTÍ´8!af>ÍUÍ´8*)k#>ÍUÍ´8*)k >ÍU|4÷ÿå*ýj^#VëÍ XÑ~!k–ÖŸõ:thÁ°òT)RT)ÍÄC>Í/E! bÍ/B!Çg>#ÍUÍ´8!êg> ÍUÍ´8ÍÜ]Í|4÷ÿå*ýj^#VëÍ XÑ~!k–ʱ)*'kå*)këáÍ-T*'k"‘k!�kÍõ4ÖÿÊ«)*'k"•k!“kÍ5!—kÍ"5*)k"›k!™kÍí4Í S2~h:kÉÃ-�k~# ÂÑ)!’h6Rû)ÍÄC!¥bÍ/B! h>ÍUÍ´8ÍÜ]R&Í´8!Ng>ÍUÍ´8ÍÜ]>€É*)k"?k!=kÍ5*'k 6*)k6*'k"Ck!AkÍ5ÖÿÂ_%R]%ÍÄC!‚bÍ/B!gg>ÍUÍ´8ÍÜ]¯ÉÍ|4÷ÿå*ýj^#VëÍ XÑ"Ek!EkÍP5*)k"Ik!GkÍå4Í S2~hÍŽ4å*ƒh Í XÑͼXÜÿ >@åo‡ŸgÑÍkX"k:’h·òÉ%!"!k*!k"#kRë%ÍÄC>Í/E!‡bÍ/B!g>ÍUÍ´8ÍÜ]*ýj"Kk!KkÍ/R3&ÍÄC*ÍÄC!ªbÍ/B!Èbå*�k^#VëÍ XÑÍUÍ´8ÍÜ]*�k^#Vë+++|·ò�,�R*ÍÀC!¯bÍ/BÍÏ?!¦kÍÍVTÂc*>ÿÉ!ãc¦k>Í28}2¤k:¤k·Ê�*!¦k:¤k_Í8T~cÍpU!~c¦k>Í28}2¤k!¦kKÍ8TëG!½k>ÍpU!»kÍ*ŸkÍ&U:¤k·Âæ*!¦kÍ=TëG!yh>Í_U!‡hh> ÍpUÃ,!¦k:¤kåo‡Ÿg++MáÍ8TëG!yh>  Í_U!¦k:¤kåo‡Ÿg#ëáÍ=TëG!Àk>Í_U!¾kÍK!¦kÍÍ28å!]c¦k>Í28Ñ|µÊY+!ÕkÍk!¦kÍÍ28}2¤k:¤k·Â}+!‡h¦k> ÍlUÃÇ+!¦k:¤kåo‡Ÿg+MáÍ8Tå!‡hõ> ÍDTÁÑÍpU!¦k:¤kåo‡Ÿg#ëáÍ=Tå!‡h õ> ÍDTÁÑÍpU!‡h> ÍDTåõÍ™4#ÁÑ>ÍpU!‡h > ÍDTåõÍ™4 ÁÑ>ÍpU!‡hùk*ùk^#Vë+|µÂ.0*ƒhå*ùkÑs#rR+0ÍÄC>Í/EÍÜ]Ã:0*ùk^#Vë+ër+sÉÃ1^#Vë"ûkÍ|4+å*ûk^#VëÍ XÑë!]cxÍuTÊÈ0Í|4+å*ûk^#VëÍ XÑ]c>GÍpUÍ|4ûÿå*ûk^#VëÍ XÑ^#Vëë*h"hÍ|4+++å*ûk^#VëÍ XÑ^#Vëë*�h"�hR1ÍÄC!ÖbÍ/B!0h>ÍUÍ´8*h> Í$SÍ´8!Jh>ÍUÍ´8*�h> Í$SK> ÍDTëG!�c>ÍuTÖŸ2’h!hyh>ÍVTÂ9,!yhuh>Í[U:th2xhÃy,!]cyh>ÍVTÂO,>ÿ2xhÃy,!yhÍU!hõ> ÍUÍs8|µÊl,>ÿÉÃy,!yhÍUͰQ}2xh*phë:xho‡ŸgͼXò�,>ÿÉÃÕ,�­,ÍÀC!´bÍ/BÍÏ?*ŸkÍ&UÍÜ]*Ÿkë!h>ÍuTÂÁ,>ÿÉ*Ÿk"×k!×kÍ*ŸkÍ&U*Ÿkn&Àÿ "¡k:rho‡Ÿgë*¡kͼX*¡k+õ|Á°òþ,>ÿÉÍ×Í´8!Mh>ÍUÍ´8ÍÜ]ÉÃû1^#Vë"ýkÍ|4+å*ýk^#VëÍ XÑë!]cxÍuTˆ1*håÍ|4ûÿå*ýk^#VëÍ XÑ^#VëÑͼX"h*�håÍ|4+++å*ýk^#VëÍ XÑ^#VëÑͼX"�hÍ|4+å*ýk^#VëÍ XÑ~c>GÍpURî1ÍÄC!ÞbÍ/B!Oh>ÍUÍ´8*h> Í$SÍ´8!Jh>ÍUÍ´8*�h> Í$SÍ´8!Mh>ÍUÍ´8ÍÜ]*ýk"ÿk!ÿkÍ´/ÉÃa4Í|4*¡k}ÉÃ}.R&-ÍÄC!¹bÍ/B!ƒc>ÍUÍ´8ÍÜ]!ßkÍÌ)2Ûk:ÛkÖÿÂ8-É:xh·òG-!Þk6€ÃL-!Þk6!Ük6€!"Ùk*ƒh"ãk*ãkë*ÙkͼX/õ:ÜkÁ òG.Í|4+å*ÙkÍ XÑë!]cxÍuTÂ&.:Þk·òº-Í|4÷ÿå*ÙkÍ XÑ~2xh!åkÍ“!yhÍGÍpU*håÍ|4ûÿå*ÙkÍ XÑ^#VëÑÍ4ìÿå*ƒh#Í XÑ"lÍ™4~*lwÍ|4ìÿå*…hÍ XÑå*l#Ñ>GÍpUÍ|4ôÿå*…hÍ XÑå*l Ñ>GÍpU*l 6*l 6R€2ÍÄC>Í/EÍÜ]Í|4÷ÿå*…hÍ XÑ"l!lÍP5!lÍå4Í S2~h*l#" lÍŽ4å*ƒh Í XÑͼXîÿ >@åo‡ŸgÑÍkX" l* l> åo‡ŸgÑÍÇ7" l!l6!l6€:lõ:l/Á òA4!¼X"h*�håÍ|4+++å*ÙkÍ XÑ^#VëÑͼX"�hÍÈ4·ò=.ͨ4!ÝkÍ&U!Ük6*Ùk#"ÙkÃ]-:Ük·úk.Rk.ÍÄC!¾bÍ/B!h> ÍUÍ´8ÍÜ]R|.ÍÄC>Í/EÍÜ]ÉÃ/R‘.ÍÄC>Í/EÍÜ]!"ëk*ƒh"ík*íkë*ëkͼXúÿ.Í|4+å*ëkÍ XÑë!hxÍuTÂõ.Ré.ÍÄC>Í/E!ÅbÍ/B!(h>ÍUÍ´8ÍÜ]!ïkÍ/!ñkÍ>0*ëk#"ëkÃ�."l"l* l+"l*lë*lͼX/õ:l/Á ò`3* lå*lÑ"l!lÍ/5*l€ "l!lÍ 5ÖÊV3!l6€*l" l*l#"lÃ3!"l"l* l+"l*lë*lͼX/õ:lÁ ò>4!"l!hh>ÍÚS!jh>ÍÚSÍTÍ Q"l*lë*lͼX/õ:lÁ òö3* lå*lë*lÑë!l>GÍpU!lhlxÍuTÂæ3!l6Ãì3!!lͳ4*l#"lã3*l€ "lR/ÍÄC>Í/EÍÜ]Éñ/^#Vë"ókR°/ÍÄC!ÊbÍ/B!sh>ÍUÍ´8Í|4÷ÿå*ók^#VëÍ XÑ"õk!ãc>ÍU!õkõÍ“ÍíTÍ´8Í|4ìÿå*ók^#VëÍ XÑ>ÍUÍ´8!af>ÍUÍ´8Í|4ôÿå*ók^#VëÍ XÑ>ÍUÍ´8ÍÜ]ÉÃø/^#Vë"÷k*÷k^#Vëå*ƒhÑͼX|µÂë/Rà/ÍÄC>Í/EÍÜ]*÷k6#6Ã÷/*÷k^#Vë#ër+sÉÃ;0^#Vë"ÍÈ4·ò44ͨ4!lÍ&U!mhlxÍuTÂ/4ͨ4!lÍ&UÃ44!l6*l#"lÃp3Ãò2!#lÍí4Í S2~hR`4ÍÄC>Í/EÍÜ]ÉÍ©_^#V#ëNëÉÍd4WYÉå ÍáÉ*ÛnÉ*ë*Ûn{•ozœgÉÍ€4|·g}oÉ!\É!lÉ!€ÉÃÍáõ3>éÍd4YÃ!Í4å*é Í·È>ÿÉ Ã ÃÍd4YÃÍl4ÃÍl4ÃÍl4ÃÃ!  Íl4ÃÍl4ÃÍl4ÃÍl4ÃÍl4ÃÃÍl4ÃÃÍl4ÃÃÿ ÃÍd4Y ÃÍl4ÕÍd4yá¬g)Òr5|îg}î!o Âf5ɶ5x!Íb5ër#s#ëÂ|5ÉÍl4ÕÍl4á€Õ¶5¬‡Ò£5ƒ_Ò©5­goј5É:>2/`ͬ:Ͷ:Ò":·Â: Ê: Í¿:ͬ:à :þ.Â9:ͬ:Ͷ:Ò9:Í¿:ͬ:Ã*:þeÊC:þE†:ͬ:þ+ÂS:ͬ:Ã\:þ-Â\:ͬ:Ͷ:ÒÎXGͬ:Ͷ:Òz:õx‡G‡‡€Gñ€Gͬ:õ‚:¯�Gy€Oñ·Ê•:þ ÂÎXͬ:Æ:ÑùÕ:*`þÒ§:¯Í¿:Ø:y2.`Éʳ:~#ÉzÉÖ0þ ØÆ0·Éå!2`_¶w!*`~þÒÜ:4Õ_!`ÑsáÉáÈÃÎX·úÎX2-`G:.`�<2*`=øÂÎX:`·ÂÎXÉõÍB;ñÂ;:`·Ê;!.`5!1`4ÊÎX:,`G:+`Ê(;�!/`–Íã:>20`Íe;Í¢?!+`5Â4;É:,`!.`†<øþÐ_!`>†wþ ØÖ w>+ÃW;!-`~5·>.ÈÍ�;G:0`·xÈþ0„;:-`·> À!/`~·Ê—;5!-`4!*`5-¯20`xÉ!*`^4{·ú¶;þÒ¶;!`~Æ0É>0Éá"'l*`~2+l:/`·ÊÔ;ÍR>ÊÔ;ÍÎX:+l2,l>VÍ?>!,lÂæ;5~/o&ÿ#9ù:2`·Â<>9Í?>Ê<>*Í|ªòÀ7|·ðëÉ{•zœØëÉͶ7ëÉ|·ô©XDMë̓XëÉo‡ŸgÍÃXÂî7áÑÑ�QYÅÕéõÍ,8�QYå!9ÅÕÍ«?>Ê < à <*:,l!9q#=Â<Ã">>2-l<2.l2/lÍ�;2*l:.l_:+l“ú">*`~2)l:)lþ9Â<:-læ€Êo<:-læ2-lÍ2>Âo<:/l=O:-lͲ>ͪ>:/lO:*lͪ>Í)>Ã(<þZʉ<þ*ÂÔ Íª>ÃÎ<:-læ2-l:/lO:*lͪ>Í)>Ã(<:)lÍ2>Âh=:)lÍ>Â=:)lÍ�>Â=:/lO:)lͲ>ͪ>Í)>ÃVÑÁá+|µÂ÷7ñá3333ò$8å!�å!åÅÕÍ«UÑÁáÅÕé·ð/<É|·ðéXëFëÃ98·Êe8OÊe8ÅÅÕå¾Â\8# Êi8ÂG8áÑÁÃd8áÑÁÂD8Á¯glÉáÑÁñ�ʬ8ÅåÕ~ë Ê¢8¾Ê›8#Ã�8ÑáÁ#Ä8ÑáÁñ�H åÑÑùÕo&ÉõÍâ>"`ÑþÂî8ÂÇ8BZ!9Êæ8ÊÝ8~#Í¢?ÃÍ8> Í¢?ÂÝ8ëÑ&9ùëéþÂ9x2+`y Âý8¯2,`.<:)lö€2-l:/lO> ͪ>Í)>Ã.<:-læ€ÊX=:*lþ0Â5=:/lO> ͪ>Ãb=:/l=O:)lͲ>ͪ>:/lO:*lͪ>:-læ2-lÃb=:/lO:*lͪ>Í)>Ã(<:)lþV¦=:-læ€Ê”=:-læ2-lÍ2>”=:/l=O:-lͲ>ͪ>:-læ =<2-lÍ->Ã.<:/lO:)lÍp>ÂÛ=:-læ€ÂÆ=:)lþBÊÐ=ÃÒ=:-læþ*ÊÒ=> ͪ>Í)>Ã.<:/lO:)lþCÊé=þD:/`·Âü=> ͪ> ͪ>Ã>:)lþá"%lÍÔ9¯<Í;*%léþ“9xÖ2+`=úÎXA Â29AÖú29þÒ29G:+`=¸ÚÎXx2,`á"%lÍÔ9!.`F6!`~#¶ÊV9x=21`¯Í;>EÍ¢?:1`·+òo9-/<õxÍ¢?ñÖ Ú€9Ãw9Æ õxÆ0Í¢?ñÆ0Í¢?*%léþÂÑ9x2+`y2,`á"%lÍÔ9ÍB;:+`!,`–Íã:͹;GÊÊ9!9~#ùÍ¢?ù9*%léÊÊ9Ã)B¯2`2/`22`<2*`!9ͬ:þ Êé9þ+Âü9ͬ:à :þ- CÂ>ͪ> >Rͪ>Ã>ͪ> >Bͪ>Í)>Í)>Ã.<:,l*'lé!/l4!.l4ÉþSÈþ+Èþ-Èþ$ÈÉG:+lOx*`#¾È# ÂI><É>SÍ?>È>+Í?>È>-Í?>È>CÍ?>È>DÍ?>Éþ:Èþ/Èþ,Èþ.ÈþBÉ!.lN*`# Ⱦ†>·ÉG:.l_:+l“O x*`# Ⱦ¡>·É!i#9wÉþ$ÈG:/`·ÂË>xþ+Èþ-Êß>þSÊÙ>xþ+Êß>þ-ÈþSÊÜ>>+É>-É> ÉÍ3Bþ Âû>x=úõ>‡‡‡ÆGÍj?Ãâ>þ Â"?"  :J`·Ê ?�Ú?!9`x–Êâ>Ú?Í™?Ãâ>ÍÎEÃâ>þ Â6?Êâ>Å> Í¢?ÁÃ(?þ ÂH?xÂB?>Í™?Ãâ>þ ÂS?Íj?Ãâ>þÀxÂ]?>·Êâ>=õÍÎEñÃ]?Ê—?x!7`–Ò?ÅÍ—?ÁÃj?:H`·ÊŠ?¸Ú—?:7`¸È> Í¢?Ã?>25l!3lÃ8EÅÕåõ:H`·Ê¾?!7`¾Ò¾?> ÍÆ?> ÍÆ?ñÍÆ?áÑÁÉ22l!0lÃÜEÍÁAþÂã?y<>Âê?= Ãê?þÂx@¯O€�Ú)Boõ͈A####ñÑùÕõWÍp~·Â0D!`m>ÍUGÅ3!�å!åååå!…`Í´F!…`"tm!rmÍxHÃXD!`m>ÍUGÅ3!R.å!åååå!ª`Í´F!ª`"xm!vmÍxHÃmD*hm"zm!zmÍxH!|mÍÓF*lm^#Vëå!@`Ñs#r*nm^#Vëå!B`Ñs#r*jm^#VëÍ'T|æÀ*P`õÍ'T|æÀGñ�ʲD!€mÍE*jm^#Vë}‡‡‡æÀ*P`õ}‡‡‡æÀGñ�ÊÕD!‚mÍE:€`·úùD*jm^#Vë}æÀ*P`õ}æÀGñ�ÊùD!„mÍE:ƒ`·úEA @60#Ã1@þEÂ@>ew#þ.Â@þeÂ#@x·Ê1@Í“Aþ  @Í{Añ’GåZÑÅ+y=ú\@x=úT@Ö0þ Ú\@60ã$ãÃ^@w Âh@+6.ã$ãy=ò>@x=ò>@ñÑùëéþÂã@Ñx<ÂÀ@!ÿ9ùÿÍ©Aþ Ì©Aþ ʨ@þ ʨ@w# ÊÎX¯Ã�@H ëå!9 Ê»@+wð@ÑùëxéO¯�o>Ÿg9ùÕx ÈÍ©AÊÎXþ ÊÎ@þ ÊÎ@w#ÃË@ÖÚ)B=òí@<þÒ)B<_Ê)BK¯€Ú)B *jm^#Vë}òE!†mÍEÉ^#Vë"ˆm!a`"Žm*ˆm"’m!ŠmÍ{ZÉ2–m!”mÃ8E^#Vë"›m:|`·úGEÉ:~`·òsE*›m¯–òpE*›m5!�m6:�mÖ ÊmEÍ EÃ_EÃNEßE!žmÍÜE*›m¯–òŸE*›m5!?`6! mÍÜE:?`·ÊœE*›m6ÃyEÉÍÚH2�m:�mÖÂÍE!a`"¦m!"ªm!¢mÍ{Z!7`6#6!�m6 É:„`·òÛE!­mÍÜEÉ^#Vë"³m!3`"¹m*³m"·m!µm;M·úF!a`"¿m!Âû@oW͈A##ñùõÕÍpAÊUAKÖ0ÚÎXþ Ú*AÆ0æ_ÆÉþÒÎXõæ Â*A·ÂÎXKñæÆ0w# Â7Ax·ÊUAÍ“Aþ ÂAÍ{Añ’õGåZÑÊkA+wÃ`AñÑùëéx·ÈÍ“AÊpAÉx·ÈÍ“AÂÎXÃ{A¯•o>Ÿg9##ÉÍ©AÊÎXþ Ê“Aþ Ê“Aþ ÚÎXÉÅÕåÍÚHþ½A!6lÍ{Z> ·áÑÁÉÍ3Bþ ÂÖAÊÁAÅÍÚHÁÃÊAþ ÂèAxÂâA>Í BÃÁAþ ÀÍñAÃÁAÊBx!7`–ÒBÅÍ"Ãm!»mÍ{Z·òFóF:|`·ò³F*³m~Ö Ú,F*7`#"7`óF*³m~Ö Â@F!7`6#6óF:„`·ò³F*³m~Ö ÂbF*;`#";`!9`6#6óF*³m~Ö Â³F*9`#"9`!9`¯¾#žú„F!9`6#6*9`å*J`#ÑͼX|µÂ³F!a`"Ém!"Ím!ÅmÍ{Z·ú®FÍÎE!?`6€É"ÏmÁ!9"Ñm!ÏmÅÍÓFÁ! 9^ùÅÉÙm~# ÂØF*Ùm^#Vë|µÊíFÉ*Ùmå*Ûmëá Í-TBÁÃñA:H`·ÊB¸ÚB:7`¸ÈÅÍÚHÁÃB>2Dl!BlÃ8E!ElÃ{Zë×BÍØB^ÍãB^#Vþ�ÊpBþ€ÂNBÍ—BÃ3Bë#FåþÒiBá#NåþÂiBá#åÕ^Ñ#ër+sáÉÕ#^#V++r+s~·ÁÊ3B5Â3BÍØB5^ÍãBq#pÃ3BOÕÍØB4~þ ÒµB_ÍãBÑs#r#s#r#qÉ!»BÃ{ZÃBÄBa`ÅBÇB Format Overflow*c`-&t`É!flÉÃCO:„`·yúC!*Ûm nb¯½œò"G*Ûm ë!Þm>ÍlUÃÍU*ÙmÍÙT!ÞmÍ&U*Ùm~#¶ÂhG*Ùm^#Vë)))|·úhG*Ùm6P#6*Ùm~#¶Â¢G*Ùm^#Vë))|·ò–G*Ùm6ÿ#6ÿâG*Ùm6<#6*Ùm6#6*Ùm6#6*Ùm6#6*Ùm 6*Ùm^#Vë}‡ÍoQ}2Ým*Ùm^#Vë}‡‡‡‡òùG!Ým44*ÙmåÑ9GÊC~#þ'ÂCÃCyÃCõO:|`·ú*CÃsCͦCú3C{þÂ;C*H`|µÊdCj& Õå*H`ë*7`ͼX#ëáͼXÑ> Ü®C> Ü®CͦC> ô®C{=>'Ä®CñÁ!9·Ê•C=õ~#þ'ÂŽC{þ>'Ì®CÍ®CñÃyCùÅ{=>'Ä®C{·>bÌ®CÉ*7`++|·ÉõÅÕå2m!mÍÜEáÑÁñɯÃËC>ÃËC>2m"më"m`i"m!9"m! mÃçCfm ~# ÂìC*fm~Öò[D*fm^#Vë}‡‡òH>2Ým*Ùm^#Vë}ò:H*Ûm~#¶Â:H*Ûm6#6*Ùm"öm*Ûm"òm*Ûm"ôm!ìmÍ›L*Ùm^#Vë|µÂwH*Ùm"n!"n!ømÍ{ZÉ^#Vë^#VÕÍ0^:c`þÚ•H!ºHÍ{Z¯2c`O!t`·Â¤H6ÿéH +~#wÑ!d` s#r!c`4Íè]ÉÂHÃHa`ÄHÆH I/O Stack Overflow:?`ÖÂúH!3`" n!nÍ«M·ú÷H!n6ÃI:?`2n#  !?`6:nÖ ÚI*7`#"7`:nÖ Â$I!7`6#6:nÉ"‘OÑá"“Oëé*‘O^#V#"‘OëÉ^#VëÉÍ2IÍ>I"—OÍ>I"›O|µÉÍCIÈ|·È~ÉÍ2IÍ>IÉy·ÈÖaþÒsIÆAÉþ Èþ=Èþ.Èþ:Èþ;Èþ<Èþ>Èþ[Èþ]Éy·È É*•OëÍeIþ ÀÍ�IÛIÍeIþ$ÀÍ�IÍeIÖ1þÚ½I ÉÅÕåo&))))\xH ëá ·ÊÚI#w ÂÚIÑÁÍ�I¯ÉÍ•I*›O#·Ê JÞAþÒ JGÍ�IÍÍDNÂOÍ(IÍCIÊ‚O~þÌWK>ÍDNÊ‚O*›O~þÊ,N>ÿÂOÍ5NÍÃPÂO*›Oë!*~!/É2ŸO*›Oÿÿ|·ÊYN(^#VÕÍ^IãåÍ^Iëá{•zœÚlNëáz·úÐN¯2šOz³Ê›NÕå:ŸOþÂ�NͧKáÑÈqÖNNÍàKáÑÈ#ÃvN*›O|·ÊÐN*~·ÊÐN=!šO¾ÚÍNõ:ŸOõÍLÊÊNñÖÂÆNwñíNÁÁÉÍÑM>ÿ·ÉÍ(IÍCIÊ‚O|·}Ê‚O~þ> Ò‚O†<ÂOÍ(IÍCIÊ‚O|·ÂO*—eIþ:ÊJ 6ÃJp4Í�I+ͧIÊ8J#ÍeIÊDJ#þ*Â0J6?Ã4JwÍ�IÂJÍeIÊKJÍ�IÃ8J#6 ÂDJþ.„JÍ�I ͧIÊxJÍeIÊ„J#þ*ÂpJ6?ÃtJwÍ�IÂ_JÍeIÊ‹JÍ�IÃxJ#6 „J%#6Â�J*›O##^ ~þ?¤J# Â�Jx·ÉCON CON RDR PUN LST M!¿J ~ÉÍ•Iþ$ÂÒ‚O"N#F#~Í2Iq#p#w>ÿÂOÍ(IÍUIÊ‚Oþ>‚O*~Í^Ië!·ÊqO=ÒcO>!ë*›O" s#r#w=ÂOë*“Oåë·É Í}!fn6ÿþ Ø4É€ÍÉ>ÿ2en·É*bn!4À#4À#4Éå~#N#F#–y#žx#žáÉ:en·À*bnë!!:dnþÊûOÍÐOÒºO:fn·Èþ Â�áÁÁ·É¯É*›O+ÉÍ>K^#VÉÍFK#{–#zžÉÍ>K6#6ÉÍFKë€ ër+sÉ! nF#~�Ú�K! n6Pë Í ÍF^ ÍF^! n^r+s6 #6 ! n4^NÉ*›O|·ÂÍK}=ºKÍmKÃÉKÍÅJ·ÊÅK¯ÉÍO>ÿ·É~þÊÙK·ÊÙK¯É>ÍLNÉ*›O|·ÂLYÍÅJ=ÊòK¯ÉyþÂþKÍF^ÃLÍ~æG~#~Oþ?Ò:P#~·Â:P! p! y–ÈÅÕÍÑÁ! qÍ<Â>P<ÉͺOɯÉ~#N#F#w#q#pÉåͱOÍ¡O~·ÑÂhPÕ#ÍÑ!!Í@PÉ! 6?åÕÅÍÁ<Ê£P=懇‡‡‡Æ _!€x¾Ú—PÂ�PFNÅÃvPÑá¯wxG>�O>ˆG!$q#p#6ÉÃÅP"_në"bn2anx2dnÍ¡O¯2enͱO!an~5·ÊiQÍàOÊ Q=Â6Q:dnþÂ6Q*bnëÍ>ÿ·É~þÊL=ÊL¯ÉÅ>ÍLÁÈqÉ2 O*›O/"�OÍMKÚrL{²ÈÍWKÍFK*�OëÍ*›O#ë: OOÍ·Ê[LÍFK#s#rÃdLÍ`KÍMKÚ4LÍWK€ÍÃLÍFKr+s{æƒL!šO4*�O+>ÿ·É|µÊ’L+€}æ€oÉÍ(IÍ2I~2™OÍ2I"•OÍCI:™OþÒ¡MÍÎJÊÔLG:™OþÒ¡M*—Op®ÂÎL4#6ÂOÍ^I:™OþÚïLÍŒLå*‘O++"‘OáÃøL}´+ÊüLÍ’L}‡|2ŒO"< QÍenÃ6Q*_nëÍ:dnO*bnë:fn·Â'QyÆ OÍ·ÊBQ:dnþºO*_n€¯w# Â�Gx·È|g}oÃvQá"gn>Í3R*gnéá"in̓QͰQ*inéá"in̓QͰQå*inãÉõÅG!9ë!x·Ê Rþ ÊRþ+ÂÙQã$%ÂÎXgãÃRþ-ÊÎQþ0úÎXþ:òÎXÖ0ÕT])ÚÎX)ÚÎXÚÎX)ÚÎX…o|ŠOÍ^IÍŒL"�O1Í'Y|µÊ¡M##"›O6ÿë*—Os#rÍéI O{þ Ê O*›O:™OwþÚ?M6ëæÂbM*�O"�OÕÍÑ<ÂxM:™Oþ OÃiMÕÍÑÍ<Ê O!"�O*›O(ŠOw# „M*›O~#þÌLP*›OÍî^>ÿÂO*—O¯w#wÂOÍ(IÍCIÊ‚OͧKÍ2IqÂOÍ(IÍCIÊ‚OÍ2INÍàKÂO*›O~ÖÈ" 4À#4À#4ÉÍ(IÍCIÊ‚O~þÂÿMÍ5N;PÊ‚OÍWK>ÎgÚÎXÑþQÑ{þÊR$%ÂÎX}ÃR|‡ÚÎXzþ-Ì©XëñÁo&9ùëÅ}ÉO!9îÿëùÅ w#ÂARÁ60#60! 9~ ·òpR!97>š?žÆ'w#ÂaR-!9~͵RʉR~#͵RÂvR! 9~þ.›R+60çRþ0§R6 #Â�R+r>‘o&9Ñyùëéåõ>ƒo&9ñæÆ0w+ÂÌR6.áÉ!9ÍŒWõ}!·ÂåRñÑÁÁÕÉþòÎXÖ/�·Ê"S)ÚÎX=ÃS|ÉÁë/˜G!͇Sþ ÂmS>0ñ·ò|Sþ ÂrS>-Áñ¸Ðá3åÃ~SåÕT]))ÑÔ‡Sá寕iO>œ`G>0 ÒªS<âSÁ DMþ0Àþ À> Éo‡Ÿg|·æ€õòËSÍ©Xë!ñͰWáÅÕé<Áë!øÿ9ùÅ<·Ow#È ÂéS·>™úúS¯w#ÈÃúGñªî€OS\É{EåÍ=XãåDÍ=XãåzEÍ=XãDÍ=X\e.Á Ò+XÁ Ò1XS\e.Á ÒÊîX!>ë)Ò–Xëå ÒžXãá=ʧX)Ã�Xëɯ•o>œgÉ^#V#N#FáÅÕé{•ozœgÉ|µÈ|/æÀ=É!ÔXÃ{ZÜXÝXÞXàXâX Conversion2Y!÷XÃ{ZÿXYYYS!9ë!7ë>š?žë†'w# TëÑùëéȇÃ!TÈ)Ã'Ty°Èw# Ã-T~#ÃDT~#W“ –À#ÙTë!9åO…o>ŒgãëyͽTáÑùëéåõ~õ#…o>ŒgxÁ�Gñ¸ÒÒTGÍpUá†wÉF#ëá"knëõxÍUÍíT*kné!9G…_>ŒW€Obk++à Y2"Yx2!Y!YÃ{Z!Y"Y#Y%Y#}æþOD*Ûn~ÒiY##~#fo´Â0Y!EYÃ{ZMYNYOYQYSY Free Space Exhaustedå##^#V#{•_zœWÚ2Z{‘_z˜WáÚ5Y4z·Â�Y{þÚ¸Yå##^#V# ëãå##s#rëÑs#r#ëãës#r+++ë~æs¶w#rá####É}´Èë*Ûn}“|šÒ,Z*{•zœÒ,Zë+F+N+V+5^{Ú2Z{•zœÒ2Z}‘|˜Ò2Z{²Ê ZÚ Zi`~æÊ U~+ÂUáÑyé~#·ÈÁë/ÃîXÍ©X#"nnë"xn`i"vnáÍŒWÕë*nn"nn!mn®w`i"pnáÍ›VÍžV"rn*pnë*vnÍ‚V"pnës¶w#rë##q#p Øi`N#F#^#Vë~Ò2Zq4#p+ëi`##s#rÉ8ZÃÄ_TZÃÄ_ FREE Request Out-of-Range$ Free Space Overwrite$GKþÒ“ZMbkÓZÍ`\FÍ_\NÅÍ_\N#FÅÍ_\^#VáÁ"Ó`y2Ò`ÅÕåxþÒ¦Zi&Í ]ÊÝZ±ZÕéáÑÁxþ½Z>ÿÉþÚàZë!a`{–À#z–À*@`å*B`åÍÜ]áÑùëéáÑÁxÖÈy·xòìZ·ÈÕåÅõÍD[ñ_!|\^#VëÍ›V"tn*xnÍ XëÍ›VÍ©Xë*tnë*rn|§òDVÍ©Xë*vnÍ‚VÍ©Xë*pnë|·ò\V)))Ú\VÃ\Vë*vnÍ‚Vë*pnë))ÒWV)Ò\V:nnO:onGz³´µÊ|Vz·ú|V ë)ë)ÒkVÃkV:mnðWÍ©XDM>!ëë=È)ë)Ò�V ÓVÍžV|§g}oÉÍmW°VÍQW°VÕÍŒW2zn"{n!}nr#q#páÍŒWÕë*{n"{nÑ!zn®æ€w!€nr#q#p:~nG:‚nÍ=Xå:nG:�nÍ=Xå:}nG:‚nÍ=XåÍ›[Í>[>(Í@[ÁyÍw[>)Í@[á|µÊ![Í3[Í\á|µÊ-[Í3[Í›[Í­[é_å>,Í@[Í>[áÉ> _ÃF^ ÍF^ ÃF^æÆ0þ:Ú@[ÆÃ@[õÍN[ñÃN[åÍ>[áå|Í\[á}Ã\[þ Ú‡[d¹Ô‰[ ͉[¹Ú”[‘Ë[õxÍN[ñÉN È#~·ÈÅåÍ@[áÁÃ�[!n\Í›[*Õnë!9{•_zœÂÎ[{·ÚÎ[þ Úâ[Íà[Í>[>#Í@[*Õnøÿ>·È=^#V#åõëÍh[ñáÃâ[Íù[>:åæþ Ò:~nG:�nÍ=Xå:nG:€nÍ=Xå:nG:‚nÍ=XëáÁ Ò(WÁ Ò.WÁã Ò5WÁ|e. Ò?Wåo&ë:zn*{nDMáðW"ƒn!eWã^#VÕ!9ë*ƒnÉá3333ÅÕé!€Wã^#VÕ!9ë!ëÉá33333333ÅÕé###~·Â›WGOW_goÉÞ€_ŸW+~ö€G~æ€+N+f.ëÉõz³´µÂÀWñÉz·úÑW ë)ë)ÒÀWÃÀW}‡ÒæW$ÂæWÂæWÂæW€x©úøWÊýWÊýW>à Y>ÃYyÆ€\>?Í@[áÉå!f\Í›[áåÍ›[>=Í@[á^#Vë|·Â8\}þÚ/\.))ç\Û[#F>A€Äô[> #õþÂS\~þ >.Äù[~þ Äù[ñ=ÈÃD\ë^#V#ëÉ File: Traceback:Œ\“\£\­\¸\Å\Ò\â\ ERROR FIXED OVERFLOW OVERFLOW UNDERFLOW ZERO DIVIDE END OF FILE UNDEFINED FILE KEYNULCONCONRDRPUNLST%  BADGë!Õ`~þÚ/]]ÃÄ_ Condition Stack Overflow$4Ox!…n w#s#r#ÑÕs#r!9ë!Ö` s#rÉë!Õ`N!…n È+++++¾Âh]#{¾Â�]#z¾Ê†]++~Ãh]++ë!Õ`5!È~# •]Ñ]ë!Õ`N!…n È+++++¾Â°]#~#¶ÊÔ]+{¾ÂÏ]#z¾ÊÔ]++~ð]#^#Vë¯=É!c`~·ÈåÍ0^á5:c`·È_!d`^#Vë"a`3`€ ÿ�€ ÿ�€ÿ�€ÿ€ÿ��€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ€ÿ��€ÿ€ÿ��€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ÿ�€ ÿ�€ÿ�€ÿ€ÿ��€ÿÿ�€ÿÿ� and user (and v to verif.~# Â^*P`)))))|` )| Â^*3`|·À}þÐ*ö`"7`É:c`·È*a`3`w# Â=^É*ö`{þ ÒW^þ Â[^!#"ö`ÃÃ�^Copyright (c) 1980 Digital Research, v1.3 !"Ùn"×n"Ýn¯2Õ`2c`*àn ÚÌ^Ñù"ÕnÕq#p##}æþo"Ûnë*}æþoæø“|šÒÒ^Ì_ÃÄ_¯+w+w+r+s4ëw#w#s#rÍ<2ßnÉå++ë*Ùnës#rá"Ùn*×ny): and user: : Sorry, CP/M2.2 is required.??*1234567890 No files. . k :LSX ABC ToDEMRTUV????????????‚ Files occupying k(k remaining) Which******k remaining on Drive : NewSWEEP vers#"×nÉë*×nDM!Ùnx±È~»ÂŸ_#¶È~+ºÂŸ_ëå+F+Náëq#p*×n+"×n·Êš_þÒ�_=ÂP_!+~æO~#~G!>€‘æw!/x·Âx_y·Ê•_å >€‘O6# Âo_áÅå€ ãÕëÍÑÕÍÑáÁ·Ê__ͯ=É¯É ~#fo++Ã_!×n~#¶ÊÁ_*ÙnÍ_©_â_ÃÄ_ô_ Íà Insufficient Memory$ Invalid I/O List End of Exeion 3.6 - July 2, 1982by Robert FisherDePaul UniversityChicago, IllinoisCommands:A: Again. Retag # files.B: Backup to last file.C: Copy file with optional verify.D: Delete file.E: Erase all tagged/untagged files.L: Login new disk and user and reset scution$ ` 8 8 8SYSINSYSPRINT€ ÿ�€ystem.M: Mass copy of tagged files with optional verify.R: Rename file(s).S: Space remaining on disk.T: Tag file for transfer.U: Untag a file.V: View a file at console.X: Exit to CP/M.?: Redisplay menu.sp or cr: Next file.Drive New name or * :  ÿÿ�€ÿ€ÿ��€ÿ�€ÿÿÿÿ�€ ÿÿÿ�€ÿ�€ÿÿÿÿÿ�€ÿ�€ ÿ�€ $ÿ�€ 'ÿ�€ 'ÿ�€ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ ÿ�€ÿ�€ÿ�€ÿ�€ €ÿ�€ÿ��€ ÿ�€ÿ�Cannot rename. already exists.File is R/O. Okay to rename?(Y/N)YO.K. to rename Renaming ====> . ? Old name: New name: € is R/O. Delete anyway?(Y/N) Deleted. Delete? (Y/N):Erase tagged or untagged files? (T/U) : Do you wish to be prompted? (Y/N) :&   NType A at prompt to abort.Erase ?(Y/N/A)Erasing $is R/O. File not copied. is R/O. File not copied. Out of directory spaceCopying =====> with verification CRC check failed. Error. Disk full. Warning: source = target. Re-log drive for an accurate lllll2l5l>l?la`@lDlMlNla`OlQl Invalid Format Itemdirectory. drive0123456789#****Aborted.Tagging Total of tagged files = k (k) Total of tagged files = ( th…h™h …h…h…h§h‡c¦hc¦…h…h…h¦w¦·hºh¯hÁhÅh‚02Ðh +hÜhÜ<ÿ‡h> �J ñh Æcøhimmmmmm Stream/Record Sequen/Direct Input/Output Keyed Access P< $contmxm3`Tmm*m8mFmdmem’m–m —m˜m™mšmªm ¬m¹m¯m°mÃm±m²mÍm.datÝmÞmöm×mØmnn ./i-&')*+(%12ôc0iRiti’i•i…h²iÿeyiÏiÄiÙiÄiâiåi nnânjçi1jçiüijjXjyfjj{jºjÇjÂjÐjÂjÂjÙj…hèjëjãjòjãjãjãjåk/kk5k9kk?kCkIkkQkXk\k`kkgkkk!kqkukykkƒk#k‰k�k‘k•k'k›k½kÀk¦k‡cÝkxhÙkÛkëkëkå'   DISK.DOC -FOG/UTL.013 First Osborne Group (FOG) Utility Disk This disk contains CTERM and PLNK0124, two terminal emulator programs for communicating with a modem. To run either, place the .COM åfile in drive A. At the A> prompt, type program where program is CTERM or PLNK0124. For instructions, refer to CTERM.DOC or PLNK0124.ASM. When using CTERM, the boot disk must have system tracks configured for a serial RS232 printer. Use å SETUP to toggle the printer as a serial device. Then press and . DIRLABEL, submitted by Dennis McFerran of FOG, is similar to DSCLABEL found on -FOG/UTL.009. To print a label of file names extracted from a disk directory, plaåce DIRLABEL.COM in drive B and the disk to be labeled in drive A. At the A> prompt, type B:DIRLABEL For information, refer to DIRLABEL.ASM. SWEEP36 is an update of SWEEP14 found on -FOG/UTL.005. To run, place SWEEP36.COM in drive A. At åthe A> prompt, type SWEEP36 The program is self-prompting. Jim Woolley FOG Disk Librarian October, 1982 å