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

⨫ DAT2ASM v0.01
(c) by Duke/SMF

    ᮧ 樮 ᮢ HLLC.TRANS.Demo, HLLC.PINC.Demo
 HLLO.TPPE.Demo  ॡ 㯠 ᪮쪮 TXT-䠩 ⠪,
⮡ ⮬ ७쪮    .   ⮬ ⥫, ⮡ 
뫮 ᨬ    ᯠ騪  ᪥.
   ࢮ,  室  ,  ᮧ SFX-娢.  SFX 
 EXE-䠩 (⠩ - 譥   ), 뢮  ࠭
直 ᮮ饭,  㭨ᠫ ( ⮬ ஬).
   ⮬  ᪮   ᫥ (㣨 ᫮    :) 
⨫.  砥 COM-䠩 ॢ室 ࠧ DAT-䠩
  ⥭ .  - 㦭 㯠... ६ ⨫ PKLITE
(DIET   )  ᦨ COM-䠩. 祭   㯠
 㣮 SFX-娢    ࠧ.
   ᫨   ᪮쪮 䠩 (᪠, text1.dat - text9.dat)
 娢稪,  ᮧ ⥪⮢箪 pack.txt :
   text1.dat
   .........
   text9.dat
 ᪠   ⨫ :
   dat2asm 2 pack.txt packing.asm
 ⮣  䠩 packing.asm  室 ;) 饣 SFX-娢.
  䠩 data.txt   ⮣  :
   dat2asm 1 data.txt packing.asm
  ! થ !
   ᫨ - -  ࠨ -  ᠬ !  (8-P

===== Cut here =====
program dat2asm;
var txt,as:text;
    st:string;
    n,d:byte;
{---------------------------}
procedure About;
begin
writeln('DAT2ASM v0.01 (c) by Duke/SMF  * DVL Utilities *');
writeln('Usage : DAT2ASM <option> <filename> <target.asm>');
writeln('Option: 1 - convert <filename> to <target.asm>');
writeln('        2 - convert files from <filename> to <target.asm>');
halt;
end;
{--------------------------}
procedure Head;
begin
assign(as,paramstr(3));rewrite(as);
writeln(as,'; This file created with DAT2ASM v0.01 by Duke/SMF');
writeln(as,'model tiny');
writeln(as,'.code');
writeln(as,'org 100h');
writeln(as,'Start:');
end;
{--------------------------}
procedure Heart;
begin
writeln(as,';-------------------------------');
writeln(as,'NewFile PROC    NEAR');
writeln(as,'');
writeln(as,'        mov     ah,3Ch           ; 㭪 ᮧ');
writeln(as,'        mov     cx,0             ; ਡ⮢ ');
writeln(as,'        int     21h');
writeln(as,'        mov     Handle,ax        ; ⥫ 䠩');
writeln(as,'        ret');
writeln(as,'        endp');
writeln(as,';-------------------------------');
writeln(as,'Write   PROC    NEAR');
writeln(as,'');
writeln(as,'        mov     ah,40h           ; 㭪 ');
writeln(as,'        mov     bx,Handle        ; ⥫');
writeln(as,'        int     21h');
writeln(as,'');
writeln(as,'        mov     ah,3Eh           ; 㭪  䠩');
writeln(as,'        mov     bx,Handle');
writeln(as,'        int     21h');
writeln(as,'        ret');
writeln(as,'        endp');
writeln(as,';------------------------------');
writeln(as,'Handle  dw 0');
writeln(as,'');
end;
{--------------------------}
procedure Tail;
begin
writeln(as,'end Start');
close(as);
end;
{--------------------------}
procedure Code(s:string);
begin
n:=n+1;
writeln(as,'    mov dx, offset name',n);
writeln(as,'    call NewFile');
writeln(as,'    mov cx,len',n);
writeln(as,'    mov dx,offset Data',n);
writeln(as,'    call Write');
writeln(as,'');
end;
{--------------------------}
procedure Data(s:string);
var f:file of byte;
    k:byte;
    i:byte; {稪}
begin
d:=d+1;
writeln(as,'Name',d,': db ''',s,''',0');
writeln(as,'Data',d,': ');
assign(f,s);reset(f);
i:=0;
write(as,'db ');
while not eof (f) do
   begin
   i:=i+1;
   read(f,k);
   write(as,k);
   if i=20 then
     begin
     writeln(as,'');
     if not eof(f) then write(as,'db ');
     i:=0;
     end
   else if not eof(f) then write(as,',');
   end;
writeln(as,'');
writeln(as,'len',d,' equ ',filesize(f));
close(f);
end;
{--------------------------}
begin
if paramcount<>3 then About;
n:=0;
d:=0;
st:=paramstr(1);
case st[1] of
   '1' : begin
         Head;
         Code(paramstr(2));
         Heart;
         Data(paramstr(2));
         Tail;
         end;
   '2' : begin
         Head;
         assign(txt,paramstr(2));
         reset(txt);
         while not eof(txt) do
           begin
           readln(txt,st);
           Code(st);
           end;
         Heart;
         reset(txt);
         while not eof(txt) do
           begin
           readln(txt,st);
           Data(st);
           end;
         close(txt);
         Tail;
         end;
   else About;
   end;
end.
===== Cut here =====
