.
. 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