{Begin SubSec Using Interlisp-D on the Xerox 1108}
{Title Using Interlisp-D on the Xerox 1108}
{Text
Interlisp-D runs on the Xerox 1108 as well as the Xerox 1100 and Xerox 1132. Xerox 1108 configurations supported include the Xerox 8011 (10MB SA1000 disk), Xerox 8012 (29MB SA4000 disk), Xerox 8014 (40MB Quantum disk) with memory sizes from 1 MByte to 1.5 MByte. All versions are completely compatible; It is possible to take {it any} Interlisp-D memory image and move it directly from one machine to another. Xerox 1108 Interlisp-D is implemented solely in microcode and Interlisp; it has no Mesa nor BCPL, and its microcode fits in the standard 4K control store. The Xerox 1108 is booted from the disk by a slightly generalized Initial microcode. It can be installed from floppy disks or from a file server. Any Xerox 8010 workstation with sufficient memory and a Pilot Logical Volume with approximately 12000 pages can run Interlisp-D, without disturbing Mesa or Star.
{Begin SubSec Installing Interlisp-D with Othello}
{Title Installing Interlisp-D with Othello}
{Text
Othello is the Mesa development environment utility for managing Pilot Volumes as documented in the "Mesa User’s Guide" (which can be obtained from the Xerox Office Systems Division). Othello can be used to install Interlisp-D.
You must first start by booting the Othello utility on your Xerox 1108. To boot (start) a Xerox 1108, locate the maintenance panel under the floppy drive. Next to the red numbers you will find two buttons, labelled "B Reset" and "Alt B". Press the left boot button, and wait about a minute while diagnostics run until the installed boot program appears. If you want to skip over diagnostics you can do an "Alt-Boot-1", otherwise known as a "One Boot". This is done by pressing both buttons, then releasing the left button. The lights will cycle from 1 to 10 until you let go of the button: these are the boot options. To boot from the hard disk without diagnostics release the right button when 0001 is displayed by the maintenance panel lights.
The program you start may be Othello, Star, Tajo or nothing. If you don’t get Othello from the hard disk, you may be able to boot Othello from the Ethernet. Try an "Alt-Boot-3" -- i.e., press both buttons, release left button, wait until the lights show 0003, and then release the right button. After a few minutes, you should be in Othello. If you cannot boot from the Ethernet you will need an Othello 10.0 bootable floppy. Insert it into your floppy drive, label side up, close the drive panel, and do an "Alt-Boot-2" (press both buttons, release left button, wait until the lights show 0002, and then release the right button).
Othello will display a herald, such as:
{lispcode
Othello 10.0 of 1-Mar-83 18:06:30 PST
Processor = 0AA001EE1H = 25200017347B = 2-852-134-631
Memory size = 1536K bytes = 768K words
> Online
Drive name: RD0}
Type a "carriage return" to the Online command after RD0. If you have never installed Lisp on this machine before, you will need to reconfigure the disk into logical volumes with a Lisp volume sufficient to hold Interlisp-D. Use the "Login" command to log in with your name and password:
{lispcode
> Login
User: Masinter.PA
Password: ******}
The command:
> @[phylum]<Lisp>Fugue>PartitionLisp.othello
will configure the disk into two logical volumes, one of 800 pages called Othello, and the rest of the disk in the second volume, Lisp. This command file will also install Othello into the first volume, since partitioning erases the disk.
The command file
> @[phylum]<Lisp>Fugue>InstallLisp.othello
will install [phylum]<Lisp>Fugue>Lisp.SYSOUT onto the Lisp volume and start it. To boot Mesa/Star which was previously installed for booting, do a "One Boot" as described above. From inside Lisp, the (LOGOUT) function will automatically cause a "One Boot", so that it is possible to switch back and forth between Mesa and Lisp without touching the boot button.
To remove Lisp from your disk use Othello to reinstall a normal [iris|rain]<mesa>10.0>basics>SAx000Initial.db and reinstall diagnostics from
[iris|rain]<mesa>10.0>basics>Moonboot.db.
The command
> @[Phylum]<Lisp>Fugue>InstallDemo.othello
is identical to InstallLisp.othello, except that it fetches DEMO.SYSOUT instead of LISP.SYSOUT. To fetch other SYSOUT files of your own making or from file servers other than Phylum, you can edit the .othello command file using your favorite text editor as appropriate. (Please note that only SYSOUTs made from the most recent versions on [phylum]<LispCore>Fugue> can be installed on a Xerox 1108. Chorus or older Fugue versions WILL NOT WORK.)
Note: Othello network communication is based on PUPFTP. Presently the 3Mb to 10Mb Gateways will forward PUPs only to explicitly registered Xerox 1108s. A network adminstrator can Xerox 1108s in the gateway tables. (Webster network center or PARC can provide clarification if necessary). The disk utility Othello cannot reach an IFS file server without PUP forwarding by the gateway.
Initial microcode is the first phase of booting and overlays itself with either diagnostic microcode in a "zero boot" or with Mesa microcode in an "Alt-Boot-1". We substitute the Lisp memory image for diagnostic microcode and, thereby, have a choice of Lisp or Mesa by zero or one booting. Lisp10SAx000Initial is slightly modified Initial microcode for the SA1000 or SA4000 or Q2040 hard disk that can read boot files larger than 128KB). For users who wish to remain compatible with Mesa 8.0 (Trinity), a Lisp8SAx000Initial.db is available on [phylum]<Lisp>Fugue>.
}{End SubSec Installing Interlisp-D with Othello}
{Begin SubSec Installing Interlisp-D from Floppy Disks}
{Title Installing Interlisp-D from Floppy Disks}
{Text
Interlisp-D can be saved on floppy disks a way that it can be installed directly from floppies, via the Services Installation Utility (Prometheus). The DEMO system will fit easily on three double-density double-sided floppies. Documentation for making a set of floppies from a SYSOUT file is covered in the file [Phylum]<Lisp>Fugue>MakeLispFloppies.DOC. We will make available upon request sets of floppies for our standard releases.
}{End SubSec Installing Interlisp-D from Floppy Disks}
{Begin SubSec Keyboard and Mouse}
{Title Keyboard and Mouse}
{Text
On the Xerox 1108, Interlisp-D supports both the two-button and the three-button mouse. The "center" key on the upper left hand side of the terminal is interpreted the same as having the middle mouse button.
On the standard Xerox 1108/Star keyboard, the shiftlock is always released by holding down either shift key. Some familiar characters are generated by unfamiliarly labelled keys, as outlined below.
CTRL= PROP’S (next to left shift)
\= FONT
|= shift-FONT
←= right quote (to the right of ’)
↑= shift-right-quote
TAB= key with underscored right arrow (=>)
ESC= key above tab with right arrow (->)
BS= key at upper right with left-arrow (<--)
blank-middle= OPEN
blank-top= KEYBOARD
blank-bottom= STOP
Interlisp-D supports arbitrary redefinition of key actions via the KEYACTION function.
For example,
(KEYACTION ’SUPERSCRIPT ’(LOCKDOWN))
(KEYACTION ’SUBSCRIPT ’(LOCKUP))
will make touching the "superscript" key turn on caps-lock, and "subscript" turn it off. It is possible to remove the spring-lock from the "lock" key and turn it into an alternative to "control" via (KEYACTION ’LOCK ’(CTRLDOWN . CTRLUP))
Also, (KEYACTION ’BS ’((1 23 NOLOCKSHIFT))) will make the backspace key (labelled <-- on most 1108 keyboards) generate a control-W when the shift key is held.
Alternatively (RAISE 0) will change the case in the "T" terminal table, although programs which create their own terminal tables or do not use a terminal table (e.g., TEDIT) will not be affected.
KEYACTION know about all of the keys on the standard 8010 keyboard, with names corresponding to the names printed on them:
Keys with common interpretation on 1100/1132 keyboards:
(\ | FONT), (LF SAME), (BS <-), (BLANK-MIDDLE OPEN), (BLANK-TOP KEYBOARD), (ESC ESCAPE ->), (TAB =>), (CTRL PROP’S), (DEL DELETE), (BLANK-BOTTOM STOP).
new keys:
(SKIP NEXT), (UNDO), (MOVE), (MARGINS), (FIND), (AGAIN), (HELP), (DEF’N EXPAND), (CENTER), (BOLD), (ITALICS), (UNDERLINE), (SUPERSCRIPT), (SUBSCRIPT), (LARGER SMALLER), (DEFAULTS)
}{End SubSec Keyboard and Mouse}
{Begin SubSec Filing}
{Title Filing}
{Text
Restriction: Currently, Interlisp-D on the Xerox 1108 supports only a temporary version of the {lisp {bracket DSK}} device: files stored on {lisp {bracket DSK}} on a Xerox 1108 are ephemeral and do not persist across system reloads. Filing both via Leaf, PUP/FTP and NS filing protocols is supported. Full support for the local disk will be available in a maintenance release.
}{End SubSec Filing}
{Begin SubSec TeleRaid}
{Title TeleRaid}
{Text
The Xerox 1108 has no Raid debugger (since Raid is written in BCPL), but does provide a low-level "TeleRaid" service when it would otherwise fall into Raid. When the machine is in TeleRaid, it can be debugged from another machine (another Xerox 1108, or an 1100 or 1132), or in some cases the user can issue commands to continue or break into the computation in limited ways.
When the maintenance panel of a Xerox 1108 indicates a Lisp-induced halt, pressing the {lisp UNDO} key starts the TeleRaid server. TeleRaid changes the cursor to the TeleRaid cursor, takes over the ethernet controller and keyboard, then waits for commands from either the ethernet or the keyboard. Keyboard commands are given by holding down the command key ({lisp STOP} on the Xerox 1108, or bottom blank on the Xerox 1100 or 1132) and striking another key. As you strike a key, the cursor changes to give feedback about the command you are about to execute; the command is executed when you let go of the key, but if you let go of the command key first, the command is aborted. The commands are as follows:
{Begin LabeledList TeleRaid commands}
{Indent 10percent}
{Label {lisp N}}
{Text Like control-N in Raid; Continues the computation.}
{Label {lisp D}}
{Text Like control-D in Raid; Does a {fn HARDRESET}.}
{Label {lisp B}}
{Text Causes a break underneath the error. TeleRaid refuses to execute the {lisp B} command if the user is executing in a place (e.g., inside of a garbage collection) where it would be dangerous to allow a user break.}
{Label {lisp P}}
{Text Displays the machine’s Pup host number (decimal) in the maintenance panel (for remote debugging).}
{End LabeledList TeleRaid commands}
You can put an Xerox 1100 or Xerox 1132 into TeleRaid server mode by giving the {lisp R} command to Raid and thus remotely debug it or make use of TeleRaid’s {lisp B} command (nothing corresponding to this command is available in standard Raid).
Once a machine is in TeleRaid, then another machine may be used to debug it by calling {lisp (TELERAID {arg HOST})},{index TELERAID Fn} where {arg HOST} is the Pup name or number of the machine running a TeleRaid server. The function {fn TELERAID} is not in the standard Interlisp-D loadup; to load it, you must load the files {lisp READSYS.DCOM}, {lisp RDSYS.DCOM}, {lisp VMEM.DCOM}, and {lisp REMOTEVMEM.DCOM}. The user interface for {fn TELERAID} is similar to that of Raid; type {lisp ?} for an enumeration of commands.
}{End SubSec TeleRaid}
{Begin SubSec Exiting Interlisp}
{Title Exiting Interlisp}
{Text
On a 1108, {fn LOGOUT} will simulate an "Alt-Boot-1" and will boot the version of Mesa which is installed as your Physical Volume Boot File.
}{End SubSec Exiting Interlisp}
{Begin SubSec New Functions in Xerox 1108 Interlisp-D}
{Title New Functions in Xerox 1108 Interlisp-D}
{Text
{FnDef {Name SETMAINTPANEL} {Args N}
{Text
Sets the number in the maintenance panel to be {arg N}.
}}
{FnDef {Name BEEPON} {Args N}
{Text
Turns on the tone generator in the keyboard with frequency {arg N}. For example, {lisp (BEEPON 440)} will start a continuous "A".
}}
{FnDef {Name BEEPOFF} {Args}
{Text
Turns off the tone generator.
}}
}{End SubSec New Functions in Xerox 1108 Interlisp-D}
{Begin SubSec Xerox 1108 Maintenance Panel Codes}
{Title Xerox 1108 Maintenance Panel Codes}
{Text
There are two types of maintenance panel codes: Progress codes and error codes. Progress codes are placed in the Maintenance Panel at various stages of initialization. Error codes are traps which freeze or blink the error number in the maintenance panel. They are all fatal errors.
0000-0499 boot-time diagnostics
0500-0699 IOP code
0700-0899 Pilot microcode
0900-0999 Pilot
1000-6999 tech-rep diagnostics
7000-8887 Star
8888-8888 MP lamp test
9000-9999 Lisp
0096 Insufficient real memory (<1MByte) for lisp
0200-0299 Booting phase 2 (Initial microcode)
0200 normal booting phase 2
0201 CP error in reading from boot device
0202 null Mesa germ installed in physical volume
0203 broken rigid disk boot chain (possibly intermitant)
0204 Illegal IOP port command
0205 CP Trap (CS parity or double-bit memory error)
0206 null diagnostic microcode in physical volume
0207 null Pilot/Mesa emulator microcode in physical volume
0208null Mesa germ installed in physical volume
0500-0502 Domino progress codes
0500StartDominoDomino has started
0501InitReadTODDomino starting to read the TOD clock
0502InitReadTODdoneReading of TOD clock completed
(next MP number from Lisp)
0505-0599 Domino error codes
0505CSParityCS parity error detected
0506BurdockCPDisabledBurdock attempted to use EtherKludge
0507CPBurdockDisabledCP attempted to use EtherKludge
0508IOPBreakAn IOP break with no IOP kernel
0509IllegalIOPIntrIllegal IOP interrupt
0510BadMapEntryIncorrect vm Map entry in IOP access.
0511NoCPDmaCompleteCP Dma operation failed to complete
0512NoCPDmaChannelCP Dma channel not specified
0513ReadCPPortDeadCP not responding to Read CPPort
0514WriteCPPortDeadCP not responding to Write CPPort
0520StackOverflowA task’s stack has overflowed
0565InvToneCmdInvalid keyboard tone generator comnd
0570InvProcCmdInvalid cmd value in Processor CSB
0571UnImplCmdUnimplemented cmd in Processor CSB
0572SetTODErrorThe Time-Of-Day could not be set
0576LSEPCtlOVRLSEP Control CSB overrun
0580NoValidCommandInvalid floppy IOCB command
0581UnImplFloppyCmdUnimplemented floppy IOCB cmd
0582InvalidEscapeCmdInvalid Escape floppy cmd
0583CommandTrackFloppy track register is not correct
0584TrackToBigFloppy track number is too large
0585BadDmaChannelCouldn’t program Floppy Dma
0586NoDmaEndCount1External Dma End Count not set
0587NoDmaEndCount2Internal Dma End Count not set
9000-9299 DLion lisp microcode error detected
9001 Control store parity error
9004 Attempt to reference virtual address >22 bits
9005 double bit memory error or non-existant memory reference
9001 CSParErr Control store parity error
9002 StackErr hardware stack overflow
9003 IBEmptyErr instruction fetch unit empty error
9004 VirtAddrErr Attempt to reference virtual address >22 bits
9005 EmuMemErr double bit memory error or non-existant memory
9013 NegPcError inconsistent PC at FnCall
9014 applyUfn arg to apply not integer
9016 notFreeTrap stack allocation error
9051 BadUfnTable
9120 MiscErr opcode no such register
9121 MiscErr opcode bad 2nd byte
9136 CycleMask bad caller
9129 M1Loc microcode error
9130 M2Loc microcode error
9131 M3Loc microcode error
9048 ReFOvr page fault under page fault
9049 Ghost context switch
9127 PcNegError inconsistent PC at Punt
9300-9399 Lisp error calling \MP.ERROR
9301 \MP.NORPT "No space for Real Page Table"
9302 \MP.INVALIDVMEM
9303 \MP.IOCBPAGE "No place for IOCB page at startup"
9304 \MP.MOB "Map out of bounds"
9305 \MP.INVALIDADDR
9306 \MP.INVALIDVP
9307 \MP.CHAIN.UNAVAIL "Unavailable page on real page chain"
9308 \MP.SELECTLOOP "Loop in \SELECTREALPAGE"
9309 \MP.NEWPAGE "Attempt to allocate already existing page"
9310 \MP.NEWMAPPAGE "\DONEWPAGE failed to allocate new map page"
9311 \MP.BADLOCKED "Locked page occupies a file page needed to lock another"
9312 \MP.CLOCK0 "Arg to CLOCK0 not an integer box"
9313 \MP.RESIDENT "Fault on resident page"
9314 \MP.STACKFAULT "Fault on stack"
9315 \MP.INVALIDVMEM "Vmem inconsistent at startup"
9400-9899 unassigned
9900-9999 Attempt to call Raid or Alto O.S. (BCPL Subr)
9900 \uCodeCheck
9901 was\StackOverflow
9902 \NWWInterrupt
9903 was\PageFault NIL
9904 \StatsOverflow
9905 NOOPSUBR
9906 \BACKGROUNDSUBR
9907 \CHECKBCPLPASSWORD
9908 DISKPARTITION NIL
9909 DSPBOUT (CHARCODE)
9910 \DSPRATE (PARM)
9911 \GATHERSTATS (FID)
9912 \GETPACKETBUFFER NIL
9913 \LISPFINISH
9914 \MOREVMEMFILE (FILEPAGE)
9915 RAID (MESS1 MESS2 FLG)
9916 \READRAWPBI NIL
9917 \WRITERAWPBI (PBI)
9918 SETSCREENCOLOR (FLG)
9919 SHOWDISPLAY (BASE RASTERWIDTH)
9920 \PUPLEVEL1STATE (FLG)
9921 \WRITESTATS (TYPE X1 X2 X3 X4 X5 X6 X7 X8 X9 X10)
9922 \CONTEXTSWITCH
9923 \COPYSYS0SUBR (FID)
9924 \WRITEMAP (VP RP FLAGS)
}{End SubSec Xerox 1108 Maintenance Panel Codes}
}{End SubSec Using Interlisp-D on the Xerox 1108}