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 */