// PupTimeServ.decl

// Last modified March 4, 1979  2:28 AM by Boggs

get "PupMiscServ.decl"

manifest
[
ticksPerSec = alto? 1000, 100
stringFormat = alto	// no room for string format time server on Novas
timeStatsVersion = 2
]

//----------------------------------------------------------------------------
structure Stats:	// Time server stats
//----------------------------------------------------------------------------
[
version word		// = timeStatsVersion
tenexReqs word 2	// number of Tenex format time requests
stringReqs word 2	// number of String format time requests
altoReqs word 2		// number of Alto format time requests
correction word		// clock correction, signed integer
resetPort @Port		// port from which clock last set
]

//----------------------------------------------------------------------------
structure TimeParams:
//----------------------------------------------------------------------------
[
zoneS bit		// zone sign: + is west of Greenwich
zoneH bit 7		// zone hours
zoneM bit 8		// zone minutes
beginDST word		// day number on which DST begins
endDST word		// day number on which DST ends
]

//----------------------------------------------------------------------------
structure TS:		// 'global frame' for time server
//----------------------------------------------------------------------------
[
ctx word		// -> TimeServ ctx

stats @Stats

flags word =
   [
   blank bit 13
   dontKnowTime bit	// time is unknown
   corrSign bit		// Correction sign
   doCorrect bit	// a clock correction has been specified
   ]
resetCtx word		// -> ResetTimeCtx or 0 if none active

corrCount word 2	// decremented by TimeCtx
correction word 2	// seconds between corrections

altoClk word 2		// Alto format calendar clock
timeParams @TimeParams
]
manifest lenTS = size TS/16