Trailing-Edge
-
PDP-10 Archives
-
RMS-10_T10_704_FT2_880425
-
10,7/rms10/rmssrc/rmsdmp.b36
There are 6 other files named rmsdmp.b36 in the archive. Click here to see a list.
MODULE DEBG =
BEGIN
GLOBAL BIND DEBGV = 1^24 + 0^18 + 1; !EDIT DATE: 16-DEC-76
%([
FUNCTION: THIS MODULE CONTAINS ALL ROUTINES WHICH SUPPORT
AND PROCESS THE DEBUGGING FACILITIES WITHIN RMS-20.
AUTHOR: S. BLOUNT
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
!COPYRIGHT (C) 1977, 1979 BY DIGITAL EQUIPMENT CORPORATION
********** TABLE OF CONTENTS **************
ROUTINE FUNCTION
======= ========
$DEBUG PROCESS $DEBUG VERB
DUMPRST DUMP AN RST BLOCK
DUMPIDB DUMP AN INDEX DESCRIPTOR BLOCKS
DUMPKDB DUMP A KEY DESCRIPTOR
DUMPRD DUMP A RECORD DESCRIPTOR
DUMPHEADER DUMP A BUCKET HEADER
REVISION HISTORY:
EDIT WHO DATE PURPOSE
==== === ==== =======
1 SEB 16-DEC-76 TAKE OUT KDB FIELD DBSZ
*************************************************
* *
* NEW REVISION HISTORY *
* *
*************************************************
PRODUCT MODULE SPR
EDIT EDIT QAR DESCRIPTION
====== ====== ===== ===========
***** END OF REVISION HISTORY *****
])%
%([ EXTERNAL DECLARATIONS ])%
EXTERNAL
ROUTIN, ! EXTERNAL DECLARATIONS
CRASH; ! IN CASE OF A NOUT FAILURE
%([ ERROR MESSAGES REFERENCED WITHIN THIS MODULE ])%
EXTERNAL
MSGCANTGETHERE; ! BAD LOGIC FLOW
REQUIRE 'RMSREQ';
EXTDECLARATIONS;
! $DEBUG
! ======
! THIS ROUTINE PROCESSES THE $DEBUG MACRO FOR USING THE
! DEBUGGING FACILITIES
! THE FORMAT OF THIS MACRO IS AS FOLLOWS:
!
! $DEBUG VALUE-1 ! VALUE-2 ! ...
!
! VALUES ARE:
!
! DB$TRC TRACE ENTRY TO EACH ROUTINE
! DB$ERR TRACE USER ERRORS
! DB$RTR TRACE ROUTINE EXECUTION
! DB$LOC PRINT OUT LOCAL VARIABLES
! DB$ENQ PRINT OUT ENQ BLOCKS
! DB$BLK DUMP OUT ALL INTERNAL RMS-20 BLOCKS
! DB$IO TRACE I/O PAGE FAULTS (BUFFER FAULTS)
! INPUT:
! BITVALUE = VALUE TO SET FOR DEBUGGING
! OUTPUT:
! <NONE>
GLOBAL ROUTINE %NAME('$DEBUG') ( BITVALUE ):NOVALUE =
BEGIN
ARGUMENT (BITVALUE,BASEADD); ! INPUT ARGUMENT
BUGFLG = .BITVALUE; ! SET DEBUGGING FLAGS
%IF DBUG %THEN
USEREXIT; ! EXIT HERE IF DEBUGGING COMPILED
%FI
TYPE ( %STRING('[%RMS-20 NOT BUILT WITH DEBUGGING FEATURES...$DEBUG IGNORED]'));
USEREXIT;
END; %( OF $DEBUG )%
! DUMP
! ====
! THIS ROUTINE IS USED FOR DEBUGGING ONLY. IT
! PRINTS OUT THE CONTENTS OF A BLOCK IN CORE
!INPUT:
! BLKSIZ = LENGTH OF BLOCK TO DUMP
! BLOCK2 = ADDRESS TO START DUMPING (PASSED AS VALUE)
!
! OUTPUT:
! <NO STATUS RETURNED>
GLOBAL ROUTINE DUMP ( BLKSIZ, BLOCK2 ):NOVALUE =
BEGIN
%IF DBUG %THEN
ARGUMENT (BLKSIZ,VALUE);
ARGUMENT (BLOCK2,BASEADD);
LOCAL
BLOCK; ! NEED TEMPORARY LOCAL
BLOCK = .BLOCK2; ! GET ADDRESS OF BLOCK
%([ LOOP OVER THE ENTIRE BLOCK ])%
INCR J FROM 1 TO .BLKSIZ
DO
BEGIN
TXTOUT (RM$OCT, .BLOCK); !PUT OUT <TAB>OCT NUMBER
INC ( BLOCK, 1); ! BUMP POINTER
END %( OF INCR 1 TO BLKSIZ )%
%ELSE RETURN;
%FI
END; %( OF DUMP ROUTINE )%
! DUMPRST
! =======
! THIS ROUTINE PRINTS OUT A FORMATTED COPY OF THE
! RECORD STATUS TABLE FOR USE IN DEBUGGING
! INPUT:
! <NONE>
! OUTPUT:
! <NONE>
%([ MACRO TO PRINT OUT A FIELD ])%
MACRO RSTFIELD (FIELDNAME) =
TXTOUT (RM$RSF, $STRADD(FIELDNAME), .RST[FIELDNAME] ); %;
GLOBAL ROUTINE DUMPRST: NOVALUE =
BEGIN
%IF DBUG %THEN
LOCAL
TEMP;
BUGOUT ('** DUMP OF RST **');
%([ PRINT OUT EACH FIELD ])%
RSTFIELD (BLOCKTYPE);
RSTFIELD (BLOCKLENGTH);
RSTFIELD (BLOCKLENGTH);
RSTFIELD (BLINK);
RSTFIELD (FLINK);
RSTFIELD (RSTRSZ);
RSTFIELD (RSTRSZW);
RSTFIELD (RSTDATARFA);
RSTFIELD (RSTFLAGS);
RSTFIELD (RSTPAGPTR);
RSTFIELD (RSTLASTOPER);
RSTFIELD (RSTNRP);
TYPE (''); !BLANK LINE
ENDDEBUG;
RETURN
%ELSE RETURN;
%FI
END;
! DUMPIDB
! =======
! ROUTINE TO DUMP OUT THE CONTENTS OF AN INDEXDESCRIPTOR BLOCK
! INPUT:
! IDBPTR => INDEX DESCRIPTOR BLOCK
! OUTPUT:
! <NONE>
! ROUTINES CALLED:
! DUMP
%([ MACRO USED HERE ])%
MACRO IDBFIELD(FIELDNAME)=
BEGIN
TYPE (' FIELDNAME: ');
TEMP = .IDBPTR [ FIELDNAME ];
CALLDUMP ( PCI ( 1 ), LCI ( TEMP ) );
END %;
GLOBAL ROUTINE DUMPIDB ( IDBPTR ):NOVALUE =
BEGIN
%IF INDX AND DBUG %THEN
ARGUMENT (IDBPTR,BASEADD);
MAP
IDBPTR: POINTER;
LOCAL
TEMP;
IDBFIELD ( BLOCKTYPE );
IDBFIELD ( BLOCKLENGTH );
IDBFIELD ( IDBROOT );
IDBFIELD ( IDBLEVELS );
IDBFIELD ( IDBNXT );
ENDDEBUG;
RETURN
%ELSE RETURN;
%FI
END;%( OF DUMPIDB)%
! DUMPKDB
! =======
! ROUTINE TO DUMP A KEY DESCRIPTOR BLOCK
! INPUT:
! KDBPTR => ADDRESS OF KEY DESCRIPTOR BLOCK
! OUTPUT:
! <NONE>
%([ MACRO USED HERE ])%
MACRO KDBFIELD(FIELDNAME)=
BEGIN
TYPE (' FIELDNAME: ');
TEMP = .KDBPTR [ FIELDNAME ];
CALLDUMP ( PCI ( 1 ), LCI ( TEMP ) );
END %;
GLOBAL ROUTINE DUMPKDB ( KDBPTR ): NOVALUE =
BEGIN
%IF INDX AND DBUG %THEN
ARGUMENT (KDBPTR,BASEADD);
LOCAL
TEMP;
MAP
KDBPTR: POINTER;
KDBFIELD ( BLOCKTYPE );
KDBFIELD ( BLOCKLENGTH );
KDBFIELD ( KDBROOT );
KDBFIELD ( KDBHSZ );
KDBFIELD ( KDBKSZ );
KDBFIELD ( KDBKSZW );
KDBFIELD ( KDBDTP );
KDBFIELD ( KDBREF );
KDBFIELD ( KDBIDBADDR );
KDBFIELD ( KDBFLAGS );
KDBFIELD ( KDBNXT );
KDBFIELD ( KDBIFLOFFSET );
KDBFIELD ( KDBDFLOFFSET );
KDBFIELD ( KDBIAN );
KDBFIELD ( KDBDAN );
KDBFIELD ( KDBKBSZ );
KDBFIELD ( KDBLEVELS );
KDBFIELD ( KDBMINRSZ );
KDBFIELD ( KDBIBKZ );
KDBFIELD ( KDBDBKZ );
ENDDEBUG;
%([ NOTE THAT THE KEY POSITION AND SIZE FIELDS ARE NOT
PRINTED OUT ])%
RETURN
%ELSE RETURN;
%FI
END; %(OF DUMPKDB)%
! DUMPRD
! =======
! ROUTINE TO DUMP A RECORD DESCRIPTOR PACKET
! INPUT:
! RDPTR => ADDRESS OF RECORD DESCRIPTOR PACKET
! OUTPUT:
! <NONE>
%([ MACRO USED HERE ])%
MACRO RDFIELD(FIELDNAME)=
BEGIN
TYPE (' FIELDNAME: ');
TEMP = .RDPTR [ FIELDNAME ];
CALLDUMP ( PCI ( 1 ), LCI ( TEMP ) );
END %;
GLOBAL ROUTINE DUMPRD ( RDPTR ):NOVALUE =
BEGIN
%IF INDX AND DBUG %THEN
ARGUMENT (RDPTR,BASEADD);
LOCAL
TEMP;
MAP
RDPTR: POINTER;
RDFIELD ( RDFLAGS );
RDFIELD ( RDSTATUS );
RDFIELD ( RDUSERSIZE );
RDFIELD ( RDCOUNT );
RDFIELD ( RDLASTLEVEL );
RDFIELD ( RDLEVEL );
RDFIELD ( RDUSERPTR );
RDFIELD ( RDRFA );
RDFIELD ( RDRECPTR );
RDFIELD ( RDLASTRECPTR );
RDFIELD ( RDRRV );
RDFIELD ( RDLENGTH );
RETURN
%ELSE RETURN;
%FI
END; %(OF DUMPKDB)%
! DUMPHEADER
! ==========
! ROUTINE TO DUMP THE HEADER OF AN INDEXED FILE BUCKET
! INPUT:
! BKTPTR ADDRESS OF BUCKET IN CORE
! OUTPUT:
! <NONE>
! ROUTINES CALLED:
! DUMP
%([ MACRO USED IN THIS ROUTINE ])%
MACRO HDRFIELD ( FIELDNAME )=
BEGIN
DUMMY = .BKTPTR [ FIELDNAME ];
PRINTVALUE ( ' FIELDNAME: ', DUMMY );
END %;
GLOBAL ROUTINE DUMPHEADER ( BKTPTR ): NOVALUE =
BEGIN
%IF INDX AND DBUG %THEN
ARGUMENT (BKTPTR,BASEADD);
MAP
BKTPTR: POINTER;
LOCAL
DUMMY;
BEGINDEBUG ( DBLOCAL )
HDRFIELD ( BHFLAGS );
HDRFIELD ( BHLEVEL );
HDRFIELD ( BHBTYPE );
HDRFIELD ( BHNEXTBYTE );
HDRFIELD ( BHTHISAREA );
HDRFIELD ( BHNEXTBKT );
HDRFIELD ( BHLASTID );
HDRFIELD ( BHNEXTID );
ENDDEBUG;
RETURN
%ELSE RETURN;
%FI
END; %(OF DUMPHEADER)%
END
ELUDOM