ASMB,L,R,C
* 
*  **************************************************************** 
*  * (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 HEWLETT-PACKARD COMPANY.        * 
*  **************************************************************** 
* 
*   NAME: PART OF MATH LIBRARY
*   SOURCE:  24998-18XXX  SEE NAM FOR LAST THREE DIGITS 
*   RELOC: PART OF 24998-12001
*   PGMR: BG & JTS
* 
      HED ".DDS" - DOUBLE INTEGER DECREMENT AND SKIP IF ZERO. 
      NAM .DDS,7 24998-1X041 REV.2001 780818
      ENT .DDS
* 
*     .DDS DECREMENTS A DOUBLE INTEGER IN MEMORY AND SKIPS IF 
*     THE RESULT IS ZERO.  A,B,E & O ARE PRESERVED. 
* 
*     CALLING SEQUENCE: 
* 
*                   JSB .DDS
*                   DEF <ARG> 
*                   <NORMAL RETURN> 
*                   <SKIP RETURN> 
      SKP 
.DDS  NOP 
      STA SAVEA     SAVE A,B
      STB SAVEB 
      ERA,ALS       ALS SAVE E,O
      SOC 
      INA 
      STA E&O 
      LDA .DDS      GET ARG ADDR. 
      ISZ .DDS
      STA TEMP      RESOLVE IND: ADDR MAY BE IN -A-.
      LDA SAVEA     JUST IN CASE. 
      LDA TEMP,I
      RAL,CLE,SLA,ERA 
      JMP *-4 
      STA TEMP      DIRECT ADDR ARG.
      ADA =D-1      -1 IFF ARG IN (A,B) 
      STA A&B 
      LDA SAVEA     IN CASE (A,B) 
      DLD TEMP,I    GET ARG.
      SZB,RSS       BORROW ?
      ADA =D-1      YES, DO IT. 
      ADB =D-1
      SZA,RSS       RESULT ZERO ? 
      SZB 
      JMP *+2       NO. 
      ISZ .DDS      YES, SKIP.
      DST TEMP,I    STORE RESULT. (NOP IF IN A&B) 
      STA TEMP      RESTORE E&O.
      LDA E&O 
      CLO 
      SLA,ELA 
      STO 
      LDA TEMP
      ISZ A&B       ARG IN (A,B) ?
      JMP *+2       NO. 
      JMP .DDS,I    YES, DONE.
      LDA SAVEA     RESTORE A,B 
      LDB SAVEB 
      JMP .DDS,I    EXIT
* 
SAVEA BSS 1         SCRATCH FOR A,B 
SAVEB BSS 1 
TEMP  BSS 1         ADDR ARG
A&B   BSS 1         FLAG: -1 IFF ARG IN (A,B) 
E&O   BSS 1         E & O 
* 
      END 
                                                                                                  