term% ls -F
term% cat index.txt
READ(5)                       File Formats Manual                      READ(5)

       read, write - transfer data from and to a file

       size[4] Tread tag[2] fid[4] offset[8] count[4]
       size[4] Rread tag[2] count[4] data[count]

       size[4] Twrite tag[2] fid[4] offset[8] count[4] data[count]
       size[4] Rwrite tag[2] count[4]

       The  read request asks for count bytes of data from the file identified
       by fid, which must be opened for reading, starting offset  bytes  after
       the  beginning of the file.  The bytes are returned with the read reply

       The count field in the reply indicates the number  of  bytes  returned.
       This  may  be  less  than the requested amount.  If the offset field is
       greater than or equal to the number of bytes in the file,  a  count  of
       zero will be returned.

       For  directories,  read returns an integral number of directory entries
       exactly as in stat (see stat(5)), one for each member of the directory.
       The read request message must have offset equal to zero or the value of
       offset in the previous read on the directory, plus the number of  bytes
       returned  in  the previous read.  In other words, seeking other than to
       the beginning is illegal in a directory (see seek(2)).

       The write request asks that count bytes of data be recorded in the file
       identified  by  fid,  which must be opened for writing, starting offset
       bytes after the beginning of the file.  If the file is append-only, the
       data  will  be placed at the end of the file regardless of offset.  Di‐
       rectories may not be written.

       The write reply records the number of bytes actually  written.   It  is
       usually an error if this is not the same as requested.

       Because  9P  implementations may limit the size of individual messages,
       more than one message may be produced by a single read or  write  call.
       The  iounit field returned by open(5), if non-zero, reports the maximum
       size that is guaranteed to be transferred atomically.

       Read and write messages are generated by the corresponding calls.   Be‐
       cause  they  include  an  offset, the pread and pwrite calls correspond
       more directly to the 9P messages.  Although seek(2) affects the offset,
       it does not generate a message.