--- freem/doc/freem.texi 2025/05/05 12:55:17 1.47 +++ freem/doc/freem.texi 2025/05/06 01:38:21 1.53 @@ -100,7 +100,6 @@ This is the official manual for the Free * Accessing FreeM from C Programs:: How to use the mlib interface. * FreeM Administrator:: The fmadm system manager tool. -* FreeM Legacy Utilities:: FreeM legacy system manager utilities. * FreeM VIEW Commands and Functions:: Getting and setting info about FreeM internals. * Implementation Limits:: FreeM limitations. * US-ASCII Character Set:: The US-ASCII character set. @@ -1115,7 +1114,7 @@ See @emph{https://wiki.osdev.org/Target_ * $ZLSD():: Compute Levenshtein distance between two arguments. * $ZM():: Unknown. * $ZNAME():: Unknown. -* $ZNEXT():: Unknown. +* $ZNEXT():: Return glvn of next numeric subscript following given glvn. * $ZORDER():: Unknown. * $ZPIECE():: Unknown. * $ZPREVIOUS():: Unknown. @@ -1313,6 +1312,28 @@ The optional second argument indicates t @cindex intrinsic functions, $NEXT Deprecated. Use @code{$ORDER} instead. +Returns the next numeric subscript of the specified glvn. + +@emph{Syntax} + +@example +$NEXT(@emph{glvn}) +@end example + +@emph{Example} + +Assume the following array: + +@example +^foo(1)="" +^foo(2)="" +@end example + +And the following code: + +@example + W $ZNEXT(^foo(1)) ; => 2 +@end example @node $ORDER() @section $ORDER @@ -1713,6 +1734,8 @@ Returns the Levenshtein distance between @cindex intrinsic functions, $ZM @cindex intrinsic functions, implementation-specific +Purpose unknown. + @node $ZNAME() @section $ZNAME @cindex $ZNAME @@ -1721,13 +1744,38 @@ Returns the Levenshtein distance between Purpose unknown. +This function relies on the value of @code{$VIEW(71)} being @code{0} (this is not the default). + @node $ZNEXT() @section $ZNEXT @cindex $ZNEXT @cindex intrinsic functions, $ZNEXT @cindex intrinsic functions, implementation-specific -Purpose unknown. +Returns a fully-formed variable reference of the next numeric subscript of the specified glvn. + +@emph{Syntax} + +@example +$ZNEXT(@emph{glvn}) +@end example + +@emph{Example} + +Assume the following array: + +@example +^foo(1)="" +^foo(2)="" +@end example + +And the following code: + +@example + W $ZNEXT(^foo(1)) ; => ^foo(2) +@end example + +This function relies on the value of @code{$VIEW(71)} being @code{1} (this is the default). @node $ZORDER() @section $ZORDER @@ -2045,21 +2093,21 @@ Identical to @ref{$TRANSLATE()}, except * WRITE:: Write output to current input/output device. * XECUTE:: Interpret string as M code. * ZASSERT:: Raise error when a conditional expression evaluates @emph{false}. -* ZBREAK:: Unknown. +* ZBREAK:: Enable/disable ZBREAK mode. * ZCONST:: Define a constant that cannot be altered after initial definition. -* ZGO:: Unknown. -* ZHALT:: Unknown. +* ZGOTO:: @code{GOTO} with @code{BREAK} control. +* ZHALT:: Exit FreeM job with return value. * ZINSERT:: Insert code into routine buffer. -* ZJOB:: Invokes a job, ignoring any timeouts. +* ZJOB:: Invoke job, ignoring any timeouts. * ZLOAD:: Load routine into routine buffer. * ZMAP:: Map a global name to a non-default namespace. * ZNEW:: Unknown. * ZPRINT:: Print contents of routine buffer. -* ZQUIT:: Quits multiple stack levels at once. +* ZQUIT:: Quit multiple stack levels at once. * ZREMOVE:: Remove code from routine buffer. * ZSAVE:: Save routine buffer to disk. * ZTHROW:: Programmatically raise an error condition. -* ZTRAP:: Unknown. +* ZTRAP:: Raise a FreeM error. * ZUNMAP:: Remove a mapping of a global to a non-default namespace. * ZWATCH:: Enable or disable watchpoints, or set or clear watchpoints on specified globals, locals, or structured system variables. * ZWITH:: Set prefix for future variable references. @@ -3365,6 +3413,14 @@ DEFAULT.USER> ZASSERT:DEBUG 1=0 @cindex commands, non-standard @emph{FreeM Extension} +Sets or clears the @code{ZBREAK} flag@footnote{NOTE: FreeM team needs to investigate how @code{zbreakon} and @code{zbflag} affect program execution.}, based on the result of evaluating @emph{tvexpr}. + +@emph{Syntax} + +@example +ZBREAK @emph{tvexpr} +@end example + @node ZCONST @section ZCONST @cindex ZCONST @@ -3382,14 +3438,30 @@ Constants must only be locals, and globa @code{ZCONST@emph{:postcondition} @emph{mref1}=@emph{initial-value1},...,@emph{mrefN}=@emph{initial-valueN}} @end example -@node ZGO -@section ZGO -@cindex ZGO -@cindex commands, ZGO +@node ZGOTO +@section ZGOTO +@cindex ZGOTO +@cindex commands, ZGOTO @cindex commands, implementation-specific @cindex commands, non-standard @emph{FreeM Extension} +In its argumented form, enables @code{BREAK} mode and branches unconditionally to @emph{entryref}. + +@emph{Syntax} + +@example +ZGOTO @emph{entryref} +@end example + +In its argumented form, resumes execution after a @code{BREAK}. + +@emph{Syntax} + +@example +ZGOTO +@end example + @node ZHALT @section ZHALT @cindex ZHALT @@ -3398,6 +3470,22 @@ Constants must only be locals, and globa @cindex commands, non-standard @emph{FreeM Extension} +In its single-argumented form, @code{ZHALT} command is used to exit the FreeM process with a specific return value @emph{intexpr}. + +@emph{Syntax} + +@example +ZHALT @emph{intexpr} +@end example + +In its argumentless form, @code{ZHALT} is synonymous with @code{HALT}. + +@emph{Syntax} + +@example +ZHALT +@end example + @node ZINSERT @section ZINSERT @cindex ZINSERT @@ -3539,6 +3627,8 @@ Raises an error condition as long as the @cindex commands, non-standard @emph{FreeM Extension} +Synonymous with @ref{ZTHROW}. + @node ZUNMAP @section ZUNMAP @cindex ZUNMAP @@ -6400,8 +6490,8 @@ int main(int argc, char **argv, char **e @cindex fmadm The @code{fmadm} utility is the preferred method of managing a FreeM installation, and will eventually replace all of the existing utilities. -Unlike the existing, legacy utilities, @code{fmadm} presents a consistent, simple interface for all FreeM management tasks, and is namespace-aware. -This appendix will document each @code{fmadm} facility as it is implemented, until all of the legacy utilities have been replaced. +In support of FreeM operators, @code{fmadm} presents a consistent, simple interface for all FreeM management tasks, and is namespace-aware. +This appendix will document each @code{fmadm} facility as it is implemented. The @code{fmadm} utility's functions all follow the below, consistent syntax: @@ -6495,43 +6585,6 @@ Supported actions are @code{list} and @c @end table -@node FreeM Legacy Utilities -@appendix FreeM Legacy Utilities -@cindex utilities, legacy - -@section Global Compactor (gcompact) -@cindex utilities, legacy, gcompact - -Compacts the specified global in place. - -@emph{Syntax} - -@example -gcompact @emph{/path/to/global/file} -@end example - -@section Block Examiner (gfix) -@cindex utilities, gfix - -The @emph{gfix} interactive utility program permits navigation of the B-tree structure of the specified global a block at a time. - -@emph{Syntax} - -@example -gfix @emph{} -@end example - -@section Global Repair Tool (grestore) -@cindex utilities, legacy, grestore - -This utility will fix problems with the specified global. - -@emph{Syntax} - -@example -grestore @emph{} -@end example - @node FreeM VIEW Commands and Functions @appendix FreeM VIEW Commands and Functions