Some programs crash by calling the error key (p2,errkey). Today this stops the kernel.
Some programs crash using the Virtual Domain Keeper in the womb. To see if this has happened, log in as SYSADMIN and explore new branches.
Getting the Domain Creator for Primordial Programs
AUXSUBR or COMPFACTS adds a key to an array of keys (called SWOMBLIST) kept by WOMBKEEP and available to SYSTOOL {(p2,systool)}. The SYSTOOL subroutine GETAUX retrieves such a key given the index into SWOMBLIST.
If the subsystem is initiated by AUXSUBR then some of the primordial code of that subsystem is executed by a domain whose key is placed in SWOMBLIST. Slot 14 of the node for a AUXSUBR program holds the domain key.
If the subsystem is initiated by COMPFACTS then a factory is created for the subsystem and the builder's key for that factory is placed in slot 14 of a node whose key is deposited in SWOMBLIST.
Getting a key from SWOMBLIST
To Get key i from SWOMBLIST while in SYSTOOL, put i at location WORK thus: "work;x4;i<cr>", put WORK in R2 thus: "2r/work<cr>", put 3 in R14 thus: "0er/3<cr>" and then go to GETAUX thus: "getaux;g". The key will be placed in slot K3.
The CMS file "FIRST TEST" on the Gnosis application's disk can be used to test most modifications to the systems installed by the "FIRST CMDFILE" method {(first)}. FIRST TEST should be run in a pristine context such as created by the "create test" command of the context switcher {(p2,cswitchc)}. You must provide a key called "TYMNET.GNOSIS" which leads to a CMS machine like that of the CMS user GNOSIS. The real "TYMNET.GNOSIS" will work.
We have noted before that one kernel could support two or more "worlds" simultaneously. Let one of these worlds be the world in which we test the new code. How can we arrange that the old productions world is safe? There are several ways to slice the cake.
Let's first explore the idea of disjoint disk packs and range keys.
There are two problems to discuss here: how to introduce the new world, and how the worlds interact.
This does not come to grips with the question: "Where are the primordial pages and nodes whose CDA's are in no range?" I think that those pages and nodes are now in limbo, shuffling between swap areas. If the new packs had their own swap areas we would also have to ensure that there was no duplicate "primordial material".
I presume that there would be only one external migrator. The BWAIT multiplexor would need its own primordial BWAIT key. The Tymnet adaptor are perhaps need its own base key. This might be synthetic. There are perhaps a few more issues here.
It could be a powerful tool for a debugger in the real world to acquire (somehow) a key to SYSNODE in the test world. I can see no danger here except for real world domains becoming blocked on dismounted material. This is by no means fatal.
Here is a list of the primary keys and how the interpreter would provide them:
{ni}DECONGESTER_TOOL
MIGRATOR CAPABILITY
Charge Set Tool; Depends
Raw I/O keys
The device allocator server could subscribe to the services of the real allocator.