<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Tue, 15 Jul 1986 01:09:30 GMT
From   : Ross Alford <alford%ecsvax.uucp@BRL.ARPA>
Subject: uudecode: source and .com for CP/M

This article contains Turbo Pascal source and uuencoded .com versions
of uudecode.com for CP/M.  The encoded version can be decoded by 
UN*X uudecode before downloading.  The source requires Turbo with
built in access to command line arguments (eg 1.0 won't work without
adding your own parser, not too difficult actually).  The files follow,
separated by --------------CUT HERE-----------lines.
 
Ross Alford
   ...mcnc!ecsvax!alford
program uudecode;

  CONST defaultSuffix = '.uue';
        offset = 32;

  TYPE string80 = string[80];

  VAR infile: text;
      outf : file;
      lineNum: integer;
      line: string80;
      outfilename : string80;

{Binary file read added by Ross Alford,  ...!mcnc!ecsvax!alford.  The original
 MSDOS versions of uuencode/decode just use read/write on a FILE OF BYTE.
 CP/M Turbo expects some file info to be stored in the first 4 bytes of files
 of any type other than TEXT.  Putbyte (below) and Getbyte (in UUENCODE)
 bypass this 'feature' by using blockread and blockwrite.  The only global
 variables either use are  'infilename' and 'inf' or 'outfilename' and 'outf'}

procedure putbyte(b : byte; flush : boolean);

type bufptr = ^bufrec;
     bufrec = record
                next : bufptr;
                buffer : array[1..128] of byte
              end;

const sectstobuf = 8;                {max number of sectors to buffer}
      sectswritten : integer = 1;    {constants are essentially statics}
      bytptr : integer = 1;
      notopen : boolean = TRUE;
      infsize : integer = 0;
      listsave : integer  = 0;
      tempsave : integer = 0;

var list,temp,temp2 : bufptr;
    i : integer;

begin
  if flush then
    begin
      list := ptr(listsave);
      temp := list;
      for i := 1 to sectswritten do
        begin
          blockwrite(outf,temp^.buffer,1);
          temp := temp^.next
        end;
      close(outf)
    end
    else begin
      if notopen then
        begin
          notopen := FALSE;
          assign(outf,outfilename);
          {$i-}
          reset(outf);
          {$i+}
          if ioresult = 0 then
            begin
              writeln('File ',outfilename,' exists.  Cannot overwrite.');
              halt
            end;
          {$i-}
          rewrite(outf);
          {$i+}
          if ioresult <> 0 then
            begin
              writeln('Cannot open file ',outfilename,' for output.');
              halt
            end;
          new(list);
          temp := list;
          for i := 1 to sectstobuf - 1 do
            begin
              new(temp2);
              temp2^.next := NIL;
              temp^.next := temp2;
              temp := temp2
            end;
          listsave := ord(list);
          tempsave := listsave;
        end;
      temp := ptr(tempsave);
      if bytptr > 128 then
        begin
          if temp^.next <> NIL then
            begin
              sectswritten := succ(sectswritten);
              temp := temp^.next;
              bytptr := 1
            end
            else begin
              temp := ptr(listsave);
              for i := 1 to sectstobuf do
                begin
                  blockwrite(outf,temp^.buffer,1);
                  temp := temp^.next
                end;
              temp := ptr(listsave);
              sectswritten := 1;
              bytptr := 1
            end
        end;
      temp^.buffer[bytptr] := b;
      bytptr := succ(bytptr);
      tempsave := ord(temp)
    end
end;

  procedure Abort(message: string80);

    begin {abort}
      writeln;
      if lineNum > 0 then write('Line ', lineNum, ': ');
      writeln(message);
      halt
    end; {Abort}

  procedure NextLine(var s: string80);

    begin {NextLine}
      LineNum := succ(LineNum);
      write('.');
      readln(infile, s)
    end; {NextLine}

  procedure Init;

    procedure GetInFile;

      VAR infilename: string80;

      begin {GetInFile}
        if ParamCount = 0 then abort ('Usage: uudecode <filename>');
        infilename := ParamStr(1);
        if pos('.', infilename) = 0
          then infilename := concat(infilename, defaultSuffix);
        assign(infile, infilename);
        {$i-}
        reset(infile);
        {$i+}
        if IOresult > 0 then abort (concat('Can''t open ', infilename));
        writeln ('Decoding ', infilename)
      end; {GetInFile}

    procedure GetOutFile;

      var header, mode : string80;
          ch: char;

      procedure ParseHeader;

        VAR index: integer;

        Procedure NextWord(var word:string80; var index: integer);

          begin {nextword}
            word := '';
            while header[index] = ' ' do
              begin
                index := succ(index);
                if index > length(header) then abort ('Incomplete header')
              end;
            while header[index] <> ' ' do
              begin
                word := concat(word, header[index]);
                index := succ(index)
              end
          end; {NextWord}

        begin {ParseHeader}
          header := concat(header, ' ');
          index := 7;
          NextWord(mode, index);
          NextWord(outfilename, index)
        end; {ParseHeader}

      begin {GetOutFile}
        if eof(infile) then abort('Nothing to decode.');
        NextLine (header);
        while not ((copy(header, 1, 6) = 'begin ') or eof(infile)) do
          NextLine(header);
        writeln;
        if eof(infile) then abort('Nothing to decode.');
        ParseHeader;
      end; {GetOutFile}

    begin {init}
      lineNum := 0;
      GetInFile;
      GetOutFile;
    end; { init}

  Function CheckLine: boolean;

    begin {CheckLine}
      if line = '' then abort ('Blank line in file');
      CheckLine := not (line[1] in [' ', '`'])
    end; {CheckLine}


  procedure DecodeLine;

    VAR lineIndex, byteNum, count, i: integer;
        chars: array [0..3] of byte;
        hunk: array [0..2] of byte;

{    procedure debug;

      var i: integer;

      procedure writebin(x: byte);

        var i: integer;

        begin
          for i := 1 to 8 do
            begin
              write ((x and $80) shr 7);
              x := x shl 1
            end;
          write (' ')
        end;

      begin
        writeln;
        for i := 0 to 3 do writebin(chars[i]);
        writeln;
        for i := 0 to 2 do writebin(hunk[i]);
        writeln
      end;      }

    function nextch: char;

      begin {nextch}
      {}  lineIndex := succ(lineIndex);
        if lineIndex > length(line) then abort('Line too short.');
        if not (line[lineindex] in [' '..'`'])
          then abort('Illegal character in line.');
{        write(line[lineindex]:2);}
        if line[lineindex] = '`' then nextch := ' '
                                  else nextch := line[lineIndex]
      end; {nextch}

    procedure DecodeByte;

      procedure GetNextHunk;

        VAR i: integer;

        begin {GetNextHunk}
          for i := 0 to 3 do chars[i] := ord(nextch) - offset;
          hunk[0] := (chars[0] shl 2) + (chars[1] shr 4);
          hunk[1] := (chars[1] shl 4) + (chars[2] shr 2);
          hunk[2] := (chars[2] shl 6) + chars[3];
          byteNum := 0  {;
          debug          }
        end; {GetNextHunk}

      begin {DecodeByte}
        if byteNum = 3 then GetNextHunk;
        putbyte(hunk[byteNum],FALSE);
        {writeln(bytenum, ' ', hunk[byteNum]);}
        byteNum := succ(byteNum)
      end; {DecodeByte}

    begin {DecodeLine}
      lineIndex := 0;
      byteNum := 3;
      count := (ord(nextch) - offset);
      for i := 1 to count do DecodeByte
    end; {DecodeLine}

  procedure terminate;

    var trailer: string80;

    begin {terminate}
      if eof(infile) then abort ('Abnormal end.');
      NextLine (trailer);
      if length (trailer) < 3 then abort ('Abnormal end.');
      if copy (trailer, 1, 3) <> 'end' then abort ('Abnormal end.');
      close (infile);
      putbyte(26,TRUE)
    end;

  begin {uudecode}
    init;
    NextLine(line);
    while CheckLine do
      begin
        DecodeLine;
        NextLine(line)
      end;
    terminate
  end.
begin 600 UUDECODE.COM
MP^(@S:M#;W!Y<FEG:'0@*$,I(#$Y.#4@0D]23$%.1"!);F, ! "A0@      
M                                                   *3D5#(#@T
M,#%,4R!H:6QI=&5E9610$  )&UL_,FP;9QLJ         !M6            
M      0;/0                 !(" $ P   ALJ    !!L]("   AM%10T 
M AM2?P     "&U0    "&R@Q   "&RDQ     'ZW-\@C]>5^S>@!X?$]R!CS
MS0 "#0H R6_ES:8 R?Z W&L"U(0"YG\8[N4A[@$8!.4AZ $B$P+AX_7%U7XC
MMR@'Y<WH >$8]-'!\>/)?;3(.B0!AX>'X^/CX\4!T@3!/2#T*QCHS= !V"K.
M 1C?]<75Y2&H <TU B&B <W0 2JZ =0= N'1P?')]<75Y2&T 1CI]<75Y2&N
M 1C@]3K@ +<H$,75Y:\RX  AR '--0+AT<'QR?4ZX #^_RCVQ=7E/O\RX  A
MP@$8X_7%U>4AO $8VO7%U>7E$?  (8L! 1  [;#1.IX!3SJ< 8+5S=P"T3J?
M 4\ZG0&#S=P"(?  S= !*J !S1T"X='!\<DA\  &  GK(9L!-#4H A+)&QLA
M"@,& RL.+PR6,/R&]7G^,"@!$A/Q$.W) 0ID(6L!PS4"(7L!PS4"$0, S5\#
MY@$8!A$& ,U? V\F ,D1$@ 8]!$, !@($0\ & ,1"0#AP>4ZW0"W*!K5Q<V@
M 'RU* _-X0/^$R (S>$#_@/*U"#!T2H! !GI(M( >#+= 'FW* L^PS(X "'[
M'R(Y "&E Q&@  $8 .VP(;T#$;@  0P [;"O;V<RT  BU  BU@ ^?C+1 #+@
M ,G#%@/#( /#.0/#+P/#- /#*@/#.0/#( /! (( 0P#$ ,4 P0#%U>7=Y?WE
M]6\F .7-I@#Q_>'=X>'1P<G%U>7=Y?WES:, ?1CK#O\8# X [5O2 !,:_B H
M^B%E  8#S7L$&LVF!/Y!.!+^43 .1Q,:_CH@!GC60!,8 ANO(5P =R,,#2@9
M&LV"!" 3_C\H#_XJ* O^+B@'!@O-=P08$ 8(S5X$&OXN( 83!@/-7@0A:  &
M&#8 (Q#[R1H,#2@(_C\H"?XJ* O-@@0H"W<C$Q#IR1,^/Q@"/B!W(Q#\R<VF
M!/X@. WEQ2&8! $. .VQP>')O\D@+BP[.CT_*EM=/#Y[??YAV/Y[T-8@R7S-
MM 1]]1\?'Q_-O03QY@_&D"?.0"?#R0.O-\M\P'RW?<@^_\DRV #%S:\>P2H&
M +?M0MJH(.O1^0$ _ DBQ@"O;V<BS@ RW  ^PS+9 "'>("+: .LBS #IY2K&
M +?M0B+& .U;Q "W[5(9Z^':=1WML,DJQ@#ML"+& -G)7B-6(]5>(U8C3B-&
MX<G=X>L:3P8 +V\F_SGYZP/ML-WIT1I/!@ O;R;_.?GK ^VPZ=WAZR'@_SGY
MZ\4$!2@%KQ(3$/SML,$^()"1* 9'KQ(3$/S=Z=WA(>#_.?D&(*]W(Q#\W>G
MX47-N@6V=]WIW>'1?9,X]SQ/0\VZ!5]!K[/+(S &MG<CKQX!$/,8W7CF^ \/
M#\8";R8 .7CF!SQ'KS<7$/W)Y=GKXW,C<B/1<R-R(W$C<,G=X7CK(0  1#E.
MY0DCX[DX 7D2$R.W* -/[;#A^=WIW>%X(0  1#E.Y0DC7B-6&-S=X>MH)@!$
M.>VP(2  .?G=Z=WA(2  .5XC5F@F $0Y[; A(@ 8Y]WAZW@O;R;_.?EP(T@&
M .OML-WIM^U2&=@^D,,G(+?M4K?M0C #"1G)/I'#)R"W[5+K$^IQ!O 8 ?@1
M  #)U>NW[5+KX1CKM^U2(0$ R"O)S=\+&/7-L D8\+?M4B$! , KR<W?"QCU
MS; )&/#-<@<A 0#0*\G-WPL8]<VP"1CPS7('(0$ R-@KR<W?"QCTS; )&._-
M<@<A  #(V"/)S=\+&/3-L D8[\UR!R$! -@KR<W?"QCUS; )&/!474M"ZR$ 
M 'JW/A @ U,^""GK*>LP 0D](/;)?+7* PI\JO7-@ ?KS8 'ZT1-KV=O/A'M
M:NU", ()-S_+$\L2/2#PZ_'P&$CES9('RSS+'='KS0\'Z\MZR!@US6$'R"D0
M_<G-80?(RSS+'1#ZR>MZMR (>_X0, -'M\FO9V_)ZWRJ?/I^![K ?;O)%\G+
M?,A\+V=]+V\CR7WF 6\F ,GM2\H [5O( ,75>$%*4QX '\L8RQG+&LL;X1GK
MX>U*1$TAZ6(9(L@ ZR$9-NU*(LH 1$W)!@ 1$"?-X@<1Z /-X@<19 #-X@<>
M"LWB!WT8#:\\[5(P^QD$/2 "!<C&,-UW -TCR=U^ -8D3R$  " "W2/=?@#-
MI@36,#@I_@HX#@P-("'6!_X*.!O^$# 75%TIV"G8# T@ E1=&=@IV%\6 !G8
M&,MYM\A\A\G=X>'E?28 (SE.@3@<=^LA  !$[4(Y^>OE ^VPZ^$K&T\#[;CK
M(_G=Z3X0PRD@W>'-R 17X<W="5_AY7V3.!H4%2@6NC@62@8 8#E[@E1=/6]@
M.7GMN.L8":\8 SQK+28 .7?YW>G=X>'E?28 (SGY;R8 W>G=X2$  %0Y7DLC
MY1E>0R/E&>7]X='A>9 X$#Q/Q=7E&KXH#.'1P2,-(/(A   8#B,3$.S1X<$A
M   YZ^U2_?G=Z=WAS<@$3^'-W0E?X7Z3.!L,#2@7D3@2]7Z1=P8 4!E470GQ
M/$_ML!@"'7/=Z=WAS=T)3]'M4^@ (0  .1KUAC@#N#@!>!+Q5UZ1."\\;WJ#
M. 2X?3@(>),X)I$X(SRW*!_%U2KH %\=%@!"&0G1U>50&>OA3^VXT<$8!7H\
M*!E/>)$\NS@!>[<H#BKH  8 ">LA 0 Y3^VP(0  5#E>$QGYW>G=X>$MPF8(
M;"8 W>DA @!4.5X3&7XV 2-WR2$$ %0Y7DLCY1E>0R/E&>7]X='AK[@H!+D@
M"'BYX=']^=7I&KX@]B,3!0T8YWRW( -]M\ ^$<,I(,T-"M ^ <,G(,V!"ACU
MS:P/S9<*&.W9?;?9/@+*)R#-]0H8W]G+>-G"B K9?;?9R-G%U>79?;<@!=G+
MN!A4Q<OXKPC9R_A]V94H$S &[40(/0C9S7H++#T@^0@H =GQYH @#\V2"S E
MS7L+MRP@'C<8(,W&"S_U*! X =G-K O+>" )S88++2#VS7(+\3@"R[BWV>'1
MP=G)V<MXV<(4"LV/"LT4"M@L+<AX[H!'R=E]M]G*<@M]M\C9A=G-30O%U>7
M.<UR"]DN!=D^"-TCW6X ",L=, /-D@O->PL(/2#QV2W9(.7=;OO+>" )",V'
M"RPM* $M\?'QMPCQV<'AV=WAR[BP1RPMS'(+",E]M\C9E=D_S4T+Y>7EW3G9
M+@79/@@(S<8+. /-K L_RQ4(/2 ,W74%W2O9+=DH#CX(S88+,-\(S:P+MQCA
MS88+. 3-Q@L_X='!RW@@!<V'"QB:+""7-QB5. ;&@#@&&!O&@#@7;]WCV>7%
M>,OXV:CF@/7+^-WEW2$  ,GAV*]O1T]77V?)M\L8RQG+&LL;RQS)M\L4RQ/+
M$LL1RQ#)?-F$V6=[V8O97WK9BME7>=F)V4]XV8C91\E\V9399WO9F]E?>MF:
MV5=YV9G93WC9F-E'R7C9N-G >=FYV<!ZV;K9P'O9N]G ?-F\V<G9>-FH\ND+
M>!?)RW@H!LWS"\@_R7W9O=G M\C#Q@M]UH':<@L\_BC0V<75Y0C-<@L(-\U[
M"ST@^=E\V:399WO9H]E?>MFBV5=YV:'93WC9H-E'PWL*V<75Y=G-K _9S?T+
MV<V!"ACK?;?(RW@^ \(G(,VL#WW&@,LOQH!OUA3UV<75Y<WU"LT-"BW%U>7-
M@0I]X='!V>'1P>.\XS#C\=G)V<V.#RW-@0K9S8X/+-E]_FS8Q<NXS=\+P3@)
MS?4*S30,S9<*RW@H \T-"MDMV<W?"_4X \V!"MDMV<W?"S@%V2S-@0I]_FPX
M.]D!JBH1JJHA?ZK-EPK=Y=TA!PT^!<TT#]WAS:P/S9<*S9<*Q=7EV<VL#RTM
MV2W-#0K9X='!V<V!"BPL\2PMR-AX[H!'R6>J/RLRUVZV*AWO.'0-T  -T'J(
MB(B("'ZKJJJJJBPM/@3*)R#+>,(G(-G-F _9?2Z!E?7-]0K9S88/V<V!"L75
MY=DLS0T*V>'1P<WU"MWEW2&,#3X&S30/W>$LV<VB#RW9S0T*\<75Y6\F # !
M)<T($-DLS9<*V>'1P<T-"GW^9]IR"\E]BIW8B1U]Z:*++CI]CN,XCF-^29(D
M21)^S<S,S$Q_JZJJJBK9S:(/V;?+>/7+N,WU"GW^B#!'Q=7E+,W0#^7+/,L
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
M =7=X=WEX=U. MU& ]U> -U6 1@;*MX [5/> -7=X=UU -UT >U+\ #=<0+
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
+>2;+1<IT=<W1)B%C
 
end
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>