Commit 35a30a22 authored by Kevin Lyda's avatar Kevin Lyda
Browse files

Update seeded messages

Clean them up.
parent cda97fad
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -76,4 +76,3 @@ smart enough to delete obsolete files.)

						Mark R. London
						MRL%PFCVAX@MC
+173 −174
Original line number Diff line number Diff line
@@ -339,7 +339,7 @@ C THE BBOARD OPTION, CHANGE THE DEFINITION FOR BBOARD TO BE: /'NONE'/.
C  IF IT IS NOT SELECTED, YOU DO NOT HAVE TO MODIFY THE REST OF THE
C  BBOARD VARIABLES.  IF IT IS SELECTED, YOU MUST SPECIFY THE UIC
C  NUMBER OF THE BBOARD ACCOUNT.  YOU MUST ALSO SPECIFY BBOARD_FILE,
C  WHICH IS A TEMPORARY FILE WHICH IS USED TO CONVERT THE BBOARD MAILn
C  WHICH IS A TEMPORARY FILE WHICH IS USED TO CONVERT THE BBOARD MAIL
C  TO A SEQUENTIAL FILE.
Cn
	COMMON /FILES/ BULLDIR_FILE,BULLETIN_FILE,BULLUSER_FILE,BBOARD_USER
@@ -351,60 +351,60 @@ Cn
	CHARACTER*80 BBOARD_FILE/'USRD$:[BBOARD]BBOARD.MAI'/
CT
C  THE BBOARD.COM IS INCLUDED WITH THE SOURCES AND IS USED IF THE BBOARD
C  FEATURE IS DESIRED.  IT IS NOT CREATED, SO YOU MUST MOVE IT TO THEs
C  DESIRED DIRECTORY.  YOU MUST ALSO EDIT IT SO THAT THE FILE SPECIFIEDm
C  FEATURE IS DESIRED.  IT IS NOT CREATED, SO YOU MUST MOVE IT TO THE
C  DESIRED DIRECTORY.  YOU MUST ALSO EDIT IT SO THAT THE FILE SPECIFIED
C  IN THE 'EXTRACT' LINE MATCHES THE FILE SPECIFIED BY BBOARD_FILE.
C
	CHARACTER*80 BBOARD_COMMAND/'IML$EXE:BBOARD.COM'/
	PARAMETER ADD_FLAG = '1'X
	PARAMETER BACK_FLAG = '2'Xt
	PARAMETER BACK_FLAG = '2'X
	PARAMETER DELETE_FLAG = '4'X
	PARAMETER DIRECTORY_FLAG = '8'X
	PARAMETER EXIT_FLAG = '10'X
	PARAMETER FILE_FLAG = '20'X
	PARAMETER HELP_FLAG = '40'X
	PARAMETER NEXT_FLAG = '80'X
	PARAMETER READ_FLAG = '100'XN
	PARAMETER SYSTEM_FLAG = '200'Xd
	PARAMETER READ_FLAG = '100'X
	PARAMETER SYSTEM_FLAG = '200'X
	PARAMETER BROADCAST_FLAG = '400'X
	PARAMETER BADSWITCH_FLAG = '800'X
	PARAMETER REPLACE_FLAG = '1000'X
	PARAMETER EXPIRE_FLAG = '2000'X
	PARAMETER HEADER_FLAG = '4000'X
	PARAMETER TEXT_FLAG = '8000'X
	PARAMETER NUMBER_FLAG = '10000'Xo
	PARAMETER SHUTDOWN_FLAG = '20000'XT
	PARAMETER NUMBER_FLAG = '10000'X
	PARAMETER SHUTDOWN_FLAG = '20000'X
	PARAMETER PERMANENT_FLAG = '40000'X

	COMMON /BULLPAR/ FLAGS,BULL_PARAMETER,LEN_P,NUMBER_PARAMt
	COMMON /BULLPAR/ FLAGS,BULL_PARAMETER,LEN_P,NUMBER_PARAM
	CHARACTER*64 BULL_PARAMETER
	INTEGER FLAGS
	MODULE BULLETIN_MAINCOMMANDSf
	MODULE BULLETIN_MAINCOMMANDS
	DEFINE VERB BULLETIN
		QUALIFIER READNEW
		QUALIFIER LOGINh
		QUALIFIER LOGIN
$ RUN SYS$SYSTEM:INSTALL
SYS$SYSTEM:BULLETIN/SHARE/OPEN/HEAD/PRIV=(OPER,SYSPRV,CMKRNL)
/EXITn
/EXIT

	COMMON /BULL_USER/ USERNAME,LOGIN_DATE,LOGIN_TIME,READ_DATE,i
     &		READ_TIME,FLAGSd
	COMMON /BULL_USER/ USERNAME,LOGIN_DATE,LOGIN_TIME,READ_DATE,
     &		READ_TIME,FLAGS
	CHARACTER*12 USERNAME
	CHARACTER*11 LOGIN_DATE,READ_DATE
	CHARACTER*8 LOGIN_TIME,READ_TIMEh
	CHARACTER*8 LOGIN_TIME,READ_TIME
	DIMENSION FLAGS(2)u

	.LIBRARY	/SYS$LIBRARY:LIB.MLB/U
	$CLIDEF	GLOBALe
	.ENDh
	.LIBRARY	/SYS$LIBRARY:LIB.MLB/
	$CLIDEF	GLOBAL
	.END
$ FORTRAN BULLETIN
$ FORTRAN BULLSUBS
$ MAC CLIDEF
$ MAC HPWD
$ MAC SETUIC
$ MAC SETUSERt
$ MAC SETUSER
$ MAC USEROPEN
$ SET COMMAND/OBJ BULLCOMe
$ SET COMMAND/OBJ BULLCOM
$ SET COMMAND/OBJ BULLMAIN
$ @BULLETIN.LNKM
.TITLE HPWD - hash user password
@@ -419,10 +419,10 @@ $ @BULLETIN.LNKM
;	e _lib$code:_lib$code+68


; Inputs: PWDDSC -- Addres of password descriptore
; Inputs: PWDDSC -- Addres of password descriptor
;	  ENCRYPT -- Encryption algorithm index (byte)
;	  SALT - random number (word)
;	  USRDSC - Address of username descriptorc
;	  USRDSC - Address of username descriptor

; output:  OUTDSC  -- Address of encrypted output descriptor

@@ -441,8 +441,8 @@ AUTODIN:
	.LONG ^X0D6D6A3E8,^X0CB61B38C,^X09B64C2B0,^X086D3D2D4,^X0A00AE278
	.LONG ^X0BDBDF21C

; Purdy polynomial coefficients.  Prime, but don't need to beR
Purdy_Poly:e
; Purdy polynomial coefficients.  Prime, but don't need to be
Purdy_Poly:
c:
	.LONG -83,-1h
	.LONG -179,-1
@@ -451,22 +451,22 @@ c:
	.LONG -363,-1

.ENTRY	LGI$HPWD,^M<R2,R3,R4>
	MOVAQ   @outdsc(AP),R4e
	MOVAQ   @outdsc(AP),R4
	MOVAQ   @4(R4),R4
	TSTB    encrypt(AP)
	BGTRU   10$
	MNEGL   #1,R0
	MOVAQ   @pwddsc(AP),R1
	CRC     autodin,R0,(R1),@4(R1)E
	CRC     autodin,R0,(R1),@4(R1)
	CLRL    R1i
	MOVQ    R0,(R4)
	BRB     20$

10$:	CLRQ    (R4)
	MOVAQ   @pwddsc(AP),R3u
	MOVAQ   @pwddsc(AP),R3
	BSBB    COLLAPSE_R2
	ADDW2   salt(AP),3(R4)i
	MOVAQ   @usrdsc(AP),R3d
	ADDW2   salt(AP),3(R4)
	MOVAQ   @usrdsc(AP),R3
	BSBB    COLLAPSE_R2
	PUSHAQ  (R4)
	CALLS   #1,PURDY]
@@ -479,7 +479,7 @@ COLLAPSE_R2:
	MOVZWL  (R3),R0
	BEQL    20$
	MOVAL   @4(R3),R2
	PUSHR	#^M<R1,R2>c
	PUSHR	#^M<R1,R2>
	MOVL	R0,R1
5$:	CMPB	(R2)+,#32
	BNEQ	7$
@@ -488,7 +488,7 @@ COLLAPSE_R2:
	MOVL	R1,R0o
	POPR	#^M<R1,R2>
10$:	BICL3	#-8,R0,R1
	ADDB2   (R2)+,(R4)[R1]e
	ADDB2   (R2)+,(R4)[R1]
	SOBGTR  R0,10$
20$:	RSB

@@ -502,49 +502,49 @@ n1=1@24-63
	BSBW	PQMOD_R0
	MOVAQ	(SP),R4
	MOVAQ	PURDY_POLY,R5
	MOVQ    (R4),-(SP)p
	MOVQ    (R4),-(SP)
	PUSHL   #n1
	BSBB    PQEXP_R3
	MOVQ    (R4),-(SP)d
	MOVQ    (R4),-(SP)
	PUSHL   #n0-n1u
	BSBB    PQEXP_R3r
	MOVQ    (R5)+,-(SP)
	BSBW    PQADD_R0
	BSBW    PQMUL_R2v
	BSBW    PQMUL_R2
	MOVQ    (R5)+,-(SP)
	MOVQ    (R4),-(SP)A
	MOVQ    (R4),-(SP)
	BSBW    PQMUL_R2L
	MOVQ    (R5)+,-(SP)
	BSBW    PQADD_R0M
	MOVQ    (R4),-(SP)M
	MOVQ    (R4),-(SP)
	BSBB    PQMUL_R2B
	MOVQ    (R5)+,-(SP)
	BSBW    PQADD_R0A
	MOVQ    (R4),-(SP)U
	MOVQ    (R4),-(SP)
	BSBB    PQMUL_R2L
	MOVQ    (R5)+,-(SP)
	BSBW    PQADD_R0L
	BSBW    PQADD_R0N
	MOVQ    (SP)+,@4(AP)S
	MOVQ    (SP)+,@4(AP)
	MOVL    #1,R0
	RET

PQEXP_R3:S
	POPR    #^M<r3>
	MOVQ    #1,-(SP)E
	MOVQ    #1,-(SP)
	MOVQ    8+4(SP),-(SP)
	TSTL    8+8(SP)
	BEQL    30$
10$:	BLBC    8+8(SP),20$
	MOVQ    (SP),-(SP)D
	MOVQ    (SP),-(SP)
	MOVQ    8+8(SP),-(SP)
	BSBB    PQMUL_R2
	MOVQ    (SP)+,8(SP)
	CMPZV   #1,#31,8+8(SP),#0
	BEQL    30$
20$:	MOVQ    (SP),-(SP)F
	BSBB    PQMUL_R2F
	EXTZV   #1,#31,8+8(SP),8+8(SP)A
20$:	MOVQ    (SP),-(SP)
	BSBB    PQMUL_R2
	EXTZV   #1,#31,8+8(SP),8+8(SP)
	BRB     10$

30$:	MOVQ    8(SP),8+8+4(SP)
@@ -581,9 +581,9 @@ PQMUL_R2:B
	PUSHL   z(R2)
	PUSHL   u(R2)
	BSBB    EMULQ
	BSBB    PQMOD_R0=
	BSBB    PQADD_R0s
	BSBB    PQADD_R0b
	BSBB    PQMOD_R0
	BSBB    PQADD_R0
	BSBB    PQADD_R0
	BSBB	PQLSH_R0
	PUSHL   y(R2)
	PUSHL	u(R2)
@@ -591,15 +591,15 @@ PQMUL_R2:B
	BSBB    PQMOD_R0,
	BSBB    PQADD_R0	
	MOVQ    (SP)+,Y(R2)
	MOVAQ   Y(R2),SPn
	JMP     (R1)e
	MOVAQ   Y(R2),SP
	JMP     (R1)

EMULQ:
	EMUL    4(SP),8(SP),#0,-(SP)e
	EMUL    4(SP),8(SP),#0,-(SP)
	CLRL    -(SP)
	TSTL    4+8+4(SP)
	BGEQ    10$
	ADDL2   4+8+8(SP),(SP)E
	ADDL2   4+8+8(SP),(SP)
10$:	TSTL    4+8+8(SP)
	BGEQ    20$
	ADDL2   4+8+4(SP),(SP)
@@ -626,35 +626,35 @@ PQADD_R0:d
	CMPL    y(SP),#-a
	BLSSU   30$
20$:	ADDL2   #a,y(SP)
	ADWC    #0,z(SP)e
	ADWC    #0,z(SP)
30$:	MOVAQ   Y(SP),SP
	JMP     (R0)i
	JMP     (R0)
.END
$ COPY BULLETIN.EXE SYS$SYSTEM:
$ SET FILE SYS$SYSTEM:BULLETIN.EXE/OWN=[1,4]
$ RUN SYS$SYSTEM:INSTALL
SYS$SYSTEM:BULLETIN/SHARE/OPEN/HEAD/PRIV=(OPER,SYSPRV,CMKRNL)r
/EXITh
SYS$SYSTEM:BULLETIN/SHARE/OPEN/HEAD/PRIV=(OPER,SYSPRV,CMKRNL)
/EXIT
$ LIB/CREATE/HELP SYS$HELP:BULL
$ LIB/HELP SYS$HELP:BULL BULLCOMSh
$ LIB/HELP SYS$HELP:BULL BULLCOMS
$ LIB/HELP SYS$HELP:HELPLIB BULLETIN
This message is being displayed by the BULLETIN facility.  This is a non-DEC
facility, so it is not described in the manuals.  System messages, such as this
one, are displayed in full.  Only topics will be displayed for non-system
messages.  Messages are submitted using the BULLETIN command.  Any user mayp
messages.  Messages are submitted using the BULLETIN command.  Any user may
submit a non-system message.  Only privileged users can submit a systems
message. For more information, see the on-line help (via HELP BULLETIN).
$ BULL*ETIN :== $SYS$SYSTEM:BULLETIN
$ BULLETIN/LOGIN
;
;  Name: SETUIC.MARn
;i
;  Type: Integer*4 Function (MACRO)o
;t
;  Name: SETUIC.MAR
;
;  Type: Integer*4 Function (MACRO)
;
;  Author: M. R. London
;
;  Date: May 31, 1983s
;s
;  Date: May 31, 1983
;
;  Purpose: To set the UIC of the current process (which turns out
;	to be the process running this program.)
;
@@ -663,26 +663,26 @@ $ BULLETIN/LOGIN
;
;	status		- $CMKRNL status return. 0 if arguments wrong.
;	group number	- longword containing UIC group numbers
;	user number	- longword containing UIC user numberE
;	user number	- longword containing UIC user number
;
;  NOTES:
;	Must link with SS:SYS.STBl
;i
;	Must link with SS:SYS.STB
;

	.Title SETUIC	Set uic
	.IDENT /830531/
;e
;  Libraries:i
;a
;
;  Libraries:
;
	.LIBRARY	/SYS$LIBRARY:LIB.MLB/
;e
;
;  Global variables:
;
	$PCBDEF
;l
;
;  Executable:
;
	.PSECT	SETUIC_CODE,EXE,NOWRT	; Executable codeO
	.PSECT	SETUIC_CODE,EXE,NOWRT	; Executable code

	.ENTRY SETUIC,^M<R2,R3>
	CLRL	R0				; 0 is error codes
@@ -702,48 +702,48 @@ $ BULLETIN/LOGIN
	.END
;
;  Name: SETUSER.MAR
;a
;  Type: Integer*4 Function (MACRO)g
;
;  Author: M. R. Londono
;i
;  Type: Integer*4 Function (MACRO)
;
;  Author: M. R. London
;
;  Date: Jan 26, 1983
;
;  Purpose: To set the Username of the current process (which turns outu
;  Purpose: To set the Username of the current process (which turns out
;	to be the process running this program.)
;
;  Usage:
;	status = SETUSER(username)
;i
;
;	status		- $CMKRNL status return. 0 if arguments wrong.
;	username	- Character string containing usernamei
;e
;  NOTES:o
;
;  NOTES:
;	Must link with SS:SYS.STB
;T
;

	.Title SETUSER	Set uicn
	.Title SETUSER	Set uic
	.IDENT /830531/
;i
;
;  Libraries:n
;g
	.LIBRARY	/SYS$LIBRARY:LIB.MLB/o
;n
;
	.LIBRARY	/SYS$LIBRARY:LIB.MLB/
;
;  Global variables:
;n
;
	$PCBDEF
	$JIBDEF
;u
;
;  local variables:
;

	.PSECT	 SETUSER_DATA,NOEXEl
	.PSECT	 SETUSER_DATA,NOEXE

NEWUSE:	.BLKB	12				; Contains new username
OLDUSE: .BLKB	12				; Contains old usernamee
;b
OLDUSE: .BLKB	12				; Contains old username
;
;  Executable:
;i
;
	.PSECT	SETUSER_CODE,EXE,NOWRT	; Executable code

	.ENTRY	SETUSER,^M<R2,R3,R4,R5,R6,R7,R8>
@@ -764,23 +764,23 @@ OLDUSE: .BLKB 12 ; Contains old usernamee
	$CMKRNL_S ROUTIN=20$		   	; Must run in kernel mode
	TSTL	R0				; If old username is checks with
   	BEQL	2$				; present process name, change
	MOVL	#2,R0				; to new username, else flage
	RET					; error and returnm
	MOVL	#2,R0				; to new username, else flag
	RET					; error and return
2$:	$CMKRNL_S ROUTIN=10$			; Must run in kernel mode
5$:	RETb
10$:	.WORD	^M<>				; Entry maskr
10$:	.WORD	^M<>				; Entry mask
	MOVL	SCH$GL_CURPCB,R7		; Address of current process
	MOVL	PCB$L_JIB(R7),R7		; Address of Job Info Blocku
	MOVL	PCB$L_JIB(R7),R7		; Address of Job Info Block
						; NOTE: MOVC destroys r0-r5h
	MOVC3	#12,NEWUSE,JIB$T_USERNAME(R7) 	; change username JIBn
	MOVC3	#12,NEWUSE,JIB$T_USERNAME(R7) 	; change username JIB
	MOVC3	#12,NEWUSE,CTL$T_USERNAME 	; change username in P1
	MOVZWL	#SS$_NORMAL,R0			; Normal ending
	RET
20$:	.WORD	^M<>				; Entry maski
20$:	.WORD	^M<>				; Entry mask
	MOVL	SCH$GL_CURPCB,R7		; Address of current process
	MOVL	PCB$L_JIB(R7),R7		; Address of Job Info Blocke
						; NOTE: MOVC destroys r0-r5s
	CMPC	R6,OLDUSE,JIB$T_USERNAME(R7) 	; change username JIBe
	MOVL	PCB$L_JIB(R7),R7		; Address of Job Info Block
						; NOTE: MOVC destroys r0-r5
	CMPC	R6,OLDUSE,JIB$T_USERNAME(R7) 	; change username JIB
	RET
	.END
$ UIC := 'F$GETJPI("","UIC")
@@ -788,34 +788,34 @@ $ SET UIC [1,4]o
$ SET PROTECT=(SYSTEM:RWE,OWNER:RWE,WORLD,GROUP)/DEFAULT
$ RUN BULLETIN
ADD/PERMANENT/SYSTEM INSTRUCT.TXT]
INFORMATION ON HOW TO USE THE BULLETIN UTILITY.M
INFORMATION ON HOW TO USE THE BULLETIN UTILITY.
EXIT
$ SET UIC 'UIC'
$ DEFAULT := 'F$FILE("SYS$LOGIN:LOGIN.COM","PRO")M
$ SET PROTECT=('DEFAULT')/DEFAULTH
;------------------------------------------------------------------------------R
$ DEFAULT := 'F$FILE("SYS$LOGIN:LOGIN.COM","PRO")
$ SET PROTECT=('DEFAULT')/DEFAULT
;------------------------------------------------------------------------------
;
;		Name: USER_OPEN
;T
;		Type: Multilple Function (MACRO)T
;8
;     		Author:	T.W.FredianM
;
;		Type: Multilple Function (MACRO)
;
;     		Author:	T.W.Fredian
;			MIT Plasma Fusion Center
;S
;
;		Date:	January 26, 1983
;U
;    		Version:h
;F
;
;    		Version:
;
;    		Purpose: Used to permit qio access to files with fortran.
;			 Returns channel and file size information and
;			 provides file truncation capability. Files opened
;			 with these useopens cannot be accessed using fortrani
;			 with these useopens cannot be accessed using fortran
;			 reads and writes and the dispose= keyword on thee
;			 close of the file will have no effect. To make thet
;			 close of the file will have no effect. To make the
;			 logical unit reuseable for normal RMS access you must
;			 deassign the channel using SYS$DASSGN(%VAL(channel))n
;			 and then use the close (unit= ) statement.
;l
;
;               Types of useropens provided:
;
;                   USER_OPEN$OLD        - open old file
@@ -823,53 +823,53 @@ $ SET PROTECT=('DEFAULT')/DEFAULTH
;                   USER_OPEN$TRUNCATE   - open old file and truncate it
;                                          to the size specified by the,
;                                          INITIALSIZE keyword of the open
;e
;              To receive the channel, open RMS status and size of the filee
;              include a common USER_OPEN as follows:L
;R
;
;              To receive the channel, open RMS status and size of the file
;              include a common USER_OPEN as follows:
;
;              Common /USER_OPEN/ CHANNEL,STATUS,SIZE
;              Integer*4 CHANNEL - I/O channel assigned to the fileH
;              Integer*4 CHANNEL - I/O channel assigned to the file
;              Integer*4 STATUS  - RMS status return of open
;              Integer*4 SIZE    - Size of the file opened in blocks
;s
;
;------------------------------------------------------------------------------
;
;	Call seqence: NONE - USEROPEN keyword of fortran OPEN statemento
;	Call seqence: NONE - USEROPEN keyword of fortran OPEN statement
;                     for example:
;
;           External USER_OPEN$NEW
;           .
;           .h
;           .o
;           OPEN (UNIT=lun,FILE=filename,....,USEROPEN=USER_OPEN$NEW)o
;           .
;           .
;           OPEN (UNIT=lun,FILE=filename,....,USEROPEN=USER_OPEN$NEW)
;
;------------------------------------------------------------------------------
;l
; 	Description:n
;t
;
; 	Description:
;
; Entry mask for USER_OPEN$OLD
; Get the FAB addressc
; Get the FAB address
; Set the user file open bit
; Open old filei
; Open old file
; Save the channel
; Save the sizey
; Save the statusl
; Save the size
; Save the status
; Return

; Entry mask for USER_OPEN$NEW
; Get the FAB addressl
; Get the FAB address
; Set the user file open bit
; Open new filep
; Open new file
; Save the channel
; Save the sizeh
; Save the statusc
; Save the size
; Save the status
; Return

; Entry mask for USER_OPEN$TRUNCATEA
; Get the FAB addressg
; Get the RAB addressr
; Save the sizeh
; Open old fileL
; Entry mask for USER_OPEN$TRUNCATE
; Get the FAB address
; Get the RAB address
; Save the size
; Open old file
; Connect file to record stream
; Load the size of the file in the RAB
; Set the access mode to relative file address
@@ -880,71 +880,70 @@ $ SET PROTECT=('DEFAULT')/DEFAULTH
; Return

; Endd
;e
;+-----------------------------------------------------------------------------i
;
;+-----------------------------------------------------------------------------

	.TITLE	USER_OPENn
	.TITLE	USER_OPEN
	.IDENT	/V_830128/

;s
;
;------------------------------------------------------------------------------
;e
;
; Global variables:e
;s
;
	.PSECT	USER_OPEN	LONG,PIC,OVR,GBL,SHR,NOEXE

CHANNEL:	.BLKL	1			; Channel numberi
CHANNEL:	.BLKL	1			; Channel number
STATUS:		.BLKL	1			; Status return of open
SIZE:		.BLKL	1			; Size of file.

;s
;------------------------------------------------------------------------------o
;n
; Executable:n
;c
	.PSECT	$CODE	LONG,PIC,USR,CON,REL,LCL,SHR,EXE,RD,NOWRT,NOVECt
;
;------------------------------------------------------------------------------
;
; Executable:
;
	.PSECT	$CODE	LONG,PIC,USR,CON,REL,LCL,SHR,EXE,RD,NOWRT,NOVEC

	.ENTRY	USER_OPEN$OLD,^M<R2>		; Entry mask for USER_OPEN$OLD
        MOVL	4(AP),R2			; Get the FAB addressa
        MOVL	4(AP),R2			; Get the FAB address
	INSV	#1,#FAB$V_UFO,#1,FAB$L_FOP(R2)	; Set the user file open bits
	$OPEN	FAB=(R2)			; Open old filea
	$OPEN	FAB=(R2)			; Open old file
        MOVL	FAB$L_STV(R2),CHANNEL		; Save the channel
	MOVL	FAB$L_ALQ(R2),SIZE		; Save the sizeh
	MOVL	FAB$L_ALQ(R2),SIZE		; Save the size
	MOVL	R0,STATUS			; Save the status
	RET					; Returne
	RET					; Return

        .ENTRY  USER_OPEN$NEW,^M<R2>		; Entry mask for USER_OPEN$NEW
	MOVL	4(AP),R2			; Get the FAB address
	INSV	#1,#FAB$V_UFO,#1,FAB$L_FOP(R2)	; Set the user file open bito
	INSV	#1,#FAB$V_UFO,#1,FAB$L_FOP(R2)	; Set the user file open bit
	INSV	#0,#FAB$V_CBT,#1,FAB$L_FOP(R2)	; Disable contiguous best try
	$CREATE	FAB=(R2)			; Open new filea
	$CREATE	FAB=(R2)			; Open new file
        MOVL	FAB$L_STV(R2),CHANNEL		; Save the channel
	MOVL	FAB$L_ALQ(R2),SIZE		; Save the sizeh
	MOVL	R0,STATUS			; Save the statuss
	RET					; Returnr
	MOVL	FAB$L_ALQ(R2),SIZE		; Save the size
	MOVL	R0,STATUS			; Save the status
	RET					; Return

	.ENTRY	USER_OPEN$TRUNCATE,^M<R2,R3,R4,R5>	; Entry mask for USER_OPEN$TRUNCATE
        MOVL	4(AP),R2			; Get the FAB addresst
        MOVL	4(AP),R2			; Get the FAB address
	MOVL	8(AP),R3			; Get the RAB address
	MOVL	FAB$L_ALQ(R2),R4		; Save the sizen
	MOVL	FAB$L_ALQ(R2),R4		; Save the size
	INCL	R4				; Increment the size
	INSV	#0,#FAB$V_SQO,#1,FAB$L_FOP(R2)	; Clear the sequential only bit
	$OPEN	FAB=(R2)			; Open old fileE
	$OPEN	FAB=(R2)			; Open old file
	BLBC	R0,CLOSE			; If unsuccessful branch to close
	$CONNECT RAB=@8(AP)			; Connect file to record stream
        BLBC	R0,CLOSE			; If unsuccessful branch to closeS
	MOVL	R4,RAB$L_RFA0(R3)		; Load the size of the file in the RABA
        BLBC	R0,CLOSE			; If unsuccessful branch to close
	MOVL	R4,RAB$L_RFA0(R3)		; Load the size of the file in the RAB
	MOVW	#0,RAB$W_RFA4(R3)O
	MOVB	#RAB$C_RFA,RAB$B_RAC(R3)	; Set the access mode to relative file addressE
	MOVB	#RAB$C_RFA,RAB$B_RAC(R3)	; Set the access mode to relative file address
	$FIND	RAB=(R3)			; Find the last record in the file
	BLBC	R0,CLOSE			; If unsuccessful branch to close
	$TRUNCATE RAB=(R3)			; Place the end of file marker at this location
	INSV	#1,#FAB$V_TEF,#1,FAB$L_FOP(R2)	; Mark the file to be truncated on closeT
	INSV	#1,#FAB$V_TEF,#1,FAB$L_FOP(R2)	; Mark the file to be truncated on close
CLOSE:	PUSHL	R0				; Save error status
	$CLOSE	FAB=(R2)			; Close the fileL
	$CLOSE	FAB=(R2)			; Close the file
	POPL	R0				; Restore error status
	MOVL    R0,STATUS			; Return the status
	RET					; ReturnO

	.END					; End8
	RET					; Return

	.END					; End
+20 −20
Original line number Diff line number Diff line
@@ -9,45 +9,45 @@ BULLUSER.DAT. These files are opened with the shared attribute as much as
possible to allow simultaneous operations on the files.  However, when a
bulletin is added or deleted, the file cannot be shared, as this might cause
the file to be corrupted.  Because of this problem, files are closed as soon as
possible so that it may be quickly opened for adding and deleting files. e
During read operations, the information is passed to temporary storage, thes
possible so that it may be quickly opened for adding and deleting files.
During read operations, the information is passed to temporary storage, the
file is closed, and then the information is sent to the terminal. This avoids at
possible problem where the terminal output is stopped by the user, therefore
delaying the closing of the file.  Also, the use of CTRL-Y & CTRL-C is disablede
delaying the closing of the file.  Also, the use of CTRL-Y & CTRL-C is disabled
while the file is opened to avoid lockout problems.c

BULLETIN.DAT stores the actual bulletins in a fixed 80 character length file.k
Bulletins are store sequentially datewise.  New bulletins are appended to thet
end of the file.  When a bulletin is deleted, all the following bulletins arei
moved up in the file to remove the gap, and the file is then truncated toi
remove the unused space. u
Bulletins are store sequentially datewise.  New bulletins are appended to the
end of the file.  When a bulletin is deleted, all the following bulletins are
moved up in the file to remove the gap, and the file is then truncated to
remove the unused space.

BULLDIR.DAT is a fixed record length file storing directory entries for each
bulletin in BULLETIN.DAT. Each entry contains the header information, length,L
and starting record position in BULLETIN.DAT.  The first line of BULLDIR.DAT ist
a header containing the date of the next expiration that will occur, the datef
and starting record position in BULLETIN.DAT.  The first line of BULLDIR.DAT is
a header containing the date of the next expiration that will occur, the date
of the latest sumbitted bulletin, the number of bulletins, and the total size
of BULLETIN.DAT.  The last two numbers make it easier to add bulletins. Thet
directory entries then follow, again stored sequentially datewise. r
of BULLETIN.DAT.  The last two numbers make it easier to add bulletins. The
directory entries then follow, again stored sequentially datewise.

NOTE: There are several advantages to keeping a seperate directory file versus
storing the header information with the actual bulletin.  Obviously, it avoids
having to scan through a large bulletin file just to extract headert
information.  This operation is done when a DIRECTORY listing is requested inu
having to scan through a large bulletin file just to extract header
information.  This operation is done when a DIRECTORY listing is requested in
BULLETIN.  More importantly when a login occurs, non-system bulletins just
require that the header information be displayed.  Having a file with pointers
to where the bulletin is stored also avoids requiring the software to read all
the previous bulletins in order to arrive at the desired bulletin.  The main
disadvantage is the extra time spent on locating the second file.  This time
appears to be minimal. In all the software, the convention is to open theI
directory file first, and then if needed to open the bulletin file.  Wheno
adding and delete files, this becomes important, as files are opened unshared. d
appears to be minimal. In all the software, the convention is to open the
directory file first, and then if needed to open the bulletin file.  When
adding and delete files, this becomes important, as files are opened unshared.
A deadlock might occur if one user opens the bulletin file first while another
user opens the directory file, and then each try to open the alternate file.

BULLUSER.DAT is a relative indexed file, where the keyword is the username ofe
BULLUSER.DAT is a relative indexed file, where the keyword is the username of
the user.  Each entry contains the latest time that the user logged in, plus
the latest time that the BULLETIN utility was used to read bulletins.  A headere
the latest time that the BULLETIN utility was used to read bulletins.  A header
entry with a blank username stores the latest bulletin date.  The information
in this file is used for checking to see if the user should be alerted to newf
bulletins or not.
in this file is used for checking to see if the user should be alerted to new
bulletins or not.
+430 −431

File changed and moved.

Preview size limit exceeded, changes collapsed.

Loading