.
.         WRITE COMMAND ACTIVITY
.
.
.         (C)  Copyright 1972-1978  John Walker
.
.         This software is in the public domain
.
          AXR$
          DEFUNCT$
          FANG
$(1).
.
WRITE*    LX        X5,CDBPC,X8         LOAD POINTER TO FILE PARAMETER
          LA        A11,CDOPTS,X8       LOAD COMMAND OPTIONS
          LX        X5,PBLINK,X5        LINK TO COUNT PARAMETER
          LA,U      A10,1               LOAD IMPLIED COUNT (1)
          TEP,U     A11,OPTION('S')     WRITE AT SPECIFIED ADDRESS ?
          LA,U      A10                 YES.  ASSUMED ADDRESS IS ZERO
          LA        A1,PBTYPE,X5        LOAD TYPE OF THE PARAMETER
          JE        A1,DATA,DUDLEY      DO WRITE.  USE ASSUMED COUNT
          LA        A10,PBVAL,X5        LOAD USER-SUPPLIED COUNT
          LX        X5,PBLINK,X5        CHAIN TO DATA BUFFER ADDRESS
DUDLEY    LMJ       A2,IOGNF            ALLOCATE A NON I/O FCT
          SX        X5,IOFN,A0          PUT DATA BUFFER ADDRESS IN FILE NAME
          TOP,U     A11,OPTION('S')     WRITE AT SPECIFIC ADDRESS ?
          J         SAOC                NO.  SKIP CHECKS
          LA        A12,A10             SAVE ADDRESS PARAMETER
          LA,U      A10,1               ALWAYS WRITE ONE BLOCK IN THIS MODE
SAOC      SA        A10,IOCOUNT,A0      PUT NUMBER OF BUFFERS TO EMIT IN FCT
          LX,U      X10,,A0             MOVE FCT ADDRESS TO X10
          LA        A1,CDBPC,X8         LOAD ADDRESS OF OUTPUT PARAMETER
          LA        A1,PBVAL,A1         LOAD FDT ADDRESS FROM PARAMETER
          LMJ       A2,IOGET            BUILD AN I/O FCT
          LX,U      X9,,A0              MOVE OUTPUT FCT ADDRESS TO X9
          TNZ       IOMASS,X9           IS OUTPUT MASS STORAGE ?
          TOP,U     A11,OPTION('M')     NO.  IS 'M' OPTION ON ?
          J         NOZZLE              SKIP IT BECAUSE NOT REQUESTED OR MS OUTP
          LA,U      A0,'M'              LOAD 'M' I/O OPTION
          SA        A0,IOOPT,X10        SET FOR SOURCE
          SA        A0,IOOPT,X9         AND FOR WRITER
NOZZLE    TOP,U     A11,OPTION('S')     IS THE 'S' OPTION ON ?
          J         SOFO                NO.  DO REGULAR WRITE
          TNZ       IOMASS,X9           IS OUTPUT FILE MASS STORAGE ?
          J         OOPS                NO.  TURN BACK THE CLOCK
          SA        A12,IODRAD,X9       SET ADDRESS IN I/O PACKET
          J         SOFO                FIRE UP WRITE
OOPS      SA        A12,IOCOUNT,X10     PUT PARAMETER IN COUNT
SOFO      LMJ       A2,SOURCE           ESTABLISH BUFFER EMITTER
          LMJ       A2,OUTPUT           FIRE UP OUTPUT ACTIVITY
          P         IOBB+QL,X9          WAIT FOR WRITE TO COMPLETE
          BRELP     X9                  RELEASE OUTPUT FCT
          BRELP     X10                 RELEASE INPUT FCT
          COMPLETE  .                   FINISH THIS COMMAND
          END