COMPILATION LISTING OF SEGMENT cobol_multiply2_binary Compiled by: Multics PL/I Compiler, Release 31b, of April 24, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 05/24/89 1030.5 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 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 14 15 /****^ HISTORY COMMENTS: 16* 1) change(89-04-23,Zimmerman), approve(89-04-23,MCR8060), 17* audit(89-05-05,RWaters), install(89-05-24,MR12.3-1048): 18* MCR8060 cobol_multiply2_binary.pl1 Added Trace statements. 19* END HISTORY COMMENTS */ 20 21 22 /* Modified on 11/16/84 by FCH, [5.3...], trace added */ 23 /* Modified on 10/19/84 by FCH, [4.3-1], BUG563(phx18381), new cobol_addr_tokens.incl.pl1 */ 24 /* Modified on 01/17/77 by ORN to call cobol_make_reg_token instead of cobol_make_register_token */ 25 /* Modified since Version 2.0 */ 26 27 28 29 30 31 /*{*/ 32 /* format: style3 */ 33 cobol_multiply2_binary: 34 proc (lop_token_ptr, rop_token_ptr, result_token_ptr, operation_code); 35 /* 36*This procedure generates code to multiply or divide two fixed 37*binary data items in the hardware registers (A and Q). 38**/ 39 40 /* DECLARATIONS OF THE PARAMETERS */ 41 42 dcl lop_token_ptr ptr; 43 dcl rop_token_ptr ptr; 44 dcl result_token_ptr ptr; 45 dcl operation_code fixed bin; 46 47 /* DESCRIPTION OF THE PARAMETERS */ 48 49 /* 50*PARAMETER DESCRIPTION 51* 52*lop_token_ptr Pointer to a token that describes the 53* multiplicand (for multiplication) or the 54* dividend (for division). This token may 55* be a data name token (type 9) , a numeric 56* literal token (type 2) or a toekn for the 57* reserved word ZERO. (input) 58*rop_token_ptr Pointer to a token that describes the 59* multiplier (for multiplication) or the 60* divisor (for division). This token may be 61* a data name token (type 9), a numeric 62* literal token (type 2), or a reserved 63* word token (type 1) for the figurative 64* constant ZERO. (input) 65*result_token_ptr Pointer to a register token (type 100) that 66* describes the register containing the 67* result of the computation. (output) 68*operation_code A code that identifies the operation for 69* which code is to be generated. This code is 70* defined in the following table: 71* code value | operation 72* ========================================= 73* 1 | multiplication 74* 2 | division 75* ======================================== 76* 77**/ 78 79 /* DECLARATION OF EXTERNAL ENTRIES */ 80 81 dcl cobol_register$load ext entry (ptr); 82 dcl cobol_make_bin_const 83 ext entry (ptr, ptr, fixed bin); 84 dcl cobol_make_reg_token 85 ext entry (ptr, bit (4)); 86 dcl cobol_load_register ext entry (ptr, ptr); 87 dcl cobol_short_to_longbin$temp 88 ext entry (ptr, ptr); 89 dcl cobol_addr ext entry (ptr, ptr, ptr); 90 dcl cobol_emit ext entry (ptr, ptr, fixed bin); 91 92 /* Declaration of Internal Static Variables. */ 93 94 dcl MPY bit (10) int static init ("1000000100"b); 95 /* 402(0) */ 96 dcl DIV bit (10) int static init ("1010001100"b); 97 /* 506(0) */ 98 99 dcl direct_lower_inst bit (36) int static init ("000000000000000000000000000000000111"b); 100 /* zero,dl */ 101 102 103 104 dcl 1 dec_zero_token int static, 105 2 size fixed bin (15), 106 2 line fixed bin (15), 107 2 column fixed bin (15), 108 2 type fixed bin (15) init (2), 109 2 integral bit (1) init ("1"b), 110 2 floating bit (1) bit (1) init ("0"b), 111 2 filler1 bit (5), 112 2 subscript bit (1) init ("0"b), 113 2 sign char (1) init (" "), 114 2 exp_sign char (1) init (" "), 115 2 exp_places fixed bin (15), 116 2 places_left fixed bin (15) init (1), 117 2 places_right fixed bin (15) init (0), 118 2 places fixed bin (15) init (1), 119 2 literal char (1) init ("0"); 120 121 /* DECLARATION OF INTERNAL VARIABLES */ 122 123 124 /* DECLARATION OF INTERNAL VARIABLES */ 125 126 dcl 1 input_buff aligned, 127 2 buff (1:10) ptr; 128 129 dcl 1 inst_buff aligned, 130 2 buff (1:2) fixed bin; 131 132 dcl 1 reloc_buff aligned, 133 2 buff (1:10) bit (5) aligned; 134 135 dcl dn_ptr ptr; 136 137 138 dcl 1 register_struc, 139 2 what_reg fixed bin, 140 2 reg_no bit (4), 141 2 lock fixed bin, 142 2 already_there fixed bin, 143 2 contains fixed bin, 144 2 tok_ptr ptr, 145 2 literal bit (36); 146 147 148 dcl temp_ptr ptr; 149 dcl reg_temp bit (4); 150 151 152 /**************************************************/ 153 start: /***..... if Trace_Bit then call cobol_gen_driver_$Tr_Beg(cmb);/**/ 154 if lop_token_ptr -> data_name.type = rtc_resword 155 then lop_token_ptr = addr (dec_zero_token); 156 if rop_token_ptr -> data_name.type = rtc_resword /* Right operand token is fig const ZERO */ 157 then rop_token_ptr = addr (dec_zero_token); 158 159 if lop_token_ptr -> data_name.type = rtc_numlit 160 then do; /* Left operand is a numeric literal */ 161 /* Make a binary constant for the numeric literal. */ 162 temp_ptr = null (); 163 call cobol_make_bin_const (lop_token_ptr, temp_ptr, 2); 164 lop_token_ptr = temp_ptr; 165 end; /* Left operand is a numeric literal. */ 166 167 if rop_token_ptr -> data_name.type = rtc_numlit 168 then do; /* Right operand is a numeric literal. */ 169 /* Make a binary constant from the numeric literal token. */ 170 temp_ptr = null (); 171 call cobol_make_bin_const (rop_token_ptr, temp_ptr, 2); 172 rop_token_ptr = temp_ptr; 173 end; /* Right operand is a numeric literal. */ 174 175 if (rop_token_ptr -> data_name.type = rtc_dataname & rop_token_ptr -> data_name.bin_18) 176 then do; /* Right operand is a short binary. */ 177 /* Convert from short to long binary into a temporary. */ 178 temp_ptr = null (); 179 call cobol_short_to_longbin$temp (rop_token_ptr, temp_ptr); 180 rop_token_ptr = temp_ptr; 181 end; /* Right operand is a short binary. */ 182 183 /* Make a register token that references the Q register. */ 184 temp_ptr = null (); 185 call cobol_make_reg_token (temp_ptr, "0010"b); /* Generate code to load the left operand into the Q register. */ 186 call cobol_load_register (lop_token_ptr, temp_ptr); 187 188 189 if rop_token_ptr -> data_name.type = rtc_dataname 190 then do; /* Right operand is a data name. */ 191 /* Establish addressability to the data name. */ 192 input_ptr = addr (input_buff); 193 inst_ptr = addr (inst_buff); 194 reloc_ptr = addr (reloc_buff); 195 input_struc.type = 2; 196 input_struc.operand_no = 1; 197 input_struc.lock = 0; 198 input_struc.operand.size_sw (1) = 0; 199 input_struc.operand.token_ptr (1) = rop_token_ptr; 200 call cobol_addr (input_ptr, inst_ptr, reloc_ptr); 201 end; /* Right operand is a data name. */ 202 203 else do; /* Right operand is an immediate constant. */ 204 /* Insert the immediate value into the instruction. */ 205 substr (direct_lower_inst, 1, 18) = 206 substr (unspec (rop_token_ptr -> immed_const.const_value), 19, 18); 207 inst_ptr = addr (direct_lower_inst); 208 reloc_ptr = null (); 209 end; /* Right operand is an immediate constant. */ 210 211 if operation_code = 1 212 then inst_struc_basic.fill1_op = MPY; 213 else inst_struc_basic.fill1_op = DIV; 214 215 /* Lock the A register, because multiplication or division uses the A for 216* the computation. */ 217 register_struc.what_reg = 1; /* A */ 218 register_struc.lock = 1; 219 register_struc.contains = 0; 220 call cobol_register$load (addr (register_struc)); 221 222 /* Emit the MPY or DIV instruction. */ 223 call cobol_emit (inst_ptr, reloc_ptr, 1); 224 225 /* Make a register token that describes the result of the multiply or divide. */ 226 if operation_code = 1 /* MPY */ 227 then reg_temp = "0011"b; /* Product of multiply is in A and Q */ 228 else reg_temp = "0010"b; /* Quotient of divide is in Q. (remainder is in A ) */ 229 call cobol_make_reg_token (result_token_ptr, reg_temp); 230 231 /***..... if Trace_Bit then call cobol_gen_driver_$Tr_End(cmb);/**/ 232 233 return; 234 235 /***..... dcl cmb char(22) init("COBOL_MULTIPLY2_BINARY");/**/ 236 237 /***..... dcl cobol_gen_driver_$Tr_Beg entry(char(*));/**/ 238 /***..... dcl cobol_gen_driver_$Tr_End entry(char(*));/**/ 239 240 /***..... dcl Trace_Bit bit(1) static external;/**/ 241 /***..... dcl Trace_Lev fixed bin static external;/**/ 242 /***..... dcl Trace_Line char(36) static external;/**/ 243 /***..... dcl ioa_ entry options(variable); /**/ 244 245 246 /* INCLUDE FILES USED BY THIS PROCEDURE */ 247 248 /***** Declaration for builtin function *****/ 249 250 dcl (substr, mod, binary, fixed, addr, addrel, rel, length, string, unspec, null, index) 251 builtin; 252 253 /***** End of declaration for builtin function *****/ 254 1 1 1 2 /* BEGIN INCLUDE FILE ... cobol_type9.incl.pl1 */ 1 3 /* Last modified on 11/19/76 by ORN */ 1 4 1 5 /* 1 6*A type 9 data name token is entered into the name table by the data 1 7*division syntax phase for each data name described in the data division. 1 8*The replacement phase subsequently replaces type 8 user word references 1 9*to data names in the procedure division minpral file with the corresponding 1 10*type 9 tokens from the name table. 1 11**/ 1 12 1 13 /* dcl dn_ptr ptr; */ 1 14 1 15 /* BEGIN DECLARATION OF TYPE9 (DATA NAME) TOKEN */ 1 16 dcl 1 data_name based (dn_ptr), 2 1 2 2 /* begin include file ... cobol_TYPE9.incl.pl1 */ 2 3 /* Last modified on 06/19/77 by ORN */ 2 4 /* Last modified on 12/28/76 by FCH */ 2 5 2 6 /* header */ 2 7 2 size fixed bin, 2 8 2 line fixed bin, 2 9 2 column fixed bin, 2 10 2 type fixed bin, 2 11 /* body */ 2 12 2 string_ptr ptr, 2 13 2 prev_rec ptr, 2 14 2 searched bit (1), 2 15 2 duplicate bit (1), 2 16 2 saved bit (1), 2 17 2 debug_ind bit (1), 2 18 2 filler2 bit (3), 2 19 2 used_as_sub bit (1), 2 20 2 def_line fixed bin, 2 21 2 level fixed bin, 2 22 2 linkage fixed bin, 2 23 2 file_num fixed bin, 2 24 2 size_rtn fixed bin, 2 25 2 item_length fixed bin(24), 2 26 2 places_left fixed bin, 2 27 2 places_right fixed bin, 2 28 /* description */ 2 29 2 file_section bit (1), 2 30 2 working_storage bit (1), 2 31 2 constant_section bit (1), 2 32 2 linkage_section bit (1), 2 33 2 communication_section bit (1), 2 34 2 report_section bit (1), 2 35 2 level_77 bit (1), 2 36 2 level_01 bit (1), 2 37 2 non_elementary bit (1), 2 38 2 elementary bit (1), 2 39 2 filler_item bit (1), 2 40 2 s_of_rdf bit (1), 2 41 2 o_of_rdf bit (1), 2 42 2 bin_18 bit (1), 2 43 2 bin_36 bit (1), 2 44 2 pic_has_l bit (1), 2 45 2 pic_is_do bit (1), 2 46 2 numeric bit (1), 2 47 2 numeric_edited bit (1), 2 48 2 alphanum bit (1), 2 49 2 alphanum_edited bit (1), 2 50 2 alphabetic bit (1), 2 51 2 alphabetic_edited bit (1), 2 52 2 pic_has_p bit (1), 2 53 2 pic_has_ast bit (1), 2 54 2 item_signed bit(1), 2 55 2 sign_separate bit (1), 2 56 2 display bit (1), 2 57 2 comp bit (1), 2 58 2 ascii_packed_dec_h bit (1), /* as of 8/16/76 this field used for comp8. */ 2 59 2 ascii_packed_dec bit (1), 2 60 2 ebcdic_packed_dec bit (1), 2 61 2 bin_16 bit (1), 2 62 2 bin_32 bit (1), 2 63 2 usage_index bit (1), 2 64 2 just_right bit (1), 2 65 2 compare_argument bit (1), 2 66 2 sync bit (1), 2 67 2 temporary bit (1), 2 68 2 bwz bit (1), 2 69 2 variable_length bit (1), 2 70 2 subscripted bit (1), 2 71 2 occurs_do bit (1), 2 72 2 key_a bit (1), 2 73 2 key_d bit (1), 2 74 2 indexed_by bit (1), 2 75 2 value_numeric bit (1), 2 76 2 value_non_numeric bit (1), 2 77 2 value_signed bit (1), 2 78 2 sign_type bit (3), 2 79 2 pic_integer bit (1), 2 80 2 ast_when_zero bit (1), 2 81 2 label_record bit (1), 2 82 2 sign_clause_occurred bit (1), 2 83 2 okey_dn bit (1), 2 84 2 subject_of_keyis bit (1), 2 85 2 exp_redefining bit (1), 2 86 2 sync_in_rec bit (1), 2 87 2 rounded bit (1), 2 88 2 ad_bit bit (1), 2 89 2 debug_all bit (1), 2 90 2 overlap bit (1), 2 91 2 sum_counter bit (1), 2 92 2 exp_occurs bit (1), 2 93 2 linage_counter bit (1), 2 94 2 rnm_01 bit (1), 2 95 2 aligned bit (1), 2 96 2 not_user_writable bit (1), 2 97 2 database_key bit (1), 2 98 2 database_data_item bit (1), 2 99 2 seg_num fixed bin, 2 100 2 offset fixed bin(24), 2 101 2 initial_ptr fixed bin, 2 102 2 edit_ptr fixed bin, 2 103 2 occurs_ptr fixed bin, 2 104 2 do_rec char(5), 2 105 2 bitt bit (1), 2 106 2 byte bit (1), 2 107 2 half_word bit (1), 2 108 2 word bit (1), 2 109 2 double_word bit (1), 2 110 2 half_byte bit (1), 2 111 2 filler5 bit (1), 2 112 2 bit_offset bit (4), 2 113 2 son_cnt bit (16), 2 114 2 max_red_size fixed bin(24), 2 115 2 name_size fixed bin, 2 116 2 name char(0 refer(data_name.name_size)); 2 117 2 118 2 119 2 120 /* end include file ... cobol_TYPE9.incl.pl1 */ 2 121 1 17 1 18 /* END DECLARATION OF TYPE9 (DATA NAME) TOKEN */ 1 19 1 20 /* END INCLUDE FILE ... cobol_type9.incl.pl1 */ 1 21 255 3 1 3 2 /* BEGIN INCLUDE FILE ... cobol_record_types.incl.pl1 */ 3 3 /* <<< LAST MODIFIED ON 09-09-75 by tlf >>> */ 3 4 3 5 dcl rtc_resword fixed bin (15) int static init(1); 3 6 dcl rtc_numlit fixed bin (15) int static init(2); 3 7 dcl rtc_alphalit fixed bin (15) int static init(3); 3 8 dcl rtc_picstring fixed bin (15) int static init(4); 3 9 dcl rtc_diag fixed bin (15) int static init(5); 3 10 dcl rtc_source fixed bin (15) int static init(6); 3 11 dcl rtc_procdef fixed bin (15) int static init(7); 3 12 dcl rtc_userwd fixed bin (15) int static init(8); 3 13 dcl rtc_dataname fixed bin (15) int static init(9); 3 14 dcl rtc_indexname fixed bin (15) int static init(10); 3 15 dcl rtc_condname fixed bin (15) int static init(11); 3 16 dcl rtc_filedef fixed bin (15) int static init(12); 3 17 dcl rtc_commdesc fixed bin (15) int static init(13); 3 18 dcl rtc_debugitems fixed bin (15) int static init(14); 3 19 dcl rtc_savedarea fixed bin (15) int static init(15); 3 20 dcl rtc_sortmerge fixed bin (15) int static init(16); 3 21 dcl rtc_mnemonic fixed bin (15) int static init(17); 3 22 dcl rtc_pararef fixed bin (15) int static init(18); 3 23 dcl rtc_eos fixed bin (15) int static init(19); 3 24 dcl rtc_reportname fixed bin (15) int static init(20); 3 25 dcl rtc_groupname fixed bin (15) int static init(21); 3 26 dcl rtc_reportentry fixed bin (15) int static init(22); 3 27 dcl rtc_unknown1 fixed bin (15) int static init(23); 3 28 dcl rtc_debugenable fixed bin (15) int static init(24); 3 29 dcl rtc_unknown2 fixed bin (15) int static init(25); 3 30 dcl rtc_unknown3 fixed bin (15) int static init(26); 3 31 dcl rtc_unknown4 fixed bin (15) int static init(27); 3 32 dcl rtc_unknown5 fixed bin (15) int static init(28); 3 33 dcl rtc_unknown6 fixed bin (15) int static init(29); 3 34 dcl rtc_internal_tag fixed bin (15) int static init(30); 3 35 dcl rtc_equate_tag fixed bin (15) int static init(31); 3 36 dcl rtc_register fixed bin (15) int static init(100); 3 37 dcl rtc_fdec_temp fixed bin (15) int static init(101); 3 38 dcl rtc_immed_const fixed bin (15) int static init(102); 3 39 3 40 /* END INCLUDE FILE ... cobol_record_types.incl.pl1 */ 3 41 256 4 1 4 2 /* BEGIN INCLUDE FILE ... cobol_addr_tokens.incl.pl1 */ 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(89-04-23,Zimmerman), approve(89-04-23,MCR8058), 4 7* audit(89-05-05,RWaters), install(89-05-24,MR12.3-1048): 4 8* MCR8058 cobol_addr_tokens.incl.pl1 Change array extents to refer to 4 9* constants rather than variables. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* Last modified on 10/1/74 by tg */ 4 14 4 15 4 16 /* parameter list */ 4 17 4 18 dcl (input_ptr, inst_ptr, reloc_ptr) ptr; 4 19 4 20 4 21 /* input_struc_basic is used for type 1 addressing */ 4 22 4 23 dcl 1 input_struc_basic based (input_ptr), 4 24 2 type fixed bin, 4 25 2 operand_no fixed bin, 4 26 2 lock fixed bin, 4 27 2 segno fixed bin, 4 28 2 char_offset fixed bin (24), 4 29 2 send_receive fixed bin; 4 30 4 31 4 32 dcl 1 input_struc based (input_ptr), 4 33 2 type fixed bin, 4 34 2 operand_no fixed bin, 4 35 2 lock fixed bin, 4 36 2 operand (0 refer (input_struc.operand_no)), 4 37 3 token_ptr ptr, 4 38 3 send_receive fixed bin, 4 39 3 ic_mod fixed bin, 4 40 3 size_sw fixed bin; 4 41 4 42 /* reloc_struc is used for all types of addressing * all types */ 4 43 4 44 dcl 1 reloc_struc (input_struc.operand_no + 1) based (reloc_ptr), 4 45 2 left_wd bit (5) aligned, 4 46 2 right_wd bit (5) aligned; 4 47 4 48 /* Instruction format for 1 word instruction */ 4 49 4 50 4 51 dcl 1 inst_struc_basic based (inst_ptr) aligned, 4 52 2 y unaligned, 4 53 3 pr bit (3) unaligned, 4 54 3 wd_offset bit (15) unaligned, 4 55 2 fill1_op bit (10) unaligned, 4 56 2 zero1 bit (1) unaligned, 4 57 2 pr_spec bit (1) unaligned, 4 58 2 tm bit (2) unaligned, 4 59 2 td bit (4) unaligned; 4 60 4 61 4 62 /* The detailed definitions of the fields in this structure 4 63* can be found in the GMAP manual section 8 */ 4 64 /* EIS instruction format for 2_4 word instructions */ 4 65 4 66 dcl 1 inst_struc based (inst_ptr) aligned, 4 67 2 inst unaligned, 4 68 3 zero1 bit (2) unaligned, 4 69 3 mf3 unaligned, 4 70 4 pr_spec bit (1) unaligned, 4 71 4 reg_or_length bit (1) unaligned, 4 72 4 zero2 bit (1) unaligned, 4 73 4 reg_mod bit (4) unaligned, 4 74 3 zero3 bit (2) unaligned, 4 75 3 mf2 unaligned, 4 76 4 pr_spec bit (1) unaligned, 4 77 4 reg_or_length bit (1) unaligned, 4 78 4 zero4 bit (1) unaligned, 4 79 4 reg_mod bit (4) unaligned, 4 80 3 fill1_op bit (10) unaligned, 4 81 3 zero5 bit (1) unaligned, 4 82 3 mf1 unaligned, 4 83 4 pr_spec bit (1) unaligned, 4 84 4 reg_or_length bit (1) unaligned, 4 85 4 zero6 bit (1) unaligned, 4 86 4 reg_mod bit (4) unaligned, 4 87 2 desc_ext unaligned, 4 88 3 desc (512) unaligned, 4 89 4 desc_od bit (36) unaligned; 4 90 4 91 /* The detailed definitions of the fields in this structure 4 92* can be found in the GMAP manual section 8. 4 93* The desc_ext is the descriptor extension of this eis 4 94* instruction. The number of descriptors associated with 4 95* this instruction is equavalent to the operand number. 4 96* Depending on operand data type, the descriptor 4 97* can be alphanumeric or numeric. The structures of the 4 98* alphanumeric and the numeric descriptors are defined 4 99* below. */ 4 100 4 101 /* alphanumeric descriptor format */ 4 102 4 103 dcl 1 desc_an based (desc_an_ptr) unaligned, 4 104 2 desc_f (512) unaligned, 4 105 3 y unaligned, 4 106 4 pr bit (3) unaligned, 4 107 4 wd_offset bit (15) unaligned, 4 108 3 char_n bit (3) unaligned, 4 109 3 zero1 bit (1) unaligned, 4 110 3 ta bit (2), 4 111 3 n bit (12) unaligned; 4 112 4 113 4 114 /* The detailed definitions of the fields in this structure can 4 115* be found in the GMAP manual section 8. */ 4 116 /* numeric descriptor format */ 4 117 4 118 dcl desc_nn_ptr ptr; 4 119 dcl desc_an_ptr ptr; 4 120 4 121 4 122 dcl 1 desc_nn based (desc_nn_ptr) unaligned, 4 123 2 desc_f (512) unaligned, 4 124 3 y unaligned, 4 125 4 pr bit (3) unaligned, 4 126 4 wd_offset bit (15) unaligned, 4 127 3 digit_n bit (3) unaligned, 4 128 3 tn bit (1) unaligned, 4 129 3 sign_type bit (2) unaligned, 4 130 3 scal bit (6) unaligned, 4 131 3 n bit (6) unaligned; 4 132 4 133 4 134 /* The detailed definitions of fields in this structure can 4 135* be found in the GMAP manual section 8. */ 4 136 /* END INCLUDE FILE ... cobol_addr_tokens.incl.pl1 */ 4 137 257 5 1 5 2 /* BEGIN INCLUDE FILE... cobol_type102.incl.pl1 */ 5 3 /* Last modified on 1/19/76 by ORN */ 5 4 5 5 /* 5 6*An immediate constant token is created during the 5 7*generation of code that performs arithmetic in the hardware 5 8*registers, for any numeric literal token whose value is within 5 9*the range: (-131072,131071). 5 10**/ 5 11 5 12 dcl immed_const_ptr ptr; 5 13 5 14 /* BEGIN DECLARATION OF TYPE102 (IMMEDIATE CONSTANT) TOKEN */ 5 15 dcl 1 immed_const based(immed_const_ptr), 5 16 /* header */ 5 17 2 size fixed bin (15), 5 18 2 line fixed bin (15), 5 19 2 column fixed bin (15), 5 20 2 type fixed bin (15), 5 21 /* body */ 5 22 2 const_value fixed bin (35); 5 23 /* END DECLARATION OF TYPE102 (IMMEDIATE CONSTANT) TOKEN */ 5 24 5 25 /* 5 26*FIELD CONTENTS 5 27* 5 28*size The total size in bytes of this immediate 5 29* constant token. 5 30*line not used 5 31*column not used 5 32*type 102 5 33*const_value The fixed binary value of the immediate constant. 5 34**/ 5 35 5 36 /* END INCLUDE FILE... cobol_type102.incl.pl1 */ 5 37 258 259 260 end cobol_multiply2_binary; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/24/89 0834.8 cobol_multiply2_binary.pl1 >spec>install>MR12.3-1048>cobol_multiply2_binary.pl1 255 1 03/27/82 0439.9 cobol_type9.incl.pl1 >ldd>include>cobol_type9.incl.pl1 1-17 2 11/11/82 1712.7 cobol_TYPE9.incl.pl1 >ldd>include>cobol_TYPE9.incl.pl1 256 3 03/27/82 0439.8 cobol_record_types.incl.pl1 >ldd>include>cobol_record_types.incl.pl1 257 4 05/24/89 0811.7 cobol_addr_tokens.incl.pl1 >spec>install>MR12.3-1048>cobol_addr_tokens.incl.pl1 258 5 03/27/82 0439.8 cobol_type102.incl.pl1 >ldd>include>cobol_type102.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. DIV constant bit(10) initial packed unaligned dcl 96 ref 213 MPY constant bit(10) initial packed unaligned dcl 94 ref 211 addr builtin function dcl 250 ref 153 156 192 193 194 207 220 220 bin_18 21(13) based bit(1) level 2 packed packed unaligned dcl 1-16 ref 175 cobol_addr 000036 constant entry external dcl 89 ref 200 cobol_emit 000040 constant entry external dcl 90 ref 223 cobol_load_register 000032 constant entry external dcl 86 ref 186 cobol_make_bin_const 000026 constant entry external dcl 82 ref 163 171 cobol_make_reg_token 000030 constant entry external dcl 84 ref 185 229 cobol_register$load 000024 constant entry external dcl 81 ref 220 cobol_short_to_longbin$temp 000034 constant entry external dcl 87 ref 179 const_value 4 based fixed bin(35,0) level 2 dcl 5-15 ref 205 contains 4 000140 automatic fixed bin(17,0) level 2 dcl 138 set ref 219* data_name based structure level 1 unaligned dcl 1-16 dec_zero_token 000011 internal static structure level 1 unaligned dcl 104 set ref 153 156 direct_lower_inst 000010 internal static bit(36) initial packed unaligned dcl 99 set ref 205* 207 fill1_op 0(18) based bit(10) level 2 packed packed unaligned dcl 4-51 set ref 211* 213* immed_const based structure level 1 unaligned dcl 5-15 input_buff 000100 automatic structure level 1 dcl 126 set ref 192 input_ptr 000156 automatic pointer dcl 4-18 set ref 192* 195 196 197 198 199 200* input_struc based structure level 1 unaligned dcl 4-32 inst_buff 000124 automatic structure level 1 dcl 129 set ref 193 inst_ptr 000160 automatic pointer dcl 4-18 set ref 193* 200* 207* 211 213 223* inst_struc_basic based structure level 1 dcl 4-51 lock 2 based fixed bin(17,0) level 2 in structure "input_struc" dcl 4-32 in procedure "cobol_multiply2_binary" set ref 197* lock 2 000140 automatic fixed bin(17,0) level 2 in structure "register_struc" dcl 138 in procedure "cobol_multiply2_binary" set ref 218* lop_token_ptr parameter pointer dcl 42 set ref 33 153 153* 159 163* 164* 186* null builtin function dcl 250 ref 162 170 178 184 208 operand 4 based structure array level 2 unaligned dcl 4-32 operand_no 1 based fixed bin(17,0) level 2 dcl 4-32 set ref 196* operation_code parameter fixed bin(17,0) dcl 45 ref 33 211 226 reg_temp 000154 automatic bit(4) packed unaligned dcl 149 set ref 226* 228* 229* register_struc 000140 automatic structure level 1 unaligned dcl 138 set ref 220 220 reloc_buff 000126 automatic structure level 1 dcl 132 set ref 194 reloc_ptr 000162 automatic pointer dcl 4-18 set ref 194* 200* 208* 223* result_token_ptr parameter pointer dcl 44 set ref 33 229* rop_token_ptr parameter pointer dcl 43 set ref 33 156 156* 167 171* 172* 175 175 179* 180* 189 199 205 rtc_dataname constant fixed bin(15,0) initial dcl 3-13 ref 175 189 rtc_numlit constant fixed bin(15,0) initial dcl 3-6 ref 159 167 rtc_resword constant fixed bin(15,0) initial dcl 3-5 ref 153 156 size_sw 10 based fixed bin(17,0) array level 3 dcl 4-32 set ref 198* substr builtin function dcl 250 set ref 205* 205 temp_ptr 000152 automatic pointer dcl 148 set ref 162* 163* 164 170* 171* 172 178* 179* 180 184* 185* 186* token_ptr 4 based pointer array level 3 dcl 4-32 set ref 199* type based fixed bin(17,0) level 2 in structure "input_struc" dcl 4-32 in procedure "cobol_multiply2_binary" set ref 195* type 3 based fixed bin(17,0) level 2 in structure "data_name" dcl 1-16 in procedure "cobol_multiply2_binary" ref 153 156 159 167 175 189 unspec builtin function dcl 250 ref 205 what_reg 000140 automatic fixed bin(17,0) level 2 dcl 138 set ref 217* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addrel builtin function dcl 250 binary builtin function dcl 250 desc_an based structure level 1 packed packed unaligned dcl 4-103 desc_an_ptr automatic pointer dcl 4-119 desc_nn based structure level 1 packed packed unaligned dcl 4-122 desc_nn_ptr automatic pointer dcl 4-118 dn_ptr automatic pointer dcl 135 fixed builtin function dcl 250 immed_const_ptr automatic pointer dcl 5-12 index builtin function dcl 250 input_struc_basic based structure level 1 unaligned dcl 4-23 inst_struc based structure level 1 dcl 4-66 length builtin function dcl 250 mod builtin function dcl 250 rel builtin function dcl 250 reloc_struc based structure array level 1 unaligned dcl 4-44 rtc_alphalit internal static fixed bin(15,0) initial dcl 3-7 rtc_commdesc internal static fixed bin(15,0) initial dcl 3-17 rtc_condname internal static fixed bin(15,0) initial dcl 3-15 rtc_debugenable internal static fixed bin(15,0) initial dcl 3-28 rtc_debugitems internal static fixed bin(15,0) initial dcl 3-18 rtc_diag internal static fixed bin(15,0) initial dcl 3-9 rtc_eos internal static fixed bin(15,0) initial dcl 3-23 rtc_equate_tag internal static fixed bin(15,0) initial dcl 3-35 rtc_fdec_temp internal static fixed bin(15,0) initial dcl 3-37 rtc_filedef internal static fixed bin(15,0) initial dcl 3-16 rtc_groupname internal static fixed bin(15,0) initial dcl 3-25 rtc_immed_const internal static fixed bin(15,0) initial dcl 3-38 rtc_indexname internal static fixed bin(15,0) initial dcl 3-14 rtc_internal_tag internal static fixed bin(15,0) initial dcl 3-34 rtc_mnemonic internal static fixed bin(15,0) initial dcl 3-21 rtc_pararef internal static fixed bin(15,0) initial dcl 3-22 rtc_picstring internal static fixed bin(15,0) initial dcl 3-8 rtc_procdef internal static fixed bin(15,0) initial dcl 3-11 rtc_register internal static fixed bin(15,0) initial dcl 3-36 rtc_reportentry internal static fixed bin(15,0) initial dcl 3-26 rtc_reportname internal static fixed bin(15,0) initial dcl 3-24 rtc_savedarea internal static fixed bin(15,0) initial dcl 3-19 rtc_sortmerge internal static fixed bin(15,0) initial dcl 3-20 rtc_source internal static fixed bin(15,0) initial dcl 3-10 rtc_unknown1 internal static fixed bin(15,0) initial dcl 3-27 rtc_unknown2 internal static fixed bin(15,0) initial dcl 3-29 rtc_unknown3 internal static fixed bin(15,0) initial dcl 3-30 rtc_unknown4 internal static fixed bin(15,0) initial dcl 3-31 rtc_unknown5 internal static fixed bin(15,0) initial dcl 3-32 rtc_unknown6 internal static fixed bin(15,0) initial dcl 3-33 rtc_userwd internal static fixed bin(15,0) initial dcl 3-12 string builtin function dcl 250 NAMES DECLARED BY EXPLICIT CONTEXT. cobol_multiply2_binary 000011 constant entry external dcl 33 start 000016 constant label dcl 153 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 456 520 335 466 Length 1012 335 42 256 121 14 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cobol_multiply2_binary 128 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 direct_lower_inst cobol_multiply2_binary 000011 dec_zero_token cobol_multiply2_binary STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cobol_multiply2_binary 000100 input_buff cobol_multiply2_binary 000124 inst_buff cobol_multiply2_binary 000126 reloc_buff cobol_multiply2_binary 000140 register_struc cobol_multiply2_binary 000152 temp_ptr cobol_multiply2_binary 000154 reg_temp cobol_multiply2_binary 000156 input_ptr cobol_multiply2_binary 000160 inst_ptr cobol_multiply2_binary 000162 reloc_ptr cobol_multiply2_binary 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. cobol_addr cobol_emit cobol_load_register cobol_make_bin_const cobol_make_reg_token cobol_register$load cobol_short_to_longbin$temp NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 33 000004 153 000016 156 000026 159 000035 162 000042 163 000044 164 000060 167 000063 170 000071 171 000073 172 000110 175 000113 178 000124 179 000126 180 000137 184 000142 185 000144 186 000157 189 000171 192 000177 193 000201 194 000203 195 000205 196 000207 197 000212 198 000213 199 000214 200 000215 201 000230 205 000231 207 000235 208 000237 211 000241 213 000252 217 000256 218 000260 219 000261 220 000262 223 000273 226 000310 228 000317 229 000323 233 000334 ----------------------------------------------------------- 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