GN_Esa, Read & write to filename segments
Register parameters
RST 20H, DEFW $5E09
IN: A = manipulator command A7: 1 = write, 0 read A0: 1 = extension, 0 = name HL/DE = filename and buffer pointers A7 = 0 (reading): HL = filename, DE = buffer A7 = 1 (writing): HL = new segment, DE = buffer B = segment number (+/- 64) Positive indexes start at the device name (B=0). Negative indexes start at the filename (B=255,-1). C = Limit of buffer space to use (only relevant for writing). C should not be zero. A7 = 0 (reading):OUT, if call successful: Fc = 0 OUT, if call failed: Fc = 1 A = error code: RC_IVF ($17), bad filename Registers changed after return: ..BCDEHL/IXIY same AF....../.... different A7 = 1 (writing):OUT, if call successful: Fc = 0 B = number of filename segments returned C = number of characters returned DE = indexes terminating null of filename OUT, if call failed: Fc = 1 Registers changed after return: ......HL/IXIY same AFBCDE../.... different
Notes
To write a segment a valid filename must be placed in the buffer pointed to by DE and the replacement segment is point to by HL. If the new segment is an extension then the first three characters are used.
Bugs
Unreliable with small filenames.
Related calls
GN_Fcm, compress a filename
GN_Fex, expand 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