GN_Fcm, Compress a filename

Register parameters

RST 20H, DEFW $4E09
 IN:
     BHL = source pointer
     HL = 0, not allowed
     HL = 1, not allowed
     HL = 2, not allowed
     String should be terminated by a control character
     (HL > 255, B = 0 means local pointer)

     DE = destination (local) pointer
          0: result to stream IX handle
          1: result to filter IX handle
          > 255: place string at (DE)
     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

OUT, if call failed:
     Fc = 1
     A = error code:
          RC_BAD ($04), bad parameters, fatal error

Registers changed after return:
     ......HL/IXIY same
     AFBCDE../.... different

Notes

If the filename cannot be reproduced in the space available, ie. C(in), then on exit C =1, B = 0 and the expansion buffer (stream or filter) will be given a NULL. Setting C(in) = 18 will guarantee the return of a filename and extension.

Bugs

If the source is in segment 2 then problems may occur.

Related calls

GN_Esa, read & write to filename segments
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