filed on [rose]<lisp>fugue6>doc>MPcodes.bravo



7. MP Code Summary

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. All errors except the 9000-range errors are fatal.

All MP codes less than 9000 are generated by non-Lisp programs implemented directly in microcode or in Mesa, a high-level programming language in use at Xerox. MP codes from 9000 to 9999 are generated by an error in the Lisp system code.



Summary of MP code ranges
Blank MP to 0099: Pre-boot diagnostics
0300-0399 Boot diagnostics
0600-0699 Memory diagnostics
0400-0499 Utility (Real time clock, etc.) diagnostics
0700-0799 Disk diagnostics (written in microcode)
0900-0999 Pilot OS
1000-1199 Disk Fault Analysis (10MB)
1300-1499 Disk Fault Analysis (42MB)
1600-1799 Disk Fault Analysis (29MB)
8888-8888 MP lamp test
9000-9999 Lisp

Boot-time errors
0096Insufficient real memory (<1MByte) for Lisp
0149
Usually right after power-on. Disk not ready. Safe and effective to 0-boot from this state.

0200-0299 Booting phase 2 (Initial microcode)
0200normal 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 intermittent)
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
0208
null Mesa germ installed in physical volume
0217
Inconsistent Virtual Memory. Requires re-installation or try another partition.

0500-0502 Domino progress codes
0500StartDominoDomino has started
0501
InitReadTODDomino starting to read the TOD clock
0502
InitReadTODdoneReading of TOD clock completed (next MP number from Lisp)

0505-0599 Domino error codes
0505CSParityCS parity error detected
0506
BurdockCPDisabledBurdock attempted to use EtherKludge
0507
CPBurdockDisabledCP attempted to use EtherKludge
0508
IOPBreakAn IOP break with no IOP kernel
0509
IllegalIOPIntrIllegal IOP interrupt
0510
BadMapEntryIncorrect vm Map entry in IOP access.
0511
NoCPDmaCompleteCP Dma operation failed to complete
0512
NoCPDmaChannelCP Dma channel not specified
0513
ReadCPPortDeadCP not responding to Read CPPort
0514
WriteCPPortDeadCP not responding to Write CPPort
0520
StackOverflowA task’s stack has overflowed
0565
InvToneCmdInvalid keyboard tone generator comnd
0570
InvProcCmdInvalid cmd value in Processor CSB
0571
UnImplCmdUnimplemented cmd in Processor CSB
0572
SetTODErrorThe Time-Of-Day could not be set
0576
LSEPCtlOVRLSEP Control CSB overrun
0580
NoValidCommandInvalid floppy IOCB command
0581
UnImplFloppyCmdUnimplemented floppy IOCB cmd
0582
InvalidEscapeCmdInvalid Escape floppy cmd
0583
CommandTrackFloppy track register is not correct
0584
TrackToBigFloppy track number is too large
0585
BadDmaChannelCouldn’t program Floppy Dma
0586
NoDmaEndCount1External Dma End Count not set
0587
NoDmaEndCount2Internal Dma End Count not set


0900-0999 Pilot codes
0915Pilot breakpoint. If 0915 occurs during the installation of the software, the problem could be a bad page on the rigid disk, the system cannot read the floppy disk, or a hardware failure. Try running ALAG. If ALAG passes and Media Scan shows no new bad pages, the floppy disk (software installation) is suspect.
0937
Trying to find out the time and date. Will hang in this state if no time server is responding, and the time has not been set on the machine since power-up. Time can be set from within Interlisp (with SETTIME), by 2-booting the Installation Utility floppy, or by 5-booting the EI Fixed Disk Diagnostics floppy.)
0981
Trying to discover Ethernet pup host number. Will hang in this state if non-Lisp code tries to perform Pup operations and no Pup ID Server responds.

9000-9299 Interlisp-D microcode error detected

Most of these errors are indicative of some serious problem, probably hardware, and usually fatal (but try ↑D if you can’t TeleRaid). The main exception is 9004 see description of code 9304.

9001
CSParErrControl store parity error
9002
StackErrhardware stack overflow
9003
IBEmptyErrinstruction fetch unit empty error
9004
VirtAddrErrAttempt to reference virtual address >22 bits
9005
EmuMemErrdouble bit memory error or non-existent memory
9013
NegPcErrorinconsistent PC at FnCall
9014
applyUfnarg to apply not integer
9016
notFreeTrapstack allocation error
9024
Page fault in the page fault handler.
9048
ReFOvr page fault under page fault
9049
Ghost context switch
9051
BadUfnTable
9120
MiscErropcode no such register
9121
MiscErropcode bad 2nd byte
9127
PcNegErrorinconsistent PC at Punt
9136
CycleMaskbad caller
9129
M1Locmicrocode error
9130
M2Locmicrocode error
9131
M3Locmicrocode error

9300-9399 Lisp system code error (call to \MP.ERROR)
These codes generally indicate an error state in Lisp system code that cannot be handled in the break package. Most are "should never happen" cases that indicate a serious error; but some (in particular, 9305 and 9318) may be much less serious. If possible, use TeleRaid to find out more information (press the Undo key to enter the TeleRaid server (cursor changes into "TeleRaid"), and run the TeleRaid user from another machine). Even if you can’t TeleRaid from another machine, several of these codes you can convert into a Lisp break if the state of the system is reasonably consistent and the error occurred under user code (rather than, say, the garbage collector): type ↑B to the TeleRaid server.

Summary of TeleRaid server commands:

↑Battempt to enter Break. If error is in a special system context, will change cursor to "CANT", indicating refusal to enter break.

↑Dperform Hard Reset—clear stack, flush all non-restartable processes.

↑Ncontinue from error. This is usually not possible, except for code 9318, or when you got a 9915 error by typing ↑C while the Raid interrupt was enabled.

↑Pdisplay Pup host number (in decimal) in maintenance panel.

9302
Invalid Vmem: attempt to boot an image that is not a valid Lisp sysout, or which is inconsistent from having some, but not all, of its dirty pages written. Can happen if you boot instead of calling LOGOUT. Usually caught sooner as code 0217.
9303
No place for IOCB page at startup; should never happen.
9304
Map out of bounds: attempt to use a pointer larger than the virtual address space of the machine. Usually means garbage was fetched from somewhere that should have contained a pointer. This usually appears as code 9004 instead.
9305
Invalid address: attempt to use a pointer that does not refer to an existing (allocated) part of virtual memory. Usually means garbage was fetched from somewhere that should have contained a pointer. This error can often be converted to a break with the ↑B TeleRaid command.
9306
Invalid virtual page. Usually caught sooner, as a 9004.
9307
Unavailable page on real page chain: inconsistent state in page fault handler.
9308
Loop in \SELECTREALPAGE: inconsistent state in page fault handler.
9309
Attempt to allocate already existing page (from call to \NEWPAGE).
9310
\DONEWPAGE failed to allocate new map page
9311
Locked page occupies a file page needed to lock another: bad state in virtual memory system.
9312
Arg to CLOCK0 not an integer box.
9313
Fault on resident page: processor took a page fault for a page that appears to be resident.
9314
PageFault on stack: shouldn’t happen, as stack is resident.
9318
Error in uninterruptable system code: an error that ordinarily would enter a break (e.g., a type test failure), but in a piece of code that should not be user-interruptable. This is generally a sign that some datum used by system code has been smashed, but this is not always fatal. Should you not have a wizard handy to diagnose the error with TeleRaid, you can type ↑N after entering the TeleRaid server; Lisp will go ahead and attempt to enter a the break anyway, from which (if it succeeds) you might be able to glean more information about the problem.

9400-9899 unassigned

9900-9924 Attempt to call Raid or Alto O.S.

The only one that is likely to ever occur is 9915, call to RAID. Note that if you have the Raid interrupt enabled (by default on ↑C), you will get a 9915 error by typing that interrupt character.

9905
NOOPSUBR
9906
\BACKGROUNDSUBR
9907
\CHECKBCPLPASSWORD
9908
DISKPARTITION
9909
DSPBOUT
9910
\DSPRATE
9911
\GATHERSTATS
9912
\GETPACKETBUFFER
9913
\LISPFINISH
9914
\MOREVMEMFILE
9915
RAID
9916
\READRAWPBI
9917
\WRITERAWPBI
9918
SETSCREENCOLOR
9919
SHOWDISPLAY
9920
\PUPLEVEL1STATE
9921
\WRITESTATS
9922
\CONTEXTSWITCH
9923
\COPYSYS0SUBR
9924
\WRITEMAP