COMPILATION LISTING OF SEGMENT verify_label_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1016.9 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 verify_label_: proc (a_dtp, a_dtep, a_pvtx, ec); 14 15 /* VERIFY_LABEL_: Ring-1 program to check the label of a file system disk. 16* 17* This interim version calls the hardcore to read the label. 18* Later versions will call IOI to read the label in. 19* 20* */ 21 22 dcl (a_dtp, a_dtep) ptr parameter, 23 a_pvtx fixed bin, 24 ec fixed bin (35) parameter; 25 26 dcl initializer_gate_$read_disk entry (fixed bin, fixed bin, ptr, fixed bin (35)); 27 28 dcl error_table_$bad_label fixed bin (35) ext; 29 dcl error_table_$no_label fixed bin (35) ext; 30 dcl error_table_$ai_restricted fixed bin (35) ext; 31 dcl reasonable_time fixed bin (71) int static init (2276881905645328); 32 33 dcl 1 label_buffer like label; 34 35 /* -------------------------------------------------------- */ 36 37 labelp = addr (label_buffer); 38 ec = 0; 39 call initializer_gate_$read_disk (a_pvtx, LABEL_ADDR, labelp, ec); 40 if ec ^= 0 then return; 41 42 dtp = a_dtp; 43 dtep = a_dtep; 44 ec = error_table_$no_label; 45 if label.Multics ^= Multics_ID_String then return; 46 if label.version ^= 1 then return; 47 if label.time_registered < reasonable_time then return; 48 ec = error_table_$bad_label; 49 if label.pvid ^= dte.pvid then return; 50 if label.root.here ^= dte.rpv then return; 51 lvep = addr (dt.lv_array (dte.lvx)); 52 if label.lv_name ^= lve.lvname then return; 53 if label.lvid ^= lve.lvid then return; 54 if label.password ^= "0"b then return; 55 if lve.lvname = "root" then dte.pvname = label.pv_name; /* Gran kludge */ 56 else if label.pv_name ^= dte.pvname then return; 57 58 ec = error_table_$ai_restricted; 59 if label.max_access_class ^= lve.max_access_class then return; 60 if label.min_access_class ^= lve.min_access_class then return; 61 ec = 0; 62 63 1 1 /* BEGIN INCLUDE FILE...disk_pack.incl.pl1 Last Modified January 1982 for new volume map */ 1 2 1 3 1 4 1 5 1 6 /****^ HISTORY COMMENTS: 1 7* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 1 8* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 1 9* Add vars PAGE_SIZE and VTOCE_SIZE, Also change the SECTORS_PER_VTOCE and 1 10* VTOCES_PER_RECORD form fixed bin constants to arrays of fixed bin 1 11* constants indexed by device type as defined in fs_dev_types.incl.pl1. 1 12* This was done for support of the 3380, and 3390 devices for 512_WORD_IO. 1 13* 2) change(86-10-21,Fawcett), approve(86-10-21,MCR7533), 1 14* audit(86-10-21,Farley), install(86-10-22,MR12.0-1193): 1 15* Change PAGE_SIZE and VTOCE_SIZE from automatic to static constants. 1 16* END HISTORY COMMENTS */ 1 17 1 18 1 19 /* 1 20* All disk packs have the standard layout described below: 1 21* 1 22* Record 0 : contains the label, as declared in fs_vol_label.incl.pl1. 1 23* Record 1 to 3 : contains the volume map, as declared in vol_map.incl.pl1 1 24* Record 4 to 5 : contains the dumper bit map, as declared in dumper_bit_map.incl.pl1 1 25* Record 6 : contains the vtoc map, as declared in vtoc_map.incl.pl1 1 26* Record 7 : formerly contained bad track list; no longer used. 1 27* Records 8 to n-1 : contain the array of vtoc entries; ( n is specified in the label) 1 28* each record contains 5 192-word vtoc entries. The last 64 words are unused. 1 29* Records n to N-1 : contain the pages of the Multics segments. ( N is specified in the label) 1 30* 1 31* Sundry partitions may exist within the region n to N-1, withdrawn or not as befits the meaning 1 32* of the particular partition. 1 33* 1 34* 1 35* 1 36* A conceptual declaration for a disk pack could be: 1 37* 1 38* dcl 1 disk_pack, 1 39* 2 label_record (0 : 0) bit(36 * 1024), 1 40* 2 volume_map_record (1 : 3) bit(36 * 1024), 1 41* 2 dumper_bit_map_record (4 : 5) bit(36 * 1024), 1 42* 2 vtoc_map_record (6 : 6) bit(36 * 1024), 1 43* 2 spare_record (7 : 7) bit(36 * 1024), 1 44* 2 vtoc_array_records (8 : n-1), 1 45* 3 vtoc_entry ( 5 ) bit(36 * 192), 1 46* 3 unused bit(36 * 64), 1 47* 2 Multics_pages_records (n : N-1) bit(36 * 1024); 1 48* 1 49* 1 50* 1 51* 1 52**/ 1 53 1 54 dcl (LABEL_ADDR init (0), /* Address of Volume Label */ 1 55 VOLMAP_ADDR init (1), /* Address of first Volume Map record */ 1 56 DUMPER_BIT_MAP_ADDR init (4), /* For initial release compaitiblity */ 1 57 VTOC_MAP_ADDR init (6), /* Address of first VTOC Map Record */ 1 58 VTOC_ORIGIN init (8), /* Address of first record of VTOC */ 1 59 DEFAULT_HCPART_SIZE init (1000), /* Size of Hardcore Partition */ 1 60 MAX_VTOCE_PER_PACK init (31774)) /* Limited by size of VTOC Map */ 1 61 fixed bin (17) int static options (constant); 1 62 1 63 /* SECTORS_PER_VTOCE & VTOCES_PER_RECORD are indexed via device type as */ 1 64 /* defined by fs_dev_types and extracted form the disk_table entry (dte) */ 1 65 /* or the physical volume table entry (pvte) device type. */ 1 66 1 67 dcl PAGE_SIZE fixed bin (17) init (1024) static options (constant); 1 68 dcl VTOCE_SIZE fixed bin (17) init (192) static options (constant); 1 69 1 70 dcl SECTORS_PER_VTOCE (9) fixed bin static options (constant) init 1 71 (0, 3, 3, 3, 3, 3, 3, 1, 1); 1 72 dcl VTOCES_PER_RECORD (9) fixed bin static options (constant) init 1 73 (0, 5, 5, 5, 5, 5, 5, 2, 2); 1 74 dcl SECTORS_PER_RECORD (9) fixed bin static options (constant) init 1 75 (0, 16, 16, 16, 16, 16, 16, 2, 2); 1 76 1 77 /* END INCLUDE FILE...disk_pack.incl.pl1 */ 64 2 1 /* BEGIN INCLUDE FILE ... fs_vol_label.incl.pl1 .. last modified January 1982 for new volume map format */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-04-10,Fawcett), approve(86-04-10,MCR7383), 2 5* audit(86-05-12,Coppola), install(86-07-18,MR12.0-1098): 2 6* Add the subvolume info. 2 7* 2) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 2 8* audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 2 9* Added inconsistent_dbm bit used to determine consistency of volume 2 10* dumper bit maps. 2 11* END HISTORY COMMENTS */ 2 12 2 13 /* This is the label at fixed location of each physical volume. Length 1 page */ 2 14 /* Note: fsout_vol clears pad fields before writing the label */ 2 15 2 16 dcl labelp ptr; 2 17 2 18 dcl 1 label based (labelp) aligned, 2 19 2 20 /* First comes data not used by Multics.. for compatibility with GCOS */ 2 21 2 22 2 gcos (5*64) fixed bin, 2 23 2 24 /* Now we have the Multics label */ 2 25 2 26 2 Multics char (32) init ("Multics Storage System Volume"), /* Identifier */ 2 27 2 version fixed bin, /* Version 1 */ 2 28 2 mfg_serial char (32), /* Manufacturer's serial number */ 2 29 2 pv_name char (32), /* Physical volume name. */ 2 30 2 lv_name char (32), /* Name of logical volume for pack */ 2 31 2 pvid bit (36), /* Unique ID of this pack */ 2 32 2 lvid bit (36), /* unique ID of its logical vol */ 2 33 2 root_pvid bit (36), /* unique ID of the pack containing the root. everybody must agree. */ 2 34 2 time_registered fixed bin (71), /* time imported to system */ 2 35 2 n_pv_in_lv fixed bin, /* # phys volumes in logical */ 2 36 2 vol_size fixed bin, /* total size of volume, in records */ 2 37 2 vtoc_size fixed bin, /* number of recs in fixed area + vtoc */ 2 38 2 not_used bit (1) unal, /* used to be multiple_class */ 2 39 2 private bit (1) unal, /* TRUE if was registered as private */ 2 40 2 inconsistent_dbm bit (1) unal, /* TRUE if ESD-less crash */ 2 41 2 flagpad bit (33) unal, 2 42 2 max_access_class bit (72), /* Maximum access class for stuff on volume */ 2 43 2 min_access_class bit (72), /* Minimum access class for stuff on volume */ 2 44 2 password bit (72), /* not yet used */ 2 45 2 number_of_sv fixed bin, /* if = 0 not a subvolume else the number of svs */ 2 46 2 this_sv fixed bin, /* what subvolume number it is */ 2 47 2 sub_vol_name char (1), /* what subvolume name (a b c d) it is */ 2 48 2 pad1 (13) fixed bin, 2 49 2 time_mounted fixed bin (71), /* time mounted */ 2 50 2 time_map_updated fixed bin (71), /* time vmap known good */ 2 51 2 52 /* The next two words overlay time_unmounted on pre-MR10 systems. This 2 53* forces a salvage if an MR10 pack is mounted on an earlier system. 2 54* */ 2 55 2 volmap_version fixed bin, /* version of volume map (currently 1) */ 2 56 2 pad6 fixed bin, 2 57 2 58 2 time_salvaged fixed bin (71), /* time salvaged */ 2 59 2 time_of_boot fixed bin (71), /* time of last bootload */ 2 60 2 time_unmounted fixed bin (71), /* time unmounted cleanly */ 2 61 2 last_pvtx fixed bin, /* pvtx in that PDMAP */ 2 62 2 pad1a (2) fixed bin, 2 63 2 err_hist_size fixed bin, /* size of pack error history */ 2 64 2 time_last_dmp (3) fixed bin (71), /* time last completed dump pass started */ 2 65 2 time_last_reloaded fixed bin (71), /* what it says */ 2 66 2 pad2 (40) fixed bin, 2 67 2 root, 2 68 3 here bit (1), /* TRUE if the root is on this pack */ 2 69 3 root_vtocx fixed bin (35), /* VTOC index of root, if it is here */ 2 70 3 shutdown_state fixed bin, /* Status of hierarchy */ 2 71 3 pad7 bit (1) aligned, 2 72 3 disk_table_vtocx fixed bin, /* VTOC index of disk table on RPV */ 2 73 3 disk_table_uid bit (36) aligned, /* UID of disk table */ 2 74 3 esd_state fixed bin, /* State of esd */ 2 75 2 volmap_record fixed bin, /* Begin record of volume map */ 2 76 2 size_of_volmap fixed bin, /* Number of records in volume map */ 2 77 2 vtoc_map_record fixed bin, /* Begin record of VTOC map */ 2 78 2 size_of_vtoc_map fixed bin, /* Number of records in VTOC map */ 2 79 2 volmap_unit_size fixed bin, /* Number of words per volume map section */ 2 80 2 vtoc_origin_record fixed bin, /* Begin record of VTOC */ 2 81 2 dumper_bit_map_record fixed bin, /* Begin record of dumper bit-map */ 2 82 2 vol_trouble_count fixed bin, /* Count of inconsistencies found since salvage */ 2 83 2 pad3 (52) fixed bin, 2 84 2 nparts fixed bin, /* Number of special partitions on pack */ 2 85 2 parts (47), 2 86 3 part char (4), /* Name of partition */ 2 87 3 frec fixed bin, /* First record */ 2 88 3 nrec fixed bin, /* Number of records */ 2 89 3 pad5 fixed bin, 2 90 2 pad4 (5*64) fixed bin; 2 91 2 92 dcl Multics_ID_String char (32) init ("Multics Storage System Volume") static; 2 93 2 94 /* END INCLUDE FILE fs_vol_label.incl.pl1 */ 65 3 1 /* BEGIN INCLUDE FILE ... disk_table.incl.pl1 ... Created Oct 75 for NSS */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(86-01-14,Fawcett), approve(86-05-13,MCR7383), 3 6* audit(86-05-14,LJAdams), install(86-07-18,MR12.0-1098): 3 7* Add support for subvolumes. 3 8* END HISTORY COMMENTS */ 3 9 3 10 3 11 /* Modified July 1977 by T. Casey to add pdirs_ok switch in lve */ 3 12 /* Modified April 1981 by J. Bongiovanni to add shared_spindle_flip */ 3 13 /* Modified 831122 by E. A. Ranzenbach to add vacate_pdirs bit to lve. */ 3 14 3 15 /* The disk table lives in ring 1. Its entries parallel the PVT */ 3 16 3 17 dcl dtp ptr, 3 18 dtep ptr, 3 19 lvep ptr; 3 20 3 21 3 22 3 23 dcl 1 dt based (dtp) aligned, 3 24 3 25 2 n_entries fixed bin (17), /* number of disk table entries */ 3 26 2 max_n_entries fixed bin (17), /* max number of disk table entries */ 3 27 2 n_in_use fixed bin (17), /* number of disk table entries in use */ 3 28 2 rpvx fixed bin, /* index (pvtx, too) of the RPV */ 3 29 2 version fixed bin init (1), 3 30 2 n_lv_entries fixed bin, /* Number of LV entries */ 3 31 2 pad (2) bit (36), 3 32 2 array (0 refer (dt.max_n_entries)) like dte, 3 33 2 lv_array (0 refer (dt.max_n_entries)) like lve; 3 34 3 35 dcl 1 dte based (dtep) aligned, 3 36 2 drive_name char (8), /* device name */ 3 37 (2 device_type fixed bin (8), /* device type */ 3 38 2 used bit (1), /* TRUE if this entry is used for paging */ 3 39 2 known bit (1), /* TRUE if label has been read and checked */ 3 40 2 storage_system bit (1), /* TRUE for storage system (vs io disk) */ 3 41 2 permanent bit (1), /* TRUE if cannot be demounted */ 3 42 2 deleted bit (1), /* TRUE if deleted by "deld" */ 3 43 2 rpv bit (1), /* TRUE if the root physical volume */ 3 44 2 demounted bit (1), /* TRUE if was here or was assumed here */ 3 45 2 need_salvage bit (1), /* TRUE if this vol was volsalv'd automatic */ 3 46 2 hc_accepted bit (1), /* TRUE if vol accepted by ring 0 init */ 3 47 2 shared_spindle_flip bit (1), /* used by ring-4 for shared spindle allocation */ 3 48 2 is_sub_vol bit (1), 3 49 2 pad bit (3), 3 50 2 lvx fixed bin (11), /* index in lv_array of lve */ 3 51 2 pre_accepted bit (1)) unaligned, /* TRUE if was used in previous bootload */ 3 52 2 sv_num fixed bin unal, /* this sv number */ 3 53 2 num_of_sv fixed bin unal, /* number of sv for this pv */ 3 54 2 sv_name char (2) aligned, 3 55 2 pvid bit (36), /* physical volume ID */ 3 56 2 pvname char (32); /* Physical volume name. */ 3 57 3 58 dcl 1 lve based (lvep) aligned, 3 59 2 lvid bit (36), /* logical volume ID */ 3 60 (2 used bit (1), /* TRUE if entry used */ 3 61 2 hv_mounted bit (1), /* TRUE if hvol is really OK */ 3 62 2 public bit (1), /* TRUE for public vol */ 3 63 2 mounting bit (1), /* TRUE if mhv is in progress */ 3 64 2 demounting bit (1), /* TRUE if dhv is in progress */ 3 65 2 good_candidate bit (1) unal, /* used for auto dhv */ 3 66 2 demounted_only bit (1) unal, /* lve here only to warm demounted pve's */ 3 67 2 pdirs_ok bit (1) unal, /* TRUE if process directory segments can be on this lv */ 3 68 2 prev_bootload bit (1) unal, /* TRUE if can auto-accept pvs */ 3 69 2 vacate_pdirs bit (1) unal, /* if TRUE we will demand move all perprocess segs */ 3 70 2 pad bit (26)) unal, 3 71 2 lvname char (32), /* Logical volume name */ 3 72 2 min_access_class bit (72), /* Security stuff */ 3 73 2 max_access_class bit (72); /* .. */ 3 74 3 75 /* END INCLUDE FILE ...disk_table.incl.pl1 */ 66 67 end verify_label_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0803.3 verify_label_.pl1 >spec>install>1111>verify_label_.pl1 64 1 10/22/86 1450.1 disk_pack.incl.pl1 >ldd>include>disk_pack.incl.pl1 65 2 07/21/88 2036.0 fs_vol_label.incl.pl1 >ldd>include>fs_vol_label.incl.pl1 66 3 07/24/86 2051.9 disk_table.incl.pl1 >ldd>include>disk_table.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. LABEL_ADDR 000013 constant fixed bin(17,0) initial dcl 1-54 set ref 39* Multics 500 000100 automatic char(32) initial level 2 in structure "label_buffer" packed packed unaligned dcl 33 in procedure "verify_label_" set ref 33* Multics 500 based char(32) initial level 2 in structure "label" dcl 2-18 in procedure "verify_label_" ref 45 Multics_ID_String 000000 constant char(32) initial packed unaligned dcl 2-92 ref 45 a_dtep parameter pointer dcl 22 ref 13 43 a_dtp parameter pointer dcl 22 ref 13 42 a_pvtx parameter fixed bin(17,0) dcl 22 set ref 13 39* dt based structure level 1 dcl 3-23 dte based structure level 1 dcl 3-35 dtep 002104 automatic pointer dcl 3-17 set ref 43* 49 50 51 55 56 dtp 002102 automatic pointer dcl 3-17 set ref 42* 51 ec parameter fixed bin(35,0) dcl 22 set ref 13 38* 39* 40 44* 48* 58* 61* error_table_$ai_restricted 000016 external static fixed bin(35,0) dcl 30 ref 58 error_table_$bad_label 000012 external static fixed bin(35,0) dcl 28 ref 48 error_table_$no_label 000014 external static fixed bin(35,0) dcl 29 ref 44 here 700 based bit(1) level 3 dcl 2-18 ref 50 initializer_gate_$read_disk 000010 constant entry external dcl 26 ref 39 label based structure level 1 dcl 2-18 label_buffer 000100 automatic structure level 1 unaligned dcl 33 set ref 37 labelp 002100 automatic pointer dcl 2-16 set ref 37* 39* 45 46 47 49 50 52 53 54 55 56 59 60 lv_array based structure array level 2 dcl 3-23 set ref 51 lv_name 531 based char(32) level 2 dcl 2-18 ref 52 lve based structure level 1 dcl 3-58 lvep 002106 automatic pointer dcl 3-17 set ref 51* 52 53 55 59 60 lvid based bit(36) level 2 in structure "lve" dcl 3-58 in procedure "verify_label_" ref 53 lvid 542 based bit(36) level 2 in structure "label" dcl 2-18 in procedure "verify_label_" ref 53 lvname 2 based char(32) level 2 dcl 3-58 ref 52 55 lvx 2(23) based fixed bin(11,0) level 2 packed packed unaligned dcl 3-35 ref 51 max_access_class 552 based bit(72) level 2 in structure "label" dcl 2-18 in procedure "verify_label_" ref 59 max_access_class 14 based bit(72) level 2 in structure "lve" dcl 3-58 in procedure "verify_label_" ref 59 max_n_entries 1 based fixed bin(17,0) level 2 dcl 3-23 ref 51 min_access_class 12 based bit(72) level 2 in structure "lve" dcl 3-58 in procedure "verify_label_" ref 60 min_access_class 554 based bit(72) level 2 in structure "label" dcl 2-18 in procedure "verify_label_" ref 60 password 556 based bit(72) level 2 dcl 2-18 ref 54 pv_name 521 based char(32) level 2 dcl 2-18 ref 55 56 pvid 5 based bit(36) level 2 in structure "dte" dcl 3-35 in procedure "verify_label_" ref 49 pvid 541 based bit(36) level 2 in structure "label" dcl 2-18 in procedure "verify_label_" ref 49 pvname 6 based char(32) level 2 dcl 3-35 set ref 55* 56 reasonable_time 000010 constant fixed bin(71,0) initial dcl 31 ref 47 root 700 based structure level 2 dcl 2-18 rpv 2(14) based bit(1) level 2 packed packed unaligned dcl 3-35 ref 50 time_registered 544 based fixed bin(71,0) level 2 dcl 2-18 ref 47 version 510 based fixed bin(17,0) level 2 dcl 2-18 ref 46 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DEFAULT_HCPART_SIZE internal static fixed bin(17,0) initial dcl 1-54 DUMPER_BIT_MAP_ADDR internal static fixed bin(17,0) initial dcl 1-54 MAX_VTOCE_PER_PACK internal static fixed bin(17,0) initial dcl 1-54 PAGE_SIZE internal static fixed bin(17,0) initial dcl 1-67 SECTORS_PER_RECORD internal static fixed bin(17,0) initial array dcl 1-74 SECTORS_PER_VTOCE internal static fixed bin(17,0) initial array dcl 1-70 VOLMAP_ADDR internal static fixed bin(17,0) initial dcl 1-54 VTOCES_PER_RECORD internal static fixed bin(17,0) initial array dcl 1-72 VTOCE_SIZE internal static fixed bin(17,0) initial dcl 1-68 VTOC_MAP_ADDR internal static fixed bin(17,0) initial dcl 1-54 VTOC_ORIGIN internal static fixed bin(17,0) initial dcl 1-54 NAME DECLARED BY EXPLICIT CONTEXT. verify_label_ 000034 constant entry external dcl 13 NAME DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 37 51 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 302 322 213 312 Length 536 213 20 200 67 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME verify_label_ 1107 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME verify_label_ 000100 label_buffer verify_label_ 002100 labelp verify_label_ 002102 dtp verify_label_ 002104 dtep verify_label_ 002106 lvep verify_label_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. initializer_gate_$read_disk THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$ai_restricted error_table_$bad_label error_table_$no_label LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000027 33 000041 37 000044 38 000046 39 000050 40 000064 42 000067 43 000072 44 000075 45 000100 46 000105 47 000110 48 000114 49 000116 50 000121 51 000126 52 000141 53 000146 54 000151 55 000155 56 000166 58 000173 59 000175 60 000203 61 000211 67 000212 ----------------------------------------------------------- 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