ASMB,R,L,C
      HED (FMP) ERSTR: ERROR EXPANDER ROUTINE 
*     NAME:   ERSTR 
*     SOURCE: 92071-18188 
*     RELOC:  92071-16188 
*     PGMR:   E.D.B.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.  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 ERSTR,7 92071-1X188 REV.2041 800715 
* 
      ENT ERSTR 
* 
      EXT .ENTR, .MVW 
      SUP 
      SKP 
* 
*     DESCRIPTION 
* 
*     THIS IS THE ERROR EXPANSION ROUTINE OF THE FMP LIBRARY. 
* 
*     CALLING SEQUENCE: 
* 
*     CALL ERSTR(IERR, IBUF, IL, L) 
* 
*     WHERE:
* 
*     IERR   IS THE FMP ERROR TO BE EXPANDED. 
* 
*     IBUF   WILL BE THE ERROR STRING RETURNED
* 
*     IL     IS THE LENGTH OF IBUF
* 
*     L      WILL BE THE ACTUAL LENGTH OF STRING RETURNED 
* 
*     UPON RETURN, A-REG WILL BE EITHER ZERO (NO ERROR) 
*     OR -1 (UNDEFINED MESSAGE) 
      SKP 
* 
*     ENTRY 
* 
IERR  NOP 
IBUF  NOP 
IL    NOP 
L     NOP 
* 
ERSTR NOP 
      JSB .ENTR     GET PARAMETERS
      DEF IERR
* 
*     PROCESS REQUEST 
* 
      LDA IERR,I    GET ERROR CODE
* 
      ADA MOSNG     TEST FOR
      SSA             DEFINED  CODE 
      JMP UDF       TOO NEGATIVE - UNDEFINED
* 
      LDA IERR,I    GET ERROR CODE AGAIN
      ADA NMPOS     TEST FOR TOO HIGH 
      SSA,RSS 
      JMP UDF       TOO HIGH - UNDEFINED
* 
      LDA IERR,I    GET ERROR CODE AGAIN
      ADA TBAD      ADD TABLE ADDRESS 
      LDB A,I       FETCH REQUESTED MESSAGE ADDRESS 
      JMP PR
* 
UDF   LDB ERUDF     FETCH UNDEFINED ERROR MESSAGE ADDRESS 
* 
PR    CLA           INDICATE GOOD MESSAGE 
      CPB ERUDF     IF MESSAGE IS UNDEFINED,
      CCA            THEN INDICATE UNDEFINED MESSAGE
      STA UDFLG     SAVE UNDEFINED FLAG 
* 
      LDA B,I       GET MESSAGE LENGTH
      ADA .5         ADD 5
      INB           BUMP TO FIRST WORD OF MESSAGE 
      STB MSAD      SAVE AS POINTER 
* 
      LDB IL,I      GET BUFFER LENGTH 
      CMB,INB        NEGATE 
      ADB A         COMPARE WITH MESSAGE LENGTH 
      SSB,RSS       IF BUFFER SMALLER THAN MESSAGE, 
      LDA IL,I       USE BUFFER LENGTH
* 
      STA L,I       SAVE FOR USER 
      ADA N5         AND SUBTRACT 5 
      STA IL        SAVE FOR MOVE 
* 
*     MOVE "FMGR" INTO BUFFER 
* 
      DLD FMGR      PUT "FMGR" AT 
      DST IBUF,I     HEAD OF MESSAGE
      ISZ IBUF      BUMP BUFFER ADDRESS 
      ISZ IBUF
* 
*     MOVE ERROR NUMBER INTO BUFFER 
* 
      LDB IERR,I    GET ERROR CODE AGAIN
      LDA PLUS      GET PLUS SIGN AND CORRECTION
      SSB           IF NEGATIVE,
      LDA MINUS      GET MINUS SIGN AND CORRECTION
      STA TMP         SAVE FOR A WHILE
      SSB           IF NEGATIVE,
      CMB,INB        THEN MAKE POSITIVE 
      ASR 16        EXTEND SIGN 
      DIV .1000     GET LOWER 3 DIGITS
      ASR 16        EXTEND SIGN 
      DIV .100      GET 100'S DIGIT 
      ADA TMP       ADD SIGN CHARACTER AND CORRECTION 
      STA IBUF,I     SAVE IT
      ISZ IBUF        AND BUMP BUFFER ADDRESS 
      ASR 16        EXTEND SIGN 
      DIV .10       GET 10'S AND 1'S DIGIT
      ALF,ALF       SHIFT 10'S DIGIT OVER 
      ADA B          ADD 1'S DIGIT
      ADA CORR        ADD NUMERIC CORRECTION
      STA IBUF,I    SAVE IT 
      ISZ IBUF       AND BUMP BUFFER ADDRESS
      LDA BLANK     GET BLANK 
      STA IBUF,I     SAVE IT
      ISZ IBUF        AND BUMP BUFFER ADDRESS 
* 
*     MOVE MESSAGE INTO BUFFER
* 
      LDA MSAD      GET MESSAGE ADDRESS 
      LDB IBUF       AND BUFFER ADDRESS 
      JSB .MVW        AND MOVE THE MESSAGE
      DEF IL
      NOP 
      SKP 
* 
*     EXIT
* 
EXIT  LDA UDFLG     USE UDFLG AS ERROR RETURN CODE
      JMP ERSTR,I   RETURN
      SKP 
* 
*     STORAGE AREA
* 
.5    DEC 5 
.10   DEC 10
.100  DEC 100 
.1000 DEC 1000
* 
N5    DEC -5
* 
BLANK ASC 1,
PLUS  ASC 1, 0
MINUS ASC 1,-0
CORR  ASC 1,00
* 
FMGR  ASC 2,FMGR
* 
MSTN  EQU 104       MOST NEGATIVE ERROR CODE
MPOS  EQU 62        HIGHEST ERROR CODE
MOSNG ABS MSTN         MOST NEG. CODE 
NMPOS ABS -MPOS-1   NEG. OF MOST POSITIVE 
* 
TBAD  DEF MS00
ERUDF DEF UDN 
* 
TMP   NOP           TEMPORARY STORAGE 
MSAD  NOP           MESSAGE ADDRESS 
UDFLG NOP           UNDEFINED ERROR FLAG
      SKP 
* 
*     TABLE OF ERROR MESSAGES (POSITION DEPENDENT)
* 
      DEF UDN       ERRORS -109:-100
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF EM104 
      DEF EM103 
      DEF EM102 
      DEF EM101 
      DEF EM100 
* 
      DEF ERM99     ERRORS -99:-90
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
* 
      DEF UDN       ERRORS -89:-80
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
* 
      DEF UDN       ERRORS -79:-70
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
* 
      DEF UDN       ERRORS -69:-60
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
* 
      DEF UDN       ERRORS -59:-50
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF ERM50 
* 
      DEF ERM49     ERRORS -49:-40
      DEF UDN 
      DEF UDN 
      DEF ERM46 
      DEF ERM45 
      DEF ERM44 
      DEF ERM43 
      DEF ERM42 
      DEF UDN 
      DEF UDN 
* 
      DEF UDN       ERRORS -39:-30
      DEF ERM38 
      DEF ERM37 
      DEF ERM36 
      DEF UDN 
      DEF UDN 
      DEF ERM33 
      DEF ERM32 
      DEF UDN 
      DEF UDN 
* 
      DEF UDN       ERRORS -29:-20
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
* 
      DEF UDN       ERRORS -19:-10
      DEF ERM18 
      DEF ERM17 
      DEF ERM16 
      DEF ERM15 
      DEF ERM14 
      DEF ERM13 
      DEF ERM12 
      DEF ERM11 
      DEF ERM10 
* 
      DEF ERM9      ERRORS -9:-1
      DEF ERM8
      DEF ERM7
      DEF ERM6
      DEF ERM5
      DEF ERM4
      DEF ERM3
      DEF ERM2
      DEF ERM1
* 
MS00  DEF ER0       ERROR 0 (AND ERROR TABLE BASE ADDRESS)
* 
      DEF ER1       ERRORS 1:9
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF ER6 
      DEF ER7 
      DEF UDN 
      DEF UDN 
* 
      DEF ER10      ERRORS 10:19
      DEF UDN 
      DEF ER12
      DEF ER13
      DEF ER14
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF ER18
      DEF ER19
* 
      DEF ER20      ERRORS 20:29
      DEF ER21
      DEF ER22
      DEF ER23
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
* 
      DEF UDN       ERRORS 30:39
      DEF UDN 
      DEF UDN 
      DEF ER33
      DEF ER34
      DEF ER35
      DEF ER36
      DEF ER37
      DEF ER38
      DEF ER39
* 
      DEF ER40      ERRORS 40:49
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF ER48
      DEF ER49
* 
      DEF ER50      ERRORS 50:59
      DEF ER51
      DEF UDN 
      DEF ER53
      DEF UDN 
      DEF ER55
      DEF ER56
      DEF ER57
      DEF UDN 
      DEF UDN 
* 
      DEF ER60      ERRORS 60:69
      DEF ER61
      DEF ER62
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      DEF UDN 
      SKP 
* 
*     ERROR TABLE -CODES ARE ENTERED IN ANY ORDER.
* 
UDN   DEC  9
      ASC  9,ERROR NOT DEFINED
* 
ER0   DEC  3
      ASC  3,BREAK
* 
ERM1  DEC  5
      ASC  5,DISC ERROR 
* 
ERM2  DEC 10
      ASC 10,DUPLICATE FILE NAME
* 
ERM3  DEC  9
      ASC  9,BACKSPACE ILLEGAL
* 
ERM4  DEC 36
      ASC 18,MORE THAN 32767 RECORDS IN A TYPE 2
      ASC 18,FILE OR IN USE OF A DOUBLE WORD CALL 
* 
ERM5  DEC 11
      ASC 11,RECORD LENGTH ILLEGAL
* 
ERM6  DEC  7
      ASC  7,FILE NOT FOUND 
* 
ERM7  DEC 11
      ASC 11,BAD FILE SECURITY CODE 
* 
ERM8  DEC 13
      ASC 13,FILE OPEN OR LOCK REJECTED 
* 
ERM9  DEC 24
      ASC 16,ATTEMPT TO USE APOSN OR FORCE TO 
      ASC  8, 1 A TYPE 0 FILE 
* 
ERM10 DEC 11
      ASC 11,NOT ENOUGH PARAMETERS
* 
ERM11 DEC  6
      ASC  6,DCB NOT OPEN 
* 
ERM12 DEC  8
      ASC  8,EOF OR SOF ERROR 
* 
ERM13 DEC  6
      ASC  6,DISC LOCKED
* 
ERM14 DEC  7
      ASC  7,DIRECTORY FULL 
* 
ERM15 DEC  6
      ASC  6,ILLEGAL NAME 
* 
ERM16 DEC 11
      ASC 11,ILLEGAL TYPE OR SIZE=0 
* 
ERM17 DEC 17
      ASC 17,ILLEGAL READ/WRITE ON TYPE 0 FILE
* 
ERM18 DEC 19
      ASC 19,ILLEGAL LU; LU NOT ASSIGNED TO SYSTEM
* 
ERM32 DEC 10
      ASC 10,CARTRIDGE NOT FOUND
* 
ERM33 DEC 14
      ASC 14,NOT ENOUGH ROOM ON CARTRIDGE 
* 
ERM36 DEC 10
      ASC 10,LOCK ERROR ON DEVICE 
* 
ERM37 DEC 24
      ASC 24,ILLEGAL OPERATION ON ACTIVE PROGRAM OR SWAP FILE 
* 
ERM38 DEC 14
      ASC 14,ILLEGAL SCRATCH FILE NUMBER
* 
ERM42 DEC  8
      ASC  8,SWAPPING ACTIVE
* 
ERM43 DEC 15
      ASC 15,SYSTEM DOES NOT ALLOW SWAPPING 
* 
ERM44 DEC 12
      ASC 12,WRONG FILE TYPE FOR SWAP 
* 
ERM45 DEC 10
      ASC 10,SWAP FILE TOO SMALL
* 
ERM46 DEC 12
      ASC 12,GREATER THAN 255 EXTENTS 
* 
ERM49 DEC 10
      ASC 10,COPYF VERIFY FAILED
* 
ERM50 DEC  7
      ASC  7,NO FILES FOUND 
* 
ERM99 DEC 19
      ASC 19,DIRECTORY MANAGER EXEC REQUEST ABORTED 
* 
EM100 DEC 13
      ASC 13,BOOT DISC NOT INITIALIZED
* 
EM101 DEC 16
      ASC 16,ILLEGAL PARAMETER IN D.RTR CALL
* 
EM102 DEC 14
      ASC 14,ILLEGAL D.RTR CALL SEQUENCE
* 
EM103 DEC 11
      ASC 11,DISC DIRECTORY CORRUPT 
* 
EM104 DEC 13
      ASC 13,REQUESTED EXTENT NOT FOUND 
* 
ER1   DEC 11
      ASC 11,DISC ERROR-LU REPORTED 
* 
ER6   DEC  7
      ASC  7,FMGR SUSPENDED 
* 
ER7   DEC  7
      ASC  7,CHECKSUM ERROR 
* 
ER10  DEC  6
      ASC  6,INPUT ERROR
* 
ER12  DEC 13
      ASC 13,DUPLICATE DISC LABEL OR LU 
* 
ER13  DEC  9
      ASC  9,TR STACK OVERFLOW
* 
ER14  DEC 15
      ASC 15,REQUIRED ID-SEGMENT NOT FOUND
* 
ER18  DEC 10
      ASC 10,PROGRAM NOT DORMANT
* 
ER19  DEC 17
      ASC 17,FILE NOT SET UP FOR CURRENT SYSTEM 
* 
ER20  DEC  9
      ASC  9,ILLEGAL TYPE 0 LU
* 
ER21  DEC 11
      ASC 11,ILLEGAL DISC SPECIFIED 
* 
ER22  DEC  8
      ASC  8,COPY TERMINATED
* 
ER23  DEC 11
      ASC 11,DUPLICATE PROGRAM NAME.
* 
ER33  DEC 15
      ASC 15,DISC HAS MORE THAN 1024 TRACKS 
* 
ER34  DEC 24
      ASC 24,ATTEMPT TO CHANGE TIME WHEN TIME LIST NOT EMPTY
* 
ER35  DEC 19
      ASC 19,WRONG INTERFACE TYPE FOR REASSIGNMENT
* 
ER36  DEC 17
      ASC 17,TIME VALUES NOT ENTERED WITH 'IT'
* 
ER37  DEC  6
      ASC  6,DEVICE BUSY
* 
ER38  DEC 23
      ASC 16,ATTEMPT TO REMOVE ACTIVE PROGRAM 
      ASC  7, OR SWAP FILE
* 
ER39  DEC  9
      ASC  9,CANNOT RP PROGRAM
* 
ER40  DEC 19
      ASC 19,ANOTHER PROGRAM ALREADY IN MEMORY AREA 
* 
ER48  DEC 12
      ASC 12,GLOBAL SET OUT OF RANGE
* 
ER49  DEC 12
      ASC 12,CAN'T RUN RP'ED PROGRAM
* 
ER50  DEC 11
      ASC 11,NOT ENOUGH PARAMETERS
* 
ER51  DEC 14
      ASC 14,ILLEGAL MASTER SECURITY CODE 
* 
ER53  DEC 12
      ASC 12,ILLEGAL LABEL OR ILABEL
* 
ER55  DEC  9
      ASC  9,MISSING PARAMETER
* 
ER56  DEC  7
      ASC  7,BAD PARAMETER
* 
ER57  DEC 13
      ASC 13,BAD TRACK NOT IN FILE AREA 
* 
ER60  DEC 26
      ASC 16,DO YOU REALLY WANT TO PURGE THIS 
      ASC 10, DISC? (YES OR NO).
* 
ER61  DEC 16
      ASC 16,DO A "DC" AND A "MC" ON THIS CR. 
* 
ER62  DEC 12
      ASC 12,CARTRIDGE DIRECTORY FULL 
* 
A     EQU 0 
B     EQU 1 
* 
END   EQU * 
* 
      END 
  