[comp.binaries.ibm.pc.d] Easy bootstrap for fast MSDOS uudecode

w8sdz@WSMR-SIMTEL20.ARMY.MIL (Keith Petersen) (03/04/91)

This is from the SIMTEL20 archives.  I certify that this GWBASIC/BASICA
program creates an accurate copy of David Kirschbaum's uudecode
program which is available in source code form from SIMTEL20.  The
executable that this BASIC program creates is extremely fast, having
been written in assembly language.  This is version 2.0, last revised
3-March-91.  It corrects a bug which caused improper decoding of files
with four-digit attributes after the "begin" keyword.

Keith
--
Keith Petersen
Maintainer of SIMTEL20's MSDOS, MISC & CP/M archives [IP address 26.2.0.74]
Internet: w8sdz@WSMR-SIMTEL20.Army.Mil    or     w8sdz@vela.acs.oakland.edu
Uucp: uunet!wsmr-simtel20.army.mil!w8sdz              BITNET: w8sdz@OAKLAND

---cut-here---uudecode.bas---
100 REM - BASIC PROGRAM TO CREATE UUDECODE.COM v2.0 (a fast uudecoder)
110 CLS:PRINT "Creating UUDECODE.COM.  See UUDECODE.DOC for instructions."
115 OPEN "UUDECODE.COM" AS #1 LEN = 1
120 FIELD #1, 1 AS A$: CHECKSUM#=0
130 FOR I = 1 TO    47
140  LINESUM#=0: LOCATE 2,3: PRINT "Countdown: "    47 - I ;
150  FOR J = 1 TO  16: READ BYTE$: CHECKSUM#=CHECKSUM#+VAL("&H"+BYTE$)
160   LINESUM#=LINESUM#+VAL("&H"+BYTE$)
170   IF (BYTE < 256) THEN LSET A$=CHR$(VAL("&H"+BYTE$)): PUT #1
180  NEXT J
190  READ LINETOT$: LINECHECK# = VAL("&H"+LINETOT$)
200  IF LINECHECK# = LINESUM# THEN GOTO 220
210  LOCATE 4,2: PRINT "Error in line #"  ;  260 +  10 * I: GOTO 260
220 NEXT I
230 CLOSE: READ FILETOT$ : FILECHECK# = VAL(FILETOT$)
240 IF CHECKSUM# <> FILECHECK# THEN GOTO 260
250 PRINT: PRINT "UUDECODE.COM created successfully": SYSTEM
260 PRINT: PRINT "UUDECODE.COM is not valid!": END
270 DATA EB,54,90,49,6E,70,75,74,20,66,69,6C,65,20,65,72,  696
280 DATA 72,6F,72,2E, D, A,4F,75,74,70,75,74,20,66,69,6C,  584
290 DATA 65,20,65,72,72,6F,72,2E, D, A,73,74,61,72,74,20,  542
300 DATA 6E,6F,74,20,66,6F,75,6E,64,2E, D, A,45,6E,64,20,  509
310 DATA 6E,6F,74,20,66,6F,75,6E,64,2E, D, A, 0, 0, 0, 0,  3D2
320 DATA 64, 3,64, 3,14, 3,E8,BE, 1,E8,2F, 1,BF,14, 3,E8,  562
330 DATA AC, 0,AD,3D,62,65,75,F4,AD,3D,67,69,75,EE,AD,3D,  7CD
340 DATA 6E,20,75,E8,BF,14, 3,B4,20,AC,3A,C4,76,FB,AC,3A,  796
350 DATA C4,75,FB,AC,3A,C4,76,FB,3A,C4,74, 4,AA,AC,EB,F8,  9FE
360 DATA BA,14, 3,33,C9,88, D,B4,3C,CD,21,73, 3,E9,E3, 0,  682
370 DATA A3,4E, 1,BF,14, 3,E8,65, 0,AC, A,C0,74,48,BB,20,  622
380 DATA 20,2A,C3, A,C0,74,3F,32,E4,8B,E8,B9, 4, 6,AC,8A,  70C
390 DATA E0,AC,8A,D0,2B,C3,D0,E4,D0,E4,D2,E8, A,C4,AA,4D,  ABB
400 DATA 74,D4,8A,E2,AC,8A,D0,2B,C3,D2,E4,D0,E8,D0,E8, A,  AD8
410 DATA C4,AA,4D,74,C1,8A,E2,AC,2B,C3,8A,CD,D2,E4, A,C4,  9D1
420 DATA AA,4D,75,C7,EB,B0,E8,15, 0,AD,3D,65,6E,75, 5,AC,  7AE
430 DATA 3C,64,74, 3,E8,AE, 0,E8,61, 0,B4,4C,CD,21,8B,36,  6A5
440 DATA 50, 1,89,3E,54, 1,BD,50, 0,BF,C4, 2,33,C0,AB,B9,  656
450 DATA 27, 0,B8,20,20,F3,AB,BF,C4, 2,3B,36,52, 1,72, 6,  57E
460 DATA E8,38, 0,E8,55, 0,AC,3C,60,75, 4,B0,20,EB, 8,3C,  61D
470 DATA  D,74,1B,3C, A,74,18,AA,4D,75,DF,3B,36,52, 1,72,  4EF
480 DATA  3,E8,37, 0,AC,3C, A,75,F2,BF,14, 3,EB,B4,46,89,  6BF
490 DATA 36,50, 1,8B,3E,54, 1,BE,C4, 2,C3,BA,14, 3,8B,CA,  612
500 DATA 87, E,54, 1,2B,CA,76, A,8B,1E,4E, 1,B4,40,CD,21,  539
510 DATA 72, 1,C3,BA,16, 1,B9,14, 0,EB,22,BA,64, 3,B9,9C,  657
520 DATA FA,8B,1E,4C, 1,B4,3F,CD,21,72, C, B,C0,74, 8,8B,  621
530 DATA F2, 3,C6,A3,52, 1,C3,BA, 3, 1,B9,13, 0,50,E8, A,  640
540 DATA  0,58,E9,55,FF,BA,3C, 1,B9,10, 0,BB, 2, 0,B4,40,  606
550 DATA CD,21,C3,90,54,68,69,73,20,50,72,6F,67,72,61,6D,  6D1
560 DATA 20,52,65,71,75,69,72,65,73,20,44,4F,53,20,56,65,  551
570 DATA 72,73,69,6F,6E,20,32,2E,30,20,6F,72,20,68,69,67,  534
580 DATA 68,65,72,2E, D, A,24, D, A,49,6E,70,75,74,20,70,  45F
590 DATA 61,74,68,2F,66,69,6C,65,3A,20,20,4E,6F,20,61,63,  527
600 DATA 74,69,6F,6E, D, A,24,B4,30,CD,21,3C, 2,73, C,BA,  53E
610 DATA C4, 2,B4, 9,CD,21,B8, 1,4C,CD,21,E8,36, 0,73,23,  618
620 DATA BA,F7, 2,B9,14, 0,BB, 2, 0,B4,40,CD,21,BF,7F, 0,  65D
630 DATA C6, 5,50,8B,D7,B4, A,CD,21,E8,18, 0,73, 5,BA, B,  666
640 DATA  3,EB,CF,BA,86, 3,B8, 0,3D,CD,21,72, 4,A3,4C, 1,  649
650 DATA C3,E9,43,FF,BE,80, 0,BF,86, 3,FC,AC, A,C0,74, F,  869
660 DATA B4,20,AC,3A,C4,76,FB,3A,C4,76, 6,AA,AC,EB,F8,F9,  99B
670 DATA C3,C6, 5, 0,F8,C3,55,55,44,45,43,4F,44,45,20,76,  62D
680 DATA 32,2E,30, 0,4F,72,69,67,69,6E,61,6C,6C,79,20,62,  52C
690 DATA 79,20,54,68,65,6F,64,6F,72,65,20,41,2E,20,4B,61,  52E
700 DATA 6C,64,69,73, 0,54,68,6F,72,6F,75,67,68,6C,79,20,  601
710 DATA 72,65,68,61,63,6B,65,64,20,62,79,20,44,61,76,69,  5D6
720 DATA 64,20,50,20,4B,69,72,73,63,68,62,61,75,6D,2C,20,  549
730 DATA 54,6F,61,64,20,48,61,6C,6C, 0, 0, 0, 0, 0, 0, 0,  329
740 DATA 76827
---cut-here---

---cut-here---uudecode.doc---

			UUDECODE.DOC
        by David Kirschbaum <kirsch@usasoc.soc.mil>

UUDECODE uudecodes uuencoded files to original binary form.  It is
compatible with the Unix (and other) uuencode/uudecode utilities.

Usage:

          UUDECODE<RETURN>
    Displays usage message, prompts for input file name.

          UUDECODE [d:][\path\]filename.uue
    Produces a uudecoded file, with the filename taken from
    within the uuencoded file (which might include a path).


Notes:

WARNING: UUDECODE does NOT check for existing files, and will gleefully
write over them!  Check first!

UUDECODE will accept an input path\filename up to 80 chars long, and will
prompt if none is specified.

A uudecoded filename is taken from the uuencoded source file and is
written to the current directory (or to the path included in the file
header).

Input files may be any length.

Uuencoded file headers (mailing headers, etc.) need not be removed.
However, any spurious lines between the "begin" and "end" lines MUST
be removed.

Anything beyond the "end" line is ignored.  If no "end" is found, the
output file is saved, but an error message is displayed.

Certain uuencoders append a "checksum" character to the end of each
uuencoded line.  UUDECODE ignores these.

Uuencoded files generated or moved through a Unix system may have LF
(ASCII 10) line endings instead of the DOS-convention CR/LF (ASCII
13/10) endings.  UUDECODE will handle those LF ends of line as well.
you MAY get a "end not found" message, but the uudecoded file will be
intact.

Certain systems and mailers will strip off trailing spaces on lines.
UUDECODE attempts to replace them.

---cut-here---

mlord@bwdls58.bnr.ca (Mark Lord) (03/05/91)

In article <W8SDZ.12666507614.BABYL@WSMR-SIMTEL20.ARMY.MIL> w8sdz@WSMR-SIMTEL20.ARMY.MIL (Keith Petersen) writes:
<This is from the SIMTEL20 archives.  I certify that this GWBASIC/BASICA
<program creates an accurate copy of David Kirschbaum's uudecode
...
<---cut-here---uudecode.bas---

Better be careful, or Timo will complain about you posting
binaries to the .d group, even though it is a short and useful
utility like Tony Almy's  NOSHARE.COM.   :)
-- 
 ___Mark S. Lord__________________________________________
| ..uunet!bnrgate!mlord%bmerh724 | Climb Free Or Die (NH) |
| MLORD@BNR.CA   Ottawa, Ontario | Personal views only.   |
|________________________________|________________________|

ts@uwasa.fi (Timo Salmi) (03/06/91)

In article <5816@bwdls58.bnr.ca> mlord@bwdls58.bnr.ca (Mark Lord) writes:
>In article <W8SDZ.12666507614.BABYL@WSMR-SIMTEL20.ARMY.MIL> w8sdz@WSMR-SIMTEL20.ARMY.MIL (Keith Petersen) writes:
><This is from the SIMTEL20 archives.  I certify that this GWBASIC/BASICA
><program creates an accurate copy of David Kirschbaum's uudecode
>...
><---cut-here---uudecode.bas---
>
>Better be careful, or Timo will complain about you posting
>binaries to the .d group, even though it is a short and useful
>utility like Tony Almy's  NOSHARE.COM.   :)

   Never fear.  I see the the Smiley and the joke in your message,
but I also see the stab it covers :-). 

   Just in case someone misinterprets what is going on in here, let
me point that there _is_ a difference. 
   First, the uudecoce.bas Keith sends out periodically is needed in
handling Bill's binary postings (which is what this group is formost
about) and uudecoded mail (eg from servers), unless the user already
has a suitable facility.  
   Second, I wouldn't use the word complain, because what I wanted
to do is to state my opinion why we should not take up the habit of
sending binaries in nonmoderated groups.  I was not flaming Tom
(Tom, not Tony, right?) for a short, well-meaning posting per se. 
That was not my intention.  I was rather pointing out that we must
consider the problems ahead if this practice comes more common (and
listing the potential problems). 

I'm trying to do this for our mutual benefit, but when one frequenly
takes stands, I also understand that one has to be prepared to take
some open,... and disguised flak.  I'm prepared to accept this
inevitability, but sometimes it hurts just a little bit.

...................................................................
Prof. Timo Salmi        
Moderating at garbo.uwasa.fi anonymous ftp archives 128.214.12.37
School of Business Studies, University of Vaasa, SF-65101, Finland
Internet: ts@chyde.uwasa.fi Funet: gado::salmi Bitnet: salmi@finfun

w8sdz@WSMR-SIMTEL20.ARMY.MIL (Keith Petersen) (04/16/91)

This is from the SIMTEL20 archives.  I certify that this GWBASIC/BASICA
program creates an accurate copy of David Kirschbaum's uudecode
program which is available with source code in TOADUU20.ZIP from
SIMTEL20's pd1:<msdos.filutl> directory.

The executable that this BASIC program creates is extremely fast,
having been written in assembly language.  This is version 2.0, last
revised 12-March-91.  It corrects a bug which caused improper decoding
of files with four-digit attributes after the "begin" keyword.

Keith
--
Keith Petersen
Maintainer of SIMTEL20's MSDOS, MISC & CP/M archives [IP address 26.2.0.74]
Internet: w8sdz@WSMR-SIMTEL20.Army.Mil    or     w8sdz@vela.acs.oakland.edu
Uucp: uunet!wsmr-simtel20.army.mil!w8sdz              BITNET: w8sdz@OAKLAND

---cut-here---uudecode.bas---
100 REM - BASIC PROGRAM TO CREATE UUDECODE.COM v2.0 (a fast uudecoder)
105 REM UUDECODE.BAS created by w8sdz@WSMR-SIMTEL20.ARMY.MIL (Keith Petersen)
110 CLS:PRINT "Creating UUDECODE.COM.  See UUDECODE.DOC for instructions."
115 OPEN "UUDECODE.COM" AS #1 LEN = 1
120 FIELD #1, 1 AS A$: CHECKSUM#=0
130 FOR I = 1 TO    73
140  LINESUM#=0: LOCATE 2,3: PRINT "Countdown: "    73 - I ;
150  FOR J = 1 TO  16: READ BYTE$: CHECKSUM#=CHECKSUM#+VAL("&H"+BYTE$)
160   LINESUM#=LINESUM#+VAL("&H"+BYTE$)
170   IF (BYTE < 256) THEN LSET A$=CHR$(VAL("&H"+BYTE$)): PUT #1
180  NEXT J
190  READ LINETOT$: LINECHECK# = VAL("&H"+LINETOT$)
200  IF LINECHECK# = LINESUM# THEN GOTO 220
210  LOCATE 4,2: PRINT "Error in line #"  ;  260 +  10 * I: GOTO 260
220 NEXT I
230 CLOSE: READ FILETOT$ : FILECHECK# = VAL(FILETOT$)
240 IF CHECKSUM# <> FILECHECK# THEN GOTO 260
250 PRINT: PRINT "UUDECODE.COM created successfully": SYSTEM
260 PRINT: PRINT "UUDECODE.COM is not valid!": END
270 DATA EB,5F,90,49,6E,70,75,74,20,66,69,6C,65,20,65,72,  6A1
280 DATA 72,6F,72,2E,4F,75,74,70,75,74,20,66,69,6C,65,20,  5F2
290 DATA 65,72,72,6F,72,2E,73,74,61,72,74,20,6E,6F,74,20,  617
300 DATA 66,6F,75,6E,64,2E,45,6E,64,20,6E,6F,74,20,66,6F,  5C7
310 DATA 75,6E,64,2E,20,65,78,69,73,74,73,2E,20,41,62,6F,  595
320 DATA 72,74,69,6E,67,21, 0, 0, 0, 0,AC, 3,AC, 3,5C, 3,  402
330 DATA  0,E8,FA, 1,E8,54, 1,BF,5C, 3,E8,D1, 0,AD,3D,62,  743
340 DATA 65,75,F4,AD,3D,67,69,75,EE,AD,3D,6E,20,75,E8,BF,  87F
350 DATA 5C, 3,B4,20,AC,3A,C4,76,FB,AC,3A,C4,75,FB,AC,3A,  84E
360 DATA C4,76,FB,3A,C4,74, 4,AA,AC,EB,F8,BA,5C, 3,33,C9,  8F9
370 DATA 88, D,80,3E,60, 1,FF,74,1E,B4,4E,CD,21,3C, 2,74,  5E7
380 DATA 16,3C,12,74,12,8B,CF,2B,CA,E8,2F, 1,BA,44, 1,B9,  609
390 DATA 12, 0,B0, 5,E9,16, 1,B4,3C,CD,21,73, 3,E9,E3, 0,  5E7
400 DATA A3,58, 1,BF,5C, 3,E8,65, 0,AC, A,C0,74,48,BB,20,  674
410 DATA 20,2A,C3, A,C0,74,3F,32,E4,8B,E8,B9, 4, 6,AC,8A,  70C
420 DATA E0,AC,8A,D0,2B,C3,D0,E4,D0,E4,D2,E8, A,C4,AA,4D,  ABB
430 DATA 74,D4,8A,E2,AC,8A,D0,2B,C3,D2,E4,D0,E8,D0,E8, A,  AD8
440 DATA C4,AA,4D,74,C1,8A,E2,AC,2B,C3,8A,CD,D2,E4, A,C4,  9D1
450 DATA AA,4D,75,C7,EB,B0,E8,15, 0,AD,3D,65,6E,75, 5,AC,  7AE
460 DATA 3C,64,74, 3,E8,AE, 0,E8,61, 0,B4,4C,CD,21,8B,36,  6A5
470 DATA 5A, 1,89,3E,5E, 1,BD,50, 0,BF, C, 3,33,C0,AB,B9,  5B3
480 DATA 27, 0,B8,20,20,F3,AB,BF, C, 3,3B,36,5C, 1,72, 6,  4D1
490 DATA E8,38, 0,E8,55, 0,AC,3C,60,75, 4,B0,20,EB, 8,3C,  61D
500 DATA  D,74,1B,3C, A,74,18,AA,4D,75,DF,3B,36,5C, 1,72,  4F9
510 DATA  3,E8,37, 0,AC,3C, A,75,F2,BF,5C, 3,EB,B4,46,89,  707
520 DATA 36,5A, 1,8B,3E,5E, 1,BE, C, 3,C3,BA,5C, 3,8B,CA,  5B7
530 DATA 87, E,5E, 1,2B,CA,76, A,8B,1E,58, 1,B4,40,CD,21,  54D
540 DATA 72, 1,C3,BA,14, 1,B9,12, 0,EB,22,BA,AC, 3,B9,54,  653
550 DATA FA,8B,1E,56, 1,B4,3F,CD,21,72, C, B,C0,74, 8,8B,  62B
560 DATA F2, 3,C6,A3,5C, 1,C3,BA, 3, 1,B9,11, 0,50,E8, A,  648
570 DATA  0,58,E9,55,FF,BA,36, 1,B9, E, 0,52,51,BA,3E, 3,  5EB
580 DATA B9, 2, 0,90,E8, C, 0,59,5A,E8, 7, 0,BA,3E, 3,B9,  595
590 DATA  2, 0,90,BB, 2, 0,B4,40,CD,21,C3,90, D, A,54,68,  557
600 DATA 69,73,20,50,72,6F,67,72,61,6D,20,52,65,71,75,69,  5FA
610 DATA 72,65,73,20,44,4F,53,20,56,65,72,73,69,6F,6E,20,  576
620 DATA 32,2E,30,20,6F,72,20,68,69,67,68,65,72,2E, D, A,  46D
630 DATA 24, D, A,49,6E,70,75,74,20,70,61,74,68,2F,66,69,  516
640 DATA 6C,65,3A,20,20,4E,6F,20,61,63,74,69,6F,6E,B4,30,  58A
650 DATA CD,21,3C, 2,73, C,BA, C, 3,B4, 9,CD,21,B8, 1,4C,  524
660 DATA CD,21,E8,46, 0,73,33,BA,68, 4,B9,1B, 1,90,E8,6A,  69F
670 DATA FF,BA,41, 3,B9,14, 0,BB, 2, 0,B4,40,CD,21,BF,7F,  6A7
680 DATA  0,C6, 5,50,8B,D7,B4, A,CD,21,E8,1E, 0,73, B,BA,  667
690 DATA 55, 3,B9, 9, 0,B0, 1,E9,33,FF,BA, 4, 4,B8, 0,3D,  59D
700 DATA CD,21,72, 4,A3,56, 1,C3,E9,1C,FF,BE,80, 0,BF, 4,  726
710 DATA  4,FC,AC, A,C0,74,2F,B4,20,AC,3A,C4,76,FB,3A,C4,  806
720 DATA 76,26,3C,2F,74, 4,3C,2D,75,18,8B,D0,8B, 4,3C,3F,  4DA
730 DATA 74,1B,24,5F,3D,4F,20,8B,C2,75, 7,F6,16,60, 1,46,  53A
740 DATA 46,AC,AA,AC,EB,D8,F9,C3,C6, 5, 0,F8,C3,BA,68, 4,  973
750 DATA E9,66,FF,90,55,55,44,45,43,4F,44,45,20,76,32,2E,  622
760 DATA 30, 0,4F,72,69,67,69,6E,61,6C,6C,79,20,62,79,20,  565
770 DATA 54,68,65,6F,64,6F,72,65,20,41,2E,20,4B,61,6C,64,  565
780 DATA 69,73, 0,54,68,6F,72,6F,75,67,68,6C,79,20,72,65,  608
790 DATA 68,61,63,6B,65,64,20,62,79,20,44,61,76,69,64,20,  583
800 DATA 50,20,4B,69,72,73,63,68,62,61,75,6D,2C,20,54,6F,  588
810 DATA 61,64,20,48,61,6C,6C, 0,55,55,44,45,43,4F,44,45,  4B4
820 DATA 20,5B,2D,3F,5D,5B,2D,6F,5D,20,5B,64,3A,5D,5B,5C,  4C5
830 DATA 70,61,74,68,5C,5D,62,69,6E,61,72,79,2E,55,55,45,  608
840 DATA 20,3C,52,45,54,55,52,4E,3E, D, A,55,73,69,6E,67,  497
850 DATA 20,74,68,65,20,66,69,6C,65,6E,61,6D,65,2E,74,79,  5DD
860 DATA 70,20,69,6E,20,74,68,65,20,22,62,65,67,69,6E,22,  531
870 DATA 20,6C,69,6E,65,2C, D, A,70,72,6F,64,75,63,65,73,  570
880 DATA 20,75,75,64,65,63,6F,64,65,64,20,66,69,6C,65,6E,  600
890 DATA 61,6D,65,2E,74,79,70,20,6F,6E,20,63,75,72,72,65,  5FC
900 DATA 6E,74,20,64,72,69,76,65,5C,70,61,74,68, D, A,28,  564
910 DATA 70,72,6F,76,69,64,69,6E,67,20,66,69,6C,65,6E,61,  661
920 DATA 6D,65,2E,74,79,70,20,64,6F,65,73,6E,27,74,20,61,  5B2
930 DATA 6C,72,65,61,64,79,20,65,78,69,73,74,29,2E, D, A,  53C
940 DATA 2D,6F,20,73,77,69,74,63,68,20,66,6F,72,63,65,73,  5F0
950 DATA 20,6F,76,65,72,77,72,69,74,65,20,6F,66,20,65,78,  5F9
960 DATA 69,73,74,69,6E,67,20,66,69,6C,65,6E,61,6D,65,2E,  61D
970 DATA 74,79,70, D, A,2D,3F,20,70,72,6F,64,75,63,65,73,  565
980 DATA 20,74,68,69,73,20,68,65,6C,70,20,6D,65,73,73,61,  5DA
990 DATA 67,65,2E, D, A,24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  135
1000 DATA 114365
---cut-here---

---cut-here---uudecode.doc---

			UUDECODE.DOC
   by David Kirschbaum <kirsch%maxemail@peo-mis-emh1.army.mil>

UUDECODE uudecodes uuencoded files to original binary form.  It is
compatible with the Unix (and other) uuencode/uudecode utilities.

Usage:

          UUDECODE<RETURN>
    Displays usage message, prompts for input file name.

          UUDECODE [-o ][d:][\path\]filename.uue
    Produces a uudecoded file, with the filename taken from
    within the uuencoded file (which might include a path),
    (provided the filename doesn't exist.  Use the "-o"
    (or "/o") switch to force overwriting of any existing
    output file.)

          UUDECODE /?  (or -?)
    Writes a brief help screen to STDOUT and terminates.

Notes:

UUDECODE checks for existing files with the same name as the newly
created output file.  It will produce an error message and abort if it
finds one!  (Use the "-o" switch to force overwriting existing files.)

UUDECODE will accept an input path\filename up to 80 chars long, and will
prompt if none is specified.

A uudecoded filename is taken from the uuencoded source file and is
written to the current directory (or to the path included in the file
header).

Input files may be any length.

Uuencoded file headers (mailing headers, etc.) need not be removed.
However, any spurious lines between the "begin" and "end" lines MUST
be removed.

Anything beyond the "end" line is ignored.  If no "end" is found, the
output file is saved, but an error message is displayed.

Certain uuencoders append a "checksum" character to the end of each
uuencoded line.  UUDECODE ignores these.

Uuencoded files generated or moved through a Unix system may have LF
(ASCII 10) line endings instead of the DOS-convention CR/LF (ASCII
13/10) endings.  UUDECODE will handle those LF ends of line as well.
you MAY get a "end not found" message, but the uudecoded file will be
intact.

Certain systems and mailers will strip off trailing spaces on lines.
UUDECODE attempts to replace them.

---cut-here---

w8sdz@rigel.acs.oakland.edu (Keith Petersen) (05/03/91)

This is from the SIMTEL20 archives.  I certify that this GWBASIC/BASICA
program creates an accurate copy of David Kirschbaum's uudecode
program which is available with source code in TOADUU20.ZIP from
SIMTEL20's pd1:<msdos.filutl> directory.

The executable that this BASIC program creates is extremely fast,
having been written in assembly language.  This is version 2.0, last
revised 12-March-91.  It corrects a bug which caused improper decoding
of files with four-digit attributes after the "begin" keyword.

Keith
-- 
Keith Petersen
Maintainer of SIMTEL20's MSDOS, MISC and CP/M archives  -  [192.88.110.20]
Internet: w8sdz@WSMR-SIMTEL20.Army.Mil    or    w8sdz@vela.acs.oakland.edu
Uucp: uunet!umich!vela!w8sdz                         BITNET: w8sdz@OAKLAND

---cut-here---uudecode.bas---
100 REM - BASIC PROGRAM TO CREATE UUDECODE.COM v2.0 (a fast uudecoder)
105 REM UUDECODE.BAS created by w8sdz@WSMR-SIMTEL20.ARMY.MIL (Keith Petersen)
110 CLS:PRINT "Creating UUDECODE.COM.  See UUDECODE.DOC for instructions."
115 OPEN "UUDECODE.COM" AS #1 LEN = 1
120 FIELD #1, 1 AS A$: CHECKSUM#=0
130 FOR I = 1 TO    73
140  LINESUM#=0: LOCATE 2,3: PRINT "Countdown: "    73 - I ;
150  FOR J = 1 TO  16: READ BYTE$: CHECKSUM#=CHECKSUM#+VAL("&H"+BYTE$)
160   LINESUM#=LINESUM#+VAL("&H"+BYTE$)
170   IF (BYTE < 256) THEN LSET A$=CHR$(VAL("&H"+BYTE$)): PUT #1
180  NEXT J
190  READ LINETOT$: LINECHECK# = VAL("&H"+LINETOT$)
200  IF LINECHECK# = LINESUM# THEN GOTO 220
210  LOCATE 4,2: PRINT "Error in line #"  ;  260 +  10 * I: GOTO 260
220 NEXT I
230 CLOSE: READ FILETOT$ : FILECHECK# = VAL(FILETOT$)
240 IF CHECKSUM# <> FILECHECK# THEN GOTO 260
250 PRINT: PRINT "UUDECODE.COM created successfully": SYSTEM
260 PRINT: PRINT "UUDECODE.COM is not valid!": END
270 DATA EB,5F,90,49,6E,70,75,74,20,66,69,6C,65,20,65,72,  6A1
280 DATA 72,6F,72,2E,4F,75,74,70,75,74,20,66,69,6C,65,20,  5F2
290 DATA 65,72,72,6F,72,2E,73,74,61,72,74,20,6E,6F,74,20,  617
300 DATA 66,6F,75,6E,64,2E,45,6E,64,20,6E,6F,74,20,66,6F,  5C7
310 DATA 75,6E,64,2E,20,65,78,69,73,74,73,2E,20,41,62,6F,  595
320 DATA 72,74,69,6E,67,21, 0, 0, 0, 0,AC, 3,AC, 3,5C, 3,  402
330 DATA  0,E8,FA, 1,E8,54, 1,BF,5C, 3,E8,D1, 0,AD,3D,62,  743
340 DATA 65,75,F4,AD,3D,67,69,75,EE,AD,3D,6E,20,75,E8,BF,  87F
350 DATA 5C, 3,B4,20,AC,3A,C4,76,FB,AC,3A,C4,75,FB,AC,3A,  84E
360 DATA C4,76,FB,3A,C4,74, 4,AA,AC,EB,F8,BA,5C, 3,33,C9,  8F9
370 DATA 88, D,80,3E,60, 1,FF,74,1E,B4,4E,CD,21,3C, 2,74,  5E7
380 DATA 16,3C,12,74,12,8B,CF,2B,CA,E8,2F, 1,BA,44, 1,B9,  609
390 DATA 12, 0,B0, 5,E9,16, 1,B4,3C,CD,21,73, 3,E9,E3, 0,  5E7
400 DATA A3,58, 1,BF,5C, 3,E8,65, 0,AC, A,C0,74,48,BB,20,  674
410 DATA 20,2A,C3, A,C0,74,3F,32,E4,8B,E8,B9, 4, 6,AC,8A,  70C
420 DATA E0,AC,8A,D0,2B,C3,D0,E4,D0,E4,D2,E8, A,C4,AA,4D,  ABB
430 DATA 74,D4,8A,E2,AC,8A,D0,2B,C3,D2,E4,D0,E8,D0,E8, A,  AD8
440 DATA C4,AA,4D,74,C1,8A,E2,AC,2B,C3,8A,CD,D2,E4, A,C4,  9D1
450 DATA AA,4D,75,C7,EB,B0,E8,15, 0,AD,3D,65,6E,75, 5,AC,  7AE
460 DATA 3C,64,74, 3,E8,AE, 0,E8,61, 0,B4,4C,CD,21,8B,36,  6A5
470 DATA 5A, 1,89,3E,5E, 1,BD,50, 0,BF, C, 3,33,C0,AB,B9,  5B3
480 DATA 27, 0,B8,20,20,F3,AB,BF, C, 3,3B,36,5C, 1,72, 6,  4D1
490 DATA E8,38, 0,E8,55, 0,AC,3C,60,75, 4,B0,20,EB, 8,3C,  61D
500 DATA  D,74,1B,3C, A,74,18,AA,4D,75,DF,3B,36,5C, 1,72,  4F9
510 DATA  3,E8,37, 0,AC,3C, A,75,F2,BF,5C, 3,EB,B4,46,89,  707
520 DATA 36,5A, 1,8B,3E,5E, 1,BE, C, 3,C3,BA,5C, 3,8B,CA,  5B7
530 DATA 87, E,5E, 1,2B,CA,76, A,8B,1E,58, 1,B4,40,CD,21,  54D
540 DATA 72, 1,C3,BA,14, 1,B9,12, 0,EB,22,BA,AC, 3,B9,54,  653
550 DATA FA,8B,1E,56, 1,B4,3F,CD,21,72, C, B,C0,74, 8,8B,  62B
560 DATA F2, 3,C6,A3,5C, 1,C3,BA, 3, 1,B9,11, 0,50,E8, A,  648
570 DATA  0,58,E9,55,FF,BA,36, 1,B9, E, 0,52,51,BA,3E, 3,  5EB
580 DATA B9, 2, 0,90,E8, C, 0,59,5A,E8, 7, 0,BA,3E, 3,B9,  595
590 DATA  2, 0,90,BB, 2, 0,B4,40,CD,21,C3,90, D, A,54,68,  557
600 DATA 69,73,20,50,72,6F,67,72,61,6D,20,52,65,71,75,69,  5FA
610 DATA 72,65,73,20,44,4F,53,20,56,65,72,73,69,6F,6E,20,  576
620 DATA 32,2E,30,20,6F,72,20,68,69,67,68,65,72,2E, D, A,  46D
630 DATA 24, D, A,49,6E,70,75,74,20,70,61,74,68,2F,66,69,  516
640 DATA 6C,65,3A,20,20,4E,6F,20,61,63,74,69,6F,6E,B4,30,  58A
650 DATA CD,21,3C, 2,73, C,BA, C, 3,B4, 9,CD,21,B8, 1,4C,  524
660 DATA CD,21,E8,46, 0,73,33,BA,68, 4,B9,1B, 1,90,E8,6A,  69F
670 DATA FF,BA,41, 3,B9,14, 0,BB, 2, 0,B4,40,CD,21,BF,7F,  6A7
680 DATA  0,C6, 5,50,8B,D7,B4, A,CD,21,E8,1E, 0,73, B,BA,  667
690 DATA 55, 3,B9, 9, 0,B0, 1,E9,33,FF,BA, 4, 4,B8, 0,3D,  59D
700 DATA CD,21,72, 4,A3,56, 1,C3,E9,1C,FF,BE,80, 0,BF, 4,  726
710 DATA  4,FC,AC, A,C0,74,2F,B4,20,AC,3A,C4,76,FB,3A,C4,  806
720 DATA 76,26,3C,2F,74, 4,3C,2D,75,18,8B,D0,8B, 4,3C,3F,  4DA
730 DATA 74,1B,24,5F,3D,4F,20,8B,C2,75, 7,F6,16,60, 1,46,  53A
740 DATA 46,AC,AA,AC,EB,D8,F9,C3,C6, 5, 0,F8,C3,BA,68, 4,  973
750 DATA E9,66,FF,90,55,55,44,45,43,4F,44,45,20,76,32,2E,  622
760 DATA 30, 0,4F,72,69,67,69,6E,61,6C,6C,79,20,62,79,20,  565
770 DATA 54,68,65,6F,64,6F,72,65,20,41,2E,20,4B,61,6C,64,  565
780 DATA 69,73, 0,54,68,6F,72,6F,75,67,68,6C,79,20,72,65,  608
790 DATA 68,61,63,6B,65,64,20,62,79,20,44,61,76,69,64,20,  583
800 DATA 50,20,4B,69,72,73,63,68,62,61,75,6D,2C,20,54,6F,  588
810 DATA 61,64,20,48,61,6C,6C, 0,55,55,44,45,43,4F,44,45,  4B4
820 DATA 20,5B,2D,3F,5D,5B,2D,6F,5D,20,5B,64,3A,5D,5B,5C,  4C5
830 DATA 70,61,74,68,5C,5D,62,69,6E,61,72,79,2E,55,55,45,  608
840 DATA 20,3C,52,45,54,55,52,4E,3E, D, A,55,73,69,6E,67,  497
850 DATA 20,74,68,65,20,66,69,6C,65,6E,61,6D,65,2E,74,79,  5DD
860 DATA 70,20,69,6E,20,74,68,65,20,22,62,65,67,69,6E,22,  531
870 DATA 20,6C,69,6E,65,2C, D, A,70,72,6F,64,75,63,65,73,  570
880 DATA 20,75,75,64,65,63,6F,64,65,64,20,66,69,6C,65,6E,  600
890 DATA 61,6D,65,2E,74,79,70,20,6F,6E,20,63,75,72,72,65,  5FC
900 DATA 6E,74,20,64,72,69,76,65,5C,70,61,74,68, D, A,28,  564
910 DATA 70,72,6F,76,69,64,69,6E,67,20,66,69,6C,65,6E,61,  661
920 DATA 6D,65,2E,74,79,70,20,64,6F,65,73,6E,27,74,20,61,  5B2
930 DATA 6C,72,65,61,64,79,20,65,78,69,73,74,29,2E, D, A,  53C
940 DATA 2D,6F,20,73,77,69,74,63,68,20,66,6F,72,63,65,73,  5F0
950 DATA 20,6F,76,65,72,77,72,69,74,65,20,6F,66,20,65,78,  5F9
960 DATA 69,73,74,69,6E,67,20,66,69,6C,65,6E,61,6D,65,2E,  61D
970 DATA 74,79,70, D, A,2D,3F,20,70,72,6F,64,75,63,65,73,  565
980 DATA 20,74,68,69,73,20,68,65,6C,70,20,6D,65,73,73,61,  5DA
990 DATA 67,65,2E, D, A,24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  135
1000 DATA 114365
---cut-here---

---cut-here---uudecode.doc---

			UUDECODE.DOC
   by David Kirschbaum <kirsch%maxemail@peo-mis-emh1.army.mil>

UUDECODE uudecodes uuencoded files to original binary form.  It is
compatible with the Unix (and other) uuencode/uudecode utilities.

Usage:

          UUDECODE<RETURN>
    Displays usage message, prompts for input file name.

          UUDECODE [-o ][d:][\path\]filename.uue
    Produces a uudecoded file, with the filename taken from
    within the uuencoded file (which might include a path),
    (provided the filename doesn't exist.  Use the "-o"
    (or "/o") switch to force overwriting of any existing
    output file.)

          UUDECODE /?  (or -?)
    Writes a brief help screen to STDOUT and terminates.

Notes:

UUDECODE checks for existing files with the same name as the newly
created output file.  It will produce an error message and abort if it
finds one!  (Use the "-o" switch to force overwriting existing files.)

UUDECODE will accept an input path\filename up to 80 chars long, and will
prompt if none is specified.

A uudecoded filename is taken from the uuencoded source file and is
written to the current directory (or to the path included in the file
header).

Input files may be any length.

Uuencoded file headers (mailing headers, etc.) need not be removed.
However, any spurious lines between the "begin" and "end" lines MUST
be removed.

Anything beyond the "end" line is ignored.  If no "end" is found, the
output file is saved, but an error message is displayed.

Certain uuencoders append a "checksum" character to the end of each
uuencoded line.  UUDECODE ignores these.

Uuencoded files generated or moved through a Unix system may have LF
(ASCII 10) line endings instead of the DOS-convention CR/LF (ASCII
13/10) endings.  UUDECODE will handle those LF ends of line as well.
you MAY get a "end not found" message, but the uudecoded file will be
intact.

Certain systems and mailers will strip off trailing spaces on lines.
UUDECODE attempts to replace them.

---cut-here---