ASMB,R,L,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 "ERR0" ERROR PRINT FOR RTE,DOS,, AND DOS-III
      NAM ERR0,7 24998-1X250 REV.2001 771122
      ENT ERR0
      EXT REIO,ER0.E
      EXT PNAME 
      SPC 1 
*  PURPOSE: 
*    THIS IS A GENERAL PURPOSE ERROR ROUTINE FOR VARIOUS MATH ROUTINES
*    IN THE LIBRARY.
      SPC 1 
*  USES:
*      THIS ROUTINE WILL PRINT ON LOGICAL UNIT 6 THE CONTENTS OF THE
*      A & B-REGISTER IN ASCII IN THE FOLLOWING FORM. 
* 
*      ! /PROGM : AA  BB @12345B! 
* 
*      WHERE THE MESSAGE STARTS AT !, AA=A-REG.,BB=B-REG, 12345 = OCTAL 
*      ADDRESS OF P-1 OF THE CALL TO ERR0 AND "PROGM" = NAME OF CALLING 
*      PROGRAM. 
      SPC 1 
*  CALLED:
*    ASSEMBLY ONLY
*    MESSA  & MESSB ARE THE FOUR CHARACTERS OF THE MESSAGE
*                LDA MESSA
*                LDB MESSB
*                JSB ERR0 
*                <RETURN> A&B-REG=0 
      SPC 1 
*  EXAMPLE: 
*                 DLD X       Y = SQRT (X)
*                 JSB SQRT    P+2 RETURN IF OK, ELSE P+1 RETURN 
*                 JSB ERR0    SQRT RETURN IF X IS NEGATIVE
*                 DST Y       ZERO RETURNED.
      SPC 1 
ERR0  NOP 
      STA MESSS+5    FIRST WORD OF ERROR CODE 
      STB MESSS+7    2ND WORD OF ERROR CODE 
      LDA ERR0      GET P+2 ADDRESS 
      ADA DM2       CALC P+0 ADDRESS
      LDB DFADS     GET ADDRESS OF MEM BUFFER 
      RAL,CLE,SLA   POSITION MEM ADDRESS & SKIP 
AGAIN LDA TEMPW     GET NEXT OCT DIGIT
      ALF,RAR       ROTATE LEFT 3 
      STA TEMPW     SAVE FOR NEXT PASS
      AND O7        MASK DOWN TO DIGIT
      IOR O60       MIRGE IN TO ASCII 
      SEZ,RSS       SKIP IF LO-CHAR IN WORD 
      ALF,SLA,ALF   POSITION TO HI-HALF 
      IOR B,I       MIRGE IN HI-HALF
      STA B,I       AND PUT IN WORD 
      SEZ,CME       BUMP WORD TO NEXT WORD? 
      INB           YES, DONE WITH BOTH CHARS 
      CPB DFEND     DONE WITH 5 CHARS?
      SEZ,RSS       YES 
      JMP AGAIN     NO, FINISH CONVERSION 
      IOR "B"       LAST CHAR IS "B"
      STA B,I       AND PUT IN LAST WORD
      JSB PNAME     ADD PROGRAM NAME TO MESSAGE 
      DEF *+2 
      DEF MESSS+1 
      JSB REIO
      DEF *+5 
      DEF D2        RCODE=2 FOR WRITE 
      DEF ER0.E              LIST DEV = 6 
      DEF MESSS      FWA OF MESSS 
      DEF D12       12 WORDS OF MESSAGE 
      CLA 
      CLB 
      JMP ERR0,I    EXIT
D12   DEC 12
DM2   DEC -2
TEMPW NOP 
"B"   OCT 102 
DFADS DEF IADRS-3 
DFEND DEF IADRS-1 
MESSS ASC 12, /PROGS : 03  UN @12345B 
IADRS EQU * 
O7    OCT 7 
O60   OCT 60
D2    OCT 2 
B     EQU 1 
      END 
* 
* 
                                                                                                                                        