Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!asuvax!ukma!wuarchive!zaphod.mps.ohio-state.edu!uwm.edu!bionet!agate!ucbvax!WSMR-SIMTEL20.ARMY.MIL!w8sdz From: w8sdz@WSMR-SIMTEL20.ARMY.MIL (Keith Petersen) Newsgroups: comp.binaries.ibm.pc.d Subject: Easy bootstrap for fast MSDOS uudecode Summary: Solving the chicken-and-the-egg uudecode problem Keywords: uudecode,msdos,basic,uudecode.bas Message-ID: Date: 15 Apr 91 20:34:00 GMT Sender: daemon@ucbvax.BERKELEY.EDU Lines: 171 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: 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 UUDECODE uudecodes uuencoded files to original binary form. It is compatible with the Unix (and other) uuencode/uudecode utilities. Usage: UUDECODE 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---