ASMB,R,B,L
      HED  RTE-B BASIC ERROR MESSAGE ROUTINE
      NAM ERROR  HP 29102-16001 REV.A 
****************************************
*     RTE-B BASIC ERROR ROUTINE 
*     REV. A
****************************************
* SOURCE TAPE       29102-18001 
* RELOC. BIN. TAPE  29102-16001 
* EXT. REF. SPEC    29102-16001-1 
* LISTING           29102-16001-2 
* 
      ENT ERROR,.RROR,ERRCD 
      ENT EBUFA,LBUFA 
      ENT IERR,SERR 
* 
      EXT PRNIN,TYPE,RECER,M9,OUTIN,.63,.LNUM,M1,M256 
      EXT SPCIT,LISTR,PEXMA,SPCRC,SWLST,DSPLY 
      EXT ERBS,INDCK
      EXT FLOAT,.IENT 
      EXT .ENTR 
      SUP 
* 
.RROR NOP           BASIC ENTRY 
      CLA 
      JMP ERRO1 
* 
NUM   NOP           ERROR CODE
MNEM  NOP             "   MNEMONIC
ERROR NOP           NON-BASIC ENTRY 
      JSB .ENTR     PASS CALLING PARAMETERS 
      DEF NUM 
      LDA NUM,I     FETCH ERROR CODE
ERRO1 STA TEMPG     SAVE REQUESTED ERROR # IF ANY 
      LDA LISTR 
      STA TEMPF     SAVE CURRENT LIST DEVICE
      LDA SPCRC 
      STA IERR
      JSB SWLST 
       DEF DSPLY
      JSB PRNIN 
      STA TYPE      TYPE_0
      LDA M9
      LDB EBUFA 
      JSB DSPLY     (CR) (LF) (BELL) 'ERROR ' 
      LDA TEMPG 
      LDB .RROR     ERROR SOURCE IN (B) 
      SZA           BASIC ENTRY?
      JMP ERRO2     NO, ERROR NUMBER IN AREG ALREADY
      LDA ERBS      GET ERROR TABLE ADDRESS 
      INA           MOVE TO NEXT ERROR
      CPB 0,I       SAME AS ACTUAL ERROR? 
      CMA,INA,RSS   YES, COMPUTE ERROR
      JMP *-3       NO
      ADA ERBS
      STA TEMPG     SAVE NEGATIVE OF ERROR
      JMP ERRO3 
* 
ERRO2 STA ERRCD     SAVE ERROR FOR ALL TO ADMIRE
      LDB MNEM      FETCH BUFFER ADDRESS
      LDA 1,I       GET 
      AND .63         CHARACTER COUNT 
      CPA 1,I       FROM MNEM TABLE?
      RSS 
      ADA M1        YES, DEDUCT FOR LEFT PAREN
      INB           POINT AT STRING 
      CMA,INA,SZA,RSS  CHARS WITHOUT CR-LF IF CHARS 
      JMP ERRO3+1   NO CHARS (NULL STRING)
      JSB DSPLY     YES, DISPLAY STRING 
      LDA TEMPG     GET POSITIVE ERROR NUMBER 
ERRO3 CMA,INA,RSS   INSERT/REMOVE DASH IN MESSAGE 
      LDA TEMPG     GET POSITIVE ERROR NUMBER 
      JSB OUTIN     PUT ERROR NUMBER IN BUFFER
      LDA .LNUM     GET LINE NUMBER OF STATEMENT
      JSB OUTIN     DUMP ERR #, PUT LINE # IN BUF 
      LDA M9
      LDB LBUFA 
      JSB DSPLY     ' IN LINE ' 
      LDA M256
      JSB SPCIT     DUMP LINE #, DO CR-LF 
      LDA TEMPG     RETRIEVE ERROR
      LDB PEXMA     SET UP POINTER TO ABORT EXIT
      SSA,RSS       NEGATIVE? 
      JMP ERROR,I   NO, WAS NOT CALLED BY BASIC INTERP
      ADA RECER     RECOVERABLE 
      SSA,RSS         ERROR?
      JMP 1,I       NO, OVERLAY SYNTAX PHASE OR TERMIN
      JSB SWLST     RECOVERABLE.
       DEF TEMPF,I
      LDA IERR
      STA SPCRC     RESTORE 
      JMP .RROR,I   RETURN TO BASIC 
      SKP 
*  ENTRY POINT TO SET ERRCD TO DESIRED VALUE
* 
PTR   NOP 
SERR  NOP           SET "ERRCD" TO THE VALUE SPECIFIED
      JSB .ENTR 
       DEF PTR
      LDA PTR,I 
      ISZ PTR 
      LDB PTR,I 
      JSB .IENT     CONVERT TO INTEGER
       NOP
      STA ERRCD 
      JMP SERR,I
* 
* ENTRY POINT TO FETCH ERRCD
* 
IERR  NOP 
      LDA ERRCD 
      JSB FLOAT     CONVERT ERROR CODE TO FLOATING POINT
      JMP IERR,I    AND RETURN IT IN A & B
* 
EBUFA DEF EBUFF 
EBUFF OCT 6412
      OCT 3505      BELL, E 
      ASC 3,RROR
LBUFA DEF LBUFF 
LBUFF ASC 5, IN LINE
* 
TEMPF BSS 1 
TEMPG BSS 1 
ERRCD NOP 
      END 
                                                                                                                                                                                                                                                      