Loading batch/seed/1985c-announce.mai→batch/seed/1985c-announce_mai.txt +0 −1 Original line number Diff line number Diff line Loading @@ -76,4 +76,3 @@ smart enough to delete obsolete files.) Mark R. London MRL%PFCVAX@MC batch/seed/1985c-bullet.mai→batch/seed/1985c-bullet_mai.txt +173 −174 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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] Loading @@ -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$ Loading @@ -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 Loading @@ -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) Loading Loading @@ -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) Loading @@ -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) Loading @@ -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.) ; Loading @@ -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 Loading @@ -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> Loading @@ -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") Loading @@ -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 Loading @@ -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 Loading @@ -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 batch/seed/1985c-bulletin.txt +20 −20 Original line number Diff line number Diff line Loading @@ -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. batch/seed/1985c-file1.mai→batch/seed/1985c-file1_mai.txt +0 −0 File moved. View file batch/seed/1985c-file2.mai→batch/seed/1985c-file2_mai.txt +430 −431 File changed and moved.Preview size limit exceeded, changes collapsed. Show changes Loading
batch/seed/1985c-announce.mai→batch/seed/1985c-announce_mai.txt +0 −1 Original line number Diff line number Diff line Loading @@ -76,4 +76,3 @@ smart enough to delete obsolete files.) Mark R. London MRL%PFCVAX@MC
batch/seed/1985c-bullet.mai→batch/seed/1985c-bullet_mai.txt +173 −174 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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] Loading @@ -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$ Loading @@ -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 Loading @@ -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) Loading Loading @@ -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) Loading @@ -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) Loading @@ -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.) ; Loading @@ -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 Loading @@ -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> Loading @@ -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") Loading @@ -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 Loading @@ -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 Loading @@ -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
batch/seed/1985c-bulletin.txt +20 −20 Original line number Diff line number Diff line Loading @@ -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.
batch/seed/1985c-file2.mai→batch/seed/1985c-file2_mai.txt +430 −431 File changed and moved.Preview size limit exceeded, changes collapsed. Show changes