.TITLE MAP .SBTTL PROGRAM DESCRIPTION .IDENT 'CYRUS' ; ************************************************ ; * * ; * PROGRAM MAP * ; * * ; * SYSTEM . . . * ; * RSX * ; * * ; * SUBSYSTEM . . . * ; * DEBUGGING AIDS * ; * * ; * FUNCTION . . . * ; * USER-WRITTEN MCR FUNCTION "MAP" * ; * MAPS THE CURRENT USEAGE OF A PARTITION * ; * ON CL0. INFORMATION IS PRINTED ON: * ; * 1) TASK CURRENTLY IN-CORE * ; * 2) TASKS IN MEMORY-REQUIRED LIST * ; * 3) TASKS IN CHECKPOINTABLE-TASK LIST * ; * DATA LISTED FOR EACH TASK: * ; * 1) TASK NAME * ; * 2) TASK PRIORITY * ; * 3) TASK ADDRESS IF IN-CORE * ; * 4) TASK SIZE (CORE REQUIRED) * ; * ERROR OUTPUT IS ON CO0 * ; * * ; * CALLING SEQUENCE . . . * ; * MCR>MAP * ; * * ; * NOTES . . . * ; * 1) ...MAP IS A PRIVILEGED TASK * ; * 2) ...MAP MUST RUN AT SUFFICIENT * ; * PRIORITY SO THAT THE PARTITION * ; * CANNOT CHANGE DURING ITS EXECUTION. * ; * 3) 5 WORDS OF STACK SPACE ARE USED * ; * FOR EACH TASK REPORTED ON: * ; * 2 WORDS OF RAD50 TASK NAME * ; * 1 WORD OF TASK PRIORITY * ; * 1 WORD OF 1/64TH TASK ADDR * ; * 1 WORD OF 1/64TH TASK SIZE * ; * * ; * PROGRAMMER . . . * ; * C. MEAD 02/11/74 * ; * * ; ************************************************ ; ; ************************************************ ; * * ; * MODIFIED BY F.BORGER TO BE A SUBROUTINE * ; * (OVERLAY) OF SYSTEM INFORMATION PROGRAM * ; * ...INF CALLED BY---- * ; * MCR>INF MAP * ; * 31/JAN/74 * ; * * ; ************************************************* .PAGE .SBTTL DEFINITIONS AND EXTERNAL REFERENCES ; ; MACROS USED: .MCALL QIOW$,DIR$ ; ; ; .PAGE .SBTTL MAP : PROGRAM ENTRY - GET MCR LINE ; MAP:: ; SAVE LAST TWO CHARACTERS OF LINE FOR FLAG CHECK MOV #MCRBUF-2,R0 ;SET POINTER TO LAST 2 CHARACTERS ADD MCRSIZ,R0 ;POINT TO START+SIZE-2 MOV #MCRSIZ,R1 ;USE STRING LENGTH AS BUFFER MOVB (R0)+,(R1)+ ; MOVB (R0)+,(R1)+ ;SAVE TWO CHARACTERS ; ; SET R0 AS POINTER TO 7TH CHARACTER OF MCR CMD LINE ; (SKIPPING OVER 'INF MAP') ; MOV #MCRBUF+7,R0 ;R0 -> MCR BUFFER + 7 MOV #MCRBUF,R1 ;COMPUTE END OF LINE POINTER ADD MCRSIZ,R1 ;IN R1 11$: CMPB (R0)+,#40 ;A SPACE BEQ 22$ CMP R0,R1 ;PAST BUFFER BLE 11$ ;NO TRY AGAIN JMP ERROR ;YES, AN ERROR 22$: ; PACK PARTITION NAME INTO RAD50 ; FIRST ACCOUNT FOR NAME LESS THAN 6 CHARACTES MOV #PARBUF,R1 ;R1 -> PARTITION NAME BUFFER MOV #6,R2 ;USE R2 AS COUNTER 1$: MOVB (R0)+,(R1)+ ;XFER A CHARACTER CMPB (R0),#'/ ;END OF NAME BEQ NAMEOK ;YES QUIT SOB R2,1$ ;IF NO "/", TRY TO XFER 6 CHARACTERS ; NAMEOK: MOV #6,R1 ;R1 = CHAR. COUNT MOV #PARBUF,R2 ;R2 -> ASCII NAME MOV #PNAME,R3 ;R3 -> RAD50 NAME JSR PC,..ATRD ;CONVERT IT ; GO SEARCH TPD FOR THIS NAME ; JSR PC,GETPTN ;CALL FIRST OVERLAY SEG TST PNAME ;CHECK FOR NAME ERROR BEQ GOBACK ;AND RETURN IF BAD PAR NAME CMP MCRSIZ,#"/P ;REQUEST FOR PLOT MODE ? BNE 1$ ;NO JSR PC,PRTPLT ;YES DO ADDRESS ORDERED MAP RTS PC ;AND RETURN ; 1$: JSR PC,PRTHDR ;CALL SECOND OVERLAY SEG GOBACK: RTS PC ;WE'RE DONE ; ERROR: DIR$ #MEMERR RTS PC .PAGE ; ; CONSTANTS AND WORK AREAS ; COMMON (GLOBAL) DATA AREAS ; PNAME:: .WORD 0,0 ;STORAGE FOR RAD-50 NAME TPDPTR:: .WORD 0 ;ADDR OF TPD ENTRY PTNBA:: .WORD 0 ;1/64TH BASE ADDR OF PAR PTNEA:: .WORD 0 ;1/64TH TOP ADDR OF PTN MRLLHA:: .WORD 0 ;MRL LISTHEAD ADDRESS CTLLHA:: .WORD 0 ;CTL LISTHEAD ADDRESS SPSAVE:: .WORD 0 ;STACK POINTER SAVE WORD ATLCNT:: .WORD 0 ;ATL ENTRIES FOUND STDCNT:: .WORD 0 ;STD ENTRIES FOUND MRLCNT:: .WORD 0 ;MRL ENTRIES FOUND CTLCNT:: .WORD 0 ;CTL ENTRIES FOUND COMCNT:: .WORD 0 ;COMMONS FOUND PARBUF: .ASCII / / ;BUFFER FOR ASCII TASK NAME MAPKEY: .ASCII 'MAP' ;MCR FUNCTION CODE ; MEMSG: .ASCII 'MAP: ' ;INVALID MCR ERROR MSG .ASCII 'INVALID MCR COMMAND LINE' MEMSGL= .-MEMSG .EVEN MEMERR: QIOW$ IO.WVB,5,1,,,, .END