Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_SRC_1_19910112 - 7/ft3/monitor/stanford/jsysf.dif
There are no other files named jsysf.dif in the archive.

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 1



LINE 1, PAGE 1
1)	;[MACBETH.STANFORD.EDU]SRC:<7.FT3.MONITOR.STANFORD>JSYSF.MAC.3, 22-Jun-88 15:29:58, Edit by A.ALDERSON
1)	; Remove duplicate call to CHPLEN at CDDR2A+12.
1)	;[MACBETH.STANFORD.EDU]SRC:<7.FT3.MONITOR.STANFORD>JSYSF.MAC.2, 20-Jun-88 14:13:18, Edit by A.APPLEHACKS
1)	; FT7 Clock Merge
1)	;
1)	; UPD ID= 8715, RIP:<7.MONITOR>JSYSF.MAC.18,  19-May-88 16:10:38 by GSCOTT
1)	;TCO 7.1290 - Don't enforce minimum password length if CRDIR called from
1)	; monitor mode (like from FILCRD when building directories on a new structure).
1)	; UPD ID= 8684, RIP:<7.MONITOR>JSYSF.MAC.17,  17-Mar-88 19:12:21 by RASPUZZI
1)	;TCO 7.1257 - Make DIRINI entry point for CRDIR%.
1)	;
1)	;[MACBETH]SRC:<7.FT2.MONITOR.STANFORD>JSYSF.MAC.2,  6-Apr-88 03:09:25, Edit by A.APPLEHACKS
1)	; FT7.2 Merge
1)	; UPD ID= 8665, RIP:<7.MONITOR>JSYSF.MAC.16,  24-Feb-88 17:40:48 by RASPUZZI
LINE 1, PAGE 1
2)	;[SRI-NIC]SRC:<MONITOR>JSYSF.MAC.2, 14-Nov-88 15:43:43, Edit by MKL
2)	; v7 merge
2)	;[SRI-NIC]XS:<NEWMON>JSYSF.MAC.2,  9-Dec-86 13:05:40, Edit by MKL
2)	; take out edit 7304 as it appears to break edit 6
2)	;[SRI-NIC]XS:<SU-61SU>JSYSF.MAC.2,  5-Dec-86 15:08:24, Edit by MKL
2)	;;[SRI-NIC]PS:<MKL>JSYSF.MON.2,  3-Mar-86 16:26:17, Edit by MKL
2)	;;try out the following edit from SRI-KL
2)	;; <4-MONITOR>JSYSF.MAC.3 7-FEB-82 15:00:00 EDIT BY COWER
2)	;; 6 Change RCDIR to allow a string without a colon and without the initial
2)	;;   directory punctuation to be interpreted as a directory on the connected
2)	;;   structure
2)	;;SS:<6-1-MONITOR>JSYSF.MAC.3, 29-Oct-85 11:30:13, Edit by KNIGHT
2)	;; Enable last reader code
2)	;<6-1-MONITOR>JSYSF.MAC.76, 20-Feb-86 13:37:54, Edit by LOUGHEED
2)	; Make CRDIR% set an encrypted password even if the structure does not
2)	;  have password encryption.  Don't screw DLUSER filesystem restorations.
2)	;<6-1-MONITOR.FT6>JSYSF.MAC.2, 12-Aug-85 17:08:42, Edit by WHP4
2)	; Stanford changes:
2)	; Fix ARCF% bug
2)	; Allow WOPR to manipulate non-owned TTY's
2)	; Flag archive/migrate set requests (to speed up DUMPER)
2)	; Canonicalize TTY designators into device designators in ASND% ACJ hook
2)	; Improved GTOKM for CRDIR%
2)	; Allow WOPR to set working quota under usage
2)	; Allow WOPR to override list of allowable usergroups
2)	; Implement last reader function (.GFLRD) in GFUST
2)	
2)	; Edit= 8856 to JSYSF.MAC on 5-Jul-88 by GSCOTT
2)	;Insure that no partial directory is built when CRDIR bombs in new directory. 
2)	; Edit= 8844 to JSYSF.MAC on 19-May-88 by GSCOTT (TCO 7.1290)
2)	;Prevent <OPERATOR> directory from getting full of zeroes when a new structure
2)	;is created and minimum password length is greater than 6 by not checking
2)	;minimum password length when CRDIR called from monitor mode. 

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 2


2)	; Edit= 8831 to JSYSF.MAC on 15-Apr-88 by RASPUZZI
2)	;Prevent bad error messages from JFNS% when COPYing from TTY:. Seems we are
2)	;leaving the FILLCK set because UNLCKF does not undo FILLCK for TTYs. Make
2)	;sure FILLCK is cleared before exitting JFNS%.
2)	; Edit= 8829 to JSYSF.MAC on 14-Apr-88 by RASPUZZI
2)	;Prevent more hung jobs by having JFNS% release the FILLCK along with the
2)	;JFNLCK before potentially page faulting.
2)	; Edit= 8820 to JSYSF.MAC on 7-Apr-88 by RASPUZZI
2)	;Mr. VANISH is back! Fix yet another hung job case where JFNS% is using a copy
2)	;on write page to barf the file name into. Release the JFNLCK before
2)	;outputting characters.
2)	; Edit= 8817 to JSYSF.MAC on 31-Mar-88 by RASPUZZI
2)	;Prevent hung jobs because edit 8801 missed to exit points of JFNS% in the
2)	;attribute handling routine.
2)	; Edit= 8811 to JSYSF.MAC on 29-Mar-88 by RASPUZZI, for SPR #21880
2)	;Install edit 8804 into 7.0 monitor. Note, there is no bug here, it has been
2)	;installed to protect the monitor's innocence for later editting in case
2)	;someone gets into edit 3062 dangerousness.
2)	; Edit= 8801 to JSYSF.MAC on 17-Mar-88 by RASPUZZI
2)	;Prevent ILMNRFs or RELBADs by having GNJFN% and JFNS% use the JFNLCK when
2)	;dealing with important information in the JFN block. 
2)	; UPD ID= 8684, RIP:<7.MONITOR>JSYSF.MAC.17,  17-Mar-88 19:12:21 by RASPUZZI
2)	;TCO 7.1257 - Make DIRINI entry point for CRDIR%.
2)	; UPD ID= 8665, RIP:<7.MONITOR>JSYSF.MAC.16,  24-Feb-88 17:40:48 by RASPUZZI


LINE 29, PAGE 1
1)	;[MACBETH.STANFORD.EDU]SRC:<7.FT1.MONITOR.STANFORD>JSYSF.MAC.3, 16-Feb-88 07:11:45, Edit by A.ALDERSON
1)	; Correct "'" to ";"
1)	;[MACBETH.STANFORD.EDU]SRC:<7.FT1.MONITOR.STANFORD>JSYSF.MAC.2, 23-Jan-88 19:01:40, Edit by A.APPLEHACKS
1)	; FT7 Merge	stanford v5.3 <-> v6.0 kludge repeat 0'd. kill if desired.
1)	; NON-PS LOGIN STUFF NOT MERGED YET. -ESC
1)	;
1)	;SIERRA::SRC:<6.1.MONITOR.STANFORD>JSYSF.MAC.5, 13-Mar-87 14:27:10, Edit by GROSSMAN
1)	; Supply .CDPRV to CRDIR% GTOKM.
1)	;SIERRA::SRC:<6.1.MONITOR.STANFORD>JSYSF.MAC.3, 23-Oct-86 13:36:42, Edit by GROSSMAN
1)	;Add paul Hegarty's non-PS login stuff
1)	;
1)	; UPD ID= 248, RIP:<7.MONITOR>JSYSF.MAC.9,   4-Nov-87 16:40:52 by MCCOLLUM
LINE 72, PAGE 1
2)	; UPD ID= 248, RIP:<7.MONITOR>JSYSF.MAC.9,   4-Nov-87 16:40:52 by MCCOLLUM

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 3



LINE 100, PAGE 1
1)	;------------------------- Autopatch Tape # 13 -------------------------
1)	; *** Edit 7207 to JSYSF.MAC by WAGNER on 9-Dec-85
1)	; Fix RETRIEVAL so that multiple requests do not result in failures due to lack
1)	; of free space. Reduce incidence of FSPOUT BUGINFs. 
1)	;------------------------- Autopatch Tape # 12 -------------------------
1)	; *** Edit 7196 to JSYSF.MAC by WONG on 19-Nov-85, for SPR #20883
LINE 132, PAGE 1
2)	; *** Edit 7207 to JSYSF.MAC by WAGNER on 9-Dec-85
2)	; Fix RETRIEVAL so that multiple requests do not result in failures due to lack
2)	; of free space. Reduce incidence of FSPOUT BUGINFs. 
2)	; *** Edit 7196 to JSYSF.MAC by WONG on 19-Nov-85, for SPR #20883


LINE 127, PAGE 1
1)	;<6-1-MONITOR>JSYSF.MAC.76, 20-Feb-86 13:37:54, Edit by LOUGHEED
1)	; Make CRDIR% set an encrypted password even if the structure does not
1)	;  have password encryption.  Don't screw DLUSER filesystem restorations.
1)	;<6-1-MONITOR.FT6>JSYSF.MAC.2, 12-Aug-85 17:08:42, Edit by WHP4
1)	; Stanford changes:
1)	; Fix ARCF% bug
1)	; Directory format conversion code for going from 5.X to 6.0
1)	; Allow WOPR to manipulate non-owned TTY's
1)	; Flag archive/migrate set requests (to speed up DUMPER)
1)	; Canonicalize TTY designators into device designators in ASND% ACJ hook
1)	; Improved GTOKM for CRDIR%
1)	; Allow WOPR to set working quota under usage
1)	; Allow WOPR to override list of allowable usergroups
1)	;Sumex changes:
1)	; Implement last reader function (.GFLRD) in GFUST
1)	;PUP changes:
1)	; SIBE% works for Pup JFNs
1)	;
1)	; UPD ID= 2093, SNARK:<6.1.MONITOR>JSYSF.MAC.78,   3-Jun-85 14:49:19 by MCCOLLUM
LINE 157, PAGE 1
2)	; UPD ID= 2093, SNARK:<6.1.MONITOR>JSYSF.MAC.78,   3-Jun-85 14:49:19 by MCCOLLUM


LINE 33, PAGE 31
1)		MOVE B,-1(P)		;PASS DOWN JFN
1)		CALL CLZDO		;DO THE WORK
LINE 33, PAGE 31
2)		HRRZ B,-1(P)		;[8811] Get JFN number only
2)		CALL CLZDO		;DO THE WORK

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 4



LINE 45, PAGE 35
1)		CALL CRDIR0		;GO DO THE WORK
1)		 ITERR ()		;AN ERROR OCCURED
1)		JRST MRETN		;EXIT
LINE 45, PAGE 35
2)		NOINT			;[8856] Be NOINT the entire time
2)		CALL CRDIR0		;GO DO THE WORK
2)		 ITERR (,OKINT)		;[8856] An error occured
2)		OKINT			;[8856] Housekeeping 
2)		JRST MRETN		;EXIT


LINE 49, PAGE 36
1)	CRDIR0:: EA.ENT
LINE 48, PAGE 36
2)	CDERR==777777B35		;[8856] Error code that bombed new dir create
2)	
2)	CRDIR0:: EA.ENT


LINE 57, PAGE 37
1)		  SETZ C,		;PRESUME NO PRIVS
1)		  TXNE Q3,CD%PRV	;CHANGING PRIVS?
1)		   UMOVE C,.CDPRV(Q2)	;YES, GET THAT TOO
1)		  GTOKM (.GOCRD,<Q3,CRDIRD,B,C>,[RETBAD (GOKER2,<CALL CRDIR6>)])
1)		  MOVE C,CRDIRD		;RESTORE C TO IT'S PRISTINE STATE
1)		ENDIF.
LINE 57, PAGE 37
2)		  GTOKM (.GOCRD,<Q3,CRDIRD,B>,[RETBAD (GOKER2,<CALL CRDIR6>)])
2)		ENDIF.


LINE 24, PAGE 41
1)		MOVE A,CRDIRJ		;GET THE JFN
LINE 1, PAGE 44
2)	;Get superior directory number and save for later.  If user can connect to
2)	;superior directory without a password, he is a logical WHEEL for this
2)	;directory.
2)	
2)		MOVE A,CRDIRJ		;GET THE JFN

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 5



LINE 44, PAGE 41
1)		TXNE B,CD%DIR		;IS THIS A FILES-ONLY DIRECTORY?
1)		JRST [	MOVX B,CDDIR	;YES. INDICATE IT IN THE LOCAL FLAG WORD
1)			IORM B,CRDFLG	;..
1)			JRST .+1]
1)		CALL USTDIR		;UNLOCK DIR
1)		HRRZ A,CRDIRJ		;GET JFN OF DIRECTORY FILE
LINE 25, PAGE 44
2)		TXNN B,CD%DIR		;[8856] Is this a FILES-ONLY directory?
2)		IFSKP.			;[8856] Yes
2)		  MOVX B,CDDIR		;[8856] Load the local flag 
2)		  IORM B,CRDFLG		;[8856] Set it in the local flag word
2)		ENDIF.			;[8856] 
2)		CALL USTDIR		;UNLOCK DIR
2)	
2)	;See if directory file exists, and remember dir number if it does exist.
2)	
2)		HRRZ A,CRDIRJ		;GET JFN OF DIRECTORY FILE


LINE 54, PAGE 41
1)		JRST [	MOVEI A,CRDIX9	;NO, ILLEGAL FORMAT DIRECTORY FILE
1)			JRST CRDIR4]	;GO CLEAN UP AND BOMB OUT
1)		MOVE B,[1,,.FBDRN]	;GET DIR NUMBER
LINE 39, PAGE 44
2)		ERRJMP (CRDIX9,CRDIR4)	;[8856] Internal format of dir is incorrect
2)		MOVE B,[1,,.FBDRN]	;GET DIR NUMBER


LINE 63, PAGE 41
1)		;..
1)	^L;HERE WHEN CREATING A NEW DIRECTORY
LINE 1, PAGE 45
2)	^L;HERE WHEN CREATING A NEW DIRECTORY


LINE 9, PAGE 46
1)		JRST [	MOVEI A,CRDIX1	;NO
1)			JRST CRDIR4]
1)		HLLZ A,Q3		;GET REQUESTED FUNCTIONS
LINE 9, PAGE 52
2)		ERRJMP (CRDIX1,CRDIR4)	;[8856] No
2)		HLLZ A,Q3		;GET REQUESTED FUNCTIONS

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 6



LINE 21, PAGE 46
1)		 JRST [	CALL USTDIR	;NO. UNLOCK THE DIRECTORY LOCKED BY SETDIR
1)			MOVEI A,CRDIX1	;WHEEL OR OPERATOR REQUIRED
1)			JRST CRDIR4]	;TAKE ERROR RETURN
1)		MOVE B,DIRORA		;GET ADDRESS OF MAPPED DIRECTORY
1)		LOAD B,DRPSW,(B)	;GET OFFSET OF PASSWORD BLOCK
1)		SKIPN B			;IF NONE, DIRECTORY HAS NO PASSWORD
1)		 JRST [	CALL USTDIR	;UNLOCK THE DIRECTORY LOCKED BY SETDIR
1)			MOVEI A,CRDIX1	;WHEEL OR OPERATOR REQUIRED
1)			JRST CRDIR4]	;TAKE ERROR RETURN
1)		ADD B,DIRORA		;GET ABSOLUTE ADDRESS OF PASSWORD BLOCK
1)		MOVE C,1(B)		;GET FIRST WORD AFTER HEADER
1)		TLNN C,774000		;IF FIRST CHARACTER IS NULL, NO PASSWORD
1)		 JRST [	CALL USTDIR	;UNLOCK THE DIRECTORY LOCKED BY SETDIR
1)			MOVEI A,CRDIX1	;WHEEL OR OPERATOR REQUIRED
1)			JRST CRDIR4]	;TAKE ERROR RETURN
1)		UMOVE B,3		;GET POINTER TO PASSWORD AS INPUT BY USER
LINE 20, PAGE 52
2)		 ERRJMP (CRDIX1,CRDIR7)	;[8856] No, wheel or operator required
2)		MOVE B,DIRORA		;GET ADDRESS OF MAPPED DIRECTORY
2)		LOAD B,DRPSW,(B)	;GET OFFSET OF PASSWORD BLOCK
2)		SKIPN B			;IF NONE, DIRECTORY HAS NO PASSWORD
2)		ERRJMP (CRDIX1,CRDIR7)	;[8856] Wheel or operator required
2)		ADD B,DIRORA		;GET ABSOLUTE ADDRESS OF PASSWORD BLOCK
2)		MOVE C,1(B)		;GET FIRST WORD AFTER HEADER
2)		TLNN C,774000		;IF FIRST CHARACTER IS NULL, NO PASSWORD
2)		ERRJMP (CRDIX1,CRDIR7)	;[8856] Wheel or operator required if no pswd
2)		UMOVE B,3		;GET POINTER TO PASSWORD AS INPUT BY USER


LINE 9, PAGE 47
1)		RETBAD (CRDIX2)		;NO, DIR NUMBER MUST MATCH EXISTING #
1)		TXNE Q3,CD%DEL		;DELETE WANTED?
LINE 9, PAGE 53
2)		ERRJMP (CRDIX2,CRDIR4)	;[8856] No, dir number must match existing num
2)		TXNE Q3,CD%DEL		;DELETE WANTED?


LINE 37, PAGE 47
1)		 RETBAD(CRDIX4,<ULKDIR	;FAILED TO GET ROOM IN DIR
1)				JRST CRDIR4>)
1)		MOVEI B,.TYNAM		;MARK THIS AS A NAME STRING
LINE 37, PAGE 53
2)		 ERRJMP (CRDIX4,CRDIR7)	;[8856] Failed to get room, return error
2)		MOVEI B,.TYNAM		;MARK THIS AS A NAME STRING

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 7



LINE 3, PAGE 48
1)	REPEAT 0,<IFN STANSW,<
1)	;THIS CODE ALLOWS US TO CONVERT BETWEEN RELEASE 5.3 AND 6.0 FILESYSTEMS
1)	;THE FLAG SUFCNV ENABLES AND CONTROLS THE DIRECTION OF THIS FUNCTIONALITY.
1)	;THIS CODE IS INVOKED BY SETTING CD%CNV IN THE .CDLEN WORD OF THE CRDIR% BLOCK.
1)	;REMOVE THIS CRUFT WHEN ALL SU SITES AND CLONES ARE RUNNING 6.0 OR BETTER.
1)	
1)	RSI SUFCNV,<0>			;0 = NO ACTION, THE DEFAULT
1)					;-1 = FROM 5.3 TO 6.0
1)					;+1 = FROM 6.0 TO 5.3
1)	
1)		SKIPN A,SUFCNV		;IS FILESYSTEM CONVERSION ALLOWED?
1)		 JRST CRDSU2		;NO, SKIP AROUND THIS CODE
1)		MOVE B,CRDUFL		;GET BACK USER FLAGS
1)		TXNN B,CD%CNV		;REQUESTING DIRECTORY FORMAT CONVERSION?
1)		 JRST CRDSU2		;NO, SKIP AROUND THIS CODE
1)		JUMPG A,CRDSU1		;JUMP IF WANT TO ROLLBACK TO 5.3
1)	IFE LOTSW,<
1)		SETZ A,			;SET UP A ZERO
1)		EXCH A,60(Q1)		;CLEAR OLD FORMAT PASSWORD CHANGE DAT
1)		SKIPN A			;SKIP IF THERE WAS A TIME SET
1)		 CALL LGTAD		;ELSE USE CURRENT TAD
1)		STOR A,DRPDT,(Q1)	;STORE VALUE IN NEW PLACE
1)	>;IFE LOTSW
1)		LOAD A,DRMOD,(Q1)	;GET DIRECTORY MODE WORD
1)		TXZN A,CD%CRP		;IS THE PASSWORD ENCRYPTED IN SU FORMAT?
1)		 JRST CRDSU2		;NO, JUMP TO END CODE
1)		STOR A,DRMOD,(Q1)	;UPDATE THE MODE WORD
1)		MOVEI A,400001		;GET VERSION NUMBER FOR SU ENCRYPTION
1)		STOR A,DRPEV,(Q1)	;UPDATE THE VERSION WORD
1)		JRST CRDSU2		;REJOIN MAIN CRDIR% CODE
1)	
1)	;HERE TO PERFORM THE ROLLBACK FUNCTION.  I HOPE NO ONE NEEDS TO USE IT.
1)	
1)	CRDSU1:	LOAD A,DRPEV,(Q1)	;GET ENCRYPTION VERSION NUMBER
1)		LOAD B,DRMOD,(Q1)	;GET MODE WORD
1)		SKIPE A			;SKIP IF NOT ENCRYPTED
1)		 TXO B,CD%CRP		;ELSE SET THE ENCRYPTION BIT
1)		STOR B,DRMOD,(Q1)	;UPDATE THE MODE WORD
1)	IFE LOTSW,<
1)		LOAD A,DRPDT,(Q1)	;GET TAD OF PASSWORD CREATION
1)		MOVEM A,60(Q1)		;STASH IN OLD PLACE
1)	>;IFE LOTSW
1)	CRDSU2:
1)	>;IFN STANSW
1)	>; REPEAT 0
1)	
1)	;SET PASSWORD
LINE 3, PAGE 54

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 8


2)	;SET PASSWORD


LINE 66, PAGE 48
1)		RETBAD (CRDIX1,<ULKDIR>) ; in order to change password to null
1)	GPVR1:	SETZM T2		;Null password always uses encryption version 0
LINE 20, PAGE 54
2)		ERRJMP (CRDIX1,CRDIR7)	;[8856] Nope, return error
2)	GPVR1:	SETZM T2		;Null password always uses encryption version 0


LINE 71, PAGE 48
1)	CRDR2A:	UMOVE T1,.CDPSW(Q2)	;Get pointer to password
1)		CALL CPYFUS		;Copy to free storage
1)		 RETBAD (CRDIX3,<ULKDIR>) ;JSB full
1)		HRLI T1,-7		;Make lookup pointer to JSB block
LINE 26, PAGE 54
2)	;Password is not null, copy to monitor space
2)	
2)	CRDR2A:	UMOVE T1,.CDPSW(Q2)	;Get pointer to password
2)		CALL CPYFUS		;Copy to free storage
2)		 ERRJMP (CRDIX3,CRDIR7)	;[8856] JSB full
2)		HRLI T1,-7		;Make lookup pointer to JSB block


LINE 79, PAGE 48
1)	        CALL CKMMOD             ;[7.1290] Check if previous context monitor
LINE 37, PAGE 54
2)	;Check password length if CRDIR not called from monitor.
2)	
2)		CALL CKMMOD		;[7.1290] Check if previous context monitor


LINE 83, PAGE 48
1)		 RETBAD (CRDI30,<CALL CRDIR6
1)				 ULKDIR>) ;[7.1231] Password not long enough
1)	CRDR2B:	SETZM T1		;[7.1290] Assume unencrypted structure
LINE 43, PAGE 54
2)		 ERRJMP (CRDI30,CRDIR7)	;[8856] Password not long enough
2)		;..
   {Skipped 1 page and 1 line}
2)	;Here when password is of proper length, check for encryption
2)	
2)	CRDR2B:	SETZM T1		;[7.1290] Assume unencrypted structure

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 9



LINE 98, PAGE 48
1)	         RETBAD(CRDI28,<CALL CRDIR6
1)				ULKDIR>) ;Bad version number
1)	SKPENC:	JRST CRDRP2		;Go store the password
1)	
1)		;Here if password encryption version number was supplied
1)	CRDRP1:	HRRZ T2,CRDUFL		;Get length of arguments
1)		CAIGE T2,.CDPDT		;Are they there? (version and date)
1)		 RETBAD(CRDI26,<CALL CRDIR6
1)				ULKDIR>)
1)		UMOVE T1,.CDPEV(Q2)	;Get user-supplied encryption version
LINE 17, PAGE 55
2)		 ERRJMP (CRDI28,CRDIR7)	;[8856] Bad version number probably
2)	SKPENC:	JRST CRDRP2		;Go store the password
2)	
2)	;Here if encrypted password with version number was supplied
2)	
2)	CRDRP1:	HRRZ T2,CRDUFL		;Get length of arguments
2)		CAIGE T2,.CDPDT		;Are they there? (version and date)
2)		ERRJMP (CRDI26,CRDIR7)	;[8856] Nope
2)		UMOVE T1,.CDPEV(Q2)	;Get user-supplied encryption version


LINE 115, PAGE 48
1)		 RETBAD(CRDI27,<CALL CRDIR6
1)				ULKDIR>)
1)	>;IFE STANSW
1)	
1)	CRDP1A:	CALL CHKPEV		;Test validity of encryption version number
1)		 RETBAD(CRDI28,<CALL CRDIR6
1)				ULKDIR>) ;Bad version number
1)		STOR T1,DRPEV,(Q1)	; And remember it
1)		UMOVE T1,.CDPDT(Q2)	;Get user-supplied encryption date
1)		STOR T1,DRPDT,(Q1)	; And remember it
1)	CRDRP2:	MOVE T1,CRDIRN		;Recover JSB address
1)		CALL SETMSK		;Store in directory
1)		CALL CPYDIR		;And copy string to directory
1)		 RETBAD(CRDIX4,<CALL CRDIR6
1)				ULKDIR>)
1)		MOVEI B,.TYNAM		;MARK AS NAME BLOCK
LINE 32, PAGE 55
2)		ERRJMP (CRDI27,CRDIR7)	;[8856] Nope
2)	>;IFE STANSW
2)	
2)	CRDP1A:	CALL CHKPEV		;Test validity of encryption version number
2)		 ERRJMP (CRDI28,CRDIR7)	;[8856] Bad version number
2)		STOR T1,DRPEV,(Q1)	; And remember it
2)		UMOVE T1,.CDPDT(Q2)	;Get user-supplied encryption date
2)		STOR T1,DRPDT,(Q1)	; And remember it

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 10


2)	
2)	;Here with properly encrypted password to set in directory.
2)	
2)	CRDRP2:	MOVE T1,CRDIRN		;Recover JSB address
2)		CALL SETMSK		;Store in directory
2)		CALL CPYDIR		;And copy string to directory
2)		 ERRJMP (CRDIX4,CRDIR7)	;[8856] Owie
2)		MOVEI B,.TYNAM		;MARK AS NAME BLOCK


LINE 145, PAGE 48
1)		 RETBAD (CRDIX3,<ULKDIR>)
1)		MOVEM A,CRDIRN		;SAVE ADDRESS OF STRING
1)		CALL SETMSK		;STORE IN DIRECTORY
1)		CALL CPYDIR		;AND COPY STRING TO DIRECTORY
1)		 RETBAD (CRDIX4,<CALL CRDIR6
1)				 ULKDIR>)
1)		MOVEI B,.TYNAM		;MARK IT AS A NAME BLOCK
LINE 7, PAGE 56
2)		 ERRJMP (CRDIX3,CRDIR7)	;[8856] JSB free space?
2)	
2)		CALL SETMSK		;STORE IN DIRECTORY
2)		CALL CPYDIR		;AND COPY STRING TO DIRECTORY
2)		 ERRJMP (CRDIX4,CRDIR7)	;[8856] Can't do it
2)		MOVEI B,.TYNAM		;MARK IT AS A NAME BLOCK


LINE 8, PAGE 49
1)		TXNN B,SC%WHL!SC%OPR	;UNLESS WHOPER
1)		JRST [	MOVE B,A
1)			ANDCM B,CAPENB
1)			JUMPE B,.+1
1)			MOVEI A,CRDI20
1)			CALL USTDIR
1)			JRST CRDIR4]
1)		STOR A,DRPRV,(Q1)	;YES
1)		;..
LINE 8, PAGE 57
2)		TXNE B,SC%WHL!SC%OPR	;[8856] Privs enabled right now?
2)		IFSKP.			;[8856] Nope
2)		  MOVE B,A		;[8856] Copy requested priv word
2)		  ANDCM B,CAPENB	;[8856] Leave requested bits we don't have
2)		  IFN. B		;[8856] Are we granting a priv that we own?
2)		    MOVEI A,CRDI20	;[8856] Wheel, oper, or requested cap required
2)		    JRST CRDIR7		;[8856] Unlock directory and return error
2)		  ENDIF.		;[8856] Otherwise
2)		ENDIF.			;[8856]  it is OK to set the requested caps
2)		STOR A,DRPRV,(Q1)	;[8856] Set requested capabilities
2)		;..

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 11



LINE 19, PAGE 50
1)		CALL USTDIR		;UNLOCK THE DIRECTORY
1)		JRST CRDIR4		;TAKE ERROR ROUTE
1)	CRDI0J:	STOR A,DRMOD,(Q1)	;YES
LINE 19, PAGE 58
2)		JRST CRDIR7		;[8856] Unlock directory, return error
2)	CRDI0J:	STOR A,DRMOD,(Q1)	;YES


LINE 36, PAGE 50
1)		 RETBAD(CRDI26,<ULKDIR>) ;No
1)		MOVE T1,CAPENB		;[7.1020] Get privs
1)		TXNN T1,SC%WHL!SC%OPR	;[7.1020] Is user prived?
1)		RETBAD (CRDIX1,<ULKDIR>);[7.1020] No, don't let him change this
1)		UMOVE T1,.CDPMU(Q2)	;Yes, get it
LINE 14, PAGE 59
2)		ERRJMP (CRDI26,CRDIR7)	;[8856] No
2)		MOVE T1,CAPENB		;[7.1020] Get privs
2)		TXNN T1,SC%WHL!SC%OPR	;[7.1020] Is user prived?
2)		ERRJMP (CRDIX1,CRDIR7)	;[8856] No, don't let him change this
2)		UMOVE T1,.CDPMU(Q2)	;Yes, get it


LINE 48, PAGE 50
1)		 RETBAD(CRDI26,<ULKDIR>) ;No
1)		MOVE T1,CAPENB		;[7.1020] Get privs
1)		TXNN T1,SC%WHL!SC%OPR	;[7.1020] Is user prived?
1)		RETBAD (CRDIX1,<ULKDIR>);[7.1020] No, don't let him change this
1)		UMOVE T1,.CDPED(Q2)	;Yes, get it
LINE 26, PAGE 59
2)		ERRJMP (CRDI26,CRDIR7)	;[8856] No
2)		MOVE T1,CAPENB		;[7.1020] Get privs
2)		TXNN T1,SC%WHL!SC%OPR	;[7.1020] Is user prived?
2)		ERRJMP (CRDIX1,CRDIR7)	;[8856] No, don't let him change this
2)		UMOVE T1,.CDPED(Q2)	;Yes, get it


LINE 87, PAGE 50
1)		JUMPL A,[ RETBAD (CRDI21,<CALL USTDIR>)] ;NOT ENOUGH QUOTA FOR EXISTING FILES
1)	CRD3AC:	LOAD A,DRLOQ,(Q1)	;GET CURRENT LOQ
LINE 27, PAGE 60
2)		JUMPGE A,CRD3AC		;[8856] Enough quota today
2)		MOVEI A,CRDI21		;[8856] Not enough quota for existing files
2)		JRST CRDIR7		;[8856] Give error, unlock, return
2)	CRD3AC:	LOAD A,DRLOQ,(Q1)	;GET CURRENT LOQ

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 12



LINE 99, PAGE 50
1)		RETBAD (CRDI24,<CALL USTDIR>) ;NO. WON'T FIT IN ALLOTTED SPACE
1)		LOAD C,DRSDC,(Q1)	;GET NUMBER OF SUBDIRECTORIES EXISTING
1)		CAMLE C,B		;IS NEW VALUE LESS THAN THIS?
1)		RETBAD (CRDI22,<CALL USTDIR>) ;CAN'T REDUCE QUOTA THIS MUCH
1)		LOAD A,DRSDM,(Q1)	;GET CURRENT SUBDIR QUOTA
LINE 41, PAGE 60
2)		ERRJMP (CRDI24,CRDIR7)	;[8856] No. Won't fit in allotted space
2)		LOAD C,DRSDC,(Q1)	;GET NUMBER OF SUBDIRECTORIES EXISTING
2)		CAMLE C,B		;IS NEW VALUE LESS THAN THIS?
2)		ERRJMP (CRDI22,CRDIR7)	;[8856] Can't reduce quota this much
2)		LOAD A,DRSDM,(Q1)	;GET CURRENT SUBDIR QUOTA


LINE 15, PAGE 51
1)			 RETBAD(CRDI16,<CALL USTDIR>) ;FAILED
1)			JRST .+1]	;SUCCESS - GO ON
LINE 15, PAGE 61
2)			 ERRJMP (CRDI16,CRDIR7) ;[8856] Failed
2)			JRST .+1]	;SUCCESS - GO ON


LINE 21, PAGE 51
1)			 RETBAD(CRDI16,<CALL USTDIR>) ;FAILED
1)			JRST .+1]
LINE 21, PAGE 61
2)			 ERRJMP (CRDI16,CRDIR7) ;[8856] Failed
2)			JRST .+1]


LINE 44, PAGE 51
1)		JUMPL A,[ RETBAD (CRDI13,<CALL USTDIR>)] ;CAN'T CHANGE SUPERIOR
1)	CRD3AD:	LOAD A,DRLIQ,(Q1)	;GET LIQ
LINE 18, PAGE 62
2)		JUMPGE A,CRD3AD		;[8856] Jump if it is OK
2)		MOVEI A,CRDI13		;[8856] Can't change superior
2)		JRST CRDIR7		;[8856] Give error, unlock, return
2)	CRD3AD:	LOAD A,DRLIQ,(Q1)	;GET LIQ


LINE 51, PAGE 51
1)		JUMPL B,[ RETBAD(CRDI14,<CALL USTDIR>)] ;LOQ EXHAUSTED
1)		LOAD C,DRSDM,(Q1)	;GET SDQ
LINE 27, PAGE 62
2)		JUMPL B,[MOVEI A,CRDI14 ;[8856] LOQ exhausted
2)			JRST CRDIR7]	;[8856] Return error and unlock dir
2)		LOAD C,DRSDM,(Q1)	;GET SDQ

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 13



LINE 56, PAGE 51
1)		JUMPL D,[ RETBAD(CRDI15,<CALL USTDIR>)] ;SDQ EXHAUSTED
1)		CALL CKLIQ		;SEE IF SUPERIOR HAS INFINITE QUOTA
LINE 33, PAGE 62
2)		JUMPL D,[MOVEI A,CRDI15 ;[8856] SDQ exhausted
2)			JRST CRDIR7]	;[8856] Unlock and return error
2)		CALL CKLIQ		;SEE IF SUPERIOR HAS INFINITE QUOTA


LINE 80, PAGE 51
1)		 RETBAD(MONX03)		;SHOULD BE IMPOSSIBLE
1)		CALL CHKCHG		;SHOULD PARAMETERS BE CHANGED
LINE 6, PAGE 63
2)		 ERRJMP (MONX03,CRDIR4)	;[8856] Should be impossible
2)		CALL CHKCHG		;SHOULD PARAMETERS BE CHANGED


LINE 87, PAGE 51
1)	          RETBAD ()             ;[7461] Failed - pass error along
1)		ENDIF.
LINE 13, PAGE 63
2)		   JRST CRDIR7		;[8856] Failed, return 
2)		ENDIF.


LINE 99, PAGE 51
1)		   RETBAD ()		;failure. pass error up.
1)		ENDIF.
1)		;..
1)	^L;DO ALLOCATION, DEFAULT PROTECTION, DIRECTORY PROTECTION
1)	; Online & offline expiration defaults
1)	
1)		UMOVE A,.CDLOQ(Q2)	;GET LOGGED OUT QUOTA
LINE 26, PAGE 63
2)		   JRST CRDIR7		;[8856] Failed, unlock and return
2)		ENDIF.
2)		;..
   {Skipped 1 page and 1 line}
2)	;DO ALLOCATION, DEFAULT PROTECTION, DIRECTORY PROTECTION
2)	
2)		UMOVE A,.CDLOQ(Q2)	;GET LOGGED OUT QUOTA

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 14



LINE 28, PAGE 52
1)		MOVE B,CRDUFL		; Get flags
LINE 1, PAGE 65
2)	; Online & offline expiration defaults
2)	
2)		MOVE B,CRDUFL		; Get flags


LINE 47, PAGE 52
1)		  RETBAD(ARGX27,<ULKDIR>) ;  Out of reasonable range
1)		ELSE.
1)		  CAMLE A,TPRCYC	; Within range?
1)		  RETBAD(ARGX27,<ULKDIR>) ; No
1)		ENDIF.
1)	      ENDIF.
1)		STOR A,DRDFE,(Q1)	;Store user value
1)	CRD3BB:	UMOVE A,.CDPPN(Q2)	;GET PROJECT-PROGRAMMER NUMBER
LINE 22, PAGE 65
2)		  ERRJMP (ARGX27,CRDIR7) ;[8856] Out of reasonable range
2)		ELSE.
2)		  CAMLE A,TPRCYC	; Within range?
2)		  ERRJMP (ARGX27,CRDIR7) ;[8856] No
2)		ENDIF.
2)	      ENDIF.
2)		STOR A,DRDFE,(Q1)	;Store user value
   {Skipped 1 page and 1 line}
2)	;SET PPN
2)	
2)	CRD3BB:	UMOVE A,.CDPPN(Q2)	;GET PROJECT-PROGRAMMER NUMBER


LINE 62, PAGE 52
1)		RETBAD (PPNX1,<ULKDIR>)	;ILLEGAL PROJECT NUMBER
1)		UMOVE A,.CDPPN(Q2)	;GET PPN BACK AGAIN
1)		TRNN A,-1		;PROGRAMMER NUMBER OF ZERO IS ILLEGAL
1)		RETBAD (PPNX1,<ULKDIR>)	;SO FLUNK THAT OUT
1)	;HERE TO CHECK PPN FOR UNIQUENESS
LINE 12, PAGE 66
2)		ERRJMP (PPNX1,CRDIR7)	;[8856] Illegal project number
2)		UMOVE A,.CDPPN(Q2)	;GET PPN BACK AGAIN
2)		TRNN A,-1		;PROGRAMMER NUMBER OF ZERO IS ILLEGAL
2)		ERRJMP (PPNX1,CRDIR7)	;[8856] So flunk that out
2)	;HERE TO CHECK PPN FOR UNIQUENESS

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 15



LINE 72, PAGE 52
1)		RETBAD (PPNX1,<ULKDIR>)	;SO FLUNK THAT OUT
1)	CRD3BC:	UMOVE B,.CDPPN(Q2)	;GET BACK PPN NUMBER
LINE 22, PAGE 66
2)		ERRJMP (PPNX1,CRDIR7)	;[8856] So flunk that out
2)	CRD3BC:	UMOVE B,.CDPPN(Q2)	;GET BACK PPN NUMBER


LINE 91, PAGE 52
1)		ULKDIR
1)		SKIPN CRDCPY		;WANT TO CALL CPYBAK?
LINE 12, PAGE 67
2)		CALL USTDIR		;[8856] (/) Unlock directory, go OKINT
2)	
2)	;If creation of a top level directory, we need to call CPYBAK.
2)	
2)		SKIPN CRDCPY		;WANT TO CALL CPYBAK?


LINE 1, PAGE 56
1)	; ERROR ROUTINES
1)	
1)	CRDIR4:	MOVEM A,CRDIRE		;SAVE ERROR CODE
1)		CALL CRDIR6		;RELEASE JSB SPACE
1)		HRRZ A,CRDIRJ		;GET JFN OF DIR FILE
1)		JUMPE A,CRDR00		;DON'T RELEASE IT IF ALREADY RELEASED
1)		MOVX B,CDNWF		;IS THIS A NEW FILE?
LINE 1, PAGE 71
2)	;Error Routines
2)	;	Enter at CRDIR4 (directory not mapped)
2)	;[8856] Enter at CRDIR7 (directory mapped by SETDIR)
2)	;	with A/ error code to return to user
2)	
2)	CRDIR7:	CALL USTDIR		;[8856] (/) Unlock directory, go OKINT
2)	CRDIR4:	MOVEM A,CRDIRE		;SAVE ERROR CODE
2)		CALL CRDIR6		;RELEASE JSB SPACE
2)		HRRZ A,CRDIRJ		;GET JFN OF DIR FILE
2)		JUMPE A,CRDR02		;[8856] No JFN there, check if new dir failure
2)		MOVX B,CDNWF		;IS THIS A NEW FILE?

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 16



LINE 21, PAGE 56
1)	CRDIR6:	MOVEI A,JSBFRE		;RELEASE NAME STRING SPACE
LINE 25, PAGE 71
2)	CRDR02:	MOVX B,CDNWF		;[8856] Load new directory bit
2)		TDNN B,CRDFLG		;[8856] Is this a new directory build failure?
2)		JRST CRDR00		;[8856] Nope, just return now
2)		MOVEI A,CRDGJB		;[8856] Have to delete directory
2)		HRROI B,CRDIRS		;[8856] Get pointer to "NAME.DIRECTORY" string
2)		GTJFN			;[8856] Get JFN on the new directory
2)		 ERJMP CRDR00		;[8856] If an error here I give up
2)		HRRZM A,CRDIRJ		;[8856] Save JFN for DELDIR code
2)		MOVE A,CRDIRE		;[8856] Load error code that we bombed on
2)		HRRM A,CRDFLG		;[8856] Save it in place not known to DELDIR
2)		CALL DELDIR		;[8856] Delete this directory
2)		 JFCL			;[8856] Error?  Well I tried anyway
2)		HRRZ A,CRDFLG		;[8856] Reload the error
2)		RETBAD ()		;[8856] Pass error back up
2)	
2)	;Small routine to releaser any JSB free space we are currently using.
2)	;Returns +1 always.
2)	
2)	CRDIR6:	MOVEI A,JSBFRE		;RELEASE NAME STRING SPACE


LINE 43, PAGE 65
1)		       RETBAD (NSPX01,<ULKDIR>) ;failed
1)		      MOVEM T1,MBLOCK	;save addr of new block
LINE 11, PAGE 83
2)		       RETBAD (NSPX01)	;Failed
2)		      MOVEM T1,MBLOCK	;save addr of new block


LINE 71, PAGE 76
1)	DELDI4:	
1)		MOVE C,CRDIRD		;C/ DIRECTORY NUMBER
1)		MOVE D,CRDSTX		;D/ STRUCTURE NUMBER
LINE 3, PAGE 98
2)	DELDI4:	MOVE C,CRDIRD		;C/ DIRECTORY NUMBER
2)		MOVE D,CRDSTX		;D/ STRUCTURE NUMBER

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 17



LINE 14, PAGE 93
1)	IFN STANSW&SUMXSW,<
1)		CAIN T3,.GFLRD		;LAST READER?
1)		 JRST GFUST0		;THAT'S OK, TOO.
1)	>;IFN STANSW&SUMXSW
1)		CAIE T3,.GFAUT		;IS FUNCTION "GET AUTHOR" ?
LINE 14, PAGE 116
2)	IFN NICSW,<
2)		CAIN T3,.GFLRD		;LAST READER?
2)		 JRST GFUST0		;THAT'S OK, TOO.
2)	>;IFN NICSW
2)		CAIE T3,.GFAUT		;IS FUNCTION "GET AUTHOR" ?


LINE 23, PAGE 93
1)	; GET DIRECTORY NUMBERS FROM FDB AND OBTAIN SPACE FOR STRING
1)	
1)	IFN STANSW&SUMXSW,<
1)	GFUST0:
1)	>;IFN STANSW&SUMXSW
1)		XCTU [HRRZ JFN,1]	;GET JFN FROM USER
LINE 23, PAGE 116
2)	IFN NICSW,<
2)	GFUST0:				;ENTRY FOR LAST READER
2)	>;IFN NICSW
2)	
2)	; GET DIRECTORY NUMBERS FROM FDB AND OBTAIN SPACE FOR STRING
2)	
2)		XCTU [HRRZ JFN,1]	;GET JFN FROM USER


LINE 41, PAGE 93
1)	IFN STANSW&SUMXSW,<
1)		CAIN T3,.GFLRD		;LAST READER?
1)		 LOAD T2,FBBK2,(T1)	;GET THAT
1)	>;IFN STANSW&SUMXSW
1)		JUMPE T2,[MOVEI T2,[EXP 0,0,0] ;DUMMY BLOCK IF NONE
LINE 42, PAGE 116
2)	IFN NICSW,<
2)		CAIN T3,.GFLRD		;LAST READER?
2)		 LOAD T2,FBBK2,(T1)	;GET THAT
2)	>;IFN NICSW
2)		JUMPE T2,[MOVEI T2,[EXP 0,0,0] ;DUMMY BLOCK IF NONE

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 18



LINE 6, PAGE 99
1)	MSKSTR JS%T1,Q1,1B0		;LOCAL FLAG - PUNCTUATE NULL EXTENSION
LINE 6, PAGE 122
2)	;Nota bene - Because of a bug that existed in JFNS%, things have been
2)	;changed so that JFNS% uses the FILLCK and JFNLCK all the way through.
2)	;It releases these locks at various points so that inopportune page
2)	;faults don't hang the job. I don't believe there are other places
2)	;in the monitor that rely on both the JFNLCK and FILLCK. If there are
2)	;then deadly embraces could occur. But hung jobs are better than
2)	;BUGHLTs. JFNS% LOCKs the JFNLCK first, then LOCKs the FILLCK in all
2)	;cases.
2)	
2)	MSKSTR JS%T1,Q1,1B0		;LOCAL FLAG - PUNCTUATE NULL EXTENSION


LINE 14, PAGE 99
1)		HRRZ JFN,2
1)		CALL CHKJFD
1)		 ITERR()
1)		 JFCL
1)		 ITERR(DESX4)
1)		CALL UNLCKF
1)		UMOVE A,1
1)		TLNN A,777777
1)		 JRST JFNSZ		; Not byte pointer
1)		TLC A,777777
1)		TLCN A,777777
1)		 HRLI A,440700		; -1 in lh, fill in
1)		SETZ B,
1)		UMOVEM A,1		; Return to user
1)		XCTBU [IDPB B,A]	; Deposit initial null in case
1)	JFNSZ:	XCTU [HLLZ F1,2]
LINE 23, PAGE 122
2)		NOINT			;[8801] No interruptions while we have the JFNLCK
2)		LOCK JFNLCK		;[8801] Get JFN lock
2)		HRRZ JFN,2
2)		CALL CHKJFD		;[8801] (JFN/) Check the JFN for real
2)		 ITERR ,<CALL JFSDN1>	;[8801] Release lock, OKINT
2)		 JFCL
2)		 ITERR DESX4,<CALL JFSDN1> ;[8801]
2)		DMOVE A,FILSTS(JFN)	;[8801] Get file status words
2)		TXNE A,ASGF		;[8801] JFN being assigned?
2)		TXNN B,ASGF2		;[8801] Make sure ASGF and not BLKF
2)		SKIPA			;[8801] Must be BLKF or not assigning
2)		ITERR DESX3,<CALL JFSDUN> ;[8801] Act like JFN not assigned
2)		UMOVE A,1		;Retrieve user's destination designator
2)		TLNN A,777777		;See if in -1,,xxx form
2)		JRST JFNSZ		;Not byte pointer
2)		TLC A,777777		;It is a byte pointer,

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 19


2)		TLCN A,777777		;So make 7-bit byte pointer
2)		HRLI A,440700		;-1 in lh, fill in
2)		SETZ B,
2)		UMOVEM A,1		;Return byte pointer to user
2)		CSKED			;[8820] Be critical
2)		UNLOCK JFNLCK		;[8820] Give up JFNLCK briefly
2)		UNLOCK FILLCK(JFN)	;[8829] And file lock
2)		XCTBU [IDPB B,A]	;Deposit initial null in case
2)		ECSKED			;[8820] Not critical anymore
2)		LOCK JFNLCK		;[8820] Hopefully get this back without changes
2)		LOCK FILLCK(JFN)	;[8829] Get back the file lock
2)	JFNSZ:	XCTU [HLLZ F1,2]


LINE 42, PAGE 99
1)	            CALL JFNSS		;PRINT NODE NAME
1)	            MOVEI B,PNCNOD	;PRINT NODE PUNCTUATION
LINE 63, PAGE 122
2)		    UNLOCK JFNLCK	;[8820] Free JFN lock
2)		    UNLOCK FILLCK(JFN)	;[8829] And file lock
2)	            CALL JFNSS		;PRINT NODE NAME
2)		    LOCK JFNLCK		;[8820] Get the lock back
2)		    LOCK FILLCK(JFN)	;[8829] This one too
2)	            MOVEI B,PNCNOD	;PRINT NODE PUNCTUATION


LINE 53, PAGE 99
1)	            CALL JFNSS		; Output the string in a
1)	            MOVEI B,":"
LINE 78, PAGE 122
2)		    UNLOCK JFNLCK	;[8820] Free JFN lock
2)		    UNLOCK FILLCK(JFN)	;[8829] And this too
2)	            CALL JFNSS		;Output the string in a
2)		    LOCK JFNLCK		;[8820] Get this back
2)		    LOCK FILLCK(JFN)	;[8829] And this too
2)	            MOVEI B,":"


LINE 33, PAGE 100
1)	            CALL JFNSS		; Output the string in a
1)	          ELSE.
LINE 33, PAGE 123
2)		    UNLOCK JFNLCK	;[8820] Release this temporarily
2)		    UNLOCK FILLCK(JFN)	;[8829] And this
2)	            CALL JFNSS		; Output the string in a
2)		    LOCK JFNLCK		;[8820] Now get it back
2)		    LOCK FILLCK(JFN)	;[8829] Ditto
2)	          ELSE.

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 20



LINE 8, PAGE 101
1)		CAIN D,2		; If suppressing default,
1)		JRST [	LOAD T1,JSCDF	;CONNECTED DIRECTORY STRING VALID FLAG
1)			SKIPN T1	; SKIP IF STRING EXISTS IN JSB
LINE 8, PAGE 124
2)		CAIE D,2		; If suppressing default,
2)		IFSKP.
2)		  LOAD T1,JSCDF		;CONNECTED DIRECTORY STRING VALID FLAG
2)		  SKIPN T1		; SKIP IF STRING EXISTS IN JSB


LINE 19, PAGE 101
1)			 JRST JFNS0A	;THE STRINGS DONT MATCH, GO OUTPUT DIR
1)			JRST JFNS1]	;THEY MATCH, DO NOT OUTPUT THE DIR NAME
1)	JFNS0A:	LDB D,[POINT 3,Q3,5]	; GET format control
LINE 20, PAGE 124
2)		   SKIPA		;THE STRINGS DONT MATCH, GO OUTPUT DIR
2)		  JRST JFNS1		;THEY MATCH, DO NOT OUTPUT THE DIR NAME
2)		ENDIF.
2)	JFNS0A:	LDB D,[POINT 3,Q3,5]	; GET format control


LINE 29, PAGE 101
1)		TQNE <DIRSF>
1)		JRST [	LOAD B,FLDMS,(JFN) ;GET WILD MASK
1)			CALL JFSTA1	; GO DO IT OR A STAR
1)			JRST JFNS0B]
1)		LOAD A,FLDIR,(JFN)	; GET POINTER TO DIRECTORY STRING
1)		JUMPE A,JFNS0B		; IF NONE, DONT TRY TO OUTPUT IT
1)		CALL JFNSSD		; Copy string to output
1)	JFNS0B:	MOVEI B,">"
LINE 31, PAGE 124
2)		TQNN <DIRSF>		;Directory wild?
2)		IFSKP.			;If so,
2)		  LOAD B,FLDMS,(JFN)	;Get wild mask
2)		  CALL JFSTA1		;(B/) Go do it or a star
2)		  JRST JFNS0B
2)		ENDIF.
2)		LOAD A,FLDIR,(JFN)	; GET POINTER TO DIRECTORY STRING
2)		JUMPE A,JFNS0B		; IF NONE, DONT TRY TO OUTPUT IT
2)		UNLOCK JFNLCK		;[8820] Don't cause problems
2)		UNLOCK FILLCK(JFN)	;[8829] Here either
2)		CALL JFNSSD		; Copy string to output
2)		LOCK JFNLCK		;[8820] Get the lock back
2)		LOCK FILLCK(JFN)	;[8829] This one too
2)	JFNS0B:	MOVEI B,">"

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 21



LINE 45, PAGE 101
1)		TQNE <NAMSF>
1)		JRST [	LOAD B,FLNMS,(JFN) ;GET NAME WILD MASK
1)			CALL JFSTA1	; PRINT IT OR A STAR
1)			JRST JFNS2]
1)		CALL JFNSS		; Copy string to output
1)		; ..
LINE 53, PAGE 124
2)		TQNN <NAMSF>		;Star in name field?
2)		IFSKP.			;If so,
2)		  LOAD B,FLNMS,(JFN) 	;Get name wild mask
2)		  CALL JFSTA1		;(B/) Print it or a star
2)		  JRST JFNS2
2)		ENDIF.
2)		UNLOCK JFNLCK		;[8820] Release this
2)		UNLOCK FILLCK(JFN)	;[8829] Like wise for this
2)		CALL JFNSS		; Copy string to output
2)		LOCK JFNLCK		;[8820] Now get it back
2)		LOCK FILLCK(JFN)	;[8829] And this one too
2)		; ..


LINE 12, PAGE 102
1)		TQNE <EXTSF>
1)		JRST [	LOAD B,FLEMS,(JFN) ;GET EXTENSION WILD MASK
1)			CALL JFSTA1	; PRINT IT OR A STAR
1)			JRST JFNS3]
1)		CALL JFNSS		; Copy to output
1)	
1)	;DO VERSION
LINE 12, PAGE 125
2)		TQNN <EXTSF>		;Extension wild?
2)		IFSKP.			;If so,
2)		  LOAD B,FLEMS,(JFN) 	;Get extension wild mask
2)		  CALL JFSTA1		;(B/) Print it or a star
2)		  JRST JFNS3
2)		ENDIF.
2)		UNLOCK JFNLCK		;[8820] Drop JFN lock a second
2)		UNLOCK FILLCK(JFN)	;[8829] And file lock
2)		CALL JFNSS		;Copy to output
2)		LOCK JFNLCK		;[8820] Quick, get it back
2)		LOCK FILLCK(JFN)	;[8829] Don't forget this one
2)	
2)	;DO VERSION

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 22



LINE 24, PAGE 102
1)		TQNE <ASTF>		;HAD OUTPUT STARS?
1)		JRST [	JUMPN A,DOJF3	;YES. DO NON-ZERO VERSION
1)			TXNE F1,VERSF!RVERF!HVERF!LVERF ;ANY SPECIALS?
1)			JRST DOJF3	;YES. DO THEM
1)			JRST .+1]	;NO. DO LAST TEST
1)		TQNN JS%T2
LINE 30, PAGE 125
2)		TQNN <ASTF>		;HAD OUTPUT STARS?
2)		IFSKP.
2)		  JUMPN A,DOJF3		;YES. DO NON-ZERO VERSION
2)		  TXNE F1,VERSF!RVERF!HVERF!LVERF ;ANY SPECIALS?
2)		  JRST DOJF3		;YES. DO THEM
2)		ENDIF.			;No. Do last test
2)		TQNN JS%T2


LINE 35, PAGE 102
1)		TQNE <VERSF>
1)		JRST [	CALL JFSTAR
1)			JRST MRETN]
1)		TQNE <RVERF>
LINE 42, PAGE 125
2)		TQNN <VERSF>
2)		IFSKP.
2)		  CALL JFSTAR
2)		  CALL JFSDUN		;[8801] (/) Unlock and OKINT
2)		  MRETNG
2)		ENDIF.
2)		TQNE <RVERF>


LINE 19, PAGE 103
1)		  MRETNG		;DONE
1)		ENDIF.
1)		CALL GETFDB		; Get a pointer to the fdb
1)		 JRST [	CALL JFNSAT	;TYPE OUT ATTRIBUTES (IF ANY)
1)			MRETNG]		;DONE
1)		PUSH P,.FBREF(A)
LINE 19, PAGE 126
2)		  CALL JFSDUN		;[8801] (/) And unlock, OKINT
2)		  MRETNG		;DONE
2)		ENDIF.
2)		CALL GETFDB		;(/B) Get a pointer to the fdb
2)		IFNSK.			;If no FDB
2)		  CALL JFNSAT		;TYPE OUT ATTRIBUTES (IF ANY)
2)		  CALL JFSDUN		;[8801] (/) Unlock and OKINT
2)		  MRETNG		;DONE
2)		ENDIF.

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 23


2)		PUSH P,.FBREF(A)


LINE 32, PAGE 103
1)		TLNN B,700000		; String account?
1)		 JRST [	ADD B,DIRORA	;GET ABSOLUTE ADR OF STRING
1)			EXCH A,D	;SAVE A
LINE 36, PAGE 126
2)		TLNE B,700000		; String account?
2)		IFSKP.
2)		  ADD B,DIRORA		;GET ABSOLUTE ADR OF STRING
2)		  EXCH A,D		;SAVE A


LINE 46, PAGE 103
1)			JRST JFNS43]
1)		PUSH P,C		; Save size of string
LINE 51, PAGE 126
2)		  JRST JFNS43
2)		ENDIF.
2)		PUSH P,C		; Save size of string


LINE 57, PAGE 103
1)		TQNE <ASTF>		;PARSE ONLY?
1)		JRST [	SKIPE D		;YES. WANT OUTPUT OF PROTECTION?
1)			SKIPN FILPRT(JFN) ;YES. HAVE ONE?
1)			JRST JFNS5	;NO. GIVE IT UP
1)			JRST JFNS45]	;GO DO IT
1)		MOVE B,0(P)
LINE 63, PAGE 126
2)		TQNN <ASTF>		;PARSE ONLY?
2)		IFSKP.
2)		  SKIPE D		;YES. WANT OUTPUT OF PROTECTION?
2)		  SKIPN FILPRT(JFN)	;YES. HAVE ONE?
2)		  JRST JFNS5		;NO. GIVE IT UP
2)		  JRST JFNS45		;GO DO IT
2)		ENDIF.
2)		MOVE B,0(P)


LINE 42, PAGE 104
1)		  MRETNG		;  and exit since finished
LINE 42, PAGE 127
2)		  CALL JFSDUN		;[8801] (/) Unlock JFNLCK and OKINT
2)		  MRETNG		;  and exit since finished

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 24



LINE 64, PAGE 104
1)		CALL JFNSS
1)		; ..
LINE 65, PAGE 127
2)		UNLOCK JFNLCK		;[8820] Release this
2)		UNLOCK FILLCK(JFN)	;[8829] And this
2)		CALL JFNSS
2)		LOCK JFNLCK		;[8820] Lock 'er up again
2)		LOCK FILLCK(JFN)	;[8829] This one too
2)		; ..


LINE 30, PAGE 105
1)		JRST MRETN
1)	
1)	;LOCAL ROUTINE TO OUTPUT PROTECTION
LINE 30, PAGE 128
2)		CALL JFSDUN		;[8801] (/) Now really done!
2)		MRETNG			;End of JFNS%
2)	
2)	;LOCAL ROUTINE TO OUTPUT PROTECTION


LINE 9, PAGE 106
1)		CALL CPYFUS		;COPY STRING TO MONITOR SPACE
1)		 ITERR()		;FAILED
1)		MOVEM A,JFNSAA		;SAVE ADR OF STRING BLOCK
LINE 9, PAGE 129
2)		CALL CPYFUS		;(T1-T3/T1-T3) Copy string to monitor space
2)		 ITERR ,<CALL JFSDUN>	;[8817] (/) Failed, release things we own
2)		MOVEM A,JFNSAA		;SAVE ADR OF STRING BLOCK


LINE 15, PAGE 106
1)		TBLUK			;LOOK UP PREFIX
1)		 ERJMP JFN1AE		;FAILED
LINE 15, PAGE 129
2)		TBLUK%			;Look up prefix
2)		 ERJMP JFN1AE		;FAILED

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 25



LINE 29, PAGE 106
1)	JFN1A2:	CALL JFNSS		;GO RETURN THE STRING TO THE USER
1)		HRRZ B,JFNSAA		;GET ADDRESS OF TEMP STRING
LINE 29, PAGE 129
2)	JFN1A2:	UNLOCK JFNLCK		;[8820] Don't hold this in a sensitive spot
2)		UNLOCK FILLCK(JFN)	;[8829] Or this
2)		CALL JFNSS		;GO RETURN THE STRING TO THE USER
2)		LOCK JFNLCK		;[8820] Not sensitive any more
2)		LOCK FILLCK(JFN)	;[8829] Get this back too
2)		HRRZ B,JFNSAA		;GET ADDRESS OF TEMP STRING


LINE 36, PAGE 106
1)		CALL RELFRE
1)		ITERR (GJFX40)		;NO SUCH ATTRIBUTE ERROR
1)	
1)	
1)	;RETURN ALL ATTRIBUTES TO THE CALLER
LINE 40, PAGE 129
2)		CALL RELFRE		;(T1/) Release used freespace
2)		ITERR GJFX40,<CALL JFSDUN> ;[8817] No such attribute error
2)	
2)	
2)	;RETURN ALL ATTRIBUTES TO THE CALLER


LINE 58, PAGE 106
1)		CALL JFNSS		;OUTPUT THE PREFIX STRING
1)		MOVE C,JFNSAV		;GET BACK THE VALUE OF THE PREFIX
LINE 62, PAGE 129
2)		UNLOCK JFNLCK		;[8820] Drop this
2)		UNLOCK FILLCK(JFN)	;[8829] And this
2)		CALL JFNSS		;OUTPUT THE PREFIX STRING
2)		LOCK JFNLCK		;[8820] Now get it back
2)		LOCK FILLCK(JFN)	;[8829] This too
2)		MOVE C,JFNSAV		;GET BACK THE VALUE OF THE PREFIX


LINE 65, PAGE 106
1)		CALL JFNSS		;OUTPUT THE ATTRIBUTE VALUE
1)	JFNAT3:	AOS A,JFNSAC		;STEP TO THE NEXT ATTRIBUTE
LINE 73, PAGE 129
2)		UNLOCK JFNLCK		;[8820] Let go for a second
2)		UNLOCK FILLCK(JFN)	;[8829] This one too
2)		CALL JFNSS		;OUTPUT THE ATTRIBUTE VALUE
2)		LOCK JFNLCK		;[8820] Keep them out again
2)		LOCK FILLCK(JFN)	;[8829] Here too
2)	JFNAT3:	AOS A,JFNSAC		;STEP TO THE NEXT ATTRIBUTE

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 26



LINE 1, PAGE 107
1)	;JFNX
LINE 1, PAGE 130
2)	;[8801]
2)	;JFSDUN - Routine called before returning to user mode from JFNS%.
2)	;Basically, called to release JFNLCK and go OKINT.
2)	;
2)	; Call with:
2)	;	no arguments
2)	;	CALL JFSDUN
2)	;
2)	; Returns:
2)	;	+1 - Always, with JFNLCK unlocked and OKINT
2)	
2)	JFSDUN:	CALL UNLCKF		;(/) Unlock the FILLCK first
2)		SKIPL FILLCK(JFN)	;[8831] Did FILLCK get unlocked?
2)		UNLOCK FILLCK(JFN)	;[8831] No, make sure it is unlocked
2)	JFSDN1:	UNLOCK JFNLCK		;Unlock JFN lock
2)		OKINT			;Interruptions are OK
2)		RET
   {Skipped 1 page and 1 line}
2)	;JFNX


LINE 93, PAGE 107
1)		CALL JFNSS
1)		JRST JFNXX2
LINE 94, PAGE 131
2)		UNLOCK JFNLCK		;[8820] Release the tension
2)		UNLOCK FILLCK(JFN)	;[8829] This spot too
2)		CALL JFNSS
2)		LOCK JFNLCK		;[8820] Tighten the screws again
2)		LOCK FILLCK(JFN)	;[8829] On this too
2)		JRST JFNXX2


LINE 6, PAGE 109
1)	JFNSN:	JUMPG A,JFNSS		; Copy to output
1)		MOVE B,A
LINE 6, PAGE 133
2)	JFNSN:	IFG. A			;[8820] If positive,
2)		  UNLOCK JFNLCK		;[8820] Drop this
2)		  UNLOCK FILLCK(JFN)	;[8829] And this
2)		  CALL JFNSS		;[8820] Output number
2)		  LOCK JFNLCK		;[8820] And lock this up again
2)		  LOCK FILLCK(JFN)	;[8829] This too
2)		  RET			;[8820]
2)		ENDIF.			;[8820]
2)		MOVE B,A

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 27




LINE 11, PAGE 110
1)		ODTIM
1)		MOVEI C,-4(P)		;[7355]
1)		HRLI C,(<POINT 7,0>)
1)	JFNDA1:	ILDB B,C
1)		JUMPE B,[SUB P,[XWD 5,5] ;[7355]
1)			 POP P,A
1)			 RET]
1)		CALL BOUTA
LINE 11, PAGE 134
2)		UNLOCK JFNLCK		;[8820] Drop this for a second
2)		UNLOCK FILLCK(JFN)	;[8829] This too
2)		ODTIM
2)		 ERJMP .+1		;[8820] Doesn't happen
2)		MOVEI C,-4(P)		;[7355]
2)		HRLI C,(<POINT 7,0>)
2)	JFNDA1:	ILDB B,C
2)		IFE. B			;[8820] If null,
2)		  SUB P,[XWD 5,5]	;[8820] Adjust "STKVAR"
2)		  POP P,A		;[8820] Get back pointer
2)		  LOCK JFNLCK		;[8820] Lock things up
2)		  LOCK FILLCK(JFN)	;[8829] This too
2)		  RET			;[8820] And return
2)		ENDIF.			;[8820]
2)		CALL BOUTA


LINE 27, PAGE 110
1)		CALLRET BOUTA
1)	
1)	;PRINT MASK ADDRESSED BY B OR A STAR IF B IS ZERO
LINE 34, PAGE 134
2)		UNLOCK JFNLCK		;[8820] Give this up briefly
2)		UNLOCK FILLCK(JFN)	;[8829] This one too
2)		CALL BOUTA		;[8820]
2)		LOCK JFNLCK		;[8820] Get the lock back
2)		LOCK FILLCK(JFN)	;[8829] This lock too
2)		RET			;[8820] And go on
2)	
2)	;PRINT MASK ADDRESSED BY B OR A STAR IF B IS ZERO

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 28



LINE 37, PAGE 110
1)	JFLOP:	ILDB B,MSKSAV		; TOP OF PRINT LOOP
1)		JUMPE B,R		; IF AT THE END, RETURN
1)		CALL BOUTA		; OUTPUT THE BYTE
LINE 49, PAGE 134
2)		UNLOCK JFNLCK		;[8820] Give up JFN lock a second
2)		UNLOCK FILLCK(JFN)	;[8829] Same for FILLCK
2)	JFLOP:	ILDB B,MSKSAV		;TOP OF PRINT LOOP
2)		IFE. B			;[8820] If at end,
2)		  LOCK JFNLCK		;[8820] Lock things up
2)		  LOCK FILLCK(JFN)	;[8829] Lock this too
2)		  RET			;[8820] And return
2)		ENDIF.			;[8820]
2)		CALL BOUTA		;OUTPUT THE BYTE


LINE 45, PAGE 110
1)		CALLRET BOUTA
1)		RET
LINE 63, PAGE 134
2)		IFSKP. <RET>		;[8820] If not set, return
2)		UNLOCK JFNLCK		;[8820] Give this up
2)		UNLOCK FILLCK(JFN)	;[8829] And this
2)		CALL BOUTA		;[8820] Output character
2)		LOCK JFNLCK		;[8820] And get the lock back
2)		LOCK FILLCK(JFN)	;[8829] Ditto
2)		RET


LINE 56, PAGE 110
1)		CALLRET BOUTA
1)	^L;JFNSS AND JFNSSD - WRITE ASCII STRING
LINE 79, PAGE 134
2)		UNLOCK JFNLCK		;[8820] Give it up
2)		UNLOCK FILLCK(JFN)	;[8829] And up
2)		CALL BOUTA		;[8820] And slam a character
2)		LOCK JFNLCK		;[8820] Get this back
2)		LOCK FILLCK(JFN)	;[8829] And back
2)		RET			;[8820] And return
2)	^L;JFNSS AND JFNSSD - WRITE ASCII STRING

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 29



LINE 27, PAGE 111
1)		JUMPE B,CPOPJ		;NULL INDICATES END OF STRING
1)		PUSH P,C		;GET A WORK AC
LINE 27, PAGE 135
2)		JUMPE B,R		;[8820] Done when we see a null
2)		PUSH P,C		;GET A WORK AC


LINE 62, PAGE 120
1)		JRST [	TXNE Q2,RC%EMO	;NO. EXACT MATCH ONLY?
LINE 62, PAGE 144
2)	IFN NICSW,<
2)		JRST RCD055		;6 No. Try as unpunctuated directory.
2)	>;IFN NICSW
2)	IFE NICSW,<
2)		JRST [	TXNE Q2,RC%EMO	;NO. EXACT MATCH ONLY?


LINE 67, PAGE 120
1)		SETZ T4,		;FOUND COLON. MAKE IT END WITH NULL
LINE 71, PAGE 144
2)	>;IFE NICSW
2)		SETZ T4,		;FOUND COLON. MAKE IT END WITH NULL


LINE 18, PAGE 122
1)	;STRUCTURE NOT MOUNTED.  SAY "NO MATCH", BUT GO ON, TO MAKE SURE
LINE 18, PAGE 146
2)	IFN NICSW,<
2)	rcd055:	call getd00		;6 convert unpunctuated string to directory
2)		 retbad			;6 failed. error code in t1
2)		jrst rcd500		;6 go clean up
2)	>;IFN NICSW
2)	
2)	;STRUCTURE NOT MOUNTED.  SAY "NO MATCH", BUT GO ON, TO MAKE SURE


LINE 13, PAGE 123
1)		LDB T1,[POINT 6,RCDUC,35] ;[7.1063]Get the structure number
LINE 13, PAGE 147
2)	IFN NICSW,<
2)		txne q2,rc%emo		;6 was exact match required and
2)		txnn q2,rc%stp		;6 are we stepping?
2)	>;IFN NICSW
2)		LDB T1,[POINT 6,RCDUC,35] ;[7.1063]Get the structure number

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 30



LINE 25, PAGE 125
1)	; ISOLATE THE DIRECTORY NAME STRING
LINE 25, PAGE 149
2)	IFN NICSW,<
2)		jrst getd01		;6
2)	
2)	;6 entry point for unpunctuated directory string
2)	getd00:	setzm rcdidp		;6 indicate no punctuation
2)	getd01:				;6 (label added)
2)	>;IFN NICSW
2)	
2)	; ISOLATE THE DIRECTORY NAME STRING


LINE 48, PAGE 125
1)		HRRZ T3,RCDIDP		;[7304] GET BACK OPENING BRACKET
1)		CAMN T4,T3		;[7304] IS THIS CHARACTER AN ADDITIONAL OPENER?
1)		RETBAD (RCDIX2)		;[7304] YES, GIVE ERROR NOW - INVALID DIRECTORY SPEC
1)		HLRZ T3,RCDIDP		;GET EXPECTED TERMINATING BRACKET
LINE 56, PAGE 149
2)	IFE NICSW,<
2)		HRRZ T3,RCDIDP		;[7304] GET BACK OPENING BRACKET
2)		CAMN T4,T3		;[7304] IS THIS CHARACTER AN ADDITIONAL OPENER?
2)		RETBAD (RCDIX2)		;[7304] YES, GIVE ERROR NOW - INVALID DIRECTORY SPEC
2)	>;IFE NICSW
2)	IFE NICSW,<
2)		HLRZ T3,RCDIDP		;GET EXPECTED TERMINATING BRACKET


LINE 57, PAGE 125
1)		MOVE T3,GETDT3		;RESTORE COUNTER
LINE 68, PAGE 149
2)	>;IFE NICSW
2)	IFN NICSW,<
2)	   ifn .chnul,<printx ?This code assumes .CHNUL equals 0> ;6
2)		jumpe	t4,getd07	;6 if a null, stop copying.
2)		skipe	rcdidp		;6 is string punctuated?
2)		jrst  [ hlrz t3,rcdidp	;6 yes. get expected term bracket
2)			came t3,t4	;6 have we got it
2)			jrst .+1	;6 no. continue
2)			txo q2,rc%emo	;6 yes. don't allow recognition
2)			jrst getd07]	;6 and don't look at more characters
2)	>;IFN NICSW
2)		MOVE T3,GETDT3		;RESTORE COUNTER

; JSYSF.MAC.3 & <MONITOR>JSYSF.MAC.2 24-Feb-89 1724	PAGE 31



LINE 75, PAGE 125
1)		HLRZ T3,RCDIDP		;GET EXPECTED TERMINATING BRACKET
LINE 97, PAGE 149
2)	IFN NICSW,<
2)		skipn rcdidp		;6 is string punctuated?
2)		jrst getd10		;6 no. just do DIRLUK
2)	>;IFN NICSW
2)		HLRZ T3,RCDIDP		;GET EXPECTED TERMINATING BRACKET


LINE 49, PAGE 126
1)			IDPB T4,T1	;TERMINATE DIRECTORY
LINE 49, PAGE 150
2)	IFN NICSW,<
2)			skipe rcdidp	;6 if there is a closing punctuation
2)	>;IFN NICSW
2)			IDPB T4,T1	;TERMINATE DIRECTORY


LINE 18, PAGE 147
1)	IFE STANSW&PUPSW,<
1)		 JRST SIBE1
1)	>;IFE STANSW&PUPSW
1)	IFN STANSW&PUPSW,<
1)		IFNSK.
1)		  CALL PUSIBE		;CHECK FOR SIBE ON PUP JFN (PUP:SOCKET-NBR)
1)		   JRST [ CALL CHKTTR	;NOT PUP JFN, GET LOOK AT DES AGAIN
1)			   JRST SIBE1	;STILL BAD, FAIL WITH CORRECT ARGS SET
1)			  JRST SIBE.A]	;IS NOW GOOD?
1)		   SKIPA T2,[MSEC1,,EMRET1]	;PUP, WE HAVE SOME CHARACTERS
1)		    XMOVEI T2,SKMRTN	;PUP, HAVE NO CHARACTERS
1)		   UMOVEM T1,2		;GIVE CHARACTER COUNT BACK TO USER
1)		   JRST (T2)		;RETURN TO PREVIOUS CONTEXT
1)		ENDIF.
1)	SIBE.A:
1)	>;IFN STANSW&PUPSW
1)		MOVEM C,SIBEBS		;SAVE BYTE SIZE
LINE 18, PAGE 171
2)		 JRST SIBE1
2)		MOVEM C,SIBEBS		;SAVE BYTE SIZE