ASMB,Q,C
       NAM DSTES,19,110 91750-16100 REV.2013 790425 MEF 
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.  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.       *
*  ***************************************************************
* 
*   PROGRAM TO PERFORM THE P-TO-P SLAVE FUNCTIONS OF THE DS/3000
*   TEST PROGRAM "DSTEST". ONLY ONE MASTER CAN BE HANDLED AT A
*   TIME. SEE DOCUMENTATION IN THE DS/3000 MANUAL REGARDING THE 
*   RUNNING OF "DSTEST".
* 
* 
*   NAME: DSTES 
* SOURCE: 91750-18100 
*  RELOC: 91750-16100 
*   PGMR: DMT 
* 
*     DATE WRITTEN: FEBRUARY 22, 1978 
*     CHANGED FROM FORTRAN TO ASSEMBLER: APRIL 25, 1980 
      SPC 2 
      EXT RMPAR,GET,ACEPT,REJCT,FINIS,EXEC
      EXT D$MAX,D$TST 
      SPC 2 
*      INTEGER TAG(20),CLASS(5) 
TAG   BSS 20
CLASS BSS 5 
*+     INTEGER ERROR,FUNCT,LEN
ERROR BSS 1      +
FUNCT BSS 1      +
LEN   BSS 1      +
* 
*   GET CLASS NUMBER AND ACCEPT POPEN 
DSTES EQU * 
*+     CALL RMPAR(CLASS)
      JSB RMPAR  +
      DEF *+02   +
      DEF CLASS  +
*+     CALL GET(CLASS,ERROR,FUNCT,TAG,LEN)
      JSB GET    +
      DEF *+06   +
      DEF CLASS  +
      DEF ERROR  +
      DEF FUNCT  +
      DEF TAG    +
      DEF LEN    +
      LDA ERROR     IF ERROR < 0
      SSA 
      JMP L900
      LDA FUNCT       OR FUNCT <>1
      CPA =D1 
      RSS 
      JMP L900           GO TO L900.
      SPC 1 
**   MAIN LOOP...ACCEPT PREVIOUS FUNCTION AND WAIT FOR PWRITE 
*     (DSTES WILL TERMINATE WHEN MASTER SENDS A PCLOSE) 
L10   EQU * 
*+     CALL ACEPT(TAG,ERROR,BUFFER) 
      JSB ACEPT  +
      DEF *+04   +
      DEF TAG    +
      DEF ERROR  +
      DEF D$TST + 
L20   EQU * 
      LDA ERROR      IF ERROR < 0,
      SSA 
      JMP L950         GO TO L950.
*+     CALL GET(CLASS,ERROR,FUNCT,TAG,LEN)
      JSB GET    +
      DEF *+06   +
      DEF CLASS  +
      DEF ERROR  +
      DEF FUNCT  +
      DEF TAG    +
      DEF LEN    +
*      IF(ERROR .LT. 0  .OR.  LEN .GT. D$MAX)GO TO 900
      LDA ERROR 
      SSA 
      JMP L900
      LDA D$MAX  +
      CMA,INA    +
      ADA LEN    +
 CMA,SSA,INA,SZA +
      JMP L900
      LDA FUNCT     IF FUNCT <> 3 
      CPA D3          GO TO L800. 
      JMP L10       OTHERWISE, STAY IN LOOP.
      SPC 1 
*   BAD FUNCTION CALL RECEIVED. REJECT IT AND JUMP BACK INTO LOOP.
L800  EQU * 
*+     CALL REJCT(TAG,ERROR)
      JSB REJCT  +
      DEF *+03   +
      DEF TAG    +
      DEF ERROR  +
      JMP L20 
      SPC 2 
*   *** ERROR ***  REJECT CALL, THEN ABORT
L900  EQU * 
*+     CALL REJCT(TAG,ERROR)
      JSB REJCT  +
      DEF *+03   +
      DEF TAG    +
      DEF ERROR  +
L950  EQU * 
*+     CALL FINIS 
      JSB FINIS  +
      DEF *+01   +
*+     CALL EXEC(D6,D0,D3)
      JSB EXEC   +
      DEF *+04   +
      DEF D6     +
      DEF D0     +
      DEF D3     +
      SPC 2 
D0    DEC 0 
D3    DEC 3 
D6    DEC 6 
      END DSTES 
                                                                                                                          