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