Hardware manual
DoubleAdd(a, b) The parameters a and b each point to 2-word double-precision
numbers. DoubleAdd does a_a+b. Note that subtraction can
be achieved by adding the two’s complement; the two’s
complement is the one’s complement (logical negation) plus 1.
EnableInterrupts() Enables Alto interrupt system.
DisableInterrupts() Disables interrupt system. Returns true if interrupts were on.
StartIO(ac0) Executes the SIO emulator instruction with its argument in ac0.
Thus StartIO(#100000) will boot the Alto if it has an Ethernet
interface.
Idle() This procedure is called whenever the operating system is
waiting for something to happen (e.g., a keyboard character to be
struck, or a disk transfer to complete). The static lvIdle points to
the operating-system copy of the procedure variable so that
programmers may install their own idle procedures by executing
"@lvIdle = MyIdle".
Timer(tv) Reads the 32-bit millisecond timer into tv!0 and tv!1. Returns
tv!1 as its value.
ReadCalendar(dv) Reads the current date-and-time (32 bits, with a grain of 1
second) into dv!0 and dv!1. Returns dv as its value.
(Subroutines for converting date-and-time into more useful
formats for human consumption are available. See subroutine
package documentation, under Time.)
SetCalendar(dv) Sets the current date-and-time from dv!0 and dv!1. (Normally it
should not be necessary to do this, as the time is set when the
operating system is booted and has an invalid time. Thereafter,
the timer facilities in the operating system maintain the current
time.)
EnumerateFp(proc) For every file pointer saved by the system (e.g., fpComCm,
fpRemCm, etc.), call proc(fp).
CallSwat(s1, s2) This function invokes an explicit "call" on Swat. Either of the
arguments that appears to be a Bcpl string will be printed out by
Swat.
3.10.1. Routines for Manipulating Bcpl Frames
The following routines ease massaging Bcpl frames for various clever purposes such as coroutine linkages.
See section 4.7 for a description of the data structures involved.
FrameSize(proc) Returns the size of the frame required by proc.
MyFrame() Returns the address of the current frame.
CallersFrame(f) Returns the address of the frame that "called" the frame f (if f is
omitted, the current frame is used).
FramesCaller(f) Returns the address to which the caller of frame f sent control,
provided that he made the call with a normal instruction (jsrii,
jsris). If error, returns 0.
Alto Operating System May 5, 1980 15
For Xerox Internal Use Only -- December 15, 1980










