Package Handling
Z88 CamelForth v3.00 now provides facilities for accessing
the new Packages facilities introduced with Installer v2.00.
Basic Package Information
The following words allow you to determine whether the packages system
is available on the Z88, which packages are available and details of their
versions and resource usage. You should read and understand the full
Packages documentation on the technical
information page before attempting to use these words.
- PKGS? ( -- flag )
- Returns true if the packages system is available on this Z88. If not, no
further package words should be executed.
- AYT? ( pkgid -- ver | 0 )
- Returns the version number of the package if available, or zero if not.
- PKGINF ( pkgid -- 0-addr Dmem hdls res )
- Returns the name, memory, handle and other resource usage of the package
(invalid if package not installed).
- PID ( -- pid )
- Returns the process ID of the currently running application.
Package Calls
These words are provided to allow C-style package calls (as exported by
z88dk packages, and soon by CamelForth packages) to be easily used.
Examples of the use of PKGCALL can be seen in the support
files for currently available packages, detailed below.
- PKGCALL ( ressize nparams minver reason callid "name" -- )
- Defines a word called name that will, when executed, make the
specified package call. Reason is a reason code passed in A (required
for TCP/IP calls, but otherwise rarely used), minver is the minimum
version number of the package providing the call, nparams is the
number of arguments provided on the data stack (in cells), and ressize
is the size of the result provided, in bytes (returned in DEHL). Double-sized
arguments should be presented with the low-order cell above the high-order
cell on the stack (this is the other way around to Forth's usage). Results are
automatically placed in the correct order on the stack.
- (RC_PNF) ( callid -- )
- This is a deferred word, executed whenever a package call fails because
the required package (of the desired version number) cannot be located. You
can either request the user to restore access to the package and continue (the
call will then be retried and execution continues as normal) or throw an
exception.
- PKGMIA ( callid -- )
- The default action for (RC_PNF). This adds 512 to the
package ID, negates the result and THROWs it as an exception.
- (PKGERR) ( rc -- )
- Another deferred word, executed if a C-style package returns an error
other than RC_PNF (this is unlikely; most C-style packages report errors
in their result codes).
- PKGERR ( rc -- )
- The default action for (PKGERR). This adds 256 to the
error code, negates the result and THROWs it as an exception (as for any
normal OZ error).
Supported Packages
Support is already provided for two packages; the TCP/IP package provided
with the ZSock application, and the MIMEtools package that comes with
the UUtools popdown.
More about CamelForth
Back to the Z88 home
page