This is a cross-referenced version of written.plan, to download the unmodified
source try written.plan.
#PROGRAM /GFWRITTEN(15AM,22AM,DBM,EBM)
#PAGE
#INCLUDE IOHEAD(/DEFS)
#INCLUDE STACK(/DEFS)
#PROGRAM
# how many chars written to buffer?
# integer procedure written (fd);
# value fd;
# integer fd;
# ERR = WRITEN(FD)
# CALL 1 WRITTEN
# LDN 3 FD
#SET ARGS=0
#DEFINE ARGFD=ARGS
#SET ARGS=ARGS+1
# Stack frame
#SET STFRAME=SXFRAME
# Arguments
#DEFINE STFD=SXPAR1
#SET STFRAME=STFRAME+1
STACK 2
OBEY ARGFD(1)
LDX 0 0(3) [ get FD
STO 0 STFD(2) [ Save in local stack
ADN 1 ARGS
# Pascal callable entry point
#CUE GPWRITTEN
BEGIN 2 3,1,STFRAME
LDX 0 STFD(2) [ is file open?
STO 0 SXPAR1(3)
LDN 0 1 [ in write mode
STO 0 SXPAR2(3)
CALL 1 GPIOCHECK
BNG 6 BYE [ fd is not open
STO 6 3
LDX 6 FDCHARS(3) [ Get chars in buf
BYE END 2 1,0
#END
#FINISH