ASMB,R,Q,C
*     NAME:   ERLOG 
*     SOURCE: 92071-18147 
*     RELOC:  92071-16147 
*     PGMR:   HLC 
* 
* 
*  **************************************************************** 
*  * (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 ERLOG,0  92071-16147  REV.2041  800730
      ENT $SYMG,$ERMG,$STMG,$SMSG 
      ENT $$ERL,$.ERL,$SY#,$XS3 
* 
      EXT $XEQ,$A,$B,$SUSP,$CON,.MWF
      EXT $RQRT,$XSIO,$IOFL,$LDRS,$LDAB 
      EXT $TREM,$STAT,$XQT,CNUMD
      EXT CNUMO,$PNAM,.CBX,.MVW 
      EXT $SEGS,$TIM1,$ZLST 
* 
A     EQU 0 
B     EQU 1 
      SUP 
* 
*     ABORT WITH ERROR MESSAGE
* 
$ERMG NOP 
      STA A.
      LDA $XQT
      SZA,RSS 
      JMP HALT      ABORTIVE ERROR -- NO USER PROGRAM EXECUTING 
      LDA $STAT,I 
      RAL 
      CLE,SSA       IF THE NO-ABORT BIT IS CLEAR
      CPB =A          OR B IS BLANK 
      JMP ABORT          ABORT HIM
* 
      LDA A.
      DST $A,I
      CCA 
      ADA $RQRT     NO-ABORT, RETURN P+1
      STA $SUSP,I 
      JMP $ERMG,I 
* 
ABORT RAR 
      IOR =B400     SET 'OF' BIT
      STA $STAT,I 
      STB B.
* 
      LDA $SEGS,I 
      AND =B377 
      STA SUSP      CURRENT SEGMENT NO. 
      JSB CNUMD     CONVERT TO ASCII
      DEF *+3 
      DEF SUSP
      DEF SEG#
* 
      JSB CNUMO     CONVERT POINT OF SUSPENSION TO ASCII
      DEF *+3 
      DEF $SUSP,I 
      DEF SUSP
      LDA $CON,I
      AND =B377 
      STA ERMG      SAVE TERMINAL LU
      LDB $XQT
      JSB $PNAM     MOVE NAME TO BUFFER 
      DEF ERMG+2
      JSB $SYMG     PRINT 'PROGA ABORTED SC05 37756'
      DEF ERMG
      LDB $XQT
      JSB $TREM     REMOVE FROM TIME LIST 
* 
      DLD A.
      DST $TIM1,I   SAVE ERROR CODE TO PASS TO FATHER 
* 
      LDB $XQT
      CPB $LDRS 
      JMP LDAB      CURRENTLY BEING LOADED OR SWAPPED 
      LDA $STAT,I 
      AND =B77      STATUS
      CPA =B2 
      RSS           I/O SUSPENDED 
      JSB $ZLST     MOVE TO ABORT LIST
FLUSH LDA $XQT
      JSB $IOFL     FLUSH PENDING I/O REQUESTS
      JMP $ERMG,I 
* 
* 
LDAB  JSB $LDAB     ABORT THE TRANSFER
      JMP FLUSH 
* 
* 
ERMG  DEC 1         LU
      DEC -30       LENGTH
      ASC 7,XXXXX ABORTED 
A.    ASC 1,XX      TWO CHARACTERS
B.    ASC 1,00      TWO DIGITS
SUSP  BSS 3 
SEG#  BSS 3 
* 
HALT  LDA A.
      HLT 3         HALT WITH ERROR CODE IN A AND B 
      JMP HALT      NO RECOVERY 
* 
* 
      HED  BUFFERED SYSTEM MESSAGE OUTPUT 
* 
$SYMG NOP 
      LDA $SYMG,I 
      ISZ $SYMG 
      LDB $SY#     IF BUFFER
      CPB BFCNT      IS FILLED, 
      JMP $SYMG,I    REJECT EXIT. 
* 
      LDB SYC     
      JSB .MVW      COPY MESSAGE TO CIRCULAR BUFFER 
      DEF SIZE
      NOP 
      LDA SYC 
      CPB SBL      IF LAST BUFFER HAS BEEN USED,
      LDB SBF       WRAP AROUND TO FIRST BUFFER.
      STB SYC       
* 
      LDB $SY#     IF NO BUFFER CURRENTLY BEING OUTPUT, 
      ISZ $SY#
      SZB,RSS 
      JSB SYSCL        INITIATE THIS BUFFER OUTPUT. 
      CLA,CLE       MESSAGE ACCEPTED
      JMP $SYMG,I 
* 
* 
$SMSG NOP 
      LDA $SMSG,I 
      ISZ $SMSG 
      LDB $SY#     IF BUFFER
      CPB BFCNT      IS FILLED, 
      JMP $SMSG,I    REJECT EXIT. 
* 
      LDB SIZE
      JSB .CBX
      LDB SYC 
      JSB .MWF
      LDA SYC 
      CPB SBL      IF LAST BUFFER HAS BEEN USED,
      LDB SBF        WRAP AROUND TO FIRST BUFFER. 
      STB SYC       
* 
      LDB $SY#     IF NO BUFFER IS BEING OUTPUT,
      ISZ $SY#
      SZB,RSS 
      JSB SYSCL     INITIATE THIS BUFFER OUTPUT.
      CLA,CLE       MESSAGE ACCEPTED
      JMP $SMSG,I 
* 
* 
* CALL <$XSIO> TO INITIATE OUTPUT 
* 
SYSCL NOP 
      LDB A,I 
      STB LU        SAVE LU NUMBER
      INA 
      LDB A,I       GET THE MESSAGE LENGTH
      STB LNG       SET IN THE CALL 
      INA           STEP TO BUFFER ADDRESS
      STA BUFF      SET IN THE CALL 
      JSB $XSIO 
      DEF LU
      JMP SYSCL,I 
* 
* COMPLETION ROUTINE FROM I/O CALL
* 
SYS8  CCA          SUBTRACT 1 FROM
      ADA $SY#      ENTRY COUNT FOR 
      STA $SY#      MESSAGE JUST OUTPUT.
      SZA,RSS      IF NO MORE IN BUFFER,
      JMP $XEQ      EXIT. 
* 
      LDA BUFF     SET
      ADA BFSIZ       NEXT ENTRY
      CPA SBL       ADDRESS 
* 
$STMG LDA SBF       PRINT STARTING MESSAGE
      JSB SYSCL    INITIATE OUTPUT
      JMP $XEQ      -EXIT.
* 
* 
* 
*     ONLY 'MSGSZ' SHOULD BE CHANGED TO INCREASE THE BUFFER SIZE. 
* 
MSGSZ EQU 17        SIZE OF EACH MESSAGE
* 
*     TO INCREASE THE NUMBER OF BUFFERS, 'BFCNT' SHOULD BE CHANGED, 
*     AND ADDITIONAL 'BSS MSGSZ' LINES SHOULD BE ADDED BEFORE 'SBL'.
* 
* 
* 
$SY#  DEC 1         6-WORD TABLE, DO NOT REARRANGE
SYC   DEF SBUF1     POINTER TO NEXT AVAILABLE BUFFER
SBF   DEF SBUF0     POINTER TO FIRST BUFFER 
BFCNT DEC 10        NUMBER OF BUFFERS 
SIZE  ABS MSGSZ     SIZE OF EACH MESSAGE
BFSIZ ABS MSGSZ-2   SIZE OF TEXT PORTION
* 
*     I/O PARAMETER BUFFER
* 
$XS3  EQU * 
LU    DEC 1 
      DEF SYS8      - COMPLETION ROUTINE ADDRESS
      NOP           LINKAGE 
      DEC 2         ASCII WRITE - 
BUFF  NOP           MESSAGE ADDRESS 
LNG   NOP           MESSAGE LENGTH
      NOP           NO 'Z' BUFFER 
      NOP           NO 'Z' BUFFER 
      DEC 0         PRIORITY ZERO 
      DEC 0         SYSTEM PARTITION
      NOP           RETURNED STATUS 
      NOP           RETURNED TRANSMISSION LOG 
* 
* 
* 
SBUF0 DEC 1 
      DEC -30 
      OCT 6412      CARRIAGE RETURN, LINE FEED
      ASC 13,*RTE-L SYSTEM READY*   
      OCT 3412      BELL, LINE FEED 
* 
      ORG SBUF0+MSGSZ 
SBUF1 BSS MSGSZ 
SBUF2 BSS MSGSZ 
* 
SBUF3 BSS MSGSZ 
* 
SBUF4 BSS MSGSZ 
* 
SBUF5 BSS MSGSZ 
* 
SBUF6 BSS MSGSZ 
* 
SBUF7 BSS MSGSZ 
* 
SBUF8 BSS MSGSZ 
* 
SBUF9 BSS MSGSZ 
* 
SBL   DEF * 
* 
$$ERL EQU *         STANDARD MODULE 
$.ERL DEC 0         STANDARD MODULE 
      END 
                                                                                                                                        