1 /* BEGIN INCLUDE FILE lisp_iochan.incl.pl1 */
 2 
 3 /* This include file describes the format of the 'iochan' block,
 4    which is used to implement lisp file-objects.  The iochan
 5    is the central data base of the i/o system.  When open
 6    is used, an iochan is created in lisp static storage.
 7    When the lisp environment is booted, 2 iochans for input and
 8    output on the tty are created.  Iochans are saved and restored
 9    by the save mechanism */
10 
11           /* open i/o channel information */
12 
13 dcl 1 iochan based aligned,             /* format of a file object */
14     2 ioindex fixed bin(24),                      /* 0-origin character position in block */
15     2 iolength fixed bin(24),                     /* size of block in chars - actual(in), max(out) */
16     2 ioptr pointer,                              /* -> block */
17     2 thread pointer,                             /* list of all iochans open; from lisp_static_vars_$iochan_list */
18     2 fcbp pointer,                               /* for tssi_ */
19     2 aclinfop pointer,                           /* .. */
20     2 component fixed bin,                        /* .. */
21     2 charpos fixed bin,                          /* 0-origin horizontal position on line */
22     2 linel fixed bin,                            /* (out) line length, 0 => oo */
23     2 flags unaligned,
24       3 seg bit(1),                               /* 1 => msf, 0 => stream */
25       3 read bit(1),                              /* 0 => openi, 1 => not */
26       3 write bit(1),                             /* 0 => openo, 1 => not */
27       3 gc_mark bit(1),                           /* for use by the garbage collector */
28       3 interactive bit(1),                       /* 1 => input => this is the tty
29                                                           output => flush buff after each op */
30       3 must_reopen bit(1),                       /* 1 => has been saved and not reopend yet */
31       3 nlsync bit(1),                            /* 1 => there is a NL in the buffer (output streams only) */
32       3 charmode bit(1),                          /* enables instant ios_$write */
33       3 extra_nl_done bit(1),                     /* 1 => last char output was extra NL for chrct */
34       3 fixnum_mode bit(1),                       /* to be used with in and out functions */
35       3 image_mode bit(1),                        /* just suppresses auto-cr */
36       3 not_yet_used bit(25),
37     2 function fixed bin(71),                     /* EOF function (input), or endpagefn (output) <<< gc-able >>> */
38     2 namelist fixed bin(71),                     /* list of names, car is directory pathname    <<< gc-able >>> */
39     2 name char(32) unaligned,                    /* stream name or entry name */
40     2 pagel fixed bin,                            /* number of lines per page */
41     2 linenum fixed bin,                          /* current line number, starting from 0 */
42     2 pagenum fixed bin,                          /* current page number, starting from 0 */
43 
44     flag_reset_mask bit(36) aligned static init(  /* anded into flags with each char */
45      "111011110111111111"b);
46 
47 /* END INCLUDE FILE lisp_iochan.incl.pl1 */