Contributor: THILO WAGNER (* > Can anyone post some code on swapping a TP (7.0) program out of > memory and executing a batch file (or EXE file; show both if they're > different please). Thanx. [I can do it in assembly... :)... but > Pascal's a different story]. With this you must increase the maximum heap with {$M....}. But I found a very good exec-Routine, which gives all the heap free before executing the shell: *) Function DosShell(command:String):Integer;Var OldHeapEnd, NewHeapEnd: Word; Error:Integer; Begin Error:=0; If MemAvail<$1000 then Error:=8; If Error=0 then Begin NewHeapEnd:=Seg(HeapPtr^)-PrefixSeg; OldHeapEnd:=Seg(HeapEnd^)-PrefixSeg; asm mov ah,4Ah mov bx,NewHeapEnd mov es,PrefixSeg Int 21h jnc @EXIT mov Error,ax @EXIT: end; {asm} If Error=0 then begin SwapVectors; Exec(GetEnv('COMSPEC'),command); SwapVectors; asm mov ah,4Ah mov bx,OldHeapEnd mov es,PrefixSeg Int 21h jnc @EXIT mov Error,ax @EXIT: end; {asm} end; {If} end; {If} DosShell:=Error; end; {Function} Procedure LittleShellDemo; Begin DosShell(''); { a simple DOS-Shell } DosShell('/c TEST.BAT'); { Start the batch-file TEST.BAT } End;