@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uX CC65 -V -O UUDECODE.CX RA65 UUDECODE.M65X CC65 -V -O UUDEXTRA.CX RA65 UUDEXTRA.M65X LINK65 -V -M -B3000 -O UUD.COM @UUDT}.LNK5 -V -O UUDECODE.CX RA65 UUDECODE.M65X CC65 -V -O UUDEXTRA.CX RA65 UUDEXTRA.M65X LINK65 -V -M -B3000 -O UUD.COM @UUD/* * Uudecode -- decode a uuencoded file back to binary form. * * modified for Lattice C on the ST - 11.05.86 by MSD * mo V}dified for Alcyon on the ST - 10-24-86 by RDR * modified (a lot) for MWC on the ST 02/07/87 by JPHD * (Some more to be d W}one on the I/O speed...) * modified more for Atari 8-bit -- jrd * */ #include extern FILE * fopen(); extern cha X}r * strcpy(); #ifdef M6502 #define exit(x) careful_exit(x) #else #include #define fix_pathname(foo) foo #endif # Y}define MAXCHAR 127 #define LINELEN 80 #define FILELEN 64 #define CODEDLN 61 #define NORMLEN 45 char * mism = "Part suffix mi Z}smatch: <%> instead of <%>.\n"; #define SUBS1 23 #define SUBS2 38 FILE * in, * out; char ifname[FILELEN]; char chtbl[MAXCHA [}R]; char * pos; char blank, part = '\0'; int partn = 'a'; int lens; #ifdef M6502 char argbuf[80]; #endif /* * Bring back a \} pointer to the start of the nth word. */ char * getnword(str, n) register char * str; register int n; { while ((*str == ' ]}\t') || (*str == ' ')) str++; if (!*str) return NULL; while (--n) { while ((*str != '\t') && (*str != ' ^} ') && (*str)) str++; if (!*str) return NULL; while ((*str == '\t') || (*str == ' ')) str++; if (!*str) _} return NULL; } return str; } main(argc, argv) int argc; char * argv[]; { register int i, j; char dest[FILELEN], b `}uf[LINELEN]; #ifdef M6502 if (argc < 2) argc = 1 + readargs("UUD>", argbuf, argv + 1); #endif if (argc < 2) { a} Console("Almost foolproof uudecode v1.0 15-Feb-1987 JPHD\n"); Console("Usage: uudecode inputfile\n"); exit(1 b}); } if ((in = fopen(fix_pathname(argv[1]), "r")) == NULL) { Console("Cant open input file.\n"); exit(2 c}); } /* * Set up the default translation table. */ for (i = 0; i < ' '; i++) chtbl[i] = '\0'; for (i = ' d} ', j = 0; i < ' ' + 64; i++, j++) chtbl[i] = j; for (i = ' ' + 64; i < MAXCHAR; i++) chtbl[i] = '\0'; chtbl['`'] e} = chtbl[' ']; /* common mutation */ chtbl['~'] = chtbl['^']; /* an other common mutation */ blank = ' '; /* * searc f}h for header or translation table line. */ for (;;) { if (fgets(buf, sizeof buf, in) == NULL) { Console("N g}o begin line\n"); exit(3); } if (strncmp(buf, "table", 5) == 0) { gettable(); continue; } if (strncmp h}(buf, "begin", 5) == 0) { break; } } lens = strlen(buf); if (lens) buf[--lens] = '\0'; if ((pos = getnword i}(buf, 3)) == NULL) { Console("Missing filename in begin line.\n"); exit(10); } else strcpy(dest, po j}s); if ((out = fopen(fix_pathname(dest), "wb")) == NULL) { Console("Cannot open output file\n"); exit(4); k} } decode(); fclose(out); exit(0); } /* * Install the table in memory for later use. */ gettable() { char buf[L l}INELEN]; register int c, n; register char * cpt; n = 0; for (c = 0; c <= MAXCHAR; c++) chtbl[c] = '\0'; again: m}if (fgets(buf, sizeof buf, in) == NULL) { Console("EOF while in translation table.\n"); exit(5); } if (strn n}cmp(buf, "begin", 5) == 0) { Console("Incomplete translation table.\n"); exit(6); } cpt = buf + strlen( o}buf) - 1; *cpt = ' '; while (*(cpt) == ' ') { *cpt = '\0'; cpt--; } cpt = buf; while (c = *cpt) p} { if (chtbl[c] != '\0') { Console("Duplicate char in translation table.\n"); exit(6); } if (n == 0) b q}lank = c; chtbl[c] = n++; if (n >= 64) return; cpt++; } goto again; } /* * copy from in to out, de r}coding as you go along. */ decode() { char buf[LINELEN], outl[LINELEN]; register char * bp, * ut, * trtbl; register u s}nsigned int n, c, len; trtbl = chtbl; for (;;) { if (fgets(buf, sizeof buf, in) == NULL) { Console("Short t}file.\n"); return; } len = strlen(buf); if (len) buf[--len] = '\0'; /* * Get the binary line le u}ngth. */ n = trtbl[*buf]; if (n == NORMLEN) goto decod; /* * end of uuencoded file ? v}*/ if (strncmp(buf, "end", 3) == 0) return; /* * end of current file ? : get next one. */ if w} (strncmp(buf, "include", 7) == 0) { getfile(buf); continue; } /* * Is it the empty line before the end x}line ? */ if (n <= 0) continue; /* * Pad with blanks. */ decod:for (bp = &buf[c = len]; y} c < CODEDLN; c++, bp++) *bp = blank; /* * output a group of 3 bytes (4 input characters). z} * the input chars are pointed to by p, they are to * be output to file f. n is used to tell us not to * outpu {}t all of them at the end of the file. */ ut = outl; len = n; bp = &buf[1]; while (n > 0) { |} *(ut++) = trtbl[*bp] << 2 | trtbl[bp[1]] >> 4; n--; if (n) { *(ut++) = trtbl[bp[1]] << 4 | trtbl[bp[2]] >> }} 2; n--; } if (n) { *(ut++) = trtbl[bp[2]] << 6 | trtbl[bp[3]]; n--; } bp += 4; } ~} n = fwrite(outl, 1, len, out); } } /* you may need to rename the filenames at the ends of each part * if the encod }er encoded them on directories and specified drives. */ getfile(buf) register char * buf; { if ((pos = getnword(buf, 2)) == } NULL) { Console("Missing include file name.\n"); exit(11); } else strcpy(ifname, pos); #ifdef M65 }02 fclose(in); if ((in = fopen(fix_pathname(ifname), "r")) == NULL) #else if (freopen(ifname, "r", in) !=in) #endif } { Console("Cannot reassign input file to included file.\n"); exit(7); } for (;;) { if (fgets(buf }, LINELEN, in) == NULL) { Console("No begin line in included file: "); Console(ifname); Console(".\n"); exit(3); } } if (strncmp(buf, "table", 5) == 0) { gettable(); continue; } if (strncmp(buf, "begin", 5) == 0) { } break; } } lens = strlen(buf); if (lens) buf[--lens] = '\0'; if ((pos = getnword(buf, 3)) == NULL) { } Console("Missing part name, in included begin line.\n"); part = '?'; } else { part = *pos; /* * Che }ck the part suffix. */ partn++; if (part != partn) { mism[SUBS1] = part; mism[SUBS2] = partn; Console( }mism); } } } /* * Output to console, immune against redirection of stdout. */ Console(s) register char * s; { while } (*s) Bconout(2, *s++); } t to console, immune against redirection of stdout. */ Console(s) register char * s; { while 0NKLf5HehL1`ܠؠԠРH8咅h`H8h`֠ҠΠʠƠ±}HȱhL1``e` 0L0L1L1L1L1L1L1 0ȘL1 0L1 M0Hȑh`HȱhL0}HȱhL0Hȱh 0` 0` .1HȥhL1 .1L1 0`HȑhL1L1HH 0hhL1HH 0}hhL1 H*h`L1`L1`HIhIi```IHIh`e` 1L0`}` 1L1 1L1 1L1 1 1L0 1 1L0 0 &L1L1 0󨥂fjL1 0eHehL1 0}8H哪hL1 0HhL1 0EHEhL1 0%H%hL1`\_ 0łXTM 0łFBE 00>7ł86/ 0䃐-&ł}'% 00ł 0䃐 ł`` 00ł 0䃐ł۰ 00łʰ 0䃐ł𹰼 }L0H hL0lHh` 1L0 1L0hh捠ilŕŔ }liL3`L1 0 1 Ɣ 1$ \4& $ \4& 򦓥 1`H}eeh`` 0 1 1 1 1Ńł &&L4FfFf3ō}Ō8包卅FfFfͥ 1ĕ 1` t4L1 0 0 ` 0}`S L L L i?H ihL5 0 Gl ;}}a }k3 u0 3 2 u0 3 2 u0 3 0 B1 4L6 u0 1 1 1Lq3 u0 0 B1 1L7 u0 3 2} u0 3 2 u0 1 u0 3 0 B1 4L<7 u0 1 1 1Lq3 u0 3 2 u0 3 2 u0 }3 0 B1 4L7 u0 1 1 1Lq3L'7 u0Lq3 k3 70 1 24 0Ѣ; 06 0 1 }1 Y2 0 H Y2 B1} 1 2$֢; 0 }E< 0 }E 0 G 1 }1 Y2 3 F 0"< 0 wG55 0 2$< 0 }E 0} G B1 1 25L8 u0 3 0 B1 4L85 0 u0 Y2 0 i1L8 B1 B1 1` 2IL_9 u0 3 0} B1 4 u0 3 0 B1 4L%95 0 u0 Y2 0 u0 i1L69` B1 1 25L9 u0 3 0 B1 4L95 0 u0 Y2 0} i1L95 0` Y2 05 0 Y2 1 i15 0~ Y2 05 0^ Y2 1 i1 y6L:L: 0P 055 0 G }0 2;< 0 }E 0 G 0J< 0 0 E 0 2 instead of <%>.UUD>Almost foolproof uudecode v1.0 15-Feb-1987 JPHDUsage: uudecode inputfilerCant open i}nput file.No begin linetablebeginMissing filename in begin line.wbCannot open output file k3V 70 B1 B}1 1 25L< u0 3 0 B1 4L<5 0 u0 Y2 0 i1L 0 }}E 0 G 0> 0 0 E 0 2Ţ> 0 }E 0 G 0 0 M5 Y2 0 h2 B1 1 i1 u0 }3 2" 1 i1 u0 3 0 B1 4L= 0 B1 u0 1 B1 1L>5 0 u0 Y2 3 2> 0 }E 0 }G 1 2 u0y65 0 u0 Y2 0 u0 3 0 B1 4 i1 1@ 33V 0Lq3 u0 3 0 B1 4L=V 0Lextern FILE * fopen();extern cha}r * strcpy();#ifdef M6502#define exit(x) careful_exit(x)#else#include #define fix_pathname(foo) foo#endif#}define MAXCHAR 127#define LINELEN 80#define FILELEN 64#define CODEDLN 61#define NORMLEN 45char * mism = "Part suffix mi}smatch: <%> instead of <%>.\n";#define SUBS1 23#define SUBS238FILE * in, * out;char ifname[FILELEN];char chtbl[MAXCHA}R];char * pos;char blank, part = '\0';int partn = 'a';int lens;#ifdef M6502char argbuf[80];#endif/* * Bring back a} pointer to the start of the nth word. */char * getnword(str, n)register char * str;register int n;{ while ((*str == '}\t') || (*str == ' ')) str++; if (!*str) return NULL; while (--n) { while ((*str != '\t') && (*str != '} ') && (*str))str++; if (!*str)return NULL; while ((*str == '\t') || (*str == ' '))str++; if (!*str)}return NULL; } return str;}main(argc, argv)int argc;char * argv[];{ register int i, j; char dest[FILELEN], b}uf[LINELEN];#ifdef M6502 if (argc < 2) argc = 1 + readargs("UUD>", argbuf, argv + 1);#endif if (argc < 2) { } Console("Almost foolproof uudecode v1.0 15-Feb-1987 JPHD\n"); Console("Usage: uudecode inputfile\n"); exit(1}); } if ((in = fopen(fix_pathname(argv[1]), "r")) == NULL) { Console("Cant open input file.\n"); exit(2}); } /* * Set up the default translation table. */ for (i = 0; i < ' '; i++) chtbl[i] = '\0'; for (i = '} ', j = 0; i < ' ' + 64; i++, j++) chtbl[i] = j; for (i = ' ' + 64; i < MAXCHAR; i++) chtbl[i] = '\0'; chtbl['`']} = chtbl[' '];/* common mutation */ chtbl['~'] = chtbl['^'];/* an other common mutation */ blank = ' '; /* * searc}h for header or translation table line. */ for (;;) { if (fgets(buf, sizeof buf, in) == NULL){ Console("N}o begin line\n"); exit(3);} if (strncmp(buf, "table", 5) == 0){ gettable(); continue;} if (strncmp}(buf, "begin", 5) == 0){ break;} } lens = strlen(buf); if (lens) buf[--lens] = '\0'; if ((pos = getnword}(buf, 3)) == NULL) { Console("Missing filename in begin line.\n"); exit(10); } else strcpy(dest, po}s); if ((out = fopen(fix_pathname(dest), "wb")) == NULL) { Console("Cannot open output file\n"); exit(4);} } decode(); fclose(out); exit(0);}/* * Install the table in memory for later use. */gettable(){ char buf[L}INELEN]; register int c, n; register char * cpt; n = 0; for (c = 0; c <= MAXCHAR; c++) chtbl[c] = '\0'; again:}if (fgets(buf, sizeof buf, in) == NULL) { Console("EOF while in translation table.\n"); exit(5); } if (strn}cmp(buf, "begin", 5) == 0) { Console("Incomplete translation table.\n"); exit(6); } cpt = buf + strlen(}buf) - 1; *cpt = ' '; while (*(cpt) == ' ') { *cpt = '\0'; cpt--; } cpt = buf; while (c = *cpt) } { if (chtbl[c] != '\0'){ Console("Duplicate char in translation table.\n"); exit(6);} if (n == 0)b}lank = c; chtbl[c] = n++; if (n >= 64)return; cpt++; } goto again;}/* * copy from in to out, de}coding as you go along. */decode(){ char buf[LINELEN], outl[LINELEN]; register char * bp, * ut, * trtbl; register u}nsigned int n, c, len; trtbl = chtbl; for (;;) { if (fgets(buf, sizeof buf, in) == NULL){ Console("Short }file.\n"); return;} len = strlen(buf); if (len)buf[--len] = '\0'; /* * Get the binary line le}ngth. */ n = trtbl[*buf]; if (n == NORMLEN)goto decod; /* * end of uuencoded file ? }*/ if (strncmp(buf, "end", 3) == 0)return; /* * end of current file ? : get next one. */ if} (strncmp(buf, "include", 7) == 0){ getfile(buf); continue;} /* * Is it the empty line before the end }line ? */ if (n <= 0)continue; /* * Pad with blanks. */ decod:for (bp = &buf[c = len];} c < CODEDLN; c++, bp++) *bp = blank; /* * output a group of 3 bytes (4 input characters). } * the input chars are pointed to by p, they are to * be output to file f. n is used to tell us not to * outpu}t all of them at the end of the file. */ ut = outl; len = n; bp = &buf[1]; while (n > 0){ } *(ut++) = trtbl[*bp] << 2 | trtbl[bp[1]] >> 4; n--; if (n) { *(ut++) = trtbl[bp[1]] << 4 | trtbl[bp[2]] >>} 2; n--; } if (n) { *(ut++) = trtbl[bp[2]] << 6 | trtbl[bp[3]]; n--; } bp += 4;}} n = fwrite(outl, 1, len, out); }}/* you may need to rename the filenames at the ends of each part* if the encod}er encoded them on directories and specified drives.*/getfile(buf)register char * buf;{ if ((pos = getnword(buf, 2)) ==} NULL) { Console("Missing include file name.\n"); exit(11); } else strcpy(ifname, pos);#ifdef M65}02 fclose(in); if ((in = fopen(fix_pathname(ifname), "r")) == NULL)#else if (freopen(ifname, "r", in) !=in)#endif } { Console("Cannot reassign input file to included file.\n"); exit(7); } for (;;) { if (fgets(buf}, LINELEN, in) == NULL){ Console("No begin line in included file: "); Console(ifname); Console(".\n"); exit(3);}} if (strncmp(buf, "table", 5) == 0){ gettable(); continue;} if (strncmp(buf, "begin", 5) == 0){} break;} } lens = strlen(buf); if (lens) buf[--lens] = '\0'; if ((pos = getnword(buf, 3)) == NULL) { } Console("Missing part name, in included begin line.\n"); part = '?'; } else { part = *pos;/* * Che}ck the part suffix. */ partn++; if (part != partn){ mism[SUBS1] = part; mism[SUBS2] = partn; Console(}mism);} }}/* * Output to console, immune against redirection of stdout. */Console(s)register char * s;{ while} (*s) Bconout(2, *s++);}t to console, immune against redirection of stdout. */Console(s)register char * s;{ while/* Extra stuff for uudecode on M6502 -- jrd*/#include extern FILE * in;extern FILE * out;#ifdef M6502int} strncmp (str1, str2, nbytes)char * str1;char * str2;int nbytes;{ while (--nbytes >= 0 && (*str1 == *str2++)) if (!}*str1++) return(0); return(nbytes < 0 ? 0 : *str1 - *--str2);}Bconout(foo,c)int foo;char c;{ cputc(c,0);}c}har tmp_path[80];char * fix_pathname(p)char * p;{ if (strchr(p, ':')) return(p); else { strcpy(tmp_path}, "D:"); strcat(tmp_path, p); return(tmp_path); }}careful_exit(x)int x;{ if (out) fclose(out); i}f (in) fclose(in); exit(x);}#endifturn(tmp_path); }}careful_exit(x)int x;{ if (out) fclose(out); i,X CC65 -V -O UUENCODE.CX RA65 UUENCODE.M65X LINK65 -V -M -B3000 -O UUE.COM @UUE.LNKnt x;{ if (out) fclose(out); i V0LLf5HehL1`ܠؠԠРH8咅h`H8h`֠ҠΠʠƠ±%}HȱhL1``e` 0L0L1L1L1L1L1L1 0ȘL1 0L1 M0Hȑh`HȱhL0%}HȱhL0Hȱh 0` 0` .1HȥhL1 .1L1 0`HȑhL1L1HH 0hhL1HH 0%}hhL1 H*h`L1`L1`HIhIi```IHIh`e` 1L0`%}` 1L1 1L1 1L1 1 1L0 1 1L0 0 &L1L1 0󨥂fjL1 0eHehL1 0%}8H哪hL1 0HhL1 0EHEhL1 0%H%hL1`\_ 0łXTM 0łFBE 00>7ł86/ 0䃐-&ł%}'% 00ł 0䃐 ł`` 00ł 0䃐ł۰ 00łʰ 0䃐ł𹰼 %}L0H hL0lHh` 1L0 1L0hh捠ilŕŔ %}liL3`L1 0 1 Ɣ 1$ \4& $ \4& 򦓥 1`H% }eeh`` 0 1 1 1 1Ńł &&L4FfFf3ō% }Ō8包卅FfFfͥ 1ĕ 1` t4L1 0 0 ` 0% }`S L L L i?H ihL5 0 wFl k3 M0 B1 u0 3 0 B1 4 % }1 1 u0 3 0 B1 4L5 u0 0 B1 0 33( u0 0 B1 3 0 2  u0 0Lq3L5 0Lq3% } k3 1: 0 H  u0Lq3L6=6 0ܢ6 0 -5=6 0 1 %}G=6Lq3Lq3D:a}%} k3 1 24 09 097 0 1 }1 Y2 0 G Y2%} B1GG66 1 2!GG 09 0 A 0 @ 1 }1 Y2 1 3- 2i 1 }1 Y2 3 F 17787%}7787 0 2GG 0֢9 0 A @5767 u0 3 0 B1 4 1 }1 Y2 3 : 1 }1 Y2 3 6 0%}9 0 *A66 0 23GG 09 0 1 }1 Y2 3 A 0 @6 0 6 0: 0 *A66 1!GG 0%}: 0 A 0 @ -:66 0: 0 0 1 }1 Y2 3 A <66 0(: 0 A 0 @Lq3UUE>Usage: u%}uencode [-n] inputfileWrong file length arg.rbCannot open %swCannot reassign stdoutbegin %o %send k3 a066 %}0: 0 A  B1 B1 1` 2cL: u0 3 0 B1 4LZ: 1 2 066 0 @ u0 3 0 B1 4 %}066 0 @Lk: 066 0 @ #0Lq3table k3 M06 0 1 -56 0. 0 5 B1 16 06 0 M5 %}Y2 B1 u0 3 0 B1 4 0. i1 u0 3 0 B1 4 0u i1 u0 3 0 B1 4 03747 0a h2 0 t4 0a Y2 i%}1 u0 3 0 B1 4 03747 0a h2 0 #5 0a Y2 i1 u0 3 0 B1 4 0 i1 0Lq3%}%} k3 i0 B1c< 06 0 -5LL5=3747 066 0 @ 066 0 @ u0 0 B15767 0%} 2 17787 3L>3747 03747c< 0 :66 0> 06 0 A66 0 dG6 0 6 0> 0%} *A66 1!GG 0> 0 A 0 @ -:66 0> 03747 0 A B1 1 2L>L< +0Lq3include%} %swCannot reassign stdoutbegin part %c k3 q0 u0 3 82 B1 u0 3 2 00 2 0 1 Y2 3 82 0%} 2 ~2 B1 1 Y2 3 2 0< 2 0 1 Y2 3 82 0 2 ~2 B1 1 Y2 3? 2 B1 1?% } 2 0 Y2 066 0 @ 1? 2 0 Y2 066 0 @ 1? 2 0 Y2 066 0 @ 1? 2 0%!} Y2 066 0 @ 30Lq3 k3 a0 B1 1 u0 2`Lk@ u0 3 0 B1 4LC@66 0 sA B1 1 2 u0 #0%"}Lq3 1 u0 Y2 0 u0 i1LU@ u0 #0Lq3 k36 6 166 0 dG6 6 166 0 dG 1 5Lq3 0 0HHI%#}DE Bh VLH` ]3 M0 1 u0 3 H B1 1 2 u0GG 0Lq3 u0 0Lq3 0HIDEB V%$}LH`` k3 a0 0 0 }1 Y2 1 }1 Y2 0 }1 h2 B1 u0 3 u0 0 B1 0 } MSD * modified for ALCYON on the ST - 10-24-86 by RDR * modified a little more for MWC... 02/09/87 by JPHD * (An opti-?}onal first argument of the form: -nnumber (e.g. -500), will * produce a serie of files that long, linked by the include stat-@}ement, * such files are automatically uudecoded by the companion program.) * (A lot more to do about I/O speed, avoiding co-A}mpletely the stdio.h...) * */#include #include #ifdef M6502char * rindex(str, chr)char * str;cha-B}r chr;{ int n; n = 0; while (*str++) n++; while (--n >= 0) if (*--str == chr) return(str); return((-C}char * )0);}char tmp_path[80];char * fix_pathname(p)char * p;{ if (strchr(p, ':')) return(p); else { -D} strcpy(tmp_path, "D:"); strcat(tmp_path, p); return(tmp_path); }}#define exit careful_exit#elseextern -E}char * rindex();#define fix_pathname(foo) foo#endif#define USAGE "Usage: uuencode [-n] inputfile\n"/* ENC is the basic -F}1 character encoding function to make a char printing */#define ENC(c) (((c) & 077) + ' ')extern FILE * freopen(), * fope-G}n();FILE * fp;FILE * outfp;char ofname[80];int part = 'a';int split = 0; fileln = 32000;#ifdef M6502char argbuf[80];-H}#endifmain(argc, argv)int argc; char *argv[];{#ifdef M6502 if (argc < 2) argc = 1 + readargs("UUE>", argbuf, argv -I}+ 1);#endif outfp = stdout; if (argc < 2) { fprintf(stderr, USAGE); exit(2); } if (argv[1][0] ==-J} '-') { fileln = -atoi(argv[1]); if (fileln <= 0) { fprintf(stderr, "Wrong file length arg.\n"); exi-K}t();} split = 1; argv++; } makename(argv[1]); if ((fp=fopen(fix_pathname(argv[1]), "rb"))==NULL) /* bin-L}ary input !!! */ { fprintf(stderr,"Cannot open %s\n",argv[1]); exit(1); }/* if(freopen(ofname, "w", std-M}out)!=stdout) */ if (!(outfp = fopen(fix_pathname(ofname), "w"))) { fprintf(stderr,"Cannot reassign stdout\n");-N} exit(1); } maketable();/* printf("begin %o %s\n", 0644, argv[1]); */ fprintf(outfp, "begin %o %s\n", 0644, a-O}rgv[1]); encode();/* printf("end\n"); */ fprintf(outfp, "end\n"); exit(0);}/* create ASCII table so a mailer can s-P}crew it up and the decode * program can restore the error. */maketable(){ register int i, j;/* fputs("table", outfp)-Q}; */ fprintf(outfp, "table\n"); for(i = ' ', j = 0; i < '`' ; j++) { if (j == 32)/*putchar('\n'); */fputc(-R}'\n', outfp); fputc(i++,outfp); }/* putchar('\n'); */ fputc('\n', outfp);}/* I include this in all of my pro-S}grams to take the guess work out of * filenames. */makename(name)char name[];{ register char * ptr; strcpy(ofname, -T}name);#ifdef old /* I think index is neat; just look for a character, and * bomb it. Voila, you have a substring, no m-U}ess. */ if(ptr = rindex(ofname,'.')) { *ptr = '\0'; *--ptr = part; } else/* i.e. make the las-V}t character in the first name = part */ ofname[strlen(ofname)-1] = part; strcat(ofname,".uue");#else if (!(pt-W}r = rindex(ofname, '.'))) ptr = ofname + strlen(ofname); *ptr++ = '.'; *ptr++ = 'u'; *ptr++ = ((part - 'a') / 26) +-X} 'a'; *ptr++ = ((part - 'a') % 26) + 'a'; *ptr++ = '\0';#endif return;}/* * copy from stdin to stdout, encoding as-Y} you go along. */char buf[80];char file[80];encode(){ register int i, n; register int lines; lines = 6; strcpy(-Z}file,ofname); for (;;) { n = fr(buf, 45);/* putchar(ENC(n)); */ fputc(ENC(n), outfp); for (i =-[} 0; i < n; i += 3)outdec(&buf[i]);/* putchar(part); */ fputc(part, outfp);/* putchar('\n'); */ fput-\}c('\n', outfp); ++lines; if ((split != 0) && (lines > fileln)) { ++part; makename(file); fprintf(outfp-]}, "include %s\n",ofname);/* if(freopen(ofname, "w", stdout)!=stdout) */ fclose(outfp); if (!(outfp = fopen(fix_path-^}name(ofname), "w"))) { fprintf(stderr,"Cannot reassign stdout\n"); exit(1); } maketable();/* pr-_}intf("begin part %c\n",part); */ fprintf(outfp, "begin part %c\n",part); lines = 6;} if (n <= 0)break; }-`}}/* * output one group of 3 bytes, pointed at by p, on file f. */outdec(p)register char *p;{ register int c1, c2, c3-a}, c4; c1 = *p >> 2; c2 = (*p << 4) & 060 | (p[1] >> 4) & 017; c3 = (p[1] << 2) & 074 | (p[2] >> 6) & 03; c4 = p[2] &-b} 077;/* putchar(ENC(c1)); */ fputc(ENC(c1), outfp);/* putchar(ENC(c2)); */ fputc(ENC(c2), outfp);/* putchar(ENC(c3)-c}); */ fputc(ENC(c3), outfp);/* putchar(ENC(c4)); */ fputc(ENC(c4), outfp);}/* fr: like read but stdio */int fr(buf,-d} cnt)register char * buf;register int cnt;{ register int c, i; for (i = 0; i < cnt; i++) { c = fgetc(fp); -e} if /* (feof(fp)) */ (c == EOF)return(i); buf[i] = c; } return (cnt);}#ifdef M6502#undef exitcareful_-f}exit(x)int x;{ if (outfp) fclose(outfp); if (fp) fclose(fp); exit(x);}#endifdef M6502#undef exitcareful_,_`B%DOS SYSB*)DUP SYSBSUUD BATB5UUUD C B9UUD COMBUUD LNKB5UUDECODEC BUUDEXTRAC BUUE BATB;UUE COMB;UUE LNKB+<UUENCODEC