ASMB,R,L,C
      NAM DCOPL,7  09580-16134 REV.2001 791023
* 
*---------------------------------------------------------------
* 
*     RELOC.     09580-16134
*     SOURCE     09580-18134
* 
*     M.KAESSNER    REV.A   770301
*     BOB RICHARDS  791023  (NAME CHANGE FROM DCVPL)
* 
*     HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY 
*     MATERIAL OF THE HEWLETT-PACKARD COMPANY.  USE AND 
*     DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. 
* 
*     (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 
*     ALL RIGHTS RESERVED.  NO PART OF THIS PROGRAM 
*     MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED
*     TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR 
*     WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. 
* 
*---------------------------------------------------------------
* 
      ENT DCOPL,XCOPL 
      EXT .ENTR,EXEC,ISN,LUDV,ERROR 
* 
* 
A     EQU 0 
B     EQU 1 
      SPC 2 
*    CALL DCOPL(U)
*    CALL XCOPL(LU,IERMS,U) 
*        WHERE: 
*               LU = LOGICAL UNIT OF THE 61XX 
*               IERMS = 5 WORD ERROR MESSAGE BLOCK
*                       IERMS(1) = 0 NO ERROR 
*                                = 3 POWER SUPPLY READ ERROR
*                       IERMS(2-5) ARE ONLY SET ON ERROR
*                       IERMS(2) = 5, THE CHARACTER COUNT 
*                       IERMS(3-5)= ASCII "DCOPL "
*               U = EIGHT ELEMENT INTEGER ARRAY. THE UNIT NUMBERS 
*                   WHICH HAVE CURRENT/VOLTAGE LIMITED FOLLOWED BY A "0"
*                   ARE PLACED IN THIS ARRAY.  IF ALL EIGHT UNITS 
*                   CURRENT/VOLTAGE LIMITED, THERE IS NO TRAILING "0".
* 
* 
* 
*     THIS DEVICE SUBROUTINE IS USED TO POLL THE 61XX BUSS TO 
* DETERMINE WHICH UNIT(S) HAVE CURRENT/VOLTAGE LIMITED.  IT IS INTENDED 
* TO BE USED IN CONJUNCTON WITH THE TRAP SET ROUTINE, "DVINT". WHEN 
* A TRAP OCCURS ON THE LU OF THE 61XX BUSS, THIS WOULD BE THE FIRST CALL
* IN THE TRAP RESPONSE SUBROUTINE.  AFTER THE UNIT WHICH HAS CURRENT/ 
* VOLTAGE LIMITED HAS BEEN DETERMINED, THE POWER SUPPLY CAN BE TURNED 
* OFF.   EXAMPLE: 
* 
*      5 DIM V(8) 
*     10 DIM U(8) 
*     20 TRAP 7 GOSUB 9000
*         : 
*         : 
*    100 LET V(1) = 6140
*    110 LET V(2) = 6130
* 
*         : 
* 
*         : 
* 
*     9000 CALL DCOPL(U(1)) 
*     9001 FOR I=1 TO 8 
*     9002 IF U(I)=0 THEN 9015
*     9003 IF V(I)=6140 GOTO 9010 
*     9004 CALL DCV(U(I),0.0,0.0) 
*     9005 PRINT"POWER SUPPLY #";U(I);" CURRENT LIMITED"
*     9006 GOTO 9015
*     9007 REM  LINES 9003,9006,9010,9011 NOT NEEDED IF NO DCS IS 
*     9008 REM  CONFIGURED INTO THE SYSTEM. 
*     9010 CALL DCI(U(I),0.0,0.0) 
*     9011 PRINT"POWER SUPPLY #";U(I);" VOLTAGE LIMITED"
*     9015 NEXT I 
*     9020 RETURN 
* 
* 
* 
      SKP 
* 
*     FRIENDLY VERSION
* 
UNITS NOP 
DCOPL NOP 
      JSB .ENTR 
      DEF UNITS 
      SPC 1 
      LDA .10       SET ERROR CODE
      STA ERBF       IN THE ERROR BUFFER
      JSB ISN       GET STATION 
      DEF *+1        NUMBER 
      STA STATN 
      SPC 1 
      JSB LUDV      GET LU OF 61XX
      DEF *+1+2 
      DEF STATN     STATION NUMBER
      DEF .22       DEVICE TYPE "22"
      SZA,RSS       IF LU=0 
      JMP ERR         ERROR!
      STA LU
      SPC 1 
      JSB XCOPL     CALL UN-FRIENDLY VERSION
      DEF *+1+3 
      DEF LU
      DEF ERBF
      DEF UNITS,I 
      LDA ERBF      CHECK FOR ERRORS
      SZA,RSS         ANY?
      JMP DCOPL,I     NO,EXIT 
      SPC 2 
ERR   JSB ERROR     CALL ERROR
      DEF *+1+2 
      DEF ERBF
      DEF ERCNT 
      JMP DCOPL,I   EXIT
      SKP 
*     UN-FRIENDLY VERSION 
* 
LUN   NOP 
ERAD  NOP 
UNITZ NOP 
XCOPL NOP 
      JSB .ENTR 
      DEF LUN 
* 
*     READ STATUS 
* 
      LDA LUN,I     CONFIGURE CONWD 
      ADA B300
      STA LU        STORE FOR EXEC CALL 
      JSB EXEC      READ ONE WORD 
      DEF *+1+4       FROM DRIVER 
      DEF ICODE 
      DEF LU
      DEF STATS 
      DEF .1
      JMP ER        ERROR RETURN
* 
*     CHECK UNITS 
* 
      CLA 
      STA ERAD,I    NO MORE ERRORS NOW
      LDA .1
      STA PTR       INITIALIZE POWER SUPPLY COUNT 
      LDA M8
      STA CNT       INITIALIZE LOOP COUNT 
      LDB STATS     GET STATUS WORD 
SLOOP CLA           OUTPUT A ZERO INTO BUFFER 
      STA UNITZ,I    JUST IN CASE THIS IS THE LAST
      SLB           CURRENT LIMITED?
      JMP WRTE       YES,WRITE POWER # TO ARRAY 
NOCL  RBR           NO,POSITION NEXT BIT
      ISZ PTR       INCREMENT POWER SUPPLY NUMBER 
      ISZ CNT       INCREMENT LOOP COUNT, DONR? 
      JMP SLOOP      NO, DO IT AGAIN! 
      JMP XCOPL,I    EXIT 
      SPC 1 
WRTE  LDA PTR       GET POWER SUPPLY'S NUMBER 
      STA UNITZ,I   STORE IN USER'S ARRAY 
      ISZ UNITZ     INCREMENT NEXT ADDRESS
      JMP NOCL      GO BACK TO THE LOOP 
      SPC 2 
ER    LDA .3        INITIALIZE ERROR NUMBER 
      STA ERAD,I
      LDA ERAD      GET ERROR BUFFER ADDRESS
      INA            POINT TO COUNT 
      LDB M4
      STB CNT       INITIALIZE COUNT
      LDB ERPTR     INITIALIZE ADDRESS POINTER
      STB PTR 
ELOOP LDB PTR,I     CONFIGURE ERMSG 
      STB A,I 
      INA           BUMP DESTINATION ADDRESS
      ISZ PTR       BUMP SOURCE ADDRESS 
      ISZ CNT       BUMP COUNTER, DONE? 
      JMP ELOOP      NO, LOOP.
      JMP XCOPL,I    YES,EXIT!
      SKP 
* 
*     CONSTANTS AND VARIBLES
* 
LU    NOP 
STATN NOP 
ERBF  NOP           BEGINNING OF ERROR BUFFER 
ERCNT DEC 5         NUMBER OF CHARACTERS
      ASC 3,DCVOL   ERROR MESSAGE 
ERPTR DEF ERCNT     POINTER TO ERMSG
CNT   NOP 
PTR   NOP 
STATS NOP 
      SPC 2 
.1    DEC 1 
.10   DEC 10
.22   DEC 22
.3    DEC 3 
B300  OCT 300 
M4    DEC -4
M8    DEC -8
ICODE OCT 100001
      END 
      END$
                        