The completeness of the simulation is described below. Many
options of the OS/VS services which do not have meaning
under Gnosis are ignored. Options which cannot be simulated
will usually cause the SVC to be treated as an unsupported
operation, which will result in the domain keeper for the
associated program to be invoked, as if the SVC were an
invalid operation. The domain keeper may implement the requested
function, or may be a debugging tool for the application
programmer.
The implementation of the OS simulator is incomplete. Many
unanticipated events can cause the simulator to abort its
own execution. (p3,osbroke)
describes what happens in those situations.
SVC 1 - WAIT
The ECB= option of the WAIT macro is supported. The ECBLIST=
option is not supported. No distinction is made between
LONG=YES, and LONG=NO. The event number parameter is always
treated as if it were specified as 1.
SVC 2 - POST
POST is fully supported. Bit 0 of the ECB is set to 0,
bit 1 is set to 1, and bits 8-31 are set to the specified
completion code.
SVC 3 - EXIT
The exit SVC is used to return to the OS supervisor after
a user specified exit routine has been invoked. The exit
SVC may also be invoked by a program after the completion
of its execution. In the latter case, the request is not
processed by the OS simulator.
SVC 4 - GETMAIN
All options of GETMAIN are supported, except for SUBPOOL
(which is ignored) and BNDRY (all requests are doubleword
aligned). It is likely that BNDRY=PAGE and BNDRY=SEGMENT
will be supported sometime.
SVC 5 - FREEMAIN
All options of FREEMAIN are supported, except for SUBPOOL,
which is ignored.
SVC 6 - LINK
The temporary implementation supports the PL/I library
and a pre-defined, application program dependent list of
entry points. See (osdload) for further
details.
SVC 7 - XCTL
The temporary implementation supports the PL/I library
and a pre-defined, application program dependent list of
entry points. See (osdload) for further
details.
SVC 8 - LOAD
The temporary implementation supports the PL/I library
and a pre-defined, application program dependent list of
entry points. See (osdload) for further
details.
SVC 9 - DELETE
The temporary implementation supports the PL/I library
and a pre-defined, application program dependent list of
entry points. See (osdload) for further
details.
SVC 10 - GETMAIN/FREEMAIN
All options are supported, except for SUBPOOL, which
is ignored.
SVC 11 - TIME (supported by CLOCK
domain (p2,clock))
All options are supported. The error return will never
be invoked, since Gnosis will not run on a machine with
a broken clock.
SVC 14 - SPIE
All options of SPIE are supported.
SVC 18 - FIND and BUILDL
The subset of options implemented are those required
to enable the compilers to access MACRO libraries. Other
functions will work but most exotic functions do not.
BLDL
The fields filled in by the BLDL macro are described
as used by the simulator
FF number of entries in the list - used LL length of
a list entry (one per entry) - used NAME Member or alias
name - only member names supported TTR Relative track and
record of member - filled in with address of the NAME K
concatenation number - always zero Z Library indicator
- always zero C Type of entry - always zero number
of TTRN fields- always zero length of user data - used
USER DATA as supplied by the STOW macro
The BLDL list as supplied by the BLDL macro may not be used
with ATTACH, LINK, LOAD, or XCTL macros.
FIND
Find options that are supported
D member name - fully supported C relative address- only
supported if used in conjunction with BLDL. Problem program
supplied values (from NOTE) will cause unpredictable results.
SVC 19 - OPEN
OPEN supports terminals and files with PS, BSAM, BDAM,
BPAM, ISAM, or QSAM organization
In order to completely understand the limitations of OPEN
the DCB options that are not supported are included here.
These options deal mostly with modifications of system
options for the purpose of optimization. Since this optimization
has no meaning in the Gnosis environment, these options
are ignored.
INPUT - dataset is positioned at the beginning INOUT
- dataset is positioned at the beginning OUTPUT - dataset
is positioned at the beginning OUTIN - dataset is positioned
at the beginning RDBACK - not supported UPDAT - dataset
is positioned at the beginning LEAVE - not supported REREAD
- not supported DISP - DISP value is always from the FILEDEF
OPEN type J is supported
The following DCB options are ignored. Note that this does
not mean that the functions associated with the ignored
options don't work, only that the simulator does not check
the option specification.
BFALN, BFTEK, BUFL, HIARCHY, LIMCT, OPTCD = (A, E, W,
C, L assumed, Q, T, U, Z, B, H, I, R, Y), MSHI, MSWA, SMSI,
SMSW, MACRF = (A, C, P, D), EXLST = (only type 5 and 7 are
processed), RECFM = (A, M, T, D), BUFOFF, DEVD, NTM, EROPT
SVC 20 - CLOSE
Options described
REREAD - assumed unless LEAVE specified, with TYPE =
T LEAVE - supported, with TYPE = T REWIND - ignored DISP
- ignored
TYPE T - supported
SVC 21 - STOW
STOW is supported completely except that there is no
support for ALIASES. There is a non-standard use of STOW
to create new record keepers when the first write takes
place after a STOW. The non-standard usage is necessary
to get to the simulation domain to create the record keeper
and set up the control blocks.
The stow list fields as used by the simulator are described
here
NAME - member name only TTR - ignored C - only the
number of user data bytes is used
Action codes
A - Add, all entries are added as members C - Change,
fully supported D - Delete, fully supported R - Rename,
fully supported
SVC 22 - OPENJ (see OPEN
for restrictions)
SVC 23 - TCLOSE (see CLOSE for restrictions)
SVC 24 - DEVTYPE (skeleton)
SVC 27 - OBTAIN
Only option code X'C1' is supported. The RECFM, LRECL
and BLOCKSIZE are returned. All other fields are zeroed.
SVC 35 - WTO/WTOR
The Routing codes and Descriptors are ignored. All messages
are directed to the standard output terminal. It is not
clear what will happen if multi-line messages are requested.
SVC 40 - EXTRACT (as nop)
SVC 46 - TTIMER
All options of TTIMER are supported to the extent permitted
by STIMER (i.e. REAL time intervals are not yet supported).
The ERRET exit will never be invoked, since Gnosis operation
presumes operational clocks.
SVC 47 - STIMER
The only useful form of STIMER which is supported is
to set a STIMER value using the TUNITVL, BINTVL, or MICVL
time expression, and to test the timer at some subsequent
time using TTIMER. The task timer exit routine is processed,
but the code which would invoke it upon expiration of the
timer interval has not been implemented.
The WAIT option is not currently supported, but will be during
2Q82. Support for REAL time intervals and the DINTVL, MIC,
and TOD time expressions will be implemented when required.
The ERRRET exit will never be invoked, since Gnosis operation
presumes operational clocks.
SVC 55 - EOV (nonstandard usage)
This SVC is an internal access method SVC. It is used
by the OS simulator at End of Data to determine if there
are concatenated files.
SVC 60 - ESTAE, STAE
SVC 64 - READJFCB
The JFCB is copied into the address found in the DCB
exit list.
SVC 68 - SYNAD
A simplified message is returned in a dynamic storage
area. Only BSAM is supported (used by FTNH).
SVC 69 - BSP
BSP is supported with fewer OS restrictions. BSP may
be used with any BSAM file regardless of other macros in
use. Co-routines are treated as SYSIN and SYSOUT with BSP
ignored.
SVC 93 - TGET/TPUT
Data is transmitted to/from the default SYSIN/SYSOUT
ports.
On input, (TGET), the buffer size is presumed to be 256 bytes.
All operations are performed synchronously, as if WAIT were
specified. Editing is performed as if the ASIS option were
requested. The EDIT and NOWAIT options are ignored. The
return code is always 0, although return code 12 should
be generated if the designated buffer was not large enough
to hold all of the input. LOOSE END: There seems to be no
way to specify end-of-file through this interface, except
perhaps by dummying up /* !?
On output (TPUT), the maximum length buffer is 4096?? bytes.
The EDIT option is supported by removing trailing blanks
and appending a newline character at the end of the line.
(OS/VS also translates all nonprintable characters to printable
characters, but the OS simulator does not, at this time.)
The FULLSCR option is supported by transmitting the specified
buffer to the terminal without modification. TGET always
proceeds as if WAIT and NOHOLD were specified. Since Gnosis
terminals are supported through Tymnet, which is inherently
full duplex, output will be received at the terminal as
if BREAKIN were specified. The HIGHP, LOWP, ASID, ASIDLOC,
and USERIDL options are ignored.
If the terminal has been disconnected, the request will wait
until the user reconnects, assuming the terminal port had
a zapper module associated with it. There is currently no
provision for making information about when a terminal disconnects
available to the user through this particular simulation
interface. IF the terminal co-routine has been destroyed,
the current implementation will continue to accept requests
and to read and write to the non existant terminal.