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

$$$$