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

{
From: bobs@dragons.nest.nl (Bob Swart)

> Does anyone have a program to produce a self-displaying exe file from
> a text file....
}

{$A+,B-,D-,E-,F-,G-,I-,L-,N-,O-,R-,S+,V-,X-}
{$M 16384,0,655360}

Uses Strings;

Const
  bufsize = 4096;

  InLineCode: Array[1..200] of Byte =
   ($BA,$AC,$01,$B4,$09,$CD,$21,$B4,$01,$CD,$21,$3C,$73,$74,$13,$3C,
    $53,$74,$0F,$3C,$70,$74,$06,$3C,$50,$74,$02,$EB,$E3,$B6,$05,$EB,
    $03,$90,$B6,$02,$B2,$0D,$B4,$02,$CD,$21,$B2,$0A,$B4,$02,$CD,$21,
    $BB,$C8,$01,$B9,$00,$00,$8A,$17,$80,$FA,$0A,$74,$16,$80,$FA,$0D,
    $74,$11,$80,$FA,$7F,$74,$7F,$8A,$E6,$CD,$21,$43,$FE,$C1,$80,$F9,
    $4F,$7C,$E3,$B2,$0D,$8A,$E6,$CD,$21,$B2,$0A,$8A,$E6,$CD,$21,$43,
    $80,$FE,$05,$74,$07,$80,$FD,$17,$74,$06,$FE,$C5,$B1,$00,$EB,$C6,
    $BA,$8E,$01,$B4,$09,$CD,$21,$B4,$01,$CD,$21,$B9,$00,$00,$B6,$02,
    $B2,$0D,$B4,$02,$CD,$21,$B2,$0A,$B4,$02,$CD,$21,$EB,$A8,$2D,$2D,
    $2D,$48,$69,$74,$20,$61,$6E,$79,$20,$6B,$65,$79,$20,$74,$6F,$20,
    $63,$6F,$6E,$74,$69,$6E,$75,$65,$2D,$2D,$2D,$24,$0A,$0D,$28,$50,
    $29,$72,$69,$6E,$74,$65,$72,$20,$6F,$72,$20,$28,$53,$29,$63,$72,
    $65,$65,$6E,$3F,$20,$24,$CD,$20);

var f,g: File;
    size: Word;
    Buffer: Array[1..bufsize] of Byte;

{ This function added by Kerry Sokalsky - Dr. Bob forgot it! }
Function UpperStr(St : String) : String;
Var
  Count : Byte;
begin
  For Count := 1 to Length(St) do
    St[Count] := UpCase(St[Count]);
end;

begin
  writeln('TXT2COM (c) 1992 DwarFools & Consultancy, by drs. Robert E. Swart');
  writeln;

  if ParamCount <> 2 then
  begin
    writeln('Usage: txt2com txtfile comfile');
    Halt(0);
  end;

  if UpperStr(ParamStr(1)) = UpperStr(ParamStr(2)) then
  begin
    writeln('Error: infile = outfile');
    Halt(1);
  end;

  Assign(f,ParamStr(1));
  reset(f,1);
  if IOResult <> 0 then
  begin
    writeln('Error: could not open file ',ParamStr(1));
    Halt(2);
  end;

  Assign(g,ParamStr(2));
  rewrite(g,1);
  if IOResult <> 0 then
  begin
    writeln('Error: could not create file ',ParamStr(2));
    Halt(3);
  end;

  BlockWrite(g,InLineCode,200);
  repeat
    BlockRead(f,Buffer,bufsize,size);
    if size < bufsize then
    begin
      Inc(size);
      Buffer[size] := 127 {terminating character};
    end;
    BlockWrite(g,Buffer,size);
  until size < bufsize;
  close(f);
  close(g);
end.


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