| Z88 Developers' Notes | ||
|---|---|---|
| Contents | Contents of System Calls | |
GN_Fex, expand a filename
RST 20H, DEFW $5009
IN:
BHL = source pointer (HL>255, B=0 means local pointer).OUT, if call successful:
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
Fc = 0OUT, if call failed:
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
Fc = 1Registers changed after return:
A = error code:
RC_IVF ($17), invalid filename
RC_EOF ($09), blank filename
RC_BAD ($04), bad parameters
......HL/IXIY sameNotes:
AFBCDE../.... different
The routine does not process wildcards *, ? and //, but passes them to the output buffer.Bugs:
.. is expanded to parent directory
. or no directory is expanded to current directory.
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