ASMB
      NAM BITS,7 . 92080-1X004 REV.2026  800515 
* 
*     SOURCE 92080-18004
* 
      SPC 2 
**************************************************************
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS    *
* RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
* PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
* OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
**************************************************************
      SPC 2 
      ENT BITS
* 
* 
* 
*     FORTRAN CALLABLE SUBROUTINE:
* 
*                   B I T S 
*                   ======= 
* 
* 
*     CALL BITS(IRW,IBUF,INDEX,IVAL,LENGRP) 
* 
*       IRW    => 1 = GET BYTE
*              => 2 = PUT BYTE
*       IBUF   => BUFFER START ADDRESS. 
*       INDEX  => ITEM NUMBER TO BE ACCESSED (FIRST=1)
*       IVAL   => INTEGER VALUE (RETURNED IF GET, 
*                                SUPPLIED IF PUT) 
*       LENGRP => BYTE LENGTH (RANGES FROM 1 TO 16) 
* 
* 
* 
* 
*     THIS ROUTINE STORES OR GETS A 'BYTE' IN OR OUT A BUFFER.
*     THE BYTE-LENGTH CAN BE FIXED TO ANY LENGTH BETWEEN
*     1 AND 16.(LIMITS INCLUDED)
*     EXECUTION TIME IS LESS THAN 260 MICRO SECS (21MX) 
* 
* 
*     PROGRAMMED:  VAN DEN BOSSCHE MARC        DEC 6-1-1977 
* 
*                   HP BRUSSELS 
* 
* 
A     EQU 0 
B     EQU 1 
ARW   DEF LOCAT 
MASK  NOP 
NMASK NOP 
LOCAT NOP 
* 
* 
* 
RW    NOP 
ABUF  NOP 
INDEX NOP 
IVAL  NOP 
GRPL  NOP 
BITS  NOP 
      LDB ARW 
      LDA =D-6
      STA R1
L.    LDA BITS,I
      ISZ BITS
      SSA,RSS 
      JMP *+4 
      ELA,CLE,ERA 
      LDA A,I 
      JMP *-4 
      STA B,I 
      INB 
      ISZ R1
      JMP L.
      LDA LOCAT 
      STA BITS
      LDA GRPL,I
      AND =B17
      IOR RRL 
      STA *+3 
      CLA 
      CCB 
DATA  NOP 
      STA MASK
      CMA 
      STA NMASK 
      CMA 
      AND IVAL,I
      STA DATA
      LDA INDEX,I 
      MPY GRPL,I
      DIV =D16
      ADA =D-1
      ADA ABUF
      STA LOCAT 
RRL   RRL 16
      SZA 
      IOR RRL 
      STA R1
      STA R3
      SZA 
      XOR =B1000
      STA R2
      LDA RW,I
      CPA =D2 
      JMP WRITE 
      DLD LOCAT,I 
R3    NOP 
      AND MASK
      STA IVAL,I
      JMP BITS,I
* 
WRITE DLD LOCAT,I 
R1    NOP 
      AND NMASK 
      IOR DATA
R2    NOP 
      DST LOCAT,I 
      JMP BITS,I
      END 
                                                                                                            