.TITLE BATQUE DISPLAY BATCH QUEUE .IDENT /01/ ;+ ; DISPLAYS THE CONTENTS OF THE BATCH QUEUE ON TI: ; ; J. SCHRIESHEIM 22-FEB-77 (SPOOL QUEUE) ; *** MODIFIED BY D. MICHAUD TO PRINT EMPTY QUEUE MESSAGE 6/27/77 ; *** MODIFIED BY J. DOWNWARD FOR USE IN DISPLAY OF BATCH QUEUE ; ; THIS MODULE WAS IS BASED ON J. SCHRIESHEIM'S SPOOL QUEUE TASK(SPQ) ; AND MODIFIED TO REFLECT THE DIFFERENCES IN FORMAT AND REPORTING ; REQUIREMENTS FOR THE BATCH QUEUE. SPECIFICALLY THIS TASKS CHECKS ; TO SEE IF THE TERMINAL IS PRIVLEGED AND BASES THE OUTPUT INFORMATION ; ON THE TERMINAL'S PRIVLEGE. IF TI: IS PRIVLEGED, THE COMPLETE ; COMMAND SUBMITTED TO BATCH IS DISPLAYED, IE GRP/MEM/PASWRD CMDFILE. ; IF TI: IS NON PRIVLEGED, ONLY THE COMMAND FILE TO BE SUBMITTED IS DISPLAYED. ; THIS METHOD WAS CHOSEN SO NONPRIVLEGED USERS COULD JUDGE THE AMOUNT ; OF STUFF QUEUED UP FOR BATCH BUT NOT BE ABLE TO SEE PASSWORD INFORMATION. ; ; TO ASSEMBLE: ; [X,X]BATQUE=[1,1]EXEMC/ML,[200,200]RSXMC/PA:1,[X,X]BATQUE ; ; TO BUILD ; LB:[1,54]BTQ/PR/CP=SY:[X,X]BTQ,LB:[1,54]RSX11M.STB ; / ; ASG=TI:1 ; STACK=55 ; PRI=55 ; TASK=...BTQ ; // ; ; >>>THIS TASK MUST BE BUILT EACH SYSGEN ;- .MCALL TCBDF$,CALL,RETURN,QIOW$,DIR$,EXIT$S,GMCR$ .MCALL UCBDF$ ; TCBDF$ ; DEFINE TCB OFFSETS UCBDF$ ; DEFINE UCB OFFSETS ;+ ; LOCAL DATA ;- PRVFLG: .WORD 0 ; FLAG TO SHOW IF TERMINAL PRIVLEGED(=1 IF PRIV) NAME: .RAD50 /BAT.../ ; BATCH TASKNAME PKTCNT: .WORD 0 ; PACKET COUNT MAX=20. ; PRINT UP TO 20 PACKETS BUFF: .BLKW MAX*15. ; ALLOCATE SPACE FOR UP TO 20. ENTRIES GMCR: GMCR$ ; NEEDED BECAUSE INSTALLED AS MCR TASK OSTRNG=GMCR+G.MCRB ; OVERLAY OUTPUT STRING ON MCR BUFFER QIODPB: QIOW$ IO.WVB,1,1,,,, ; QIO TO LUN 1 ;+ ; BYTE STORAGE ;- .NLIST BEX HDRMSG: .ASCIZ/BATCH WAIT QUEUE/ ; HEADER MESSAGE HDRSIZ=.-HDRMSG .EVEN ESTRNG: .ASCIZ /...BTQ - BATCH QUEUE EMPTY/ ; EMPTY QUEUE MESSAGE ESIZ=.-ESTRNG .EVEN .LIST BEX .PAGE .SBTTL MAIN LINE CODE ;+ ; **-BATQUE-PRINT BATCH QUEUE CONTENTS ; ; PRINTS THE CONTENTS OF THE BATCH QUEUE ON LUN 1 ; INSTALL AS ...BTQ ; FORMAT OF OUTPUT: ; ; BATCH WAIT QUEUE OR BATCH WAIT QUEUE ; GRP/MEM/PASWRD CMDFIL CMDFIL ; " " " " " ; ; ONLY THE FIRST 20. REQUESTS IN THE BATCH QUEUE ; WILL BE DISPLAYED. ;- .ENABL LSB START: DIR$ #GMCR ; PICK UP COMMAND LINE MOV $TKTCB,R0 ; NEED TO FIND OUT IF TERMINAL PRIVLEGED, GET TCB ADR MOV T.UCB(R0),R0 ; GET UCB ADDRESS BIT #U2.PRV,U.CW2(R0) ; IS TERMINAL PRIVLEGED BEQ 3$ ; NO, EXIT WITH WARNING INC PRVFLG ; SHOW TI: IS PRIVLEGED 3$: MOV #NAME,R3 ; POINT TO BATCH NAME CALL $SRSTD ; FIND TCB (EXEC ROUTINE) BCS ERR1 ; NOT INSTALLED? MOV #BUFF,R2 ; POINT TO BUFFER MOV T.RCVL(R0),R0 ; GET FIRST ENTRY (REC QUEUE LISTHEAD) BEQ 100$ ; IF EQ - QUEUE EMPTY ;+ ; SEARCH BATCH QUEUE IN SYSTEM STATE ;- CALL $SWSTK,30$ ; SWITCH TO SYSTEM STATE (SET $STKDP=0) 10$: MOV R0,R1 ; SAVE LINK WORD INC PKTCNT ; UPDATE PACKET COUNT TST (R0)+ ; BUMP POINTER PAST LINK WORD MOV #15.,R4 ; 15 WORDS TO MOVE 20$: MOV (R0)+,(R2)+ ; MOVE WORD TO BUFFER SOB R4,20$ ; DONE? CMP #MAX,PKTCNT ; DONE 20 PACKETS YET? BEQ 25$ ; IF EQ, YES MOV (R1),R0 ; ELSE REPLACE POINTER BNE 10$ ; IF NE, MORE IN QUEUE 25$: RETURN ; BACK TO USER STATE ;+ ; IN USER STATE, FORMAT OUTPUT AND PRINT ;- 30$: MOV #BUFF,R2 ; SET UP R0 - MOV #HDRMSG,QIODPB+Q.IOPL ; SET UP TO PRINT HEADER MESSAGE MOV #HDRSIZ,QIODPB+Q.IOPL+2 ; AND BYTE COUNT OF MESSAGE DIR$ #QIODPB ; PRINT IT 40$: MOV #26.,R3 ; NUMBER OF BYTES TO NORMALLY PRINT ADD #4.,R2 ; SKIP FIRST TWO WORDS MOV R2,R1 ; PRETEND TERMINAL IS PRIV. AND WILL PRINT PASSWORDS TST PRVFLG ; IS TERMINAL PRIVLEGED BNE 90$ ; IF NE, OK TO PRINT PASSWORDS 50$: DEC R3 ; DECREASE BYTE COUNT TO PRINT CMPB (R1)+,#40 ; IS IT A SPACE BNE 50$ ; NO, LOOP SOME MORE INC R3 ; BACK UP 1 DEC R1 ; BACK UP 1 90$: MOV R1,QIODPB+Q.IOPL ; POINT TO START OF BUFFER MOV R3,QIODPB+Q.IOPL+2 ; NUMBER OF BYTES TO PRINT DIR$ #QIODPB ; PRINT MESSAGE ADD #26.,R2 ; BUMP TO NEXT PACKET ***** DEC PKTCNT ; ANOTHER PACKET PRINTED BNE 40$ ; IF NE, MORE TO DO 99$: EXIT$S ; SO LONG! ;+ ; PRINT EPMTY QUE MESSAGE ; 100$: MOV #ESTRNG,QIODPB+Q.IOPL MOV #ESIZ,QIODPB+Q.IOPL+2 DIR$ #QIODPB ; PRINT EMPTY MESSAGE BR 99$ ERR1: BR 99$ ; EXIT WITH NO MESSAGE .DSABL LSB .END START