ASMB,R,L,C
*     NAME:   DSNAP 
*     SOURCE: 92070-18118 
*     RELOC:  92070-16118 
*     PGMR:   D.J.W.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  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 DSNAP,7  92070-1X118  REV.1941  800325
* 
* 
*  THIS ROUTINE FORMATS AND OUTPUTS THE CONTENTS OF THE SNAPSHOT
*  FILE TO THE LIST DEVICE. 
* 
*  THE DISPLAY IS DIVIDED INTO FOUR SECTIONS, THE BOUNDRY VALUES, 
*  SYSTEM ENTRY POINTS, THE LIBRARY FILE NAMRS, AND THE SYSTEM BASE 
*  PAGE VALUES. 
* 
*  CALLING SEQUENCE:  JSB DSNAP 
* 
*  ON RETURN:         P+1:  ERROR EXIT, MESSAGE OUTPUT
*                     P+2:  NO ERROR
* 
*  CHANGE 3/25/80 
*  BASE PAGE LINKS WERE BEING DISPLAYED OFF BY 1.  THAT IS THE
*  LAST SYSTEM BASE PAGE LINK WAS NEVER SEEN.  ALSO A SECOND
*  CALL TO DSNAP GAVE SOME GARBAGE VALUES IN THE FIRST LINE OF
*  BASE PAGE VALUES.  THIS BUFFER WAS NOT BEING ZEROED BEFORE 
*  THE FIRST FILL AND WRITE.
* 
* 
* 
      ENT DSNAP 
      EXT  .MVW,#SENT,#SLIB, BCOM, BGBP, BGFW 
      EXT CNUMD,CNUMO,DRKEY,FMPER,FWAVB,FWSYB 
      EXT I.ERR,IFBRK, LCOM,PL.ST,POSNT,READF 
      EXT   ROM, RTBP, RTFW, SDCB,SNAMR,SNPDF 
      EXT SPACE, SYBP 
* 
A     EQU 0 
B     EQU 1 
* 
* 
* 
DSNAP NOP 
      LDA SNAMR+3   HAS SNAPSHOT BEEN DEFINED ? 
      SSA 
      JMP DSNAI     YES, PROCEED WITH DISPLAY 
* 
      JSB SNPDF     NO, USE DEFAULT SNAP NAMR 
      JMP DSNAP,I   FMP ERROR RETURN
* 
DSNAI LDA PL.ST     ARE WE LISTING ?
      SZA 
      JMP DSNA0     YES, PROCEED
      ISZ DSNAP     NO, TAKE GOOD RETURN
      JMP DSNAP,I 
* 
DSNA0 JSB SPACE     OUTPUT LEADING BLANK LINE 
      LDA ASNAM     MOVE SNAP FILE NAME INTO HEADER 
      LDB ANAMS     ADDRESS IN MESSAGE BUFFER 
      JSB .MVW
      DEF P3        LENGTH OF NAME IN WORDS 
      NOP 
      LDA MESSH     GET ADDRESS OF HEADER MESSAGE 
      LDB P16       AND LENGTH IN CHARACTERS
      JSB DRKEY     OUPUT TO LIST DEVICE VIA DRKEY
* 
      JSB SPACE     SPACE UP ONE LINE ON LIST 
      JMP BNDRY     OUTPUT SYSTEM BOUNDRY VALUES
* 
ASBUF DEF *+1 
SBUF  BSS 11
MESSH DEF *+1 
HMES  ASC 8,SNAPSHOT
ANAMS DEF HMES+5
ASNAM DEF SNAMR+0 
P16   DEC 16
      HED SYSTEM BOUNDRY VALUES 
* 
* 
*  OUTPUT SYSTEM BOUNDRY VALUES 
* 
* 
* 
BNDRY JSB CNUMO     CONVERT TO ASCII OCTAL
      DEF *+3 
      DEF RTFW+0    FIRST WORD REAL TIME AREA 
      DEF RMES+5    TO LOCATION IN MESSAGE BUFFER 
* 
      JSB CNUMO     CONVER TO ASCII OCTAL 
      DEF *+3 
      DEF RTBP+0    FIRST WORD REAL TIME BASE PAGE
      DEF RMES+8    TO LOCATION IN MESSAGE BUFFER 
* 
      LDA MESSR     GET MESSAGE ADDRESS 
      LDB P22       AND LENGTH IN CHARACTERS
      JSB DRKEY     OUTPUT TO COMMAND/LIST DEVICE 
* 
      JSB CNUMO     CONTERT TO ASCII OCTAL
      DEF *+3 
      DEF BGFW+0    FIRST WORD BACKGROUND AREA
      DEF BMES+5    TO LOCATION IN MESSAGE BUFFER 
* 
      JSB CNUMO     CONVERT TO ASCII OCTAL
      DEF *+3 
      DEF BGBP+0    BACKGROUND BASE PAGE
      DEF BMES+8    TO LOCATION IN MESSAGE BUFFER 
* 
      LDA MESSB     GET MESSAGE ADDRESS 
      LDB P22       AND LENGTH IN CHARACTERS
      JSB DRKEY     OUTPUT TO COMMAND-LIST DEVICE 
* 
      LDA ROM       LAST WORD BACKGROUND + 1
      ADA N1        LAST WORD BACKGROUND
      STA TEMP1     SAVE IN A TEMPORARY FOR CNUMO 
      LDA SYBP      LAST WORD BACKGROUND BASE PAGE + 1
      ADA N1        LAST WORD BACKGROUND BASE PAGE
      STA TEMP2     SAVE IN A TEMPORARY 
      JSB CNUMO     CONVERT TO ASCII OCTAL
      DEF *+3 
      DEF TEMP1     LAST WORD BACKGROUND AREA 
      DEF TMES+5    ADDRESS IN MESSAGE BUFFER 
      JSB CNUMO     CONVERT TO ASCII OCTAL
      DEF *+3 
      DEF TEMP2     LAST WORD BACKGROUND BASE PAGE
      DEF TMES+8    ADDRESS IN MESSAGE BUFFER 
* 
      LDA MESST     GET MESSAGE ADDRESS 
      LDB P22       AND LENGTH IN CHARACTERS
      JSB DRKEY     OUTPUT TO COMMAND-LIST DEVICE 
* 
      LDA BCOM      ADDRESS BLANK SYSTEM COMMON 
      ADA LCOM      AND LENGTH
      STA TEMP3     SET IN A TEMPORARY
      JSB CNUMO     CONVERT TO ASCII OCTAL
      DEF *+3 
      DEF BCOM+0    ADDRESS BLANK SYSTEM COMMON 
      DEF CMES+5    ADDRESS IN MESSAGE BUFFER 
      LDA MESSC     GET MESSAGE ADDRESS 
      LDB P16       AND LENGTH IN CHARACTERS
      JSB DRKEY     OUTPUT TO COMMAND-LIST DEVICE 
* 
      JSB CNUMO     CONVERT TO ASCII OCTAL
      DEF *+3 
      DEF TEMP3     UPPER BOUND ON BLANK COMMON 
      DEF XMES+5    ADDRESS IN MESSAGE BUFFER 
      LDA MESSX     GET MESSAGE ADDRES
      LDB P16       AND LENGTH IN CHARACTERS
      JSB DRKEY     OUTPUT TO COMMAND-LIST DEVICE 
      JSB SPACE     SPACE ON BLANK LINE 
      JMP DSNA1 
* 
* 
MESSR DEF *+1 
RMES  ASC 11,REAL-TIME
MESSB DEF *+1 
BMES  ASC 11,BACKGROUND 
TEMP1 NOP 
TEMP2 NOP 
MESST DEF *+1 
TMES  ASC 11, 
MESSC DEF *+1 
CMES  ASC 8,COMMON
TEMP3 NOP 
MESSX DEF *+1 
XMES  ASC 8,
P14   DEC 14
P22   DEC 22
N1    DEC -1
H1    DEF *+1 
      ASC 7,SYSTEM ENTRIES
      SKP 
* 
* 
*  OUTPUT SYSTEM ENTRY, TYPE, AND VALUE 
* 
P2    DEC 2 
P11   DEC 11
* 
DSNA1 LDA H1        HEADER FOR SYSTEM ENTRIES PHASE 
      LDB P14       CHARACTER LENGTH OF HEADER MESSAGE
      JSB DRKEY     OUTPUT TO LIST DEVICE 
* 
      JSB SPACE     SPACE UP ONE LINE 
* 
      LDA #SENT     GET NUMBER SYSTEM RESIDENT ENTRIES
      CMA,INA       NEGATE AND SAVE AS A COUNT VARIABLE 
      STA COUNT 
* 
      LDB N2
      STB LNCNT     SET LINE COUNT, TWO SYMBOLS PER LINE
* 
      JSB POSNT     FIRST POSITION TO SYSTEM ENTRIES
      DEF *+5 
      DEF SDCB
      DEF I.ERR+0 
      DEF P2
      DEF P2
      SSA 
      JMP SNPER 
* 
NXSYM JSB READF     READ AN ENTRY FROM SNAPSHOT FILE
      DEF *+5 
      DEF SDCB      SNAPSHOT DCB
      DEF I.ERR+0    ERROR PARAMETER
      DEF SBUF      SNAP BUFFER 
      DEF P11       READ 11 WORDS MAX (VARIABLE LENGTH NAMES) 
* 
      SSA           FMP ERROR ? 
      JMP SNPER     YES 
* 
      LDA ASBF1     ADDRESS OF SYMBOL NAME
      LDB MESSE     ADDRESS IN MESSAGE BUFFER 
      JSB .MVW      MOVE NAME INTO BUFFER 
      DEF SBUF      LENGTH TO BE OUTPUT 
      NOP 
* 
      LDB SBUF      GET SYMBOL LENGTH IN WORDS
      ADB ASBF1     ADDRESS OF TYPE WORD
      LDA B,I       TYPE WORD RANGE 0 - 4 
      ADA ATYPE     ADDRESS OF TYPE MNEMONICS 
      LDA A,I       RETRIEVE CORRESPONDING MNEUMONIC
      STA EMES+7    SET IN MESSAGE BUFFER 
      INB           POINTER TO SYMBOL VALUE 
      STB TEMP1     SAVE FOR CNUMO
      JSB CNUMO 
      DEF *+3 
      DEF TEMP1,I 
      DEF EMES+9
* 
      LDB SBUF      MUST WE BLANK ANY CHARACTERS ?
      CPB LCHAR    SYMBOL LENGTH EQUAL TO LAST ENTRY ?
      JMP EXIT      EQUAL, GO OUTPUT THE MESSAGE
* 
      LDA LCHAR    WAS THE LAST SYMBOL LONGER ? 
      CMA,INA 
      ADA B 
      SSA,RSS 
      JMP EXIT       NO, SHORTER, NO BLANKING REQUIRED
      STA TEMP2     LONGER, SAVE NUMBER TO BE BLANKED 
      LDB SBUF      GET NEW SYMBOL LENGTH 
      ADB MESSE     ADDRESS AT WHICH TO BLANK 
      LDA BLANK     GET BLANK CHARS 
BLAK  STA B,I       SET BLANKS IN MESSAGE BUFFER
      INB           INCREMENT POINTER 
      ISZ TEMP2     HAVE WE BLANKED ALL ? 
      JMP BLAK      NO, LOOP BACK 
* 
EXIT  LDA MESSE     GET MESSAGE ADDRESS 
      JSB OUTLN     OUPUT MESSAGE TO COMMAND LIST DEVICE
* 
      ISZ COUNT     HAVE WE LISTED ALL ENTRIES ?
      JMP NXSYM     NOPE, LOOP BACK 
      JSB FINLN     FINISH OFF THE LINE 
      JMP DSNA2 
* 
* 
SNPER JSB FMPER 
      DEF SNAMR+0 
      JMP DSNAP,I 
* 
RHALF OCT 377 
MESSE DEF *+1 
EMES  ASC 18, 
ASBF1 DEF SBUF+1
ATYPE DEF *+1       TYPES OF SNAP ENTRIES 
      ASC 1,MR      MEMORY RESIDENT 
      ASC 1,UN      UNDEFINED 
      ASC 1,CO      COMMON
      ASC 1,AB      ABSOLUTE
      ASC 1,RP      REPLACEMENT 
COUNT NOP 
LCHAR NOP 
N2    DEC -2
H2    DEF *+1 
      ASC 8,SYSTEM LIBRARIES
      SKP 
* 
P18   DEC 18
P72   DEC 72
* 
OUTLN NOP           FORMAT A LINE, TWO ENTRIES PER LINE 
      STA ABUF      SAVE MESSAGE ADDRESS
      LDA LNCNT     GET CURRENT LINE COUNT
      MPY P18       CALCULATE ADDRESS IN OUTPUT BUFFER
      ADA ADDRS 
      STA B         SET AS DESTINATION ADDRESS
      LDA ABUF      GET SOURCE ADDRESS
      JSB .MVW      MOVE INTO OUTPUT BUFFER 
      DEF P18       LENGTH 18 WORDS 
      NOP 
* 
      ISZ LNCNT     DO WE OUTPUT THE LINE HERE ?
      JMP OUTLN,I   NO, RETURN TO CALLER
* 
      LDA MESS      GET THE MESSAGE ADDRESS 
      LDB P72       AND LINE LENGTH 
      JSB DRKEY     OUTPUT TO COMMAND-LIST DEVICE 
      LDA N2        SET NEW LINE COUNT
      STA LNCNT 
      JSB CKBRK     BREAK FLAG SET ?
      JMP OUTLN,I   NO, CONTINUE WITH OUTPUT
* 
* 
CKBRK NOP 
      JSB IFBRK     CHECK FOR BREAK FLAG
      DEF *+1 
      SSA,RSS 
      JMP CKBRK,I   NO BREAK, RETURN TO CALLER
      ISZ DSNAP     RETURN NO ERROR 
      JMP DSNAP,I   BREAK FLAG SET, RETURN TO CALLER OF DSNAP 
* 
FINLN NOP           FINISH OFF THE LINE 
      ISZ LNCNT     HAVE WE LEFT ANYTHING IN THE OUTPUT 
      JMP FINLN,I   NO, RETURN TO CALLER
      LDA MESS      YES, FINISH IT OFF
      LDB  P36      GET LENGTH IN CHARS 
      JSB DRKEY 
      JMP FINLN,I 
* 
P36   DEC 36
ABUF  NOP           TEMPORARY ADDRESS OF MESSAGE
MESS  DEF *+1       OUTPUT BUFFER 
      ASC 20, 
      ASC 16, 
ADDRS DEF *         END OF BUFFER ADDRESS 
      SKP 
* 
* 
*  OUTPUT SYSTEM LIBRARY FILE NAMRS 
* 
DSNA2 LDA #SLIB     GET NUMBER OF SYSTEM LIBRARY NAMRS
      AND RHALF 
      SZA,RSS       ARE THERE ANY ??? 
      JMP DSNA8     NO, SKIP THIS SECTION 
* 
      CMA,INA       YES, NEGATE AND SAVE AS COUNT VARIABLE
      STA COUNT 
* 
      LDB N2
      STB LNCNT 
* 
      JSB SPACE     SPACE UP A BLANK LINE 
      LDA H2        OUTPUT HEADER MESSAGE 
      LDB P16 
      JSB DRKEY     TO COMMAND LIST DEVICE
      JSB SPACE 
* 
* 
* 
DSNA3 JSB READF     READ ENTRY FROM SNAPSHOT
      DEF *+5 
      DEF SDCB      SNAPSHOT DCB
      DEF I.ERR+0    ERROR PARAMETER
      DEF SBUF      SNAP BUFFER 
      DEF P11       MAX 11 WORDS TO READ
* 
      SSA           FMP ERROR ? 
      JMP SNPER     YES, REPORT MESSAGE AND RETURN
* 
      LDA ASBUF     ADDRESS OF LIBRARY NAME 
      LDB MESSL     DESTINATION ADDRESS IN THE BUFFER 
      JSB .MVW      MOVE LIBRARY NAME INTO MESSAGE BUFFER 
      DEF P3        LENGTH THREE WORDS
      NOP 
* 
      LDA SBUF+3    GET TYPE WORD FOR NAMR PARMS
      ARS,ARS       ROTATE OUT NAME TYPE
      SLA,RSS       NULL OR UNDEFINED ? 
      JMP DSNA4     YES, SKIP OUTPUT OF SECURITY CODE 
      AND P3
      CPA P3        IS IT ASCII ? 
      JMP DSNA5     YES, MOVE INTO OUTPUT MESSAGE 
* 
      JSB CNUMD     INTEGER PARAMETER, CONVERT TO ASCII 
      DEF *+3 
      DEF SBUF+4
      DEF LMES+6    DESTINATION IN MESSAGE BUFFER 
      JMP DSNA5     GO OUTPUT THE MESSAGE 
* 
DSNA4 LDA BLANK     BLANK OUT THE TWO PREVIOUS WORDS
      STA LMES+4
      STA LMES+5
      LDA SBUF+4    GET THE ASCII CODE
      STA LMES+6    SET IN MESSAGE BUFFER 
* 
DSNA5 LDA SBUF+3    LOOK AT TYPE WORD FOR NEXT PARAMETER
      RAR,RAR 
      RAR,RAR 
      SLA,RSS       NULL OR UNDEFINED ? 
      JMP DSNA7     NULL
      AND P3
      CPA P3        IS IT ASCII ? 
      JMP DSNA6     YES 
* 
      JSB CNUMD     NO, INTEGER, CONVERT TO ASCII 
      DEF *+3 
      DEF SBUF+5    CARTRIDGE REFERENCE NUMBER
      DEF LMES+8    ADDRESS IN MESSAGE BUFFER 
      JMP DSNA7     GO OUTPUT THE MESSAGE 
* 
DSNA6 LDA BLANK     BLANK PREVIOUS TWO WORDS
      STA LMES+8
      STA LMES+9
      LDA SBUF+5    GET CARTRIDGE VALUE 
      STA LMES+10   SET IN MESSAGE BUFFER 
* 
DSNA7 LDA MESSL     ADDRESS OF MESSAGE
      JSB OUTLN 
      ISZ COUNT 
      JMP DSNA3 
      JSB FINLN 
      JMP DSNA8 
* 
MESSL DEF *+1 
LMES  ASC 18, 
P3    DEC 3 
      SKP 
* 
*  OUTPUT SYSTEM BASE PAGE AREA 
* 
H3    DEF *+1 
      ASC 8,LOCATION   VALUE
M7770 OCT 177770
* 
DSNA8 JSB SPACE 
      LDA H3        GET HEADER MESSAGE ADDRESS
      LDB P16       AND LENGTH IN CHARACTERS
      JSB DRKEY     OUTPUT TO COMMAND-LIST DEVICE 
      JSB SPACE 
* 
* 
* 
      LDB FWSYB     FIRST WORD SYSTEM BASE PAGE 
      STB CUREN     SAVE AS CURRENT VALUE POINTER 
* 
      LDA SYBP      FIRST WORD SYSTEM BASE PAGE AREA
      AND M7770     ELIMINATE LAST THREE BITS 
      STA TEMP1     AND SAVE AS STARTING LOCATION 
      XOR SYBP      DETERMINE INITIAL OFFSET INTO FIRST LINE
      ADA N8
      STA LNCNT     SAVE AS LINE COUNT
      LDA SYBP      GET SYSTEM BASE PAGE WORD 
      ARS,ARS 
      ARS           SHIFT OUT BOTTOM THREE BITS 
      AND P7        ISOLATE NEW BOTTOM THREE BITS 
      ADA N8        NEGATE
      STA BLCNT     AND SET AS INITIAL BLOCK COUNT
* 
      LDA AINIT     SOURCE
      LDB DEST      DESTINATION 
      JSB .MVW      CLEAR OUT THE BUFFER
      DEF P33 
      NOP 
* 
NXLIN JSB CNUMO     CONVERT TO OCTAL ASCII
      DEF *+3 
      DEF TEMP1     BASE PAGE ADDRESS 
      DEF BPMES     ADDRESS IN MESSAGE BUFFER 
* 
NXVAL JSB GETBP     GET A BASE PAGE VALUE 
      JMP PREOL     PROCESS END OF THE LIST 
      LDA LNCNT     LINE COUNT
      MPY P4        DETERMINE ADDRESS IN MESSAGE BUFFER 
      ADA AEOL      ADDRESS OF END OF THE LINE
      STA TEMP2     SAVE FOR CNUMO
      JSB CNUMO     CONVERT  VALUE TO ASCII 
      DEF *+3 
      DEF VALUE     VALUE RETURNED FROM GETBP 
      DEF TEMP2,I   ADDRESS IN MESSAGE BUFFER 
* 
      ISZ LNCNT     END OF THE LINE ? 
      JMP NXVAL     NO, GET NEXT VALUE
* 
      LDA MESBP     MESSAGE ADDRESS 
      LDB P74       LENGTH IN CHARACTERS
      JSB DRKEY     OUTPUT TO COMMAND-LIST DEVICE 
      JSB CKBRK     CHECK FOR BREAK FLAG
      LDA TEMP1 
      ADA O10 
      STA TEMP1 
      LDA N8        SET NEW LINE COUNT TO -8
      STA LNCNT 
* 
      ISZ BLCNT     END OF THE BLOCK ?
      JMP NXLIN     NO, GET NEXT LINE 
      JSB SPACE     YES, SPACE UP A LINE
      LDA N8        SET NEW BLOCK COUNT 
      STA BLCNT 
      JMP NXLIN     GET NEXT BLOCK
* 
* 
PREOL LDA LNCNT     DO END OF LINE CALCULATIONS 
      CPA N8        IS THIS AN EMPTY LINE ? 
      JMP OUT       YES, SO DON'T PRINT ANYTHING
      MPY P8        NO, DETERMINE THE LAST GOOD VALUE 
      STA B 
      ADB P74       THAT IS, THE LAST WORD TO BE OUTPUT 
      LDA MESBP 
      JSB DRKEY 
* 
OUT   JSB SPACE 
* 
      ISZ DSNAP      SET GOOD RETURN
      JMP DSNAP,I    RETURN TO CALLER 
* 
* 
P4    DEC 4 
* 
GETBP NOP 
      LDB FWAVB     LAST WORD SYSTEM BASE PAGE
      CPB CUREN     EQUAL TO LAST WORD ?
      JMP GETBP,I   YES, END OF THE LINE
      LDA CUREN,I   NO, GET BASE PAGE VALUE 
      STA VALUE 
      ISZ CUREN     INCREMENT CURRENT VALUE POINTER 
      ISZ GETBP     RETURN P+2
      JMP GETBP,I 
* 
* 
* 
MESBP DEF *+1 
BPMES ASC  4,      :
VALUS ASC 16, 
      ASC 17, 
AEOL  DEF *-1 
P7    DEC 7 
P8    DEC 8 
P74   DEC 74
CUREN NOP           SYSTEM BASE PAGE POINTER
N8    DEC -8
O10   OCT 10
LNCNT NOP           LINE COUNT
BLCNT NOP           BLOCK COUNT 
BLANK ASC 1,
VALUE NOP 
DEST  DEF VALUS 
P33   DEC 33
AINIT DEF *+1 
      ASC 20, 
      ASC 13, 
      END 
                                        