*DECK NPICMD
USETEXT NIPDEF
USETEXT AHEADER
USETEXT PT
USETEXT AT
USETEXT ACB
USETEXT ACNB
USETEXT NCNB
USETEXT PARAMP
USETEXT SUPMSG
PRGM NPICMD;
CONTROL NOLIST;
CONTROL LIST;
STARTIMS;
#
*1DC NPICMD
*
* 1. PROC NAME AUTHOR DATE
* NPICMD N. NICHOLAS 79/09/12
*
* 2. FUNCTIONAL DESCRIPTION.
* PROCESS ICMDR NETWORK BLOCK FROM N P U
*
* 3. METHOD USED.
* GET BUFFER FOR INTR/USR/BLOCK
* CREATE INTR/USR SUPERVISOR MESSAGE
* LINK SUPERVISOR MESSAGE TO APP DATA RING
* SCHEDULE APPLICATION
*
* 4. ENTRY PARAMETERS.
* PARAMP1 BLOCK ADDRESS
* PARAMP2 FWA OF NCNB
*
* 5. EXIT PARMETERS.
* PARAMP2 ZERO IF USR/MSG NOT PROCESSED
*
* QHICMD TRUE = ICMD BLOCK PROCESSED
* 6. COMDECKS CALLED.
* CYBERDEFS INTR INTRDEF AT
* HEADER INPAR INPARU AT ACB ACNB NCNB
* MISCOM MISDEF SUPMSG OSIZE
*
* 7. ROUTINES AND OVERLAYS CALLED.
*
* MGETS ALLOCATE EMPTY BUFFER
* MRELS RELEASE BUFFER SPACE
* BLINK LINK DATA BLOCK INTO DATA RING
* OSCHAPP SCHEDULE APPLICATION
* XTRACE READ PROCEDURE CALLS
*
* 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATIONS
*
* THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE
* OVLCALL. WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE
* TO LOCATION RJMAIN TO RETURN TO CALLING PROGRAM.
*
* W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY
*CALL OPSIZE
* THIS OVERLAY IS CALLED BY NEIB.
*
#
STOPIMS;
#
INPUT PARAMETERS
NONE
OUTPUT PARMETERS
NONE
#
#
EXTERNAL VARIABLES
#
XREF BEGIN
PROC BLINK; # LINK DATA BLOCK INTO DATA RING #
PROC MGETS; # ALLOCATE BUFFER SPACE #
PROC MRELS; # RELEASE BUFFER SPACE #
PROC OSCHAPP; # SCHEDULE APPLICATION #
PROC XTRACE; # TRACE CALLS #
LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
END
#
INTERNAL VARIABLES
#
ITEM BUFADDR; # ADDRESS OF BUFFER TO HOLD INTR/USR SM #
#
TEMPLATE OF APPLATION BLOCK HEADER
BASED ARRAY USED, USETEXT ( A H E A D E R ).
#
#
TEMPLATE OF INTRUSR SUPERVISTOR MESSAGE
BASED ARRAY USE BY A
USETEXT CALL TO
( S U P $ M S G )
#
#
BASED ARRAY NEEDED FOR ICMD ALPHA CHARACTER
#
BASED ARRAY INTCHAR;
BEGIN
ITEM ALPHA U(0,0,8);
END
#
***************** E X E C U T A B L E C O D E ******************
#
BEGIN
CONTROL IFEQ DEBUG,1;
XTRACE("PICMD") ;
CONTROL FI;
P<NCNB> = PARAMP2; # NCNB ADDRESS #
P<ACNB> = NCNBACNB[0]; # ACNB ADDRESS #
#
GET BUFFER TO HOLD INTR/USR SUPERVISOR MESSAGE
#
#
CREATE INTR/USR/SM TO SEND TO APPLICATION
#
P<AHEADER> = BUFADDR + BLKHSIZE; # A B H ADDRESS #
ABHABT[0] = APPCMD; # SUP/MSG BLOCK TYPE #
ABHACT[0] = ACINTR; # SET CHARACTER TYPE #
ABHTLC[0] = LINTR; # LENGTH OF INTR/USR/SM #
P<SUPMSG> = P<AHEADER> + ABHSIZE; # ADDR OF INTR/USR/SM #
PFCSFC[0] = INTRUSR; # PFC SFC FOR INTR/USR/SM #
INTRACN[0] = ACNBACN[0]; # APP CONNECT NUMBER #
#
GET INTERRUPT ALPHA CHARACTER INTO/APP/MSG
#
P<INTCHAR> = PARAMP1 + BLKHSIZE + ABHSIZE;# ALPHA/CHAR ADDRESS #
INTRCHR[0] = ALPHA[0];
#
LINK SUPERVLSOR MESSAGE TO APPLICATLON PCB DATA RING
#
P<ACB> = ATACBA[ACNBAN[0]];
BLINK(BUFADDR,P<ACB>);
#
SCHEDULE APPLICATION FOR INTR/USR/SM
#
OSCHAPP(P<ACB>);
# QHICMD[0] = TRUE SET INTR/USR SM FLAG #
#
RELEASE BUFFER OF NPU INTR/USR/SM
#
GOTO RJMAIN;
END
TERM