1. XCALL BUTTED,STRING added. Removes all characters from STRING except A-Z and 0-9.
2. XCALL CHKONE,A$ added. (MAP1 A$,S,1) Checks to see if there is any pending keyboard input. If so, returns "1" (but leaves the character in the input buffer to be input by another operation.) If no character available, returns "0".
3. XCALL JOBTRM,JOBNAM,JOBTRM,JOBTDV {,CTLNAM,CTLTRM,CTLTDV} added. (All parameters S,6 or larger.) Returns jobname, trmdef name, and terminal driver name. If last 3 parameters specified and running under control of PolyShell, returns info corresponding to parent job.
4. XCALL INCOM,NAME,LABEL,OPCODE,STPOS,LENGTH,FLAG added.
NAME,S,10 ! name of storage module (only first 6 chars sig.)
LABEL <any type> ! variable to send from or receive into
OPCODE <numeric> ! 0=read, 1=write
STPOS <numeric> ! starting offset into module (1 relative)
LENGTH <numeric> ! # of bytes to transfer
INCOM is a variation on the XCALL COMMON concept, used for storing information in the equivalent of user memory to be shared between programs run by the one user. The main differences with COMMON are that read is always non-destructive, and you can read and write to portions of the module identified by starting position and size.
Under AMOS, the NAME parameter was meant to reference an actual module loaded into user memory (name.ext). Under A-Shell, there is no need to load the module, as it is created automatically (size 1024 bytes) when first accessed. (Using LOAD.LIT on the module NAME will clear the module contents in memory.)