/* BEGIN INCLUDE FILE ..... tedbcb.incl.pl1 ..... 01/29/82 J Falksen */ /* UPDATE HISTORY (finally) */ /* EL# date TR comments */ /* --- 84-10-19 -------- add sws.INPUT */ /* --- 84-10-29 -------- add sws.invoking */ /* if the structure of buf_des changes, tedcommon_.alm and */ /* tedcommon.incl.pl1 must be appropriately changed */ dcl 1 buf_des (all_des) based (bp), /* buffer part descriptor */ 2 l, /* left end (LHE) data (see Note 1) */ 3 ln fixed bin (21), /* line number */ 3 le fixed bin (21), /* left end (LE) offset */ 3 re fixed bin (21), /* right end (RE) offset */ 2 r like buf_des.l; /* right end (RHE) data */ /* Note1: buf_des describes 2 slightly different things, buffer parts and */ /* addresses. These are the circumstances: */ /* */ /* */ /* |.........................................| */ /* b.cur.sp| |.....................| | */ /* Buffer: xxxxxxxxxxwwwwwwwwwwwww......wwwwwwxxxxxxxxxx */ /* | | | | | */ /* b.b_.l.le| b.b_.l.re| b.b_.r.le| | maxl| */ /* b.b_.l.ln| b.b_.r.le| maxln| */ /* b.b_.r.ln| */ /* b.b_.l.ln (if known) tells the # of lines in left part of window */ /* b.b_.r.ln (if known) tells the # of lines the whole window */ /* b.maxln (if known) tells the # of lines in the whole buffer */ /* Either left or right part may be null. A ^read file */ /* is in the right part. A file is always read at the */ /* upper end of the hole. This will usually minimize the */ /* amount of data movement during subsequent editing */ /* operations. */ /* */ /* Data movement which occurs within a request, for example substitute, can */ /* cause an offset to temporarily point into the hole. This will clear up */ /* before the operation is complete. */ /* N */ /* Address: ....xxxxxxxxxxsssss -- sssssssxxxxxxxxxxL.... */ /* | | | | */ /* l.le| l.re| r.le| r.re| */ /* l.ln| r.ln| */ /* l.re is the beginning of the string addressed. */ /* l.le is the beginning of line containing location l.re */ /* Thus l.ln is related to both l.re and l.le */ /* r.re is the end of the string addressed. */ /* r.le is the end of line containing location r.re */ /* Thus r.ln is related to both r.re and r.le */ /* (l.le and r.le relate to the same line when 1 line is addressed) */ /* In line mode each request starts with l.re=l.le & r.re=r.le */ /* In string mode a global request forces these conditions. */ /*** b_c/b_s reference the string which represents the buffer data. */ dcl b_c (b.maxl) char (1) based (b.cur.sp); dcl b_s char (b.maxl) based (b.cur.sp); dcl (live_des init (8), all_des init (13), reloc_first init (2), /* where to begin minus 1 */ reloc_last init (8) /* where to stop */ ) fixed bin int static options (constant); dcl bp ptr; dcl 1 b based (bp), /* ted buffer control block */ 2 b_ like buf_des, /* defines buffer limits */ 2 newb like buf_des, /* pending buffer values */ 2 ex like buf_des, /* execution limits */ 2 a_ (0:2) like buf_des, /* address data */ /* (0) "cur location" */ /* (1) 1st addr result */ /* (2) 2nd addr result */ 2 cd like buf_des, /* copy destination */ 2 gb like buf_des, /* info for global processing */ 2 newa like buf_des, /* pending address values */ /* ----limit of relocation---- */ /* these are not relocated because they define the relocation data */ 2 rel_temp like buf_des, /* hold during relocation */ 2 temp (0:2) like buf_des, /* hold during [.]addr processing */ 2 old, /* where string used to be */ 3 (le,re) fixed bin (21), /* ends of range */ 2 new like b.old, /* where string has gone to */ 2 test like b.old, /* allowable relocatable range */ /* (may be 1 or 2 larger than b.old) */ 2 cur like seg_des, /* CURRENT buffer area info */ /* (see note 2) */ 2 pend like seg_des, /* PENDING buffer area info */ 2 file_d, /* file related data */ 3 dtcm bit(36), /* when read seg was modified */ 3 uid bit(36), /* unique ID of segment */ 3 dname char(168), /* directory of file */ 3 ename char(32), /* entry of file */ 3 cname char(32), /* component of file */ 3 kind char(1)unal, /* kind of component */ /* " "-none, ":"-archive */ /* "|"-superfile */ 3 sws unal, 4 file_sw bit(1), /* 1-file associated */ 4 trust_sw bit(1), /* 1-file name trustable */ 4 mod_sw bit(1), /* 1-buffer has been modified */ 4 terminate bit(1), /* 1-dp points to file, terminate */ 4 get_bit_count bit(1), /* 1-get_bit_count before using this */ /* buffer, it may have been modified by */ /* externally via [ted$buffer xx] usage */ 4 force_name bit(1), /* 1-name has been forced */ 4 no_io bit(1), /* 1-no r w ^b allowed */ /* (external string edit) */ 4 not_pasted bit(1), /* 1-data was moved into buffer but */ /* has not been read anywhere */ 4 initiate bit(1), /* 1-must initiate on restart */ /* (b% and b!) */ 4 ck_ptr_sw bit(1), /* 1-if segment is external, must */ /* check pointer before ref */ 4 pseudo bit (1), /* 1-^read or read-only buffer */ 4 INPUT bit (1), /* 1-active INPUT mode on buffer */ 4 invoking bit (1), /* 1-buffer being invoked */ 4 fill bit (14), 2 name char(16), /* buffer name */ 2 fill char(27), 2 stackl bit (18)aligned, /* offset of list of stacked data */ 2 stack_o bit (18)aligned, /* offset of data being relocated */ 2 present (0:2) bit(1), /* 1 if addr present */ 2 tw_sw bit(1), /* 1-typewriter buffer */ 2 bs, /* Old-style escapes in this buffer */ 3 (c,b,r,f) bit(1), /* 1-\031,\030,\036,\034 found */ 2 noref bit(1), /* 1-not ref'ed, don't list */ 2 maxl fixed bin(21), /* max buffer length in this AST */ 2 maxln fixed bin(21), /* number of lines in buffer */ 2 state_r fixed bin(21), /* what state is request in */ 2 (N1,N2,N3) fixed bin(21), /* values kept for -safe_ty */ 2 state_b fixed bin(21); /* what state is buffer change in */ /* Note2: sn=0 means empty because the database segment will never */ /* contain a buffer holder */ /* sn=-1 (&^b.terminate) means read-only data, if modification is */ /* done, a copy will be made. */ /* sn=-1 (& b.terminate) means ^read file, if modification is done */ /* the file is read first */ /* sn>0 means a buffer holder segment */ /* END INCLUDE FILE ..... tedbcb.incl.pl1 ..... */ */ ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group Bull including Bull HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell Bull Inc., Groupe Bull and Bull HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, Bull or Bull HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by Bull HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved */