BackbuttonServer Library Entrypoint

 

A Server Library Entrypoint occupies 1 Stack Cell.

The Compiler generates a special Tag 5 Untouched Data Descriptor for each Entrypoint, rather than a PCW for a Procedure. 

The Untouched Data Descriptor references the Library Template of the Library which owns the EntryPoint.

Tag 5 - Library Entrypoint Untouched Data Descriptor
Field Name Description
[42:3] SizeF Descriptor Element Size is set to 7, which is an invalid number and causes a Hardware Interrupt.
[39:4] L_BitsF The MCP uses this field with these values,
CLBitsV = 4  Connection Library Object
LBitsV = 8 Server Library Entrypoint
These fields overlap the fields below used by the Compilers.
[39:1] L_LibEntryPointF 1 = Server Library Entrypoint.
[38:1] L_ConnLibEntryPointF 1 = Connection Library Entrypoint.
[35:16] L_TemplateInxF The Index of the Entrypoint Object Entry in the Library Template.
[19:1] L_ObjOffSignF Set if a Negative Library Offset.
[18:19] L_ObjOffsetF Offset in the Stack to the Library Template Descriptor. 

A call on an Entrypoint is generated as a normal MKST,NAMC,ENTR sequence, where the NAMC address is the stack location of the special Tag 5 Descriptor. An Hardware Interrupt occurs on the first call to the Entrypoint, due to the invalid SZF field. 

The MCP overwrites the Descriptor with an SIRW to the Library PCW and subsequent calls function as a normal Procedure call. 

An EntryPoint Name may be set explicitly using the ActualName phrase in Algol, or it is derived from the Name of the Procedure, or the SetActualName Intrinsic can be used at RunTime. In all cases, the Library Linkage of the EntryPoint is Case Sensitive. If the ActualName is specified as "LibProcZ", then it will not match an Exported Object called "LIBPROCZ".