GN_Fex, Expand a filename
Register parameters
RST 20H, DEFW $5009
IN: BHL = source pointer (HL>255, B=0 means local pointer). HL = 0,1,2; not allowed. Source string should be terminated by a control character DE = destination pointer 0: output to IX stream handle 1: output to IX filter handle >255 place string at (DE) IX = destination handle (if DE = 0,1) C = limit of space to use OUT, if call successful: Fc = 0 DE = points to the character after the last one written (If DE(in) > 255) B = number of filename segments returned C = number of characters in compressed space A = A7 = 1, wildcards were used A6 = 1, device name specified A5 = 1, wild directory specified ("//") A4 = 1, parent directory specified ("..") A3 = 1, current directory specified (".") A2 = 1, explicit directory specified A1 = 1, filename specified A0 = 1, extension specified OUT, if call failed: Fc = 1 A = error code: RC_IVF ($17), invalid filename RC_EOF ($09), blank filename RC_BAD ($04), bad parameters Registers changed after return: ......HL/IXIY same AFBCDE../.... different
Notes
The routine does not process wildcards *, ? and //, but passes them to the output buffer.
.. is expanded to parent directory
. or no directory is expanded to current directory.
Bugs
If the source is in segment 2 and B=0 then problems may occur (but not for extended address). If the source is in segment 3 and BHL as extended pointer then this call will also fail.
Related calls
GN_Esa, read & write to filename segments
GN_Fcm, compress a filename
GN_Opw, Open wildcard handler
GN_Pfs, parse filename segment
GN_Prs, parse filename
GN_Wcl, close wildcard handle
GN_Wfn, fetch next match for wildcard string (handle)
GN_Wsm, match filename segment to wildcard string