.
.         PRINT ELEMENT COMMAND PROCESS
.
.
.         (C)  Copyright 1972-1978  John Walker
.
.         This software is in the public domain
.
          AXR$
          DEFUNCT$
          FANG
.
cyclesupp equ       r5                  suppress cycle recognition if nonzero
ctslno    equ       r6                  nonzero if this line has CTS number
ctslin    equ       R7                  CTS line number for this line
NCP       EQU       R8                  LATEST CYCLE
SHORT     EQU       R9                  SHORT FORMAT OUTPUT FLAG
IDC       EQU       R10                 DELETED IMAGES BEFORE THIS IMAGE
OCP       EQU       R11                 OLDEST CYCLE PRESENT
DELIMG    EQU       R12                 DELETED IMAGE FLAG
SDFMODE   EQU       R13                 LISTING SDF FILE MODE
CHARSET   EQU       R14                 CURRENT ELEMENT CODE SET
.
PRINTP*   quarterword                   TURN ON QUARTER WORD MODE
          P         PRINTER             INVOKE LOCK ON THE PRINTER
          R$DITA    .                   ENTER ASCII EDITING MODE
          SZ        SDFMODE             CLEAR PRINTING SDF MODE
          SZ        SHORT               SET LONG LISTING DESIRED
          LX        X9,CDBPC,X8         LOAD LINK TO PARAMETER BUFFER
          LA        A0,ELFDT,X9         LOAD FDT ADDRESS FOR ASSOCIATED FILE
          LA        A0,FDTYPE,A0        LOAD TYPE OF THIS FILE
          JTAPE     A0,TASDFS           IF TAPE, ALWAYS SET UP FOR SDF PRINT
          LA,U      A7                  CLEAR ACCEPT DELETED ELEMENTS FLAG
          LMJ       X11,FILESCAN        BUILD ELEMENT DRIVER TABLES
          J         SDFPRINT            BSP ERROR.  SEE IF IT'S AN SDF FILE
          LMJ       X11,ELTREL          ELEMENT LIST OK.  RELEASE ELEMENT TABLE
          JZ        A8,PRINTMT          PRINT 'FILE EMPTY' IF FILE IS NULL
          LA        A8,CDOPTS,X8        LOAD OPTIONS FOR COMMAND
          TEP       A8,(OPTION('A'))    ALPHABETISE ELEMENTS ?
          LMJ       X11,FILESORT        YES.  SORT THE ELEMENT TABLE
SDFRTN    TNZ       DEMAND              DEMAND RUN ?
          TEP,U     A8,OPTION('S')      SHORT OUTPUT FORMAT DESIRED ?
          SNONZ     SHORT               YES.  ASSUME SHORT OUTPUT FORMAT
          TEP,U     A8,OPTION('L')      LONG OUTPUT DESIRED BY USER ?
          SZ        SHORT               YES.  CLEAR SHORT OUTPUT FLAG
          BGETL     SDFL                ALLOCATE SDF I/O FCT
          LA        A1,ELFDT,X9         GET FDT ADDRESS
          LA,U      A2,R$               LOAD READ FUNCTION
          LMJ       X11,SDFFCT          BUILD SDF INPUT FCT
          SA        A0,X9               SAVE SDF FCT ADDRESS
          TNZ       SDFMODE             SDF FILE ?
          J         PRINTNE             NO.  GET FIRST ELEMENT
          BGETL     EIFL                ALLOCATE A DUMMY ELEMENT BUFFER
          LX        X5,CDBPC,X8         GET POINTER TO ELEMENT CLASS PARAMETER
          LX        X5,ELFDT,X5         GET POINTER TO FDT FOR THE FILE
          DL        A4,FDQUAL,X5        LOAD QUALIFIER FOR FILE
          DS        A4,EIEN,A0          STORE AS ELEMENT NAME
          DL        A4,FDFN,X5          LOAD FILE NAME FROM FDT
          DS        A4,EIVER,A0         STORE AS ELEMENT VERSION
          SZ        EITXTA,A0           SET STARTING ADDRESS TO ZERO
          LX,U      X7,,A0              LOAD ADDRESS OF BUFFER
          J         SDFPST              START PROCESSING THE FILE
.
.         LOOP BEGINS HERE TO PROCESS EACH ELEMENT
.
PRINTNE   REMOVE    CDELTQ,X8.          REMOVE NEXT ITEM FROM ELEMENT QUEUE
          TNE,U     A1,CDELTQ,X8        END OF ELEMENT LIST ?
          J         PRINTD              YES.  ALL DONE WITH IT
          ANA,U     A1,EIFQ             POINT BACK TO ELEMENT ITEM
          LX,U      X7,,A1              X7 IS RUNNING ELEMENT ITEM POINTER
          LA        A0,EITYP,X7         LOAD ELEMENT TYPE
          TG,U      A0,TY$REL           NON-SYMBOLIC TYPE ?
          J         PRINTSK             YES.  SKIP THIS ELEMENT
          SZ        IDC                 SET NO DELETED IMAGES
          LA        A0,EICYCW,X7        LOAD CYCLE INFORMATION WORD
          SSL       A0,12               RIGHT JUSTIFY LATEST CYCLE
          AND,U     A0,07777            GET LATEST CYCLE IN A1
          SA        A1,NCP              STORE NEWEST CYCLE PRESENT
          AA,U      A0,1                INCREMENT LATEST CYCLE BY ONE
          ANT       A0,EICYCW,X7        COMPUTE OLDEST CYCLE
          LSSL      A0,24               GET RID OF OTHER JUNK
          SSL       A0,24               RIGHT JUSTIFY OLDEST CYCLE
          SA        A0,OCP              SAVE OLDEST CYCLE PRESENT
SDFPST    .
          TOP       A8,(OPTION('H'))    CHANGE HEADINGS ?
          TEP,U     A8,OPTION('S')      IS THE 'S' OPTION ON ?
          J         DEMLBL              YES.  EDIT SHORT ELEMENT HEADING
          TEP,U     A8,OPTION('L')      LONG LISTING DESIRED ?
          J         BHEAD               RIGHT.  EDIT SUPER HEADING
          JDEM      DEMLBL              EDIT SHORT HEADING FOR DEMAND
.
.         BATCH ELEMENT HEADING
.
BHEAD     A$FD1     ('H,,1,')           EDIT HEADING PREFIX
          LA,U      A3,25               LOAD MAXIMUM CHARACTERS IN NAME/VER
          DL        A0,EIEN,X7          LOAD ELEMENT NAME
          TZ        NCP                 CYCLE ZERO ?
          TZ        SDFMODE             PRINTING SDF FILE ?
          J         BHNCK               YES.  SKIP CYCLE EDITING
          AA,U      A3,4                INCREMENT LENGTH FOR CYCLE NUMBER
BHNCK     AND,U     A1,077              AND OFF LAST CHARACTER
          TE,U      A2,' '              IS IT A SPACE ?
          J         BHVCK               NO.  CHECK VERSION
          ANA,U     A3,1                DECREMENT CHARACTERS REQUIRED
          DSL       A0,6                SHIFT OFF NEXT CHARACTER
          JNZ       A1,BHNCK            KEEP ON CHECKING NAME
BHVCK     DL        A0,EIVER,X7         LOAD VERSION FOR ELEMENT
          TE        A0,R15              ALL SPACES ?
          J         VCOUNT              NO.  GO COUNT CHARACTERS IN IT
          ANA,U     A3,13               YES.  DECREMENT LENGTH AND SLASH
VCOUNTR   ANU,U     A3,96-66            COMPUTE CHARACTER OVERFLOW ON RIGHT
          LA,U      A0,66+5             LOAD PAGE CENTRE COLUMN NUMBER
          ANA,U     A0,,A3              COMPUTE START COLUMN TO CENTRE HEADING
          TN        A4                  WILL HEADING OVERFLOW ON RIGHT ?
          ANA       A0,A4               YES.  SLIDE LEFT TO ACCOMODATE
          A$COL     .                   TAB TO START COLUMN
          DL        A4,EIEN,X7          LOAD NAME OF ELEMENT
          LMJ       X6,EDSN             EDIT NAME, DOUBLE SPACED
          DL        A4,EIVER,X7         LOAD ELEMENT VERSION
          TNE       A4,R15              IS IT BLANK ?
          J         NVTE                YES.  SACRIFICE THE VERSION
          LA,U      A0,'/ '             LOAD SLASH FOR NAME/VER EDITING
          TZ        SDFMODE             SDF FILE MODE ?
          LA,U      A0,'* '             YES.  EDIT START BETWEEN QUAL AND FILE
          A$FD3     .                   EDIT NAME SEPARATOR
          LMJ       X6,EDSN             EDIT VERSION
NVTE      TNZ       SDFMODE             PRINTING SDF FILE ?
          TNZ       NCP                 NO.  IS ELEMENT CYCLE ZERO ?
          J         NVTP                YES.  DON'T EDIT CYCLE
          A$FD3     ('( ')              EDIT LEFT PARENTHESIS
          A$DECV    NCP                 EDIT CYCLE NUMBER (NO SPACES)
          A$FD3     (' )')              EDIT RIGHT PARENTHESIS
NVTP      A$FD4     (' .L,0 . ')        EDIT EJECT COMMAND INTO IMAGE
          LA,H2     A0,,X1              LOAD IMAGE ADDRESS
          LXI,U     A0,33               LOAD IMAGE LENGTH
          APRTCN$   .                   GENERATE PRINT CONTROL IMAGE
          A$DITX    .                   TERMINATE EDIT MODE
          A$DIT     .                   RE-ENTER EDIT MODE, CLEARING LINE
          J         DOLIST              GO EDIT LISTING
VCOUNT    AND,U     A1,077              GET LOW-ORDER CHARACTER
          TE,U      A2,' '              TRAILING SPACE ?
          J         VCOUNTR             NO.  NAME / VERSION LENGTH IS RIGHT
          ANA,U     A3,1                DECREMENT LENGTH OF NAME AND VERSION
          DSL       A0,6                SHIFT DOWN NEXT CHARACTER
          J         VCOUNT              LOOK AT NEXT CHARACTER
.
.         EDIT DEMAND ELEMENT NAME LINE
.
DEMLBL    A$FD2     EIEN,X7             EDIT ELEMENT NAME
          LA        A0,EIVER,X7         LOAD VERSION
          TNE       A0,R15              ALL SPACES ?
          J         DEMLPR              YES.  PRINT JUST NAME
          LA,U      A0,'/'              GET A SLASH
          TZ        SDFMODE             SDF FILE BEING LISTED ?
          LA,U      A0,'*'              YES.  GET STAR
          A$FCHR    .                   EDIT SEPARATOR CHARACTER
          A$FD2     EIVER,X7            EDIT VERSION
DEMLPR    TNZ       SDFMODE             SDF MODE LISTING ?
          TNZ       NCP                 NO.  CYCLE ZERO ELEMENT ?
          J         DEMLPT              YES.  SKIP CYCLE EDITING
          A$FCHR    '('                 EDIT LEFT PARENTHESIS
          A$DECV    NCP                 EDIT CYCLE NUMBER OF LATEST CYCLE
          A$FCHR    ')'                 EDIT RIGHT PARENTHESIS
DEMLPT    R$PRTA    1                   PRINT THE SHORT HEADING
DOLIST    LA,U      A15                 CLEAR LINE NUMBER
          sz        ctslno              clear CTS line number present
          LA        A0,EITXTA,X7        LOAD ELEMENT TEXT ADDRESS
          SA        A0,SDFADR,X9        SET UP STARTING ADDRESS OF ELEMENT
          LA,U      A0,,X9              LOAD SDF PACKET ADDRESS
          sdfio     .                   OPEN SDF INPUT
          J         SDFERR              SDF I/O ERROR.  TERMINATE ELEMENT
          BRELR     X7                  RELEASE ELEMENT SELECT ITEM
.
.         READ AND INTERPRET LABEL
.
          SZ        CHARSET             ASSUME FIELDATA IF NO LABEL IMAGE
          la        a0,sdfmode          load SDF file mode flag
          sa        a0,cyclesupp        set to suppress cycles if SDF input
          TZ        SDFMODE             SDF FILE BEING LISTED ?
          J         NEXTIMAGE           YES.  NOTHING SPECIAL ABOUT LABEL
          LA,U      A0,,X9              GET FCT ADDRESS FOR SDFI
          sdfi      .                   READ LABEL IMAGE FROM ELEMENT
          J         SDFERR              I/O ERROR.  TERMINATE ELEMENT
          j         txtend              missing label is same as end of file
          LA,S1     A1,SDFICW,X9        LOAD CONTROL IMAGE TYPE
          TE,U      A1,050              LABEL IMAGE TYPE ?
          j         nextim1             no label.  roar right into text code
          la,s3     a1,sdficw,x9        load element type designator
          te,u      a1,'S'              is this a SIR created element ?
          snonz     cyclesupp           no.  don't look at cycle information
          LR,S6     CHARSET,SDFICW,X9   LOAD CHARACTER SET OF TEXT
.
.         IMAGE PROCESSING LOOP
.
NEXTIMAGE LA,U      A0,,X9              LOAD FCT ADDRESS
          sdfi      .                   READ NEXT IMAGE
          J         SDFERR              I/O ERROR.  EDIT MESSAGE
          J         TXTEND              END-OF-TEXT.  QUIT
nextim2   TP        SDFICW,X9           IS IMAGE A CONTROL WORD ?
          J         CNTLWD              YES.  INTERPRET CONTROL IMAGE
          tz        cyclesupp           is cycle information meaningful ?
          J         NODCYC              YES.  IGNORE DELETE FLAG FOR IMAGES
          TZ,S4     SDFICW,X9           IS IMAGE DELETED ?
          J         BACKCYCLE           YES.  CHECK 'B' OPTION ABOUT LISTING
NODCYC    AA,U      A15,1               INCREMENT LINE NUMBER
          TNZ       SHORT               SHORT OUTPUT DESIRED ?
          J         LONGLN              NO.  EDIT LONG FORMAT LINE NUMBER
          tnz       ctslno              did this line have CTS number ?
          j         nodcln              no.  edit normal sequential numbers
          a$decf    5,ctslin            yes.  edit the CTS number
          j         cidlne              skip to copy the text
.
nextim1   snonz     cyclesupp           missing label.  mark cycles meaningless
          j         nextim2             go examine as if it were text
.
nodcln    A$DECF    5,A15               EDIT THE LINE NUMBER
cidlne    A$SKIP    1                   SKIP AFTER LINE NUMBER
          TOP       A8,(OPTION('I'))    PRINT CYCLE INFORMATION ?
          J         IMAGEP              NO.  GO EDIT IMAGE INTO LINE
          LMJ       X5,CYCLED           EDIT CYCLE INFORMATION
CIPRD     A$SKIP    1                   SKIP ONE SPACE AFTER IT
          J         IMAGEP              GO PRINT THE IMAGE
.
LONGLN    A$SKIP    10                  SKIP TEN SPACES
          tnz       ctslno              does this line have CTS number ?
          j         longnc              no.  skip CTS number code
          a$decf    6,ctslin            yes.  edit the CTS line number
          a$fchr    ':'                 edit colon after it to flag
          sz        ctslno              indicate CTS number bound to line
          j         ciprt               go print the line
.
longnc    A$DECF    6,A15               EDIT LINE NUMBER
          A$FCHR    '.'                 EDIT PERIOD
CIPRT     A$COL     TXCOL               TAB TO TEXT COLUMN
IMAGEP    LA,S2     A1,SDFICW,X9        LOAD IMAGE LENGTH IN WORDS
          LA,S1     A0,SDFICW,X9        LOAD CONTROL IMAGE TYPE
          TE,U      A0,041              UP-4144 REV 3 SECTION 24.2.3
          TNE,U     A0,050              UP-4144 REV 3 SECTION 24.2.3
          J         FDIMG               EDIT LABEL ALWAYS IN FIELDATA
          TNZ       CHARSET             ASCII IMAGE ?
          J         FDIMG               NO.  EDIT FIELDATA IMAGE
          LSSL      A1,2                CHARACTER LENGTH IS WORDS * 4
          TG,U      A1,132-25           TOO LONG ?
          LA,U      A1,132-25           YES.  TRUNCATE IT
          LA,U      A0,SDFIMAGE,X9      LOAD IMAGE START ADDRESS
          A$QCOP    .                   COPY IMAGE TO BUFFER
          J         IMPR                GO PRINT IMAGE
.
FDIMG     MSI,U     A1,6                COMPUTE CHARACTERS IN IMAGE
          TG,U      A1,132-25           TOO LONG FOR LINE ?
          LA,U      A1,132-25           YES.  TRUNCATE IT
          LA,U      A0,SDFIMAGE,X9      LOAD IMAGE START ADDRESS
          A$FCOP    .                   COPY FIELDATA AND TRANSLATE
.
IMPR      TN        SDFICW,X9           CONTROL IMAGE ?
          TZ        cyclesupp           PRINTING AN ELEMENT ?
          J         IMPRS               NO.  PRINT THIS LINE
          TNZ       SHORT               SHORT OUTPUT BEING EDITED ?
          TEP       A8,(OPTION('I'))    CYCLE INFORMATION DESIRED ?
          J         IMPRS               NO.  DON'T EDIT IT AT ALL
          A$COL     128                 TAB TO RIGHT OF PAGE
          LMJ       X5,CYCLED           EDIT CYCLE INFORMATION
IMPRS     R$PRTA    1                   PRINT THE IMAGE
          J         NEXTIMAGE           PROCESS NEXT SOURCE IMAGE
.
.         END OF ELEMENT.  CLOSE AND CHECK FOR NEXT ELEMENT
.
TXTEND    LA,U      A0,,X9              LOAD FCT ADDRESS
          sdfic     .                   CLOSE SDF INPUT
          TNZ       SDFMODE             SDF FILE BEING LISTED ?
          J         PRINTNE             PROCESS NEXT ELEMENT ON LIST
.
.         TERMINATION PROCESSING FOR ALL ELEMENTS COMPLETED
.
PRINTD    BRELA     .                   RELEASE ALL BUFFERS STILL ALLOCATED
          TOP       A8,(OPTION('H'))    NO HEADING FOR ELEMENTS ?
          TEP,U     A8,OPTION('S')      SHORT LISTING BEING GENERATED ?
          J         NOHDOF              YES.  DON'T TURN OFF HEADING OR EJECT
          TEP,U     A8,OPTION('L')      LONG LISTING BEING GENERATED ?
          J         HDGOFF              YES.  TURN OFF HEADING
          JDEM      NOHDOF              OTHERWISE, TURN OFF ONLY FOR BATCH
HDGOFF    A$FD4     ('H,N .L,0')        TURN OFF HEADING AND EJECT
          LX,H2     A0,,X1              GET ADDRESS OF IMAGE
          LXI,U     A0,33               LOAD IMAGE LENGTH
          APRTCN$   .                   SUBMIT THE CONTROL IMAGE
NOHDOF    R$DITXA   .                   TERMINATE EDITING MODE
          V         PRINTER             RELEASE LOCK ON THE PRINTER
          COMPLETE  .                   COMPLETE THE COMMAND
.
.         PROCESS DELETED IMAGE
.
BACKCYCLE LA,S4     A0,SDFICW,X9        LOAD CYCLE THIS IMAGE WAS DELETED
          TE        A0,NCP              WAS IMAGE DELETED IN LAST UPDATE ?
          J         BCIDC               NO.  DON'T INCREMENT DELETE COUNT
          LA        A0,IDC              LOAD INTERVENING DELETED COUNT
          AA,U      A0,1                INCREMENT INTERVENING DELETED IMAGES
          SA        A0,IDC              SALT AWAY THE COUNT UNTIL WE EDIT IT
BCIDC     TOP       A8,(OPTION('B'))    SHOULD DELETED IMAGES BE PRINTED ?
          J         NEXTIMAGE           NO.  IGNORE THIS IMAGE
          A$FD1     ('D(')              EDIT 'D(' TO FLAG IT
          A$DECV    SDFICW,X9,S4        EDIT CYCLE IMAGE DELETED IN
          A$FCHR    ')'                 EDIT CLOSE PARENTHESIS
          TNZ       SHORT               ABBREVIATED LISTING BEING GENERATED ?
          J         CIPRT               PRINT IMAGE WITH NO LINE NUMBER
          LA,U      A0,6                YES.  TAB TO TEXT COLUMN
          TEP       A8,(OPTION('I'))    ...UNLESS CYCLE INFORMATION IS ON...
          LA,U      A0,13               ...AND TEXT IS MOVED TO THE RIGHT
          A$COL     .                   TAB TO START OF TEXT FOR NORMAL LISTING
          J         IMAGEP              GO PRINT THE IMAGE
.
.         PROCESS CONTROL IMAGE IN TEXT
.
CNTLWD    LA,S1     A0,SDFICW,X9        LOAD IMAGE TYPE
          TE,U      A0,050              LABEL IMAGE IN DATA FILE ?
          TNE,U     A0,042              CHANGE CHARACTER SET ?
          LR,S6     CHARSET,SDFICW,X9   YES.  LOAD NEW CHARACTER SET
          te,u      a0,053              is this a CTS line number ?
          j         cntlnct             no.  skip CTS code
          snonz     ctslno              yes.  flag CTS line number on line
          lr,h2     ctslin,sdficw,x9    load the CTS line number
cntlnct   TOP,U     A8,OPTION('P')      PRINT CONTROL IMAGES ?
          J         NEXTIMAGE           GO PROCESS NEXT IMAGE IN FILE
          A$FCHR    '('                 EDIT LEFT PARENTHESIS
          A$OCTF    12,SDFICW,X9        EDIT IMAGE CONTROL WORD
          A$FCHR    ')'                 EDIT CLOSING PARENTHESIS
          TZ        SHORT               SHORT FORMAT OUTPUT ?
          J         CIPRD               YES.  EDIT SHORT LINE FORMAT
          J         CIPRT               GO PRINT THE IMAGE
.
.         IGNORE NON-SYMBOLIC ELEMENT
.
PRINTSK   BRELR     X7                  RELEASE ELEMENT ITEM BUFFER
          J         PRINTNE             PROCESS NEXT ELEMENT
.
.         INPUT FILE SPECIFIED WAS TAPE.  PRINT SDF FORMAT IF NO ELTS SPECIFIED
.
TASDFS    TNZ       ELALL,X9            WAS AN ELEMENT CLASS SPECIFIED ?
          J         ELTFT               YES.  ERROR, CANNOT PRINT ELEMENTS FROM
.                                       TAPE.
          LA        A8,CDOPTS,X8        LOAD COMMAND OPTIONS
          SNONZ     SDFMODE             NO.  SET SDF PRINT MODE
          J         SDFRTN              INITIALISE FOR SDF INPUT
.
.         SET UP TO PROCESS SDF FILE
.
SDFPRINT  TNZ       ELALL,X9            IS SPECIFICATION FILE. OR FILE.ELT/VER ?
          J         NOTPGF              FILE.ELT...  SAY NOT A PROGRAM FILE
          LA        A8,CDOPTS,X8        LOAD OPTIONS FOR LATER PERUSAL
          LA        A1,A14              LOAD FTI ADDRESS
          LA,S1     A0,6,A1             LOAD CONTROL WORD TYPE FOR FIRST IMAGE
          TE,U      A0,050              IS FIRST IMAGE A LABEL ?
          J         NOTSDF              NO.  NOT AN SDF FILE
          SNONZ     SDFMODE             SET SDF PRINT MODE
          J         SDFRTN              RETURN TO SET UP PACKET
.
.         I/O ERROR FROM SDFI.  EDIT MESSAGE AND TERMINATE ELEMENT
.
SDFERR    A$QMSG    IOERM               EDIT ERROR MESSAGE FOR I/O ERROR
PRTMLN    R$PRTA    2                   PRINT THE MESSAGE
          LA,U      A0,,X9              LOAD FCT ADDRESS
          sdfic     .                   CLOSE INPUT ON ELEMENT
          ZAP       .                   ROADBLOCK FILE FOR FURTHER OPERATIONS
          J         PRINTNE             GO PRINT NEXT ELEMENT
.
.         PRINT MESSAGE IF NO ELEMENTS WERE SELECTED
.
PRINTMT   R$DITXA   .                   TERMINATE ASCII EDITOR
.         ** UNTIL ASCII STATUS ELEMENT IS AVAILABLE **
          R$DIT     .                   FIRE UP FIELDATA EDITOR
          LA,U      A0,NESM             LOAD NO ELEMENTS SELECTED TEXT
          TNE       A9,A10              DELETE COUNT EQUAL ELEMENT COUNT ?
          LA,U      A0,AEDM             YES.  THEN ALL ELEMENTS WERE DELETED...
          TNZ       A10                 ...UNLESS...
          LA,U      A0,FEM              ...THE FILE WAS EMPTY
FPROUT    E$MSG     .                   COPY THE MESSAGE TEXT
          LA        A0,ELFDT,X9         LOAD FDT ADDRESS FOR PARAMETER
          LMJ       X11,FIST            APPEND FILE AND STATEMENT
          BRELA     .                   RELEASE ALL THE ACCUMULATED BUFFERS
          V         PRINTER             RELEASE LOCK ON PRINTER
          COMPLETE  .                   TERMINATE THIS COMMAND
.
.         FILE SPECIFIED IS NOT A PROGRAM FILE
.
NOTPGF    LA,U      A10,PGFMSG          LOAD MESSAGE FOR NOT A PROGRAM FILE
NOTCMN    R$DITXA   .                   TERMINATE ASCII EDITING MODE
          R$DIT     .                   ENTER ANTIQUATED EDITING MODE
          LA        A0,A10              LOAD MESSAGE ADDRESS
          J         FPROUT              EDIT MESSAGE AND APPEND FILE NAME
.
.         ONLY FILE NAME WAS SPECIFIED, BUT FILE WAS NEITHER ELT OR SDF FORMAT
.
NOTSDF    LA,U      A10,SDFMSG          LOAD MESSAGE TEXT FOR SDF FILE ERROR
          J         NOTCMN              GO PRINT THE MESSAGE
.
.         ELEMENT CLASS SPECIFIED AND INPUT IS A TAPE FILE
.
ELTFT     LA,U      A10,ELTMS           LOAD MESSAGE FOR ELT PRINT FROM TAPE
          J         NOTCMN              GO GIVE THE ERROR MESSAGE
.
.         EDIT DOUBLE SPACED NAME
.
EDSN      LR,U      R4,11               LOAD COLUMN COUNT FOR NAME
NHL       LDSC      A4,6                SHIFT NEXT CHARACTER TO S6 OF A5
          AND,U     A5,077              AND OFF NEXT CHARACTER
          TNE,U     A6,' '              IS IT A SPACE ?
          J         0,X6                RETURN IF IT'S A SPACE
          A$FCHR    A6,,W               NO.  EDIT IT INTO HEADING
          A$SKIP    1                   DOUBLE SPACE HEADING
          JGD       R4,NHL              LOOP FOR ALL CHARACTERS
          J         0,X6                RETURN
.
.
.         EDIT CYCLE INFORMATION:
.
.                   IF IMAGE IS NEW:    *NEW
.                   IF DELETED IMAGES:  **-N
.                   IF NON-OLDEST CYCLE: NNN
.
.         LMJ       X5,CYCLED
.
cycled    tz        cyclesupp           is cycle information meaningful ?
          j         imprsk              no.  skip printing it
          LA,S6     A0,SDFICW,X9        LOAD CYCLE THIS IMAGE ADDED
          JZ        A0,IMPRCD           CYCLE ZERO IMAGE ?
          TE        A0,NCP              IS THIS IMAGE MEMBER OF NEWEST CYCLE ?
          J         IMPRCD              NO.  CHECK IF DELETED IMAGES ARE AROUND
          A$FD1     ('*NEW')            NEW.  EDIT FLAG FOR THE LINE
          J         0,X5                RETURN
IMPRCD    TNZ       IDC                 ANY DELETED IMAGES ?
          J         IMPRCC              NO.  CHECK CYCLE NUMBER
          LA,U      A0,'**'             LOAD TWO STARS
          LA        A1,IDC              LOAD DELETED IMAGES COUNT
          TG,U      A1,10               MORE THAN 9 DELETED IMAGES ?
          LA,U      A0,'*'              YES.  ONLY ONE STAR
          TG,U      A1,100              MORE THAN 99 DELETED IMAGES ?
          LA,U      A0                  YES.  NO STARS
          TG,U      A1,1000             MORE THAN 999 DELETED IMAGES ?
          LA,U      A1,999              YES.  LIMIT DELETE EDITING TO 999
          SA        A1,IDC              STORE POSSIBLY LIMITED DELETE COUNT
          A$FD1     .                   EDIT STARS BEFORE NUMBER DELETED
          LNA       A0,IDC              LOAD NEGATIVE OF DELETE COUNT
          A$DECV    .                   EDIT NUMBER DELETED
          SZ        IDC                 CLEAR DELETE COUNT
          J         0,X5                RETURN
IMPRCC    LA,S6     A0,SDFICW,X9        LOAD CYCLE ADDED
          JZ        A0,IMPRSK           SKIP IF CYCLE ZERO
          TNE       A0,OCP              OLDEST CYCLE PRESENT ?
          J         IMPRSK              SKIP IF CYCLE ZERO
          A$DECF    4                   EDIT THE CYCLE NUMBER IMAGE CAME IN
          J         0,X5                RETURN
IMPRSK    A$SKIP    4                   SKIP FOUR POSITIONS
          J         0,X5                RETURN
.
          PURE      DATA
.
          ascii
IOERM     'SDF I/O error.  Element terminated.&'
MISLM     'Missing or malformed label image:  &  ''&''.&'
          fieldata
NESM      'NO ELEMENTS SELECTED FROM !'
AEDM      'ALL ELEMENTS DELETED IN !'
FEM       'EMPTY !'
PGFMSG    'FILE NAMED IS NOT A PROGRAM FILE: !'
SDFMSG    'NEITHER PROGRAM FILE OR SDF FORMAT: !'
ELTMS     'CANNOT LIST ELEMENTS OFF TAPE !'
          END