;-*-MIDAS-*-

subttl PWFILE -- Define format of the password file

;PRINT VERSION NUMBER
.TYO6 .IFNM1
.TYO 40
.TYO6 .IFNM2
PRINTX/ INCLUDED IN THIS ASSEMBLY.
/

pwfile=:pwpage*2000		   ; Where we put it

pwinit==:pwpage*2000		   ;time of system invocation for locks feature
pwdone=:pwpage*2000+1		   ;time of system invocation for locks feature
pwlock=:pwpage*2000+2		   ;lock.  If locked, database is closed for
				   ;writing.
pwunkl=:pwpage*200+3		   ;must be pwlock+1 ... this gets unlink inst.
pwlkid=:pwpage*2000+4		   ;UIND of job doing the locking
pwtime=:pwpage*2000+5		   ;time of last update

pwuhak=:pwpage*2000+11		   ;UNAME of last person to update, other than
				   ;INIT
pwjhak=:pwpage*2000+12		   ;JNAME of last person to update, other than
				   ;an INIT.
pwaccc=:pwpage*2000+13		   ;# of times database has been accessed
pwordc==:6			   ; # of override tables
pwordt=:pwpage*2000+14		   ; Date override tables are in effect
				   ; In halfword disk-date form, 1 date per
				   ; halfword.
pwcnt=:pwpage*2000+17		   ;# of passwords we have in our database, *10

pwrbfp=:pwpage*2000+20		   ;pointer into buffer

pfgrp=:pwpage*2000+21		   ; Default user group

ddtty0=:pwpage*2000+22		   ; 0-43 TTY #'s to get DDT directly.
ddtty1=:pwpage*2000+23		   ; 44-107 TTY #'s to get DDT directly.
dltty0=:pwpage*2000+24		   ; 0-43 TTY #'s to not let randoms use
dltty1=:pwpage*2000+25		   ; 44-107 TTY #'s to not let randoms use

pwsptr=:pwpage*2000+26		   ; AOBJN ptr to free area in PWSTR area.

atoapl=:pwpage*2000+27		   ; -1 ==> Allow applications

pwgdil=:pwpage*2000+30		   ; Dialup restriction for each group, a 1
				   ; bit n from the right marks that group as
				   ; priveleged.  This bit is overridden
				   ; by the %PFDIL bit in the individual's flag
				   ; word, which says the individual is
				   ; priveleged to use the dialups

pwsgcp=:pwpage*2000+31		   ; -1 iff incomplete GC performed.
				   ; If incomplete GC has been performed,
				   ; it must be done before adding a string.

pwholp=:pwpage*2000+32		   ; -1 ==> Today is a holiday.
				   ; Turn this on to ignore time restrictions.

pwrbfl==:200			   ;length of buffer
pwrbuf=:pwpage*2000+100		   ;password data entry history buffer

pwgrct=:20			   ; # of possible groups
pwgrdm=:pwpage*2000+300		   ; 1 entry per group
  dm$wds=:360600,,0		   ; 1.1-1.6  When restriction starts, weekday
				   ;   # of half-hours after midnight
				   ;   77 = no restriction
  dm$sts=:300600,,0		   ; 1.7-2.3  When restriction starts, Saturday
  dm$sns=:220600,,0		   ; 2.4-2.9  When restriction starts, Sunday
  dm$wde=:140600,,0		   ; 3.1-3.6  When restriction ends, weekday
  dm$ste=:060600,,0		   ; 3.7-4.3  When restriction ends, Saturday
  dm$sne=:000600,,0		   ; 4.4-4.9  When restriction ends, Sunday


pwgors=:pwpage*2000+320		   ; This table contains the override start
				   ; times for each of the 20 groups.  Each
				   ; word is divided into six 6-bit bytes,
				   ; one for each override date, and contains
				   ; the start time in 1/2 hour past 0000 units
pwgore=:pwpage*2000+340		   ; Same, override restriction end times.
pwgnam=:pwpage*2000+360		   ; SIXBIT name of group

pwstbg==:pwpage*2000+1000	   ; Start of string-space AOBJN ptrs
				   ; From here to PWSTBG are ptrs into the
				   ; database...
timmsg=:pwpage*2000+1000	   ; Message for each group for logging in
				   ; during the wrong time.
dilmsg=:pwpage*2000+1020	   ; Message for each group for using dialups
ovrmsg=:pwpage*2000+1040	   ; 20 x 6 table of messages for each group
				   ; on each override date
pwadmn=:pwpage*2000+1200	   ; AOBJN ptr (into string space) of people
				   ; who have created/modified accounts
lucktb=:pwpage*2000+1201	   ; Table of lucky sites that don't get PWORD
losers=:pwpage*2000+1202	   ; Table of sites we need protection from
phone=:pwpage*2000+1203		   ; cnt,,offset string phone number for help
naplmg=:pwpage*2000+1204	   ; Message to print why no applications
nocmnd=:pwpage*2000+1205	   ; Commands to disable

pwstln==:205			   ; # of strings to update

pwstpg==:1			   ; Page # of string space
pwstr=:<pwpage+pwstpg>*2000	   ; String Space.  This is divided into thre
				   ; consing areas, NEW, OLD, and NEXT
				   ; When NEW is filled, all pointers into
				   ; OLD are copied into NEXT space, which
				   ; then becomes the NEW space.  The old NEW
				   ; space, not suprisingly, becomes the OLD
				   ; space.  This is done to avoid half-move
				   ; strings, to guarantee consistancy at all
				   ; times.  Strings are pointed to by AOBJN
				   ; ptrs, relative to PWSTR.  The AOBJN ptrs
				   ; are examined and updated only with the
				   ; database locked, and are updated only
				   ; after any necessary copying is done.
				   ; Each consing area is 2 pgs long.
pstrln==:4000			   ; Length of a string space
pistr0==:0
pwstr0==:<pwpage+pwstpg>*2000	   ; String Space 0
pistr1==:pistr0+pstrln
pwstr1=:<pwpage+pwstpg>*2000+pstrln  ; String Space 1
pistr2==:10000
pwstr2=:<pwpage+pwstpg>*2000+2*pstrln  ; String Space 2

pdpage==:7			   ; Page # of UNAME data in file

pwdata=:pwpage*2000+16000
pwname=:pwpage*2000+16000	   ;location of first UNAME entry
pwpass=:pwpage*2000+16001	   ;location of first password entry
pwflag=:pwpage*2000+16002	   ;location of first flag entry

%pf==:1,,525252			   ;  bit typeout mask
%pfnew==:400000			   ;  This account has never logged in
%pfdil==:200000			   ;  is permitted to use dialups.
%pfday==:100000			   ;  can use it in the daytime.
%pfbad==:040000			   ;  Means that this name shouldn't be able to
				   ;    log in from loser sites.
%pfmsg==:020000			   ;  Means that he has seen the REFUSE or OFF
				   ;  message

pwinfo=:pwpage*2000+16003	   ; Various miscellaneous info
pi$==:777400,,170677
pi$crt==:321200,,0		   ;   3.9-4.9 Index into creator table for
				   ;     who created this account
pi$mod==:201200,,0		   ;   2.8-3.8  who last modified this account
pi$grp==:140400,,0		   ;   2.4-2.7	access-control group

pi$sta==:100400,,0		   ;   1.9-2.3	state of this account
ps%==:400000,,0			   ;     typeout mask
ps%new==:0			   ;     Account is nonexistant
ps%apl==:1			   ;     Account is applied for
ps%hld==:2			   ;	 Account is being held
ps%off==:3			   ;	 Account is turned off
ps%rfs==:4			   ;	 Account is refused
ps%ok==:5			   ;	 Account is OK
ps%sys==:6			   ;	 Account is a system account
ps%del==:7			   ;	 Account is being deleted
				   ;	   (should never actually be in file)

pi$nul==:001000,,0		   ;   1.1-1.8 MBZ

pwdate=:pwpage*2000+16004	   ;<creation>,,<login>
pd$crt==:222200,,0
pd$log==:002200,,0

pwmod=:pwpage*2000+16005	   ;<modification date>,,0
pm$mod=:222200,,0

pwmore=:pwpage*2000+16007	   ;this slot reserved for debugging, etc.
pwleng==:10			   ;entries are 8 long

