ASMB,R,L,C
      HED @PTPQ-SLAVE PTOPC MAILBOX SUBR. *(C) HEWLETT-PACKARD CO. 1976*
      NAM @PTPQ,6 91705-16104 REV A 760106
      SPC 1 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  ALL RIGHTS     *
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
******************************************************************
      SPC 1 
* 
* @PTPQ 
* SOURCE: 91705-18104 REV.A 
* BINARY: 91705-16104 REV.A 
* JIM HARTSELL
* JULY 30, 1974 
* MODIFIED BY: CHW (01-06-76) [DERIVED FROM 91705-18004 REV.C]
* 
* PRIVILEDGED SUBROUTINE FOR RTE-C SATELLITE RESIDENT 
* LIBRARY. @PTPQ SUPPLIES A MAILBOX FOR A PTOPC PARMB 
* ARRIVING FROM THE CENTRAL STATION.
* @PTPQ ALSO PROVIDES A HOLDING BUFFER FOR PARMB'S
* TO BE PASSED FROM @INTR TO @RQPR, PLUS VARIOUS
* "SYSTEM COMMON" STORAGE.
* 
* CALLING SEQUENCE:  (CALLED BY @INTR)
* 
*         (A) = ADDR OF PTOPC PARMB (35 WORDS MOVED)
*         JSB @PTPQ 
*          ERROR RETURN: MAILBOX FLAG ALREADY UP. 
*          NORMAL RETURN
* 
      ENT @PTPQ,%MBOX,%MFLG,%RQUE,%CSID,%CSNM 
      ENT %DLER,DLERR 
      ENT %LIST,%TMOT 
* 
      EXT $LIBR,$LIBX 
* 
B     EQU 1 
* 
* CHECK MAILBOX FLAG. 
* 
@PTPQ NOP 
      JSB $LIBR     DISABLE INTERRUPT SYSTEM. 
      NOP           (IN CASE @INTR PRIORITY REDUCED)
* 
      STA TEMP      SAVE PTOPC PARMB ADDR.
* 
      LDA %MFLG 
      SZA 
      JMP EXIT      FLAG SET: ERROR EXIT. 
* 
* PLACE PTOPC PARMB IN MAILBOX. 
* 
      LDA DFBOX 
      STA TEMP1 
      LDB MD35
* 
LOOP  LDA TEMP,I
      STA TEMP1,I 
      ISZ TEMP
      ISZ TEMP1 
      INB,SZB 
      JMP LOOP
* 
      LDA %MBOX+2   POPEN CALL? 
      AND B7
      CPA B1
      RSS 
      JMP STFLG     NO. 
* 
      LDA %MBOX+5   STORE PROG NAME.
      STA %CSNM+1 
      LDA %MBOX+6 
      STA %CSNM+2 
      LDA %MBOX+7 
      STA %CSNM+3 
* 
* SEARCH ALL ID SEGMENTS FOR THE SLAVE PROG 
* NAME AND SET %CSID TO ID SEG ADDR.
* 
      LDA KEYWD,I   FWA KEYWORD BLOCK.
      STA TEMP
* 
LOOP1 LDB TEMP,I    NEXT ID SEG ADDR. 
      STB %CSID     SAVE IT 
      SZB,RSS 
      JMP EXIT      QUIT IF DONE, 
      ADB D12 
* 
      LDA B,I       1ST 2 CHAR FROM IDSEG.
      CPA %CSNM+1 
      INB,RSS       MATCH.
      JMP NEXT      MISMATCH. 
      LDA B,I       2ND 2 CHAR FROM IDSEG.
      CPA %CSNM+2 
      INB,RSS       MATCH.
      JMP NEXT      MISMATCH. 
      LDA B,I       3RD 2 CHAR FROM IDSEG.
      AND LHALF 
      STA TEMP1     SAVE LEFT HALF. 
      LDA %CSNM+3 
      AND LHALF 
      CPA TEMP1 
      JMP STFLG     MATCH.
* 
NEXT  ISZ TEMP      BUMP KEYWORD ADDR.
      JMP LOOP1     CHECK NEXT ID SEG.
* 
* SET MAILBOX FLAG AND RETURN (NORMAL EXIT).
* 
STFLG CLA,INA 
      STA %MFLG 
      ISZ @PTPQ 
EXIT  JSB $LIBX     ENABLE INTERRUPT SYSTEM.
      DEF @PTPQ 
      SPC 3 
* 
* SUBROUTINE TO RETURN APLDR ERROR NUMBERS. 
* 
DLERR NOP 
      JSB $LIBR 
      NOP 
      ISZ DLERR 
      LDA %DLER,I 
      LDB DLERR,I 
      STA B,I 
      ISZ DLERR 
      JSB $LIBX 
      DEF DLERR 
      SPC 3 
* 
* CONSTANTS AND WORKING STORAGE.
* 
B1    OCT 1 
B7    OCT 7 
KEYWD OCT 1657
LHALF OCT 177400
TEMP  NOP 
TEMP1 NOP 
D12   DEC 12
MD35  DEC -35 
%TMOT DEC -1500    15 SEC. DEFAULT TIME-OUT.
%CSID NOP           CURRENT SLAVE ID SEG ADDR.
%CSNM DEF *+1 
      BSS 3         CURRENT SLAVE PROG NAME.
%MFLG OCT 0 
DFBOX DEF %MBOX 
%MBOX BSS 35        SLAVE PTOPC MAILBOX.
%RQUE DEF *+1 
      BSS 35        HOLDING BUFFER FOR @RQPR. 
%DLER DEF *+1 
      BSS 1         APLDR ERROR NUMBER SLOT.
      BSS 3         PROG/FILE NAME SLOT.
* 
* 
* WAIT-LIST FOR PROGRAMS PLACED IN THE OPERATOR SUSPEND 
* LIST BY @REFA.  FIVE-WORD ENTRY PER PROGRAM:
*    WORD   1 = NEG VALUE INCR BY @CLCK 
*    WORD 2-4 = PROGRAM NAME
*    WORD   5 = ID SEGMENT ADDRESS. 
* 
%LIST DEF *+1 
      DEC -20       NEG. # ENTRIES. 
*                     BSS 100       ALL ZEROES
      UNL 
      REP 100 
      OCT 0 
      LST 
* 
SIZE  EQU * 
* 
      END 
                                                        