perm filename CADB.MAC[SIM,SYS] blob sn#459977 filedate 1979-07-22 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		SALL
C00005 00003
C00006 00004
C00007 00005	
C00008 ENDMK
CāŠ—;
	SALL
	SEARCH	SIMMAC,SIMMC2
	CTITLE	CADB
	IFE QDEBUG,<END>
	INTERN	CADB
	EXTERN	CGDB,DBDS,O2IV
	IFN QDEBUG,<EXTERN	O2DB,YCADB,YCGDB,DBDD,DBDR,DBDB>
	MACINIT
	TWOSEG
	RELOC	400K
;PURPOSE:	PROCESS DEBUG SYMBOLS IN IC1 BY DETERMINING THE COMPONENT REQUESTED
;		AND INTERPRETING THE DEBUG REQUEST.
;ENTRY:		CADB
;NORMAL EXIT:	RETURN
;ERROR EXITS:	RFAIL FOR UNSUPPLIED CODES AND INVALID MODULE NAMES.
;I/O PERFORMED:	NONE
;ERRORS GENERATED:	NO. DEBUG VERSION ONLY.
	SUBTTL	CADB	DEBUG CODE PROCESSING
CADB:	ASSERT<
		CAIE	XCUR,%DEBUG
		RFAIL	CADB ENTERED BUT XCUR NE DEBUG
	>
	EXEC	O2IV	; GET CODE TO X0
	IFE	QDEBUG,<RETURN>
	IFN	QDEBUG,<
	L	X1,	;CODE TO X1 AND X0
	ANDI	X1,7
	ANDI	X0,777700
	HRLZ		; SIXBIT COMPONENT NAME IN X0 WITH ZERO FILL
	CAMN	[SIXBIT/M2/]
	GOTO	M2DB
	CAMN	[SIXBIT/O2/]
	GOTO	O2DB
	CAMN	[SIXBIT/CA/]
	GOTO	CADBB
	CAMN	[SIXBIT/CG/]
	GOTO	CGDB
	CAMN	[SIXBIT/OD/]
	GOTO	ODDB
	CAMN	[SIXBIT/OR/]
	GOTO	ORDB
	; CHECK IF PISS OFF
	CAMN	[SIXBIT/I3/]
	GOTO	PASSON
	CAMN	[SIXBIT/M3/]
	GOTO	PASSON
	CAMN	[SIXBIT/E3/]
	GOTO	PASSON
	CAMN	[SIXBIT/T3/]
	GOTO	PASSON
	RFAIL	INVALID DEBUG COMPONENT
PASSON:	; PASS THE CODE TO IC2 IN ASPECIAL BLOCK IF THERE IS ONE
	; THERE ISN'T
	RETURN
ODDB:	RFAIL NO DEBUG CODES FOR OD
ORDB:	RFAIL NO DEBUG CODES FOR OR
COMMENT;
PURPOSE:	INTERPRET DEBUG CODES FOR CA

FUNCTION:	CA DEBUG CODES:
		0	NONE
		1	DUMP DECLARATION STACK
		2	DUMP DICTIONARY
		3	DUMP REDECLARATION STACK
		4	DUMP BLOCK STACK
		5	TRACE DISPLAY AND UNDISPLAY
;
CADBB:	JUMPE	X1,[RETURN]
	IF	CAIE	X1,1
		GOTO	FALSE
	THEN	; DECLARATION STACK DUMP
		EXEC	DBDS
	ELSE
	IF	CAIE	X1,2
		GOTO	FALSE
	THEN	; DICTIONARY DUMP
		EXEC	DBDD
	ELSE
	IF	CAIE	X1,3
		GOTO	FALSE
	THEN	; REDECLARATION STACK DUMP
		EXEC	DBDR
	ELSE	; BLOCK STACK DUMP
	IF	CAIE	X1,4
		GOTO	FALSE
	THEN
		EXEC	DBDB
	ELSE
		SETON	SCADB5
	FI
	FI FI	FI
	RETURN
COMMENT;
PURPOSE:	INTERPRET DEBUG CODES FOR M2 COMPONENT

FUNCTION:	M2 DEBUG CODES:
		0	RESET SWITCHES, STOP TRACE
		1	START TRACE
		2	ABORT WITH DUMP
		3	SET SM2DB3
;
M2DB:	JUMPE	X1,[		SETZM	YM2DB
		RETURN]
	IF
		CAIE	X1,1
		GOTO	FALSE
	THEN	; START TRACING PASS 2
		SETZ	X0
		SETUWP	X0,
		RFAIL	SHARED HIGH SEGMENT WHEN TRACE REQUESTED
REPEAT 0,<		EXEC	JTRC
		SETON	SM2DB1
	>
		RETURN
	FI
	IF
		CAIE	X1,2
		GOTO	FALSE
	THEN
		FATAL	0,DEBUG REQUESTED DUMP
	FI
	IF
		CAIE	X1,3
		GOTO	FALSE
	THEN
		SETON	SM2DB3
		RETURN
	FI
	RFAIL	INVALID DEBUG CODE TO M2
	>
	END