W95 long <-> short filenames

This code converts a long file name to a short, and vice versa.

I think the function names are self-explaning, but the first parameter
is unknown.

Greetings
Ekorren

-- CODE START --
function GetLongPathName(SubstExpand: Byte; SourcePath,
   DestPath: PChar): Boolean; assembler;
asm
   mov ax, 7160h
   mov cl, 2                  
   mov ch, SubstExpand        
   lds si, SourcePath
   les di, DestPath
   int 21h
   jnc @1
   mov bx,ax
   mov al,false
   jmp @2
@1:
   xor bx,bx
   mov al,true
@2:
   mov dx,seg @data
   mov ds,dx
   mov Dos.DOSError, bx
end;

function GetShortPathName(SubstExpand: Byte; SourcePath,
   DestPath: PChar): Boolean; assembler;
asm
   mov ax, 7160h
   mov cl, 1
   mov ch, SubstExpand
   lds si, SourcePath
   les di, DestPath
   int 21h
   jnc @1
   mov bx,ax
   mov al,false
   jmp @2
@1:
   xor bx,bx
   mov al,true
@2:
   mov dx,seg @data
   mov ds,dx
   mov Dos.DOSError, bx
end;
--- CODE END ---