Trailing-Edge
-
PDP-10 Archives
-
tops20-v7-ft-dist1-clock
-
7-sources/m20int.bli
There are 2 other files named m20int.bli in the archive. Click here to see a list.
! UPD ID= 191, SNARK:<6.1.NML>NMUINT.BLI.3, 10-Dec-84 14:48:03 by HALPIN
! Get MONSYM Library file out of default directory, not BLI:
!
! UPD ID= 97, SLICE:<6.1.NML>NMUINT.BLI.2, 18-Sep-84 15:24:52 by GUNN
! WORK:<GUNN.NML>NMUINT.BLI.2 21-Aug-84 10:01:42, Edit by GUNN
!
! Change to accomodate new LIBRARY conventions. MONSYM.L36 and JLNKG.L36
! are now explicity declared here rather than in NMULIB.
!
!NET:<DECNET20-V3P1.NMU>NMUINT.BLI.2 16-Jun-81 13:05:55, Edit by JENNESS
!
! Change completely to simpler form of interrupt handling.
!
module NMUINT ( ! Interrupt handling facility
ident = 'X00.01'
) =
begin
!
! 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 set of routines provides an interface to the
! software interrupt system.
!
! Environment: TOPS20 user mode
!
! Author: Steven M. Jenness, Creation date: 18 August 1980
!
!--
!
! Include files
!
library 'MXNLIB'; ! All required definitions
library 'MONSYM'; ! Monitor symbols
library 'MXJLNK'; ! JSYS linkage definitions
!
! Global routines
!
forward routine
NMU$INTERRUPT_INITIALIZE : novalue;
!
! Local routines
!
forward routine
ARITH_OVRFLW: novalue, ! Arithmetic error interrupt
PDL_OVRFLW: novalue, ! Stack overflow
ILL_INST: novalue, ! Illegal instruction
ILL_MREF: novalue, ! Illegal memory reference
SYS_FAILURE : novalue; ! System resource failure
!
! Own variables
!
INTERRUPT_DATA_BASE; ! Setup interrupt data base
!
! Global variables
!
global
INTNST; ! Nesting count for PION/PIOFF
!
! External references
!
external routine
NMU$TEXT_MANAGER,
NMU$SCHED_MANAGER;
%global_routine ('NMU$INTERRUPT_INITIALIZE') : novalue =
!++
! Functional description:
!
! This routine in initializes the interrupt system and
! clears any pending interrupts. The interrupt system
! is enabled on completion of this routine.
!
! Formal parameters: none
!
! Routine value: none
! Side effects: none
!
!--
begin
!
! Clear current state of interrupt system
!
CLEAR_INTERRUPT_SYSTEM;
!
! Initialize interrupt system and data base
!
INITIALIZE_INTERRUPT_SYSTEM;
!
! Set up calls for panic interrupts
!
ARITHMETIC_OVERFLOW (ARITH_OVRFLW);
STACK_OVERFLOW (PDL_OVRFLW);
ILLEGAL_INSTRUCTION (ILL_INST);
ILLEGAL_MEMORY_REFERENCE (ILL_MREF);
SYSTEM_RESOURCE_FAILURE (SYS_FAILURE);
end; ! End of NMU$INTERRUPT_INITIALIZE
%routine ('ARITH_OVRFLW') : novalue =
!++
! Functional description:
!
! This is the routine that receives that Panic interrupt
! when an arithmetic error occurs in the process.
!
! Formal parameters: none
!
! Routine value: none
! Side effects: none
!
!--
begin
local
TASK : ref TASK_BLOCK;
TASK = CURRENT_TASK;
$NMU$TEXT (%ref (ch$ptr (TASK [TB_ERROR_BUFFER])),
100,
'Arithmetic overflow at PC: %(6)P',
.LEV1PC <0, 18, 0> - 1);
TASK [TB_ERROR_PC] = .LEV1PC <0, 18, 0> - 1;
LEV1PC = NMU$SCHED_COMPLETE;
end; ! End of ARITH_OVRFLW
%routine ('PDL_OVRFLW') : novalue =
!++
! Functional description:
!
! This is the routine that receives the push down list
! overflow Panic interrupt.
!
! Formal parameters: none
!
! Routine value: none
! Side effects: none
!
!--
begin
local
TASK : ref TASK_BLOCK;
TASK = CURRENT_TASK;
$NMU$TEXT (%ref (ch$ptr (TASK [TB_ERROR_BUFFER])),
100,
'Stack overflow at PC: %(6)P',
.LEV1PC <0, 18, 0> - 1);
TASK [TB_ERROR_PC] = .LEV1PC <0, 18, 0> - 1;
LEV1PC = NMU$SCHED_COMPLETE;
end; ! End of PDL_OVRFLW
%routine ('ILL_INST') : novalue =
!++
! Functional description:
!
! This is the routine that receives the illegal instruction
! trap Panic interrupts.
!
! Formal parameters: none
!
! Routine value: none
! Side effects: none
!
!--
begin
local
TASK : ref TASK_BLOCK;
TASK = CURRENT_TASK;
$NMU$TEXT (%ref (ch$ptr (TASK [TB_ERROR_BUFFER])),
100,
'Illegal instruction at PC: %(6)P',
.LEV1PC <0, 18, 0> - 1);
TASK [TB_ERROR_PC] = .LEV1PC <0, 18, 0> - 1;
LEV1PC = NMU$SCHED_COMPLETE;
end; ! End of ILL_INST
%routine ('ILL_MREF') : novalue =
!++
! Functional description:
!
! This is the routine that receives the illegal memory
! reference Panic interrupts.
!
! Formal parameters: none
!
! Routine value: none
! Side effects: none
!
!--
begin
local
TASK : ref TASK_BLOCK;
TASK = CURRENT_TASK;
$NMU$TEXT (%ref (ch$ptr (TASK [TB_ERROR_BUFFER])),
100,
'Illegal memory reference at PC: %(6)P',
.LEV1PC <0, 18, 0>);
TASK [TB_ERROR_PC] = .LEV1PC <0, 18, 0>;
LEV1PC = NMU$SCHED_COMPLETE;
end; ! End of ILL_MREF
%routine ('SYS_FAILURE') : novalue =
!++
! Functional description:
!
! This is the routine that receives the system
! resource failure Panic interrupts.
!
! Formal parameters: none
!
! Routine value: none
! Side effects: none
!
!--
begin
local
TASK : ref TASK_BLOCK;
TASK = CURRENT_TASK;
$NMU$TEXT (%ref (ch$ptr (TASK [TB_ERROR_BUFFER])),
100,
'System resource failure at PC: %(6)P',
.LEV1PC <0, 18, 0> - 1);
TASK [TB_ERROR_PC] = .LEV1PC <0, 18, 0> - 1;
LEV1PC = NMU$SCHED_COMPLETE;
end; ! End of SYS_FAILURE
end ! End of module NMUINT
eludom