/* BEGIN INCLUDE FILE probe_break_info.incl.pl1 Removed from probe_break_mgr_, 05/18/79 WOS Some of these things are found only in the probe segment (the break segment) such as "break_segment", "procedure_entry". If "macro_item" or "symbol_item" were used, they'd go there, too. If probe_modes were kept in the probe seg, they'd go there too. In the break_map of an object seg go "break_map", and "statement_item" and "break_slot" (there are two flavors of break_slot, one for "before", and one for "after". The astute reader will notice that they are both the same , except in how they arrange the eight words in "sequence". For cases where what is of interest is not in those eigth words, the more general "break_slot" structure may be used. It may come to pass in the future that before and after will look different, of course. James R. Davis 23 Sept 79 "symbol_item" removed, because probe variables are implemented differently then JMB seemed to envision. SYMBOL_ITEM is left for compatibility, but not used */ dcl 1 break_segment based (break_segp) aligned, /* declaration of header for break segment */ 2 version fixed bin initial (2), /* version number */ 2 name character (8) initial ("breakseg"), 2 upper_bound bit (18) unal, /* as described above */ 2 word_count bit (18) unal, 2 first_free_item bit (18) unal, 2 first_procedure_entry bit (18) unal, /* the break procedure only has procedure entries */ 2 first_symbol bit (18) unal, /* can be deleted */ 2 first_macro bit (18) unal; dcl break_segp pointer; dcl 1 break_map based (bmp) aligned, /* declaration of header for break map */ 2 version fixed bin initial (2), /* version number */ 2 name character (8) initial ("breakmap"), 2 upper_bound bit (18) unal, 2 word_count bit (18) unal, 2 first_free_item bit (18) unal, /* as above */ 2 symbol_header bit (18) unal, /* to symbol section of entire object seg */ 2 initial_word_count fixed bin (35), /* low water mark for allocations */ 2 identifier fixed bin (71), /* unique id of entire segment */ 2 map_sequence pointer; /* beginning of code to call break handler */ /* pointer to align on double word */ dcl 1 item based aligned, /* canonical declaration for all items */ 2 item_type fixed bin, /* separates different types */ 2 unused bit (18) unaligned, 2 chain bit (18) unaligned, /* to next item of same type or (18)"0"b */ 2 size fixed bin; /* number of words occupied by this item */ dcl 1 free_item based aligned, /* little bundle of free storage */ 2 size fixed bin, /* number free words contained here */ 2 unused bit (18) unaligned, 2 chain bit (18) unaligned, 2 zeros bit (0); /* area to zero out when freed */ dcl 1 procedure_entry based (ent) aligned, /* one entry for each procedure that has breaks */ 2 item_type fixed bin initial (PROCEDURE_ITEM), /* as for all other items */ 2 unused bit (18) unaligned, 2 chain bit (18) unaligned, 2 size fixed bin, 2 directory character (168) unal, /* directory portion of segment pathname */ 2 entry character (32) unal, /* entry portion of pathname */ 2 segname character (32) unal, /* name of "main" entry */ 2 pad fixed bin (71), /* formerly time of proc. creation */ 2 time_stamp fixed bin (71), /* time of creation of containing seg. */ 2 first_statement bit (18) unal, /* chain of statements with breaks */ 2 first_symbol bit (18) unal, /* not used */ 2 first_macro bit (18) unal, 2 first_debug_break bit (18) unal, /* chain of debug style breaks (not used yet) */ 2 break_map bit (18) unal, /* offset in object seg of break map */ 2 statement_map bit (18) unal, /* offset in object seg of map for this proc */ 2 statement_map_size bit (18) unal, /* number of entries in map */ 2 source_map bit (18) unal, /* offset of source map for proc */ 2 symbol_header bit (18) unal, /* offset of symbol section for this proc */ 2 bounds aligned, /* structure of bounds information */ 3 text_bounds, 4 start fixed bin (35), 4 end fixed bin (35), 3 symbol_bounds, 4 start fixed bin (35), 4 end fixed bin (35), 2 language_type fixed bin; /* code for language of source program */ dcl 1 statement_item based (stp) aligned, /* each statement with a break has a map entry */ 2 item_type fixed bin initial (STATEMENT_ITEM), 2 unused bit (18) unaligned, 2 chain bit (18) unaligned, 2 size fixed bin, 2 identifier fixed bin (71), /* id of proc this stmt is in */ 2 proc_entry bit (18) unal, /* offset of proc entry in break seg */ 2 number fixed bin, /* statement number */ 2 slots (0:1) bit (18); /* offset of break slots for insert and append */ /* unused, here only as indication of what JMB (Amen!) may have had in mind for probe macros. For the record, it looked like he was going to do probe variables in a similar way, and they are not done the way he seemed to envision. */ dcl 1 macro_item based aligned, /* definition of a probe macro */ 2 item_type fixed bin initial (MACRO_ITEM), 2 unused bit (18) unaligned, 2 chain bit (18) unaligned, 2 size fixed bin, 2 name character (32), /* macro name */ 2 count fixed bin, /* number of characters in command list */ 2 command_list character (0); /* place to put command list */ dcl 1 break_slot_before aligned based (before_slot_ptr), 2 item_type fixed bin init (BREAK_ITEM), 2 breakmap_header_offset bit (18) unal, 2 statement_item_offset bit (18) unal, 2 size fixed bin, 2 sequence, /* eight words */ 3 word0 bit (36) init (SPRI_wd), 3 word1, 4 map_seq_offset bit (18) unal, 4 opcode bit (18) unal init (TSPLB_code), 3 word2, 4 slot_offset bit (18) unal, 4 opcode bit (18) unal init (NOP_code), 3 moved_instruction bit (36), /* first instr. of line, executed after break has occured */ 3 moved_descs (3), /* descriptors if needed */ 4 offset bit (18) unal init (0), 4 opcode bit (18) unal init (NOP_code), /* and harmless NOP if not */ 3 return, 4 offset bit (18) unal, /* patched to be place to return to after break */ 4 opcode bit (18) unal init (TRA_code), 2 old_instruction bit (36), /* former occupant, sans relocation */ 2 symbol_block_offset bit (18) unal, 2 location bit (18) unal, 2 type fixed bin init (BREAK_BEFORE), 2 count fixed bin, 2 command_list char (command_list_size refer (break_slot_before.count)); dcl 1 break_slot_after aligned based (after_slot_ptr), 2 item_type fixed bin init (BREAK_ITEM), 2 breakmap_header_offset bit (18) unal, 2 statement_item_offset bit (18) unal, 2 size fixed bin, 2 sequence, 3 moved_instruction bit (36), /* happens before the break occurs */ 3 moved_descs (3), 4 offset bit (18) unal init ((3)0), 4 opcode bit (18) unal init ((3) NOP_code), 3 word4 bit (36) init (SPRI_wd), 3 word5, 4 map_seq_offset bit (18) unal, 4 opcode bit (18) unal init (TSPLB_code), 3 word6, 4 slot_offset bit (18) unal, 4 opcode bit (18) unal init (NOP_code), 3 return, 4 offset bit (18) unal, 4 opcode bit (18) unal init (TRA_code), 2 old_instruction bit (36), /* former occupant, sans relocation */ 2 symbol_block_offset bit (18) unal, 2 location bit (18) unal, 2 type fixed bin init (BREAK_AFTER), 2 count fixed bin, 2 command_list char (command_list_size refer (break_slot_before.count)); /* we need these next two because PL/I wont take size(break_slot_before.sequence) */ dcl size_of_after_sequence fixed bin internal static init (8) options (constant); dcl size_of_before_sequence fixed bin internal static init (8) options (constant); dcl (BREAK_ITEM init (0), STATEMENT_ITEM init (1), SYMBOL_ITEM init (2), /* will never be used */ MACRO_ITEM init (3), /* not used now */ PROCEDURE_ITEM init (4)) fixed bin internal static options (constant); dcl command_list_size fixed bin (21); dcl (ent, bmp, stp, before_slot_ptr, after_slot_ptr) ptr; dcl SPRI_wd bit (36) init ("600022254120"b3); /* spri sp|stack_frame.next_sp,* */ dcl (NOP_code init ("011003"b3), TSPLB_code init ("671000"b3), TRA_code init ("710000"b3)) internal static options (constant) bit (18) unal; /* END INCLUDE FILE ... probe_break_info.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 */