1 'On an IBM PC or compatible, use this BASICA program to convert a 2 'Kermit .BOO file to its original form. The result is usually an 3 '.EXE file. The program will prompt you for the file specifications 4 'of the input file and the output file, showing the defaults for 5 'each. The default for the input file is MSKERMIT.BOO. The default 6 'for the output file will be the file specification in the first line 7 'of the input file. 8 ' 9 'Because of the way BASICA does its file I/O, an end-of-file 10 'character (control Z = hex 1A) will be added to the end of the 11 'output file. This character will be included in the length of 12 'the output file. 13 ' 14 'This program is based on MSPCTRAN.BAS by Bill Catchings, and it 15 'uses the same algorithm. Many changes have been made to speed the 16 'program up. It runs in 45% to 60% of the time that MSPCTRAN.BAS 17 'takes. Using a hard disk, this program will convert the 59,394 18 'byte file named MSJRD5G.BOO in about 12 1/2 minutes. Using a 19 'floppy disk instead, this program will do the same conversion in 20 'about 14 minutes. 21 ' 22 'Developmemt and testing were done on an IBM PC XT using PC-DOS 23 '2.1 and IBM BASICA 2.0. In CONFIG.SYS, BUFFERS=8. 24 ' 25 ' Alan H. Holland FEAHH at VTVM1 on BITNET 26 ' 5/12/86 100 defint a-z 110 z = asc("0") 120 t = asc("~") - z 200 fid$ = "MSKERMIT.BOO" 210 print "Enter the file specification of the file to be deBOOed." 220 print " for default ["; fid$; 230 line input "] :", fi$ 240 print 250 if len(fi$) = 0 then fi$ = fid$ 260 open fi$ for input as #1 300 line input #1, fod$ 310 if len(fod$) <= 12 then goto 400 320 print "Error: The format of the .BOO file is incorrect." 330 close #1 340 system 400 print "Enter the file specification of the output file." 410 print " for default ["; fod$; 420 line input "] :", fo$ 430 print 440 if len (fo$) = 0 then fo$ = fod$ 450 t1$ = time$ 470 print "Processing started at: "; t1$ 480 open fo$ for output as #2 500 if eof(1) goto 800 510 input #1, x$ 600 if len(x$) < 2 goto 500 610 a = asc(x$) - z 620 b = asc( mid$(x$,2,1) ) - z 630 if a = t goto 700 640 if len(x$) < 4 goto 500 650 c = asc( mid$(x$,3,1) ) - z 660 d = asc( mid$(x$,4,1) ) - z 670 print#2,chr$(a*4+b\16 and 255);chr$(b*16+c\4 and 255);chr$(c*64+d and 255); 680 x$ = mid$(x$,5) 690 goto 600 700 print #2, string$(b,0); 710 x$ = mid$(x$,3) 720 goto 600 800 close #1, #2 810 t2$ = time$ 820 print "Processing finished at: "; t2$ 850 system