Hardware manual
sysZone = v // Patch my program’s version of the static
//Read in the system font again:
let s = OpenFileFromFp(fpSysFont)
let l = FileLength(s)/2
let f = Allocate(sysZone, l)
Resets(s); ReadBlock(s, f, l); Closes(s)
sysFont = f+2 // Patch my program’s version of the static
// Note that because os’s version is not patched,
// I cannot call Ws or otherwise default dsp.
//Make a display stream:
dsp = CreateDisplayStream(6, Allocate(sysZone, 4000), 4000, sysFont)
ShowDisplayStream(dsp, DSalone)
...
3.14. Events
The operating system reserves a small communication region in which programs may record various things.
The intended use for this region is the recording of events by one program that deserve attention by
another. The Executive cooperates in invoking programs to deal with events posted in the communication
region.
Events are recorded sequentially in a table pointed to by the static EventVector. The total length of the
table, available as EventVector!-1, must not be exceeded by any program generating events. Each event
entry (structure EVM; see SysDefs.d) contains a header that specifies the type and length of the entry
(length is in words and includes header size); following the header comes type-specific data (eventData).
A zero word terminates the event table.
At present, events are defined for:
eventBooted The operating system has just been booted.
eventAboutToDie The operating system is about to be flushed, probably to run a
diagnostic.
eventInstall The operating system is to be re-installed. (This event need only
be used by the Executive "Install" command.)
eventRFC A Request For Connection packet arrived. The event data is:
Connection ID (2 words), RFC Destination Port (3 words), RFC
Source Port (3 words) and Connection Port (3 words).
eventCallSubsys When the next "finish" occurs, the system will try to execute the
file whose name is given as a Bcpl string in the eventData block.
If the eventData block has length 0, the system will invoke the
copy of Ftp that is squirreled away inside Sys.Boot. Because a
"finish" is performed right after the system is bootstrapped, it is
possible to InLd Sys.Boot with a message that contains an
eventCallSubsys, and thereby to invoke an arbitrary program.
See the next section for a description of InLd.
eventInLd Whenever the next "finish" occurs, the system will call
InLd(eventData, eventData). This suggests that the first words
of event data should be an FPRD for a file you wish to InLd.
Alto Operating System May 5, 1980 20
For Xerox Internal Use Only -- December 15, 1980










