Google
 

Trailing-Edge - PDP-10 Archives - bb-x130a-sb - cshdmp.mac
There are 4 other files named cshdmp.mac in the archive. Click here to see a list.
	TITLE	CSHDMP - Dump out the cache

	SEARCH	MACUNV
	$INIT	(CSHDMP,+)
	.REQUEST MACLIB
	.REQUEST REL:MAP

	$SEGMENT(PURE)

	U=12

	ND	LN$PDL,50

	ND	CODRIB,777777
	ND	RIBCOD,176
	ND	UNINAM,0
	ND	UNILOG,1
	ND	JACCT,1

	%LDCHD==131,,16

	ND	MX$BLK,^D300
	PHASE	0

.CBNHB:! BLOCK	1			;NEXT HASH BLOCK
.CBPHB:! BLOCK	1			;PREVIOUS HASH BLOCK
.CBNAB:! BLOCK	1			;NEXT ACCESSED BLOCK
.CBPAB:! BLOCK	1			;PREVIOUS ACCESS BLOCK
.CBUDB:! BLOCK	1			;UDB OF UNIT
.CBBLK:! BLOCK	1			;THE BLOCK NUMBER
.CBDAT:! BLOCK	1			;ADDRESS OF BLOCK IN CORE
.CBHIT:! BLOCK	1			;HITS THIS BLOCK

.CBLEN:!				;LENGTH

	DEPHASE
CSHDMP:	JFCL
	RESET
	MOVE	P,[IOWD LN$PDL,PDL]
	MOVEI	T1,.TOCHR##
	PUSHJ	P,.TOINI##
	MOVE	T1,[MP.SPY##]
	MOVEM	T1,MAPARG
	MOVEI	T1,MAPARG
	PUSHJ	P,.MAPI##
	 JRST	MAPERR

	PUSHJ	P,CCSET
	PUSHJ	P,SETPRV
	MOVEI	P3,1
	MOVX	T1,%LDCHD
	PUSHJ	P,.MAPG##
	 JRST	MAPERR
	MOVE	P2,T1
	MOVEI	T1,.CBNAB(T1)
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVE	P1,T1

LOOP:	CAMN	P2,P1
	 JRST	LOOPE
	PUSHJ	P,DMPBLK
	MOVEI	T1,.CBNAB(P1)
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVE	P1,T1
	AOJA	P3,LOOP

LOOPE:	EXIT

MAPERR:	OUTSTR	[ASCIZ/
?Unhandled MAP error: /]
	OUTSTR	MAPDAT##+.MPMET##
	OUTSTR	[BYTE(7) .CHCRT, .CHLFD]
	OUTSTR	MAPDAT##+.MPXET##
	EXIT

	SUBTTL	CCSET - Setup for ^C trapping

CCSET:	MOVE	T1,[4,,CCTRAP]		;NEW PC
	MOVEM	T1,CCBLK+.ERNPC		;SAVE
	MOVX	T1,ER.ICC		;^C TYPE
	MOVEM	T1,CCBLK+.ERCLS		;SAVE
	SETZM	CCBLK+.EROPC		;CLEAR OLD PC
	MOVEI	T1,CCBLK		;GET TRAP BLOCK ADDRESS
	MOVEM	T1,.JBINT		;ENABLE ^C TRAPS
	POPJ	P,			;AND RETURN

CCTRAP:	PUSH	P,CCBLK+.EROPC		;SAVE OLD PC
	SETZM	CCBLK+.EROPC		;RE-ENABLE
	EXIT	1,			;EXIT QUICKLY
	POPJ	P,			;RETURN IF CONTINUE
	SUBTTL	SETPRV - Set JACCT so we can SUSET.

SETPRV:	MOVX	T1,%LDFFA		;GET GOD
	GETTAB	T1,			;..
	 MOVE	T1,[1,,2]		;DEFAULT
	GETPPN	T2,			;OUR PPN
	 JFCL
	CAMN	T1,T2			;MATCH?
	 POPJ	P,			;YES--ALL SET
	MOVE	T1,[.GTSTS,,.GTSLF]	;GETTAB STATUS WORD TABLE
	GETTAB	T1,			;..
	 POPJ	P,			;CANT
	ANDI	T1,-1			;KEEP JUST ADDRESS
	PJOB	T2,			;GET CURRENT JOB
	ADDI	T1,(T2)			;INDEXED BY MY JOB
	HRROI	T2,.GTSTS		;GET MY STATUS WORD
	GETTAB	T2,			;..
	 POPJ	P,			;CANT
	MOVE	T3,T2			;COPY
	TLOE	T3,JACCT		;TURN ON JACCT
	 POPJ	P,			;ALREADY HAVE IT!
	MOVE	T4,[3,,T1]		;SETUP ARGS
	POKE.	T4,			;GET THE PRIVS
	 JFCL				;CANT
	POPJ	P,			;AND RETURN
	SUBTTL	DMPBLK - Output this block

DMPBLK:	PUSHJ	P,.SAVE3##
	MOVEI	T1,.CBUDB(P1)
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVE	U,T1
	MOVEI	T1,UNINAM(U)
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
;	CAME	T1,[SIXBIT/XXXX/]
;	 POPJ	P,
	MOVEM	T1,FBLK+.FODEV
	MOVE	T1,P3
	MOVEI	T3,^D3
	PUSHJ	P,.TDECJ##
	MOVEI	T1,^D2
	PUSHJ	P,.TSPAN##
	MOVE	T1,FBLK+.FODEV
	MOVEI	T3,^D6
	PUSHJ	P,.TSIXJ##
	MOVEI	T1,.CBBLK(P1)
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVEI	T3,^D6
	PUSHJ	P,.TDECJ##
	MOVEI	T1,.CBHIT(P1)
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVEI	T3,^D6
	PUSHJ	P,.TDECJ##
	MOVEI	T1,2
	PUSHJ	P,.TSPAN##
	MOVEI	T1,UNILOG(U)
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVEM	T1,OBLK+.OPDEV
	MOVEI	T1,.CBDAT(P1)		;GET ADDRESS OF DATA BLOCK
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVE	P2,T1			;SAVE ADDRESS
	ADDI	T1,RIBCOD		;OFFSET TO RIBCOD
	PUSHJ	P,.MAPE##		;GET IT
	 JRST	MAPERR
	CAMN	T1,[CODRIB]		;THAT MAJIC CODE?
	 JRST	GOTRIB			;YES!
	MOVX	T1,.IODMP!UU.PHS
	MOVEM	T1,FBLK+.FOIOS
	MOVEI	T1,.FOSIO
	MOVEM	T1,FBLK+.FOFNC
	MOVE	T1,[4,,FBLK]
	FILOP.	T1,
	 HALT
	MOVEI	T1,.CBBLK(P1)
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVE	P3,T1
	PUSHJ	P,GETBLK
	MOVEI	P2,0
UFDB:	SUBI	P3,1
	JUMPLE	P3,UFDE
	ADDI	P2,1
	CAILE	P2,MX$BLK
	 JRST	UFDE
	MOVE	T1,P3
	PUSHJ	P,GETBLK
	MOVE	T1,BLK+RIBCOD
	CAME	T1,[CODRIB]
	 JRST	UFDB
	HLLZ	T1,BLK+.RBEXT
	CAME	T1,[SIXBIT/UFD/]
	 CAMN	T1,[SIXBIT/SFD/]
	  CAIA
	   JRST UFDE
	MOVEI	T3,^D5
	PUSHJ	P,.TSIXJ##
	PUSHJ	P,PRTRIB
	MOVEI	T1,[ASCIZ/  (block /]
	PUSHJ	P,.TSTRG##
	MOVE	T1,P2
	PUSHJ	P,.TDECW##
	MOVEI	T1,")"
	PUSHJ	P,.TCHAR##
	PUSHJ	P,.TCRLF##
	POPJ	P,

UFDE:	MOVEI	T1,[ASCIZ/can't trace back block/]
	PUSHJ	P,.TSTRG##
	PUSHJ	P,.TCRLF##
	POPJ	P,

GOTRIB:	MOVSI	T1,'RIB'
	MOVEI	T3,^D5
	PUSHJ	P,.TSIXJ##
	MOVE	T1,P2
	ADDI	T1,.RBNAM
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVEM	T1,BLK+.RBNAM
	MOVE	T1,P2
	ADDI	T1,.RBEXT
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVEM	T1,BLK+.RBEXT
	MOVE	T1,P2
	ADDI	T1,.RBPPN
	PUSHJ	P,.MAPE##
	 JRST	MAPERR
	MOVEM	T1,BLK+.RBPPN
	PUSHJ	P,PRTRIB
	PUSHJ	P,.TCRLF##
	POPJ	P,
	SUBTTL	PRTRIB - Print the RIB filespec

PRTRIB:	MOVEI	T1,.RBMAX
	MOVEM	T1,BLK
	MOVEI	T1,OBLK
	MOVEI	T2,BLK
	PUSHJ	P,.TOLEB##
	POPJ	P,
	SUBTTL	GETBLK - Read the block

GETBLK:	SUSET.	T1,
	 HALT
	MOVE	T1,[IOWD 200,BLK]
	MOVEI	T2,0
	INPUT	T1
	POPJ	P,
	SUBTTL	STORAGE

	$LOW

MAPARG:	BLOCK	4
PDL:	BLOCK	LN$PDL
CCBLK:	BLOCK	4
FBLK:	BLOCK	.FOMAX
LBLK:	BLOCK	.RBMAX
OBLK:	BLOCK	3
BLK:	BLOCK	200

	END	CSHDMP