*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 = PARAMP2; # NCNB ADDRESS # P = NCNBACNB[0]; # ACNB ADDRESS # # GET BUFFER TO HOLD INTR/USR SUPERVISOR MESSAGE # # CREATE INTR/USR/SM TO SEND TO APPLICATION # P = 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 = P + 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 = PARAMP1 + BLKHSIZE + ABHSIZE;# ALPHA/CHAR ADDRESS # INTRCHR[0] = ALPHA[0]; # LINK SUPERVLSOR MESSAGE TO APPLICATLON PCB DATA RING # P = ATACBA[ACNBAN[0]]; BLINK(BUFADDR,P); # SCHEDULE APPLICATION FOR INTR/USR/SM # OSCHAPP(P); # QHICMD[0] = TRUE SET INTR/USR SM FLAG # # RELEASE BUFFER OF NPU INTR/USR/SM # GOTO RJMAIN; END TERM