// SysDefs.D -- OS definitions for users// Copyright Xerox Corporation 1979// Last modified November 30, 1979  11:38 AM by Taftmanifest[nOsVersion = 18nOsVersionCompatible = 16// finish codesfcOK = 0fcAbort = 1]//----------------------------------------------------------------------------structure EVM:		// Event message.  0 terminates//----------------------------------------------------------------------------[type bit 12length bit 4]manifest		// registered event types[eventBooted = 1		// boot button hit or BootFrom(...)eventAboutToDie = 2eventInstall = 3	// install this core imageeventRFC = 4eventInLd = 5		// call InLd(eventBody, eventBody)eventCallSubsys = 6	// no string => call the Ftp hidden inside the OSeventExecuteCode = 7	// execute body of event as BCPL procedure]//----------------------------------------------------------------------------structure UPE:		// User Parameters. 0 terminates//----------------------------------------------------------------------------[type bit 12length bit 4]manifest[globalSwitches = 1	// From Executive: body is ASCII codes (1 per word)openStreams = 2		// Interpretation is private, but type is publicprivateType = 4000b	// Start assigning private types herelUserParams = 16lInLdMessage = 19]//----------------------------------------------------------------------------manifest		// Junta level names//----------------------------------------------------------------------------[levBasic = 0		// Basic level (Swat, finish)levBuffer = 1		// Keyboard item bufferlevFilePointers = 2levBcpl = 3		// BCPL runtime supportlevStatics = 4levBFSbase = 5levBFSwrite = 6levAlloc = 7levStreams = 8levScan = 14levDirectory = 9levKeyboard = 10levDisplay = 11levMain = 12// levCompat used to be 13 -- deimplemented as of OS16, March 79levTotal = 12		// Most capable level]//----------------------------------------------------------------------------structure KBTRANS://----------------------------------------------------------------------------[Transition word  = 	// First word ne 0 => some key transitioned:   [   GoingDown bit	// True if keyIndex descending   GoingUp bit   KeyIndex bit 14	// Index of moving key if any   ]KeyState word 5		// Table of key state after transitionCursorX	word		// Present location of cursorCursorY	word]//----------------------------------------------------------------------------structure KBKEY://----------------------------------------------------------------------------[Letter bit		// True if char is a letter (use for lock interp)ShiftCode bit 7		// Ascii code to use if shift is onNormCode bit 8		// Ascii code to use otherwise]//----------------------------------------------------------------------------structure OsBUF://----------------------------------------------------------------------------[First word		// -> first word of ring bufferLast word		// -> last word of ring buffer+1In word			// -> place to put next itemOut word		// -> next item to take]//----------------------------------------------------------------------------structure FRAME:	// A BCPL stack frame//----------------------------------------------------------------------------[callersFrame word	// -> callers framesavedPC word		// return addresstemp word		// used by get frameextraArguments word	// 3rd arg or frame offset of arg vec if numargs>3formals^0,100 word]