amb43790@uxa.cso.uiuc.edu (Anthony M Brummett) (03/14/91)
Someone wanted to move files across directories without having to copy and
then delete. Here's the solution:
For anyone with assembly language or any language which allows msdos functions
(INT 21h), they can write a program which uses one function call.
In assembly language:
mov ah,056h ;msdos function 56
mov bx,segment oldname ;segment of pointer to old full path and name
mov ds,bx ;transfer to ds
mov bx,segment newname ;segment of pointer to new full path and name
mov es,bx ;transfer to es
mov dx,offset oldname ;offset of pointer to old pathname
mov di,offset newname ;offset of pointer to new pathname
int 021h
In Turbo pascal:
uses dos;
procedure filemove(old,new:string);
var regs:registers;
begin
with regs do begin
ah:=$56;
ds:=seg(@old);
es:=seg(@new);
dx:=ofs(@old);
di:=ofs(@new);
end;{with regs}
msdos(regs);
end;{procedure}
Of course, these have no error recovery recovery routines and the code was
written from memory with help from "Using Assembly Language" by Allen L.
Wyatt.
BTW here's part of the documentation from the book:
"Because the directory paths may differ, you can renamefiles across
directories. The only restriction is that both files must reside on the
same drive."
Hope this helps.!
Antoine----------------anb43790@uxa.cso.uiuc.edu