/* * CKIPCT.REXX * * This program is a de-boo'er for the Amiga, written in Amiga REXX. It is * intended for use as a decoder for a BOO file of Amiga Kermit. * * Written by Stephen Walton, 20 October 1990. Based on MSBPCT.C * */ parse arg InName if InName = '' then do say 'usage: rx ckipct boo-file' exit 10 end if ~open(InFile,InName,'Read') then do say 'Can''t open file' InName exit 10 end OutName = readln(InFile) if Outname = '' then do say 'Illegal BOO file' exit end call open OutFile, OutName,'Write' say 'Creating file' OutName 'from input BOO file' InName NULLCHAR = fixchar('~') line = readln(InFile) do while ~eof(InFile) do while length(line) >= 2 if fixchar(left(line,1)) = NULLCHAR then do /* Handle null compress */ line = substr(line,2) do fixchar(left(line,1)) /* For repeat count... */ call writech(OutFile,d2c(0)) /* ...output nulls */ end line = substr(line,2) /* Trim off output count */ end else do /* Decode a quad */ a = fixchar(left(line,1)) b = fixchar(substr(line,2,1)) c = fixchar(substr(line,3,1)) d = fixchar(substr(line,4,1)) call writech(OutFile,d2c(((a*4) + (b%16))//256)) call writech(OutFile,d2c(((b*16) + int(c/4))//256)) call writech(OutFile,d2c((c*64 + d)//256)) line = substr(line,5) /* Trim off the quad */ end end line = readln(InFile) end call close(InFile) call close(OutFile) exit fixchar: procedure parse arg c return c2d(c) - c2d('0')