.
.         MARK AND CLOSE COMMAND PROCESSES
.
.
.         (C)  Copyright 1972-1978  John Walker
.
.         This software is in the public domain
.
          AXR$
          DEFUNCT$
          FANG
          PURE      CODE
.
CLOSE*    NOP       7                   ENTRY FOR CLOSE
MARK*     LA        A0,CDBPC,X8         GET POINTER TO FIRST PARAMETER
          LA        A12,CDBACT,X8       LOAD ENTRY POINT
          LX        X9,PBVAL,A0         X9 = FDT ADDRESS FOR FILE
          LA        A0,FDTYPE,X9        LOAD FILE TYPE
          JTAPE     A0,TGOOP            PROCESS MARK IF TAPE FILE
          R$DIT     .                   BUT ILLEGAL ON MASS STORAGE
          E$MSG     MSF                 COPY ILLEGAL ON MASS STORAGE MESSAGE
          LA,U      A0,,X9              LOAD FDT ADDRESS
          LMJ       X11,FIST            APPEND FILE IN STATEMENT AND PRINT MESSA
          ZAP       .                   ROADBLOCK THE FILE
          COMPLETE  .                   TERMINATE PROCESSING
.
TGOOP     BGET      IOL                 ALLOCATE AN I/O BUFFER
          DL        A1,FDIN,X9          GET THE INFERNAL NAME
          DS        A1,IOFN,A0          STORE INTO I/O PACKET
          LA,U      A1,WEF$             GET WRITE END OF FILE FUNCTION
          SA        A1,IOFUNC,A0        PUT IN FUNCTION FIELD
          SZ        IOSTATUS,A0         MAKE STATUS POSITIVE
          SX        X9,IOFDT,A0         SAVE FDT ADDRESS
          SZ        IOACW,A0            CLEAR ACCESS WORD
          IOW$      .                   WRITE THE EOF MARK
          TZ        IOSTATUS,A0         DID IT COMPLETE OK ?
          J         MRKERR              NO.  EDIT THE STATUS
          TE,U      A12,CLOSE           ENTRY FOR CLOSE COMMAND ?
          J         MARKDN              NO.  DONE WITH MARK COMMAND
          IOW$      .                   WRITE SECOND EOF MARK
          TZ        IOSTATUS,A0         ERROR STATUS ?
          J         MRKERR              YES.  ERROR THE COMMAND
          LA,U      A2,REW$             LOAD REWIND FUNCTION
          LA        A1,CDOPTS,X8        LOAD COMMAND OPTIONS
          TEP,U     A1,OPTION('I')      REWIND WITH INTERLOCK ?
          LA,U      A2,REWI$            YES.  LOAD REWIND WITH INTERLOCK
          SA        A2,IOFUNC,A0        PUT REWIND FUNCTION IN PACKET
          IOW$      .                   REWIND THE TAPE
          TZ        IOSTATUS,A0         NORMAL COMPLETION ?
          J         MRKERR              NO.  EDIT ERROR MESSAGE
MARKDN    BRELP     A0                  RELEASE THE I/O BUFFER
          COMPLETE  .                   DONE WITH THIS COMMAND
.
MRKERR    LMJ       X11,IOSEDT          EDIT THE STATUS
          BRELP     A0                  RELEASE THE BUFFER
          ZAP       .                   FLAG AND ROADBLOCK
          COMPLETE  .                   TERMINATE
.
          PURE      DATA
MSF       'UNABLE TO WRITE END OF FILE MARK ON MASS STORAGE !'
          END