1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-02-28 17:09:15 +00:00
Files
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

499 lines
15 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
! UPD ID= 10, SNARK:<6.1.NML>DEBUG.REQ.3, 24-May-84 13:26:42 by GLINDELL
! UPD ID= 9, SNARK:<6.1.NML>DEBUG.REQ.2, 24-May-84 13:23:01 by GLINDELL
!<MCINTEE>DEBUG.REQ.2, 5-Jul-83 10:57:01, Edit by MCINTEE
!
! Add debug flag NML_REMOTE_REQUEST
!
! PH4:<MCINTEE>DEBUG.REQ.3, 2-Jun-83 08:30:55, Edit by MCINTEE
!
! Remove debug flag NETWORK_DESCRIPTOR. Add debug flags PRIVATE_SERVER_LINK
! and PRIVATE_HOST_LINK. Force PRIVATE_SERVER_LINK for private world.
! Do not force NCP_NICE_VALIDATION and SCHEDULER_TRACE.
!
! NET:<VOBA.NML.DEVELOPMENT>DEBUG.REQ.10 18-Feb-82 15:21:40, Edit by VOBA
!
! Clean up code and update copyright date.
!
! NET:<GROSSMAN>DEBUG.REQ.3 19-Jan-82 11:18:03, Edit by GROSSMAN
!
! Fix syntax bug in DEBUG_BITS macro. (Missing comma)
!
! NET:<BRANDT.DEVELOP>DEBUG.REQ.1 15-Jan-82 17:30:45, Edit by BRANDT
!
! Fix %routine and %global_routine to include a %sbttl line,
! thus making it easier to peruse listings.
!
! NET:<DECNET20-V3P1.NMU>DEBUG.REQ.8 7-Jul-81 09:40:45, Edit by JENNESS
!
! Fix %routine and %global_routine to suppress generation of
! literal containing routine name in MCB version (save the space).
!
! NET:<DECNET20-V3P1.NMU>DEBUG.REQ.6 2-Jul-81 19:48:28, Edit by GUNN
!
! Add FORMAT_BUFFER macro to convert the contents of a message
! buffer to readable text.
!
! NET:<DECNET20-V3P1.NMU>DEBUG.REQ.3 2-Jul-81 09:31:42, Edit by JENNESS
!
! Fix DEBUG_TELL to output the debug flag mnemonic along with
! with the feature name.
!
! NET:<DECNET20-V3P1.NMU>DEBUG.REQ.2 27-Jun-81 18:28:21, Edit by JENNESS
!
! Add DLW_TRACE debugging flag for DATA LINK WATCHER task.
!
! NET:<DECNET20-V3P1.NMU>DEBUG.REQ.5 24-Jun-81 09:30:11, Edit by JENNESS
!
! Add FILE_TRACE debugging flag for NMUFIL routines.
! Add PAGE_TRACE debugging flag for NMUPAG routines.
!
!NET:<DECNET20-V3P1.NMU>DEBUG.REQ.2 12-Jun-81 13:31:31, Edit by JENNESS
!
! Readability improvements.
!
!<DECNET20-V3P1.BASELEVEL-2.MCB>DEBUG.REQ.4 25-May-81 08:35:41, Edit by SROBINSON
!
! Limit Text Generation in $MCB
!
!NET:<DECNET20-V3P1.NMU>DEBUG.REQ.7 20-May-81 11:28:48, Edit by JENNESS
!
! Add TRACE_INFO_CL macro. This appends to output previously generated
! by a TRACE_INFO or TRACE_INFO_C macro.
!
!NET:<DECNET20-V3P1.NMU>DEBUG.REQ.2 5-May-81 10:45:48, Edit by JENNESS
!
! Add TRACE_INFO_C macro. This prints the same way that TRACE_INFO
! does, except that it doesn't included the task and routine names.
!
!NET:<DECNET20-V3P1.NMU>DEBUG.REQ.3 28-Apr-81 09:06:48, Edit by JENNESS
!
! Add check to %routine and %global_routine to undeclare %RTN_NAME
! only if it was already declared (BLISS has gotten stricter).
!
%title 'DEBUG -- Debugging Macros And Definitions'
! COPYRIGHT (C) 1981 BY
! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754
!
! THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A SINGLE
! COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLUSION OF THE
! ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANY OTHER COPIES THEREOF
! MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON
! EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE
! TERMS. TITLE TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES
! REMAIN IN DEC.
!
! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
! CORPORATION.
!
! DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
!
!++
! Facility: LSG DECnet Network Management
!
! Abstract: This file contains definitions used for conditionalized
! debugging and execution tracing.
!
! Environment: Bliss-36, Bliss-32 and Bliss-16.
!
! Author: Steven M. Jenness, Creation date: 18-Mar-81
!
!--
%sbttl 'Debugging Expressions And Feature Names'
literal TRACE_BUFFER_LENGTH = 200; ! Length of buffer for TRACE_INFO
! macro: %DEBUG
!
! This macro conditionally executes the code given
! in the argument list. There are two stages to
! the conditionalization:
!
! (1) Compile time The code is compiled only if
! the VARIANT compiler switch
! is given with a value of 1.
!
! (2) Run time The code is executed only if
! the expression given in the
! BOOLEAN field is true. If the
! word ALWAYS is given instead
! the code will always be executed
! if (1) above is satisfied.
!
! e.x. %debug (DEBUG_TRACE, (TRACE_INFO ('Debugging is on')));
macro
%DEBUG (BOOLEAN, CODE) =
%if %variant eql 1
%then %if %identical (BOOLEAN, ALWAYS)
%then %remove (CODE)
%else if BOOLEAN
then CODE
%fi
%fi %;
! macro: DEBUG_FLAG_SET
!
! This macro defines all the conditions that can be
! selected at run time for debugging. (See %debug
! example above for keyword usage). The DB.xxx symbol
! is defined as a global symbol so that debugging features
! can be easily enabled or disabled from DDT.
!
! PRIVATE_SERVER_LINK & PRIVATE_HOST_LINK replace NETWORK_DESCRIPTOR
! PRIVATE_SERVER_LINK opens private versions of server links
! PRIVATE_HOST_LINK opens private versions of active links,
! as described in NMUT20.R36. (there are problems with this one)
! NML_REMOTE_REQUEST sends a copy of the incoming remote requests to NCP;
! the cell BUGPID must be poked to the desired PID, which may be found in
! cell ACK%CO at runtime, after an NCP command has been issued from
! your local OPR.
macro
DEBUG_FLAG_SET =
'DEBUG_TRACE', 'DB.TRA',
'ROUTINE_TRACE', 'DB.RTN',
'LOCAL_GALAXY', 'DB.GLX',
'MEMORY_TRACE', 'DB.MEM',
'MEMORY_CONSISTENCY', 'DB.MCS',
'SCHEDULER_TRACE', 'DB.SKD',
'EVENT_TRACE', 'DB.EVT',
'NETWORK_TRANSITIONS', 'DB.NET',
'NETWORK_TRACE', 'DB.NTT',
'PRIVATE_SERVER_LINK', 'DB.SRV',
'NCP_NICE_VALIDATION', 'DB.NCP',
'IPCF_TRACE', 'DB.IPC',
'FILE_TRACE', 'DB.FIL',
'PAGE_TRACE', 'DB.PAG',
'DLW_TRACE', 'DB.DLW',
'FILE_DATA_TRACE', 'DB.FDT',
'DAP_MESSAGE_TRACE', 'DB.DAP',
'CTT_TRACE', 'DB.CTT',
'PRIVATE_HOST_LINK', 'DB.DCN',
'NML_REMOTE_REQUEST', 'DB.RRQ'
%;
%sbttl 'Debugging Data Base'
! macro: %DEBUG_DATA_BASE
!
! This macro is used in either an external or global
! statement to setup the definitions to the debugging
! data base. This data base contains bit flags for
! each of the debugging features.
!
! e.x. external %debug_data_base;
macro
DEBUG_BIT [NAME, BIT_NAME] =
%name (NAME, '_FLAG') = [$bit] %;
$field DEBUG_BITS =
set
DEBUG_BIT (DEBUG_FLAG_SET)
tes;
literal
DEBUG_FLAGS_SIZE = $field_set_size;
macro
%DEBUG_DATA_BASE =
DEBUG : block [DEBUG_FLAGS_SIZE] field (DEBUG_BITS) %;
! macro: %MASTER_DEBUG_DATA_BASE
!
! This macro is used in one place only in a program
! to define the static storage needed for debugging.
! This includes the bit flag structure (DEBUG) used
! for feature tests and the TRACE_BUFFER used by
! the TRACE_INFO macro. Also the global literal bit
! values for the debugging features are defined.
!
! e.x. %master_debug_data_base;
macro
DEBUG_GLOBALS [NAME, BIT_NAME] =
%name (BIT_NAME) = 1 ^ (%fieldexpand (%name (NAME, '_FLAG'), 1)) %;
macro
%MASTER_DEBUG_DATA_BASE =
global %DEBUG_DATA_BASE;
global TRACE_BUFFER : vector [ch$allocation (TRACE_BUFFER_LENGTH)];
global literal DEBUG_GLOBALS (DEBUG_FLAG_SET) %;
%sbttl 'Debugging Data Accesses And Setup'
! macro: FEATURE_NAME
!
! This is a set of macros that are defined with
! the same names as given in the DEBUG_FLAG_SET.
! When the name is specified in some code it expands
! to a 'fetch' of the associated bit in the debugging
! data base.
!
! e.x. %debug (MEMORY_TRACE, (TRACE_INFO ('Tracing memory')));
!
! <or>
!
! if MEMORY_TRACE then exitloop;
macro
DEBUG_FLAG [NAME, BIT_NAME] =
%name (NAME) = .DEBUG [%name (NAME, '_FLAG')] %quote % %;
macro
%unquote DEBUG_FLAG (DEBUG_FLAG_SET);
! macro: %DEBUG_SETUP
!
! This macro is called someplace early on in the
! initialization of a program (in run time code).
! The call to this is preferably in the same module
! as the %MASTER_DEBUG_DATA_BASE macro call. It
! does a little hand holding for users who have forgotten
! that the value in 135 is no longer being used for
! debugging flags. After the debugging data base is
! initialized properly, the features that are enabled
! is printed out if DEBUG_TRACE is enabled.
!
! e.x. %debug_setup;
macro
DEBUG_TELL [NAME, BIT_NAME] =
if %name (NAME)
then TASK_INFO (%string (' (', BIT_NAME, ') ', NAME)) %;
macro
%DEBUG_SETUP =
%debug (always,
(begin
if .%o'135' neq 0
then begin
DEBUG[DEBUG_TRACE_FLAG] = 1;
DEBUG[LOCAL_GALAXY_FLAG] = 1;
DEBUG[PRIVATE_SERVER_LINK_FLAG] = 1;
end;
%debug (DEBUG_TRACE,
(begin
TASK_INFO ('Debugging enabled for:');
DEBUG_TELL (DEBUG_FLAG_SET);
end));
end)) %;
%sbttl 'Trace Message Facilities'
! macro: %MODULE_NAME
!
! This macro declares to the tracing facility
! the name of the module that is currently being
! called.
!
! e.x. %module_name ('NMUSKD');
macro
%MODULE_NAME (NAME) =
%debug (always, bind %mod_name = ch$asciz (NAME)) %;
! macro: %ROUTINE
! %GLOBAL_ROUTINE
!
! These macros declare to the tracing facility
! the name of the routine that is currently being
! executed. The formal parameters may also
! specified in the calls to these macros. Note
! that these calls must replace the normal ROUTINE
! or GLOBAL ROUTINE declarations.
!
! e.x. %routine ('NMU$NETWORK_READ', LINK_ID, BUFFER_LENGTH, BUFFER) =
!
! <or>
!
! %routine ('NMU$MEMORY_RELEASE') (P, AMOUNT) : novalue =
macro
%ROUTINE (NAME) =
%if %declared (%rtn_name)
%then undeclare %rtn_name; %fi
%if not $MCB
%then bind %rtn_name = ch$asciz (NAME); %fi
%sbttl %string (NAME %if not %identical (NAME, %string (%name (NAME)))
%then ,' as ', %name(NAME) %fi)
routine %name (NAME)
%if %length gtr 1
%then (%remaining) %fi %;
macro
%GLOBAL_ROUTINE (NAME) =
%if %declared (%rtn_name)
%then undeclare %rtn_name; %fi
%if not $MCB
%then bind %rtn_name = ch$asciz (NAME); %fi
%sbttl %string (NAME %if not %identical (NAME, %string (%name (NAME)))
%then ,' as ', %name(NAME) %fi)
global routine %name (NAME)
%if %length gtr 1
%then (%remaining) %fi %;
! macro: TRACE_INFO
! TRACE_INFO_C
! TRACE_INFO_CL
!
! This macro generates a message and sends it to
! the controlling terminal. The message is generated
! using the NMU$TEXT processing facility, thus the
! message may be parameterized.
!
! The message that results contains the currently running
! task's name, the message specified and optionally the
! name of the routine the TRACE_INFO was called from.
! The routine name output is conditionallized on the
! debugging switch ROUTINE_TRACE (DB.RTN).
!
! The TRACE_INFO_C macro works the same as TRACE_INFO
! except that it doesn't print the task name and routine
! name. It is used primarily to continue a multiple line
! message.
!
! The TRACE_INFO_CL macro appends output to text already
! output by a TRACE_INFO or TRACE_INFO_C macro.
!
! e.x. TRACE_INFO ('This is a dumb message.');
!
! [NML-PROCESSOR]: NMU$FILE_OPEN This is a dumb message.
!
!
! TRACE_INFO ('The number is %D.', .NUMBER);
!
! [NCP]: NMU$IPCF_FIND The number is 19.
macro
TRACE_INFO (PATTERN) =
begin
external TRACE_BUFFER;
external routine SS_MESSAGE, NMU$TEXT;
local BUFFER_PTR;
BUFFER_PTR = ch$ptr (TRACE_BUFFER);
if ROUTINE_TRACE
then $NMU$TEXT (BUFFER_PTR, TRACE_BUFFER_LENGTH,
%string ('%(22L)A ', PATTERN),
%rtn_name
%if %length gtr 1
%then , %remaining %fi)
else $NMU$TEXT (BUFFER_PTR, TRACE_BUFFER_LENGTH,
%string (PATTERN)
%if %length gtr 1
%then , %remaining %fi);
SS_MESSAGE (ch$ptr (TRACE_BUFFER));
end %;
macro
TRACE_INFO_C (PATTERN) =
begin
external TRACE_BUFFER;
external routine SS_CMESSAGE, NMU$TEXT;
local BUFFER_PTR;
BUFFER_PTR = ch$ptr (TRACE_BUFFER);
if ROUTINE_TRACE
then $NMU$TEXT (BUFFER_PTR, TRACE_BUFFER_LENGTH,
%string ('%22S ', PATTERN)
%if %length gtr 1
%then , %remaining %fi)
else $NMU$TEXT (BUFFER_PTR, TRACE_BUFFER_LENGTH,
PATTERN
%if %length gtr 1
%then , %remaining %fi);
SS_CMESSAGE (ch$ptr (TRACE_BUFFER));
end %;
macro
TRACE_INFO_CL (PATTERN) =
begin
external TRACE_BUFFER;
external routine SS_CLMESSAGE, NMU$TEXT;
local BUFFER_PTR;
BUFFER_PTR = ch$ptr (TRACE_BUFFER);
$NMU$TEXT (BUFFER_PTR, TRACE_BUFFER_LENGTH,
PATTERN
%if %length gtr 1
%then , %remaining %fi);
SS_CLMESSAGE (ch$ptr (TRACE_BUFFER));
end %;
! macro: FORMAT_BUFFER (PATTERN, (pattern_args...), BIAS, POINTER, LENGTH)
!
! Trace contents of a buffer
macro
FORMAT_BUFFER (PATTERN, ARGS) =
begin
external TRACE_BUFFER;
external routine SS_MESSAGE, NMU$TEXT, NMU$UTILITY_BUFFER_TEXT;
local BUFFER_PTR;
BUFFER_PTR = ch$ptr (TRACE_BUFFER);
if ROUTINE_TRACE
then $NMU$TEXT (BUFFER_PTR, TRACE_BUFFER_LENGTH,
%string ('%(22L)A ', PATTERN),
%rtn_name
%if %length gtr 1
%then , %remove(ARGS) %fi)
else $NMU$TEXT (BUFFER_PTR, TRACE_BUFFER_LENGTH,
%string (PATTERN)
%if %length gtr 1
%then , %remove(ARGS) %fi);
SS_MESSAGE (ch$ptr (TRACE_BUFFER));
NMU$UTILITY_BUFFER_TEXT (%remaining);
end %;
%title ''
%sbttl ''
!
! [End of DEBUG.REQ]