ASMB,R,L,C,Q
*     NAME:   .SETB 
*     SOURCE: 92067-18328 
*     RELPC:  92067-16268 
*     PGMR:   G.L.M.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  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.       *
*  ***************************************************************
* 
* 
      NAM .SETB,7 92067-1X328 REV.2013 780921 
* 
* 
* 
      ENT .SETB,.CLRB 
* 
      EXT $LIBR,$LIBX,!BITM 
* 
* 
      SUP 
      SKP 
* 
* 
*  CALLING SEQUENCE: LDA LU 
*                    JSB .SETB
* 
*          RETURN    (E)=0 IF BIT WAS CLEAR WHEN CALLED 
*                    (E)=1 IF BIT WAS SET WHEN CALLED 
* 
* 
* 
.SETB NOP 
      CLB           SET 
      STB .CLRB       ENTRY FLAG TO INDICATE "SET" CALL 
* 
.SET2 JSB $LIBR     GO PRIV 
      NOP 
* 
      LDB ND100     VERIFY LU 
      ADB A           IS BETWEEN 0
      SSA,RSS           AND 99
      SSB,RSS 
      JMP OUTS       LU IS OUT OF RANGE 
* 
      CLB 
      DIV D16       CALCULATE WORD OFFSET 
      ADA TABL        INTO BIT MAP TABLE
      STA TMP           AND SAVE. 
* 
      CLA,INA       CALCULATE BIT POSITION
      CMB,INB,SZB,RSS SET BIT OFFSET NEGATIVE 
      JMP GOTC      IF BIT POSITION IS ZERO, CONTINUE 
* 
      RAL           ELSE,   PLACE 
      INB,SZB         BIT IN PROPER 
      JMP *-2            POSITION.
* 
* 
GOTC  LDB .CLRB     FETCH ENTRY FLAG
      SZB           IF THIS WAS A CLEAR CALL, 
      JMP CLRIT       GO DO IT
* 
      STA B          SAVE BIT POSITION
      AND TMP,I     IF BIT
      CLE,SZA         WAS ALREADY SET,
      CCE                RETURN E=1 
* 
      LDA B         RESTORE BIT POSITION
      IOR TMP,I     SET THE BIT 
      STA TMP,I      AND RESTORE THE WORD IN THE TABLE
* 
OUTS  JSB $LIBX 
      DEF .SETB 
* 
* 
      SPC 5 
* 
* 
*  CLEAR BIT SUBROUTINE 
* 
*  CALLING SEQUENCE: LDA LU 
*                    JSB .CLRB
*           RETURN   ---
* 
* 
.CLRB NOP 
      LDB .CLRB     SET RETURN
      STB .SETB       ADDRESS FOR COMMON
      JMP .SET2         BODY OF ROUTINE.
* 
* 
* 
*  THE "CLEAR" FUNCTION CONTINUES HERE
* 
* 
CLRIT CMA 
      AND TMP,I     CLEAR THE BIT 
      STA TMP,I  THEN RESTORE THE WORD
      JMP OUTS      RETURN
* 
TABL  DEF !BITM+0    GET A DIRECT ADDRESS 
TMP   NOP 
ND100 DEC -100
D16   DEC 16
A     EQU 0 
B     EQU 1 
      END 
                                                                                                                                                                                      