.TITLE ATL .SBTTL DESC PAGE ;SUB TO GIVE FULL LIST OF THE ATL FOR A GIVEN TASK ; ;COMMAND LINE EXAMPLE ; ;MCR>INF ATL XXXXXX (XXXXXX IS TASK NAME) ;OR ;MCR>INF ATL XXXXXX/TI=TTN: (FOR TASK AT ANOTHER TERMINAL) ; .MCALL QIOW$,DIR$ .PAGE .SBTTL ERROR EXITS ERROR: ;SYNTAX ERROR DIR$ #BADDPB ;DO SYNTAX ERROR MESS RTS PC ERROR1: ;TASK NOT ACTIVE MOV #BAD1,BADDPB+Q.IOPL MOV #BADLN1,BADDPB+Q.IOPL+2 DIR$ #BADDPB RTS PC .PAGE .SBTTL MAIN CODE ATL:: MOV #MCRBUF,R0 ;POINT TO COMMAND LINE MOV R0,R1 ;SET TO MAKE END OF LINE POINTER ADD MCRSIZ,R1 ;NOW HAVE IT 1$: CMPB (R0)+,#40 ;FOUND FIRST SPACE AFTER "INF" BEQ 2$ ;YES CMP R0,R1 ;PAST END OF COMMAND BLE 1$ ;YES JMP ERROR ;NO, AN ERROR 2$: CMPB (R0)+,#40 ;DO AGAIN TO GET PAST "ATL" BEQ 3$ CMP R0,R1 ;STILL IN COMMAND LINE ? BLE 2$ JMP ERROR 3$: ;POINTING AT TASK NAME MOV #1,R1 ;. IS LEGAL CHARACTER JSR PC,$CAT5 ;CONVERT TO RAD 50 BCC 111$ ;BR IF OK CMPB R2,#'/ ;TERMINATED ON / OF SWITCH ? BNE 111$ ;NO DEC R0 ;PUT R0 AT TERMINATOR 111$: MOV R1,TASNAM ;FILL IN FIRST HALF OF NAME MOV #1,R1 ;DO AGAIN FOR 2ND HALF JSR PC,$CAT5 BCC 222$ ;BR IF OK CMPB R2,#'/ ;TERMINATED ON / OF SWITCH ? BNE 222$ ;NO DEC R0 ;PUT R0 AT TERMINATOR 222$: MOV R1,TASNAM+2 ;FILL IN 2ND HALF CKSW: CMPB (R0),#'/ ;TERMINATED ON SWITCH ? BNE MYTI ;IF NOT USE MY TI INC R0 ;BUMP PAST "/" CMPB (R0)+,#'T ;CHECK SYNTAX BNE ERROR CMPB (R0)+,#'I BNE ERROR CMPB (R0)+,#': BNE ERROR MOVB (R0)+,TINAME ;SAVE NAME MOVB (R0)+,TINAME+1 JSR PC,$COTB ;CONVERT UNIT NUMBER TO OCTAL MOV R1,TINUMB ;SAVE TI NUMBER BR FINDTA ;AND FIND TASK MYTI: MOV .CRTSK,R0 ;GET MY TI MOV A.TI(R0),R0 ;GET MY PUD POINTER MOV U.DN(R0),TINAME ;SAVE MY TI NAME MOVB U.UN(R0),TINUMB ;AND NUMBER FINDTA: ;NOW CAN SEARCH ATL FOR TASK MOV #.ATLLH,R0 ;R0 POINTS AT ATLLH LOOP: MOV (R0),R0 ;GET NEXT ATL LISTHEAD CMP R0,#.ATLLH ;THROUGH LIST ? BEQ ERROR1 ;YES, AN ERROR MOV A.TD(R0),R1 ;GET STD CMP S.TN(R1),TASNAM ;DO NAMES MATCH BNE LOOP CMP S.TN+2(R1),TASNAM+2 BNE LOOP MOV A.TI(R0),R1 ;GET TI POINTER CMP U.DN(R1),TINAME ;DO TI'S MATCH BNE LOOP CMPB U.UN(R1),TINUMB ;LAST TEST BNE LOOP ;NO MATCH ;MATCHED, LIST ATL MOV R0,-(SP) ;SAVE ATL ADDRESS MOV #HEAD1,R0 ;POINT TO HEADER LINE MOV TASNAM,R1 ;GET FIRST HALF OF TASK NAME JSR PC,$C5TA MOV TASNAM+2,R1 JSR PC,$C5TA MOV (SP)+,R0 ;RESTORE ATL ADDRESS DIR$ #HDRDPB ;DO HEADER LINE MOV #NAMES,R4 ;POINT AT TAG LINES MOV #A.SIZ,R5 ;SIZE OF AN ATL ENTRY BIT #AF.IA,A.TF(R0) ;IS THIS A BIG ATL ? BEQ 1$ MOV #A.TSIZ,R5 ;YES, MAKE REPORT BIGGER 1$: ASR R5 ;CONVERT TO WORD COUNT MOV R0,R3 ;MAKE R3 ATL POINTER MOV #1,R2 ;SET R2 AS $CBOMG FLAG LOOP1: MOV #LINE,R0 ;POINT TO ASCII OUTPUT LINE MOV R3,R1 ;NODE ADDRESS TO R1 JSR PC,$CBOMG ;CONVERT NODE ADDRESS TST (R0)+ ;BUMP POINTER PAST " " MOV (R4)+,(R0)+ ;FILL IN "A." ;NOW CHECK SYMBOLS FOR BYTE VALUES CLR BYTFLA ;CLEAR BYTE FLAG CMP (R4),#"RP ;RUN PRI AND IO IN PROG ? BNE 111$ ;NO INC BYTFLA ;YES SET BYTE FLAG 111$: CMP (R4),#"IN ;IO PEND AND CKPTD STATUS ? BNE 222$ ;NO INC BYTFLA ;YES 222$: CMP (R4),#"MT ;MARK TIME COUNT AND CKPTD STATUS ? BNE 333$ ;NO INC BYTFLA ;YES 333$: CMP (R4),#"TS ;TASK STATUS AND AST INDICATOR ? BNE 444$ ;NO INC BYTFLA ;YES 444$: CMP (R4),#"SD ;ALLOC FACTOR DISK ADDR AND QIO COUNT ? BNE 555$ INC BYTFLA ;YES 555$: CMP (R4),#"SW ;SWAP IO AND SUSPEND STATUS ? BNE 666$ INC BYTFLA ;YES 666$: CMPB 2(R4),#'T ;TIMESHARING STATUS AND STATUS SAVE BNE 777$ INC BYTFLA ;YES 777$: MOV (R4)+,(R0)+ MOV (R4)+,(R0)+ ;FILL IN REST OF LABEL MOV (R3)+,R1 ;CONTENTS OF NODE TO R1 TST BYTFLA ;BYTE PRINTOUT ? BEQ 99$ ;NO BIC #177400,R1 ;YES, CLEAR UPPER BYTE 99$: JSR PC,$CBOMG ;CONVERT CONTENTS TO OCTAL TST BYTFLA ;ARE THESE BYTE VALUES ? BEQ 55$ ;NO MOVB #' ,-6(R0) ;MAKE 3 DIGIT OUTPUT MOVB #' ,-5(R0) MOVB #' ,-4(R0) ADD #2,R0 ;BUMP OVER TO 2ND VALUE AREA MOV (R4)+,(R0)+ ;FILL IN 2ND R.XX STRING MOV (R4)+,(R0)+ MOV (R4)+,(R0)+ MOV -2(R3),R1 ;GET CONTENTS OF NODE AGAIN SWAB R1 ;GET UPPER BYTE BIC #177400,R1 ;CLEAR LOWER JSR PC,$CBOMG ;CONVERT IT AGAIN MOVB #' ,-6(R0) MOVB #' ,-5(R0) MOVB #' ,-4(R0) ;MAKE 3 DIGIT PRINTOUT MOV #LINEXL,QIODPB+Q.IOPL+2 ;CHANGE LENGTH OF PRINTOUT 55$: DIR$ #QIODPB ;WRITE LINE MOV #LINELN,QIODPB+Q.IOPL+2 ;CHANGE BACK TO SHORT LINE DEC R5 ;DO A.SIZ LINES BLE 77$ JMP LOOP1 77$: RTS PC ;ALL DONE, LEAVE .PAGE .SBTTL DATA AREAS TASNAM: .BLKW 2 ;ROOM FOR TASK NAME TINAME: .ASCII /TT/ ;ROOM FOR TASK TI NAME TINUMB: .WORD 0 ;AND NUMBER ; HDRDPB: QIOW$ IO.WVB,5,1,,,, HEAD: .ASCII <12><15>/ATL FOR TASK / HEAD1: .ASCII / / HEADLN=.-HEAD .EVEN QIODPB: QIOW$ IO.WVB,5,1,,,, LINE: .ASCII /000000 A.XX 000000/ LINELN=.-LINE .ASCII / / LINEX: .ASCII /S.XX 000000/ LINEXL=.-LINE .EVEN NAMES: .ASCII / A.RQ A.TI A.RP A.IR A.IN A.CS A.MT A.CP / .ASCII /A.HA A.TS A.AS A.TD / .ASCII /A.EF A.FM A.PD A.AF A.AB A.SA / .ASCII /A.JN A.TF A.SD A.QI A.SW A.SS / ;ADDED TAGS FOR A TIMESHARING TASK .ASCII /A.TUF A.TUB A.TFW A.TST A.TSV A.TAC A.TQU A.TLV / .EVEN BADDPB: QIOW$ IO.WVB,5,1,,,, BAD: .ASCII /***INF ATL BAD SYNTAX***/ BADLN=.-BAD .EVEN BAD1: .ASCII /***INF ATL TASK NOT ACTIVE***/ BADLN1=.-BAD1 .EVEN BYTFLA: .WORD 0 ;FLAG FOR BYTE VALUES .END