This is the original command language. See (ncs) for a newer available command system. For older ideas about command languages see (p2,gnocli). DDT {(p2,ddt)} also provides a facility to directly execute commands.
New User Names and New Instances of Command Systems
{arcane}The installation of a new user creates an entry in the LUD {(p2,lud)} under the new user name. The start key of that entry will be to the zapper module of the context switcher. All command systems within a context switcher share the same zapper key, and thus most of the time the zapper key in the lud "connects to" one of the command systems.
{spec}See (p2,login) for some ideas about passwords and other things.
Each command system within a context has a distinct directory, meter and guarded space bank. Several other keys unique to the command system include a REGISTRY, FILEDEF and VDKF. The directory of each context has an entry COMMON, which is a subdirectory common to all contexts. It is the only such directory into which keys may be written by the context which is shared between the contexts.
The user name "GNOSIS" is usually added to the system upon big bang. Thus you get to the command language by getting to a Gnosis receptionist {(p2,receptionist)} and identifying yourself as "GNOSIS". The SYSTOOL command "INSTALLUSERS" installs an assembled set of usernames.
SPECIAL KEY NAMES
The key named by SOK6 disappears at the end of the command. Ditto SIK6.
"password" is the password that must be typed (in UPPER case) on the first login to the new LUD name to get the key put into the LUD (11 characters max)
"ludbyte" is a number that is converted to binary which becomes the first byte of the ludstring {(p2,ludformat)}.
"key" is the name of the key that is put into the LUD.
"controlkey" is a key that can be used to change the key in the lud. "KEYCALL controlkey 0 (,newkey)" will change the key in the LUD to newkey. (p2,addlud)
"spacebank" (if present) is the spacebank out of which the circuits will be built. The default is to use the user's command system spacebank.
"meter" {if present} is the meter used for the circuits. The default is to use the user's command system meter.
RETURN CODES
2 - 4 internal errors, see a Gnosis expert.
For a complete description of the parameters see the AUXFILE command (p3,auxfile).
RETURN CODES
Directory-name is the key to a Gnosis data structure of the type SEGMENT or RECORD keeper. For the "GET" operation, AUXFILE creates a fresh segement. "circuit" is the key to a circuit building capability {(p2,getcircuit)} and "sysno" is the Tymnet host number of the circuit {specified as a decimal number}. Many users will have a circuit key in their directory when they are joined to Gnosis. This key is to his or her CMS userid and is in the form of TYMNET.userid. The type parameter (SEGMENT^RECORD) is required on a SEND operation for consistency only, the type of the structure is determined from the key. Segments are of the File Transfer Segment format {(p2,record-file-format), compatible with the bootstrap loader}. If the records in the file are larger than 4091 bytes then the record collection built for type RECORD must be accessed via the OS simulator.
FILENAME FILETYPE FILEMODE and the rest of the file specifications are CMS File specifications and specify the exact CMS file involved in the transfer. "*" is not allowed in the filemode field. Unlike other situations, the FILEMODE must be specified as two characters. A file sent to CMS will replace one that already exists.
The project string is almost always required (by the CMS host) and can only be omitted if the USERID is known to be "disconnected". There is currently no way to specify multiple lines in the project field through the command system.
CAUTION. There is one known way to cause this transfer to "hang up". If the RECFM specification is not correct the CMS host may abort the transfer (such as sending a variable length file with RECFM F). The file transfer mechanism does not recognize this abort and the transfer will stop. Forcing the CMS USERID off breaks the circuit and terminates the transfer.
A second problem that seems to hang the transfer is if a DISK FULL condition occurs while sending a file to CMS.
RETURN CODES - see (p2,auxfail)
RETURN CODES
"ludcontrolkey" is the control key returned by the ADDLUDKY command
"key" is the new key to be added to the LUD. It replaces the key added by the ADDLUDKY command.
"spacebank" "meter" These keys are used by the receptionist to build circuits. If they are not specified, the directory entries for SPACEBANK and METER will be used.
RETURN CODES
At the end of the command file or after any error reading the command file (including null lines), input will resume from the terminal.
CMDFILE keyname1
RETURN CODES
RETURN CODES
Until a bug in STRCC is fixed this command may not complete if the provided segment is not a segment or is in the wrong format.
RETURN CODES
5 - segment record exceeds 4091 bytes
Format is the format type:
1 for standard byte stream
2 for standard blocked record stream
A DDT is created and installed as the domain keeper of the domain designated by "domainkey". {"Domainkey" may be of the form entrykey.DOMKEY if it is desired to debug the domain whose start key is known as "entrykey" (see LOAD command).} If no operand is specified, a DDT is created for the command system interpreter.
If the DDT command ";t" is given DDT will use the symbol table in the segment whose memory key is in D10 of the domain. If the command "EB;t" is given where "EB" is some upper case EBCDIC string ,then the DDT will retrieve a key from the memory tree that allows it to communicate with the binder product and get the indicated symbol table.
When this DDT is installed you will get a message saying "USE BRANCH c". This means that you may talk to the DDT by switching your terminal to the virtual terminal denoted by branch c. This is done by typing {at any time} escape followed by c and carriage return. To switch back to your command system type escape b return.
If your domain breaks before you explicitly install a DDT on it, a DDT will be created in your behalf anyway. However, in this case you won't necessarily know which branch goes with which domain.
Key 19 of your DDT will be key to the directory of the context where the DEBUG command was issued or the directory where the broken object was built. Typing "0rb;x6;000403c4c4e3" and then "key 19,5,(12)" will result in the key in DDT's slot 12 being placed in the main directory under the name "DDT".
RETURN CODES
RETURN CODES
2 - illegal characters in name
3 - nome too long
DUPLICATE oldkeyname newkeyname
Similarly, if "oldkeyname" is a file transfer segment, it is copied into a new file transfer segment "newkeyname".
No conversion is possible. It is not possible to overlay data in the second structure.
RETURN CODES
The directory key EDITOR is used for the edit. If no such key exists then the EDITF key from the womb or SYS.EDITF is used to create an editor. If a particular editor is desired other than the standard one, the user may provide one and put its start key into the directory with the name EDITOR. The calling conventions for the editor are described in (p2,editor).
RETURN CODES
RETURN CODES
The start key "startkey" was probably generated by the use of the OSFLOAD {(osfload)} command.
The program is given the keys to the current branch of the terminal.
The command system will proceed to use the returned keys as terminal keys. If the returned keys do not behave as terminal keys the command system will acquire new keys to the terminal on another branch.
FACTORY Keyname1 Segment Type [Ordinal] F^S^H0=keyname2 ...F^S^H15=keynameN
"Segment" is the directory name of a binder L-segment factory (LSF) or a file transfer segment containing the .program for the factory. The special string ".fetcher" is recognized and no program is installed; the factory becomes a fetcher factory.
"Type" is a decimal number between 0 - 2**31-1 that becomes the alleged type of the factory
"Ordinal" is a decimal number between 0 - 2**31-1 that becomes the ordinal of the factory (optional, zero assumed)
The starting address of the factory comes from the module {perhaps the assembler's END card}.
"Keyname2" through n are optional keys that are installed in the designated component of the factory with F specifying a factory component and S specifying a sensory component.
keyname1.METERNODE a node key to the meter used to build the factory
keyname1.METER the meter key used to build the factory
keyname1.GUARD the guard for the bank keyname1.SBANK
keyname1.BUILDER the builder key for the factory
A few highlights: The operands are ordered ddname, directory-name, options. Most of the options are familiar, with the exception of FILE (means entry sequence record collection), DIRECTORY (means name sequence record collection) and SEGMENT (a segment in some format), TAPE means a tape, and TERMINAL which means use the terminal support system of the OS simulator (whatever that is).
If &filedefname is specified, the filedef context "filedefname" produced by the NEWFDEF command is used (p3,newfdef), else the default filedef context for this command system is used.
If operands is omitted this is a "filedef define query" operation (a la CMS) and all filedef commands that are active for the context "filedefname" (if present) or the default filedef context are listed with the options that were specified on the FILEDEF command that define the DDNAME.
RETURN CODES
RETURN CODES
KEY (See KEYCALL)
KEYCALL keyname oc (string,k1,.. kn) (RS,Rk1,... Rkn)
oc is a decimal order code in the range 0 - 2**31-1 or the strings KT and KT+n, where n is between 0 and 9.
string is limited to 255 characters and can be specified in several ways. In any of these cases string is translated to upper case and there may be no ","s or ")"s or "="s.
%Aalphabetic data - a character string that is passed as ASCII
%Xhexidecimal data - a character string that is converted to hex and passed (there must be an even number of characters in the string)
keyname - a token that is resolved in the directory, the data portion of the directory entry is passed (0 - (255-length of last subtoken))
NOTE. Commas can normally be used anywhere as a token delimiter but are required after "string" in order to allow for embedded blanks
RS specifies the format of the return string.
%A - treat the return string as ASCII and type on terminal
%X - treat the return string as hexidecimal and type on terminal
keyname - put the returned string in the directory under the given token name as the data portion.
A combination of the above such as %E%Xkeyname, as long as %A does not precede %X or %E and keyname is last.
RETURN CODES
RETURN CODES
LISTFILE token
"Token" may contain wild card designators "*" and "?" and dots ".". If no token is specified "*" is assumed. Contrary to some expectations "*" does not list all of the directory. Only first level names are filtered by "*". "*.*" will select second level names. Note that "*.*" and "*.*." select different names. "*.*." is more restrictive in that it requires a trailing dot (the name specifies a directory).
RETURN CODES
2 - name contains illegal characters
3 - name too long
LOG
RETURN CODES
RETURN CODES
RETURN CODES: none
Like the FACTORY command {(factorycmd)} the .keeper is "VDK" from the current directory. The .program is the code contained in the filetransfer segment. The program is put into a VCSK factory so the OS program need not worry about dynamic storage.
The program must be linkedited on CMS with the GNOFLINK or PLIFLINK exec's. These exec's link in the necessary code {GNOFIBM} to initialize the factory environment.
Section (p2,old-osfactory) describes the environment found by the OS program and the meaning of the ordinal.
OSFACT requestorkey segment type [ordinal] F^S^H0=keyname1 ... F^H^S3=keynameN, F^H^S10=keynameN+1 ... F^H^S15=keynameM
Component 2 is the .program and component 15 is a data key with the first 4 bytes being the starting address of the .program.
Several keys are added to the directory in a subdirectory named "requestorkey.".
requestorkey.GUARD the guard for the bank requestorkey.SBANK
requestorkey.METERNODE the node key for the meter used to build the factory
requestorkey.METER the meter key used to build the factory
requestorkey.BUILDER the builder key for the factory
Startkey is the resultant key to the OS object.
Akt is the alleged key type by which the loaded object will be known. If the program itself exits directly to the caller, it may respond to KT with a different value.
Arg is a key that may be found in cache slot 10 of the OS program.
If &filedefname is specified, then the filedef context "filedefname" (p3,newfdef) is used to resolve filedefs when this program is run. &filedefname must be the last token of the command line.
The OSFLOAD command produces objects that are compatible with the EXECUTE and FORK commands. The source of these objects is OS factory procedure OSFACT. The use of factories does involve the additional step of the OSFACT command to build the factory but the environment in which the program is put is controlled.
Several keys are put into the directory in a subdirectory called "entrykey.".
entrykey.GUARD the guard for the bank entrykey.SBANK
entrykey.METER the new meter used to build the object
entrykey.METERNODE the node key for the new meter entrykey.METER
entrykey.DOMKEY the domain key for the object (only if requestorkey.BUILDER is present in the directory).
entrykey.FILEDEF the OSFD key for the object
If the file was transfered using the CMS GSEND exec, the key to the newly created segment will be placed in the directory as "segmentname".
If the file was transfered using the multifile transfer MGSEND exec, "segmentname" will be ignored, and a message will be printed giving the CMS file name for each file, followed by a prompt requesting the corresponding Gnosis "segmentname".
RETURN CODES
6 out of space
7 disk not ready
8 disk error
RETURN CODES
2 - name1 contains illegal characters
3 - name1 is too long
4 - name2 contains illegal characters
5 - name2 is too long
6 - name2 is not unique
START and STOP will function for meters created by the command system because these meters have been given a meter keeper (p2,mkeeperc) that saves all restart keys. This meter keeper understands order code 0 to mean restart all domains that have trapped to it.
RETURN CODES
The value of the remaining CPU resources is saved in slot 14 of the meter node.
RETURN CODES
RETURN CODES
{arcane}DUMP. - a directory with system dumps
JOURNALIZERNODE - stuff for journalizing. See (p2,journal-node) for details.
PUB. - a name sequence record collection used for inter-user communication.
LUDCONTROL - This is a "MODIFYLUD" key {(p2,modlud)}.
SYS. - a read-only directory of keys available to general users.
{arcane}SYSNODE - the node key to sysnode {(p2,sysnode)}
TYM_username - A circuit building key to tymnet.
WOMBFACIL - a private copy of the primordial womb
DIRECTORY - the command systems first level directory (record keeper)
DOMCRE - a unique domain creator.
FILEDEF - a filedef define key which uses the command systems directory
FILEDEF. - a directory containing the FILEDEF domain keys.
FILEDEFQUERY - a filedef query key which uses the command systems directory
METER - the command system meter key.
METERNODE - a node key to the command system (and everything which runs under it) meter
SPACEBANK - a guarded spacebank for this instance of the command system (user).
SWITCHER - a switcher which creates branches for the command system
VDKF - a fetcher factory to the VDK used by the command system. It creates a branch on the current context.
ZAPPER - a zapper key for the command systems terminal