1 GOTO 100:REM jump around time-critical stuff to start up program. 2 M=USR(UUDADR) 10 IF M=0 THEN 2090 20 IF M>OBUFDIM THEN ? "Error at line 20, M=";M:GOTO 3000 30 PRINT #2;OBUF$;:BYTES=BYTES+M 40 INPUT #1,IBUF$:L=LEN(IBUF$)+1:IF L<62 THEN IBUF$(L)=" ":IBUF$(L+1)=IBUF$(L) 50 GOTO 2 100 ? "Uudecode Ver. 1.2a":? "Report errors to John Sangster at" 101 ? "(617) 235-8753/jhs@mitre-bedford.arpa":? 102 POKE 6,1:REM Turn BASIC flag ON. 105 DIM OBUF$(80),IBUF$(62),OFILE$(16),IFILE$(16),A$(1) 110 DIM UUDECODE$(400) 120 UUDADR=ADR(UUDECODE$):IBUF=ADR(IBUF$):OBUF=ADR(OBUF$) 130 OBUFDIM=80:UUDDIM=400:BEEP=150:RETRY=500 140 GOTO 200 149 REM BEEP Subroutine: 150 SOUND 0,85,10,15:FOR I=1 TO 80:NEXT I:SOUND 0,0,0,0:RETURN 199 END 200 ? "Loading uudecode subroutine..." 201 RESTORE 4000:POKADR=UUDADR:MAXADR=POKADR+UUDDIM-1:PRGTOP=UUDADR-1 202 READ X:IF X=255 THEN READ X:IF X=255 THEN 204 203 ? "BAD LOAD FILE FOR UUD":END 204 READ LO1,HI1,LO2,HI2:BYTES=HI2*256+LO2-(HI1*256+LO1)+1:PRGTOP=PRGTOP+BYTES 205 IF BYTES<0 OR BYTES>UUDDIM THEN ? "BYTE COUNT ERROR FOR UUD":END 206 FOR I=1 TO BYTES:READ X:POKE POKADR,X:POKADR=POKADR+1:IF POKADR>MAXADR THEN ? "UUD STRG OVFLOW!":END 207 NEXT I 208 TRAP 209:READ LO1,HI1,LO2,HI2:BYTES=256*HI2+LO2-(256*HI1+LO1)+1 209 PRGTOP=PRGTOP+BYTES:IF LO1<>224 OR HI1<>2 THEN 206 500 REM COMMAND DISPATCHER 530 ? :? "INPUT FILE";:INPUT IFILE$:IF LEN(IFILE$)=0 THEN 530 540 ? :? "OUTPUT FILE SPEC OR":? "DEFAULT DEVICE ID";:INPUT OFILE$ 550 L=LEN(OFILE$):IF L=0 THEN OFILE$="D1:":? :? "Output to D1: assumed.":? 2000 ? "Beginning uudecode processing..." 2011 IBUF$(1,1)=" ":M=USR(UUDADR,IBUF,OBUF):IF M<>0 THEN ? "Error in initializing UUDECODE, line 2011; M=";M:? :END 2019 TRAP 2020:CLOSE #1:OPEN #1,4,0,IFILE$:GOTO 2030 2020 ? "INPUT FILE NOT FOUND":GOSUB BEEP:GOTO RETRY 2030 INPUT #1,IBUF$:BYTES=0 2035 L=LEN(IBUF$):IF L>5 THEN L=5 2036 IF L=0 THEN L=1:IBUF$=" " 2040 TRAP 2095:IF IBUF$(1,L)<>"begin" THEN 2030:REM skip header 2042 ? IBUF$:REM Print "begin" line to screen & get OFILE$ if default case. 2043 L=LEN(OFILE$):IF L<=0 OR OFILE$(L)=":" THEN 2046 2044 TRAP 2050:CLOSE #2:OPEN #2,8,0,OFILE$:TRAP 2095:GOTO 40 2046 L=LEN(IBUF$):FOR I=L TO 1 STEP -1 2047 IF IBUF$(I,I)<>" " THEN 2049 2048 OFILE$(4)=IBUF$(I+1,L):GOTO 2044 2049 NEXT I 2050 ? "OUTPUT FILESPEC":INPUT OFILE$:IF LEN(OFILE$)=0 THEN 2050 2052 GOTO 2044 2090 INPUT #1,IBUF$:IF IBUF$(1,3)="end" THEN PRINT IBUF$:GOTO 3000 2095 NERR=PEEK(195):IF NERR=136 THEN PRINT "EOF unexpected!":GOTO 3000 2097 ? "Error Code=";NERR 3000 ? "Done!":CLOSE #1:CLOSE #2:? "Output byte count = ";BYTES:? :? 3010 ? "More files to decode (Y/N)";:INPUT A$:IF A$="Y" OR A$="y" THEN 500 3020 DOS 4000 DATA 255,255,8,6,3,7 4010 DATA 104,240,67,170,56,233 4020 DATA 2,240,14,104,104,202 4030 DATA 208,251,169,254,133,212 4040 DATA 169,255,133,213,96,104 4050 DATA 141,1,6,104,141,0 4060 DATA 6,104,141,3,6,104 4070 DATA 141,2,6,165,6,240 4080 DATA 100,165,134,133,203,165 4090 DATA 135,133,204,173,2,6 4100 DATA 56,229,140,133,208,173 4110 DATA 3,6,229,141,133,209 4120 DATA 162,128,208,2,240,72 4130 DATA 160,0,177,203,201,129 4140 DATA 208,42,160,2,177,203 4150 DATA 56,229,208,208,33,200 4160 DATA 177,203,229,209,208,26 4170 DATA 165,203,141,6,6,165 4180 DATA 204,141,7,6,160,6 4190 DATA 177,203,141,4,6,200 4200 DATA 177,203,141,5,6,24 4210 DATA 144,22,24,165,203,105 4220 DATA 8,133,203,144,2,230 4230 DATA 204,202,208,192,169,255 4240 DATA 133,212,133,213,96,234 4250 DATA 173,0,6,133,204,173 4260 DATA 1,6,133,205,160,0 4270 DATA 132,213,177,204,56,233 4280 DATA 32,41,63,133,212,208 4290 DATA 24,165,6,240,19,173 4300 DATA 6,6,133,208,173,7 4310 DATA 6,133,209,160,4,169 4320 DATA 0,145,208,200,145,208 4330 DATA 96,165,6,240,43,173 4340 DATA 4,6,56,229,212,173 4350 DATA 5,6,229,213,16,9 4360 DATA 169,255,133,212,133,213 4370 DATA 32,54,185,173,6,6 4380 DATA 133,208,173,7,6,133 4390 DATA 209,169,0,160,5,145 4400 DATA 208,136,165,212,145,208 4410 DATA 230,204,208,2,230,205 4420 DATA 173,2,6,133,206,173 4430 DATA 4,7,108,7,3,6 4440 DATA 133,207,166,212,160,1 4450 DATA 177,204,56,233,32,133 4460 DATA 203,6,203,6,203,136 4470 DATA 177,204,56,233,32,6 4480 DATA 203,42,6,203,42,145 4490 DATA 206,202,240,68,169,0 4500 DATA 133,208,160,2,177,204 4510 DATA 56,233,32,41,63,74 4520 DATA 102,208,74,102,208,5 4530 DATA 203,136,145,206,202,240 4540 DATA 41,160,3,177,204,56 4550 DATA 233,32,41,63,5,208 4560 DATA 136,145,206,202,240,24 4570 DATA 24,165,204,105,4,133 4580 DATA 204,144,2,230,205,24 4590 DATA 165,206,105,3,133,206 4600 DATA 144,162,230,207,176,158 4610 DATA 96,224,2,225,2,0