{ This is not related to the original topic ".. w/exe!!", but if somebody is interested, at least I found this one a bit excited piece of code. It makes an executable com-file from your text and you can easily extend it to the limits you need. Just remember that you can't call any pascal routines, you have to write it in pure assembler. (would .80xxx have been a better area..?) Anyway, here it is: --!clip!-- { Code by Kimmo Fredrikson } {$A+,D-,G-,I-,R-,S-} program txt2com; var src : file; dst : file; buff : array [0..2047] of byte; bytesRead : word; bytesWritten : word; fSize : word; function t2c: word; far; assembler; asm jmp @tail { 2 bytes } @head:mov ax, 0003h { -- here starts the code part of } int 10h { the txt-show-proggie.. } mov cx, word ptr [@tail+100h-2] { length of text } lea si, [@tail+100h-2+2] { address of txt } @nxtC:mov dl, [si] { read a character to dl } mov ah, 2 int 21h inc si loop @nxtC mov ax, 4c00h int 21h { terminate, back to dos } @tail:mov ax, offset [@tail] { length of t2c } sub ax, offset [@head] { this returns the length of the } end; { assembler code when called within this pascal } { program } begin if paramCount <> 2 then halt; assign (src, paramStr (1)); assign (dst, paramStr (2)); reset (src, 1); if ioResult <> 0 then halt; if fileSize (src) > 64000 then halt; fSize := fileSize (src) - 1; { get rid of the ctrl-z } reWrite (dst, 1); if ioResult <> 0 then halt; blockWrite (dst, pointer (longint (@t2c) + 2)^, t2c); { the code } blockWrite (dst, fSize, 2); { the length of text } repeat blockRead (src, buff, 2048, bytesRead); blockWrite (dst, buff, bytesRead, bytesWritten); { the text } until (bytesRead = 0) or (bytesWritten <> bytesRead); close (src); close (dst); end.