/* * * * * * * * * * * * * * * * * * * * * THIS IS THE BEGINNING OF THE LISTING TAPE INCLUDE FILE * ( lts_tables.incl.pl1 ) * * * * All listing tape procedures follow the coding conventions specified below. * * 1. All major or level 1 structures will have a name that begins with a * capital letter and will not contain any break characters. * * 2. All variable references will use a fully qualified name. * * 3. The following terms or suffixes have a consistent special meaning: * a) x - when it is the last letter of a variable name it denotes that * the variable is used as an ** index ** of an array. * b) ptr - when these are the last letters of a variable name it denotes * that the variable is a ** pointer **. * c) PTr - this suffix not only denotes a pointer variable but also * denotes that the pointer was declared by the **based attribute ** * in the declaration of a based variable. * d) num - this term denotes that the variable represents the * actual allocated dimension of an array. * e) size - this term denotes that the variable is the size * of a structure in ** 36 bit words **. * f) len - this suffix denotes that the variable specifies a length * in 9 bit characters. * * 4. In any fully qualified name containing an array the subscript will * be expressed immediately following the level which actually is an array. */ /* The following three tables are the most important data bases in the * listing tape system. An understanding of what these tables contain * and how they are used is essential if one is to understand how the listing * tape system is implemented. */ /* The ALPHA Table * * The table ** A ** which denotes ALPHA is the most important lts * table. It is passed as an argument in every call to an external * lts procedure. It contains pointers to all of the DICTIONARY and TAPE * tables. It is A which links these two types of tables together. * * Note that the error code variable required by all calls is found * in this table. */ dcl Atab_max_num fixed bin init (14) static; /* Specifies the maximum size of the A.tab * array. It currently allows for 1 output * tape, 2 input tapes, and 11 directories. */ dcl 1 A, 2 bufptr ptr, /* It points to the work buffer segment. */ 2 fileptr ptr, /* Points to initiated listing file or user data file segment. */ 2 SPtr ptr, /* The main pointer to the S (Sort) table. */ 2 x fixed bin, /* It is a subscript to the A.tab array */ 2 num fixed bin, /* The actual number of A.tab entries used - except entry 0. */ 2 code fixed bin, /* Is used as the error code for all calls. */ 2 command char (8), /* The name of the current command. */ 2 date char (16), /* Today's date. */ 2 comd_line char (140), /* The command line of this command. */ 2 printer_stream char (16), /* The stream name used to attach the printer. */ 2 tab (0:13), /* This table has an entry for each DICTIONARY table allocated. * Entry ** 0** is reserved for output D and T tables. */ 3 dir_name char (168) aligned, /* Pathname specified by -dn or -directory_name parameter. */ 3 Dptr ptr, /* Points to a DICTIONARY table. */ 3 Tptr ptr, /* Points to the T table related to the above D table. */ 3 flag bit (1) aligned; /* This flag denotes whether or not the specified DICTIONARY was read from a TAPE or was built from a directory. If it was built from a directory then Tptr will be null. */ /* The DICITONARY Table * * * The sturcture ** D ** which denotes DICTIONARY is in fact a * dictionary of all the listing files contained on a listing tape. * A DICTIONARY table is allocated for each listing tape that is * attached by any lts command. A D table is also allocated when a * directory pathname is entered as a parameter to the ltc or ltm commands. */ dcl DPtr ptr, /* The main pointer to the DICTIONARY table. */ num_files fixed bin init (0); /* The dimension of D.file when D is allocated. */ dcl 1 D based (DPtr), 2 size fixed bin, /* The size in 36 bit words of the whole D table. */ 2 num fixed bin, /* Actual number of entries allocated in the file array. */ 2 reel_seqx fixed bin, /* Used to check that the tape reels are in sequence. */ 2 x fixed bin, /* Used to index the file array. */ 2 date char (16), /* The date the tape was made. */ 2 file (num_files), /* This table has an entry for each file referenced by this dictionary. */ 3 uid bit (36), /* Unique ID of this file. */ 3 name char (32), /* The entry name of this file. */ 3 size fixed bin, /* The size of this file in 36 bit words. */ 3 seg_count fixed bin, /* The number of segments needed to contain this file. If seg_count = 1 then this is a single-segment file. Otherwize it is the number of segments comprizing this multi-segment file. */ 3 area char (16), /* For example: tools or hard_core. */ 3 sys_num char (16), /* The system from which this listing file was compiled. */ 3 date_created char (16), /* The date the file was created. */ 3 date_dumped char (16), /* The date the file was last dumped. */ 3 Atabx fixed bin; /* An index to the A.tab entry which relates to this D table. * NOTE: This field is also used to mark this entry for some * special purpose such as deleting or printing. */ dcl marker_flag fixed bin init (100); /* A special code used to set and test the Atabx field of * of a D table. */ dcl block_size fixed bin (17) static internal init (65536); /* Block size for reading and writing */ /* The TAPE Table * * * The table ** T ** which denotes TAPE contains data relating to * an lts listing tape. Note, throughout all Listing Tape System * documentation a listing tape is always a logical tape which may consist * of one or several physical reels. There is one TAPE table allocated * for each logical listing tape used by any listing tape system command. * The function of the TAPE table is to relate a logical listing tape * to its physical reels. Note that an ** output ** listing tape is * always associated with entry zero in the A.tab array. */ dcl TPtr ptr, /* The main pointer to a TAPE table. */ num_reels fixed bin; /* The dimension of T.reel when T is allocated. */ dcl 1 T based (TPtr), 2 x fixed bin, /* Used to index the reel array. */ 2 num fixed bin, /* Actual number of entries in T.reel when T is allocated. */ 2 reel (10) char (32); /* This array contains an entry for each physical reel which comprises this logical tape. Each entry is the external reel name of its associated reel. */ /* The following constants are used as lts defined error codes. These codes denote * error conditions that are discovered by lts itself. All references to error codes * by lts procedures are thus done symbolically. The actual values of these codes may be * changed without disturbing any lts procedure. */ dcl (lts_code_arg_error fixed bin init (2), lts_code_file_not_found fixed bin init (3), lts_code_no_reel fixed bin init (4), lts_code_reel_end fixed bin init (5), lts_code_unknown_status fixed bin init (6), lts_code_wrong_reel fixed bin init (7), lts_code_unknown_sfile fixed bin init (8), lts_code_user_file fixed bin init (9)) static; /* The following builtin functions are used by lts. */ dcl (addr, addrel, bit, divide, fixed, index, length, null, size, substr, unspec) builtin; /* * * * * THIS IS THE END OF THE INCLUDE FILE * * * * * * * * * * * * * * * * * * * */ */ ----------------------------------------------------------- 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 */