[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]

    {
    Sadly, the 3d.zip file was corrupt again.  Please use my programs here and
    generate a DATA.HEX include file.  Your post had lines that were uneven and
    obviously missing data.  An include file made by ZIP2HEX will be even and
    verifiable.  HEX2ZIP will create the original binary file renamed BINARY.ZIP.
    I noticed your zip file was less than 20k and its source code contents were
    over 100k.  The include file will always be four times the size of the zip due
    to formatting with commas and dollar symbols.  A smarter version should use
    LONGINTS instead of BYTES to gain a 60% savings.
    { These programs can be added to SWAG }
    PROGRAM Hex2Zip;
    { Converts hex data file less than 64k in size into binary equivalent }
    { 1994 Freeware v1.2  Hex-to-Binary file convertor by John Howard }
    {$i DATA.HEX}
    (*  layout of DATA.HEX include file is
      CONST
           { Size is equal to FILESIZE(BINARY) }
           HEX_DATA : ARRAY[1..Size] OF BYTE = (
                 { i.e. hex data such as $00,$A2,$FF,.. } );
    *)
    VAR
       BINARY : FILE;
    BEGIN
        ASSIGN(BINARY,'BINARY.ZIP');
        REWRITE(BINARY,1);
        BLOCKWRITE(BINARY,HEX_DATA,SIZEOF(HEX_DATA));
        CLOSE(BINARY);
        WRITELN('Data was converted to your file called BINARY.ZIP');
    END.

    PROGRAM Zip2Hex;
    { Converts binary file less than 64k in size into hex data file equivalent }
    { 1994 Freeware v1.2  Binary-to-Hex data convertor by John Howard }

    FUNCTION HexByte(B : Byte) : String;
    CONST
      HexDigits : ARRAY[0..15] OF Char = '0123456789ABCDEF';
    VAR Temp : String;
    BEGIN
      Temp[0] := #2;
      Temp[1] := HexDigits[B SHR 4];
      Temp[2] := HexDigits[B AND $F];
      HexByte := Temp;
    END;

    VAR
       BINARY : FILE;
       HEXFILE : TEXT;
       Hex_Byte : BYTE;
       Size : LONGINT;
       i : WORD;
    BEGIN
      IF ParamStr(1) = '?' THEN
        BEGIN
          WRITELN('Howard International, P.O. Box 34633, NKC, MO 64116 USA');
          WRITELN('1994 Freeware v1.2  Binary-to-Hex data convertor');
          WRITELN('Syntax:  zip2hex.exe  [filename]');
          WRITELN('Filename is optional, the default is BINARY.ZIP');
          Halt;
        END;

        IF ParamCount = 0 THEN
           ASSIGN(BINARY,'BINARY.ZIP')
        ELSE
           ASSIGN(BINARY,ParamStr(1));

        RESET(BINARY,1);
        ASSIGN(HEXFILE,'DATA.HEX');
        REWRITE(HEXFILE);

        Size := FILESIZE(BINARY);
        WRITELN(HEXFILE, 'CONST HEX_DATA : ARRAY[1..', Size,'] OF BYTE = (');

        BLOCKREAD(BINARY,Hex_Byte,SIZEOF(Hex_Byte));
        WRITE(HEXFILE, ' $');
        WRITE(HEXFILE,HEXBYTE(Hex_Byte));
        FOR i := 2 TO Size DO
          BEGIN
            BLOCKREAD(BINARY,Hex_Byte,SIZEOF(Hex_Byte));
            WRITE(HEXFILE, ',$');
            WRITE(HEXFILE,HEXBYTE(Hex_Byte));
            IF (i MOD 16 = 0) THEN WRITELN(HEXFILE);
          END;
        WRITELN(HEXFILE, ');');

        CLOSE(HEXFILE);
        CLOSE(BINARY);
        WRITELN('Your BINARY ZIP was converted to DATA.HEX include file.');
    END.

[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]