*DECK CMMERR
          IDENT  CMM.ERR
  
          TITLE  COMMON MEMORY MANAGER, V1.0, CMM.ERR - ERROR INTERFACE 
*CALL CMMCOM
          COMMENT  "SUBSYS"ERROR INTERFACE ROUTINE. 
          B1=1
 CMM.ERR  SPACE  4
**        CMM.ERR - ISSUE ERROR MESSAGES. 
* 
*              THIS ROUTINE ISSUES ONE OR TWO MESSAGES.  CHARACTERS FROM
*         THE INSERTION PARAMETERS REPLACE THE ' CHARACTERS IN THE
*         MESSAGES, FROM LEFT TO RIGHT. 
* 
*              NOTE THAT THIS ROUTINE MAY BE REPLACED BY ANOTHER
*         SIMILARLY NAMED ROUTINE WITH THE SAME CALLING SEQUENCE. 
*         ALSO, IT WILL ONLY BE LOADED IF THE SAFE VERSION IS USED. 
* 
*         ENTRY  X1 = 1ST MESSAGE NUMBER. 
*                X2 = INSERTIONS FOR 1ST MESSAGE.  ZERO IF NONE.
*                X3 = 2ND MESSAGE NUMBER.  ZERO IF NO 2ND MESSAGE.
*                X4 = INSERTIONS FOR 2ND MESSAGE.  ZERO IF NONE.
*                (B1) = 1.
* 
*         EXIT   (B1) = 1.
* 
*         USES   X - ALL. 
*                B - 4, 5, 6, 7.
*                A - 1, 2, 6. 
* 
*                NOTE THAT THERE ARE NO RESTRICTIONS ON USE OF REGISTERS
*                BY THIS ROUTINE, SINCE THE CALLING ROUTINE WILL
*                ABORT IMMEDIATELY AFTER THE RETURN.
  
  
          ENTRY  CMM.ERR
 CMM.ERR  EQ     *+400000B   ENTRY / EXIT 
          SB4    B0          FLAG 1ST MESSAGE 
 ERR1     BX7    X2          (X7) = INSERTION CHARS 
          SA1    X1+ERRORLST-2  (X1) = MESSAGE FWA
          SA2    X1          FIRST WORD OF MESSAGE
          SB5    6           SHIFT CONTROL
          MX0    -6 
          ZR     X7,ERR5     IF NO INSERTION THIS MESSAGE 
 ERR2     LX5    X2,B5       EXAMINE NEXT CHAR FOR '
          BX6    -X0*X5 
          SX6    X6-1R' 
          NZ     X6,ERR4     IF NOT TO BE REPLACED
 ERR3     LX7    6           FIND NEXT NZ INSERTION CHAR
          BX6    -X0*X7 
          ZR     X6,ERR3
          BX5    X0*X5       INSERT CHAR
          BX5    X5+X6
          SB6    60          SHIFT COUNT FOR RETURN TO POSITION 
          SB6    B6-B5
          LX2    X5,B6
 ERR4     SB5    B5+6        LOOP THRU WORD 
          SB7    B5-66
          NZ     B7,ERR2
          BX6    X2          STORE MODIFIED WORD OF MESSAGE 
          SA6    A2 
          MX6    -12
          BX6    -X6*X2 
          ZR     X6,ERR5     IF AT END OF MESSAGE 
          SB5    6           GET NEXT WORD OF MESSAGE 
          SA2    A2+B1
          EQ     ERR2 
  
 ERR5     MESSAGE  X1,,RCL   ISSUE MESSAGE
          NZ     B4,CMM.ERR  IF 2ND MESSAGE ISSUED
          ZR     X3,CMM.ERR  IF NO 2ND MESSAGE
          SB4    B1          SET FOR 2ND MESSAGE
          BX1    X3 
          BX2    X4 
          EQ     ERR1 
          TITLE  ERROR MESSAGES 
 ERRORLST BSS    0
          LOC    2
 CMEUSER  VFD    42/0,18/MSGUSER
 CMECTP3  VFD    42/0,18/MSGCTP3
 CMEBFWA  VFD    42/0,18/MSGBFWA
 CMESIZE  VFD    42/0,18/MSGSIZE
 CMEPMR   VFD    42/0,18/MSGPMR 
 CMEUAR   VFD    42/0,18/MSGUAR 
 CMEFPVS  VFD    42/0,18/MSGFPVS
 CMEHHA   VFD    42/0,18/MSGHHA 
 CMEZFWA  VFD    42/0,18/MSGZFWA
 CMENGT1  VFD    42/0,18/MSGNGT1
 CMEFST   VFD    42/0,18/MSGFST 
 CMENUM   VFD    42/0,18/MSGNUM 
 CMEAUX   VFD    42/0,18/MSGAUX 
 CMEGID   VFD    42/0,18/MSGGID 
 CMEGT    VFD    42/0,18/MSGGT
 CMESC    VFD    42/0,18/MSGSC
 CMETRIG  VFD    42/0,18/MSGTRIG
 CMETC    VFD    42/0,18/MSGTC
 CMEUID   VFD    42/0,18/MSGUID 
 CMEMFL   VFD    42/0,18/MSGMFL 
 CMEAGLF  VFD    42/0,18/MSGAGLF
 CMEFTP3  VFD    42/0,18/MSGFTP3
 CMEDGHH  VFD    42/0,18/MSGDGHH
 CMEHHLD  VFD    42/0,18/MSGHHLD
 CMEHFXB  VFD    42/0,18/MSGHFXB
 CMENEED  VFD    42/0,18/MSGNEED
 CMENDID  VFD    42/0,18/MSGNGID
 CMENEID  VFD    42/0,18/MSGNEID
 CMENUID  VFD    42/0,18/MSGNUID
 CMEN54   VFD    42/0,18/MSGN54 
 CMEOVHH  VFD    42/0,18/MSGOVHH
 CMETY1M  VFD    42/0,18/MSGTY1M
 CMESCV   VFD    42/0,18/MSGSCV 
 CMEPTR   VFD    42/0,18/MSGPTR 
 CMERA65  VFD    42/0,18/MSGRA65
 CMEDAO   VFD    42/0,18/MSGDAO 
 CMEMXBG  VFD    42/0,18/MSGMXBG
 CMEMXSM  VFD    42/0,18/MSGMXSM
 CMEFFER  VFD    42/0,18/MSGFFER
          LOC    *O 
 MSGUSER  DATA   C* CMM ERROR - FROM CMM.'''* 
 MSGCTP3  DATA   C* BAD CHG TO BLOCK WITH TYPE 3 PTR WDS* 
 MSGBFWA  DATA   C* BLOCK FWA ERROR*
 MSGSIZE  DATA   C* BLOCK SIZE ERROR ON ALLOCATE* 
 MSGPMR   DATA   C* CALLED FROM POINTER-MAINTENANCE ROUTINE*
 MSGUAR   DATA   C* CALLED FROM UNLOAD-ACTION SUBROUTINE* 
 MSGFPVS  DATA   C* FIXED-POS, LWA-END GROWTH BLOCK PRESENT*
 MSGHHA   DATA   C* FWA OR LWA GT HHA*
 MSGZFWA  DATA   C* FWA = 0 WITH PENDING UNL-ACTION SUBRS*
 MSGNGT1  DATA   C* GROUP-TYPE 1 BLOCKS ILLEGALLY ACTIVE* 
 MSGFST   DATA   C* ILLEGAL 1ST CALL TO CMM*
 MSGNUM   DATA   C* ILLEGAL GROW-SHRINK AMOUNT* 
 MSGAUX   DATA   C* IMPROPERLY SPECIFIED AUX1 OR AUX2*
 MSGGID   DATA   C* IMPROPERLY SPECIFIED GROUP-ID*
 MSGGT    DATA   C* IMPROPERLY SPECIFIED GROUP-TYPE*
 MSGSC    DATA   C* IMPROPERLY SPECIFIED SIZE-CODE* 
 MSGTRIG  DATA   C* IMPROPERLY SPECIFIED TRIGGER VALUES*
 MSGTC    DATA   C* IMPROPERLY SPECIFIED TYPE-CODE* 
 MSGUID   DATA   C* IMPROPERLY SPECIFIED UNIQUE-ID* 
 MSGMFL   DATA   C* MAXFL LT HHA* 
 MSGAGLF  DATA   C* MAY NOT ADD LWA GROWTH TO FIXED BLOCK*
 MSGFTP3  DATA   C* MAY NOT FREE BLOCK WITH TYPE 3 PTR WDS* 
 MSGDGHH  DATA   C* MAY NOT INCREASE DABA GT HHA* 
 MSGHHLD  DATA   C* MAY NOT REDUCE HHA LT DABA* 
 MSGHFXB  DATA   C* MAY NOT UP HHA IF FIXED BLOCKS PRESENT* 
 MSGNEED  DATA   C* NEED TO LOAD - CMM.'''* 
 MSGNGID  DATA   C* NON-ACTIVE GROUP-ID SPECIFIED*
 MSGNEID  DATA   C* NON-EXISTENT ENTRY-ID*
 MSGNUID  DATA   C* NON-EXISTENT UNLOAD-ID* 
 MSGN54   DATA   C* NON-54 TABLE OVERLAY LOADED*
 MSGOVHH  DATA   C* OVERLAY LOAD INCREASED HHA* 
 MSGTY1M  DATA   C* POINTER WORD IN BLOCK WITH MOVABLE FWA* 
 MSGSCV   DATA   C* SIZE-CODE VIOLATION*
 MSGPTR   DATA   C* BLOCK POINTERS MESSED UP - SEE (B2)*
 MSGRA65  DATA   C* RA+65B INCORRECT - ICM CALLED FROM ''''''*
 MSGDAO   DATA   C* SYS ERR - DYNAMIC AREA OVERWRITTEN* 
 MSGMXBG  DATA   C* MAY NOT SET MAXFL GT ORIGINAL VALUE*
 MSGMXSM  DATA   C* MAY NOT SET MAXFL LT FL*
 MSGFFER  DATA   C* INCORRECT VALUE FOR FLINC OR FLF* 
  
          END 
