.TITLE PRTHDR : PRINT MAP LISTING HEADER ; .MCALL QIOW$C IOEFN=1 ;I/O WAITS ON FLAG #1 COLUN=2 ;OUTPUT ON UNIT #2 CLLUN=3 ;ERRORS ON UNIT#3 ; SET TASK NAME INTO HEADER LINE ; PRTHDR:: MOV #6,R1 ;R1 = CHAR COUNT MOV #PNAME,R2 ;R2 -> RAD50 NAME MOV #H1NAME,R3 ;R3 -> NAME IN HDR LINE JSR PC,..RDTA ;CONVERT TO ASCII ; ; SET PARTITION ADDRESSES INTO HEADER LINE ; MOV #H1BA+4,R1 ;R1 -> OUTPUT AREA+1 CLR R2 ;R2/R3 = 32-BIT MOV PTNBA,R3 ;PARTITION START ADDR MOV #4,R4 ;R4 = LOOP COUNTER ; 2$: DIV #10,R2 ;R3 = AN OCTAL DIGIT ADD #60,R3 ;R3 = AN OCTAL DIGIT MOVB R3,-(R1) ;SET DIGIT INTO LINE MOV R2,R3 ;SET UP FOR NEXT DIVIDE CLR R2 SOB R4,2$ ;AND LOOP ; MOV #H1EA+4,R1 ;R1 -> OUTPUT AREA+1 CLR R2 ;R2/R3 = 32-BIT MOV PTNEA,R3 ;PARTITION END ADDR MOV #4,R4 ;R4 = LOOP COUNTER ; 3$: DIV #10,R2 ;R3 = AN OCTAL DIGIT ADD #60,R3 ;R3 = AN OCTAL DIGIT MOVB R3,-(R1) ;SET DIGIT INTO LINE MOV R2,R3 ;SET UP FOR NEXT DIVIDE CLR R2 SOB R4,3$ ;AND LOOP .PAGE ; ; PRINT 3 LINES OF HEADER ; QIOW$C IO.WVB,CLLUN,IOEFN,,,, ; QIOW$C IO.WVB,CLLUN,IOEFN,,,, ; QIOW$C IO.WVB,CLLUN,IOEFN,,,, ; JMP PRTDTL ;GO LIST DATA FOUND .PAGE ; ; CONSTANTS AND WORK AREAS ; H1LIN: .ASCII 'MAP OF PARTITION ' H1NAME: .ASCII ' ' .ASCII ' ' H1BA: .ASCII 'XXXX00' .ASCII ' TO ' H1EA: .ASCII 'XXXX00' H1LINL= .-H1LIN .PAGE ; H2LIN: .ASCII ' TASK PRI ADDR SIZE ' .ASCII ' PUR/ADDR PUR/SZ' H2LINL= .-H2LIN ; H3LIN: .ASCII '------ --- -------- ------' .ASCII ' -------- ------' H3LINL= .-H3LIN .EVEN .PAGE .SBTTL PRTDTL : PRINT ACCUMULATED DATA ; PRTDTL: MOV SPSAVE,R0 ;R0 -> OLD SP SUB #100,R0 ;AND ACCOUNT FOR AREA RESERVED FOR LINKS ; ;PRINT "ACTIVE" QIOW$C IO.WVB,CLLUN,IOEFN,,,, MOV ATLCNT,R5 ;R5 = ACTIVE ENTRIES MOV #1,ATFLAG ;INDICATE PRINTING ATL JSR PC,LIST ;LIST ACTIVE ENTRIES CLR ATFLAG ;CLEAR FLAG ; ;PRINT "FIXED" QIOW$C IO.WVB,CLLUN,IOEFN,,,, ; MOV STDCNT,R5 ;R5 = IN-CORE ENTRIES JSR PC,LIST ;LIST IN-CORE ENTRIES ; ; ;PRINT "COMMONS:" QIOW$C IO.WVB,CLLUN,IOEFN,,,, ; MOV COMCNT,R5 ;NUMBER OF ENTRIES TO R5 JSR PC,LIST ;LIST COMMON ENTRIES ; JMP DONE ;GO EXIT .PAGE ; ; CONSTANTS AND WORK AREAS ; ATMSG: .ASCII 'ACTIVE:' ATMSGL= .-ATMSG ; STMSG: .ASCII 'FIXED:' STMSGL= .-STMSG ; MRMSG: .ASCII 'MRL:' MRMSGL= .-MRMSG ; CTMSG: .ASCII 'CTL:' CTMSGL= .-CTMSG .EVEN ; COMMSG: .ASCII 'COMMONS:' COMMSL=.-COMMSG .EVEN .PAGE .SBTTL LIST : PRINT DETAIL LINES SUBROUTINE ; ; CALLING SEQUENCE: ; JSR PC,LIST ; ; R0 -> NEXT ENTRY ON STACK- 2 ; R5 = NO. OF ENTRIES TO PRINT ; ; LIST: TST R5 ;ANYTHING TO PRINT? BNE SETNAM ;YES - GO DO IT RTS PC ;NO - RETURN ; ; ; SET TASK NAME INTO DETAIL LINE ; SETNAM: SUB #4,R0 ;R0 -> TASK NAME MOV #6,R1 ;R1 = CHAR COUNT MOV R0,R2 ;R2 -> TASK NAME MOV #DLNAME,R3 ;R3 -> NAME IN LINE JSR PC,..RDTA ;PERFORM THE CONVERSION ; ; CONVERT NULLS TO BLANKS ; MOV #6,R1 ;R1 = CHAR COUNT MOV #" ,R2 ;R2 = ASCII BLANKS MOV #DLNAME,R3 ;R3 -> NAME IN LINE 1$: TSTB (R3) ;NULL? BNE 2$ ;NO? - BRANCH MOVB R2,(R3) ;YES - BLANK IT 2$: INC R3 ;R3 -> NEXT BYTE SOB R1,1$ ;LOOP UNTIL DONE ; ; SET TASK PRIORITY INTO PRINT LINE ; SETPRI: MOV #DLPRI+3,R1 ;R1 -> PRI IN LINE + 1 CLR R2 ;R2,R3 = 32-BIT TASK PRI MOV -(R0),R3 BIC #177400,R3 MOV #3,R4 ;R4 = LOOP COUNTER ; 1$: DIV #10.,R2 ;R3 = A DECIMAL DIGIT ADD #60,R3 ;R3 = AN ASCII DIGIT MOVB R3,-(R1) ;SET DIGIT INTO LINE MOV R2,R3 ;SET UP FOR NEXT DIVIDE CLR R2 SOB R4,1$ ;AND LOOP .PAGE ; ; SET TASK ADDRESS INTO PRINT LINE ; SETADR: MOV #DLADDR+6,R1 ;R1 -> ADDR IN LINE +1 CLR R2 ;R2/R3 = 32-BIT 1/64TH MOV -(R0),R3 ;TASK ADDRESS MOV #6,R4 ;R4 = LOOP CTR ; 1$: DIV #10,R2 ;R3 = AN OCTAL DIGIT ADD #60,R3 ;R3 = AN ASCII DIGIT MOVB R3,-(R1) ;SET DIGIT INTO LINE MOV R2,R3 ;SET UP FOR NEXT DIVIDE CLR R2 SOB R4,1$ ;AND LOOP ; ; SET TASK SIZE INTO PRINT LINE ; SETSIZ: MOV #DLSIZE+4,R1 ;R1 -> SIZE IN LINE + 1 CLR R2 ;R2,R3 = 32-BIT 1/64TH MOV -(R0),R3 ;TASK SIZE MOV #4,R4 ;R4 = LOOP CTR ; 1$: DIV #10,R2 ;R3 = AN OCTAL DIGIT ADD #60,R3 ;R3 = AN ASCII DIGIT MOVB R3,-(R1) ;SET DIGIT INTO LINE MOV R2,R3 ;SET UP FOR NEXT DIVIDE CLR R2 SOB R4,1$ ;AND LOOP ; ; LIST DETAIL LINE IF NO PURE AREA INFORMATION ; TST ATFLAG ;ARE WE PRINTING ATL BEQ NOPURE ;NO DONT LOOK FOR PURE AREA DATA MOV -(R0),R3 ;NEXT DATA TO R3 CMP R3,#-1 ;IS IT A PURE CODE AREA ADDRESS ? BNE PTPURE ;YES PRINT IT ALSO ; NOPURE: QIOW$C IO.WVB,CLLUN,IOEFN,,,, ; DEC R5 ;DCMT ENTRY COUNT JMP LIST ;AND LOOP ; ;THERE IS PURE CODE AREA INFO TO PRINT PTPURE: MOV #PUADDR+6,R1 ;R1 -> LOC IN OUTPUT LINE CLR R2 ;SET UP FOR DIVIDE MOV #6,R4 ;NUMBER TO CONV. TO R4 1$: DIV #10,R2 ;DIVIDE BY 10 ADD #60,R3 ;CONVERT REM. TO ASCII MOVB R3,-(R1) ;PUT IT IN OUTPUT LINE MOV R2,R3 ;AND SET UP FOR CLR R2 ;ANOTHER DIVIDE SOB R4,1$ ;LOOP IF NOT DONE ;NOW OUTPUT SIZE OF PURE AREA MOV #PUSIZE+4,R1 ;R1 -> AREA IN OUTPUT LINE CLR R2 ;FOR DIVIDE MOV -(R0),R3 ;GET SIZE TO R3 MOV #4,R4 ;COUNT TO R4 5$: DIV #10,R2 ;DIVIDE MOD. 8 ADD #60,R3 ;CONV. REMAINDER TO ASCII MOVB R3,-(R1) ;STORE IN ASCII LINE MOV R2,R3 ;SET UP FOR ANOTHER CLR R2 ;DIVIDE SOB R4,5$ ;AND LOOP TST -(R0) ;NOW ADJUST FOR SAVED PURE AREA TYPE FLAG ;NOW PRINT THE LINE QIOW$C IO.WVB,CLLUN,IOEFN,,,, DEC R5 ;DEC ACTIVE TASK COUNT JMP LIST ;AND TRY AGAIN ; ; ATFLAG: .WORD 0 ;FLAG FOR ATL PRINT .PAGE ; ; CONSTANTS AND WORK AREAS ; DLINE: ;DETAIL LINE DLNAME: .ASCII 'XXXXXX' ;TASK NAME .ASCII ' ' DLPRI: .ASCII 'XXX' ;TASK PRIORITY .ASCII '. ' DLADDR: .ASCII 'XXXXXX00' ;TASK ADDRESS .ASCII ' ' DLSIZE: .ASCII 'XXXX00' ;TASK SIZE .ASCII ' ' DLINEL= .-DLINE PUADDR: .ASCII 'XXXXXX00' ;PURE CODE ADDRESS .ASCII ' ' PUSIZE: .ASCII 'XXXX00' ;PURE CODE SIZE PULENG=.-DLINE .EVEN .PAGE .SBTTL DONE : PROGRAM EXIT ; ; DONE: RTS PC .END