/******* MULTI8 COREMAP PRINTER ******* /LAST EDIT: 5-OCTOBER-75, JV /LAST EDIT: 14-JULY-75, JV /LAST EDIT: 15-MAY-75, JV /NAME: MA (MAP.PA) /LENGTH: ONE PAGE /FUNCTION: TO PRINT THE COREMAP ON THE DEVICE WHERE THE / TASK IS CALLED FROM. IT PRINTS 20 PAGES ON A LINE, / IDENTIFYING THE NAME OF THE TASK THAT BELONGS TO / THE OCCUPIED PAGE. /CONCEPT:THE MODULE LOOKS INTO ALL COREMAP ENTRIES / AND INTERPRETS THEM IN THE FOLLOWING WAY: / 0000 FREE: PRINT .. / 7777 OCCUPIED BY BUFFER: PRINT [[ / 7776 OCCUPIED BY BUFFER: PRINT ]] / 7775 OCCUPIED BY MONITOR: PRINT $$ / NEGATIVE: OCCUPIED BY SOME TASK: PRINT TASK NAME / POSITIVE: SOME RELEASED TASK: PRINT "-" TASK NAME / / THE TASK IS CALLED WITH THE NAME OF THE CALLING / KB I.E. "K1" IN THE AC. WHEN CALLED WITH AC=0, / THE DEFAULT OUTPUTDEVICE "T1" IS TAKEN. / / THE TASK CONTAINS ONCE-ONLY CODE, SO AFTER COM- / PLETION A SWPOUT IS DONE, FORCING A NEW COPY TO / BE TRANSFERED INERY CALL, / ALSO LEAVINSKS. / /USE: TAD ("K^1EYBD NAME / JMS MONITOR+"A&3777 /NAME OF TASK / BUSY RETURN /AC AND DF UNCHANGED / NORMAL RETURN /AC=0;DF=MONFLD / /OR CALL IT WITH THE FOREGROUND COMMAND DECODER: / >R MAP / / /A MAP COULD LOOK LIKE THIS: / 4000420044004600500066007000720074007600 / $$ -TE MA $$ $$ $$-DK SP [[ ]] PT .. .. .. .. /1 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. $$ / /AS YOU WILL NOTICE, THE TASK "MA" WILL ALWAYS APPEAR IN /THE MAP. THAT DOESN'T MEAN IT REMAINS IN CORE. IT'S LIKE /A FRIGIDAIRE: YOU NEVER CAN SEE IF THE LAMP REALLY STOPS /BURNING, WHEN THE DOOR IS CLOSED ... "M^100+"A&3777 MAPTEM, 200 /LENGTH ONE PAGE 0 MAP, SNA /ENTER WITH NAME OF KEYBOARD TASK IN AC JMP MAP1 /TAKES DEFAULT TAD ("T-"K^100 DCA MAPONAM MAP1, JMS MAPTYP JMS MAPTYP /PRINT 2 SPACES MAPLP1, TAD MAPM4 RTR AND (MAPBEG-CORMAP%4&4+23 /AND (23 OR (27 JMS MAPTYP /PRINT LOCATION WHERE MAP STARTS TAD MAPM4 CLL RAL AND C7 TAD (260-240 JMS MAPTYP /PRINT "0 OR "4 TAD (260-240 JMS MAPTYP /PRINT "0 TAD (260-240 JMS MAPTYP /PRINT "0 ISZ MAPM4 JMP MAPLP1 JMS MACRLF IFNZRO MAPBEG-CORMAP&17 < TAD (-MAPBEG+CORMAP&17 7760 DCA MAPM4 MAPLP2, JMS MAPTYP /PRINT ENOUGH SPACES JMS MAPTYP TAD C4 /("$-240 JMS MAPTYP /AND "$$" (MONITO ISZ MAPM4 JMP MAPL17 > MAP4, TAD (-20 /NE4 /20 ENTRIES ON ONE LINRINT SPACE ISZ MAPTR /NEXT ENTRY TAD I MAPTR /FETCH ENTRY SMA SZA CLA TAD ("--240 /PRINT "-" JMS MAPTYP /ELSE SPACE TAD I MAPTR TAD C3 CLL /CODE CAN BE: 0=FREE ROOM TAD M4 / -1=BUFFER SNLP MADOT / -3=MONITOER TO TCB SMA / .GT /INVERT RELEASED ENTRY B-4 /COMPUTE ENTRY IN NAMLST CLL RTR RAR /DIVIDE BY 8 TAD (NAMLST JMS DEFER JMP .+4 MADOT, TAD MATAD DCA .+1 /TAKE "NAME" FROM TABLE HLT DCA MAPTEM TAD MAPTEM /GET FIRST CHARACTER IFZERO PDPTYP-PDP8E < BSW SPA > IFNZRO PDPTYP-PDP8E < CLL RTR RTR RTR SZL > IAC /SECOND CHAR ABOVE 300 ? TAD (40-3 /SUBTACT BITS OF SECOND CHAR. AND C77 /AND MAKE CHAR IN RANGE 240-337 JMS MAPTYP TAD MAPTEM /GET SECOND CHARACTER TAD C240 AND C77 JMS MAPTYP ISZ MAPCNT /ALL DONE? JMP MAPNXT TAD (215-240 JMS MAPTYP TAD (212-4240 /ALLOW INTERRUPTIONS NOW JMS MAPTYP JMS MONITOR EXIT SWPOUT MAPNXT, ISZ MAPM4 JMP MAPLUP /N JMS MACRLF /20 DONE ON ONE LINE JMP MAP4 MACRLF, .-. /PRINT CRLF & FIELD # TAD (215-240 JMS MAPTYP TAD (212-4240 /ALLOW INTERUPTIONS NOW JMS MAPTYP ISZ MAFLD MATAD, TAD MAFLD CLL RAR JMS MAPTYP /PRINT FIELD # JMP I MACRLF MATABL, "$^100+"$ /$$, DO AS IF THESE ARE TASKNAMES+"] /]] ".^100+". /.. D MAFLD, MAPBEG-CORMAP%D COUNTER MAPCNT, MAPEN MAPTR, MAPBEG-1 /PTR IN COREMAP MAPM4, -20 /TYPE NAME, POINTED AT BY MAPTEM MAPTYP, .-. TAD (4240 /CLAIM THE OUTPUT TASK JMS MONITOR CALL MAPONAM, "T^100+"1&3777 JMP .-3 CDF MONFLD /OUTPUT TASAPTYP $$$$