.
.         ELEMENT MODES COMMAND PROCESS
.
.         THIS COMMAND PROCESS SERVICES THOSE COMMANDS
.         WHICH SET THE MODES OF ELEMENT TABLE ENTRIES.
.         CURRENTLY:  TYPE, CYCLE
.
.
.         (C)  Copyright 1972-1978  John Walker
.
.         This software is in the public domain
.
          AXR$
          DEFUNCT$
          FANG
.
          PURE      CODE
.
TYPESET*  LA,U      A11,TYPESET         LOAD ENTRY IDENTIFICATION
          J         START               PROCESS THE COMMAND
.
CYCLE*    LA,U      A11,CYCLE           SAVE COMMAND IDENTITY
.
START     R$DIT     .                   FIRE UP THE EDITOR
          LMJ       X6,GELT             SET UP TO READ ELEMENT TABLE
          J         BSPERR              BSP ERROR INITIALISING
          LX        X9,CDBPC,X8         LINK TO FIRST PARAMETER (ELT)
          LX        X9,PBLINK,X9        LINK TO SECOND PARAMETER (FILE)
          LX        X9,PBLINK,X9        LINK TO MODE SPECIFICATION
          TE,U      A11,CYCLE           IS IT A 'CYCLE' COMMAND ?
          J         SCNST               NO.  DON'T HAVE TO CHECK IT
          LA        A0,PBVAL,X9         LOAD SPECIFIED CYCLE RETENTION
          TNZ,U     0,A0                IS IT ZERO ?
          LA,U      A0,1                YES.  CHANGE TO ONE
          SA        A0,PBVAL,X9         REPLACE VALUE IN PARAMETER PACKET
          TLE,U     A0,64               IS IT WITHIN RANGE ?
          J         SCNST               YES.  BUY IT
          E$MSG     CYCME               EDIT MESSAGE
          E$DECV    PBVAL,X9            EDIT ERRONEOUS SPECIFICATION
          E$MSG     CYCM1               GET REST OF MESSAGE TEXT
          LX        X5,CDIMG,X8         LOAD IMAGE BUFFER ADDRESS
          LMJ       X6,ESNV             EDIT THE STATEMENT NUMBER
          R$PRT     1                   PRINT THE MESSAGE
          LA,U      A0,63               LOAD UPPER LIMIT ON RETENTION
          SA        A0,PBVAL,X9         STORE INTO THE PARAMETER BUFFER
.
SCNST     LA,U      A10                 CLEAR SEQUENCE NUMBER
          LA,U      A9                  CLEAR ELEMENTS CHANGED COUNT
.
EMSCAN    AA,U      A10,1               INCREMENT SEQUENCE NUMBER
          LA        A0,A14              GET FTI ADDRESS
          LA        A1,A10              LOAD TARGET SEQUENCE NUMBER
          etnl      .                   look up element table item
          J         SCANE               PROBABLY END OF TABLE
          TP        EIFLG,A0            IS ELEMENT DELETED ?
          J         EMSCAN              YES.  IGNORE IT
          LX,U      X6,,A0              NO.  SAVE ELEMENT ITEM ADDRESS
          LX        X5,A12              LOAD SELECTION CRITERIA
          LMJ       X11,SELECT          SEE IF ELEMENT IS CHOSEN
          J         EMSCAN              NOT CHOSEN.  GET NEXT ELEMENT
.
.         WE HAVE SELECTED AN ELEMENT.  CHANGE THE ENTRY
.         ACCORDING TO THE COMMAND, AND REWRITE IT.
.
          TE,U      A11,CYCLE           IS IT 'CYCLE' ?
          J         CHKTYP              NO.  SEE IF IT'S 'TYPE'
          LA        A0,EITYP,X6         LOAD THE ELEMENT TYPE
          tg,u      a0,ty$rel           is it symbolic or a PROC ?
          J         EMSCAN              NO.  DON'T CYCLE IT
          LA        A0,PBVAL,X9         LOAD DESIRED CYCLE MAX
          SA        A0,EICLIM,X6        MODIFY ENTRY
          J         REPLELT             GO AND REWRITE THE ENTRY
.
CHKTYP    TE,U      A11,TYPESET         IS IT CHANGE TYPE COMMAND ?
          IERR      .                   NO.  THIS IS LAST TYPE NOW
          LA        A0,EITYP,X6         LOAD ELEMENT TYPE
          tne,u     a0,ty$omn           is the element omnibus ?
          j         omntyp              yes.  go test for changing subtype
          TG,U      A0,TY$REL           NON-SYMBOLIC ?
          J         EMSCAN              YES.  DON'T ALLOW TYPE CHANGE
          LA        A0,PBVAL,X9         LOAD DESIRED TYPE
          TLE,U     A0,TY$REL           GREATER THAN SYMBOLIC TYPES ?
          TLE,U     A0,TY$SYM+1         (CHECK FOR SUBTYPE)
          J         SYMDES              YES.  SET TYPE
.
.         DESIRED TYPE IS PROC.  CYCLE ELEMENT TO ONE
.
          LA,U      A0,1                LOAD CYCLE MAX FOR PROC
          SA        A0,EICLIM,X6        SET CYCLES TO KEEP FOR A PROC
          LA        A0,PBVAL,X9         LOAD THE DESIRED TYPE
          SA        A0,EITYP,X6         PUT TYPE IN ENTRY
          J         REPLELT             REWRITE ELEMENT ITEM
.
.         DESIRED TYPE IS SYMBOLIC
.
SYMDES    LA        A0,EITYP,X6         LOAD CURRENT TYPE
          TE,U      A0,TY$SYM           IS IT CURRENTLY SYMBOLIC ?
          J         PRKSET              NO.  CHANGE FROM PROC TO SYMBOLIC
PRKSR     LA,U      A0,TY$SYM           LOAD SYMBOLIC MAIN TYPE
          SA        A0,EITYP,X6         PUT IN ITEM
          LA,U      A0                  LOAD ZERO PROCESSOR CODE
          TZ,S4     PBVAL,X9            IS IT A SUBTYPE ?
setstyp   LA,S6     A0,PBVAL,X9         YES.  LOAD PROCESSOR CODE
          SA        A0,EIPCOD,X6        SET PROCESSOR CODE IN ITEM
          J         REPLELT             REWRITE ELEMENT ITEM
.
.         CHANGE PROC TO SYMBOLIC
.
PRKSET    LA,U      a0,cyclim$          LOAD SYSTEM CYCLE LIMIT
          SA        A0,EICLIM,X6        PUT IN ELEMENT ITEM
.         ** POSSIBLY DELETE PROC ENTRIES **
          J         PRKSR               RETURN TO CHANGE TYPE
.
.         If the element is omnibus and the desired type is a subtype,
.         we change the processor code for the element to that
.         specified by the subtype.
.
omntyp    tnz,s4    pbval,x9            is this a subtype name ?
          j         emscan              no.  can't change omnibus to major type
          j         setstyp             yes.  go set processor code
.
.         REWRITE ELEMENT TABLE ENTRY
.
REPLELT   LA        A0,A14              LOAD FTI ADDRESS
          AA,U      A9,1                INCREMENT ELEMENTS CHANGED
          ptewt     .                   REWRITE LAST REFERENCED ITEM
          J         BSPERR              BSP ERROR.  PRINT MESSAGE
          J         EMSCAN              PROCESS NEXT ELEMENT
.
.         END OF ELEMENT TABLE SCAN
.
SCANE     TE,U      A0,014              IS IT END OF TABLE ?
          J         BSPERR              NO.  OTHER BSP ERROR
          LMJ       A1,EBUFRL           RELEASE ELEMENT TABLE BUFFERS
          JNZ       A9,RDX              WERE ANY ELEMENTS CHANGED ?
          E$MSG     NELC                NO.  EDIT MESSAGE
          LA        A0,CDBPC,X8         LOAD PARAMETER HEAD
          LA        A0,ELFDT,A0         GET FDT ADDRESS
          LMJ       X11,FIST            APPEND FILE AND STATEMENT
          J         RDC                 COMPLETE THE COMMAND
.
RDX       R$DITX    .                   TERMINATE THE EDITOR
RDC       COMPLETE  .                   DONE WITH THIS COMMAND
.
.
          PURE      DATA
.
CYCME     'ONLY 63 CYCLES MAY BE KEPT.  63 USED INSTEAD OF !'
CYCM1     ' SPECIFIED IN STATEMENT !'
NELC      'NO ELEMENTS CHANGED IN !'
          END