JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      39  DECLARATIONS

   (2)      58  SYMBIONT SERVICE DISPATCHER

   (3)     103  SYMBIONT INITIALIZATION ROUTINE

   (4)     141  DEQUEUE NEXT JOB

   (5)     239  INITIATE PRINTING OF NEXT FILE

   (6)     312  TEMINATE PRINT JOB

   (7)     399  TEMINATE PRINT JOB AND REQUEUE THE JOB

   (8)     439  SEND MESSAGE TO SYMBIONT

   (9)     480  FIND SYMBIONT CONTROL TABLE

   (11)    513  GET SYMBIONT CONTROL TABLE

   (12)    551  GET NEXT SYMBIONT CONTROL TABLE

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   1

V01                                                                                                                              (1)



                                     0000     1 	.TITLE	JBCSYMSRV - SYMBIONT SERVICE MODULE

                                     0000     2 	.IDENT	/V01/

                                     0000     3 

                                     0000     4 ;

                                     0000     5 ; COPYRIGHT (C) 1977

                                     0000     6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000     7 ;

                                     0000     8 ; THIS SOFTWARE IS FURNISHED  UNDER A LICENSE FOR USE ONLY ON A SINGLE

                                     0000     9 ; COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH  THE INCLUSION OF THE

                                     0000    10 ; ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

                                     0000    11 ; MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

                                     0000    12 ; EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

                                     0000    13 ; TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

                                     0000    14 ; REMAIN IN DEC.

                                     0000    15 ;

                                     0000    16 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE

                                     0000    17 ; AND SHOULD  NOT BE CONSTRUED  AS A COMMITMENT  BY DIGITAL  EQUIPMENT

                                     0000    18 ; CORPORATION.

                                     0000    19 ;

                                     0000    20 ; DEC ASSUMES  NO  RESPONSIBILITY  FOR  THE USE OR  RELIABILITY OF ITS

                                     0000    21 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

                                     0000    22 ;

                                     0000    23 

                                     0000    24 ;++

                                     0000    25 ; FACILITY:	STARLET JOB CONTROLLER/SYMBIONT MANAGER

                                     0000    26 ;

                                     0000    27 ; ABSTRACT:	SYMBIONT SERVICE MODULE

                                     0000    28 ;

                                     0000    29 ;

                                     0000    30 ; ENVIRONMENT:	NATIVE NON-PRIVLEGED USER MODE CODE

                                     0000    31 ;

                                     0000    32 ; AUTHOR:  W.H.BROWN, CREATION DATE: 15-MAR-77

                                     0000    33 ;

                                     0000    34 ; MODIFIED BY:

                                     0000    35 ;

                                     0000    36 ;	, : VERSION

                                     0000    37 ; 01	- 

                                     0000    38 ;--

                                     0000    39 	.SBTTL	DECLARATIONS

                                     0000    40 ;

                                     0000    41 ; INCLUDE FILES:

                                     0000    42 ;

                                     0000    43 ;	[235,10]J/ML

                                     0000    44 ;

                                     0000    45 ; MACROS:

                                     0000    46 ;

                                     0000    47 ;

                                     0000    48 ; EQUATED SYMBOLS:

                                     0000    49 ;

                                     0000    50 	JBCPARDEF			; DEFINE JOB CONTROLLER PARAMETERS

                                     0000    51 	JBCQUEDEF			; DEFINE QUEUE OFFSETS

                                     0000    52 	JBCSCTDEF			; SYMBIONT CONTROL TABLE DEFINITIONS

                                     0000    53 	$MSGDEF				; SYSTEM WIDE MESSAGE CODES

                                     0000    54 	$ACCDEF				; ACCOUNT FILE DEFINITIONS

                                     0000    55 ;

                                     0000    56 

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   2

V01             SYMBIONT SERVICE DISPATCHER                                                                                      (2)



                                     0000    58 	.SBTTL	SYMBIONT SERVICE DISPATCHER

                                     0000    59 ;++

                                     0000    60 ; FUNCTIONAL DESCRIPTION:

                                     0000    61 ;

                                     0000    62 ;	THIS ROUTINE IS CALLED TO INITIATE SERRVICE OF AN IDLE SYMBIONT

                                     0000    63 ;

                                     0000    64 ; CALLING SEQUENCE:

                                     0000    65 ;

                                     0000    66 ;	JSB/BSB	JBC$SYMBSERV		; ENTER FROM JOB CONTROLLER

                                     0000    67 ;	JSB/BSB	SYM$SYMBSERV		; ENTER WITH SCT IN R2

                                     0000    68 ;

                                     0000    69 ; INPUT PARAMETERS:

                                     0000    70 ;

                                     0000    71 ;	R2 CONTAINS THE ADDRESS OF THE SYMBIONT CONTROL TABLE

                                     0000    72 ;	FOR WHICH SERVIE IS REQUIRED

                                     0000    73 ;

                                     0000    74 ; OUTPUT PARAMETERS:

                                     0000    75 ;

                                     0000    76 ;	THE SYMBIONT IS ASSIGNED ANOTHER JOB, OR IS PUT IN WORK POOL.

                                     0000    77 ;

                                     0000    78 ; COMPLETION CODES:	NONE

                                     0000    79 ;

                                     0000    80 ; SIDE EFFECTS:		NONE

                                     0000    81 ;--

                                     0000    82 	PURE_SECTION

                                     0000    83 

                                     0000    84 JBC$SYMBSERV::				; SERVICE PRINT SYMBIONT

            55            52     D0  0000    85 	MOVL	R2,R5			; SET ADDRESS OF SCT IN STANDARD REGISTER

                                     0003    86 SYM$SYMBSERV::				; ALTERNATE ENTRY WITH SCT IN R5

                                     0003    87 	CASE	SCT_B_STATE(R5),<-	; DISPATCH ON SYMBIONT STATE

                                     0003    88 		SYM$NXTSYM,-		; UNEXPECTED SYMBIONT DELETE

                                     0003    89 		SYM$SYMBINIT,-		; SYMBIONT JUST INITED

                                     0003    90 		SYM$NXTJOB,-		; JOB MUST BE DEQUEUED

                                     0003    91 		SYM$NXTFIL,-		; READY FOR NEXT FILE

                                     0003    92 		SYM$TRMJOB,-		; TERMIATE THE JOB

                                     0003    93 		SYM$ABOJOB,-		; JOB ABORT ISSUED

                                     0003    94 		SYM$REQUE,-		; REINSERT THE JOB IN THE QUEUE

                                     0003    95 		14$,-			; SUSPEND IS NOP STATE

                                     0003    96 		>-

                                     0003    97 		TYPE=B,-		; CASE BYTE

                                     0003    98 		LIMIT=#0		; LOW VALUE IN CASE

                                     0018    99 		

                                     0018   100 	SHOW_ERROR	ILL_SYM_STATE	; BAD SYMBIONT STATE

                                 05  001A   101 14$:	RSB				;

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   3

V01             SYMBIONT INITIALIZATION ROUTINE                                                                                  (3)



                                     001B   103 	.SBTTL	SYMBIONT INITIALIZATION ROUTINE

                                     001B   104 ;++

                                     001B   105 ; FUNCTIONAL DESCRIPTION:

                                     001B   106 ;

                                     001B   107 ; THIS ROUTINE IS EXECUTED IN ORDER TO COMLETE THE INITIALIZATION

                                     001B   108 ; OF AN OUTPUT SYMBOINT. THE SYMBIONT WAS CREATED, WAS RESPONDED 

                                     001B   109 ; WITH IS MAILBOX UNIT NUMBER. THIS NUMBER WAS SAVED BY THE MESSAGE

                                     001B   110 ; AST ROUTINE IN THE ASSOCIATED SYMBIONT CONTROL TABLE.

                                     001B   111 ; A CHANNEL IS ASSIGNED TO THAT MAILBOX, AND THE STATE IS

                                     001B   112 ; INCREMENTED BY 1, THEREFORE, INDICATING THE SYMBIONT IS

                                     001B   113 ; READY TO TAKE ON A JOB. THEN DEQUEUE JOB IS ENTERED.

                                     001B   114 ;

                                     001B   115 ; CALLING SEQUENCE:

                                     001B   116 ;

                                     001B   117 ;	JSB/BSB	SYM$SYMBINIT

                                     001B   118 ;

                                     001B   119 ; INPUT PARAMETERS:

                                     001B   120 ;

                                     001B   121 ;	R5 CONTAINS THE ADDRESS OF THE SYMBIONT CONTROL TABLE

                                     001B   122 ;

                                     001B   123 ; OUTPUT PARAMETERS:

                                     001B   124 ;

                                     001B   125 ;	THE SYMBIONT IS INITED AND ASSIGNED A JOB IF THERE IS ONE.

                                     001B   126 ;	A CHANNEL IS ASSIGNED TO THE SYMBIONT MAILBOX

                                     001B   127 ;

                                     001B   128 ; COMPLETION CODES:	NONE

                                     001B   129 ;

                                     001B   130 ; SIDE EFFECTS:		NONE

                                     001B   131 ;--

                                     001B   132 

                                     001B   133 SYM$SYMBINIT::				; SYMBIONT INITIALIZTION COMPLETION

            51         0A A5     3E  001B   134 	MOVAW	SCT_W_MBCHAN(R5),R1	; ADDRESS TO STORE CHANNEL

            50            61     B0  001F   135 	MOVW	(R1),R0			; GET THE CHANNEL SAVED IN THE AST

                          FFDB'  30  0022   136 	BSBW	JBC$ASSIGNMB		; ASSIGN THE DEVICE

                                     0025   137 	CHECK_ERROR  ASSIGN_SYMB_MB	; REPORT ERROR IF 1 ASSIGNING MAILBOX

                       08 A5     96  002A   138 	INCB	SCT_B_STATE(R5)		; SET STATE TO READY FOR JOB

                          00     11  002D   139 	BRB	SYM$NXTJOB		; FIND SOMETHING FOR THIS GUY TO DO

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   4

V01             DEQUEUE NEXT JOB                                                                                                 (4)



                                     002F   141 	.SBTTL	DEQUEUE NEXT JOB

                                     002F   142 ;++

                                     002F   143 ; FUNCTIONAL DESCRIPTION:

                                     002F   144 ;

                                     002F   145 ; THIS ROUTINE IS CALLED TO DEQUEUE THE NEXT JOB FOR A SYMBIONT

                                     002F   146 ; TO PRINT.

                                     002F   147 ;

                                     002F   148 ; CALLING SEQUENCE:

                                     002F   149 ;

                                     002F   150 ;	JSB/BSB	SYM$NXTJOB

                                     002F   151 ;

                                     002F   152 ; INPUT PARAMETERS:

                                     002F   153 ;

                                     002F   154 ;	R5 CONTAINS THE ADDRESS OF SYMBIONT CONTROL BLOCK TO

                                     002F   155 ;	PRINT THE JOB

                                     002F   156 ;

                                     002F   157 ; OUTPUT PARAMETERS:

                                     002F   158 ;

                                     002F   159 ;	THE SYMBIONT IS ASSIGNED A JOB OR IS PUT IN THE WAIT QUEUE.

                                     002F   160 ;

                                     002F   161 ; COMPLETION CODES:	NONE

                                     002F   162 ;

                                     002F   163 ; SIDE EFFECTS:		NONE

                                     002F   164 ;--

                                     002F   165 

                                     002F   166 SYM$NXTJOB::				; DEQUE NEXT JOB FOR SYMBIONT

                                 91  002F   167 	CMPB	JCD_B_CURSYMB(R11),-	; CHECK IF THERE ARE MORE SYMBIONTS

         1D AB         1C AB         0030   168 		JCD_B_CURPDEV(R11)	; THAN THERE ARE DEVICES TO PRINT ON

                          0A     1B  0034   169 	BLEQU	10$			; BR IF NO-TRY TO GET A JOB TO PRINT

         08 A5            08     90  0036   170 	MOVB	#SCT_K_MRKDEL,SCT_B_STATE(R5) ; INDICATE DELETE REQUESTED

            50            14     3C  003A   171 	MOVZWL	#MSG$_DELSMB,R0		; GET A MESSAGE

                          01AE   31  003D   172 	BRW	SYM$SND2SMB		; SEND 2 BYTES TO SYMBIONT

            59            20     D0  0040   173 10$:	MOVL	#SYM_K_PRTPRI,R9	; SET NUMBER OF PRINT QUEUES

                          59     D7  0043   174 20$:	DECL	R9			; COUNT DOWN PRINT QUEUE TO SEARCH

                          05     18  0045   175 	BGEQ	40$			; BR IF MORE

         FC BB            65     0E  0047   176 	INSQUE	(R5),@JCD_Q_SYMBWAIT+4(R11) ; PUT THIS IN LIST OF IDLE SYMBIONTS

                                 05  004B   177 30$:	RSB				; RETURN TO CALLER

            53         20 AA49   7E  004C   178 40$:	MOVAQ	SQH$Q_QUEUE(R10)[R9],R3	; FIND ADDRESS OF NEXT QUEUE TO CHECK

            58            83     DE  0051   179 	MOVAL	(R3)+,R8		; SET ADDRESS IS LINK WORD

            57            68     D0  0054   180 50$:	MOVL	(R8),R7			; FOLLOW LINK TO NEXT JOB

                          EA     13  0057   181 	BEQL	20$			; BR IF NO MORE JOBS-CHECK NEXT QUEUE

            57            5A     C0  0059   182 	ADDL	R10,R7			; FIND REAL ADDRESS OF JOB HEADER

            56         06 A7     3C  005C   183 	MOVZWL	SJH$W_QINDEX(R7),R6	; GET QUEUE HEADER INDEX

            56            5A     C0  0060   184 	ADDL	R10,R6			; FIND ADDRESS OF QUEUE HEADER

         08 A6            01     E0  0063   185 	BBS	#SMQ$V_DETJOB,SMQ$B_FLAGS(R6),100$ ; BR IF BATCH QUEUE

                          5F         0067       

                                 E0  0068   186 52$:	BBS	#SMQ$V_GENDEV,-		; BR IF DEVICE IS GENERIC

         08 A6            04         0069   187 		SMQ$B_FLAGS(R6),60$	; SCAN OPEN DEVICES

                          1D         006C       

         0A A6            04     E1  006D   188 	BBC	#SMQ$V_REDIRECT,SMQ$B_CHAR(R6),57$ ; BR IF QUEUE NOT REDIRECTED

                          0D         0071       

            5A         0C A6     C1  0072   189 	ADDL3	SMQ$L_ASNSCT(R6),R10,R6	; GET ADDRESS OF REAL QUEUE

                          56         0076       

         08 A6            0C     93  0077   190 	BITB	#<SMQ$M_STOPPED!SMQ$M_PAUSED>,SMQ$B_FLAGS(R6) ; QUEUE RUNNING?

                          EB     13  007B   191 	BEQL	52$			; BR IF YES

                          48     11  007D   192 	BRB	100$			; ELSE TRY ANOTHER FILE

         08 A6            02     E0  007F   193 57$:	BBS	#SMQ$V_PAUSED,SMQ$B_FLAGS(R6),59$ ; BR IF PAUSED

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   5

V01             DEQUEUE NEXT JOB                                                                                                 (4)



                          04         0083       

                          66     D5  0084   194 	TSTL	SMQ$L_CURRENT(R6)	; IS THERE A FILE PRINTING?

                          45     13  0086   195 	BEQL	110$			; BR IF DEVICE IS FREE

                          3D     11  0088   196 59$:	BRB	100$			; ELSE CHECK NEXT JOB

            52            56     D0  008A   197 60$:	MOVL	R6,R2			; COPY ADDRESS OF GENERIC QUEUE HEADER

            56       0120 CA     DE  008D   198 	MOVAL	SQH$K_SIZE(R10),R6	; FIND ADDRESS OF THE FIRST QUEUE

            54         06 AA     9A  0092   199 	MOVZBL	SQH$B_MAXQUE(R10),R4	; GET COUNT OF ACTIVE QUEUES

                                 E1  0096   200 70$:	BBC	#SMQ$V_INUSE,-		; CHECK IF HEADER IS IN USE

         08 A6            00         0097   201 		SMQ$B_FLAGS(R6),90$	; IF NOT LOOP TO CHECK NEXT

                          26         009A       

                          66     D5  009B   202 	TSTL	SMQ$L_CURRENT(R6)	; IS THERE A FILE PRINTING?

                          22     12  009D   203 	BNEQ	90$			; IF BUSY TRY NEXT

                                 93  009F   204 	BITB	#<SMQ$M_NOGENERIC!-	; CHECK IF NO GENERIC PRINTING ALLOWED,

                                     00A0   205 		SMQ$M_DETJOB!-		; OR IF QUEUE IS FOR DETACHED JOBS,

                                     00A0   206 		SMQ$M_STOPPED!-		; OR THE PROCESSING IS STOPPED

                                     00A0   207 		SMQ$M_PAUSED!-		; OR IT IS SUSPENDED FROM PRINTING

                                     00A0   208 		SMQ$M_GENDEV>,-		; OR THIS IS A GENERIC DEVICE

         08 A6            3E         00A0   209 		SMQ$B_FLAGS(R6)		; ASSOCIATED WITH THIS QUEUE

                          1C     12  00A3   210 	BNEQ	90$			; IF ANY ARE SET-CANNOT PRINT HERE

         0A A6            04     E0  00A5   211 	BBS	#SMQ$V_REDIRECT,SMQ$B_CHAR(R6),90$ ; ALSO FOR REDIRECTED QUEUES

                          17         00A9       

                                     00AA   212 	IF_FORM_DIF	90$		; BR IF FORMS DON'T MATCH

         0A A6            02     E0  00B0   213 	BBS	#SMQ$V_TRMDEV,SMQ$B_CHAR(R6),80$ ; BR IF DEVICE IS A TERMINAL

                          07         00B4       

         0A A2            02     E1  00B5   214 	BBC	#SMQ$V_TRMDEV,SMQ$B_CHAR(R2),110$ ; DEQUE IF DEVICES MATCH

                          13         00B9       

                          05     11  00BA   215 	BRB	90$			; ELSE TRY NEXT QUEUE

         0A A2            02     E0  00BC   216 80$:	BBS	#SMQ$V_TRMDEV,SMQ$B_CHAR(R2),110$ ; DEQUE IF BITS ARE THE SAME

                          0C         00C0       

            56            20     C0  00C1   217 90$:	ADDL	#SMQ$K_SIZE,R6		; ADVANCE TO THE NEXT

            CF            54     F5  00C4   218 	SOBGTR	R4,70$			; MORE QUEUES TO CHECK

            58         08 A7     DE  00C7   219 100$:	MOVAL	SJH$L_NEXTJOB(R7),R8	; SET ADDRESS OF LINK

                          87     11  00CB   220 	BRB	50$			; CHECK NEXT JOB

            68         08 A7     D0  00CD   221 110$:	MOVL	SJH$L_NEXTJOB(R7),(R8)	; CLOSE UP THE LIST

                          08     12  00D1   222 	BNEQ	120$			; BR IF NOT END OF LIST

            50         F8 A8     DE  00D3   223 	MOVAL	-SJH$L_NEXTJOB(R8),R0	; FIND ADDRESS OF JOB HEADER

            50            5A     C3  00D7   224 	SUBL3	R10,R0,(R3)		; STORE INDEX IN QUEUE

                          63         00DA       

                                     00DB   225 120$:	SYM_QUECHANGE			; INDICATE THE QUEUE CHANGED

                       08 A7     D4  00DE   226 	CLRL	SJH$L_NEXTJOB(R7)	; CLEAR LINK-ONLY 1 JOB IN CURRENT LIST

            57            5A     C3  00E1   227 	SUBL3	R10,R7,SMQ$L_CURRENT(R6) ; SET CURRENT PRINTING JOB IN QUEUE HEADER

                          66         00E4       

         0C A6            55     D0  00E5   228 	MOVL	R5,SMQ$L_ASNSCT(R6)	; SAVE ADDRESS OF ASSIGNED SYMBIONT SCT

            56            5A     C3  00E9   229 	SUBL3	R10,R6,R0		; FIND INDEX FOR QUEUE HEADER

                          50         00EC       

         14 A5            50     B0  00ED   230 	MOVW	R0,SCT_W_QINDEX(R5)	; SAVE THAT FOR BACK REFERENCE

         10 A5            57     D0  00F1   231 	MOVL	R7,SCT_L_CURFIL(R5)	; AND AS RECORD JUST FINISHED

                                     00F5   232 	ASSUME	SCT_L_CPUTIM+4 EQ SCT_L_PAGCNT

                                     00F5   233 	ASSUME	SCT_L_QIOCNT+4 EQ SCT_L_GETCNT

                       18 A5     7C  00F5   234 	CLRQ	SCT_L_CPUTIM(R5)	; ZERO CPU AND PAGE COUNTERS

                       20 A5     7C  00F8   235 	CLRQ	SCT_L_QIOCNT(R5)	; NOW QIO AND GET COUNTERS

                       08 A5     96  00FB   236 	INCB	SCT_B_STATE(R5)		; THAT SAYS TO PRINT NEXT RECORD

                          00     11  00FE   237 	BRB	SYM$NXTFIL		; SET UP FILE TO PRINT

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   6

V01             INITIATE PRINTING OF NEXT FILE                                                                                   (5)



                                     0100   239 	.SBTTL	INITIATE PRINTING OF NEXT FILE

                                     0100   240 ;++

                                     0100   241 ; FUNCTIONAL DESCRIPTION:

                                     0100   242 ;

                                     0100   243 ;	THIS ROUTINE IS CALLED TO DEQUEUE A FILE FOR PRINTING

                                     0100   244 ;	FROM THE CURRENT JOB ASSIGNED TO A SYMBIONT.

                                     0100   245 ;

                                     0100   246 ; CALLING SEQUENCE:

                                     0100   247 ;

                                     0100   248 ;	BSB/JSB	SYM$NXTFIL

                                     0100   249 ;

                                     0100   250 ; INPUT PARAMETERS:

                                     0100   251 ;

                                     0100   252 ;	R5 CONTAINS THE ADDRESS OF THE SYMBIONT CONTROL TABLE

                                     0100   253 ;

                                     0100   254 ; OUTPUT PARAMETERS:

                                     0100   255 ;

                                     0100   256 ;	THE SYMBIONT IS GIVE THE NEXT FILE IN THE JOB, OR DEASSIGN FROM THE JOB

                                     0100   257 ;

                                     0100   258 ; COMPLETION CODES:	NONE

                                     0100   259 ;

                                     0100   260 ; SIDE EFFECTS:		NONE

                                     0100   261 ;--

                                     0100   262  

                                     0100   263 SYM$NXTFIL::				; ASSIGN THE NEXT FILE IN JOB TO PRINT

            56         14 A5     3C  0100   264 	MOVZWL	SCT_W_QINDEX(R5),R6	; GET INDEX TO THE QUEUE

            56            5A     C0  0104   265 	ADDL	R10,R6			; FIND ADDRESS OF THE HEADER

            66            5A     C1  0107   266 	ADDL3	R10,SMQ$L_CURRENT(R6),R7 ; FIND ADDRESS OF JOB RECORD IN QUEUE

                          57         010A       

            58         10 B5     D0  010B   267 20$:	MOVL	@SCT_L_CURFIL(R5),R8	; FOLLOW LINK TO NEXT JOB

                          10     12  010F   268 	BNEQ	40$			; BR IF THERE IS A FILE

                       0E A7     97  0111   269 	DECB	SJH$B_COPYCNT(R7)	; MORE COPIES OF ENTIRE JOB?

                          06     13  0114   270 	BEQL	30$			; BR IF NO

         10 A5            57     D0  0116   271 	MOVL	R7,SCT_L_CURFIL(R5)	; SET JOB AS LAST FILE PRINTED

                          EF     11  011A   272 	BRB	20$			; LOOP

                       08 A5     96  011C   273 30$:	INCB	SCT_B_STATE(R5)		; SET STATE TO DONE WITH JOB

                          55     11  011F   274 	BRB	SYM$TRMJOB		; AND GO PROCESS END OF JOB

         08 A6            02     E0  0121   275 40$:	BBS	#SMQ$V_PAUSED,SMQ$B_FLAGS(R6),50$ ; IF PAUSED DON'T DEQUEUE

                          40         0125       

            58            5A     C0  0126   276 	ADDL	R10,R8			; FIND ADDRESS OF FILE RECORD

         10 A5            58     D0  0129   277 	MOVL	R8,SCT_L_CURFIL(R5)	; SAVE THE CURRENT FILE

            50         0C AB     D0  012D   278 	MOVL	JCD_A_LBUFADR(R11),R0	; GET ADDRESS OF LINE BUFFER

            80            10     3C  0131   279 	MOVZWL	#MSG$_INIOPR,(R0)+	; SET MESSAGE TYPE, AND ZERO SPARE WORD

            80         14 A7     7D  0134   280 	MOVQ	SJH$L_UIC(R7),(R0)+	; INSERT UIC AND 4 BYTES OF USER NAME

            80         1C A7     7D  0138   281 	MOVQ	SJH$T_USERNAM+4(R7),(R0)+ ; REST OF USER NAME

            80         2C A7     7D  013C   282 	MOVQ	SJH$Q_TIME(R7),(R0)+	; TIME JOB WAS QUEUED

                          20     BB  0140   283 	PUSHR	#^M<R5>			; SAVE ADDRESS OF RECORD AND SCT

                                 28  0142   284 	MOVC3	#SYM_K_MAXDEVNAM+1+6+6,-; COPY DEVICE AND FILE ID'S FOR

         08 A8            1C         0143   285 		SQR$T_VOLNAM(R8),(R0)	; FILE TO PRINT INTO SYMBIONT MESSAGE

                          60         0146       

                                     0147   286  

                                     0147   287 	ASSUME	SQR$B_FLAGS+1 EQ SQR$B_COPYCNT

                                     0147   288 	ASSUME	SQR$B_FLAGS+2 EQ SQR$W_PAGCNT

                                     0147   289  

            83         38 A8     D0  0147   290 	MOVL	SQR$B_FLAGS(R8),(R3)+	; INSERT FLAGS,COPIES,AND PAGE COUNT

                                 28  014B   291 	MOVC3	#SYM_K_MAXDEVNAM+1,-	; COPY ENTIRE DEVICE NAME FIELD

         10 A6            10         014C   292 		SMQ$T_NAME(R6),(R3)	; FROM QUEUE HEADER AS PRINT DEVICE

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   7

V01             INITIATE PRINTING OF NEXT FILE                                                                                   (5)



                          63         014F       

                                 28  0150   293 	MOVC3	#SYM_K_MAXFILNAM+1,-	; NOW MAXIMUM POSIBLE FILEMANE

         24 A8            14         0151   294 		SQR$T_FILNAM(R8),(R3)	; FOR PRINT FILE INTO MESSAGE

                          63         0154       

            83         34 A7     7D  0155   295 	MOVQ	SJH$Q_JOBNAME(R7),(R3)+	; ADD JOB NAME TO MESSAGE

                          20     BA  0159   296 	POPR	#^M<R5>			; RESTORE SYMBIONT CONTROL TABLE ADDRESS

            51         0C AB     D0  015B   297 	MOVL	JCD_A_LBUFADR(R11),R1	; GET BASE ADDRESS OF LINE BUFFER

            53            51     C3  015F   298 	SUBL3	R1,R3,R0		; FIND NUMBER OF BYTES IN MESSAGE

                          50         0162       

                          0092   30  0163   299 	BSBW	SYM$SNDMSGSMB		; SEND MESSAGE TO SYMBIONT

                                     0166   300 50$:					; JOIN START NEXT SYMBIONT

                                     0166   301  

                                     0166   302 ;

                                     0166   303 ; SEE IF THERE IS ANOTHER SYMBIONT TO START

                                     0166   304 ;

                                     0166   305  

                                     0166   306 SYM$NXTSYM:				;

            55         F8 BB     0F  0166   307 	REMQUE	@JCD_Q_SYMBWAIT(R11),R5	; SEE IF ANY MORE SYMBIONTS TO START

                          03     1D  016A   308 	BVS	10$			; BR IF NO

                          FE94   31  016C   309 	BRW	SYM$SYMBSERV		; IF SO TRY TO START IT

                                 05  016F   310 10$:	RSB				; NOTHING ELSE TO DO NOW!

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   8

V01             TEMINATE PRINT JOB                                                                                               (6)



                                     0170   312 	.SBTTL	TEMINATE PRINT JOB

                                     0170   313 ;++

                                     0170   314 ; FUNCTIONAL DESCRIPTION:

                                     0170   315 ;

                                     0170   316 ;	THIS ROUTINE IS ENTERED WHEN A JOB HAS BEEN COMPLETED,

                                     0170   317 ;	THE ACCOUNTING RECORD MUST BE WRITTEN, THE SYMBIONT

                                     0170   318 ;	AND THE DEVICE MUST BE FREED SO THAT A NEW ASSIGNMENT

                                     0170   319 ;	MAY BE GIVEN TO EITHER OR BOTH.

                                     0170   320 ;

                                     0170   321 ; CALLING SEQUENCE:

                                     0170   322 ;

                                     0170   323 ;	BSB/JSB	SYM$TMRJOB

                                     0170   324 ;

                                     0170   325 ; INPUT PARAMETERS:

                                     0170   326 ;

                                     0170   327 ;	R5 CONTAINS THE ADDRESS OF THE SYMBIONT CONTROL TABLE

                                     0170   328 ;	FOR THE SYMBIONT/JOB/QUEUE TO FREE UP.

                                     0170   329 ;

                                     0170   330 ; IMPLICIT INPUTS:

                                     0170   331 ;

                                     0170   332 ;	R10 HAS THE BASE ADDRESS OF THE QUEUE FILE

                                     0170   333 ;	R11 HAS ADDRESS OF JOB CONTROLLER DATA BLOCK

                                     0170   334 ;

                                     0170   335 ; OUTPUT PARAMETERS:

                                     0170   336 ;

                                     0170   337 ;	THE SYMBIONT IS SET READY FOR ITS NEXT JOB, AND THE QUEUE

                                     0170   338 ;	IS SET TO HAVE NO CURRENT JOB, THE RECORDS FOR THE JOB

                                     0170   339 ;	ARE RELEASED TO THE FREE LIST.

                                     0170   340 ;

                                     0170   341 ; COMPLETION CODES:	NONE

                                     0170   342 ;

                                     0170   343 ; SIDE EFFECTS:		NONE

                                     0170   344 ;--

                                     0170   345 	.ENABL	LSB

                                     0170   346  

                                     0170   347 SYM$ABOJOB::				; ABORT THE JOB

                                 B0  0170   348 	MOVW	#JBC$_JOBABORT&^XFFFF,- ; SET FINAL STATUS OF JOB ABORT

         16 A5       8080 8F         0171   349 		SCT_W_JOBSTAT(R5)	; IN SYMBIONT CONTROL TABLE

                                     0176   350 SYM$TRMJOB::				; TERMINATE THE JOB

                          51     10  0176   351 	BSBB	100$			; GET CURRENT JOB VALUES

            53         0C AB     D0  0178   352 	MOVL	JCD_Q_LBUFDES+4(R11),R3	; ADDRESS OF LINE BUFFER

            52            53     D0  017C   353 	MOVL	R3,R2			; COPY THAT

            82            10     3C  017F   354 	MOVZWL	#ACC$K_PRTJOB,(R2)+	; SET RECORD TYPE

                                     0182   355 	ASSUME	ACC$L_FINALSTS EQ 4

            82         16 A5     B0  0182   356 	MOVW	SCT_W_JOBSTAT(R5),(R2)+	; INSERT LO 1/2 OF FINAL STATUS

            82            04     B0  0186   357 	MOVW	#JBC$_NORMAL@-16,(R2)+	; AND THE SUBSYSTEM NUMBER

                                     0189   358 	ASSUME	ACC$L_PID EQ 8

            82         10 A0     D0  0189   359 	MOVL	SJH$L_PROCID(R0),(R2)+	; PROCESS ID OF REQUESTOR

                                     018D   360 	ASSUME	ACC$L_JOBID EQ 12

            82         04 A0     3C  018D   361 	MOVZWL	SJH$W_JOBSEQ(R0),(R2)+	; FILL JOB ID FIELD

                                     0191   362 	ASSUME	ACC$Q_TERMTIME EQ 16

            82         C4 AB     7D  0191   363 	MOVQ	JCD_Q_TIME(R11),(R2)+	; CURRENT TIME = TIME OF TERMINATION

                                     0195   364 	ASSUME	ACC$T_ACCOUNT EQ 24

            82         24 A0     7D  0195   365 	MOVQ	SJH$Q_ACNTNAM(R0),(R2)+	; INSERT REQUESTORS ACCOUNT NAME

                                     0199   366 	ASSUME	ACC$T_USERNAME EQ 32

            82         18 A0     7D  0199   367 	MOVQ	SJH$T_USERNAM(R0),(R2)+	; NOW FIRST 8 BYTES OF USER NAME

            82         20 A0     D0  019D   368 	MOVL	SJH$T_USERNAM+8(R0),(R2)+ ; REMAINING 4 BYTES

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page   9

V01             TEMINATE PRINT JOB                                                                                               (6)



                                     01A1   369 	ASSUME	ACC$L_CPUTIM EQ 44

                                     01A1   370 	ASSUME	ACC$L_PAGCNT EQ 48

            82         18 A5     7D  01A1   371 	MOVQ	SCT_L_CPUTIM(R5),(R2)+	; INSERT CPU TIME AND PAGE COUNT

                                     01A5   372 	ASSUME	ACC$L_QIOCNT EQ 52

                                     01A5   373 	ASSUME	ACC$L_GETCNT EQ 56

            82         20 A5     7D  01A5   374 	MOVQ	SCT_L_QIOCNT(R5),(R2)+	; NOW QIO AND GET COUNT

                                     01A9   375 	ASSUME	ACC$Q_QUETIME EQ 60

            82         2C A0     7D  01A9   376 	MOVQ	SJH$Q_TIME(R0),(R2)+	; TIME JOB WAS QUEUED

                                     01AD   377 	ASSUME	ACC$T_PRT_NAME EQ 68

            82         34 A0     7D  01AD   378 	MOVQ	SJH$Q_JOBNAME(R0),(R2)+	; THE JOB NAME FOR THIS QUEUE ENTRY

                                     01B1   379 	ASSUME	ACC$T_PRT_QUE EQ 76

            82         10 A6     7D  01B1   380 	MOVQ	SMQ$T_NAME(R6),(R2)+	; FIRST 8 BYTES OF QUEUE NAME

            82         18 A6     7D  01B5   381 	MOVQ	SMQ$T_NAME+8(R6),(R2)+	; SECOND 1/2 OF QUEUE NAME

            52            53     C2  01B9   382 	SUBL	R3,R2			; FIND LENGTH OF MESSAGE

                          FE41'  30  01BC   383 	BSBW	SYM$FREEPRTJOB		; RELEASE THE JOB RECORDS

                          FE3E'  30  01BF   384 	BSBW	JBC$WRTACNT		; WRITE THE ACCOUNTING RECORD

         08 A5            02     90  01C2   385 	MOVB	#SCT_K_DEQJOB,SCT_B_STATE(R5) ; SET SYMBOINT READY FOR NEXT JOB

                          FE66   31  01C6   386 	BRW	SYM$NXTJOB		; TRY TO DEQUE A JOB FOR THIS SYMBIONT

                                     01C9   387  

                                     01C9   388 ;

                                     01C9   389 ; LOCAL SUBROUTINE TO GET THE CURRENT JOB OF THE PRINT SYMBIONT

                                     01C9   390 ;

                                     01C9   391  

            56         14 A5     3C  01C9   392 100$:	MOVZWL	SCT_W_QINDEX(R5),R6	; GET OFFSET TO QUEUE

            56            5A     C0  01CD   393 	ADDL	R10,R6			; FIND ADDRESS IN QUEUE

            66            5A     C1  01D0   394 	ADDL3	R10,SMQ$L_CURRENT(R6),R0 ; GET REAL ADDRESS OF JOB

                          50         01D3       

                          66     D4  01D4   395 	CLRL	SMQ$L_CURRENT(R6)	; MARK QUEUE HAVING NO CURRENT JOB

                                     01D6   396 	SYM_QUECHANGE			; TELL THE WORLD IT CHANGED

                                 05  01D9   397 	RSB

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page  10

V01             TEMINATE PRINT JOB AND REQUEUE THE JOB                                                                           (7)



                                     01DA   399 	.SBTTL	TEMINATE PRINT JOB AND REQUEUE THE JOB

                                     01DA   400 ;++

                                     01DA   401 ; FUNCTIONAL DESCRIPTION:

                                     01DA   402 ;

                                     01DA   403 ;	THIS ROUTINE IS ENTERED WHEN A JOB HAS BEEN TERMINATED,

                                     01DA   404 ;	BUT THE JOB SHOULD BE REQUEUED FOR RESTARTING LATER.

                                     01DA   405 ;

                                     01DA   406 ; CALLING SEQUENCE:

                                     01DA   407 ;

                                     01DA   408 ;	BSB/JSB	SYM$REQUE

                                     01DA   409 ;

                                     01DA   410 ; INPUT PARAMETERS:

                                     01DA   411 ;

                                     01DA   412 ;	R5 CONTAINS THE ADDRESS OF THE SYMBIONT CONTROL TABLE

                                     01DA   413 ;	FOR THE SYMBIONT/JOB/QUEUE TO FREE UP.

                                     01DA   414 ;

                                     01DA   415 ; IMPLICIT INPUTS:

                                     01DA   416 ;

                                     01DA   417 ;	R10 HAS THE BASE ADDRESS OF THE QUEUE FILE

                                     01DA   418 ;	R11 HAS ADDRESS OF JOB CONTROLLER DATA BLOCK

                                     01DA   419 ;

                                     01DA   420 ; OUTPUT PARAMETERS:

                                     01DA   421 ;

                                     01DA   422 ;	THE SYMBIONT IS SET READY FOR ITS NEXT JOB, AND THE QUEUE IS

                                     01DA   423 ;	SET TO HAVE NO CURRENT JOB, THE JOB IS REINSERTED INTO THE QUEUE.

                                     01DA   424 ;

                                     01DA   425 ; COMPLETION CODES:	NONE

                                     01DA   426 ;

                                     01DA   427 ; SIDE EFFECTS:		NONE

                                     01DA   428 ;--

                                     01DA   429  

                                     01DA   430 SYM$REQUE::				; REQUEUE THE CURRENT JOB

                          ED     10  01DA   431 	BSBB	100$			; GET THE JOB AND MARK QUEUE FREE

            57            50     D0  01DC   432 	MOVL	R0,R7			; SET JOB NAME INTO STANDARD REGISTER

         0F A7            01     90  01DF   433 	MOVB	#1,SJH$B_PRTPRI(R7)	; SET PRIORITY TO LOWEST VALUE

         2C A7         C4 AB     7D  01E3   434 	MOVQ	JCD_Q_TIME(R11),SJH$Q_TIME(R7) ; AND CURRENT TIME AS QUEUE TIME

                          FE15'  30  01E8   435 	BSBW	SYM$JOBINSQUE		; INSERT THE JOB IN THE QUEUE

                          FE41   31  01EB   436 	BRW	SYM$NXTJOB		; TRY TO RESTART A SYMBIONT

                                     01EE   437 	.DSABL	LSB

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page  11

V01             SEND MESSAGE TO SYMBIONT                                                                                         (8)



                                     01EE   439 	.SBTTL	SEND MESSAGE TO SYMBIONT

                                     01EE   440 ;++

                                     01EE   441 ; FUNCTIONAL DESCRIPTION:

                                     01EE   442 ;

                                     01EE   443 ;	THIS ROUTINE PURFORMS THE QIO TO SEND DATA TO A SYMBIONT

                                     01EE   444 ;

                                     01EE   445 ; CALLING SEQUENCE:

                                     01EE   446 ;

                                     01EE   447 ;	BSB/JSB	SYM$SND2SMB		; SEND MESSAGE IN R0

                                     01EE   448 ;	BSB/JSB	SYM$SNDMSGSMB		; SEND GENERAL MESSAGE TO SYMBIONT

                                     01EE   449 ;

                                     01EE   450 ; INPUT PARAMETERS:

                                     01EE   451 ;

                                     01EE   452 ; FOR SYM$SND2SMB,	R0 IS THE MESSAGE

                                     01EE   453 ; FOR SYM$SNDMSGSMB,	R0 IS THE BYTE COUNT,

                                     01EE   454 ;			R1 IS THE BUFFER ADDRESS.

                                     01EE   455 ;

                                     01EE   456 ;	R11 HAS THE ADDRESS OF JOB CONTROLLER DATA BLOCK

                                     01EE   457 ;

                                     01EE   458 ; OUTPUT PARAMETERS:

                                     01EE   459 ;

                                     01EE   460 ;	MESSAGE IS SENT

                                     01EE   461 ;

                                     01EE   462 ; COMPLETION CODES:	NONE

                                     01EE   463 ;

                                     01EE   464 ; SIDE EFFECTS:		NONE

                                     01EE   465 ;--

                                     01EE   466  

                                     01EE   467 SYM$SND2SMB::				; SEND R0 MESSAGE TO THE SYMBIONT

            51         0C AB     D0  01EE   468 	MOVL	JCD_A_LBUFADR(R11),R1	; ADDRESS OF LINE BUFFER

            61            50     D0  01F2   469 	MOVL	R0,(R1)			; STORE MESSAGE IN THE BUFFER

            50            04     D0  01F5   470 	MOVL	#4,R0			; LENGTH OF MESSAGE TO SEND

                                     01F8   471 SYM$SNDMSGSMB::				; SEND ANY MESSAGE TO SYMBIONT

                                     01F8   472 	$QIO_S	#0,-			; WRITE MESSAGE TO SYMBIONT

                                     01F8   473 		CHAN=SCT_W_MBCHAN(R5),- ; CHANNEL TO SYMBIONT

                                     01F8   474 		FUNC=#IO$_WRITEVBLK,-	; WRITE DATA

                                     01F8   475 		P1=(R1),-		; BUFFER ADDRESS IS IN R1

                                     01F8   476 		P2=R0			; BYTE COUNT

                                     0216   477 	CHECK_ERROR	WRITE_SYMB_MB	; REPORT ERROR IF ENCOUNTERED

                                 05  021B   478 	RSB				; BACK TO CALLER

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page  12

V01             FIND SYMBIONT CONTROL TABLE                                                                                      (9)



                                     021C   480 	.SBTTL	FIND SYMBIONT CONTROL TABLE

                                     021C   481 ;++

                                     021C   482 ; FUNCTIONAL DESCRIPTION:

                                     021C   483 ;

                                     021C   484 ;	THIS ROUTINE WILL SEARCH FOR THE SYMBIONT CONTROL TABLE

                                     021C   485 ;	ASSIGNED TO A SPECIFIC SYMBIONT AND ISSUE FATAL ERROR IF NOT FOUND.

                                     021C   486 ;

                                     021C   487 ; CALLING SEQUENCE:

                                     021C   488 ;

                                     021C   489 ;	BSB/JSB	SYM$FINDSYMCTL

                                     021C   490 ;

                                     021C   491 ; INPUT PARAMETERS:

                                     021C   492 ;

                                     021C   493 ;	R1 CONTAINS THE PROCESS ID OF TARGET SYMBIONT

                                     021C   494 ;

                                     021C   495 ; OUTPUT PARAMETERS:

                                     021C   496 ;

                                     021C   497 ;	R5 CONTAINS THE ADDRESS OF THE PROPER SYMBIONT CONTROL TABLE

                                     021C   498 ;

                                     021C   499 ; SIDE EFFECTS:

                                     021C   500 ;

                                     021C   501 ;	A FATAL ERROR IS ISSUED IF TABLE IS NOT FOUND

                                     021C   502 ;

                                     021C   503 ;--

                                     021C   504  

                                     021C   505 

                                     021C   506 SYM$FINDSYMCTL::			; FIND SYMBIONT CONTROL TABLE

                          06     10  021C   507 	BSBB	SYM$GETSYMCTL		; FIND THE TABLE

            02            50     E8  021E   508 	BLBS	R0,20$			; BR IF FOUND

                                     0221   509 	SHOW_ERROR	SCT_SEARCH_FAIL	; FATAL ERROR-NO SUCH TABLE

                                 05  0223   510 20$:	RSB				; RETURN WITH TABLE

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page  13

V01             FIND SYMBIONT CONTROL TABLE                                                                                     (11)



                                     0224   512 

                                     0224   513 	.SBTTL	GET SYMBIONT CONTROL TABLE

                                     0224   514 ;++

                                     0224   515 ; FUNCTIONAL DESCRIPTION:

                                     0224   516 ;

                                     0224   517 ;	THIS MODULE WILL SEARCH FOR THE SYMBIONT CONTROL TABLE

                                     0224   518 ;	ASSIGNED TO A SPECIFIC SYMBIONT.

                                     0224   519 ;

                                     0224   520 ; CALLING SEQUENCE:

                                     0224   521 ;

                                     0224   522 ;	BSB/JSB	SYM$GETSYMCTL

                                     0224   523 ;

                                     0224   524 ; INPUT PARAMETERS:

                                     0224   525 ;

                                     0224   526 ;	R1 CONTAINS THE PROCESS ID OF TARGET SYMBIONT

                                     0224   527 ;

                                     0224   528 ; OUTPUT PARAMETERS:

                                     0224   529 ;

                                     0224   530 ;	R5 CONTAINS THE ADDRESS OF THE PROPER SYMBIONT CONTROL TABLE

                                     0224   531 ;

                                     0224   532 ; COMPLETION CODES:

                                     0224   533 ;

                                     0224   534 ;	R0 IS SET TRUE OR FALSE BASED ON SUCESS OF FAILURE OF SEARCH.

                                     0224   535 ;

                                     0224   536 ; SIDE EFFECTS:		NONE

                                     0224   537 ;--

                                     0224   538  

                                     0224   539 

                                     0224   540 SYM$GETSYMCTL::				; GET SYMBIONT CONTROL TABLE

                       3A'AF     9F  0224   541 	PUSHAB	B^SYM$NXTSYMCTL		; INIT CO-ROUTINE

                          9E     16  0227   542 10$:	JSB	@(SP)+			; LOCATE NEXT TABLE

            0D            50     E9  0229   543 	BLBC	R0,30$			; BR IF NO MORE TABLES

                       08 A5     95  022C   544 	TSTB	SCT_B_STATE(R5)		; IS THIS SLOT INUSE?

                          F6     13  022F   545 	BEQL	10$			; BR IF NO - CONTINUE SEARCH

         0C A5            51     D1  0231   546 	CMPL	R1,SCT_L_PROCID(R5)	; IS THIS THE TABLE?

                          F0     12  0235   547 	BNEQ	10$			; BR IF NOT THE CORRECT TABLE

                          8E     D5  0237   548 	TSTL	(SP)+			; CLEAR COROUTINE RETURN ADDRESS

                                 05  0239   549 30$:	RSB				; RETURN WITH STATUS

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page  14

V01             GET NEXT SYMBIONT CONTROL TABLE                                                                                 (12)



                                     023A   551 	.SBTTL	GET NEXT SYMBIONT CONTROL TABLE

                                     023A   552 ;++

                                     023A   553 ; FUNCTIONAL DESCRIPTION:

                                     023A   554 ;

                                     023A   555 ;	THIS IS A COROUTINE TO SEARCH THE SYMBIONT CONTROL

                                     023A   556 ;	TABLES. IT SETS R5 TO POINT AT EACH SUCESSIVE

                                     023A   557 ;	ENTRY IN THE TABLE AND RETURNS WITH SUCESSFUL

                                     023A   558 ;	STATUS.  WHEN THERE ARE NO MORE TABLES, A RETURN

                                     023A   559 ;	FROM SUBROUTINE IS ISSUED WITH FALSE INDICATOR.

                                     023A   560 ;

                                     023A   561 ; CALLING SEQUENCE:

                                     023A   562 ;

                                     023A   563 ;	JSB/BSB	SYM$NXTSYMCTL

                                     023A   564 ;

                                     023A   565 ; INPUT PARAMETERS:	NONE

                                     023A   566 ;

                                     023A   567 ; OUTPUT PARAMETERS:

                                     023A   568 ;

                                     023A   569 ;	R5 CONTAINS THE ADDRESS OF THE NEXT TABLE

                                     023A   570 ;

                                     023A   571 ; COMPLETION CODES:

                                     023A   572 ;

                                     023A   573 ;	R0 CONTAINS TRUE OR FALSE DEPENDING ON WHETHER A TABLE REMAINED

                                     023A   574 ;

                                     023A   575 ; SIDE EFFECTS:		NONE

                                     023A   576 ;--

                                     023A   577  

                                     023A   578  

                                     023A   579 SYM$NXTSYMCTL::				; NEXT SYMBIONT CONTROL TABLE

            55       0000'CF     DE  023A   580 	MOVAL	W^SYM$G_SYMCTLTBL,R5	; SET START OF TABLE

            50            01     D0  023F   581 10$:	MOVL	#1,R0			; SET SUCESSFULL STATUS

                          9E     16  0242   582 	JSB	@(SP)+			; RETURN WITH ADDRESS

            55            28     C0  0244   583 	ADDL	#SCT_K_SIZE,R5		; ADVANCE TO NEXT ENTRY

   00000000'8F            55     D1  0247   584 	CMPL	R5,#SYM$G_SYMCTLTBE	; END OF TABLE?

                          EF     1F  024E   585 	BLSSU	10$			; BR IF NO

                          50     D4  0250   586 	CLRL	R0			; SET NO MORE TABLES FLAG

                                 05  0252   587 	RSB				; RETURN TOP 1 LEVEL

                                     0253   588  

                                     0253   589 	.END

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                    (12)



$$T1           = 00000001            ASSIGN_SYMB_MB   ********   X   03   JBC_K_MAXBUFR  = 00000004            

ACC$C_INS_LEN    000000B0            BIT...         = 00000007            JBC_K_PRTIMFLAG= 00000002            

ACC$C_JOB_LEN    0000006C            GBL...         = 00000000            JBC_K_SYNCFLAG = 00000001            

ACC$C_PRT_LEN    00000058            ILL_SYM_STATE    ********   X   03   JBC_K_UPDFLG   = 00000008            

ACC$C_TERMLEN    00000054            IO$_WRITEVBLK    ********   X   03   JBC_M_CREJOBREQ= 00000008            

ACC$K_BATTRM   = 00000002            JBC$ASSIGNMB     ********   X   03   JBC_M_MBREADREQ= 00000001            

ACC$K_DISAACC  = 00000004            JBC$SYMBSERV     00000000 RG    03   JBC_M_SRVTIMQUE= 00000010            

ACC$K_DISASEL  = 00000006            JBC$WRTACNT      ********   X   03   JBC_M_SYMCREREQ= 00000002            

ACC$K_ENABACC  = 00000003            JBC$_ACMINVOP  = 00048088            JBC_M_SYMINIREQ= 00000004            

ACC$K_ENABSEL  = 00000005            JBC$_ACNTOPN   = 00048478            JBC_V_CREJOBREQ= 00000003            

ACC$K_INSMESG  = 00000001            JBC$_ACNTWRT   = 00048480            JBC_V_MBREADREQ= 00000000            

ACC$K_INSMSG   = 00000011            JBC$_ENTQUE    = 000484A8            JBC_V_SRVTIMQUE= 00000004            

ACC$K_INS_LEN    000000B0            JBC$_ILLDEVNAM = 00048000            JBC_V_SYMCREREQ= 00000001            

ACC$K_INTTRM   = 00000003            JBC$_ILLDEVTYP = 00048008            JBC_V_SYMINIREQ= 00000002            

ACC$K_JOB_LEN    0000006C            JBC$_ILLFILNAM = 00048010            JCD_A_LBUFADR    0000000C            

ACC$K_LOGTRM   = 00000004            JBC$_ILLQUENAM = 00048018            JCD_A_QUEBASE    00000018            

ACC$K_NEWFILE  = 00000002            JBC$_INPASGN   = 00048488            JCD_B_CURPDEV    0000001D            

ACC$K_PRCTRM   = 00000001            JBC$_INPREAD   = 00048490            JCD_B_CURSYMB    0000001C            

ACC$K_PRTJOB   = 00000010            JBC$_INVMSG    = 00048418            JCD_G_LISTS      00000000            

ACC$K_PRT_LEN    00000058            JBC$_INVSCT    = 00048468            JCD_G_WLEND      FFFFFFF0            

ACC$K_TERMLEN    00000054            JBC$_JOBABORT  = 00048080            JCD_G_WORKLIST   FFFFFFD0            

ACC$L_BIOCNT     0000003C            JBC$_JOBCRD    = 000484B0            JCD_K_SIZE     = 000000FC            

ACC$L_CPUTIM     0000002C            JBC$_LOSTREC   = 00048438            JCD_L_SMBPID     FFFFFFCC            

ACC$L_DIOCNT     00000040            JBC$_MBASGN    = 00048400            JCD_Q_ACNTFIL    FFFFFFE8            

ACC$L_FINALSTS   00000004            JBC$_MBDEAS    = 00048460            JCD_Q_FREEBUFR   FFFFFFF0            

ACC$L_GETCNT     00000038            JBC$_MBREAD    = 00048408            JCD_Q_LBUFDES    00000008            

ACC$L_JOBID      0000000C            JBC$_MBSETAST  = 000484C8            JCD_Q_PROCDEL    FFFFFFE0            

ACC$L_OWNER      00000050            JBC$_MBWRITE   = 000484D0            JCD_Q_SYMBMAN    FFFFFFD8            

ACC$L_PAGCNT     00000030            JBC$_MULTREC   = 00048430            JCD_Q_SYMBSRV    FFFFFFD0            

ACC$L_PAGEFLTS   00000030            JBC$_NOOPENJOB = 00048048            JCD_Q_SYMBWAIT   FFFFFFF8            

ACC$L_PGFLPEAK   00000034            JBC$_NOPRIV    = 00048020            JCD_Q_TIME       FFFFFFC4            

ACC$L_PID        00000008            JBC$_NOQUEHDR  = 00048028            JCD_Q_TMPDESC    00000010            

ACC$L_QIOCNT     00000034            JBC$_NOQUESPACE= 00048030            JCD_T_INDEX0     00000000            

ACC$L_VOLUMES    00000044            JBC$_NORMAL    = 00040001            JCD_T_LINBFE     000000C0            

ACC$L_WSPEAK     00000038            JBC$_NOSUCHJOB = 00048040            JCD_T_LINBUF     0000001E            

ACC$Q_LOGIN      00000048            JBC$_NOSUCHQUE = 00048038            JCD_T_START      FFFFFFC4            

ACC$Q_QUETIME    0000003C            JBC$_PASSCRD   = 000484B8            JCD_W_FLAGS      00000004            

ACC$Q_TERMTIME   00000010            JBC$_PRCREAT   = 00048410            JCD_W_JOBSEQ     00000006            

ACC$T_ACCOUNT    00000018            JBC$_PRINTOUT  = 000484E0            JCD_W_LBUFCNT    00000008            

ACC$T_JOB_NAME   00000054            JBC$_QUECNT    = 00048428            JCD_W_LBUFSIZ    0000000A            

ACC$T_JOB_QUE    0000005C            JBC$_QUEERR    = 00048458            JCD_W_MBCHAN     00000002            

ACC$T_PRT_NAME   00000044            JBC$_QUENOSTOP = 00048050            JCD_W_TMPCHAN    00000000            

ACC$T_PRT_QUE    0000004C            JBC$_QUEUPD    = 000484E8            JCM_K_SIZE       000000C0            

ACC$T_USERNAME   00000020            JBC$_SCTERR    = 00048450            JCM_Q_IOSB       00000008            

ACC$T_USER_DATA  0000002C            JBC$_SMINVOPR  = 00048058            JCM_Q_LINKS      00000000            

ACC$W_MSGSIZ     00000002            JBC$_SMINVOPT  = 00048060            JCM_T_MSGDATA    00000010            

ACC$W_MSGTYP     00000000            JBC$_SMINVREQ  = 00048068            MSG$_ABOOPR    = 00000011            

ACM$B_PROCPRI    00000024            JBC$_SMZEROJOB = 00048070            MSG$_ABORT     = 00000030            

ACM$L_PROCID     FFFFFFFC            JBC$_SNDRESP   = 00048420            MSG$_ACCRSP    = 00000021            

ACM$L_UIC        0000000C            JBC$_SYMBASN   = 00048440            MSG$_CONFIRM   = 00000031            

ACM$Q_ACNTNAM    0000001C            JBC$_SYMBCRE   = 000484D8            MSG$_CONNECT   = 00000032            

ACM$Q_PRVMSK     00000004            JBC$_SYMBDSAB  = 00048078            MSG$_CRUNSOLIC = 00000002            

ACM$T_DATA       00000028            JBC$_SYMBWRT   = 00048448            MSG$_DELPROC   = 00000003            

ACM$T_USERNAM    00000010            JBC$_SYMDEL    = 00048470            MSG$_DELSMB    = 00000014            

ACM$W_MAILBOX    00000002            JBC$_UAFOPN    = 000484A0            MSG$_DEVOFFLIN = 00000005            

ACM$W_TYPE       00000000            JBC$_UNESYMMSG = 000484C0            MSG$_DEVONLIN  = 00000007            

ACM$W_USERREQ    00000026            JBC$_USERVAL   = 00048498            MSG$_DISCON    = 00000033            

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page  16

SYMBOL TABLE                                                                                                                    (12)



MSG$_EXIT      = 00000034            SJH$M_JOBABORT = 00000004            SMR$T_DATA       00000028            

MSG$_INIOPR    = 00000010            SJH$M_LOWER    = 00000002            SMR$T_USERNAM    00000010            

MSG$_INTMSG    = 00000035            SJH$Q_ACNTNAM    00000024            SMR$W_MAILBOX    00000002            

MSG$_OPREPLY   = 00000009            SJH$Q_JOBNAME    00000034            SMR$W_TYPE       00000000            

MSG$_OPRQST    = 00000008            SJH$Q_TIME       0000002C            SMR$W_USERREQ    00000026            

MSG$_PATHLOST  = 00000036            SJH$T_USERNAM    00000018            SQH$B_FLAGS      00000004            

MSG$_PROTOCOL  = 00000037            SJH$V_HOLD     = 00000000            SQH$B_MAXQUE     00000006            

MSG$_REJECT    = 00000038            SJH$V_JOBABORT = 00000002            SQH$B_NUMQUE     00000005            

MSG$_RESOPR    = 00000013            SJH$V_LOWER    = 00000001            SQH$B_SPARE      00000007            

MSG$_SCANBAD   = 00000028            SJH$W_JOBSEQ     00000004            SQH$C_SIZE       00000120            

MSG$_SCANRSP   = 00000029            SJH$W_MBCHAN     0000000D            SQH$K_SIZE       00000120            

MSG$_SMBDON    = 00000009            SJH$W_QINDEX     00000006            SQH$L_FIRSTREC   00000008            

MSG$_SMBINI    = 00000008            SMQ$B_CHAR       0000000A            SQH$L_FREEREC    00000000            

MSG$_SMBRSP    = 00000020            SMQ$B_FLAGS      00000008            SQH$L_LASTREC    00000010            

MSG$_SNDACC    = 0000000A            SMQ$B_FORMS      00000009            SQH$L_NEXTREC    0000000C            

MSG$_SNDSMB    = 00000004            SMQ$B_JOBCNT     00000009            SQH$L_OPENJOB    00000014            

MSG$_SUSOPR    = 00000012            SMQ$B_JOBLIM     0000000B            SQH$L_TIMQUE     00000018            

MSG$_THIRDPARTY= 00000039            SMQ$C_SIZE       00000020            SQH$Q_QUEUE      00000020            

MSG$_TIMEOUT   = 0000003A            SMQ$K_SIZE       00000020            SQH$W_QUESEQ     0000001C            

MSG$_TRMHANGUP = 00000006            SMQ$L_ASNSCT     0000000C            SQR$B_COPYCNT    00000039            

MSG$_TRMUNSOLIC= 00000001            SMQ$L_CURRENT    00000000            SQR$B_FLAGS      00000038            

MSG$_XM_ATTN   = 0000000D            SMQ$L_HOLDLST    00000004            SQR$L_RECLINK    00000000            

MSG$_XM_DATAVL = 0000000B            SMQ$M_CREPND   = 00000004            SQR$M_BRSTPAG  = 00000004            

MSG$_XM_SHUTDN = 0000000C            SMQ$M_DEFBRST  = 00000002            SQR$M_DELETE   = 00000001            

SCT_B_FLAGS      00000009            SMQ$M_DEFFLAG  = 00000001            SQR$M_DOUBLE   = 00000008            

SCT_B_STATE      00000008            SMQ$M_DETJOB   = 00000002            SQR$M_FLAGPAG  = 00000002            

SCT_K_ABOREQ   = 00000005            SMQ$M_GENDEV   = 00000010            SQR$M_NOFEED   = 00000010            

SCT_K_DEQFIL   = 00000003            SMQ$M_INIPRI   = 0000000F            SQR$M_PAGHDR   = 00000020            

SCT_K_DEQJOB   = 00000002            SMQ$M_INUSE    = 00000001            SQR$T_FILNAM     00000024            

SCT_K_FREE     = 00000000            SMQ$M_LOWER    = 00000008            SQR$T_VOLNAM     00000008            

SCT_K_INIT     = 00000001            SMQ$M_NOGENERIC= 00000020            SQR$V_BRSTPAG  = 00000002            

SCT_K_MRKDEL   = 00000008            SMQ$M_NOSWAP   = 00000010            SQR$V_DELETE   = 00000000            

SCT_K_REQUE    = 00000006            SMQ$M_PAUSED   = 00000004            SQR$V_DOUBLE   = 00000003            

SCT_K_SIZE       00000028            SMQ$M_REDIRECT = 00000010            SQR$V_FLAGPAG  = 00000001            

SCT_K_SUSPND   = 00000007            SMQ$M_STOPPED  = 00000008            SQR$V_NOFEED   = 00000004            

SCT_K_TRMJOB   = 00000004            SMQ$M_TRMDEV   = 00000004            SQR$V_PAGHDR   = 00000005            

SCT_L_CPUTIM     00000018            SMQ$S_INIPRI   = 00000004            SQR$W_DIRNUM     0000001E            

SCT_L_CURFIL     00000010            SMQ$T_NAME       00000010            SQR$W_DIRSEQ     00000020            

SCT_L_GETCNT     00000024            SMQ$V_CREPND   = 00000002            SQR$W_DIRVOL     00000022            

SCT_L_PAGCNT     0000001C            SMQ$V_DEFBRST  = 00000001            SQR$W_FILNUM     00000018            

SCT_L_PROCID     0000000C            SMQ$V_DEFFLAG  = 00000000            SQR$W_FILSEQ     0000001A            

SCT_L_QIOCNT     00000020            SMQ$V_DETJOB   = 00000001            SQR$W_JOBSEQ     00000004            

SCT_Q_LINKS      00000000            SMQ$V_GENDEV   = 00000004            SQR$W_PAGCNT     0000003A            

SCT_SEARCH_FAIL  ********   X   03   SMQ$V_INIPRI   = 00000000            SQR$W_RECID      00000006            

SCT_W_JOBSTAT    00000016            SMQ$V_INUSE    = 00000000            SQR$W_RELVOL     0000001C            

SCT_W_MBCHAN     0000000A            SMQ$V_LOWER    = 00000003            SYM$ABOJOB       00000170 RG    03   

SCT_W_QINDEX     00000014            SMQ$V_NOGENERIC= 00000005            SYM$CMPFORMS     ********   X   03   

SJH$B_COPYCNT    0000000E            SMQ$V_NOSWAP   = 00000004            SYM$C_RECSIZE    00000040            

SJH$B_FLAGS      0000000C            SMQ$V_PAUSED   = 00000002            SYM$FINDSYMCTL   0000021C RG    03   

SJH$B_FORMS      0000000D            SMQ$V_REDIRECT = 00000004            SYM$FREEPRTJOB   ********   X   03   

SJH$B_PRTPRI     0000000F            SMQ$V_STOPPED  = 00000003            SYM$GETSYMCTL    00000224 RG    03   

SJH$L_NEXTJOB    00000008            SMQ$V_TRMDEV   = 00000002            SYM$G_SYMCTLTBE  ********   X   03   

SJH$L_PARMBLK    0000003C            SMR$B_PROCPRI    00000024            SYM$G_SYMCTLTBL  ********   X   03   

SJH$L_PROCID     00000010            SMR$L_PROCID     FFFFFFFC            SYM$JOBINSQUE    ********   X   03   

SJH$L_RECLINK    00000000            SMR$L_UIC        0000000C            SYM$K_RECSIZE    00000040            

SJH$L_UIC        00000014            SMR$Q_ACNTNAM    0000001C            SYM$NXTFIL       00000100 RG    03   

SJH$M_HOLD     = 00000001            SMR$Q_PRVMSK     00000004            SYM$NXTJOB       0000002F RG    03   

JBCSYMSRV       - SYMBIONT SERVICE MODULE                        22-AUG-1978 00:52:34   VAX-11 MACRO X0.3-11               Page  17

SYMBOL TABLE                                                                                                                    (12)



SYM$NXTSYM       00000166 R     03   

SYM$NXTSYMCTL    0000023A RG    03   

SYM$REQUE        000001DA RG    03   

SYM$SND2SMB      000001EE RG    03   

SYM$SNDMSGSMB    000001F8 RG    03   

SYM$SYMBINIT     0000001B RG    03   

SYM$SYMBSERV     00000003 RG    03   

SYM$TRMJOB       00000176 RG    03   

SYM_K_MAXDEVNAM= 0000000F            

SYM_K_MAXFILNAM= 00000013            

SYM_K_MAXSYMB  = 00000010            

SYM_K_NUMQUEUE = 0000001F            

SYM_K_NUMRECORD= 00000400            

SYM_K_PRTPRI   = 00000020            

SYM_K_QUENAM   = 0000000F            

SYS$QIO          ********   X   03   

WRITE_SYMB_MB    ********   X   03   





PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            FFFFFFFC      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

JBC_PURE         00000253      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

12854. BYTES LEFT IN FREE MEMORY POOL.

452. BYTES OF RECLAIMED MEMORY.

OBJ$:JBCSYMSRV,LIS$:JBCSYMSRV/-SP=EXECML$/ML,LIB$:JOBCTL/ML,SRC$:JBCSYMSRV

49 MLB DIR RDS - 668 GETS TO DEFINE 32 MACROS. 41 INTER. FILE WRITES. 

