CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   0
Table of contents

    (1)        3        MODULE HEADER
    (1)       70        SYSTEM AND CAMAC DEFS
    (1)       82        CAM$SUBS DATA SECTION
    (1)       93        RELOCATE CAMAC REQUEST PACKET ADDRESS DA
    (1)      120        BUILD CAMAC REQUEST PACKET
    (1)      191        ENCODE CAMAC MODULE KEY
    (1)      229        DECODE CAMAC MODULE KEY
    (1)      281        GET CAMAC MODULE PARAMETERS
    (1)      328        TRANSLATE MODULE LOGICAL NAME
    (1)      413        DECODE PHYSICAL MODULE NAME
    (1)      566        CAM_UIC, DECODE MODULE UIC STRING
    (1)      679        DECODE CAMAC SUPPORT UNIT STRING
    (1)      787        CAMAC I/O CHANNEL MANAGEMENT ROUTINE
    (1)      862        RELEASE CAMAC CHANNEL
    (1)      904        SCANNING DECIMAL TO BINARY CONVERSION RO
    (1)      947        SCANNING OCTAL TO BINARY CONVERSION ROUT
    (1)      990        CAM_VERMDB, VERIFY CAMAC MODULE DATA
    (1)     1029        CAM_VERUIC, VERIFY CAMAC MODULE UIC WITH
    (1)     1071        CAM_INITCRP, INITIAIZE CAMAC REQUEST PAC
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   1
V02-003                                                                  24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0000     1 	.TITLE	CAM$SUBS CAM$LIB SUPPORT ROUTINES
                                     0000     2 	.IDENT	'V02-003'
                                     0000     3 	.SBTTL	MODULE HEADER
                                     0000     4 	.LIBRARY	/SYS$LIBRARY:LIB/		; SYSTEM MACRO LIBRARY
                                     0000     5 	.LIBRARY	/CAMDEF/			; CAMAC MACRO LIBRARY
                                     0000     6 ;++
                                     0000     7 ;
                                     0000     8 ; FACILITY
                                     0000     9 ;	OAK RIDGE NATIONAL LABORATORY
                                     0000    10 ;	FUSION ENERGY DIVISION
                                     0000    11 ;	TOKAMAK SECTION
                                     0000    12 ;
                                     0000    13 ; ABSTRACT
                                     0000    14 ;
                                     0000    15 ;	This library contains a collection of support subroutines
                                     0000    16 ;	that are utilized by the CAMAC access library routines.
                                     0000    17 ;	These routines each have local linkage conventions and
                                     0000    18 ;	as such are not callable from high-level languages as
                                     0000    19 ;	standard procedure calls. A brief statement of each
                                     0000    20 ;	routine's function along with the routine linkage
                                     0000    21 ;	is specified in the preamble for each routine.
                                     0000    22 ;
                                     0000    23 ; AUTHOR
                                     0000    24 ;	E. T. Blair
                                     0000    25 ;
                                     0000    26 ; REVISION HISTORY
                                     0000    27 ;	V01-001, E.T. Blair,12-AUG-1982
                                     0000    28 ;	Add routine CAM_VERMDB to verify CAMAC module data and provide 
                                     0000    29 ;	consistency checking capability. Specifically, a range check 
                                     0000    30 ;	on the CAMAC crate and station numbers is performed.
                                     0000    31 ;
                                     0000    32 ;	V01-002, E.T. Blair,17-AUG-1982
                                     0000    33 ;	Remove UIC verification from CAM_UIC to CAM_VERUIC to enable
                                     0000    34 ;	CAM_UIC to be used by the procedure that verifies physical
                                     0000    35 ;	module name syntax. Also, move controller ID limit checking from
                                     0000    36 ;	CAM_CSU to CAM_VERMDB. Add routine CAM_VERUIC to perform module
                                     0000    37 ;	reference verification by UIC(contains code removed from CAM_UIC).
                                     0000    38 ;
                                     0000    39 ;	V01-003, E.T. Blair,17-AUG-1982
                                     0000    40 ;	Move internal procedure to sample process JIB information to
                                     0000    41 ;	module CAM$CIB(CAMCIB.MAR). This removes all references to
                                     0000    42 ;	the CIB from this module. 
                                     0000    43 ;
                                     0000    44 ;	V02-000, E.T. Blair,24-AUG-1982
                                     0000    45 ;	Make necessary modifications to change the syntax of the physical
                                     0000    46 ;	module specification from the form
                                     0000    47 ;		<Crate Unit>:[ggg,mmm]Cnn.Npp
                                     0000    48 ;	to the form
                                     0000    49 ;		<Crate Unit>:[ggg,mmm]Npp. 
                                     0000    50 ;	This change removes the redundant specification of the CAMAC crate
                                     0000    51 ;	number from the physical module specifier string. The Crate Unit string
                                     0000    52 ;	is sufficient to locate the CAMAC crate to be referenced by a 
                                     0000    53 ;	particular CAMAC request.
                                     0000    54 ;
                                     0000    55 ;	V02-001, E.T. Blair, 8-SEP-1982
                                     0000    56 ;	Included an initialization routine for the CAMAC Request Packet(CRP)
                                     0000    57 ;	to be used to perform request independent initialization of the CRP.
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   2
V02-003                         MODULE HEADER                            24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0000    58 ;	CAM_INITCRP is the routine name. CAM_RELCRP code will eventually
                                     0000    59 ;	be incorporated into this routine and will no longer exist as a
                                     0000    60 ;	separate routine.
                                     0000    61 ;
                                     0000    62 ;	V02-002, E.T. Blair, 16_NOV-1982
                                     0000    63 ;	Added code to return last status from CAM_LOGNAM to indicate
                                     0000    64 ;	how the last valid translation terminated.
                                     0000    65 ;
                                     0000    66 ;	V02-003, E.T. Blair, 24-JAN-1983
                                     0000    67 ;	Correct code management oversight that allowed an older version
                                     0000    68 ;	of CAMSUBS.MAR to be included in the CAMAC source library.
                                     0000    69 ;--
                                     0000    70 	.SBTTL	SYSTEM AND CAMAC DEFS
                                     0000    71 
                                     0000    72 	$DSCDEF					; DESCRIPTOR STRUC/CODES
                                     0000    73 	$JPIDEF					; JOB/PROCESS INFORMATION CODES
                                     0000    74 	$PRVDEF					; PROCESS PRIVILEGES
                                     0000    75 	$SSDEF					; SYSTEM STATUS DEFINITIONS
                                     0000    76 	$CAMPARMS				; CAMAC ACCESS PARAMETERS
                                     0000    77 	$CIBDEF					; CAMAC IMAGE BLOCK STRUC
                                     0000    78 	$CRPDEF					; CAMAC REQUEST PACKET STRUC
                                     0000    79 	$CMAPDEF				; CRATE/CHANNEL MAP DEF
                                     0000    80 	$KEYDEF					; CAMAC MODULE KEY STRUC
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   3
V02-003                         CAM$SUBS DATA SECTION                    24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0000    82 	.SBTTL	CAM$SUBS DATA SECTION
                                     0000    83 	.ENABL	LSB
                                 00000000    84 	.PSECT	CAM$DATA,NOSHR,NOEXE
                                     0000    85 ;
                                     0000    86 ;	CAMAC TO VMS CHANNEL MAPPING TABLE
                                     0000    87 ;
                                     0000    88 SUB_L_CMAP:
                           0000011C  0000    89 	.BLKL	CAM_K_MAXCHAN
                                     011C    90 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   4
V02-003                         CAM$SUBS DATA SECTION                    24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                 00000000    92 	.PSECT	CAM$CODE,PIC,SHR,NOWRT,EXE
                                     0000    93 	.SBTTL	RELOCATE CAMAC REQUEST PACKET ADDRESS DATA
                                     0000    94 	.ENABL	LSB
                                     0000    95 
                                     0000    96 ;++
                                     0000    97 ;
                                     0000    98 ; CAM_RELCRP: RELOCATE CRP ADDRESS DATA.
                                     0000    99 ;
                                     0000   100 ; Inputs:
                                     0000   101 ;	R10	- CRP address.
                                     0000   102 ;
                                     0000   103 ; Outputs:
                                     0000   104 ;	CRP address constants.
                                     0000   105 ;
                                     0000   106 ;--
                                     0000   107 
                                     0000   108 CAM_RELCRP::					; RELOCATE CRP ADDRESS DATA
                         5C AA   9E  0000   109 	MOVAB	CRP_A_LMODID+8(R10),-		; LOG MOD BUFFER ADDRESS
                         58 AA       0003   110 		CRP_A_LMODID+4(R10)
                       0084 CA   9E  0005   111 	MOVAB	CRP_A_PMODID+8(R10),-		; PHY MOD ID BUFFER ADDRESS
                       0080 CA       0009   112 		CRP_A_PMODID+4(R10)
                       00AC CA   9E  000C   113 	MOVAB	CRP_A_UICID+8(R10),-		; UIC ID BUFFER ADDRESS
                       00A8 CA       0010   114 		CRP_A_UICID+4(R10)
                       00BC CA   9E  0013   115 	MOVAB	CRP_A_CSUID+8(R10),-		; CAMAC SUPP UNIT BUFFER ADDRESS
                       00B8 CA       0017   116 		CRP_A_CSUID+4(R10)
                                 05  001A   117 	RSB					; RETURN TO CALLER
                                     001B   118 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   5
V02-003                         BUILD CAMAC REQUEST PACKET               24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     001B   120 	.SBTTL	BUILD CAMAC REQUEST PACKET
                                     001B   121 	.ENABL	LSB
                                     001B   122 
                                     001B   123 ;++
                                     001B   124 ;
                                     001B   125 ; CAM_MODULE: BUILD CAMAC REQUEST PACKET USING THE CAMAC
                                     001B   126 ;		MODULE TYPE AND CONTENTS TO DETERMINE THE
                                     001B   127 ;		TYPE OF MODULE ACCESS REQUESTED(DIRECT OR
                                     001B   128 ;		KEYED).
                                     001B   129 ;
                                     001B   130 ; Inputs:
                                     001B   131 ;	R1	- address of CAMAC module descriptor(logical name
                                     001B   132 ;		     or key value),
                                     001B   133 ;	R10	- address of the CAMAC Request Packet,
                                     001B   134 ;	R11	- address of CAMAC image block.
                                     001B   135 ;
                                     001B   136 ; Outputs:
                                     001B   137 ;	CAMAC Request Packet contents,
                                     001B   138 ;	R0	- status of the request.
                                     001B   139 ;
                                     001B   140 ;--
                                     001B   141 
                                     001B   142 CAM_MODULE::					; BUILD MODULE DATA BLOCK IN CRP
                                     001B   143 
                            56   DD  001B   144 	PUSHL	R6				; SAVE ENTRY FRAME PNTR
                       56   5E   D0  001D   145 	MOVL	SP,R6				; SAVE CURRENT STACK LEVEL
                         03 A1   91  0020   146 	CMPB	DSC$B_CLASS(R1),-		; TEST IF SCALAR DESCRIPTOR
                            01       0023   147 		#DSC$K_CLASS_S
                            0B   13  0024   148 	BEQL	10$				; YES, GO CHECK TYPE
                         03 A1   91  0026   149 	CMPB	DSC$B_CLASS(R1),-		; DYNAMIC STRING CLASS?
                            02       0029   150 		#DSC$K_CLASS_D
                            40   13  002A   151 	BEQL	100$				; YES, TREAT AS CHARACTER DESCR
                       50   14   3C  002C   152 	MOVZWL	#SS$_BADPARAM,R0		; BAD PARAMETER PASSED
                            42   11  002F   153 	BRB	90$				; RETURN TO CALLER
                                     0031   154 10$:						; EXAMINE DATA TYPE
                         02 A1   91  0031   155 	CMPB	DSC$B_DTYPE(R1),-		; LONGWORD INTEGER TYPE?
                            08       0034   156 		#DSC$K_DTYPE_L
                            11   13  0035   157 	BEQL	200$				; YES, GO PROCESS KEY VALUE
                         02 A1   91  0037   158 	CMPB	DSC$B_DTYPE(R1),-		; CHARACTER STRING TYPE?
                            0E       003A   159 		#DSC$K_DTYPE_T
                            2F   13  003B   160 	BEQL	100$				; YES, GO PROCESS MODULE NAME
                         02 A1   91  003D   161 	CMPB	DSC$B_DTYPE(R1),-		; UNSPECIFIED DATA TYPE?
                            00       0040   162 		#DSC$K_DTYPE_Z
                            29   13  0041   163 	BEQL	100$				; YES, ASSUME CHARACTER STRING
                       50   14   3C  0043   164 	MOVZWL	#SS$_BADPARAM,R0		; BAD PARAMETER STATUS
                            2B   11  0046   165 	BRB	90$				; RETURN TO CALLER
                                     0048   166 
                                     0048   167 200$:						; PROCESS MODULE KEY VALUE
                            01   A8  0048   168 	BISW	#CRPS_M_KEYED,-			; SET KEYED ACCESS FLAG
                         02 AA       004A   169 		CRP_W_STS(R10)			; IN CRP STATUS WORD
                    51   04 B1   D0  004C   170 	MOVL	@4(R1),R1			; GET KEY VALUE
                          005B   30  0050   171 	BSBW	CAM_DCODKEY			; DECODE/VERIFY KEY VALUE
                         1D 50   E9  0053   172 	BLBC	R0,90$				; IF FAILURE, ABORT
                    50   51 AA   9A  0056   173 	MOVZBL	CRP_B_CHANX(R10),R0		; GET CMAP TABLE INDEX
            7E   00000000'EF40   D0  005A   174 	MOVL	SUB_L_CMAP[R0],-		; COPY CMAP ENTRY
                                     0062   175 		-(SP)				; TO WORK ON IT
                            6E   B0  0062   176 	MOVW	CMAP_W_CHAN(SP),-		; GET VMS CHANNEL
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   6
V02-003                         BUILD CAMAC REQUEST PACKET               24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                         48 AA       0064   177 		CRP_W_CHAN(R10)
                       50   01   3C  0066   178 	MOVZWL	#SS$_NORMAL,R0			; RETURN NORMAL STATUS
                          0007   31  0069   179 	BRW	90$				; EXIT ROUTINE
                                     006C   180 100$:						; PROCESS MODULE LOGICAL NAME
                            01   AA  006C   181 	BICW	#CRPS_M_KEYED,-			; RESET KEYED ACCESS FLAG
                         02 AA       006E   182 		CRP_W_STS(R10)			; IN CRP STATUS
                          0084   30  0070   183 	BSBW	CAM_GETMDB			; GET MODULE PARAMETERS INTO
                                     0073   184 						; CRP
                                     0073   185 90$:						; ROUTINE EXIT
                       5E   56   D0  0073   186 	MOVL	R6,SP				; RESTORE ENTRY STACK LEVEL
                            56 8ED0  0076   187 	POPL	R6				; RESTORE ENTRY FRAME PNTR
                                 05  0079   188 	RSB					; RETURN TO CALLER
                                     007A   189 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   7
V02-003                         ENCODE CAMAC MODULE KEY                  24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     007A   191 	.SBTTL	ENCODE CAMAC MODULE KEY
                                     007A   192 	.ENABL	LSB
                                     007A   193 
                                     007A   194 ;++
                                     007A   195 ;
                                     007A   196 ; CAM_ECODKEY: ENCODE CAMAC MODULE KEY AND LRC CHECKSUM.
                                     007A   197 ;
                                     007A   198 ; Inputs:
                                     007A   199 ;	R10	- address of CRP.
                                     007A   200 ;
                                     007A   201 ; Outputs:
                                     007A   202 ;	R0	- Encoded CAMAC module key value.
                                     007A   203 ;	R1 is destroyed.
                                     007A   204 ;
                                     007A   205 ;--
                                     007A   206 
                                     007A   207 CAM_ECODKEY::					; ENCODE CAMAC MODULE KEY
                                     007A   208 
                            50   D4  007A   209 	CLRL	R0				; ZERO KEY VALUE
                    51   5A 8F   9A  007C   210 	MOVZBL	#KEY_K_LRCSEED,R1		; SET LRC SEED VALUE
                         4B AA   F0  0080   211 	INSV	CRP_B_C(R10),-			; INCLUDE CAMAC CRATE
                  50   06   00       0083   212 		#KEY_V_C,#KEY_S_C,R0
                    51   4B AA   8C  0086   213 	XORB	CRP_B_C(R10),R1			; INCLUDE IN LRC
                         4F AA   F0  008A   214 	INSV	CRP_B_CONT(R10),-		; INCLUDE CAMAC CID
                            06       008D   215 		#KEY_V_CID,-
                       50   04       008E   216 		#<KEY_S_CID+KEY_S_SER>,R0
                    51   4F AA   8C  0090   217 	XORB	CRP_B_CONT(R10),R1		; INCLUDE IN LRC VALUE
                         4C AA   F0  0094   218 	INSV	CRP_B_N(R10),-			; INCLUDE CAMAC STATION
                  50   06   0A       0097   219 		#KEY_V_N,#KEY_S_N,R0
                    51   4C AA   8C  009A   220 	XORB	CRP_B_N(R10),R1			; INCLUDE IN LRC VALUE
                         51 AA   F0  009E   221 	INSV	CRP_B_CHANX(R10),-		; INCLUDE CMAP TABLE INDEX
                  50   08   10       00A1   222 		#KEY_V_CHANX,#KEY_S_CHANX,R0
                    51   51 AA   8C  00A4   223 	XORB	CRP_B_CHANX(R10),R1		; INCLUDE IN LRC VALUE
             50   08   18   51   F0  00A8   224 	INSV	R1,-				; INCLUDE LRC IN KEY
                                     00AD   225 		#KEY_V_LRC,#KEY_S_LRC,R0
                                 05  00AD   226 	RSB					; RETURN TO CALLER
                                     00AE   227 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   8
V02-003                         DECODE CAMAC MODULE KEY                  24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     00AE   229 	.SBTTL	DECODE CAMAC MODULE KEY
                                     00AE   230 	.ENABL	LSB
                                     00AE   231 
                                     00AE   232 ;++
                                     00AE   233 ;
                                     00AE   234 ; CAM_DCODKEY: DECODE CAMAC MODULE KEY AND VERIFY KEY LRC.
                                     00AE   235 ;
                                     00AE   236 ; Inputs:
                                     00AE   237 ;	R1	- key value,
                                     00AE   238 ;	R10	- address of CRP.
                                     00AE   239 ;
                                     00AE   240 ; Outputs:
                                     00AE   241 ;	CRP_B_CID- CAMAC controller ID,
                                     00AE   242 ;	CRP_B_C- CAMAC crate number,
                                     00AE   243 ;	CRP_B_N- CAMAC station number,
                                     00AE   244 ;	CRP_B_CHANX- CMAP channel table index,
                                     00AE   245 ;	R0	- Status of the request.
                                     00AE   246 ;	R2 is destroyed.
                                     00AE   247 ;
                                     00AE   248 ;--
                                     00AE   249 
                                     00AE   250 CAM_DCODKEY::					; DECODE/VERIFY MODULE KEY
                                     00AE   251 
                    50   5A 8F   9A  00AE   252 	MOVZBL	#KEY_K_LRCSEED,R0		; GET LRC SEED VALUE
                       06   00   EF  00B2   253 	EXTZV	#KEY_V_C,#KEY_S_C,-		; GET CAMAC CRATE
                       52   51       00B5   254 		R1,R2				; FROM KEY VALUE
                    4B AA   52   90  00B7   255 	MOVB	R2,CRP_B_C(R10)			; DEPOSIT TO CRP
                       50   52   8C  00BB   256 	XORB	R2,R0				; AND INCLUDE IN LRC
                       04   06   EF  00BE   257 	EXTZV	#KEY_V_CID,#<KEY_S_CID+KEY_S_SER>,-
                       52   51       00C1   258 		R1,R2				; GET CAMAC CONTROLLER
                    4F AA   52   90  00C3   259 	MOVB	R2,CRP_B_CONT(R10)		; DEPOSIT TO CRP
                       50   52   8C  00C7   260 	XORB	R2,R0				; AND INCLUDE IN LRC
                       06   0A   EF  00CA   261 	EXTZV	#KEY_V_N,#KEY_S_N,-		; GET CAMAC STATION NUMBER
                       52   51       00CD   262 		R1,R2				; FROM KEY VALUE
                    4C AA   52   90  00CF   263 	MOVB	R2,CRP_B_N(R10)			; DEPOSIT TO CRP
                       50   52   8C  00D3   264 	XORB	R2,R0				; AND INCLUDE IN LRC
                       08   10   EF  00D6   265 	EXTZV	#KEY_V_CHANX,#KEY_S_CHANX,-
                       52   51       00D9   266 		R1,R2				; GET CMAP INDEX FROM KEY
                    51 AA   52   90  00DB   267 	MOVB	R2,CRP_B_CHANX(R10)		; DEPOSIT TO CRP
                       50   52   8C  00DF   268 	XORB	R2,R0				; AND INCLUDE IN LRC
                       08   18   EF  00E2   269 	EXTZV	#KEY_V_LRC,#KEY_S_LRC,-		; GET KEY LRC SUM
                       52   51       00E5   270 		R1,R2
                       50   52   8C  00E7   271 	XORB	R2,R0				; SUM LRC WITH COMPUTED LRC
                            07   13  00EA   272 	BEQL	10$				; IF 0, CONTINUE
                  50   013C 8F   3C  00EC   273 	MOVZWL	#SS$_IVCHAN,R0			; SET INVALID CHANNEL
                            03   11  00F1   274 	BRB	90$				; EXIT ROUTINE
                                     00F3   275 10$:
                       50   01   9A  00F3   276 	MOVZBL	#SS$_NORMAL,R0			; NORMAL STATUS
                                     00F6   277 90$:
                                 05  00F6   278 	RSB					; RETURN
                                     00F7   279 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page   9
V02-003                         GET CAMAC MODULE PARAMETERS              24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     00F7   281 	.SBTTL	GET CAMAC MODULE PARAMETERS
                                     00F7   282 	.ENABL	LSB
                                     00F7   283 
                                     00F7   284 ;++
                                     00F7   285 ;
                                     00F7   286 ; CAM_GETMDB: GET CAMAC MODULE PARAMETERS FROM LOGICAL MODULE
                                     00F7   287 ;		TRANSLATION TO PHYSICAL MODULE.
                                     00F7   288 ;
                                     00F7   289 ; Inputs:
                                     00F7   290 ;	R1	- address of logical module string descriptor,
                                     00F7   291 ;	R10	- address of CRP,
                                     00F7   292 ;	R11	- address of CIB.
                                     00F7   293 ;
                                     00F7   294 ; Outputs:
                                     00F7   295 ;	CAMAC module parameters in the CRP,
                                     00F7   296 ;	R0	- Status of the request.
                                     00F7   297 ;
                                     00F7   298 ;--
                                     00F7   299 
                                     00F7   300 CAM_GETMDB::					; GET CAMAC MODULE PARAMETERS
                                     00F7   301 
                          003A   30  00F7   302 	BSBW	CAM_LOGNAM			; TRANSLATE LOG TO PHYS MODULE
                         36 50   E9  00FA   303 	BLBC	R0,90$				; IF FAILURE, EXIT HERE
                            02   E0  00FD   304 	BBS	#PRV$V_SYSNAM,-
                      0B 18 AB       00FF   305 		CIB_Q_CPRIV(R11),10$		; PROCESS HAVE SYSNAM PRIV?
                    00   53 AA   91  0102   306 	CMPB	CRP_B_RTAB(R10),#0		; TRANSLATE FROM SYSTEM TABLE?
                            05   13  0106   307 	BEQL	10$				; IF SO, CONTINUE
                       50   24   3C  0108   308 	MOVZWL	#SS$_NOPRIV,R0			; SET ERROR STATUS
                            26   11  010B   309 	BRB	90$				; ABORT HERE
                                     010D   310 10$:
                          00C1   30  010D   311 	BSBW	CAM_PHYMOD			; DECODE PHYS MODULE STRING
                         20 50   E9  0110   312 	BLBC	R0,90$				; IF DECODE FAILS, EXIT
                          025A   30  0113   313 	BSBW	CAM_CSU				; DECODE CAMAC SUPP UNIT STRING
                         1A 50   E9  0116   314 	BLBC	R0,90$				; IF DECODE FAILS, EXIT
                          0411   30  0119   315 	BSBW	CAM_VERMDB			; VERIFY CAMAC MODULE DATA
                         14 50   E9  011C   316 	BLBC	R0,90$				; IF FAILURE, EXIT
                          018E   30  011F   317 	BSBW	CAM_UIC				; DECODE UIC STRING
                         0E 50   E9  0122   318 	BLBC	R0,90$				; IF DECODE FAILS, ABORT
                          0431   30  0125   319 	BSBW	CAM_VERUIC			; VERIFY MODULE REFERENCE
                         08 50   E9  0128   320 	BLBC	R0,90$				; IF FAILURE, ABORT
                            02   E0  012B   321 	BBS	#CRPS_V_NOCHAN,-		; IF NO CHAN REQUIRED, SKIP
                      03 02 AA       012D   322 		CRP_W_STS(R10),90$		; ELSE
                          02E4   30  0130   323 	BSBW	CAM_GETCHAN			; GET VMS I/O CHANNEL
                                     0133   324 90$:
                                 05  0133   325 	RSB					; RETURN TO CALLER
                                     0134   326 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  10
V02-003                         TRANSLATE MODULE LOGICAL NAME            24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0134   328 	.SBTTL	TRANSLATE MODULE LOGICAL NAME
                                     0134   329 	.ENABL	LSB
                                     0134   330 
                                     0134   331 ;++
                                     0134   332 ;
                                     0134   333 ; CAM_LOGNAM: TRANSLATE LOGICAL MODULE NAME TO PHYSICAL MODULE.
                                     0134   334 ;
                                     0134   335 ; Inputs:
                                     0134   336 ;	R1	- address of logical module string descriptor,
                                     0134   337 ;	R10	- address of CAMAC Request Packet.
                                     0134   338 ;
                                     0134   339 ; Outputs:
                                     0134   340 ;	Physical module name in the CRP,
                                     0134   341 ;	R0	- Status of the request.
                                     0134   342 ;	R1 is destroyed by this call.
                                     0134   343 ;
                                     0134   344 ;--
                                     0134   345 	$DEFINI	TLN
                                     0000   346 	$DEF	TLN_L_STATUS			; LOG NAME STATUS(LAST PASS)
                           00000004  0000   347 		.BLKL	1
                                     0004   348 	$DEF	TLN_L_RTAB			; TRANSLATE TABLE(LAST PASS)
                           00000008  0004   349 		.BLKL	1
                                     0008   350 	$DEF	TLN_K_LENGTH			; STRUC LENGTH
                                     0008   351 	$DEFEND	TLN
                                     0134   352 
                                     0134   353 CAM_LOGNAM::					; TRANSLATE LOGICAL MODULE NAME
                                     0134   354 
                       00FC 8F   BB  0134   355 	PUSHR	#^M<R2,R3,R4,R5,R6,R7>		; SAVE WORKING REGS
                       56   5E   D0  0138   356 	MOVL	SP,R6				; SAVE CURRENT STACK LEVEL
                            51   DD  013B   357 	PUSHL	R1				; SAVE LOG MOD DESCR ADDRESS
               04 B1   61   20   3A  013D   358 	LOCC	#^A/ /,(R1),@4(R1)		; SCAN INPUT FOR ' '
                            51 8ED0  0142   359 	POPL	R1				; RESTORE DESCR ADDRESS
                 5F 8F   04 B1   91  0145   360 	CMPB	@4(R1),#^A/_/			; LEADING "_"??
                            1E   12  014A   361 	BNEQ	30$				; IF NOT, SET UP TO TRANSLATE
                       61   50   A3  014C   362 	SUBW3	R0,(R1),-			; NET MODULE NAME LENGTH
                         7C AA       014F   363 		CRP_A_PMODID(R10)
                         7C AA   B7  0151   364 	DECW	CRP_A_PMODID(R10)		; LESS LEADING "_"
               50   04 A1   01   C1  0154   365 	ADDL3	#1,4(R1),R0			; SOURCE ADDRESS PAST "_"
                         7C AA   28  0159   366 	MOVC3	CRP_A_PMODID(R10),-		; MOVE NAME TO CRP BUFFER
                            60       015C   367 		(R0),-				; FROM SOURCE BUFFER
                       0080 DA       015D   368 		@CRP_A_PMODID+4(R10)
                       50   01   9A  0160   369 	MOVZBL	#SS$_NORMAL,R0			; RETURN NORMAL STATUS
                    53 AA   01   8E  0163   370 	MNEGB	#1,CRP_B_RTAB(R10)		; UNKNOWN TRANSLATE TABLE INDEX
                          005F   31  0167   371 	BRW	90$				; RETURN TO CALLER
                                     016A   372 30$:
                       61   50   A3  016A   373 	SUBW3	R0,(R1),-			; NET MODULE NAME LENGTH
                         54 AA       016D   374 		CRP_A_LMODID(R10)
                         54 AA   28  016F   375 	MOVC3	CRP_A_LMODID(R10),-		; MOVE NAME TO CRP BUFFER
                         04 B1       0172   376 		@4(R1),-			; FROM SOURCE BUFFER
                         58 BA       0174   377 		@CRP_A_LMODID+4(R10)
                       5E   08   C2  0176   378 	SUBL	#TLN_K_LENGTH,SP		; CALC LOCAL DATA BASE ADDR
                       57   5E   D0  0179   379 	MOVL	SP,R7				; SAVE IN R7 FOR BASE REG
                       0144 8F   3C  017C   380 	MOVZWL	#SS$_IVDEVNAM,-			; ASSUME TRANSLATE FAILURE
                            67       0180   381 		TLN_L_STATUS(R7)
                    04 A7   01   CE  0181   382 	MNEGL	#1,TLN_L_RTAB(R7)		; FINAL RTAB SET TO UNKNOWN
                                     0185   383 10$:
                            20   B0  0185   384 	MOVW	#CRP_K_PMOD,-			; RESTORE MAX DEST LENGTH
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  11
V02-003                         TRANSLATE MODULE LOGICAL NAME            24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                         7C AA       0187   385 		CRP_A_PMODID(R10)		; FOR COMING TRANSLATION
                                     0189   386 	$TRNLOG_S	-			; TRANSLATE LOG NAME
                                     0189   387 		LOGNAM=CRP_A_LMODID(R10),-	; SOURCE STRING DESCR
                                     0189   388 		RSLLEN=CRP_A_PMODID(R10),-	; EQUIVALENT NAME LENGTH
                                     0189   389 		RSLBUF=CRP_A_PMODID(R10),-	; EQUIVALENT NAME DESCR
                                     0189   390 		TABLE=TLN_L_RTAB(R7)		; TABLE WHERE FOUND
                                     01A0   391 						; ALL TABLES SEARCHED
                       5E   57   D0  01A0   392 	MOVL	R7,SP				; POP TRNLOG STACK FRAME
                         23 50   E9  01A3   393 	BLBC	R0,90$				; IF FAILURE, EXIT
              00000629 8F   50   D1  01A6   394 	CMPL	R0,#SS$_NOTRAN			; END OF RECURSION?
                            17   13  01AD   395 	BEQL	20$				; YES, EXIT
                       67   50   D0  01AF   396 	MOVL	R0,TLN_L_STATUS(R7)		; NO, SAVE STATUS
                         04 A7   90  01B2   397 	MOVB	TLN_L_RTAB(R7),-
                         53 AA       01B5   398 		CRP_B_RTAB(R10)			; SAVE TABLE ID WHERE FOUND
                         7C AA   28  01B7   399 	MOVC3	CRP_A_PMODID(R10),-		; MOVE EQUIV NAME TO SOURCE
                       0080 DA       01BA   400 		@CRP_A_PMODID+4(R10),-
                         58 BA       01BD   401 		@CRP_A_LMODID+4(R10)
                         7C AA   B0  01BF   402 	MOVW	CRP_A_PMODID(R10),-		; AND LENGTH TOO
                         54 AA       01C2   403 		CRP_A_LMODID(R10)
                            BF   11  01C4   404 	BRB	10$				; TRANSLATE AGAIN
                                     01C6   405 20$:
                       50   67   D0  01C6   406 	MOVL	TLN_L_STATUS(R7),R0		; RETURN LAST REAL TRANSLATE STATUS
                                     01C9   407 90$:
                       5E   56   D0  01C9   408 	MOVL	R6,SP				; BACK TO ENTRY STACK FRAME
                       00FC 8F   BA  01CC   409 	POPR	#^M<R2,R3,R4,R5,R6,R7>		; RESTORE ENTRY REGS
                                 05  01D0   410 	RSB					; RETURN TO CALLER
                                     01D1   411 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  12
V02-003                         DECODE PHYSICAL MODULE NAME              24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     01D1   413 	.SBTTL	DECODE PHYSICAL MODULE NAME
                                     01D1   414 	.ENABL	LSB
                                     01D1   415 
                                     01D1   416 ;++
                                     01D1   417 ;
                                     01D1   418 ; CAM_PHYMOD: DECODE PHYSICAL MODULE NAME AND RETURN CAMAC SUPPORT
                                     01D1   419 ;		UNIT STRING, UIC STRING, CAMAC CRATE AND STATION.
                                     01D1   420 ; Notes:
                                     01D1   421 ;	The syntax of the physical module name(specifier) is assumed to
                                     01D1   422 ;	be as follows:
                                     01D1   423 ;		<Crate Unit>:[ggg,mmm]Npp
                                     01D1   424 ;		where
                                     01D1   425 ;	Crate Unit specifies the CAMAC Crate Support Unit(CSU) to
                                     01D1   426 ;	   be used to reference the specified CAMAC module. This
                                     01D1   427 ;	   unit must correspond to a CSU previously connected via
                                     01D1   428 ;	   SYSGEN as a VAX device(really a pseudo-device since
                                     01D1   429 ;	   there is only one CAMAC controller actually connected
                                     01D1   430 ;	   to the VAX UNIBUS),
                                     01D1   431 ;	ggg specifies which group(s) may reference the module.
                                     01D1   432 ;	   May be specified as '*' for unrestricted access by group.
                                     01D1   433 ;	   The number ggg is interpreted as an octal value.
                                     01D1   434 ;	mmm specifies which member(s) may reference the module.
                                     01D1   435 ;	   May be specified as '*' for unrestricted access by member.
                                     01D1   436 ;	   The number mmm may be interpreted as an octal value.
                                     01D1   437 ;	Npp specifies the station number pp for the CAMAC module. The
                                     01D1   438 ;	   number pp is interpreted as a decimal value.
                                     01D1   439 ;
                                     01D1   440 ; Inputs:
                                     01D1   441 ;	R10	- address of the CAMAC Request Packet in the CIB.
                                     01D1   442 ;
                                     01D1   443 ; Outputs:
                                     01D1   444 ;	CAMAC Support Unit string in the CRP,
                                     01D1   445 ;	UIC string in the CRP,
                                     01D1   446 ;	CAMAC station number in the CRP,
                                     01D1   447 ;	R0	-Status of the request.
                                     01D1   448 ;	R1 is destroyed by this call.
                                     01D1   449 ;
                                     01D1   450 ;---
                                     01D1   451 
                                     01D1   452 ; 
                                     01D1   453 ; ROUTINE LOCAL DATA
                                     01D1   454 ;
                           00000004  01D1   455 PMD_K_SMAX	= 4				; MAXIMUM SCAN STATE
                           00000007  01D1   456 PMD_K_CSU	= 7				; MAXIMUM CSU STRING LENGTH
                           00000008  01D1   457 PMD_K_UIC	= 8				; MAXIMUM UIC STRING LENGTH
                           00000002  01D1   458 PMD_K_N		= 2				; MAXIMUM STATION STRING LENGTH
                           00000000  01D1   459 PMD_SV_CSU	= 0				; CSU EXPECTED
                           00000001  01D1   460 PMD_SV_UIC	= 1				; UIC EXPECTED
                           00000002  01D1   461 PMD_SV_N	= 2				; STATION EXPECTED
                           00000003  01D1   462 PMD_SV_EXIT	= 3				; NORMAL EXIT
                                     01D1   463 
                                     01D1   464 CAM_PHYMOD::					; DECODE PHYSICAL MODULE NAME
                                     01D1   465 
                       00FC 8F   BB  01D1   466 	PUSHR	#^M<R2,R3,R4,R5,R6,R7>		; SAVE WORK REGS
                       56   5E   D0  01D5   467 	MOVL	SP,R6				; SAVE ENTRY STACK LEVEL
                       0080 CA   D0  01D8   468 	MOVL	CRP_A_PMODID+4(R10),-		; GET PHY MOD PNTR
                            51       01DC   469 		R1
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  13
V02-003                         DECODE PHYSICAL MODULE NAME              24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                         7C AA   B0  01DD   470 	MOVW	CRP_A_PMODID(R10),-		; PHY MOD STRING LEN
                            57       01E0   471 		R7
                       7E   00   9A  01E1   472 	MOVZBL	#PMD_SV_CSU,-(SP)		; CSU EXPECTED
                                     01E4   473 
                                     01E4   474 10$:
                            50 8ED0  01E4   475 	POPL	R0				; GET NEXT SCAN STATE
                            57   B5  01E7   476 	TSTW	R7				; ANY SOURCE CHARS LEFT?
                            08   18  01E9   477 	BGEQ	20$				; YES, CONTINUE
                  50   0144 8F   3C  01EB   478 	MOVZWL	#SS$_IVDEVNAM,R0		; SET ERROR STATUS
                          00B5   31  01F0   479 	BRW	90$				; EXIT ROUTINE
                                     01F3   480 20$:
                  04   00   50   8F  01F3   481 	CASEB	R0,#0,#PMD_K_SMAX		; HANDLE STATE BY CASE
                                     01F7   482 30$:
                               0008' 01F7   483 	.WORD	PMD_STATE0-30$			; CSU EXPECTED
                               0038' 01F9   484 	.WORD	PMD_STATE1-30$			; UIC STRING EXPECTED
                               0083' 01FB   485 	.WORD	PMD_STATE2-30$			; STATION NUMBER EXPECTED
                               00AE' 01FD   486 	.WORD	PMD_EXIT-30$			; NORMAL EXIT
                                     01FF   487 
                                     01FF   488 PMD_STATE0:					; CAMAC SUPPORT UNIT SCAN
                            51   DD  01FF   489 	PUSHL	R1				; SAVE INITIAL POINTER
                       07   3A   3A  0201   490 	LOCC	#^A/:/,#<PMD_K_CSU>,-		; LOCATE CSU DELIMITER
                            61       0204   491 		(R1)				; IN SOURCE STRING
                            08   12  0205   492 	BNEQ	100$				; IF NOT EXHAUSTED, OK
                  50   0144 8F   3C  0207   493 	MOVZWL	#SS$_IVDEVNAM,R0		; INVALID DEVICE NAME
                          0099   31  020C   494 	BRW	90$				; EXIT ROUTINE
                                     020F   495 100$:
                            20   A8  020F   496 	BISW	#CRPS_M_CSUV,-			; SET CSU STRING VALID
                         02 AA       0211   497 		CRP_W_STS(R10)
                       08   50   A3  0213   498 	SUBW3	R0,#<PMD_K_CSU+1>,-		; CALC CSU LENGTH
                       00B4 CA       0216   499 		CRP_A_CSUID(R10)			; AND SAVE IN DESCRIPTOR
                                     0219   500 						; INCLUDE ':' DELMIMTER
                  57   00B4 CA   A2  0219   501 	SUBW	CRP_A_CSUID(R10),R7		; REFLECT IN REMAINING COUNT
                            51 8ED0  021E   502 	POPL	R1				; RESTORE INITIAL PNTR
                       00B4 CA   28  0221   503 	MOVC3	CRP_A_CSUID(R10),-		; MOVE CSU STRING TO CRP
                            61       0225   504 		(R1),-
                       00B8 DA       0226   505 		@CRP_A_CSUID+4(R10)
                       7E   01   9A  0229   506 	MOVZBL	#PMD_SV_UIC,-(SP)		; NEXT STATE=UIC
                          FFB5   31  022C   507 	BRW	10$				; BACK TO STATE DISPATCHER
                                     022F   508 
                                     022F   509 PMD_STATE1:					; UIC STRING EXPECTED(OPTIONAL)
                    5B 8F   61   91  022F   510 	CMPB	(R1),#^A/[/			; CHECK IF UIC DELIMITER
                            0A   13  0233   511 	BEQL	200$				; YES, PICK IT UP
                       00A4 CA   B4  0235   512 	CLRW	CRP_A_UICID(R10)			; ZERO UIC LENGTH
                       7E   02   9A  0239   513 	MOVZBL	#PMD_SV_N,-(SP)			; NEXT STATE=STATION NUMBER
                          FFA5   31  023C   514 	BRW	10$				; BACK TO STATE DISPATCHER
                                     023F   515 200$:
                            51   D6  023F   516 	INCL	R1				; BUMP PNTR PAST '['
                            57   B7  0241   517 	DECW	R7				; REFLECT IN TOTAL LEFT
                            51   DD  0243   518 	PUSHL	R1				; SAVE INITIAL POINTER
                    08   5D 8F   3A  0245   519 	LOCC	#^A/]/,#<PMD_K_UIC>,-		; LOCATE UIC END DELIMITER10
                            61       0249   520 		(R1)				; IN SOURCE STRING
                            08   12  024A   521 	BNEQ	210$				; IF NOT EXHAUSTED, OK
                  50   0144 8F   3C  024C   522 	MOVZWL	#SS$_IVDEVNAM,R0		; SET ERROR STATUS
                          0054   31  0251   523 	BRW	90$				; COMMON EXIT
                                     0254   524 210$:
                       0040 8F   A8  0254   525 	BISW	#CRPS_M_UICV,-			; SET UIC VALID STATUS
                         02 AA       0258   526 		CRP_W_STS(R10)
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  14
V02-003                         DECODE PHYSICAL MODULE NAME              24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                       08   50   A3  025A   527 	SUBW3	R0,#PMD_K_UIC,-			; CALC UIC STRING LENGTH
                       00A4 CA       025D   528 		CRP_A_UICID(R10)			; AND SAVE IN UIC DESCR
                                     0260   529 						; DON'T INCLUDE ']'
                  57   00A4 CA   A2  0260   530 	SUBW	CRP_A_UICID(R10),R7		; REFLECT IN TOTAL LEFT
                            51 8ED0  0265   531 	POPL	R1				; RESTORE INITIAL PNTR
                       00A4 CA   28  0268   532 	MOVC3	CRP_A_UICID(R10),-		; MOVE UIC STRING TO CRP
                            61       026C   533 		(R1),-
                       00A8 DA       026D   534 		@CRP_A_UICID+4(R10)
                            51   D6  0270   535 	INCL	R1				; BUMP PAST ']'
                            57   B7  0272   536 	DECW	R7				; REFLECT IN TOTAL LEFT
                       7E   02   9A  0274   537 	MOVZBL	#PMD_SV_N,-(SP)			; NEXT STATE=STATION NUMBER
                          FF6A   31  0277   538 	BRW	10$				; BACK TO STATE DISPATCHER
                                     027A   539 
                                     027A   540 PMD_STATE2:					; SCAN FOR CRATE NUMBER
                    4E 8F   81   91  027A   541 	CMPB	(R1)+,#^A/N/			; STATION NUMBER PREFIX?
                            1E   12  027E   542 	BNEQ	400$				; NO, ERROR EXIT
                            57   B7  0280   543 	DECW	R7				; UPDATE TOTAL LEFT
                            1A   15  0282   544 	BLEQ	400$				; NONE LEFT, DECLARE ERROR
                       52   57   3C  0284   545 	MOVZWL	R7,R2				; SET MAX SCAN LENGTH
                          025B   30  0287   546 	BSBW	CAM_DEC_BIN			; CONVERT STATION TO BINARY
                            52   B5  028A   547 	TSTW	R2				; ALL BYTES INCLUDED?
                            10   12  028C   548 	BNEQ	400$				; NO, DECLARE ERROR
                       0100 8F   A8  028E   549 	BISW	#CRPS_M_NV,-			; SET STATION VALID
                         02 AA       0292   550 		CRP_W_STS(R10)
                    4C AA   50   90  0294   551 	MOVB	R0,CRP_B_N(R10)			; SAVE CAMAC STATION
                       7E   03   9A  0298   552 	MOVZBL	#PMD_SV_EXIT,-(SP)		; NEXT=NORMAL EXIT
                          FF46   31  029B   553 	BRW	10$				; BACK TO STATE DISPATCHER
                                     029E   554 400$:
                  50   0144 8F   3C  029E   555 	MOVZWL	#SS$_IVDEVNAM,R0		; SET ERROR STATUS
                            03   11  02A3   556 	BRB	90$				; EXIT ROUTINE
                                     02A5   557 
                                     02A5   558 PMD_EXIT:					; NORMAL ROUTINE EXIT
                       50   01   9A  02A5   559 	MOVZBL	#SS$_NORMAL,R0			; NORMAL STATUS
                                     02A8   560 90$:
                       5E   56   D0  02A8   561 	MOVL	R6,SP				; RESTORE ENTRY STACK LEVEL
                       00FC 8F   BA  02AB   562 	POPR	#^M<R2,R3,R4,R5,R6,R7>		; RESTORE WORK REGS
                                 05  02AF   563 	RSB					; RETURN TO CALLER
                                     02B0   564 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  15
V02-003                         CAM_UIC, DECODE MODULE UIC STRING        24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     02B0   566 	.SBTTL	CAM_UIC, DECODE MODULE UIC STRING
                                     02B0   567 	.ENABL	LSB
                                     02B0   568 
                                     02B0   569 ;++
                                     02B0   570 ;
                                     02B0   571 ; CAM_UIC: DECODE MODULE UIC STRING AND VERIFY ACCESS WITH
                                     02B0   572 ;		CURRENT PROCESS UIC/PRIVILEGES.
                                     02B0   573 ;
                                     02B0   574 ; Inputs:
                                     02B0   575 ;	R10	- address of CRP,
                                     02B0   576 ;
                                     02B0   577 ; Outputs:
                                     02B0   578 ;	R0	- status of the request.
                                     02B0   579 ;
                                     02B0   580 ;--
                                     02B0   581 
                                     02B0   582 ;
                                     02B0   583 ; ROUTINE LOCAL DATA
                                     02B0   584 ;
                           00000004  02B0   585 UIC_K_SMAX	= 4				; MAXIMUM SCAN STATE
                           00000003  02B0   586 UIC_K_GRP	= 3				; MAXIMUM GROUP STRING LENGTH
                           00000003  02B0   587 UIC_K_MEM	= 3				; MAXIMUM MEMBER STRING LENGTH
                           00000000  02B0   588 UIC_SV_GRP	= 0				; GROUP EXPECTED
                           00000001  02B0   589 UIC_SV_MEM	= 1				; MEMBER EXPECTED(',' DELIMIT)
                           00000002  02B0   590 UIC_SV_EXIT	= 2				; NORMAL EXIT
                                     02B0   591 
                                     02B0   592 
                                     02B0   593 CAM_UIC::					; DECODE/VERIFY CAMAC UIC
                                     02B0   594 
                            56   DD  02B0   595 	PUSHL	R6				; SAVE WORK REG
                       56   5E   D0  02B2   596 	MOVL	SP,R6				; SAVE ENTRY STACK LEVEL
                         40 AA   D4  02B5   597 	CLRL	CRP_L_GRP(R10)			; ZAP GROUP AND
                         44 AA   D4  02B8   598 	CLRL	CRP_L_MEM(R10)			; MEMBER NUMBERS
                            06   E0  02BB   599 	BBS	#CRPS_V_UICV,-			; UIC STRING VALID?
                      13 02 AA       02BD   600 		CRP_W_STS(R10),15$		; IF SO, CONTINUE
                   80000000 8F   C8  02C0   601 	BISL	#GRP_M_WILDGRP,-		; SET WILD GROUP
                         40 AA       02C6   602 		CRP_L_GRP(R10)
                   80000000 8F   C8  02C8   603 	BISL	#MEM_M_WILDMEM,-		; AND WILD MEMBER
                         44 AA       02CE   604 		CRP_L_MEM(R10)
                          0093   31  02D0   605 	BRW	UIC_EXIT			; EXIT ROUTINE
                                     02D3   606 15$:
                       00A8 CA   D0  02D3   607 	MOVL	CRP_A_UICID+4(R10),-		; GET UIC BUFFER ADDRESS
                            51       02D7   608 		R1
                       00A4 CA   B0  02D8   609 	MOVW	CRP_A_UICID(R10),-		; TOTAL UIC STRING LENGTH
                            54       02DC   610 		R4				; TO R4
                       7E   00   9A  02DD   611 	MOVZBL	#UIC_SV_GRP,-(SP)		; INITIAL STATE=CHECK PRIVS
                                     02E0   612 
                                     02E0   613 10$:
                            50 8ED0  02E0   614 	POPL	R0				; GET NEXT SCAN STATE
                  04   00   50   8F  02E3   615 	CASEB	R0,#0,#UIC_K_SMAX		; HANDLE STATES BY CASE
                                     02E7   616 20$:
                               0006' 02E7   617 	.WORD	UIC_STATE0-20$			; GROUP NUMBER EXPECTED
                               004D' 02E9   618 	.WORD	UIC_STATE1-20$			; MEMBER NUMBER EXPECTED
                               007F' 02EB   619 	.WORD	UIC_EXIT-20$			; NORMAL EXIT
                                     02ED   620 
                                     02ED   621 UIC_STATE0:					; GROUP EXPECTED( GGG,MMM OR 
                                     02ED   622 						; GGGMMM OR *,MMM )
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  16
V02-003                         CAM_UIC, DECODE MODULE UIC STRING        24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                       2A   61   91  02ED   623 	CMPB	(R1),#^A/*/			; CHECK FOR WILD GROUP
                            1B   12  02F0   624 	BNEQ	200$				; IF NOT, ASSUME OCTAL GROUP NUMBER
                    2C   01 A1   91  02F2   625 	CMPB	1(R1),#^A/,/			; NEXT CHAR MUST BE ','
                            35   12  02F6   626 	BNEQ	290$				; DECLARE ERROR IF NOT
                   80000000 8F   C8  02F8   627 	BISL	#GRP_M_WILDGRP,-		; INDICATE WILD GROUP
                         40 AA       02FE   628 		CRP_L_GRP(R10)			; IN CRP GROUP
                    51   02 A1   9E  0300   629 	MOVAB	2(R1),R1			; BUMP PNTR PAST '*,'
                       54   02   A2  0304   630 	SUBW	#2,R4				; AND REFLECT IN TOTAL LEFT
                       7E   01   9A  0307   631 	MOVZBL	#UIC_SV_MEM,-(SP)		; NEXT STATE=MEMBER(',' DELIMITER)
                          FFD3   31  030A   632 	BRW	10$				; BACK TO STATE DISPATCH
                                     030D   633 200$:						; CONVERT GROUP #
                       52   03   9A  030D   634 	MOVZBL	#UIC_K_GRP,R2			; SET MAX SCAN LENGTH
                          01F6   30  0310   635 	BSBW	CAM_OCT_BIN			; CONVERT GROUP NUMBER
                  53   03   52   A3  0313   636 	SUBW3	R2,#UIC_K_GRP,R3		; ACTUAL NUMBER SCANNED
                       54   53   A2  0317   637 	SUBW	R3,R4				; REFLECT IN TOTAL LEFT
                    40 AA   50   D0  031A   638 	MOVL	R0,CRP_L_GRP(R10)		; ASSUME GROUP VALID
                       2C   61   91  031E   639 	CMPB	(R1),#^A/,/			; CHECK IF ',' DELIMITS
                            0A   12  0321   640 	BNEQ	290$				; IF NOT, DECLARE ERROR
                            51   D6  0323   641 	INCL	R1				; BUMP PNTR PAST ','
                            54   B7  0325   642 	DECW	R4				; AND REFLECT IN TOTAL LEFT
                       7E   01   9A  0327   643 	MOVZBL	#UIC_SV_MEM,-(SP)		; NEXT STATE=MEMBER(',' DELIMIT)
                          FFB3   31  032A   644 	BRW	10$				; BACK TO STATE DISPATCH
                                     032D   645 290$:						; INVALID DEVICE NAME
                  50   0144 8F   3C  032D   646 	MOVZWL	#SS$_IVDEVNAM,R0		; SET ERROR STATUS
                            35   11  0332   647 	BRB	90$				; EXIT ROUTINE
                                     0334   648 
                                     0334   649 UIC_STATE1:					; MEMBER EXPECTED(GGG,MMM OR 
                                     0334   650 						; GGG,*)
                       2A   61   91  0334   651 	CMPB	(R1),#^A/*/			; CHECK FOR WILD MEMBER
                            12   12  0337   652 	BNEQ	300$				; IF NOT, ASSUME OCTAL DIGITS
                            54   B7  0339   653 	DECW	R4				; CHECK TOTAL LEFT
                            22   12  033B   654 	BNEQ	390$				; IF NOT 0, DECLARE ERROR
                   80000000 8F   C8  033D   655 	BISL	#MEM_M_WILDMEM,-		; INDICATE WILD MEMBER
                         44 AA       0343   656 		CRP_L_MEM(R10)
                       7E   02   9A  0345   657 	MOVZBL	#UIC_SV_EXIT,-(SP)		; NEXT STATE=NORMAL EXIT
                          FF95   31  0348   658 	BRW	10$				; BACK TO STATE DISPATCH
                                     034B   659 300$:						; CONVERT MEMBER NUMBER
                       52   54   3C  034B   660 	MOVZWL	R4,R2				; SET SCAN LENGTH
                          01B8   30  034E   661 	BSBW	CAM_OCT_BIN			; CONVERT MEMBER NUMBER
                            52   B5  0351   662 	TSTW	R2				; ALL BYTES SCANNED?
                            0A   12  0353   663 	BNEQ	390$				; IF NOT, DECLARE ERROR
                    44 AA   50   D0  0355   664 	MOVL	R0,CRP_L_MEM(R10)		; SAVE MEMBER NUMBER
                       7E   02   9A  0359   665 	MOVZBL	#UIC_SV_EXIT,-(SP)		; NEXT STATE=NORMAL EXIT
                          FF81   31  035C   666 	BRW	10$				; BACK TO STATE DISPATCH
                                     035F   667 390$:						; INVALID DEVICE NAME
                  50   0144 8F   3C  035F   668 	MOVZWL	#SS$_IVDEVNAM,R0		; SET ERROR STATUS
                            03   11  0364   669 	BRB	90$				; EXIT ROUTINE
                                     0366   670 
                                     0366   671 UIC_EXIT:					; NORMAL EXIT
                       50   01   3C  0366   672 	MOVZWL	#SS$_NORMAL,R0			; NORMAL STATUS
                                     0369   673 90$:
                       5E   56   D0  0369   674 	MOVL	R6,SP				; RESTORE ENTRY STACK LEVEL
                            56 8ED0  036C   675 	POPL	R6				; RESTORE WORK REG
                                 05  036F   676 	RSB
                                     0370   677 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  17
V02-003                         DECODE CAMAC SUPPORT UNIT STRING         24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0370   679 	.SBTTL	DECODE CAMAC SUPPORT UNIT STRING
                                     0370   680 	.ENABL	LSB
                                     0370   681 
                                     0370   682 ;++
                                     0370   683 ;
                                     0370   684 ; CAM_CSU: DECODE CAMAC SUPPORT UNIT STRING AND PRODUCE 
                                     0370   685 ;		CRATE MAP TABLE TEMPLATE AS OUTPUT.
                                     0370   686 ;
                                     0370   687 ; Inputs:
                                     0370   688 ;	R10	- address of CAMAC Request Packet,
                                     0370   689 ;
                                     0370   690 ; Outputs:
                                     0370   691 ;	CAMAC Support Unit parameters as decoded from the CSU
                                     0370   692 ;		string in the CRP,
                                     0370   693 ;	R0	- Status of the request.
                                     0370   694 ;	R1 is destroyed by this call.
                                     0370   695 ;
                                     0370   696 ;--
                                     0370   697 
                                     0370   698 ;
                                     0370   699 ; ROUTINE LOCAL DATA
                                     0370   700 ;
                           00000002  0370   701 CSU_K_UNIT	= 2				; MAX LEN FOR UNIT STRING
                           00000003  0370   702 CSU_K_SMAX	= 3				; MAXIMUM SCAN STATE
                           00000000  0370   703 CSU_SV_HIWAY	= 0				; HIGHWAY ID EXPECTED
                           00000001  0370   704 CSU_SV_CID	= 1				; CONTROLLER ID EXPECTED
                           00000002  0370   705 CSU_SV_UNIT	= 2				; UNIT NUMBER EXPECTED
                           00000003  0370   706 CSU_SV_EXIT	= 3				; NORMAL EXIT
                                     0370   707 
                                     0370   708 
                                     0370   709 CAM_CSU::					; DECODE CAMAC SUPPORT UNIT STRING
                                     0370   710 
                       00C0 8F   BB  0370   711 	PUSHR	#^M<R6,R7>			; SAVE WORK REGS
                       56   5E   D0  0374   712 	MOVL	SP,R6				; SAVE ENTRY STACK LEVEL
                  57   00B4 CA   3C  0377   713 	MOVZWL	CRP_A_CSUID(R10),R7		; GET CSU STRING LENGTH
                  51   00B8 CA   D0  037C   714 	MOVL	CRP_A_CSUID+4(R10),R1		; AND STRING POINTER
                         4F AA   94  0381   715 	CLRB	CRP_B_CONT(R10)			; ZAP CONTROLLER ID FIELD
                       7E   00   9A  0384   716 	MOVZBL	#CSU_SV_HIWAY,-(SP)		; NEXT STATE=HIWAY ID EXPECTED
                                     0387   717 
                                     0387   718 10$:
                            50 8ED0  0387   719 	POPL	R0				; GET NEXT SCAN STATE
                            57   B5  038A   720 	TSTW	R7				; ANY SOURCE CHARS LEFT?
                            08   18  038C   721 	BGEQ	20$				; YES, CONTINUE
                  50   0144 8F   3C  038E   722 	MOVZWL	#SS$_IVDEVNAM,R0		; SET ERROR STATUS
                          0079   31  0393   723 	BRW	90$				; EXIT ROUTINE
                                     0396   724 20$:
                  03   00   50   8F  0396   725 	CASEB	R0,#0,#CSU_K_SMAX		; HANDLE SCAN STATES BY CASE
                                     039A   726 30$:
                               0008' 039A   727 	.WORD	CSU_STATE0-30$			; HIGHWAY ID EXPECTED
                               0036' 039C   728 	.WORD	CSU_STATE1-30$			; CONTROLLER ID EXPECTED
                               0052' 039E   729 	.WORD	CSU_STATE2-30$			; UNIT NUMBER EXPECTED
                               0072' 03A0   730 	.WORD	CSU_EXIT-30$			; NORMAL SCAN EXIT
                                     03A2   731 
                                     03A2   732 CSU_STATE0:					; SCAN FOR HIGHWAY ID
                       50   61   B0  03A2   733 	MOVW	(R1),R0				; GET FIRST TWO CHARS OF CSU
                  4853 8F   50   B1  03A5   734 	CMPW	R0,#^A/SH/			; SERIAL HIGHWAY PREFIX?
                            06   12  03AA   735 	BNEQ	110$				; IF NOT, TRY PARALLEL
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  18
V02-003                         DECODE CAMAC SUPPORT UNIT STRING         24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                            08   A8  03AC   736 	BISW	#CONT_M_SER,-			; SET SERIAL FLAG
                         4F AA       03AE   737 		CRP_B_CONT(R10)			; IN CRP CONTROLLER FIELD
                            0B   11  03B0   738 	BRB	130$				; GO SET NEXT STATE
                                     03B2   739 110$:
                  4850 8F   50   B1  03B2   740 	CMPW	R0,#^A/PH/			; PARALLEL HIGHWAY PREFIX?
                            10   12  03B7   741 	BNEQ	120$				; IF NOT, DECLARE ERROR
                            08   AA  03B9   742 	BICW	#CONT_M_SER,-			; CLEAR SERIAL FLAG
                         4F AA       03BB   743 		CRP_B_CONT(R10)			; IN CRP CONTROLLER FIELD
                                     03BD   744 130$:
                       57   02   A2  03BD   745 	SUBW	#2,R7				; UPDATE TOTAL LEFT
                       51   02   C0  03C0   746 	ADDL	#2,R1				; AND CSU POINTER
                       7E   01   9A  03C3   747 	MOVZBL	#CSU_SV_CID,-(SP)		; NEXT STATE=CONTROLLER ID
                          FFBE   31  03C6   748 	BRW	10$				; BACK TO STATE DISPATCHER
                                     03C9   749 120$:
                  50   0144 8F   3C  03C9   750 	MOVZWL	#SS$_IVDEVNAM,R0		; SET ERROR STATUS
                            3F   11  03CE   751 	BRB	90$				; EXIT ROUTINE
                                     03D0   752 
                                     03D0   753 CSU_STATE1:					; PICK UP CONTROLLER ID
               50   81   41 8F   83  03D0   754 	SUBB3	#^A/A/,(R1)+,R0			; COMPUTE CONTROLLER ID
                            0E   19  03D5   755 	BLSS	200$				; IF LESS THAN 'A', ERROR
                            57   B7  03D7   756 	DECW	R7				; REFLECT IN TOTAL LEFT
                       00   50   F0  03D9   757 	INSV	R0,#CONT_V_CID,-		; SAVE CONTROLLER ID
                            03       03DC   758 		#CONT_S_CID,-			; INTO CRP FIELD
                         4F AA       03DD   759 		CRP_B_CONT(R10)
                       7E   02   9A  03DF   760 	MOVZBL	#CSU_SV_UNIT,-(SP)		; NEXT STATE=UNIT NUMBER
                          FFA2   31  03E2   761 	BRW	10$				; BACK TO STATE DISPATCHER
                                     03E5   762 200$:
                  50   0144 8F   3C  03E5   763 	MOVZWL	#SS$_IVDEVNAM,R0		; BAD PARAMETER STATUS
                            23   11  03EA   764 	BRB	90$				; EXIT ROUTINE
                                     03EC   765 
                                     03EC   766 CSU_STATE2:					; SCAN FOR UNIT NUMBER
                       52   03   9A  03EC   767 	MOVZBL	#<CSU_K_UNIT+1>,R2		; MAX UNIT SCAN LENGTH
                          00F3   30  03EF   768 	BSBW	CAM_DEC_BIN			; CONVERT ASCII UNIT TO BINARY
                       3A   61   91  03F2   769 	CMPB	(R1),#^A/:/			; TERMINATE ON ':'?
                            07   13  03F5   770 	BEQL	300$				; YES, CONTINUE
                  50   0144 8F   3C  03F7   771 	MOVZWL	#SS$_IVDEVNAM,R0		; SET ERROR STATUS
                            11   11  03FC   772 	BRB	90$				; EXIT ROUTINE
                                     03FE   773 300$:
                    50 AA   50   90  03FE   774 	MOVB	R0,CRP_B_UNIT(R10)		; SAVE UNIT NUMBER
                    4B AA   50   90  0402   775 	MOVB	R0,CRP_B_C(R10)			; CAMAC CRATE=UNIT
                       7E   03   9A  0406   776 	MOVZBL	#CSU_SV_EXIT,-(SP)		; NEXT STATE=NORMAL EXIT
                          FF7B   31  0409   777 	BRW	10$				; BACK TO STATE DISPATCHER
                                     040C   778 
                                     040C   779 CSU_EXIT:					; NORMAL EXIT
                       50   01   9A  040C   780 	MOVZBL	#SS$_NORMAL,R0			; NORMAL STATUS
                                     040F   781 90$:
                       5E   56   D0  040F   782 	MOVL	R6,SP				; RESTORE ENTRY STACK LEVEL
                       00C0 8F   BA  0412   783 	POPR	#^M<R6,R7>			; RESTORE WORK REGS
                                 05  0416   784 	RSB					; RETURN TO CALLER
                                     0417   785 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  19
V02-003                         CAMAC I/O CHANNEL MANAGEMENT ROUTINE     24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0417   787 	.SBTTL	CAMAC I/O CHANNEL MANAGEMENT ROUTINE
                                     0417   788 	.ENABL	LSB
                                     0417   789 
                                     0417   790 ;++
                                     0417   791 ;
                                     0417   792 ; CAM_GETCHAN: PERFORMS I/O CHANNEL MANAGEMENT FOR THE CAMAC
                                     0417   793 ;		ACCESS PROCEDURES.
                                     0417   794 ;
                                     0417   795 ; Inputs:
                                     0417   796 ;	R10	- base address of CAMAC Request Packet,
                                     0417   797 ;	R11	- base address of CAMAC image block.
                                     0417   798 ;
                                     0417   799 ; Outputs:
                                     0417   800 ;	CAMAC channel index in the CRP,
                                     0417   801 ;	R0	- Status of request,
                                     0417   802 ;
                                     0417   803 ;--
                                     0417   804 
                                     0417   805 CAM_GETCHAN::					; GET VMS I/O CHANNEL FOR CSU
                                     0417   806 
                       007C 8F   BB  0417   807 	PUSHR	#^M<R2,R3,R4,R5,R6>		; SAVE WORKING REGS
                       56   5E   D0  041B   808 	MOVL	SP,R6				; SAVE ENTRY STACK LEVEL
                    55   50 AA   9A  041E   809 	MOVZBL	CRP_B_UNIT(R10),R5		; USE UNIT NUMBER FOR PRIMARY INDEX
                       54   55   D0  0422   810 	MOVL	R5,R4				; USE R4 FOR WORKING INDEX
                            52   D4  0425   811 	CLRL	R2				; BUILD MAP ID TEMPLATE 
                                     0427   812 	ASSUME	<CONT_S_CID+CONT_S_SER>,EQ,MID_S_CID
                         4F AA   F0  0427   813 	INSV	CRP_B_CONT(R10),-		; INSERT CONTROLLER ID
                       04   00       042A   814 		#MID_V_CID,#MID_S_CID,-
                            52       042C   815 		R2
             52   06   04   55   F0  042D   816 	INSV	R5,-				; AND UNIT NUMBER
                                     0432   817 		#MID_V_UNIT,#MID_S_UNIT,R2
                                     0432   818 30$:
            53   00000000'EF44   DE  0432   819 	MOVAL	SUB_L_CMAP[R4],R3		; GET ADDRESS OF CMAP ENTRY
                                     043A   820 						; FOR CURRENT INDEX
                            63   D5  043A   821 	TSTL	(R3)				; CMAP ENTRY NULL?
                            18   12  043C   822 	BNEQ	10$				; IF NOT, GO CHECK CID
                                     043E   823 	$ASSIGN_S	-			; ASSIGN CHANNEL TO CSU
                                     043E   824 		CRP_A_CSUID(R10),-		; CAMAC UNIT STRING
                                     043E   825 		CMAP_W_CHAN(R3)			; CHANNEL TO CMAP TABLE
                         4B 50   E9  044D   826 	BLBC	R0,90$				; IF FAILURE, RETURN
                                     0450   827 
                    02 A3   52   B0  0450   828 	MOVW	R2,CMAP_W_MAPID(R3)		; SAVE MAP ID TEMPLATE
                            08   11  0454   829 	BRB	40$				; CONTINUE
                                     0456   830 10$:
                            00   ED  0456   831 	CMPZV	#MID_V_CID,-
                            0A       0458   832 		#MID_S_CID+MID_S_UNIT,-		; CONTROLLER AND UNIT FROM CMAP ENTRY
                    52   02 A3       0459   833 		CMAP_W_MAPID(R3),R2		; MATCH MAP ID TEMPLATE?
                            20   12  045C   834 	BNEQ	20$				; IF NOT, GO COMPUTE SECONDARY
                                     045E   835 40$:
                            00   E1  045E   836 	BBC	#CRPS_V_KEYED,-			; KEYED ASSIGNMENT?
                      0E 02 AA       0460   837 		CRP_W_STS(R10),80$		; IF NOT, SKIP REF COUNT
                       06   0A   EF  0463   838 	EXTZV	#MID_V_REFC,#MID_S_REFC,-	; EXTRACT REFERENCE COUNT
                    50   02 A3       0466   839 		CMAP_W_MAPID(R3),R0
                            50   D6  0469   840 	INCL	R0				; INCREMENT IT
                  06   0A   50   F0  046B   841 	INSV	R0,#MID_V_REFC,#MID_S_REFC,-	; RESTORE IT
                         02 A3       046F   842 		CMAP_W_MAPID(R3)
                                     0471   843 80$:
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  20
V02-003                         CAMAC I/O CHANNEL MANAGEMENT ROUTINE     24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                    51 AA   54   90  0471   844 	MOVB	R4,CRP_B_CHANX(R10)		; SAVE CMAP INDEX
                            63   B0  0475   845 	MOVW	CMAP_W_CHAN(R3),-		; AND VMS I/O CHANNEL
                         48 AA       0477   846 		CRP_W_CHAN(R10)
                       50   01   9A  0479   847 	MOVZBL	#SS$_NORMAL,R0			; RETURN NORMAL STATUS
                            1D   11  047C   848 	BRB	90$				; GO EXIT ROUTINE
                                     047E   849 20$:
         53   54   00000065 8F   C1  047E   850 	ADDL3	#CAM_K_SECNDX,R4,R3		; PREV INDEX+SEC INDEX=NEW INDEX
                            54   D4  0486   851 	CLRL	R4				; CLEAR UPPER BITS FOR DIVIDE
    54   53   53   00000047 8F   7B  0488   852 	EDIV	#CAM_K_MAXCHAN,R3,R3,R4		; MOD BY CMAP SIZE(R4=REMAINDER)
                       55   54   91  0491   853 	CMPB	R4,R5				; NEW INDEX=PRIMARY?
                            9C   12  0494   854 	BNEQ	30$				; IF NOT, CONTINUE
                  50   01B4 8F   3C  0496   855 	MOVZWL	#SS$_NOIOCHAN,R0		; SET NO I/O CHANNEL AVAILABLE
                                     049B   856 90$:						; ROUTINE EXIT
                       5E   56   D0  049B   857 	MOVL	R6,SP				; RESTORE ENTRY STACK 
                       007C 8F   BA  049E   858 	POPR	#^M<R2,R3,R4,R5,R6>		; RESTORE WORKING REGS
                                 05  04A2   859 	RSB					; RETURN TO CALLER
                                     04A3   860 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  21
V02-003                         RELEASE CAMAC CHANNEL                    24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     04A3   862 	.SBTTL	RELEASE CAMAC CHANNEL
                                     04A3   863 	.ENABL	LSB
                                     04A3   864 
                                     04A3   865 ;++
                                     04A3   866 ;
                                     04A3   867 ; CAM_RELCHAN: RELEASE CAMAC I/O CHANNEL 
                                     04A3   868 ;
                                     04A3   869 ; Inputs:
                                     04A3   870 ;	R10	- address of CAMAC Request Packet,
                                     04A3   871 ;	R11	- address of CAMAC Image Block.
                                     04A3   872 ;
                                     04A3   873 ; Outputs:
                                     04A3   874 ;	R0	- status of request.
                                     04A3   875 ;
                                     04A3   876 ;--
                                     04A3   877 
                                     04A3   878 CAM_RELCHAN::
                            56   DD  04A3   879 	PUSHL	R6				; SAVE WORK REG
                       56   5E   D0  04A5   880 	MOVL	SP,R6				; SAVE ENTRY STACK LEVEL
                  50   013C 8F   3C  04A8   881 	MOVZWL	#SS$_IVCHAN,R0			; SET INVALID I/O CHAN
                    52   51 AA   9A  04AD   882 	MOVZBL	CRP_B_CHANX(R10),R2		; GET CMAP TABLE INDEX
            52   00000000'EF42   DE  04B1   883 	MOVAL	SUB_L_CMAP[R2],R2		; AND USE TO GET CMAP ENTRY ADDRESS
                            62   D5  04B9   884 	TSTL	(R2)				; CMAP ENTRY VALID?
                            21   13  04BB   885 	BEQL	90$				; IF 0, ABORT NOW
                       50   01   9A  04BD   886 	MOVZBL	#SS$_NORMAL,R0			; SET NORMAL STATUS
                       06   0A   EF  04C0   887 	EXTZV	#MID_V_REFC,#MID_S_REFC,-
                    50   02 A2       04C3   888 		CMAP_W_MAPID(R2),R0		; GET CHANNEL REFERENCE COUNT
                            50   D7  04C6   889 	DECL	R0				; DECREMENT COUNT
                            0E   12  04C8   890 	BNEQ	10$				; IF NOT 0, LEAVE VMS CHAN ASSIGNED
                                     04CA   891 	$DASSGN_S	-			; DEASSIGN VMS I/O CHANNEL
                                     04CA   892 		CMAP_W_CHAN(R2)			; VMS CHANNEL NUMBER
                            62   D4  04D4   893 	CLRL	(R2)				; ZERO CMAP ENTRY
                            06   11  04D6   894 	BRB	90$				; EXIT ROUTINE
                                     04D8   895 10$:
                  06   0A   50   F0  04D8   896 	INSV	R0,#MID_V_REFC,#MID_S_REFC,-
                         02 A2       04DC   897 		CMAP_W_MAPID(R2)		; RESTORE UPDATED REFERENCE COUNT
                                     04DE   898 90$:
                       5E   56   D0  04DE   899 	MOVL	R6,SP				; RESTORE ENTRY STACK LEVEL
                            56 8ED0  04E1   900 	POPL	R6				; RESTORE WORK REG
                                 05  04E4   901 	RSB					; RETURN TO CALLER
                                     04E5   902 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  22
V02-003                         SCANNING DECIMAL TO BINARY CONVERSION RO 24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     04E5   904 	.SBTTL	SCANNING DECIMAL TO BINARY CONVERSION ROUTINE
                                     04E5   905 	.ENABL	LSB
                                     04E5   906 
                                     04E5   907 ;++
                                     04E5   908 ;
                                     04E5   909 ; CAM_DEC_BIN: CONVERT STRING OF DECIMAL DIGITS TO BINARY
                                     04E5   910 ;
                                     04E5   911 ; Inputs:
                                     04E5   912 ;	R1	- address of first ASCII decimal digit,
                                     04E5   913 ;	R2	- maximum scan length.
                                     04E5   914 ;
                                     04E5   915 ; Outputs:
                                     04E5   916 ;	R1	- address of terminating character,
                                     04E5   917 ;	R2	- remaining byte count in scan.
                                     04E5   918 ;	R0	- binary number from conversion.
                                     04E5   919 ;
                                     04E5   920 ;--
                                     04E5   921 
                                     04E5   922 CAM_DEC_BIN:
                                     04E5   923 
                            50   D4  04E5   924 	CLRL	R0				; CLEAR WORKING REG
                            7E   D4  04E7   925 	CLRL	-(SP)				; CLEAR WORKING VALUE
                            52   D6  04E9   926 	INCL	R2				; BUMP LENGTH 1 TO GET LOOP
                                     04EB   927 						; STARTED RIGHT
                                     04EB   928 30$:
                         02 52   F5  04EB   929 	SOBGTR	R2,10$				; LOOP UNTIL LENGTH 0
                            15   11  04EE   930 	BRB	40$				; EXIT ROUTINE WHEN 0
                                     04F0   931 10$:
                  50   81   30   83  04F0   932 	SUBB3	#^A/0/,(R1)+,R0			; RESIDUAL OF ASCII CHARACTER
                            0D   19  04F4   933 	BLSS	20$				; EXIT IF NOT IN RANGE 0-9
                       09   50   91  04F6   934 	CMPB	R0,#9
                            08   14  04F9   935 	BGTR	20$
                       6E   0A   C4  04FB   936 	MULL	#10,(SP)			; VALU=10*VALU
                       6E   50   C0  04FE   937 	ADDL	R0,(SP)				; + RESIDUAL
                            E8   11  0501   938 	BRB	30$				; AND CONTINUE
                                     0503   939 20$:
                            71   95  0503   940 	TSTB	-(R1)				; BACKUP TO TERMINATING
                                     0505   941 						; CHARACTER POSITION
                                     0505   942 40$:
                            50 8ED0  0505   943 	POPL	R0				; RETURN CURRENT VALUE
                                 05  0508   944 	RSB					; TO CALLER
                                     0509   945 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  23
V02-003                         SCANNING OCTAL TO BINARY CONVERSION ROUT 24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0509   947 	.SBTTL	SCANNING OCTAL TO BINARY CONVERSION ROUTINE
                                     0509   948 	.ENABL	LSB
                                     0509   949 
                                     0509   950 ;++
                                     0509   951 ;
                                     0509   952 ; CAM_OCT_BIN: CONVERT STRING OF ASCII OCTAL DIGITS INTO
                                     0509   953 ;		BINARY EQUIVALENT.
                                     0509   954 ;
                                     0509   955 ; Inputs:
                                     0509   956 ;	R1	- address of first octal digit to convert,
                                     0509   957 ;	R2	- maximum scan length.
                                     0509   958 ;
                                     0509   959 ; Outputs:
                                     0509   960 ;	R1	- address of character terminating scan,
                                     0509   961 ;	R2	- byte count remaining in string.
                                     0509   962 ;
                                     0509   963 ;--
                                     0509   964 
                                     0509   965 CAM_OCT_BIN:
                                     0509   966 
                            50   D4  0509   967 	CLRL	R0				; CLEAR WORKING REG
                            7E   D4  050B   968 	CLRL	-(SP)				; CLEAR ACCUMULATED VALUE
                            52   D6  050D   969 	INCL	R2				; BUMP LENGTH 1 TO GET LOOP
                                     050F   970 						; STARTED RIGHT
                                     050F   971 30$:
                         02 52   F5  050F   972 	SOBGTR	R2,10$				; LOOP UNTIL LENGTH=0
                            15   11  0512   973 	BRB	40$				; THEN EXIT
                                     0514   974 10$:
                  50   81   30   83  0514   975 	SUBB3	#^A/0/,(R1)+,R0			; RESIDUAL OF ASCII CHARACTER
                            0D   19  0518   976 	BLSS	20$				; IF NOT OCTAL DIGIT IN
                       07   50   91  051A   977 	CMPB	R0,#7				; RANGE 0-7, EXIT
                            08   14  051D   978 	BGTR	20$
                       6E   08   C4  051F   979 	MULL	#8,(SP)				; VALU=8*VALU
                       6E   50   C0  0522   980 	ADDL	R0,(SP)				; + RESIDUAL
                            E8   11  0525   981 	BRB	30$				; AND CONTINUE
                                     0527   982 20$:
                            71   95  0527   983 	TSTB	-(R1)				; BACKUP TO TERMINATING
                                     0529   984 						; CHARACTER
                                     0529   985 40$:
                            50 8ED0  0529   986 	POPL	R0				; RETURN ACCUMULATED VALUE
                                 05  052C   987 	RSB					; TO CALLER
                                     052D   988 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  24
V02-003                         CAM_VERMDB, VERIFY CAMAC MODULE DATA     24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     052D   990 	.SBTTL	CAM_VERMDB, VERIFY CAMAC MODULE DATA
                                     052D   991 	.ENABL	LSB
                                     052D   992 
                                     052D   993 ;++
                                     052D   994 ;
                                     052D   995 ; CAM_VERMDB: VERIFY CAMAC MODULE DATA IN CRP.
                                     052D   996 ; NOTE: This routine assumes that valid module data is contained in the
                                     052D   997 ;	CRP.
                                     052D   998 ;
                                     052D   999 ; Inputs:
                                     052D  1000 ;	R10	- address of CAMAC Request Packet.
                                     052D  1001 ;
                                     052D  1002 ; Outputs:
                                     052D  1003 ;	R0	- status of the request.
                                     052D  1004 ;
                                     052D  1005 ;--
                                     052D  1006 
                                     052D  1007 CAM_VERMDB::						; VERIFY CAMAC MODULE DATA
                                     052D  1008 
                    50   4C AA   9A  052D  1009 	MOVZBL	CRP_B_N(R10),R0				; GET STATION NUMBER
                            20   13  0531  1010 	BEQL	10$					; IF 0, ERROR
                       1E   50   91  0533  1011 	CMPB	R0,#CAM_K_NMAX				; STATION VALID?
                            1B   1A  0536  1012 	BGTRU	10$					; IF NOT, ERROR
                       51   3E   9A  0538  1013 	MOVZBL	#CAM_K_SCMAX,R1				; ASSUME SERIAL SYSTEM
                 03 4F AA   03   E0  053B  1014 	BBS	#CONT_V_SER,CRP_B_CONT(R10),20$		; IF SO, SKIP
                       51   07   9A  0540  1015 	MOVZBL	#CAM_K_PCMAX,R1				; CHANGE MAX CRATE FOR PARALLEL
                                     0543  1016 20$:
                    50   4B AA   9A  0543  1017 	MOVZBL	CRP_B_C(R10),R0				; GET CAMAC CRATE NUMBER
                            0A   13  0547  1018 	BEQL	10$					; IF 0, ERROR
                       51   50   91  0549  1019 	CMPB	R0,R1					; CRATE VALID?
                            05   1A  054C  1020 	BGTRU	10$					; IF NOT, EXIT HERE
                       50   01   9A  054E  1021 	MOVZBL	#SS$_NORMAL,R0				; CHANGE TO SUCCESS
                            05   11  0551  1022 	BRB	90$					; EXIT ROUTINE
                                     0553  1023 10$:
                  50   0144 8F   3C  0553  1024 	MOVZWL	#SS$_IVDEVNAM,R0			; SET INVALID DEVICE
                                     0558  1025 90$:
                                 05  0558  1026 	RSB						; RETURN TO CALLER
                                     0559  1027 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  25
V02-003                         CAM_VERUIC, VERIFY CAMAC MODULE UIC WITH 24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0559  1029 	.SBTTL	CAM_VERUIC, VERIFY CAMAC MODULE UIC WITH PROCESS UIC
                                     0559  1030 	.ENABL	LSB
                                     0559  1031 
                                     0559  1032 ;++
                                     0559  1033 ;
                                     0559  1034 ; CAM_VERUIC: VERIFY CAMAC MODULE UIC WITH PROCESS UIC.
                                     0559  1035 ; NOTE: This routine assumes that valid module data is contained in the
                                     0559  1036 ;	CRP.
                                     0559  1037 ;
                                     0559  1038 ; Inputs:
                                     0559  1039 ;	R10	- address of CAMAC Request Packet,
                                     0559  1040 ;	R11	- address of CAMAC image block.
                                     0559  1041 ;
                                     0559  1042 ; Outputs:
                                     0559  1043 ;	R0	- status of the request.
                                     0559  1044 ;
                                     0559  1045 ;--
                                     0559  1046 
                                     0559  1047 CAM_VERUIC::					; VERIFY CAMAC MODULE UIC
                                     0559  1048 
                       50   01   9A  0559  1049 	MOVZBL	#SS$_NORMAL,R0			; ASSUME SUCCESS
                            1C   E0  055C  1050 	BBS	#PRV$V_SYSPRV,-
                      21 18 AB       055E  1051 		CIB_Q_CPRIV(R11),90$		; PROCESS HAVE SYSPRV?
                    08   10 AB   B1  0561  1052 	CMPW	CIB_L_GRP(R11),#^O10		; BELONG TO SYSTEM GROUP?
                            1B   15  0565  1053 	BLEQ	90$				; IF SO, SKIP CHECK
                            1F   E0  0567  1054 	BBS	#GRP_V_WILDGRP,-		; MODULE GROUP WILD?
                      07 40 AA       0569  1055 		CRP_L_GRP(R10),10$		; IF SO, SKIP GROUP CHECK
                         40 AA   B1  056C  1056 	CMPW	CRP_L_GRP(R10),-		; MODULE GROUP MATCH PROCESS?
                         10 AB       056F  1057 		CIB_L_GRP(R11)
                            0C   12  0571  1058 	BNEQ	190$				; IF NOT, RETURN NO PRIV
                                     0573  1059 10$:
                            1F   E0  0573  1060 	BBS	#MEM_V_WILDMEM,-		; MODULE MEMBER WILD?
                      0A 44 AA       0575  1061 		CRP_L_MEM(R10),90$		; IF SO, SKIP CHECK
                         44 AA   B1  0578  1062 	CMPW	CRP_L_MEM(R10),-		; MODULE MEM MATCH PROCESS?
                         14 AB       057B  1063 		CIB_L_MEM(R11)
                            03   13  057D  1064 	BEQL	90$				; IF SO, RETURN SUCCESS
                                     057F  1065 190$:
                       50   24   3C  057F  1066 	MOVZWL	#SS$_NOPRIV,R0			; SET NO PRIVILEGE
                                     0582  1067 90$:
                                 05  0582  1068 	RSB					; RETURN TO CALLER
                                     0583  1069 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  26
V02-003                         CAM_INITCRP, INITIAIZE CAMAC REQUEST PAC 24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0583  1071 	.SBTTL	CAM_INITCRP, INITIAIZE CAMAC REQUEST PACKET
                                     0583  1072 	.ENABL	LSB
                                     0583  1073 
                                     0583  1074 ;++
                                     0583  1075 ;
                                     0583  1076 ; CAM_INITCRP: INITIALIZE CAMAC REQUEST PACKET(CRP).
                                     0583  1077 ;
                                     0583  1078 ; Inputs:
                                     0583  1079 ;	R10	- CRP address.
                                     0583  1080 ;
                                     0583  1081 ; Outputs:
                                     0583  1082 ;	Request independent CRP fields initialized.
                                     0583  1083 ;
                                     0583  1084 ;--
                                     0583  1085 
                                     0583  1086 CAM_INITCRP::
                                     0583  1087 
                         02 AA   B4  0583  1088 	CLRW	CRP_W_STS(R10)			; CLEAR CRP STATUS WORD
                       50   0D   9A  0586  1089 	MOVZBL	#QIO$_NARGS+1,R0		; SET QIO LIST LENGTH
                    51   04 AA   9E  0589  1090 	MOVAB	CRP_L_QIOL(R10),R1		; GET BASE ADDRESS
                                     058D  1091 10$:
                            81   D4  058D  1092 	CLRL	(R1)+				; ZAP ENTRY
                         FB 50   F5  058F  1093 	SOBGTR	R0,10$				; CONTINUE UNTIL DONE
                          FA6B   30  0592  1094 	BSBW	CAM_RELCRP			; RELOCATE CRP ADDRESSES
                                 05  0595  1095 	RSB					; RETURN TO CALLER
                                     0596  1096 	.DSABL	LSB
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  27
V02-003                         CAM_INITCRP, INITIAIZE CAMAC REQUEST PAC 24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

                                     0596  1098 	.END
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  28
Symbol table                                                             24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

$$ARGS         = 0000000C               CRPS_S_NOCHAN  = 00000001               CSU_EXIT         0000040C R     04      
$$T1           = 00000001               CRPS_S_NV      = 00000001               CSU_K_SMAX     = 00000003               
BIT...         = 00000020               CRPS_S_UICV    = 00000001               CSU_K_UNIT     = 00000002               
CAM_CSU          00000370 RG    04      CRPS_S_WAIT    = 00000001               CSU_STATE0       000003A2 R     04      
CAM_DCODKEY      000000AE RG    04      CRPS_V_CSUV    = 00000005               CSU_STATE1       000003D0 R     04      
CAM_DEC_BIN      000004E5 R     04      CRPS_V_CV      = 00000007               CSU_STATE2       000003EC R     04      
CAM_ECODKEY      0000007A RG    04      CRPS_V_KEYED   = 00000000               CSU_SV_CID     = 00000001               
CAM_GETCHAN      00000417 RG    04      CRPS_V_LISM    = 00000003               CSU_SV_EXIT    = 00000003               
CAM_GETMDB       000000F7 RG    04      CRPS_V_LRANUPD = 00000004               CSU_SV_HIWAY   = 00000000               
CAM_INITCRP      00000583 RG    04      CRPS_V_NOCHAN  = 00000002               CSU_SV_UNIT    = 00000002               
CAM_K_MAXCHAN  = 00000047               CRPS_V_NV      = 00000008               DSC$A_A0         00000010               
CAM_K_MAXCONT  = 00000004               CRPS_V_UICV    = 00000006               DSC$A_BASE       00000004               
CAM_K_NMAX     = 0000001E               CRPS_V_WAIT    = 00000001               DSC$A_FRAME      00000008               
CAM_K_PCMAX    = 00000007               CRP_A_CSUID      000000B4               DSC$A_HANDLE     FFFFFFF4               
CAM_K_SCMAX    = 0000003E               CRP_A_LMODID     00000054               DSC$A_POINTER    00000004               
CAM_K_SECNDX   = 00000065               CRP_A_PMODID     0000007C               DSC$B_AFLAGS     0000000A               
CAM_LOGNAM       00000134 RG    04      CRP_A_UICID      000000A4               DSC$B_CLASS      00000003               
CAM_MODULE       0000001B RG    04      CRP_B_A          0000004D               DSC$B_DIGITS     00000009               
CAM_OCT_BIN      00000509 R     04      CRP_B_C          0000004B               DSC$B_DIMCT      0000000B               
CAM_PHYMOD       000001D1 RG    04      CRP_B_CHANX      00000051               DSC$B_DTYPE      00000002               
CAM_RELCHAN      000004A3 RG    04      CRP_B_CONT       0000004F               DSC$B_SCALE      00000008               
CAM_RELCRP       00000000 RG    04      CRP_B_DSBMSK     00000052               DSC$C_D_BLN      00000008               
CAM_UIC          000002B0 RG    04      CRP_B_F          0000004E               DSC$C_JI_BLN     0000000C               
CAM_VERMDB       0000052D RG    04      CRP_B_MODE       0000004A               DSC$C_J_BLN      00000008               
CAM_VERUIC       00000559 RG    04      CRP_B_N          0000004C               DSC$C_PI_BLN     0000000C               
CIB_B_EFN        00000024               CRP_B_RTAB       00000053               DSC$C_P_BLN      00000008               
CIB_K_LENGTH     00000025               CRP_B_UNIT       00000050               DSC$C_SD_BLN     0000000C               
CIB_L_GRP        00000010               CRP_K_CSU      = 00000008               DSC$C_S_BLN      00000008               
CIB_L_MEM        00000014               CRP_K_EFN      = 00000000               DSC$C_UBS_BLN    0000000C               
CIB_L_PSTS       00000008               CRP_K_LENGTH     000000C4               DSC$C_VS_BLN     00000008               
CIB_L_WSQUOTA    00000020               CRP_K_LMOD     = 00000020               DSC$C_Z_BLN      00000008               
CIB_Q_CPRIV      00000018               CRP_K_PMOD     = 00000020               DSC$K_CLASS_A  = 00000004               
CIB_Q_IOSB       00000000               CRP_K_UIC      = 00000008               DSC$K_CLASS_BFA= 000000BF               
CIB_W_CSTS       0000000E               CRP_L_GRP        00000040               DSC$K_CLASS_D  = 00000002               
CIB_W_ISTS       0000000C               CRP_L_MEM        00000044               DSC$K_CLASS_J  = 00000007               
CMAP_W_CHAN      00000000               CRP_L_QIOL       00000004               DSC$K_CLASS_JI = 00000008               
CMAP_W_MAPID     00000002               CRP_Q_FIB        00000004               DSC$K_CLASS_NCA= 0000000A               
CONT_M_CID     = 00000007               CRP_Q_RTB        00000038               DSC$K_CLASS_P  = 00000005               
CONT_M_SER     = 00000008               CRP_W_CDH        0000003E               DSC$K_CLASS_PI = 00000006               
CONT_S_CID     = 00000003               CRP_W_CHAN       00000048               DSC$K_CLASS_S  = 00000001               
CONT_S_SER     = 00000001               CRP_W_CMR        0000003A               DSC$K_CLASS_SD = 00000009               
CONT_V_CID     = 00000000               CRP_W_CSTS       00000000               DSC$K_CLASS_UBA= 0000000E               
CONT_V_SER     = 00000003               CRP_W_CTR        00000038               DSC$K_CLASS_UBS= 0000000D               
CRPS_M_CSUV    = 00000020               CRP_W_DLR        0000003C               DSC$K_CLASS_V  = 00000003               
CRPS_M_CV      = 00000080               CRP_W_STS        00000002               DSC$K_CLASS_VS = 0000000B               
CRPS_M_KEYED   = 00000001               CSTS_M_M16     = 00000008               DSC$K_CLASS_VSA= 0000000C               
CRPS_M_LISM    = 00000008               CSTS_M_QDC     = 00000001               DSC$K_CLASS_Z  = 00000000               
CRPS_M_LRANUPD = 00000010               CSTS_M_QNE     = 00000002               DSC$K_DTYPE_ADT= 00000023               
CRPS_M_NOCHAN  = 00000004               CSTS_M_XI      = 00000004               DSC$K_DTYPE_B  = 00000006               
CRPS_M_NV      = 00000100               CSTS_S_M16     = 00000001               DSC$K_DTYPE_BLV= 00000021               
CRPS_M_UICV    = 00000040               CSTS_S_QDC     = 00000001               DSC$K_DTYPE_BPV= 00000020               
CRPS_M_WAIT    = 00000002               CSTS_S_QNE     = 00000001               DSC$K_DTYPE_BU = 00000002               
CRPS_S_CSUV    = 00000001               CSTS_S_XI      = 00000001               DSC$K_DTYPE_CAD= 000000B2               
CRPS_S_CV      = 00000001               CSTS_V_M16     = 00000003               DSC$K_DTYPE_CIT= 0000001F               
CRPS_S_KEYED   = 00000001               CSTS_V_QDC     = 00000000               DSC$K_DTYPE_D  = 0000000B               
CRPS_S_LISM    = 00000001               CSTS_V_QNE     = 00000001               DSC$K_DTYPE_DC = 0000000D               
CRPS_S_LRANUPD = 00000001               CSTS_V_XI      = 00000002               DSC$K_DTYPE_DPC= 000000B9               
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  29
Symbol table                                                             24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

DSC$K_DTYPE_DSC= 00000018               DSC$L_S1         00000014               JPI$_FREP0VA   = 00000404               
DSC$K_DTYPE_ENT= 000000B3               DSC$L_S2         00000018               JPI$_FREP1VA   = 00000405               
DSC$K_DTYPE_EOM= 000000BD               DSC$L_V0         00000010               JPI$_FREPTECNT = 00000415               
DSC$K_DTYPE_EOR= 000000BF               DSC$V_FL_BOUNDS= 00000007               JPI$_GPGCNT    = 0000030C               
DSC$K_DTYPE_EPT= 000000B5               DSC$V_FL_COEFF = 00000006               JPI$_GRP       = 00000308               
DSC$K_DTYPE_F  = 0000000A               DSC$V_FL_COLUMN= 00000005               JPI$_IMAGECOUNT= 0000041A               
DSC$K_DTYPE_FC = 0000000C               DSC$V_FL_REDIM = 00000004               JPI$_IMAGNAME  = 00000207               
DSC$K_DTYPE_FLD= 000000B7               DSC$W_LENGTH     00000000               JPI$_IMAGPRIV  = 00000413               
DSC$K_DTYPE_G  = 0000001B               DSC$W_MAXLEN     00000008               JPI$_JOBPRCCNT = 0000031E               
DSC$K_DTYPE_GBL= 000000B4               DSC$W_MAXSTRLEN  00000000               JPI$_LASTADR   = 00000102               
DSC$K_DTYPE_GC = 0000001D               FIB_B_CSIZE      00000003               JPI$_LASTCTL   = 00000209               
DSC$K_DTYPE_H  = 0000001C               FIB_B_F          00000002               JPI$_LASTPCB   = 00000322               
DSC$K_DTYPE_HC = 0000001E               FIB_B_TYPE       0000000E               JPI$_LASTPHD   = 0000041B               
DSC$K_DTYPE_L  = 00000008               FIB_K_LENGTH     0000000F               JPI$_LOGINTIM  = 00000206               
DSC$K_DTYPE_LBL= 000000BA               FIB_L_DATA       00000008               JPI$_MEM       = 00000307               
DSC$K_DTYPE_LU = 00000004               FIB_W_CNDX       00000000               JPI$_OWNER     = 00000303               
DSC$K_DTYPE_MOD= 000000BC               FIB_W_DNDX       00000004               JPI$_PAGEFLTS  = 0000040A               
DSC$K_DTYPE_NL = 00000010               FIB_W_DSIZE      00000006               JPI$_PAGFILCNT = 00000414               
DSC$K_DTYPE_NLO= 00000011               FIB_W_EOF        0000000C               JPI$_PAGFILLOC = 00000419               
DSC$K_DTYPE_NR = 00000012               GRP_M_WILDGRP  = 80000000               JPI$_PGFLQUOTA = 0000040E               
DSC$K_DTYPE_NRO= 00000013               GRP_S_WILDGRP  = 00000001               JPI$_PID       = 00000319               
DSC$K_DTYPE_NU = 0000000F               GRP_V_WILDGRP  = 0000001F               JPI$_PPGCNT    = 0000030D               
DSC$K_DTYPE_NZ = 00000014               JPI$C_ADRTYPE  = 00000001               JPI$_PRCCNT    = 0000031B               
DSC$K_DTYPE_O  = 0000001A               JPI$C_CTLTYPE  = 00000002               JPI$_PRCLM     = 00000408               
DSC$K_DTYPE_OU = 00000019               JPI$C_LISTEND  = 00000000               JPI$_PRCNAM    = 0000031C               
DSC$K_DTYPE_P  = 00000015               JPI$C_PCBTYPE  = 00000003               JPI$_PRI       = 00000302               
DSC$K_DTYPE_PCT= 000000B8               JPI$C_PHDTYPE  = 00000004               JPI$_PRIB      = 00000309               
DSC$K_DTYPE_Q  = 00000009               JPI$_ACCOUNT   = 00000203               JPI$_PROCPRIV  = 00000204               
DSC$K_DTYPE_QU = 00000005               JPI$_APTCNT    = 0000030A               JPI$_SITESPEC  = 00000208               
DSC$K_DTYPE_R11= 000000B6               JPI$_ASTACT    = 00000300               JPI$_STATE     = 00000306               
DSC$K_DTYPE_RTN= 000000BE               JPI$_ASTCNT    = 0000030E               JPI$_STS       = 00000305               
DSC$K_DTYPE_SLB= 000000BB               JPI$_ASTEN     = 00000301               JPI$_SWPFILLOC = 00000321               
DSC$K_DTYPE_T  = 0000000E               JPI$_ASTLM     = 00000409               JPI$_TERMINAL  = 0000031D               
DSC$K_DTYPE_V  = 00000001               JPI$_AUTHPRI   = 00000418               JPI$_TMBU      = 0000030B               
DSC$K_DTYPE_VT = 00000025               JPI$_AUTHPRIV  = 00000412               JPI$_TQCNT     = 00000315               
DSC$K_DTYPE_VU = 00000022               JPI$_BIOCNT    = 0000030F               JPI$_TQLM      = 00000410               
DSC$K_DTYPE_W  = 00000007               JPI$_BIOLM     = 00000310               JPI$_UIC       = 00000304               
DSC$K_DTYPE_WU = 00000003               JPI$_BUFIO     = 0000040C               JPI$_USERNAME  = 00000202               
DSC$K_DTYPE_Z  = 00000000               JPI$_BYTCNT    = 00000311               JPI$_VIRTPEAK  = 00000200               
DSC$K_DTYPE_ZEM= 00000017               JPI$_BYTLM     = 0000031A               JPI$_VOLUMES   = 00000205               
DSC$K_DTYPE_ZI = 00000016               JPI$_CPULIM    = 0000040D               JPI$_WSAUTH    = 00000401               
DSC$K_D_BLN      00000008               JPI$_CPUTIM    = 00000407               JPI$_WSAUTHEXT = 00000417               
DSC$K_JI_BLN     0000000C               JPI$_CURPRIV   = 00000400               JPI$_WSEXTENT  = 00000416               
DSC$K_J_BLN      00000008               JPI$_DFPFC     = 00000406               JPI$_WSPEAK    = 00000201               
DSC$K_PI_BLN     0000000C               JPI$_DFWSCNT   = 00000403               JPI$_WSQUOTA   = 00000402               
DSC$K_P_BLN      00000008               JPI$_DIOCNT    = 00000312               JPI$_WSSIZE    = 00000411               
DSC$K_SD_BLN     0000000C               JPI$_DIOLM     = 00000313               KEY_K_LRCSEED  = 0000005A               
DSC$K_S_BLN      00000008               JPI$_DIRIO     = 0000040B               KEY_M_C        = 0000003F               
DSC$K_UBS_BLN    0000000C               JPI$_EFCS      = 00000317               KEY_M_CHANX    = 00FF0000               
DSC$K_VS_BLN     00000008               JPI$_EFCU      = 00000318               KEY_M_CID      = 000001C0               
DSC$K_Z_BLN      00000008               JPI$_EFWM      = 00000316               KEY_M_LRC      = FF000000               
DSC$L_ARSIZE     0000000C               JPI$_ENQCNT    = 0000031F               KEY_M_N        = 0000FC00               
DSC$L_BYTEOFF    FFFFFFF8               JPI$_ENQLM     = 00000320               KEY_M_SER      = 00000200               
DSC$L_LOGUNIT    FFFFFFFC               JPI$_EXCVEC    = 00000100               KEY_S_C        = 00000006               
DSC$L_M1         00000014               JPI$_FILCNT    = 00000314               KEY_S_CHANX    = 00000008               
DSC$L_M2         00000018               JPI$_FILLM     = 0000040F               KEY_S_CID      = 00000003               
DSC$L_POS        00000008               JPI$_FINALEXC  = 00000101               KEY_S_LRC      = 00000008               
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  30
Symbol table                                                             24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

KEY_S_N        = 00000006               PRV$V_SHMEM    = 0000001B               SS$_CLEARED    = 00002104               
KEY_S_SER      = 00000001               PRV$V_SYSGBL   = 00000019               SS$_CLIFRCEXT  = 00000980               
KEY_V_C        = 00000000               PRV$V_SYSLCK   = 0000001E               SS$_CMODSUPR   = 0000041C               
KEY_V_CHANX    = 00000010               PRV$V_SYSNAM   = 00000002               SS$_CMODUSER   = 00000424               
KEY_V_CID      = 00000006               PRV$V_SYSPRV   = 0000001C               SS$_COMMHARD   = 000020C4               
KEY_V_LRC      = 00000018               PRV$V_TMPMBX   = 0000000F               SS$_COMPAT     = 0000042C               
KEY_V_N        = 0000000A               PRV$V_VOLPRO   = 00000015               SS$_CONCEALED  = 00000691               
KEY_V_SER      = 00000009               PRV$V_WORLD    = 00000010               SS$_CONNECFAIL = 000020DC               
MEM_M_WILDMEM  = 80000000               PSTS_M_JIBV    = 00000001               SS$_CONTINUE   = 00000001               
MEM_S_WILDMEM  = 00000001               PSTS_S_JIBV    = 00000001               SS$_CONTROLC   = 00000651               
MEM_V_WILDMEM  = 0000001F               PSTS_V_JIBV    = 00000000               SS$_CONTROLO   = 00000609               
MID_M_CID      = 0000000F               QIO$_ASTADR    = 00000014               SS$_CONTROLY   = 00000611               
MID_M_REFC     = 0000FC00               QIO$_ASTPRM    = 00000018               SS$_CREATED    = 00000619               
MID_M_UNIT     = 000003F0               QIO$_CHAN      = 00000008               SS$_CTRLERR    = 00000054               
MID_S_CID      = 00000004               QIO$_EFN       = 00000004               SS$_CVTUNGRANT = 0000213C               
MID_S_REFC     = 00000006               QIO$_FUNC      = 0000000C               SS$_DATACHECK  = 0000005C               
MID_S_UNIT     = 00000006               QIO$_IOSB      = 00000010               SS$_DATAOVERUN = 00000838               
MID_V_CID      = 00000000               QIO$_NARGS     = 0000000C               SS$_DBGOPCREQ  = 000006A1               
MID_V_REFC     = 0000000A               QIO$_P1        = 0000001C               SS$_DEADLOCK   = 00000E0A               
MID_V_UNIT     = 00000004               QIO$_P2        = 00000020               SS$_DEBUG      = 0000046C               
PMD_EXIT         000002A5 R     04      QIO$_P3        = 00000024               SS$_DECOVF     = 000004A4               
PMD_K_CSU      = 00000007               QIO$_P4        = 00000028               SS$_DEVACTIVE  = 000002C4               
PMD_K_N        = 00000002               QIO$_P5        = 0000002C               SS$_DEVALLOC   = 00000840               
PMD_K_SMAX     = 00000004               QIO$_P6        = 00000030               SS$_DEVALRALLOC= 00000641               
PMD_K_UIC      = 00000008               SIZ...         = 00000008               SS$_DEVASSIGN  = 00000848               
PMD_STATE0       000001FF R     04      SS$_ABORT      = 0000002C               SS$_DEVCMDERR  = 0000032C               
PMD_STATE1       0000022F R     04      SS$_ACCONFLICT = 00000800               SS$_DEVFOREIGN = 00000064               
PMD_STATE2       0000027A R     04      SS$_ACCVIO     = 0000000C               SS$_DEVICEFULL = 00000850               
PMD_SV_CSU     = 00000000               SS$_ACPVAFUL   = 000002FC               SS$_DEVINACT   = 000020D4               
PMD_SV_EXIT    = 00000003               SS$_ALRDYCLOSED= 000006A9               SS$_DEVMOUNT   = 0000006C               
PMD_SV_N       = 00000002               SS$_ARTRES     = 00000474               SS$_DEVNOTALLOC= 00000858               
PMD_SV_UIC     = 00000001               SS$_ASTFLT     = 0000040C               SS$_DEVNOTDISM = 000021B4               
PRV$V_ACNT     = 00000009               SS$_BADATTRIB  = 00000034               SS$_DEVNOTMBX  = 00000074               
PRV$V_ALLSPOOL = 00000004               SS$_BADCHKSUM  = 00000808               SS$_DEVNOTMOUNT= 0000007C               
PRV$V_ALTPRI   = 0000000D               SS$_BADESCAPE  = 0000003C               SS$_DEVOFFLINE = 00000084               
PRV$V_BUGCHK   = 00000017               SS$_BADFILEHDR = 00000810               SS$_DEVREQERR  = 00000334               
PRV$V_BYPASS   = 0000001D               SS$_BADFILENAME= 00000818               SS$_DGQINCOMP  = 000009C0               
PRV$V_CMEXEC   = 00000001               SS$_BADFILEVER = 00000820               SS$_DIRALLOC   = 000009C8               
PRV$V_CMKRNL   = 00000000               SS$_BADIMGHDR  = 00000044               SS$_DIRFULL    = 00000860               
PRV$V_DETACH   = 00000005               SS$_BADIRECTORY= 00000828               SS$_DIRNOTEMPTY= 00002174               
PRV$V_DIAGNOSE = 00000006               SS$_BADISD     = 00002004               SS$_DISCONNECT = 0000204C               
PRV$V_EXQUOTA  = 00000013               SS$_BADPARAM   = 00000014               SS$_DRVERR     = 0000008C               
PRV$V_GROUP    = 00000008               SS$_BADQFILE   = 000003BC               SS$_DUPDSKQUOTA= 000003DC               
PRV$V_GRPNAM   = 00000003               SS$_BADQUEUEHDR= 00000394               SS$_DUPFILENAME= 00000868               
PRV$V_LOG_IO   = 00000007               SS$_BADRCT     = 0000216C               SS$_DUPLNAM    = 00000094               
PRV$V_MOUNT    = 00000011               SS$_BADSTACK   = 000002B4               SS$_DUPUNIT    = 000021C4               
PRV$V_NETMBX   = 00000014               SS$_BADVEC     = 00002064               SS$_ENDOFFILE  = 00000870               
PRV$V_NOACNT   = 00000009               SS$_BEGOFFILE  = 00000938               SS$_ENDOFTAPE  = 00000878               
PRV$V_OPER     = 00000012               SS$_BLOCKCNTERR= 00000940               SS$_ENDOFUSRLBL= 00000970               
PRV$V_PFNMAP   = 0000001A               SS$_BREAK      = 00000414               SS$_ENDOFVOLUME= 000009A0               
PRV$V_PHY_IO   = 00000016               SS$_BUFBYTALI  = 0000030C               SS$_EOTIN      = 00000C03               
PRV$V_PRMCEB   = 0000000A               SS$_BUFFEROVF  = 00000601               SS$_EXASTLM    = 00002A04               
PRV$V_PRMGBL   = 00000018               SS$_BUFNOTALIGN= 00000324               SS$_EXBIOLM    = 00002A0C               
PRV$V_PRMMBX   = 0000000B               SS$_BUGCHECK   = 000002A4               SS$_EXBYTLM    = 00002A14               
PRV$V_PSWAPM   = 0000000C               SS$_CANCEL     = 00000830               SS$_EXCPUTIM   = 000020AC               
PRV$V_SETPRI   = 0000000D               SS$_CHAINW     = 00000C0B               SS$_EXDEPTH    = 00000E1A               
PRV$V_SETPRV   = 0000000E               SS$_CHANINTLK  = 0000004C               SS$_EXDIOLM    = 00002A1C               
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  31
Symbol table                                                             24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

SS$_EXDISKQUOTA= 000003EC               SS$_INHCHME    = 000004D4               SS$_NOCMKRNL   = 00002804               
SS$_EXENQLM    = 00002A44               SS$_INHCHMK    = 000004CC               SS$_NODATA     = 000001AC               
SS$_EXFILLM    = 00002A24               SS$_INSFARG    = 00000114               SS$_NODETACH   = 0000282C               
SS$_EXGBLPAGFIL= 00002164               SS$_INSFBUFDP  = 0000033C               SS$_NODEVAVL   = 000009B0               
SS$_EXPGFLQUOTA= 00002A2C               SS$_INSFCDT    = 000021AC               SS$_NODIAGNOSE = 00002834               
SS$_EXPORTQUOTA= 000003AC               SS$_INSFMAPREG = 00000344               SS$_NODISKQUOTA= 000003E4               
SS$_EXPRCLM    = 00002A34               SS$_INSFMEM    = 00000124               SS$_NOEXQUOTA  = 0000289C               
SS$_EXQUOTA    = 0000001C               SS$_INSFRAME   = 0000012C               SS$_NOGROUP    = 00002844               
SS$_EXQUOTAEND = 00002AFF               SS$_INSFSPTS   = 00002044               SS$_NOGRPNAM   = 0000281C               
SS$_EXQUOTASTRT= 00002A00               SS$_INSFWSL    = 0000011C               SS$_NOHANDLER  = 000008F8               
SS$_EXTIDXFILE = 00000880               SS$_INTDIV     = 00000484               SS$_NOHOMEBLK  = 000008E0               
SS$_EXTQELM    = 00002A3C               SS$_INTERLOCK  = 0000038C               SS$_NOIOCHAN   = 000001B4               
SS$_FACILITY   = 00000000               SS$_INTOVF     = 0000047C               SS$_NOLICENSE  = 00002194               
SS$_FCPREADERR = 00000888               SS$_INVLOGIN   = 0000209C               SS$_NOLINKS    = 0000027C               
SS$_FCPREPSTN  = 00000988               SS$_IVADDR     = 00000134               SS$_NOLISTENER = 0000215C               
SS$_FCPREWNDERR= 00000890               SS$_IVBUFLEN   = 0000034C               SS$_NOLOCKID   = 00000E12               
SS$_FCPSPACERR = 00000898               SS$_IVCHAN     = 0000013C               SS$_NOLOGNAM   = 000001BC               
SS$_FCPWRITERR = 000008A0               SS$_IVCHAR     = 000020CC               SS$_NOLOG_IO   = 0000283C               
SS$_FILACCERR  = 0000009C               SS$_IVCHNLSEC  = 0000026C               SS$_NOMBX      = 00000274               
SS$_FILALRACC  = 000000A4               SS$_IVDEVNAM   = 00000144               SS$_NOMOREFILES= 00000930               
SS$_FILELOCKED = 000008A8               SS$_IVGSDNAM   = 0000014C               SS$_NOMOREPROC = 000009A8               
SS$_FILENUMCHK = 000008B0               SS$_IVLOCKID   = 00002124               SS$_NOMOUNT    = 0000288C               
SS$_FILEPURGED = 00000679               SS$_IVLOGNAM   = 00000154               SS$_NONETMBX   = 000028A4               
SS$_FILESEQCHK = 000008B8               SS$_IVLOGTAB   = 0000015C               SS$_NONEXDRV   = 000001C4               
SS$_FILESTRUCT = 000008C0               SS$_IVLVEC     = 0000203C               SS$_NONEXPR    = 000008E8               
SS$_FILNOTACC  = 000000AC               SS$_IVMODE     = 00000354               SS$_NONLOCAL   = 000008F0               
SS$_FILNOTCNTG = 000002AC               SS$_IVPROTECT  = 000002F4               SS$_NOOPER     = 00002894               
SS$_FILNOTEXP  = 000000B4               SS$_IVQUOTAL   = 00000164               SS$_NOP1VA     = 00002024               
SS$_FLTDIV     = 00000494               SS$_IVSECFLG   = 0000016C               SS$_NOPFNMAP   = 000028D4               
SS$_FLTDIV_F   = 000004BC               SS$_IVSECIDCTL = 000002E4               SS$_NOPHY_IO   = 000028B4               
SS$_FLTOVF     = 0000048C               SS$_IVSSRQ     = 00000174               SS$_NOPRIV     = 00000024               
SS$_FLTOVF_F   = 000004B4               SS$_IVSTSFLG   = 0000017C               SS$_NOPRIVEND  = 000029FF               
SS$_FLTUND     = 0000049C               SS$_IVTIME     = 00000184               SS$_NOPRIVSTRT = 00002800               
SS$_FLTUND_F   = 000004C4               SS$_JBCERROR   = 0000218C               SS$_NOPRMCEB   = 00002854               
SS$_FORCEDERROR= 00002144               SS$_LCKPAGFUL  = 000000D4               SS$_NOPRMGBL   = 000028C4               
SS$_FORCEDEXIT = 0000217C               SS$_LENVIO     = 0000018C               SS$_NOPRMMBX   = 0000285C               
SS$_FORMAT     = 000000BC               SS$_LINEABRT   = 00000E02               SS$_NOPSWAPM   = 00002864               
SS$_GPTFULL    = 000000C4               SS$_LINKABORT  = 000020E4               SS$_NOQFILE    = 000003C4               
SS$_GSDFULL    = 000000CC               SS$_LINKDISCON = 000020EC               SS$_NORMAL     = 00000001               
SS$_HANGUP     = 000002CC               SS$_LINKEXIT   = 000020F4               SS$_NOSETPRV   = 00002874               
SS$_HEADERFULL = 000008C8               SS$_LKWSETFUL  = 00000194               SS$_NOSHMBLOCK = 000003B4               
SS$_IDMISMATCH = 000003F4               SS$_MBFULL     = 000008D8               SS$_NOSHMEM    = 000028DC               
SS$_IDXFILEFULL= 000008D0               SS$_MBTOOSML   = 0000019C               SS$_NOSHRIMG   = 000021BC               
SS$_ILLBLKNUM  = 000000DC               SS$_MCHECK     = 000002BC               SS$_NOSIGNAL   = 00000900               
SS$_ILLCDTST   = 00002154               SS$_MCNOTVALID = 0000035C               SS$_NOSLOT     = 0000039C               
SS$_ILLCNTRFUNC= 000000E4               SS$_MEDOFL     = 000001A4               SS$_NOSOLICIT  = 00000284               
SS$_ILLEFC     = 000000EC               SS$_MSGNOTFND  = 00000621               SS$_NOSUCHDEV  = 00000908               
SS$_ILLIOFUNC  = 000000F4               SS$_MTLBLLONG  = 00000304               SS$_NOSUCHFILE = 00000910               
SS$_ILLLBLAST  = 00000968               SS$_MULTRMS    = 0000202C               SS$_NOSUCHNODE = 0000028C               
SS$_ILLPAGCNT  = 000000FC               SS$_MUSTCLOSEFL= 00000948               SS$_NOSUCHOBJ  = 000020A4               
SS$_ILLSELF    = 0000214C               SS$_NOACNT     = 0000284C               SS$_NOSUCHSEC  = 00000978               
SS$_ILLSEQOP   = 000002DC               SS$_NOALLSPOOL = 00002824               SS$_NOSUCHUSER = 00002084               
SS$_ILLSER     = 00000104               SS$_NOALTPRI   = 0000286C               SS$_NOSYSGBL   = 000028CC               
SS$_ILLUSRLBLRD= 00000958               SS$_NOAQB      = 00000314               SS$_NOSYSLCK   = 000028F4               
SS$_ILLUSRLBLWT= 00000960               SS$_NOBUGCHK   = 000028BC               SS$_NOSYSNAM   = 00002814               
SS$_INCOMPAT   = 00000699               SS$_NOBYPASS   = 000028EC               SS$_NOSYSPRV   = 000028E4               
SS$_INCVOLLABEL= 0000010C               SS$_NOCMEXEC   = 0000280C               SS$_NOTALLPRIV = 00000681               
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  32
Symbol table                                                             24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)

SS$_NOTAPEOP   = 00000264               SS$_SUPERSEDE  = 00000631               
SS$_NOTCREATOR = 00000384               SS$_SUSPENDED  = 000003A4               
SS$_NOTFILEDEV = 000001CC               SS$_SYNCH      = 00000689               
SS$_NOTINSTALL = 00002014               SS$_SYSVERDIF  = 00000671               
SS$_NOTINTBLSZ = 000001D4               SS$_TAPEPOSLOST= 00000224               
SS$_NOTLABELMT = 000001DC               SS$_TBIT       = 00000464               
SS$_NOTMODIFIED= 00000659               SS$_THIRDPARTY = 0000207C               
SS$_NOTMPMBX   = 0000287C               SS$_TIMEOUT    = 0000022C               
SS$_NOTNETDEV  = 000002EC               SS$_TOOMANYLNAM= 00000374               
SS$_NOTPRINTED = 00002184               SS$_TOOMANYREDS= 0000211C               
SS$_NOTQUEUED  = 000009B8               SS$_TOOMANYVER = 00000990               
SS$_NOTRAN     = 00000629               SS$_TOOMUCHDATA= 0000029C               
SS$_NOTSQDEV   = 000001E4               SS$_UNASEFC    = 00000234               
SS$_NOTVOLSET  = 00000998               SS$_UNREACHABLE= 00002094               
SS$_NOVOLPRO   = 000028AC               SS$_UNSAFE     = 0000023C               
SS$_NOWORLD    = 00002884               SS$_UNSOLICIT  = 00002114               
SS$_NOWRT      = 000003FC               SS$_UNWIND     = 00000920               
SS$_OPCCUS     = 00000434               SS$_UNWINDING  = 00000928               
SS$_OPCDEC     = 0000043C               SS$_VASFULL    = 00000244               
SS$_OPINCOMPL  = 000002D4               SS$_VCBROKEN   = 0000219C               
SS$_OPRABORT   = 000020B4               SS$_VCCLOSED   = 000021A4               
SS$_OVRDSKQUOTA= 00000669               SS$_VECFULL    = 00002034               
SS$_PAGOWNVIO  = 000001EC               SS$_VECINUSE   = 0000024C               
SS$_PAGRDERR   = 00000444               SS$_VOLINV     = 00000254               
SS$_PARITY     = 000001F4               SS$_WAITUSRLBL = 00000950               
SS$_PARNOTGRANT= 00002134               SS$_WASCLR     = 00000001               
SS$_PARTESCAPE = 000001FC               SS$_WASECC     = 00000639               
SS$_PARTMAPPED = 00000E22               SS$_WASSET     = 00000009               
SS$_PATHLOST   = 000020FC               SS$_WRITLCK    = 0000025C               
SS$_PFMBSY     = 00000204               SS$_WRONGACP   = 0000031C               
SS$_PLHLDR     = 00000404               SUB_L_CMAP       00000000 R     03      
SS$_POWERFAIL  = 00000364               SYS$ASSIGN       ********  GX   04      
SS$_PRIVINSTALL= 00002054               SYS$DASSGN       ********  GX   04      
SS$_PROTINSTALL= 0000205C               SYS$TRNLOG       ********  GX   04      
SS$_PROTOCOL   = 00002074               TLN_K_LENGTH     00000008               
SS$_PSTFULL    = 0000020C               TLN_L_RTAB       00000004               
SS$_QFACTIVE   = 000003CC               TLN_L_STATUS     00000000               
SS$_QFNOTACT   = 000003D4               UIC_EXIT         00000366 R     04      
SS$_RADRMOD    = 0000044C               UIC_K_GRP      = 00000003               
SS$_RDDELDATA  = 00000661               UIC_K_MEM      = 00000003               
SS$_REJECT     = 00000294               UIC_K_SMAX     = 00000004               
SS$_RELINK     = 0000200C               UIC_STATE0       000002ED R     04      
SS$_REMOTE     = 00000649               UIC_STATE1       00000334 R     04      
SS$_REMRSRC    = 0000206C               UIC_SV_EXIT    = 00000002               
SS$_RESET      = 0000210C               UIC_SV_GRP     = 00000000               
SS$_RESIGNAL   = 00000918               UIC_SV_MEM     = 00000001               
SS$_RESULTOVF  = 00000214               
SS$_ROPRAND    = 00000454               
SS$_SECTBLFUL  = 0000021C               
SS$_SHARTOOBIG = 0000201C               
SS$_SHMGSNOTMAP= 0000036C               
SS$_SHMNOTCNCT = 0000037C               
SS$_SHRIDMISMAT= 000020BC               
SS$_SHUT       = 0000208C               
SS$_SSFAIL     = 0000045C               
SS$_SUBLOCKS   = 0000212C               
SS$_SUBRNG     = 000004AC               
CAM$SUBS                        CAM$LIB SUPPORT ROUTINES                 24-JAN-1982 17:11:01  VAX-11 Macro V03-00         Page  33
Psect synopsis                                                           24-JAN-1982 17:09:51  SYS$SYSROOT:[CAMAC.SOURCE]CAMSUBS.(1)


                                                +----------------+
                                                ! Psect synopsis !
                                                +----------------+

PSECT name                      Allocation          PSECT No.  Attributes     
----------                      ----------          ---------  ----------     
.  ABS  .                       00000000  (    0.)  00 (  0.)  NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT NOVEC BYTE  
. BLANK .                       00000000  (    0.)  01 (  1.)  NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT NOVEC BYTE  
$ABS$                           FFFFFFFC  (    0.)  02 (  2.)  NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT NOVEC BYTE  
CAM$DATA                        0000011C  (  284.)  03 (  3.)  NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD    WRT NOVEC BYTE  
CAM$CODE                        00000596  ( 1430.)  04 (  4.)    PIC   USR   CON   REL   LCL   SHR   EXE   RD  NOWRT NOVEC BYTE  

                                             +------------------------+
                                             ! Performance indicators !
                                             +------------------------+

Phase                    Page faults    CPU Time       Elapsed Time   
-----                    -----------    --------       ------------   
Initialization                   24     00:00:00.04    00:00:00.17
Command processing               33     00:00:00.22    00:00:00.62
Pass 1                          453     00:00:12.13    00:00:13.40
Symbol table sort                 0     00:00:01.21    00:00:01.21
Pass 2                          232     00:00:02.97    00:00:03.27
Symbol table output              67     00:00:00.43    00:00:00.57
Psect synopsis output             4     00:00:00.02    00:00:00.02
Cross-reference output            0     00:00:00.00    00:00:00.00
Assembler run totals            815     00:00:17.04    00:00:19.27

The working set limit was 1024 pages.
66500 bytes (130 pages) of virtual memory were used to buffer the intermediate code.
There were 50 pages of symbol table space allocated to hold 787 non-local and 60 local symbols.
1098 source lines were read in Pass 1, producing 19 object records in Pass 2.
29 pages of virtual memory were used to define 28 macros.

                                            +--------------------------+
                                            ! Macro library statistics !
                                            +--------------------------+

Macro library name                           Macros defined      
------------------                           --------------      
SYS$SYSROOT:[CAMAC.SOURCE]CAMDEF.MLB;1                  6        
SYS$SYSROOT:[SYSLIB]LIB.MLB;1                           0        
SYS$SYSROOT:[CAMAC.SOURCE]CAMDEF.MLB;1                  0        
SYS$SYSROOT:[SYSLIB]LIB.MLB;1                           0        
SYS$SYSROOT:[SYSLIB]STARLET.MLB;1                      17        
TOTALS (all libraries)                                 23        

1095 GETS were required to define 23 macros.

There were no errors, warnings or information messages.

/LIST CAMSUBS+SYS$LIBRARY:LIB/LIB+SYS$SYSROOT:[CAMAC.SOURCE]CAMDEF/LIB
