FTN,L 
      SUBROUTINE DIGIN(ISLOT,IDATA),09580-16427 1926 790420 
C---------------------------------------------------------
C 
C     RELOC.                 09580-16427
C     SOURCE                 09580-18427
C 
C     L.CORTEZ
C 
C     TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETRY 
C     MATERIAL OF THE HEWLETT-PACKARD COMPANY.
C 
C     (C) COPYRIGHT  HEWLETT-PACKARD COMPANY  1979
C     ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM
C     MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED
C     TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR 
C     WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. 
C 
C-----------------------------------------------------------
C 
C     BRANCH AND MNEMONIC TABLES ENTRIES: 
C     ----------------------------------
C 
C        DIGIN(I,IV),      OV#=XX,     ENT=DIGIN,  FIL=%DIGIN 
C 
C-----------------------------------------------------------
C 
C     THIS SUBROUTINE PROGRAMS THE HP 69431A TTL INPUT
C     CARD. 
C 
      DIMENSION IERMS(5)
      DATA IDTN/23/ 
      DATA IERMS/10,5,2HDI,2HGI,2HN / 
      ISTN = ISN(DUMMY) 
      LU = LUDV(ISTN,IDTN)
      IF(LU)800,800,30
30    CALL XIGIN(LU,IERMS,ISLOT,IDATA)
      IF(IERMS)800,40,800 
40    CONTINUE
      RETURN
C 
800   CALL ERROR(IERMS,IERMS(2))
      RETURN
      END 
C 
C 
      SUBROUTINE XIGIN(LU,IERR,ISLOT,IDATA),
     +09580-16427 1926 790420 
C 
C 
C                LU = LOGICAL UNIT NUMBER OF 6940 
C                IERR = 5-WORD ERROR ARRAY
C                      WHERE: IERR(1) = ERROR CODE
C                                       0 = NO ERRORS 
C                                      -1 = PARAMETER ERROR 
C                                      -2 = TIME OUT ERROR
C                                      -9 = I/O CALL REJECTED 
C                                     -10 = ILLEGAL LU
C                             IERR(2) = CHARACTER COUNT 
C                             IERR(3) - IERR(5) = DEVICE MNEMONIC 
C               ISLOT = UNIT ADDRESS + SLOT ADDRESS 
C                       0 - 14    (6940)
C                       100 - 114 (6941 UNIT #1)
C                       200 - 214 (6941 UNIT #2)
C                       300 - 314 (6941 UNIT #3)
C                       ------------------------
C                       1500 - 1514 (MAX) 
C 
C               IDATA = INPUT DATA
C                       0 - 7777 (OCTAL)
C 
      DIMENSION IADDR(7),IBUF(2)
      DIMENSION IERR(5),IREG(2) 
      EQUIVALENCE (REG,IREG,IA),(IREG(2),IB)
C 
      DATA IADDR/100000B,110000B,120000B,130000B,140000B,150000B, 
     1160000B/
      DATA ICNWD/170200B/ 
C 
C ***  PARAMETER CHECK
C 
      IERR = 0
      IF(IUNIT.GT.1514)GO TO 8000 
C 
C ***   FIND UNIT AND SLOT ADDRESSES
C 
      NUMBR = 0 
      IUNUM = ISLOT 
20    CONTINUE
      IF(IUNUM.LT.0)GO TO 8000
      IF(IUNUM.LE.15)GO TO 30 
      NUMBR = NUMBR + 1 
      IUNUM = IUNUM - 100 
      GO TO 20
30    CONTINUE
      IF(IUNUM.GT.14)GO TO 8000 
      IBUF = IOR(ICNWD,NUMBR) 
      IF(IUNUM.LT.8)IBUF(2) = IUNUM*10000B
      IF(IUNUM.GT.7)IBUF(2) = IADDR(IUNUM-7)
C 
C ***   OUTPUT WORD TO MULTI-PROGRAMMER 
C 
  90  CALL REIO(100002B,100B+LU,IBUF,2) 
      GOTO 7000 
  95  CALL ABREG(IA,IB) 
      IF(IAND(IREG,377B) .NE.0) GOTO 7500 
 100  CONTINUE
C 
C ***  INPUT DATA FROM MULTI-PROGRAMMER 
C 
 110  CALL REIO(100001B,100B+LU,IDATA,1)
      GOTO 7000 
 120  CALL ABREG(IA,IB) 
      IF (IAND(IREG,377B) .NE. 0) GOTO 7500 
 130  CONTINUE
C 
 140  ITEST=IDATA 
      ITEST=(IAND(7777B,ITEST)) 
C 
C *** ISOLATE DIGITAL DATA TO OCTAL 
C 
C 
      ID1=ITEST/8 
      R1=ITEST-(ID1*8)
C 
      ID2=ID1/8 
      R2=ID1-(ID2*8)
C 
      ID3=ID2/8 
      R3=ID2-(ID3*8)
C 
      R4=ID3
C 
      DATA=R4*1000.+R3*100.+R2*10.+R1 
C 
      IDATA=INT(DATA) 
C 
      RETURN
C 
C 
C ***   ERROR CONDITIONS
C 
7000  IERR = 9
      GO TO 8100
7500  IERR = 2
      GO TO 8100
8000  IERR = 1
8100  IERR(3) = 2HDI
      IERR(4) = 2HGI
      IERR(5) = 2HN 
      RETURN
      END 
      END$
    