/* Input structures for cobol_addr */ declare 1 oprnd_z aligned static, 2 type fixed bin aligned init(1), 2 operand_no fixed bin aligned init(0), 2 lock fixed bin aligned init(0), 2 segno fixed bin aligned, 2 char_offset fixed bin(24) aligned, 2 send_receive fixed bin aligned init(0); /* type indicates type of addressing requested. Type 1 indicates basic; i.e., data to be addressed is specified by segno and char_offset. operand_no not applicable to type 1. lock indicates lock requirements for registers used in addressing; 0 - do not lock registers used. 1 - lock registers used. segno is the compiler designation of the segment in which the data to be addressed is located. char_offset is the character offset within segno of the data to be addressed. send_receive indicates whether the data being addressed is a sending or receiving field for the instruction whose address field is being set; 0 indicates sending. */ declare 1 input_struc aligned static, 2 type fixed bin aligned init(4), 2 operand_no fixed bin aligned init(1), 2 lock fixed bin aligned init(0), 2 operand, 3 token_ptr ptr aligned init(null), 3 send_receive fixed bin aligned init(0), 3 ic_mod fixed bin aligned, 3 size_sw fixed bin aligned init(0); /* type indicates type of addressing requested. 1 - no operand, 1 wd, basic 2 - 1 operand, 1 wd, non-EIS 3 - 1 operand, 1 wd, EIS 4 - 1 operand, 1 desc, 2wd, EIS 5 - 2 operands, 2 desc, 3 wd, EIS 6 - 3 operands, 3 desc, 4 wd, EIS operand_no number of operands associated with requested type. lock indicates lock requirements for registers used in addressing. 0 - do not lock registers used 1 - lock registers used 2 - unlock all registers token_ptr is a pointer to the operand token. send_receive indicates whether the operand being addressed is a sending or receiving field for the instruction. 0 - sending operand 1 - receiving operand ic_mod indicates whether ic modification is specified in the mf field of this operand (set by cobol_addr). 0 - no ic modification 1 - ic modification size_sw indicates size (length) handlhlng requirements to cobol_addr. 0 - cobol_addr may store the operand size in a register or in the instruction 1 - cobol_addr need not be concerned with size */ /* Error message structure. */ declare 1 oprnd_ovfl static aligned, 2 gen_name char(32) init("cobol_call_gen"), 2 message_len fixed bin aligned init(26), 2 message char(26) aligned init ("USING operands exceed 127!"); /* Code and relocation sequences. */ dcl inst_seq_1a(4) bit(18) unaligned static init ("000000000000000000"b, "011101010001000000"b, /* epp2 oprnd_z */ "110000000000000000"b, "010101010001000000"b); /* spri2 pr6|N+2z */ dcl inst_seq_1b(6) bit(18) unaligned static init ("110000000000011010"b, "011101001101010000"b, /* epp1 pr6|26,* */ "001000000000000000"b, "011101010001010000"b, /* epp2 pr1|2y,* */ "110000000000000000"b, "010101010001000000"b); /* spri2 pr6|N+2z */ dcl inst_seq_2(2) bit(36) aligned static init ("000000000000000000011101010000000100"b, /* epp2 desc_z,ic */ "110000000000000000010101010001000000"b); /* spri2 pr6|N+2zt+2z */ dcl ch_desc bit(36) ; dcl inst_seq_3a(8) bit(18) unaligned static init ("110000000000000000"b, "110010001001000000"b, /* eax1 pr6|N */ "000000000000000000"b, "100011001000000111"b, /* fld 2**11zt,dl */ "100000000000000000"b, "011101010001010000"b, /* epp2 pr4|ep_l,* */ "000000000000000101"b, "111000000001000000"b); /* tsx0 pr0|5 */ dcl inst_seq_3b(8) bit(18) unaligned static init ("110000000000101110"b, "110010001001000000"b, /* eax1 pr6|46 */ "000000000000000000"b, "100011001000000111"b, /* fld 0,dl */ "100000000000000000"b, "011101010001010000"b, /* epp2 pr4|ep_l,* */ "000000000000000110"b, "111000000001000000"b); /* tsx0 pr0|6 */ dcl inst_seq_3rel(8) bit(5) aligned static init ("00000"b, "00000"b, "00000"b, "00000"b, "10100"b, "00000"b, "00000"b, "00000"b); dcl inst_seq_1_1(26) bit(18) unaligned static init ("000000000000000000"b, "011101010000010100"b, /* epp2 n_relp,ic* */ "110000000001000110"b, "010101010001000000"b, /* spri2 pr6|M+2 */ "110000000001000110"b, "011101010001000000"b, /* epp2 pr6|M+2 */ "110000000001001110"b, "010101010001000000"b, /* spri2 pr6|M+10 */ "110000000001000100"b, "011101010001000000"b, /* epp2 pr6|M */ "110000000001010100"b, "010101010001000000"b, /* spri2 pr6|M+16 */ "110000000000101000"b, "011101010001000000"b, /* epp2 pr6|40 */ "110000000001010110"b, "010101010001000000"b, /* spri2 pr6|M+18 */ "000000000000000000"b, "011101010000000100"b, /* epp2 ptr_d_relp,ic */ "110000000001001010"b, "010101010001000000"b, /* spri2 pr6|M+20 */ "110000000001010000"b, "010101010001000000"b, /* spri2 pr6|M+26 */ "000000000000000000"b, "011101010000000100"b, /* epp2 fb_d_relp,ic */ "110000000001010010"b, "010101010001000000"b); /* spri2 pr6|M+28 */ dcl inst_seq_1_3(60) bit(18) unaligned static init ("000000000000000011"b, "001010100101000000"b, /* scm (pr),(du),mask(0) */ "010000000000000000"b, "000000000000000000"b, /* adsc9 pr2|0 */ "000100100000000000"b, "000000000000000000"b, /* vfd o9/044,27/0 */ "110000000001001001"b, "000000000001000000"b, /* arg pr6|M+5 */ "000000000000010000"b, "110000110100000100"b, /* ttn 16,ic */ "110000000001001001"b, "010011101001000000"b, /* lda pr6|M+5 */ "101010110000000000"b, "010111101000000011"b, /* ora 174080,du */ "110000000001001010"b, "111101101001000000"b, /* sta pr6|M+6 */ "110000000001001001"b, "010011101001000000"b, /* lda pr6|M+5 */ "000000000000000001"b, "000111101000000111"b, /* ada 1,dl */ "010000000000000000"b, "101000000101000101"b, /* a9bd pr2|0,a */ "110000000001010010"b, "010101010001000000"b, /* spri2 pr6|M+14 */ "000000000000000000"b, "101011001000000000"b, /* neg */ "000000000000000000"b, "000111101000000000"b, /* ada 0 */ "101010110000000000"b, "010111101000000011"b, /* ora 174080,du */ "110000000001001011"b, "111101101001000000"b, /* sta pr6|M+7 */ "110000000001001010"b, "011101010001000000"b, /* epp2 pr6|M+6 */ "110000000001011010"b, "010101010001000000"b, /* spri2 pr6|M+22 */ "110000000001001011"b, "011101010001000000"b, /* epp2 pr6|M+7 */ "000000000000000111"b, "111001000000000100"b, /* tra 7,ic */ "110000000001010010"b, "010101010001000000"b, /* spri2 pr6|M+14 */ "000000000000000000"b, "010011101000000000"b, /* lda 0 */ "101010110000000000"b, "010111101000000011"b, /* ora 174080,du */ "110000000001001010"b, "111101101001000000"b, /* sta pr6|M+6 */ "110000000001001010"b, "011101010001000000"b, /* epp2 pr6|M+6 */ "110000000001011010"b, "010101010001000000"b, /* spri2 pr6|M+22 */ "110000000001011100"b, "010101010001000000"b, /* spri2 pr6|M+24 */ "110000000001001100"b, "110010001001000000"b, /* eax1 pr6|M+8 */ "000010100000000000"b, "100011001000000111"b, /* fld 10240,dl */ "100000000000000000"b, "011101010001010000"b); /* epp2 pr4|0,* */ dcl rel_seq_1_3(62) bit(5) aligned static init ("00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "10100"b, "00000"b, "00000"b, "00000"b); dcl inst_seq_2_0(6) bit(18) unaligned static init ("110000000000101000"b, "010011101001000000"b, /* lda pr6|40 */ "000000000000000000"b, "110000000000000100"b, /* tze 0,ic */ "000000000000000000"b, "111001000000000100"b); /* tra 0,ic */ dcl var_inst (4) bit(18) unaligned static init( "101010110000000000"b, "010111101000000011"b, /* ora 526000,du */ "110000000000000000"b, "111101101001000000"b); /* sta pr6|var_stack */ /* fixup directive for link, used when profile options is specified. */ dcl 1 fixup_directive aligned static, 2 operation bit(1) unal init("0"b), 2 type bit(4) unal init("1111"b), 2 reserved bit(9) unal init("000000000"b), 2 location unal, 3 half bit(1) unal init("0"b), 3 base bit(3) unal init("001"b), 3 offset fixed bin unal, 2 tag_number fixed bin aligned; /* P__r_o_c_e_d_u_r_e_s_C__a_l_l_e_d:_ */ dcl cobol_addr entry (ptr, ptr, ptr), cobol_make_fixup entry(ptr), cobol_make_type9$type2_3 entry(ptr,ptr), cobol_alloc$stack entry (fixed bin, fixed bin, fixed bin), cobol_arg_descriptor entry (bit(36), bit(36), fixed bin), cobol_arg_descriptor$type9 entry (ptr, bit(36), fixed bin), cobol_get_size entry (ptr,fixed bin,fixed bin), cobol_define_tag_nc entry (fixed bin, fixed bin), cobol_define_tag entry(fixed bin), cobol_emit entry (ptr, ptr, fixed bin), cobol_make_link$type_4 entry (fixed bin, char(*)), cobol_make_tagref entry (fixed bin, fixed bin, ptr), cobol_pointer_register$call entry, cobol_pointer_register$get entry (ptr), cobol_pool entry (char(*), fixed bin, fixed bin), cobol_gen_error entry (fixed bin, fixed bin), cobol_call_op entry(fixed bin,fixed bin), cobol_reg_manager$after_op entry(fixed bin), signal_ entry (char(*), ptr, ptr); /* B__u_i_l_t-__i_n_F__u_n_c_t_i_o_n_s_U__s_e_d:_ */ dcl addr builtin, binary builtin, null builtin, substr builtin, unspec builtin; %include cobol_; %include cobol_type3; %include cobol_type9; %include cobol_type19; %include cobol_in_token; %include cobol_fixed_common; %include cobol_ext_; */ ----------------------------------------------------------- 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 */