File: MA.TK of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text)
/******* MULTI8 COREMAP PRINTER ******* /LAST EDIT 8-JAN-79, ELC /NAME: MA /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 INTO CORE FROM DISK FOR EVERY CALL, / ALSO LEAVING ROOM FREE FOR OTHER TASKS. / /USE: TAD ("K^100+"1&3777 /ENTER WITH KEYBD NAME / JMS MONITOR / CALL / "M^100+"A&3777 /NAME OF TASK / BUSY RETURN /AC AND DF UNCHANGED / NORMAL RETURN /AC=0;DF=0 / /OR CALL IT WITH THE FOREGROUND COMMAND DECODER: / >R MAP / / /A MAP COULD LOOK LIKE THIS: /0 $$ $$ $$ $$ $$ $$ $$ -TE MA $$ $$ $$ $$ $$ $$ $$ /1 $$ -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 200 /LENGTH ONE PAGE MAPTEM, 0 MAP, TAD ("T-"K^100 /ENTER WITH NAME OF KB HANDLER IN AC DCA MAPONAM TAD ("0-240 JMS MAPTYP /FIELD 0 MAP4, TAD (-20 /NEXT HALF FIELD DCA MAPM4 /20 ENTRIES ON ONE LINE MAPLUP, JMS MAPTYP /PRINT 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 SNL / -2=BUFFER JMP MADOT / -3=MONITOR IAC / .LT.0=POINTER TO TCB SMA / .GT.0=RELEASED TASK CIA /INVERT RELEASED ENTRY TO GET TCB TAD (-TCBTAB-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 BSW SPA 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, 0 /PRINT CRLF & FIELD # TAD (215-240 JMS MAPTYP TAD (212-240 / 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+"[ /[[ "[^100+"] /[] ".^100+". /.. MUST BE FOLLOWED BY MAFLD MAFLD, 40 /HALF FIELD COUNTER MAPCNT, MAPEND-CORMAP&1+CORMAP-MAPEND MAPTR, CORMAP-1 /PTR IN COREMAP MAPM4, -20 MAPTYP, .-. TAD (4240 /CLAIM THE OUTPUT TASK JMS MONITOR CALL MAPONAM, "T^100+"1&3777 JMP .-3 CDF 00 /RESET DF CLA JMP I MAPTYP $$$$