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---