ASSEMBLY LISTING OF SEGMENT >spec>install>1110>cu_.alm ASSEMBLED ON: 11/11/89 0950.0 mst Sat OPTIONS USED: -target l68 list symbols ASSEMBLED BY: ALM Version 8.14 March 1989 ASSEMBLER CREATED: 06/09/89 1002.3 mst Fri 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 " HISTORY COMMENTS: 13 " 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 14 " audit(86-07-15,Schroth), install(86-08-01,MR12.0-1108): 15 " add the entry points get_command_name and get_command_name_rel. Added 16 " the constants fb21_mask and null. 17 " 2) change(86-12-10,DGHowe), approve(86-12-10,PBF7375), 18 " audit(86-12-10,McInnis), install(86-12-17,MR12.0-1250): 19 " Bug fix to get_command_name_common. Redefine has_command_name_mask to be 20 " a full word 400000000000. Take the du modifier off of the anx0 for the 21 " has_command_name_mask. 22 " END HISTORY COMMENTS 23 24 25 " Command system utility subroutines 26 27 " Initially coded in December 1969 by R. C. Daley 28 " Modified by R Feiertag in 1970 to add entries arg_ptr_rel, grow_stack_frame, 29 " shrink_stack_frame, get_cp, and get_cl 30 " Modified by V. Voydock in October 1970 as part of reworking of process environment 31 " Modified by C. Tavares in May 1971 to add entry caller_ptr 32 " Modified by V. Voydock in June 1971 to add entries "ready_proc", 33 " "get_ready_proc", and "set_ready_proc" 34 " Modified by V. Voydock in May 1972 to add entries get_ready_mode and set_ready_mode, 35 " and to make cu_$grow_stack_frame round up to mod 16 boundaries 36 " Split into two pieces in May 1972 by V. Voydock as part of fast command loop 37 " Modified 21 June 1972 by P. Green to fix arg_ptr not to assume descriptors are present, 38 " and to handle Version 2 descriptors properly. 39 " Modified for follow-on by R. Snyder July 20, 1972 40 " Modified 11/19/76 by M. Weaver to add entries generate_call, (get set)_command_processor, 41 " and (get set)_ready_procedure 42 " Modified May 1977 by Larry Johnson for arg_count_rel entry. 43 " Modified Aug 12, 1977 by S. Webber to remerge with rest_of_cu_ 44 " Modified: August 1980 by G. Palter to add reset_(command_processor ready_procedure 45 " cl_intermediary), make cu_$(generate_call cl cp ready_proc) work with internal 46 " procedures, add an optional second argument to cu_$arg_count, and add 47 " cu_$evaluate_active_string and cu_$(get set reset)_evaluate_active_string. 48 " Modified September 1982 by C. Hornig to remove reference to pl1_operators. 49 " Modified: 16 September 1982 by G. Palter to make cu_$stack_frame_size work (phx13864) 50 " Modified: 16 January 1983 by G. Palter to make cu_$arg_ptr and friends reject invalid 51 " argument numbers (phx14511) 52 " Modified: 1 March 1984 by G. Palter to not use LDAQ/STAQ for copying pointers (phx15722) 53 " and to always initialize the pointer and length arguments of cu_$*arg_ptr* to null and 54 " zero, respectively (phx16016) 55 56 " 57 000000 58 name cu_ 59 60 " TABLE OF CONTENTS 61 000643 62 entry af_arg_count " return # arguments if an AF 000650 63 entry af_arg_count_rel " ... for given arg list 000657 64 entry af_arg_ptr " get ptr/lth of an argument if an AF 000706 65 entry af_arg_ptr_rel " ... for given arg list 000616 66 entry af_return_arg " return # args and ptr/lth of AF return value 000632 67 entry af_return_arg_rel " ... for given arg list 000450 68 entry arg_count " get number of arguments 000453 69 entry arg_count_rel " ... for given arg list 000770 70 entry arg_list_ptr " get ptr to argument list 000526 71 entry arg_ptr " get ptr to argument(n) 000523 72 entry arg_ptr_rel " ... for given arg list 000764 73 entry caller_ptr " get codeptr to invoker's caller 000012 74 entry cl " entry to call to re-enter environment 000071 75 entry cp " entry to call current command processor 001053 76 entry decode_entry_value " extract ptrs from pl1 entry variable 000227 77 entry evaluate_active_string " call to evaluate an active string 000372 78 entry gen_call " call, given codeptr and arg list ptr 000267 79 entry generate_call " call, given entry variable and arg list ptr 000046 80 entry get_cl " get codeptr to current command level re-entry procedure 000027 81 entry get_cl_intermediary " get entry variable for current command level re-entry procedure 000100 82 entry get_command_processor " get entry variable for current command processor 000563 83 entry get_command_name_rel " get command name 000566 84 entry get_command_name " get command name 000117 85 entry get_cp " get codeptr to current command processor 000236 86 entry get_evaluate_active_string " get entry variable to evaluate an active string 000224 87 entry get_ready_mode " get value of internal ready flags 000176 88 entry get_ready_proc " get codeptr to procedure to be called after each command line 000157 89 entry get_ready_procedure " get entry variable to be called after each command line 001002 90 entry grow_stack_frame " allocate space in stack frame (mod 16) 001070 91 entry level_get " get current validation level 001071 92 entry level_set " set current validation level 001061 93 entry make_entry_value " create pl1 entry variable from codeptr and enironmentptr 000376 94 entry ptr_call " call, given codeptr in arg list 000142 95 entry ready_proc " entry to call after each command line is processed 000065 96 entry reset_cl_intermediary " reset to default command level re-entry procedure 000136 97 entry reset_command_processor " reset to default command processor 000263 98 entry reset_evaluate_active_string " reset to default entry to evaluate an active string 000215 99 entry reset_ready_procedure " reset to default ready message printer 000057 100 entry set_cl " set external entry for re-entry to command level 000051 101 entry set_cl_intermediary " set entry for re-entry to command level 000122 102 entry set_command_processor " set entry for current command processor 000130 103 entry set_cp " set external entry for current command processor 000255 104 entry set_evaluate_active_string " set entry to evaluate an active string 000221 105 entry set_ready_mode " set value of internal ready flags 000207 106 entry set_ready_proc " set external entry to be called after each command line 000201 107 entry set_ready_procedure " set entry to be called after each command line 001021 108 entry shrink_stack_frame " free up space in stack frame 000773 109 entry stack_frame_ptr " get ptr to stack frame 000775 110 entry stack_frame_size " get size of stack frame 111 112 " 113 include stack_header 1-1 " BEGIN INCLUDE FILE ... stack_header.incl.alm 3/72 Bill Silver 1-2 " 1-3 " modified 7/76 by M. Weaver for *system links and more system use of areas 1-4 " modified 3/77 by M. Weaver to add rnt_ptr 1-5 " modified 7/77 by S. Webber to add run_unit_depth and assign_linkage_ptr 1-6 " modified 6/83 by J. Ives to add trace_frames and in_trace. 1-7 1-8 " HISTORY COMMENTS: 1-9 " 1) change(86-06-24,DGHowe), approve(86-06-24,MCR7396), 1-10 " audit(86-08-05,Schroth), install(86-11-03,MR12.0-1206): 1-11 " added the heap_header_ptr definition 1-12 " 2) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 1-13 " audit(86-10-10,Fawcett), install(86-11-03,MR12.0-1206): 1-14 " Modified to support control point management. These changes were 1-15 " actually made in February 1985 by G. Palter. 1-16 " 3) change(86-10-22,Fawcett), approve(86-10-22,MCR7473), 1-17 " audit(86-10-22,Farley), install(86-11-03,MR12.0-1206): 1-18 " Remove the old_lot pointer and replace it with cpm_data_ptr. Use the 18 1-19 " bit pad after cur_lot_size for the cpm_enabled. This was done to save 1-20 " some space int the stack header and change the cpd_ptr unal to 1-21 " cpm_data_ptr (ITS pair). 1-22 " END HISTORY COMMENTS 1-23 000004 1-24 equ stack_header.cpm_data_ptr,4 ptr to control point for this stack 000006 1-25 equ stack_header.combined_stat_ptr,6 ptr to separate static area 1-26 000010 1-27 equ stack_header.clr_ptr,8 ptr to area containing linkage sections 000012 1-28 equ stack_header.max_lot_size,10 number of words allowed in lot (DU) 000012 1-29 equ stack_header.main_proc_invoked,10 nonzero if main proc was invoked in run unit (DL) 000012 1-30 equ stack_header.run_unit_depth,10 number of active run units stacked (DL) 000013 1-31 equ stack_header.cur_lot_size,11 DU number of words (entries) in lot 000013 1-32 equ stack_header.cpm_enabled,11 DL non-zero if control point management is enabled 000014 1-33 equ stack_header.system_free_ptr,12 ptr to system storage area 000016 1-34 equ stack_header.user_free_ptr,14 ptr to user storage area 1-35 000020 1-36 equ stack_header.parent_ptr,16 ptr to parent stack or null 000022 1-37 equ stack_header.stack_begin_ptr,18 ptr to first stack frame 000024 1-38 equ stack_header.stack_end_ptr,20 ptr to next useable stack frame 000026 1-39 equ stack_header.lot_ptr,22 ptr to the lot for the current ring 1-40 000030 1-41 equ stack_header.signal_ptr,24 ptr to signal proc for current ring 000032 1-42 equ stack_header.bar_mode_sp,26 value of sp before entering bar mode 000034 1-43 equ stack_header.pl1_operators_ptr,28 ptr: pl1_operators_$operator_table 000036 1-44 equ stack_header.call_op_ptr,30 ptr to standard call operator 1-45 000040 1-46 equ stack_header.push_op_ptr,32 ptr to standard push operator 000042 1-47 equ stack_header.return_op_ptr,34 ptr to standard return operator 000044 1-48 equ stack_header.ret_no_pop_op_ptr,36 ptr: stand. return/ no pop operator 000046 1-49 equ stack_header.entry_op_ptr,38 ptr to standard entry operator 1-50 000050 1-51 equ stack_header.trans_op_tv_ptr,40 ptr to table of translator operator ptrs 000052 1-52 equ stack_header.isot_ptr,42 pointer to ISOT 000054 1-53 equ stack_header.sct_ptr,44 pointer to System Condition Table 000056 1-54 equ stack_header.unwinder_ptr,46 pointer to unwinder for current ring 1-55 000060 1-56 equ stack_header.sys_link_info_ptr,48 ptr to *system link name table 000062 1-57 equ stack_header.rnt_ptr,50 ptr to reference name table 000064 1-58 equ stack_header.ect_ptr,52 ptr to event channel table 000066 1-59 equ stack_header.assign_linkage_ptr,54 ptr to area for hcs_$assign_linkage calls 000070 1-60 equ stack_header.heap_header_ptr,56 ptr to heap header. 000072 1-61 equ stack_header.trace_frames,58 stack of trace_catch_ frames 000073 1-62 equ stach_header.trace_top_ptr,59 trace pointer 000074 1-63 equ stack_header.in_trace,60 trace antirecurse bit 000100 1-64 equ stack_header_end,64 length of stack header 1-65 1-66 1-67 1-68 000000 1-69 equ trace_frames.count,0 number of trace frames on stack 000001 1-70 equ trace_frames.top_ptr,1 packed pointer to top one 1-71 1-72 " The following constant is an offset within the pl1 operators table. 1-73 " It references a transfer vector table. 1-74 000551 1-75 bool tv_offset,551 1-76 1-77 1-78 " The following constants are offsets within this transfer vector table. 1-79 001170 1-80 equ call_offset,tv_offset+271 001171 1-81 equ push_offset,tv_offset+272 001172 1-82 equ return_offset,tv_offset+273 001173 1-83 equ return_no_pop_offset,tv_offset+274 001174 1-84 equ entry_offset,tv_offset+275 1-85 1-86 1-87 " END INCLUDE FILE stack_header.incl.alm 114 115 include stack_frame 2-1 " 2-2 " BEGIN INCLUDE FILE ... stack_frame.incl.alm 6/72 RBS 2-3 " 2-4 " Modified: 16 Dec 1977, D. Levin - to add fio_ps_ptr 2-5 " Modified: 3 Feb 1978, P. Krupp - to add run_unit_manager_bit & main_proc_bit 2-6 " Modified: 21 March 1978, D. Levin - change fio_ps_ptr to support_ptr 2-7 " 000020 2-8 equ stack_frame.prev_sp,16 000020 2-9 equ stack_frame.condition_word,16 000022 2-10 equ stack_frame.next_sp,18 000022 2-11 equ stack_frame.signaller_word,18 000024 2-12 equ stack_frame.return_ptr,20 000026 2-13 equ stack_frame.entry_ptr,22 000030 2-14 equ stack_frame.operator_ptr,24 000030 2-15 equ stack_frame.lp_ptr,24 000032 2-16 equ stack_frame.arg_ptr,26 000034 2-17 equ stack_frame.static_ptr,28 000035 2-18 equ stack_frame.support_ptr,29 " only used by fortran I/O 000036 2-19 equ stack_frame.on_unit_rel_ptrs,30 000037 2-20 equ stack_frame.operator_ret_ptr,31 000037 2-21 equ stack_frame.translator_id,31 000040 2-22 equ stack_frame.regs,32 000060 2-23 equ stack_frame.min_length,48 000020 2-24 equ stack_frame.flag_word,16 020000 2-25 bool stack_frame.main_proc_bit,020000 (DL) 010000 2-26 bool stack_frame.run_unit_manager,010000 (DL) 004000 2-27 bool stack_frame.signal_bit,004000 (DL) 002000 2-28 bool stack_frame.crawl_out_bit,002000 (DL) 001000 2-29 bool stack_frame.signaller_bit,001000 (DL) 000400 2-30 bool stack_frame.link_trap_bit,000400 (DL) 000200 2-31 bool stack_frame.support_bit,000200 (DL) 000100 2-32 bool stack_frame.condition_bit,000100 (DL) 2-33 2-34 " 2-35 " END INCLUDE FILE ... stack_frame.incl.alm 2-36 " 116 117 " 118 119 tempd temp_ptr,temp_ptr2 " temporaries for ptr_call 120 121 122 " Constants 123 010120 124 bool var_desc,10120 " identifies PL1 version 1 varying character string 130000 125 bool v2_var,130000 " identifies PL1 version 2 varying character string 126 000000 127 fb21_mask: 000000 aa 000017 777777 128 oct 000017777777 " mask off fixed bin 21 129 000001 130 descriptor_mask: 000001 aa 000077 777777 131 oct 000077777777 " mask off top 12 bits 132 000002 133 desc_mask: " mask for PL1 version 1 descriptor (ignore sets/uses) 000002 aa 000007 777777 134 vfd 15/0,21/-1 135 000003 136 has_command_name_mask: 000003 aa 400000 000000 137 oct 400000000000 138 000004 aa 403777 777777 139 v2_mask: vfd 1/1,6/0,29/-1 " Mask for PL1 version 2 (modern style) 140 000005 aa 000000 0110 03 141 even 000006 aa 077777 000043 142 null: its -1,1 " null pointer 000007 aa 000001 000000 000010 aa 077777 000077 143 ptrmask: oct 077777000077,777777077077 " mask for pointer comparisons 000011 aa 777777 077077 144 145 146 " Variables 147 148 use int_stat internal static storage 149 join /static/int_stat 150 000000 aa 400000 000000 151 cl_arg: oct 400000000000 152 000001 153 ready_mode: 000001 aa 400000 000000 154 oct 400000000000 155 156 even 000002 aa 077777 000043 157 cl_entry: its -1,1 " entry to re-enter command level 000003 aa 000001 000000 000004 aa 077777 000043 158 its -1,1 000005 aa 000001 000000 159 000006 160 cl_arglist: 000006 aa 000002 000004 161 vfd 18/2,18/4 000007 aa 000000 000000 162 vfd 18/0,18/0 000010 aa 077777 000043 163 its -1,1 000011 aa 000001 000000 164 000012 aa 077777 000043 165 cp_entry: its -1,1 " entry for current command processor 000013 aa 000001 000000 000014 aa 077777 000043 166 its -1,1 000015 aa 000001 000000 167 000016 168 ready_entry: " entry for current ready procedure 000016 aa 077777 000043 169 its -1,1 000017 aa 000001 000000 000020 aa 077777 000043 170 its -1,1 000021 aa 000001 000000 171 000022 172 ready_arglist: 000022 aa 000002 000004 173 vfd 18/2,18/4 arglist for call to ready procedure 000023 aa 000000 000000 174 dec 0 000024 aa 077777 000043 175 its -1,1 000025 aa 000001 000000 176 000026 177 eas_entry: " entry for current active string evalauator 000026 aa 077777 000043 178 its -1,1 000027 aa 000001 000000 000030 aa 077777 000043 179 its -1,1 000031 aa 000001 000000 180 181 use main 182 " 183 184 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 185 " 186 " cl ..... entry to re-enter command level upon receipt of error conditions 187 " 188 " call cu_$cl (cl_modes); 189 " 190 " dcl 1 cl_modes aligned, /* optional argument */ 191 " 2 resetread bit (1) unaligned, /* ON => do a resetread on user_i/o */ 192 " 2 pad bit (34) unaligned; 193 " 194 " If cl_modes isn't supplied, a canned structure is passed to request a resetread 195 " 196 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 197 000012 aa 0 00000 2351 00 198 cl: lda ap|0 " pick up arg list header 000013 aa 777777 3150 03 199 cana =o777777,du " any arguments passed? 000014 0a 000020 6010 00 200 tnz cl_with_args " ... yes -- use supplied arglist 000015 9a 5 00006 3501 00 201 eppap pr5|cl_arglist " ... no -- use canned arglist 000016 9a 5 00000 3521 00 202 epp2 pr5|cl_arg " ... which requests resetread 000017 9a 5 00010 2521 00 203 spri2 pr5|cl_arglist+2 204 000020 205 cl_with_args: 000020 9a 5 00002 3515 00 206 epp1 pr5|cl_entry " will be calling this entry variable 000021 aa 1 00000 2371 00 207 ldaq pr1|0 " is it a user specified value? 000022 0a 000006 6770 00 208 eraq null 000023 0a 000010 3770 00 209 anaq ptrmask 000024 0a 000272 6010 00 210 tnz generate_call_common " ... yes -- go off and perform the call 211 000025 4a 4 00010 7131 20 212 callsp get_to_cl_$unclaimed_signal " ... no -- use default (external) proc 000026 aa 7 00044 7101 20 213 short_return 214 215 " 216 217 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 218 " 219 " get_cl_intermediary .... entry to retrieve entry var to re-enter command level 220 " 221 " call cu_$get_cl_intermediary(cl_entry); 222 " 223 " 1. cl_entry (entry) - entry variable to procedure to re-enter command level 224 " 225 " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " 226 000027 227 get_cl_intermediary: 000027 aa 0 00002 3521 20 228 epp2 ap|2,* " get ptr to entry variable argument 000030 9a 5 00002 2371 00 229 ldaq pr5|cl_entry " is it the default procedure? 000031 0a 000006 6770 00 230 eraq null 000032 0a 000010 3770 00 231 anaq ptrmask 000033 0a 000041 6010 00 232 tnz get_cl_intermediary_non_default " ... no -- return the static one 233 000034 4a 4 00010 3535 20 234 epp3 get_to_cl_$unclaimed_signal " ... yes -- return default value 000035 aa 2 00000 2535 00 235 spri3 pr2|0 000036 0a 000006 2370 00 236 ldaq null " (it's external) 000037 aa 2 00002 7571 00 237 staq pr2|2 000040 aa 7 00044 7101 20 238 short_return 239 000041 240 get_cl_intermediary_non_default: 000041 9a 5 00002 3535 20 241 epp3 pr5|cl_entry,* " copy from our internal static 000042 aa 2 00000 2535 00 242 spri3 pr2|0 000043 9a 5 00004 3535 20 243 epp3 pr5|cl_entry+2,* 000044 aa 2 00002 2535 00 244 spri3 pr2|2 000045 aa 7 00044 7101 20 245 short_return 246 247 248 249 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 250 " 251 " get_cl .... entry to retrieve procedure ptr to re-enter command level 252 " 253 " call cu_$get_cl(cl_ptr); 254 " 255 " 1. cl_ptr (ptr) - pointer to procedure to re-enter command level 256 " 257 " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " 258 000046 9a 5 00002 3521 20 259 get_cl: epp2 pr5|cl_entry,* " pick up current command level proc ptr 000047 aa 0 00002 2521 20 260 spri2 ap|2,* 000050 aa 7 00044 7101 20 261 short_return 262 263 " 264 265 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 266 " 267 " set_cl_intermediary ..... entry to specify procedure to call to re-enter command level 268 " 269 " call cu_$set_cl_intermediary(cl_entry) 270 " 271 " 1. cl_entry (entry) - entry to procedure to re-enter command level 272 " 273 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 274 000051 275 set_cl_intermediary: 000051 aa 0 00002 3521 20 276 epp2 ap|2,* " get pointer to caller's entry var 000052 aa 2 00000 3535 20 277 epp3 pr2|0,* " copy entry variable to our static 000053 9a 5 00002 2535 00 278 spri3 pr5|cl_entry 000054 aa 2 00002 3535 20 279 epp3 pr2|2,* 000055 9a 5 00004 2535 00 280 spri3 pr5|cl_entry+2 000056 aa 7 00044 7101 20 281 short_return 282 283 284 285 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 286 " 287 " set_cl ..... entry to specify external proc to call to re-enter command level 288 " 289 " call cu_$set_cl(cl_ptr) 290 " 291 " 1. cl_ptr (ptr) - pointer to external proc to re-enter command level; 292 " if null, the default procedure is used 293 " 294 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 295 000057 aa 0 00002 3521 20 296 set_cl: epp2 ap|2,* " get ptr to the codeptr 000060 aa 2 00000 3521 20 297 epp2 pr2|0,* " copy codeptr to our static 000061 9a 5 00002 2521 00 298 spri2 pr5|cl_entry 000062 0a 000006 2370 00 299 ldaq null " indicate external procedure 000063 9a 5 00004 7571 00 300 staq pr5|cl_entry+2 000064 aa 7 00044 7101 20 301 short_return 302 303 304 305 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 306 " 307 " reset_cl_intermediary .... entry to reset to default re-enter command level proc 308 " 309 " call cu_$reset_cl_intermediary () 310 " 311 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 312 000065 313 reset_cl_intermediary: 000065 0a 000006 2370 00 314 ldaq null " set to null -- cu_$cl will special case 000066 9a 5 00002 7571 00 315 staq pr5|cl_entry 000067 9a 5 00004 7571 00 316 staq pr5|cl_entry+2 000070 aa 7 00044 7101 20 317 short_return 318 319 " 320 321 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 322 " 323 " cp ..... entry to-call currently specified command processor 324 " 325 " call cu_$cp (line_ptr, line_lth, code) 326 " 327 " 1. line_ptr (ptr) - pointer to command line to execute 328 " 2. line_lth (fixed bin(21)) - length of command line 329 " 3. code (fixed bin(35)) - standard status code (Output) 330 " 331 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 332 000071 9a 5 00012 3515 00 333 cp: epp1 pr5|cp_entry " will be calling this entry variable 000072 aa 1 00000 2371 00 334 ldaq pr1|0 " is it user supplied procedure? 000073 0a 000006 6770 00 335 eraq null 000074 0a 000010 3770 00 336 anaq ptrmask 000075 0a 000272 6010 00 337 tnz generate_call_common " ... yes -- go off and perform the call 338 000076 4a 4 00012 7131 20 339 callsp command_processor_$command_processor_ " ... no -- use default proc 000077 aa 7 00044 7101 20 340 short_return 341 342 " 343 344 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 345 " 346 " get_command_processor .... entry to retrieve entry var of current command processor 347 " 348 " call cu_$get_command_processor (cp_entry); 349 " 350 " 1. cp_entry (entry) - entry variable of current command processor 351 " 352 " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " 353 000100 354 get_command_processor: 000100 aa 0 00002 3521 20 355 epp2 ap|2,* " get pointer to user's entry variable 000101 9a 5 00012 2371 00 356 ldaq pr5|cp_entry " is default procedure in use? 000102 0a 000006 6770 00 357 eraq null 000103 0a 000010 3770 00 358 anaq ptrmask 000104 0a 000112 6010 00 359 tnz get_cp_non_default " ... no 360 000105 4a 4 00012 3535 20 361 epp3 command_processor_$command_processor_ " ... yes -- return it 000106 aa 2 00000 2535 00 362 spri3 pr2|0 000107 0a 000006 2370 00 363 ldaq null 000110 aa 2 00002 7571 00 364 staq pr2|2 " (it's external) 000111 aa 7 00044 7101 20 365 short_return 366 000112 367 get_cp_non_default: 000112 9a 5 00012 3535 20 368 epp3 pr5|cp_entry,* " copy from our internal static 000113 aa 2 00000 2535 00 369 spri3 pr2|0 000114 9a 5 00014 3535 20 370 epp3 pr5|cp_entry+2,* 000115 aa 2 00002 2535 00 371 spri3 pr2|2 000116 aa 7 00044 7101 20 372 short_return 373 374 375 376 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 377 " 378 " get_cp .... entry to retrieve procedure ptr to current command processor 379 " 380 " call cu_$get_cp (cp_ptr); 381 " 382 " 1. cp_ptr (ptr) - pointer to current command processor 383 " 384 " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " 385 000117 9a 5 00012 3521 20 386 get_cp: epp2 pr5|cp_entry,* " pick up current command processor 000120 aa 0 00002 2521 20 387 spri2 ap|2,* 000121 aa 7 00044 7101 20 388 short_return 389 390 " 391 392 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 393 " 394 " set_command_processor ..... entry to specify procedure to call as the command processor 395 " 396 " call cu_$set_command_processor (cp_entry) 397 " 398 " 1. cp_entry (entry) - entry to become the command processor 399 " 400 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 401 000122 402 set_command_processor: 000122 aa 0 00002 3521 20 403 epp2 ap|2,* " get pointer to caller's entry var 000123 aa 2 00000 3535 20 404 epp3 pr2|0,* " copy entry variable to our static 000124 9a 5 00012 2535 00 405 spri3 pr5|cp_entry 000125 aa 2 00002 3535 20 406 epp3 pr2|2,* 000126 9a 5 00014 2535 00 407 spri3 pr5|cp_entry+2 000127 aa 7 00044 7101 20 408 short_return 409 410 411 412 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 413 " 414 " set_cp ..... entry to specify external proc to be command processor 415 " 416 " call cu_$set_cp (cp_ptr) 417 " 418 " 1. cp_ptr (ptr) - pointer to external proc to be the command processor; 419 " if null, the default procedure is used 420 " 421 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 422 000130 aa 0 00002 3521 20 423 set_cp: epp2 ap|2,* " get ptr to the codeptr 000131 aa 2 00000 3521 20 424 epp2 pr2|0,* " copy codeptr to our static 000132 9a 5 00012 2521 00 425 spri2 pr5|cp_entry 000133 0a 000006 2370 00 426 ldaq null " indicate external procedure 000134 9a 5 00014 7571 00 427 staq pr5|cp_entry+2 000135 aa 7 00044 7101 20 428 short_return 429 430 431 432 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 433 " 434 " reset_command_processor .... entry to reset to default command processor 435 " 436 " call cu_$reset_command_processor () 437 " 438 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 439 000136 440 reset_command_processor: 000136 0a 000006 2370 00 441 ldaq null " reset to null -- cu_$cp will then 000137 9a 5 00012 7571 00 442 staq pr5|cp_entry " ... transfer to the default 000140 9a 5 00014 7571 00 443 staq pr5|cp_entry+2 000141 aa 7 00044 7101 20 444 short_return 445 446 " 447 448 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 449 " 450 " ready_proc ..... entry to be called after each command line is processed -- 451 " (default procedure prints a ready message if on) 452 " 453 " call cu_$ready_proc (ready_modes); 454 " 455 " dcl 1 ready_modes aligned, /* optional argument */ 456 " 2 ready_sw bit(1) unaligned, /* ON => print a ready message */ 457 " 2 pad bit(35) unaligned; 458 " 459 " If ready_modes isn't supplied, an internal static structure is passed whose 460 " contents may be changed via cu_$set_ready_mode and read via cu_$get_ready_mode; 461 " the default value for ready_modes.ready_sw in the static structure is "1"b. 462 " 463 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 464 000142 465 ready_proc: 000142 aa 0 00000 2351 00 466 lda ap|0 " pick up arg list header 000143 aa 777777 3150 03 467 cana =o777777,du " any arguments passed? 000144 0a 000150 6010 00 468 tnz ready_with_args " ... yes -- use supplied arglist 000145 9a 5 00022 3501 00 469 eppap pr5|ready_arglist " ... no -- use current setting 000146 9a 5 00001 3521 00 470 epp2 pr5|ready_mode " ... controlled by ready_on/off 000147 9a 5 00024 2521 00 471 spri2 pr5|ready_arglist+2 472 000150 473 ready_with_args: 000150 9a 5 00016 3515 00 474 epp1 pr5|ready_entry " will be calling this entry variable 000151 aa 1 00000 2371 00 475 ldaq pr1|0 " user supplied procedure? 000152 0a 000006 6770 00 476 eraq null 000153 0a 000010 3770 00 477 anaq ptrmask 000154 0a 000272 6010 00 478 tnz generate_call_common " ... yes -- go off and perform the call 479 000155 4a 4 00014 7131 20 480 callsp print_ready_message_$print_ready_message_ " ... no -- use default 000156 aa 7 00044 7101 20 481 short_return 482 483 " 484 485 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 486 " 487 " get_ready_procedure .... entry to retrieve entry var of current ready procedure 488 " (procedure called after each command line normally to 489 " print a ready message) 490 " 491 " call cu_$get_ready_procedure (ready_entry); 492 " 493 " 1. ready_entry (entry) - entry variable of current ready procedure 494 " 495 " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " 496 000157 497 get_ready_procedure: 000157 aa 0 00002 3521 20 498 epp2 ap|2,* " get ptr to entry variable argument 000160 9a 5 00016 2371 00 499 ldaq pr5|ready_entry " using default procedure? 000161 0a 000006 6770 00 500 eraq null 000162 0a 000010 3770 00 501 anaq ptrmask 000163 0a 000171 6010 00 502 tnz get_ready_procedure_non_default " ... no 503 000164 4a 4 00014 3535 20 504 epp3 print_ready_message_$print_ready_message_ " ... yes -- return it 000165 aa 2 00000 2535 00 505 spri3 pr2|0 000166 0a 000006 2370 00 506 ldaq null " (it's external) 000167 aa 2 00002 7571 00 507 staq pr2|2 000170 aa 7 00044 7101 20 508 short_return 509 000171 510 get_ready_procedure_non_default: 000171 9a 5 00016 3535 20 511 epp3 pr5|ready_entry,* " copy from our internal static 000172 aa 2 00000 2535 00 512 spri3 bp|0 000173 9a 5 00020 3535 20 513 epp3 pr5|ready_entry+2,* 000174 aa 2 00002 2535 00 514 spri3 bp|2 000175 aa 7 00044 7101 20 515 short_return 516 517 518 519 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 520 " 521 " get_ready_proc .... entry to retrieve procedure ptr to current ready procedure 522 " 523 " call cu_$get_ready_proc (ready_ptr); 524 " 525 " 1. ready_ptr (ptr) - pointer to current ready procedure 526 " 527 " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " 528 000176 529 get_ready_proc: 000176 9a 5 00016 3521 20 530 epp2 pr5|ready_entry,* " pick up current command processor 000177 aa 0 00002 2521 20 531 spri2 ap|2,* 000200 aa 7 00044 7101 20 532 short_return 533 534 " 535 536 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 537 " 538 " set_ready_procedure ..... entry to specify procedure to call as the command processor 539 " 540 " call cu_$set_ready_procedure (ready_entry) 541 " 542 " 1. ready_entry (entry) - entry to become the command processor 543 " 544 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 545 000201 546 set_ready_procedure: 000201 aa 0 00002 3521 20 547 epp2 ap|2,* " get pointer to caller's entry var 000202 aa 2 00000 3535 20 548 epp3 pr2|0,* " copy entry variable to our static 000203 9a 5 00016 2535 00 549 spri3 pr5|ready_entry 000204 aa 2 00002 3535 20 550 epp3 pr2|2,* 000205 9a 5 00020 2535 00 551 spri3 pr5|ready_entry+2 000206 aa 7 00044 7101 20 552 short_return 553 554 555 556 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 557 " 558 " set_ready_proc ..... entry to specify external proc to be ready procedure 559 " 560 " call cu_$set_ready_proc (ready_ptr) 561 " 562 " 1. ready_ptr (ptr) - pointer to external proc to be the ready procedure; 563 " if null, the default procedure is used 564 " 565 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 566 000207 567 set_ready_proc: 000207 aa 0 00002 3521 20 568 epp2 ap|2,* " get ptr to the codeptr 000210 aa 2 00000 3521 20 569 epp2 pr2|0,* " copy codeptr to our static 000211 9a 5 00016 2521 00 570 spri2 pr5|ready_entry 000212 0a 000006 2370 00 571 ldaq null " indicate external procedure 000213 9a 5 00020 7571 00 572 staq pr5|ready_entry+2 000214 aa 7 00044 7101 20 573 short_return 574 575 576 577 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 578 " 579 " reset_ready_procedure .... entry to reset to default ready procedure 580 " 581 " call cu_$reset_ready_procedure () 582 " 583 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 584 000215 585 reset_ready_procedure: 000215 0a 000006 2370 00 586 ldaq null " reset to null -- cu_$ready_proc will 000216 9a 5 00016 7571 00 587 staq pr5|ready_entry " transfer to the default 000217 9a 5 00020 7571 00 588 staq pr5|ready_entry+2 000220 aa 7 00044 7101 20 589 short_return 590 591 " 592 593 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 594 " 595 " set_ready_mode ..... entry to set the internal ready flags for controlling ready 596 " message printing 597 " 598 " call cu_$set_ready_mode (ready_flags); 599 " 600 " 1. ready_flags (see description of cu_$ready_proc) (INPUT) 601 " 602 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 603 000221 604 set_ready_mode: 000221 aa 0 00002 2351 20 605 lda ap|2,* " copy flags to out static 000222 9a 5 00001 7551 00 606 sta pr5|ready_mode 000223 aa 7 00044 7101 20 607 short_return 608 609 610 611 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 612 " 613 " get_ready_mode ..... entry to return the value of the ready flags 614 " 615 " call cu_$get_ready_mode (ready_flags); 616 " 617 " 1. ready_flags (see description of cu_$ready_proc) (OUTPUT) 618 " 619 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 620 000224 621 get_ready_mode: 000224 9a 5 00001 2351 00 622 lda pr5|ready_mode " copy ready flags to caller 000225 aa 0 00002 7551 20 623 sta ap|2,* 000226 aa 7 00044 7101 20 624 short_return 625 626 " 627 628 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 629 " 630 " evaluate_active_string ..... entry to-call current active-string evaluator 631 " 632 " call cu_$evaluate_active_string (info_ptr, active_string, string_type, 633 " return_value, code); 634 " 635 " 1. info_ptr (ptr) - reserved for future expansion and must be null 636 " 2. active_string (char (*)) - string to evaluate without outermost brackets 637 " 3. string_type (fixed bin) - type of active string (see cp_active_string_types.incl.pl1) 638 " 4. return_value (char (*) var) - result of the evaluation (Output) 639 " 5. code (fixed bin(35)) - standard status code (Output) 640 " 641 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 642 000227 643 evaluate_active_string: 000227 9a 5 00026 3515 00 644 epp1 pr5|eas_entry " will be calling this entry variable 000230 aa 1 00000 2371 00 645 ldaq pr1|0 " user supplied procedure? 000231 0a 000006 6770 00 646 eraq null 000232 0a 000010 3770 00 647 anaq ptrmask 000233 0a 000272 6010 00 648 tnz generate_call_common " ... yes -- go off and perform the call 649 000234 4a 4 00016 7131 20 650 callsp command_processor_$eval_string " ... no -- use default 000235 aa 7 00044 7101 20 651 short_return 652 653 " 654 655 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 656 " 657 " get_evaluate_active_string .... entry to retrieve entry var of current active 658 " string evaluator 659 " 660 " call cu_$get_evaluate_active_string (eas_entry); 661 " 662 " 1. eas_entry (entry) - entry variable of current active-string evaluator 663 " 664 " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " 665 000236 666 get_evaluate_active_string: 000236 aa 0 00002 3521 20 667 epp2 ap|2,* " get ptr to entry variable argument 000237 9a 5 00026 2371 00 668 ldaq pr5|eas_entry " using defaulr procedure? 000240 0a 000006 6770 00 669 eraq null 000241 0a 000010 3770 00 670 anaq ptrmask 000242 0a 000250 6010 00 671 tnz get_eas_non_default " ... no 672 000243 4a 4 00016 3535 20 673 epp3 command_processor_$eval_string " ... yes -- return it 000244 aa 2 00000 2535 00 674 spri3 pr2|0 000245 0a 000006 2370 00 675 ldaq null " (it's external) 000246 aa 2 00002 7571 00 676 staq pr2|2 000247 aa 7 00044 7101 20 677 short_return 678 000250 679 get_eas_non_default: 000250 9a 5 00026 3535 20 680 epp3 pr5|eas_entry,* " copy from our internal static 000251 aa 2 00000 2535 00 681 spri3 pr2|0 000252 9a 5 00030 3535 20 682 epp3 pr5|eas_entry+2,* 000253 aa 2 00002 2535 00 683 spri3 pr2|2 000254 aa 7 00044 7101 20 684 short_return 685 686 687 688 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 689 " 690 " set_evaluate_active_string ..... entry to specify procedure to call as the active 691 " string evaluator 692 " 693 " call cu_$set_evaluate_active_string (eas_entry) 694 " 695 " 1. eas_entry (entry) - entry to become the active-string evaluator 696 " 697 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 698 000255 699 set_evaluate_active_string: 000255 aa 0 00002 3521 20 700 epp2 ap|2,* " get pointer to caller's entry var 000256 aa 2 00000 3535 20 701 epp3 pr2|0,* " copy entry variable to our static 000257 9a 5 00026 2535 00 702 spri3 pr5|eas_entry 000260 aa 2 00002 3535 20 703 epp3 pr2|2,* 000261 9a 5 00030 2535 00 704 spri3 pr5|eas_entry+2 000262 aa 7 00044 7101 20 705 short_return 706 707 " 708 709 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 710 " 711 " reset_evaluate_active_string .... entry to reset to default active-string evaluator 712 " 713 " call cu_$reset_evaluate_active_string () 714 " 715 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 716 000263 717 reset_evaluate_active_string: 000263 0a 000006 2370 00 718 ldaq null " reset to null -- 000264 9a 5 00026 7571 00 719 staq pr5|eas_entry " ... cu_$evaluate_active_string will 000265 9a 5 00030 7571 00 720 staq pr5|eas_entry+2 " ... transfer to default 000266 aa 7 00044 7101 20 721 short_return 722 723 " 724 725 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 726 " 727 " generate_call ... entry to call an entry variable with the supplied argument list 728 " 729 " call cu_$generate_call (entry_variable, arg_list_ptr); 730 " 731 " 1. entry_variable (entry) -- the entry to be called. It may be an internal 732 " procedure;" this entry will take care of the display 733 " ptr in the argument list. 734 " 2. arg_list_ptr (ptr) -- pointer to the argument list to be given to the entry 735 " 736 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 737 000267 738 generate_call: 000267 aa 0 00002 3515 20 739 epp1 ap|2,* " get ptr to entry variable 000270 aa 0 00004 3501 20 740 eppap ap|4,* " get ptr to argument list for call 000271 aa 0 00000 3501 20 741 eppap ap|0,* " ... and point to actual arglist 742 743 744 " Control reaches here from the cu_$cl, etc. entries to invoke their specific entry variable 745 000272 746 generate_call_common: 000272 aa 0 00000 7201 00 747 lxl0 ap|0 " pick up argument list code 000273 aa 000012 3600 03 748 anx0 8+2,du " check if display pointer present 000274 aa 000003 6010 04 749 tnz 3,ic " ... yes -- go get it 000275 0a 000006 2370 00 750 ldaq null " ... no -- use null (external call) 000276 aa 000003 7100 04 751 tra 3,ic " and goto common code 000277 aa 0 00000 2221 00 752 ldx2 ap|0 " ... 2*nargs 000300 aa 0 00002 2371 12 753 ldaq ap|2,2 " ... fetch display pointer 754 000301 aa 1 00002 6771 00 755 eraq pr1|2 " compare with entry's environmentptr 000302 0a 000010 3770 00 756 anaq ptrmask 000303 aa 000002 6010 04 757 tnz 2,ic " ... not equal -- must copy arglist 758 000304 aa 1 00000 7131 20 759 callsp pr1|0,* " display ptrs agree -- make the call 760 761 762 " Entry variable's environmentptr is different from arglist's display ptr -- the arglist 763 " must be copied and the proper display pointer inserted... 764 000305 aa 000000 6210 00 765 eax1 0 " assume that entry is external 000306 aa 1 00002 2371 00 766 ldaq pr1|2 " check if entry is external or internal 000307 0a 000006 6770 00 767 eraq null 000310 0a 000010 3770 00 768 anaq ptrmask 000311 aa 000002 6000 04 769 tze 2,ic " ... external -- no display ptr in arglist 000312 aa 000002 6210 00 770 eax1 2 " ... internal -- must insert display ptr 771 000313 aa 000101 6270 11 772 eax7 stack_frame.min_length+17,1 " miniumum stack frame size + display 773 " ... pointer (if used) + rounding 000314 aa 0 00000 0671 00 774 adx7 ap|0 " ... plus argument pointers 000315 aa 0 00001 0671 00 775 adx7 ap|1 " ... plus descriptor pointers 776 000316 aa 777760 3670 03 777 anx7 =o777760,du " ... round to mod 16 000317 aa 7 00040 2721 20 778 tsp2 sb|stack_header.push_op_ptr,* " get a stack frame 000320 aa 000200 2350 07 779 lda stack_frame.support_bit,dl " ... which is a support frame 000321 aa 6 00020 2551 00 780 orsa sp|stack_frame.flag_word 781 000322 aa 6 00060 3521 00 782 epp2 sp|stack_frame.min_length " arglist goes here 783 000323 aa 0 00000 2371 00 784 ldaq ap|0 " copy argument list header 000324 aa 2 00000 7571 00 785 staq pr2|0 786 000325 aa 000004 6220 00 787 eax2 4 " assume no display pointer 000326 aa 000000 1010 03 788 cmpx1 0,du " putting in a display pointer? 000327 aa 000002 6000 04 789 tze 2,ic " ... no -- have correct code already 000330 aa 000010 6220 00 790 eax2 8 " ... yes -- get proper code for header 000331 aa 2 00000 4421 00 791 sxl2 pr2|0 " update code in arglist header 792 000332 aa 2 00000 2221 00 793 ldx2 pr2|0 " 2*nargs 000333 aa 000006 6000 04 794 tze 6,ic " ... no arguments to copy 000334 aa 0 00000 3535 32 795 epp3 ap|0,2* " copy argument list pointers 000335 aa 2 00000 2535 12 796 spri3 pr2|0,2 000336 aa 777776 6220 12 797 eax2 -2,2 " ... done? 000337 aa 777775 6054 04 798 tpnz -3,ic " ... ... no 799 000340 aa 2 00000 2221 00 800 ldx2 pr2|0 " 2*nargs again 000341 aa 0 00000 3501 12 801 eppap ap|0,2 " ... ptr to last argptr in original list 000342 aa 2 00000 3535 12 802 epp3 pr2|0,2 " ... ptr to last argptr in new list 803 000343 aa 000000 1010 03 804 cmpx1 0,du " copy entry's environment ptr? 000344 aa 000004 6000 04 805 tze 4,ic " ... no 000345 aa 1 00002 3715 20 806 epp5 pr1|2,* " ... yes 000346 aa 3 00002 6515 00 807 spri5 pr3|2 000347 aa 3 00002 3535 00 808 epp3 pr3|2 " ... indicate descriptors after display 809 000350 aa 2 00001 2221 00 810 ldx2 pr2|1 " check if descriptors to copy 000351 0a 000362 6000 00 811 tze generate_call_call " ... no 812 000352 aa 000000 1000 03 813 cmpx0 0,du " copy descriptors -- skip old display? 000353 aa 000002 6000 04 814 tze 2,ic " ... no 000354 aa 0 00002 3501 00 815 eppap ap|2 " ... yes 816 000355 aa 2 00001 2221 00 817 ldx2 pr2|1 " 2*ndescs 000356 aa 0 00000 3715 32 818 epp5 ap|0,2* " copy descriptors 000357 aa 3 00000 6515 12 819 spri5 pr3|0,2 000360 aa 777776 6220 12 820 eax2 -2,2 " ... done? 000361 aa 777775 6054 04 821 tpnz -3,ic " ... ... no 822 000362 823 generate_call_call: 000362 aa 6 00000 2541 00 824 call pr1|0,*(pr2|0) " make the call 000363 aa 2 00000 3501 00 000364 aa 1 00000 3521 20 000365 aa 6 00040 7531 00 000366 aa 7 00036 6701 20 000367 aa 6 00000 1731 00 000370 aa 6 00040 0731 00 000371 aa 7 00042 7101 20 825 return " ... and return 826 827 " 828 829 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 830 " 831 " gen_call ..... call specified external procedure with specified argument list 832 " 833 " call cu_$gen_call(proc_ptr, arg_list_ptr) 834 " 835 " 1. proc_ptr (ptr) - pointer to external procedure to be called 836 " 2. arg_list_ptr (ptr) - pointer to argument list for procedure call 837 " 838 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 839 000372 aa 0 00002 3521 20 840 gen_call: eppbp ap|2,* get pointer to procedure pointer 000373 aa 0 00004 3501 20 841 eppap ap|4,* pick up argument list pointer 000374 aa 0 00000 3501 20 842 eppap ap|0,* .. 000375 aa 2 00000 7131 20 843 callsp bp|0,* call procedure entry point 844 845 " 846 847 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 848 " 849 " ptr_call ..... call external procedure specified by first argument in call 850 " 851 " call cu_$ptr_call (proc_ptr, arg1, ... , argN) 852 " 853 " 1. proc_ptr (ptr) - pointer to external procedure to be called 854 " 2. arg1 ... argN - optional - arguments to be supplied in the call 855 " 856 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 857 000376 aa 000103 6270 00 858 ptr_call: eax7 stack_frame.min_length+19 " minimum stack frame plus 4 words 859 " ... temporary storage plus rounding 000377 aa 0 00000 0671 00 860 adx7 ap|0 " ... plus room for argument pointers 000400 aa 0 00001 0671 00 861 adx7 ap|1 " ... plus room for descriptors 862 000401 aa 777760 3670 03 863 anx7 =o777760,du " ... round to mod 16 000402 aa 7 00040 2721 20 864 tsp2 sb|stack_header.push_op_ptr,* " get a stack frame 000403 aa 000200 2350 07 865 lda stack_frame.support_bit,dl " ... which is a support frame 000404 aa 6 00020 2551 00 866 orsa sp|stack_frame.flag_word 867 000405 aa 6 00060 3521 00 868 epp2 sp|stack_frame.min_length " start of temporaries 869 000406 aa 0 00002 3535 20 870 epp3 ap|2,* " save codeptr of procedure to call 000407 aa 3 00000 3535 20 871 epp3 pr3|0,* 000410 aa 2 00000 2535 00 872 spri3 pr2|0 873 000411 aa 0 00000 2371 00 874 ldaq ap|0 " copy arglist header 000412 aa 2 00002 7571 00 875 staq pr2|2 876 000413 aa 2 00002 2211 00 877 ldx1 pr2|2 " decrement number of arguments 000414 aa 777776 6210 11 878 eax1 -2,1 000415 aa 2 00002 7411 00 879 stx1 pr2|2 000416 aa 000005 6000 04 880 tze 5,ic " no arguments in call ... skip copying 881 000417 aa 0 00002 3535 31 882 epp3 ap|2,1* " copy argument pointers 000420 aa 2 00002 2535 11 883 spri3 pr2|2,1 000421 aa 777776 6210 11 884 eax1 -2,1 " ... done? 000422 aa 777775 6054 04 885 tpnz -3,ic " ... ... no 886 000423 aa 2 00003 2211 00 887 ldx1 pr2|3 " get descriptors count 000424 0a 000440 6000 00 888 tze ptr_call_call " none -- go make the call 000425 aa 777776 6210 11 889 eax1 -2,1 " flush first descriptor 000426 aa 2 00003 7411 00 890 stx1 pr2|3 000427 0a 000440 6000 00 891 tze ptr_call_call " none left 892 000430 aa 0 00000 2221 00 893 ldx2 ap|0 " move ap past argptrs and 1st 000431 aa 0 00002 3501 12 894 eppap ap|2,2 " ... descriptor 000432 aa 2 00002 2221 00 895 ldx2 pr2|2 " move past argptrs in new arglist 000433 aa 2 00002 3535 12 896 epp3 pr2|2,2 897 000434 aa 0 00000 3715 31 898 epp5 ap|0,1* " copy descriptors 000435 aa 3 00000 6515 11 899 spri5 pr3|0,1 000436 aa 777776 6210 11 900 eax1 -2,1 " ... done? 000437 aa 777775 6054 04 901 tpnz -3,ic " ... ... no 902 000440 903 ptr_call_call: 000440 aa 6 00000 2541 00 904 call pr2|0,*(pr2|2) " make the call 000441 aa 2 00002 3501 00 000442 aa 2 00000 3521 20 000443 aa 6 00040 7531 00 000444 aa 7 00036 6701 20 000445 aa 6 00000 1731 00 000446 aa 6 00040 0731 00 000447 aa 7 00042 7101 20 905 return " ... and return 906 907 " 908 909 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 910 " 911 " arg_count ..... get number of arguments passed to caller of arg_count 912 " 913 " call cu_$arg_count (nargs, code) 914 " 915 " 1. nargs (fixed bin(17)) - number of arguments (returned). 916 " 2. code (fixed bin(35)) - optional - set to one of zero, error_table_$nodescr, or 917 " error_table_$active_function. 918 " 919 " If code is supplied, a check is made that the last argument is not char(*) varying 920 " which is indicative of being invoked as an active function. This check provides a 921 " mechanism for command-only procedures to detect improper usage. 922 " 923 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 924 000450 925 arg_count: 000450 aa 000004 6200 00 926 eax0 4 " code (if present) is second argument 000451 aa 6 00032 3515 20 927 epp1 sp|stack_frame.arg_ptr,* " ptr to caller's stack frame 000452 0a 000456 7100 00 928 tra arg_count_common " join main section of code 929 930 931 932 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 933 " 934 " arg_count_rel ..... get number of arguments in specified argument list 935 " 936 " call cu_$arg_count_rel (nargs, arg_list_ptr, code); 937 " 938 " 1. nargs (fixed bin(17)) - number of args in that list (output) 939 " 2. arg_list_ptr (ptr) - pointer to arg list in question (input) 940 " 3. code (fixed bin(35)) - optional - see cu_$arg_count above 941 " 942 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 943 000453 944 arg_count_rel: 000453 aa 000006 6200 00 945 eax0 6 " code (if present) is third argument 000454 aa 0 00004 3515 20 946 epp1 ap|4,* " get arglist pointer 000455 aa 1 00000 3515 20 947 epp1 pr1|0,* 948 949 000456 950 arg_count_common: 000456 aa 1 00000 2351 00 951 lda pr1|0 " return the argument count 000457 aa 000023 7710 00 952 arl 18+1 " ... which was in au and was also doubled 000460 aa 0 00002 7551 20 953 sta ap|2,* 954 000461 aa 0 00000 1001 00 955 cmpx0 ap|0 " did caller supply a code argument? 000462 0a 000464 6044 00 956 tmoz arg_count_hard " ... yes 000463 aa 7 00044 7101 20 957 short_return " ... no -- all done, return to caller 958 959 960 " Status code is specified: check that last argument is not character(*) varying which would 961 " indicate active function usage. 962 000464 963 arg_count_hard: 000464 aa 0 00000 4501 30 964 stz ap|0,0* " initialize return code 965 000465 aa 1 00000 2211 00 966 ldx1 pr1|0 " any arguments? 000466 0a 000470 6010 00 967 tnz ach_continue " ... yes 000467 aa 7 00044 7101 20 968 short_return " ... no -- OK for command to have no args 969 000470 970 ach_continue: 000470 aa 1 00000 2351 00 971 lda pr1|0 " pick up argument list header 000471 aa 000014 3150 07 972 cana 4+8,dl " make sure its a PL1 call 000472 0a 000515 6000 00 973 tze ach_err_no_descs " ... it isn't 974 000473 aa 1 00000 2211 00 975 ldx1 pr1|0 " 2*nargs to x1 000474 aa 1 00001 1011 00 976 cmpx1 pr1|1 " same number of descriptors present? 000475 0a 000515 6010 00 977 tnz ach_err_no_descs " ... no -- can't determine if valid 978 000476 aa 1 00001 0611 00 979 adx1 pr1|1 " take descriptors into account also 980 000477 aa 1 00000 7221 00 981 lxl2 pr1|0 " check if display pointer is present 000500 aa 000012 3620 03 982 anx2 8+2,du 000501 aa 000002 6000 04 983 tze 2,ic " ... no 000502 aa 000002 6210 11 984 eax1 2,1 " ... yes -- skip past it also 985 000503 aa 1 00000 2351 31 986 lda pr1|0,1* " fetch the descriptor 000504 0a 000511 6050 00 987 tpl ach_check_v1 " might be a version 1 descriptor 988 000505 0a 000004 2360 00 989 ldq v2_mask " mask out all but datatype 000506 aa 130000 2110 03 990 cmk v2_var,du " is it char(*) varying? 000507 0a 000520 6000 00 991 tze ach_err_af " ... yes -- invoked as an active function 000510 aa 7 00044 7101 20 992 short_return " ... no -- all is OK 993 000511 994 ach_check_v1: 000511 0a 000002 2360 00 995 ldq desc_mask " pick up mask for version 1 descriptors 000512 aa 010120 2110 03 996 cmk var_desc,du " is it char(*) varying? 000513 0a 000520 6000 00 997 tze ach_err_af " ... yes 000514 aa 7 00044 7101 20 998 short_return " ... no 999 1000 000515 1001 ach_err_no_descs: " no descriptors in arglist 000515 4a 4 00020 2351 20 1002 lda error_table_$nodescr 000516 aa 0 00000 7551 30 1003 sta ap|0,0* 000517 aa 7 00044 7101 20 1004 short_return 1005 000520 1006 ach_err_af: " called as active function 000520 4a 4 00022 2351 20 1007 lda error_table_$active_function 000521 aa 0 00000 7551 30 1008 sta ap|0,0* 000522 aa 7 00044 7101 20 1009 short_return 1010 1011 " 1012 1013 " " " " " " " " " " " " " " " " " " " " "" " " " " " " " "" " "" " " "" " "" "" 1014 " arg_ptr_rel ..... get nth argument of specified argument list 1015 " 1016 " call cu_$arg_ptr_rel(argno, argptr, arglen, code, arg_list_ptr); 1017 " 1018 " 1. argno (fixed bin(17)) - specifies the desired argument. 1019 " 2. argptr (ptr) - pointer to specified argument (returned). 1020 " 3. arglen (fixed bin(17)) - size of specified argument (returned). 1021 " 4. code (fixed bin(17)) - error status code (returned). 1022 " 5. arg_list_ptr (ptr) - pointer to desired argument list. 1023 " 1024 " " " " " " " " " " " " " " " "" " "" " " " " "" " " " " " " " "" "" " " "" "" " 1025 000523 1026 arg_ptr_rel: 000523 aa 0 00012 3521 20 1027 eppbp ap|10,* " get the argument list pointer 000524 aa 2 00000 3521 20 1028 eppbp bp|0,* " ... 000525 0a 000527 7100 00 1029 tra arg_ptr_common 1030 1031 1032 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1033 " arg_ptr ..... get ptr (and size) of caller's nth argument 1034 " 1035 " call cu_$arg_ptr(argno, argptr, arglen, code) 1036 " 1037 " 1. argno (fixed bin(17)) - specifies the desired argument. 1038 " 2. argptr (ptr) - pointer to specified argument (returned). 1039 " 3. arglen (fixed bin(17)) - size of specified argument (returned). 1040 " 4. code (fixed bin(17)) - error status code (returned). 1041 " 1042 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1043 000526 aa 6 00032 3521 20 1044 arg_ptr: eppbp sp|stack_frame.arg_ptr,* " get pointer to caller's argument list 1045 000527 1046 arg_ptr_common: 000527 0a 000006 2370 00 1047 ldaq null " initialize output values 000530 aa 0 00004 7571 20 1048 staq ap|4,* " ... null argument pointer 000531 aa 0 00006 4501 20 1049 stz ap|6,* " ... zero length 000532 aa 0 00010 4501 20 1050 stz ap|8,* " ... zero error code 1051 000533 aa 0 00002 2351 20 1052 lda ap|2,* " pick up argument number 000534 0a 000560 6044 00 1053 tmoz arg_ptr_noarg " ... must be positive 000535 aa 000001 7350 00 1054 als 1 000536 aa 000000 6210 05 1055 eax1 0,al " 2*argument_idx -> X1 000537 aa 2 00000 1011 00 1056 cmpx1 bp|0 " check against the argument count 000540 0a 000560 6054 00 1057 tpnz arg_ptr_noarg " ... argument_idx is too large 1058 000541 aa 2 00000 3535 31 1059 eppbb bp|0,1* " copy the argument pointer 000542 aa 0 00004 2535 20 1060 spribb ap|4,* 1061 000543 aa 2 00001 2351 00 1062 lda bp|1 " get descriptor word count 000544 0a 000557 6000 00 1063 tze arg_ptr_no_descriptors " ... no descriptors 000545 aa 2 00000 0611 00 1064 adx1 bp|0 " compute offset to the descriptor 000546 aa 2 00000 7201 00 1065 lxl0 bp|0 " ... check for an environment pointer 000547 aa 000012 3600 03 1066 anx0 8+2,du 000550 aa 000002 6000 04 1067 tze 2,ic 000551 aa 000002 6210 11 1068 eax1 2,1 " ... skip over environment pointer 1069 000552 aa 2 00000 2351 31 1070 lda bp|0,1* " pick up the descriptor 000553 0a 000555 6040 00 1071 tmi *+2 000554 aa 777777 3750 07 1072 ana =o777777,dl " mask for version 1 descriptors 000555 0a 000001 3750 00 1073 ana descriptor_mask " mask for version 2 descriptors 000556 aa 0 00006 7551 20 1074 sta ap|6,* " return the argument length 1075 000557 1076 arg_ptr_no_descriptors: 000557 aa 7 00044 7101 20 1077 short_return 1078 000560 1079 arg_ptr_noarg: " unknown argument specified 000560 4a 4 00024 2351 20 1080 lda error_table_$noarg 000561 aa 0 00010 7551 20 1081 sta ap|8,* 000562 aa 7 00044 7101 20 1082 short_return 1083 1084 " 1085 1086 " " " " " " " " " " " " " " " " " " " " "" " " " " " " " "" " "" " " "" " "" "" 1087 " get_command_name_rel ..... get the command name from the passed arg list 1088 " 1089 " call cu_$get_command_name_rel( command_name_ptr, command_name_length, 1090 " code, arg_list_ptr); 1091 " 1092 " 1. command_name_ptr (pointer) - ptr to command_name (returned) 1093 " 2. command_name_length (fixed bin (21)) - size of command_name (returned) 1094 " 3. code (fixed bin(35)) - error status code (returned). 1095 " 4. arg_list_ptr (pointer) - pointer to desired argument list. 1096 " 1097 " " " " " " " " " " " " " " " "" " "" " " " " "" " " " " " " " "" "" " " "" """ 1098 000563 1099 get_command_name_rel: 000563 aa 0 00010 3521 20 1100 eppbp ap|8,* " get the argument list pointer 000564 aa 2 00000 3521 20 1101 eppbp bp|0,* " ... 000565 0a 000567 7100 00 1102 tra get_command_name_common 1103 1104 1105 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1106 " get_command_name ..... get command name from callers arg list 1107 " 1108 " call cu_$get_command_name(command_name_ptr, command_name_length, code) 1109 " 1110 " 1. command_name_ptr (pointer) - ptr to command_name (returned) 1111 " 2. command_name_length (fixed bin (21)) - size of command_name (returned) 1112 " 3. code (fixed bin(35)) - error status code (returned). 1113 " 1114 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1115 000566 1116 get_command_name: 000566 aa 6 00032 3521 20 1117 eppbp sp|stack_frame.arg_ptr,* " get pointer to caller's argument list 1118 000567 1119 get_command_name_common: 000567 0a 000006 2370 00 1120 ldaq null " initialize output values 000570 aa 0 00002 7571 20 1121 staq ap|2,* " ... command nm ptr = null 000571 aa 0 00004 4501 20 1122 stz ap|4,* " ... size = 0 000572 aa 0 00006 4501 20 1123 stz ap|6,* " ... zero error code 1124 1125 1126 " check if has name is set 1127 000573 aa 2 00001 7201 00 1128 lxl0 bp|1 " get has name flag 000574 0a 000003 3600 00 1129 anx0 has_command_name_mask " and upper bit of 2nd half 000575 0a 000613 6000 00 1130 tze get_command_name_no_name " has name not set return error code 1131 1132 " check if non-quick internal procedure 1133 000576 aa 2 00000 7201 00 1134 lxl0 bp|0 " get call type 000577 aa 000010 3600 03 1135 anx0 8,du " compare to 000010 octal 000600 0a 000613 6010 00 1136 tnz get_command_name_no_name " internal call therfore don't have a command name 1137 1138 " get effective ptr to name and size is + 2 past 1139 000601 aa 2 00000 2201 00 1140 ldx0 bp|0 " get arg count 000602 aa 2 00002 3535 10 1141 eppbb bp|2,x0 " get ptr past args 000603 aa 2 00001 2201 00 1142 ldx0 bp|1 " get desc count 000604 aa 3 00000 3535 10 1143 eppbb bb|0,x0 " got ptr to name ptr 1144 1145 " set return values of name ptr and size 1146 000605 aa 3 00000 3715 20 1147 epplb bb|0,* " get name ptr 000606 aa 0 00002 6515 20 1148 sprilb ap|2,* " store name ptr 000607 aa 3 00002 2351 00 1149 lda bb|2 " get size 000610 0a 000000 3750 00 1150 ana fb21_mask "get fixed bin 21 value 000611 aa 0 00004 7551 20 1151 sta ap|4,* " store size 1152 000612 aa 7 00044 7101 20 1153 short_return 1154 000613 1155 get_command_name_no_name: " name not available 000613 4a 4 00026 2351 20 1156 lda error_table_$command_name_not_available 000614 aa 0 00006 7551 20 1157 sta ap|6,* 000615 aa 7 00044 7101 20 1158 short_return 1159 1160 1161 1162 " 1163 1164 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1165 " 1166 " af_return_arg ..... returns info on active function arg lists 1167 " 1168 " call cu_$af_return_arg (n_args, return_ptr, return_len, code); 1169 " 1170 " 1. n_args number of args (output) (not including return arg) 1171 " 2. return_ptr pointer to return arg (output) 1172 " 3. return_len max length of return arg (output) 1173 " 4. code standard status code 1174 " 1175 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1176 000616 1177 af_return_arg: 000616 0a 000006 2370 00 1178 ldaq null " initialize output arguments 000617 aa 0 00004 7571 20 1179 staq ap|4,* 000620 aa 0 00006 4501 20 1180 stz ap|6,* 1181 000621 aa 000010 6220 00 1182 eax2 8 " error code is 4th argument 000622 0a 000717 7010 00 1183 tsx1 verify_af " check the call 000623 0a 000630 0000 00 1184 arg af_return_arg_return " ... error return 1185 000624 1186 af_return_arg_common: 000624 aa 0 00006 7551 20 1187 sta ap|6,* " set return value's maximum length 1188 000625 aa 3 00000 3535 20 1189 eppbb bb|0,* " get pointer to return value 000626 aa 3 77777 3535 00 1190 eppbb bb|-1 " ... and adjust to its length word 000627 aa 0 00004 2535 20 1191 spribb ap|4,* 1192 000630 1193 af_return_arg_return: 000630 aa 0 00002 7561 20 1194 stq ap|2,* " set the argument count (from verify_af) 000631 aa 7 00044 7101 20 1195 short_return 1196 1197 1198 1199 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1200 " 1201 " af_return_arg_rel ..... like af_return arg, but the fifth argument is 1202 " a pointer to the argument list to use 1203 " 1204 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1205 000632 1206 af_return_arg_rel: 000632 0a 000006 2370 00 1207 ldaq null " initialize output arguments 000633 aa 0 00004 7571 20 1208 staq ap|4,* 000634 aa 0 00006 4501 20 1209 stz ap|6,* 1210 000635 aa 000010 6220 00 1211 eax2 8 " error code is 4th argument 000636 aa 0 00012 3521 20 1212 eppbp ap|10,* " get the real argument list pointer 000637 aa 2 00000 3521 20 1213 eppbp bp|0,* " ... 1214 000640 0a 000720 7010 00 1215 tsx1 verify_af_rel " verify that the call is OK 000641 0a 000630 0000 00 1216 arg af_return_arg_return " ... error return 1217 000642 0a 000624 7100 00 1218 tra af_return_arg_common 1219 1220 " 1221 1222 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1223 " 1224 " af_arg_count ..... return active function arg count 1225 " 1226 " call cu_$af_arg_count (n_args, code); 1227 " 1228 " 1. n_args number of arguments (output) 1229 " 2. code standard status code 1230 " 1231 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1232 000643 1233 af_arg_count: 000643 aa 000004 6220 00 1234 eax2 4 " error code is 2nd argument 000644 0a 000717 7010 00 1235 tsx1 verify_af " check the call 000645 0a 000646 0000 00 1236 arg af_arg_count_return " ... error return 1237 000646 1238 af_arg_count_return: 000646 aa 0 00002 7561 20 1239 stq ap|2,* " set the argument count 000647 aa 7 00044 7101 20 1240 short_return 1241 1242 1243 1244 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1245 " 1246 " af_arg_count_rel ..... like af_arg_count but the third arg is 1247 " a pointer to the argument list to use 1248 " 1249 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1250 000650 1251 af_arg_count_rel: 000650 aa 0 00006 3521 20 1252 eppbp ap|6,* " get a pointer to the argument list 000651 aa 2 00000 3521 20 1253 eppbp bp|0,* " ... 1254 000652 aa 000004 6220 00 1255 eax2 4 " error code is 2nd argument 000653 0a 000720 7010 00 1256 tsx1 verify_af_rel " check the call 000654 0a 000655 0000 00 1257 arg af_arg_count_rel_return " ... error return 1258 000655 1259 af_arg_count_rel_return: 000655 aa 0 00002 7561 20 1260 stq ap|2,* " set the argument count 000656 aa 7 00044 7101 20 1261 short_return 1262 1263 " 1264 1265 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1266 " 1267 " af_arg_ptr ..... returns pointer to an active function argument 1268 " 1269 " call cu_$af_arg_ptr (arg_no, arg_ptr, arg_len, code); 1270 " 1271 " 1. arg_no the number of the argument desired (input) 1272 " 2. arg_ptr pointer to that argument (output) 1273 " 3. arg_len its length (output) 1274 " 4. code standard status code 1275 " 1276 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1277 000657 1278 af_arg_ptr: 000657 0a 000006 2370 00 1279 ldaq null " initialize output arguments 000660 aa 0 00004 7571 20 1280 staq ap|4,* 000661 aa 0 00006 4501 20 1281 stz ap|6,* 1282 000662 aa 000010 6220 00 1283 eax2 8 " error code is 4th argument 000663 0a 000717 7010 00 1284 tsx1 verify_af " check the call 000664 0a 000702 0000 00 1285 arg af_arg_ptr_return " ... error return 1286 000665 1287 af_arg_ptr_common: 000665 aa 0 00002 1161 20 1288 cmpq ap|2,* " check argument_idx against n_argument 000666 0a 000703 6040 00 1289 tmi af_arg_ptr_noarg " ... too large 1290 000667 aa 0 00002 2361 20 1291 ldq ap|2,* " pick up the argument_idx 000670 0a 000703 6044 00 1292 tmoz af_arg_ptr_noarg " ... must be positive 1293 000671 aa 000023 7360 00 1294 qls 18+1 " convert to pointer offset 000672 aa 2 00000 3521 02 1295 eppbp bp|0,qu " make bp -> the argument pointer 1296 000673 aa 2 00000 2361 33 1297 ldq bp|0,3* " fetch the argument descriptor 000674 aa 000002 6040 04 1298 tmi 2,ic 000675 aa 777777 3760 07 1299 anq -1,dl " version 1 descriptor length mask 000676 0a 001316 3760 00 1300 anq =o77777777 " mask all but the length 000677 aa 0 00006 7561 20 1301 stq ap|6,* " set the length 1302 000700 aa 2 00000 3535 20 1303 eppbb bp|0,* " get the argument pointer 000701 aa 0 00004 2535 20 1304 spribb ap|4,* 1305 000702 1306 af_arg_ptr_return: 000702 aa 7 00044 7101 20 1307 short_return 1308 000703 1309 af_arg_ptr_noarg: 000703 4a 4 00024 2351 20 1310 lda error_table_$noarg 000704 aa 0 00010 7551 20 1311 sta ap|8,* 000705 aa 7 00044 7101 20 1312 short_return 1313 1314 1315 1316 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1317 " 1318 " af_arg_ptr_rel ..... like af_arg_ptr 1319 " 1320 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1321 000706 1322 af_arg_ptr_rel: 000706 0a 000006 2370 00 1323 ldaq null " initialize output arguments 000707 aa 0 00004 7571 20 1324 staq ap|4,* 000710 aa 0 00006 4501 20 1325 stz ap|6,* 1326 000711 aa 0 00012 3521 20 1327 eppbp ap|10,* " get the argument list pointer 000712 aa 2 00000 3521 20 1328 eppbp bp|0,* " ... 1329 000713 aa 000010 6220 00 1330 eax2 8 " error code is 4th argument 000714 0a 000720 7010 00 1331 tsx1 verify_af_rel " check the call 000715 0a 000702 0000 00 1332 arg af_arg_ptr_return " ... error return 1333 000716 0a 000665 7100 00 1334 tra af_arg_ptr_common " go do the work 1335 1336 " 1337 1338 " Verifies that the given argument list belongs to an active function. Ie: The last 1339 " argument must be a varying character string 1340 000717 1341 verify_af: 000717 aa 6 00032 3521 20 1342 eppbp sp|stack_frame.arg_ptr,* " use caller's argument list 1343 000720 1344 verify_af_rel: " use argument list pointer already in bp 000720 aa 0 00000 4501 32 1345 stz ap|0,2* " clear status code 1346 000721 aa 2 00000 2351 00 1347 lda bp|0 " pick up argument list header 000722 aa 000014 3150 07 1348 cana 4+8,dl " must be a PL/I call 000723 0a 000757 6000 00 1349 tze af_error_not_af 1350 000724 aa 000000 6200 01 1351 eax0 0,au " argument count to X0 000725 0a 000757 6000 00 1352 tze af_error_not_af " ... no arguments: can't be an AF 1353 000726 aa 2 00001 1001 00 1354 cmpx0 bp|1 " last argument must have a descriptor 000727 0a 000755 6010 00 1355 tnz af_error_nodescr 1356 000730 aa 2 00000 3535 10 1357 eppbb bp|0,0 " set to locate the descriptors 000731 aa 000000 6230 10 1358 eax3 0,0 " ... check for an environment pointer 000732 aa 000012 3750 07 1359 ana 8+2,dl 000733 aa 000002 6000 04 1360 tze 2,ic " ... no environment pointer 000734 aa 000002 6230 13 1361 eax3 2,3 " ... skip over environment pointer 1362 000735 aa 3 00000 2351 33 1363 lda bb|0,3* " get the descriptor 000736 0a 000746 6050 00 1364 tpl check_v1_desc " ... it's a version 1 descriptor 1365 000737 0a 000004 2360 00 1366 ldq v2_mask " get mask to look at data type 000740 aa 130000 2110 03 1367 cmk v2_var,du " and check if it's a varying string 000741 0a 000757 6010 00 1368 tnz af_error_not_af " ... no 000742 0a 001316 3750 00 1369 ana =o77777777 " get the return value's length 000743 aa 777776 6360 10 1370 eaq -2,0 " compute actual argument count 000744 aa 000023 7720 00 1371 qrl 18+1 " ... which excludes the return value 000745 aa 000001 7100 11 1372 tra 1,1 " normal return 1373 000746 1374 check_v1_desc: " version 1 argument descriptor 000746 0a 000002 2360 00 1375 ldq desc_mask " get mask to look at data type 000747 aa 010120 2110 03 1376 cmk var_desc,du " and check if it's a varying string 000750 0a 000757 6010 00 1377 tnz af_error_not_af " ... no 000751 aa 777777 3750 07 1378 ana -1,dl " get the return value's length 000752 aa 777776 6360 10 1379 eaq -2,0 " compute actual argument count 000753 aa 000023 7720 00 1380 qrl 18+1 " ... which excludes the return value 000754 aa 000001 7100 11 1381 tra 1,1 " normal return 1382 000755 1383 af_error_nodescr: " no descriptors in argument list 000755 4a 4 00020 2351 20 1384 lda error_table_$nodescr 000756 0a 000760 7100 00 1385 tra af_error_return 1386 000757 1387 af_error_not_af: " last argument isn't character(*) varying 000757 4a 4 00030 2351 20 1388 lda error_table_$not_act_fnc 1389 000760 1390 af_error_return: 000760 aa 0 00000 7551 32 1391 sta ap|0,2* " set return code 000761 aa 000000 6360 10 1392 eaq 0,0 " put argument count into the Q 000762 aa 000023 7720 00 1393 qrl 18+1 " ... 000763 aa 000000 7100 31 1394 tra 0,1* " take error return 1395 1396 " 1397 1398 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1399 " 1400 " caller_ptr ..... get pointer to text section of invoker's caller 1401 " 1402 " call cu_$caller_ptr (pointer); 1403 " 1404 " 1. pointer (ptr) is the pointer to invoker's caller's text section 1405 " provided he had a stack frame, or null if no caller exists. 1406 " 1407 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1408 000764 1409 caller_ptr: 000764 aa 6 00020 3521 20 1410 eppbp sp|stack_frame.prev_sp,* get pointer to previous frame 000765 aa 2 00024 3535 20 1411 eppbb bp|stack_frame.return_ptr,* pick up the caller's pointer 000766 aa 0 00002 2535 20 1412 spribb ap|2,* return pointer to caller 000767 aa 7 00044 7101 20 1413 short_return return 1414 1415 1416 1417 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1418 " 1419 " arg_list_ptr ..... get pointer to caller's argument list 1420 " 1421 " call cu_$arg_list_ptr(ap) 1422 " 1423 " 1. ap (ptr) - pointer to caller's argument list (OUTPUT) 1424 " 1425 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1426 000770 1427 arg_list_ptr: 000770 aa 6 00032 3521 20 1428 eppbp sp|stack_frame.arg_ptr,* " pick up caller's argument list pointer 000771 aa 0 00002 2521 20 1429 spribp ap|2,* " return it to caller 000772 aa 7 00044 7101 20 1430 short_return " return control to caller 1431 1432 1433 1434 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1435 " 1436 " stack_frame_ptr ..... get pointer to caller's stack frame 1437 " 1438 " call cu_$stack_frame_ptr(sp) 1439 " 1440 " 1. sp (ptr) - pointer to caller's stack frame (returned). 1441 " 1442 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1443 000773 1444 stack_frame_ptr: 000773 aa 0 00002 6521 20 1445 sprisp ap|2,* return stack frame pointer to caller 000774 aa 7 00044 7101 20 1446 short_return return control to caller 1447 1448 " 1449 1450 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1451 " 1452 " stack_frame_size ..... get size of caller's stack frame 1453 " 1454 " call cu_$stack_frame_size(len) 1455 " 1456 " 1. len (fixed bin(17)) - size of caller's stack frame (returned). 1457 " 1458 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1459 1460 000775 1461 stack_frame_size: 000775 aa 6 00023 2361 00 1462 ldq sp|stack_frame.next_sp+1 " get offset of next stack frame ... 000776 aa 000022 7720 00 1463 qrl 18 " ... into lower half of Q 000777 aa 6 00000 1361 07 1464 sblq sp|0,dl " subtract offset of our stack frame ... 001000 aa 0 00002 7561 20 1465 stq ap|2,* " ... and you have the stack frame size 001001 aa 7 00044 7101 20 1466 short_return 1467 " 1468 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1469 " 1470 " grow_stack_frame ..... allocate space at end of caller's stack frame 1471 " 1472 " call cu_$grow_stack_frame(len, ptr, code) 1473 " 1474 " 1. len (fixed bin(17)) - length (in words) by which to grow frame. 1475 " 2. ptr (ptr) - pointer to space allocated in frame (returned). 1476 " 3. code (fixed bin(17)) - error status code (returned). 1477 " 1478 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1479 1480 001002 1481 grow_stack_frame: 001002 aa 7 00024 3521 20 1482 eppbp sb|stack_header.stack_end_ptr,* pick up pointer to next stack frame 001003 aa 0 00004 2521 20 1483 spribp ap|4,* return it as ptr to allocated space 001004 aa 0 00006 4501 20 1484 stz ap|6,* preset error code to zero (OK) 001005 aa 0 00002 2351 20 1485 lda ap|2,* pick up size by which to grow frame 001006 aa 000017 0750 07 1486 ada 15,dl force size to mod 16 001007 aa 777760 3750 07 1487 ana =o777760,dl .. 001010 aa 000000 6210 05 1488 eax1 0,al place size (now mod 16) into index 1 001011 aa 7 00025 0611 00 1489 adx1 sb|stack_header.stack_end_ptr+1 add size to stack end pointer 001012 aa 6 00023 7411 00 1490 stx1 sp|stack_frame.next_sp+1 bump next frame pointer 001013 aa 7 00025 7411 00 1491 stx1 sb|stack_header.stack_end_ptr+1 update stack end pointer too 001014 aa 0 00000 2351 00 1492 lda ap|0 check for call from PL/I procedure 001015 aa 000014 3150 07 1493 cana =o14,dl .. 001016 aa 7 00044 6001 20 1494 tze sb|stack_header.ret_no_pop_op_ptr,* .. skip if not called by PL/I procedure 001017 aa 6 00005 7411 00 1495 stx1 sp|5 .. otherwise, correct sp|5 for PL/I 001020 aa 7 00044 7101 20 1496 short_return return control to caller 1497 1498 " 1499 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "" " " " 1500 " 1501 " shrink_stack_frame ..... reduce the size of the present stack frame 1502 " 1503 " call cu_$shrink_stack_frame (stack_ptr, code); 1504 " 1505 " 1. stack_ptr (ptr) - pointer to position in the present stack frame which 1506 " will be the beginning of the next stack frame. 1507 " The pointer must be sixteen word aligned. 1508 " 2. code (fixed bin(17)) - error status code (returned). 1509 " 1510 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1511 1512 001021 1513 shrink_stack_frame: 001021 aa 0 00004 4501 20 1514 stz ap|4,* zero out code 001022 aa 0 00002 3521 20 1515 eppbp ap|2,* get stack pointer 001023 aa 2 00000 6211 20 1516 eax1 bp|0,* .. 001024 aa 000017 3010 03 1517 canx1 =o000017,du check for sixteen aligned 001025 0a 001031 6000 00 1518 tze aligned .. 1519 001026 4a 4 00032 2351 20 1520 lda error_table_$eight_unaligned if not aligned return code 001027 aa 0 00004 7551 20 1521 sta ap|4,* .. 001030 aa 7 00044 7101 20 1522 short_return .. 1523 001031 aa 6 00060 6221 00 1524 aligned: eax2 sp|stack_frame.min_length check to see if before this frame 001032 aa 2 00001 1021 00 1525 cmpx2 bp|1 .. 001033 0a 001037 6040 00 1526 tmi inscope1 .. 1527 001034 4a 4 00034 2351 20 1528 lda error_table_$frame_scope_err if so return error code 001035 aa 0 00004 7551 20 1529 sta ap|4,* .. 001036 aa 7 00044 7101 20 1530 short_return .. 1531 001037 aa 7 00025 1011 00 1532 inscope1: cmpx1 sb|stack_header.stack_end_ptr+1 check to see if after this frame 001040 0a 001044 6040 00 1533 tmi inscope2 .. 1534 001041 4a 4 00034 2351 20 1535 lda error_table_$frame_scope_err if so return error code 001042 aa 0 00004 7551 20 1536 sta ap|4,* .. 001043 aa 7 00044 7101 20 1537 short_return .. 1538 001044 aa 6 00023 7411 00 1539 inscope2: stx1 sp|stack_frame.next_sp+1 if all ok, set next frame pointer 001045 aa 7 00025 7411 00 1540 stx1 sb|stack_header.stack_end_ptr+1 set end ptr 001046 aa 0 00000 2351 00 1541 lda ap|0 check for PL/1 call 001047 aa 000014 3150 07 1542 cana =o14,dl .. 001050 aa 7 00044 6001 20 1543 tze sb|stack_header.ret_no_pop_op_ptr,* skip if not PL/1 001051 aa 6 00005 7411 00 1544 stx1 sp|5 correct sp|5 for PL/1 001052 aa 7 00044 7101 20 1545 short_return return 1546 1547 " 1548 1549 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1550 " 1551 " decode_entry_value ..... extract ptrs from PL/I entry variable 1552 " 1553 " call cu_$decode_entry_value(entry_value, ep_ptr, env_ptr) 1554 " 1555 " 1. entry_value (entry) - entry value to be decoded 1556 " 2. ep_ptr (ptr) - entry point pointer 1557 " 3. env_ptr (ptr) - environment pointer 1558 " 1559 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1560 1561 001053 1562 decode_entry_value: 001053 aa 0 00002 3715 20 1563 epp5 ap|2,* get ptr to entry value 001054 aa 5 00000 3535 20 1564 epp3 pr5|0,* pick up entry ptr from entry variable 001055 aa 0 00004 2535 20 1565 spri3 ap|4,* store entry ptr in second arg 001056 aa 5 00002 3535 20 1566 epp3 pr5|2,* pick up environment ptr from entry variable 001057 aa 0 00006 2535 20 1567 spri3 ap|6,* store environment ptr in third arg 001060 aa 7 00044 7101 20 1568 short_return 1569 1570 1571 1572 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1573 " 1574 " make_entry_value ..... construct PL/I entry value from input pointer 1575 " 1576 " call cu_$make_entry_value (ep_ptr, entry_var) 1577 " 1578 " 1. ep_ptr (ptr) - points to external entry point 1579 " 2. entry_var (entry) - entry variable to be filled in 1580 " 1581 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1582 1583 001061 1584 make_entry_value: 001061 aa 0 00002 3715 20 1585 epp5 ap|2,* get ptr to first arg 001062 aa 5 00000 3715 20 1586 epp5 pr5|0,* pick up ep_ptr 001063 aa 0 00004 3535 20 1587 epp3 ap|4,* get ptr to entrry variable 001064 aa 3 00000 6515 00 1588 spri5 pr3|0 store ep_ptr into it 001065 0a 000006 2370 00 1589 ldaq null pick up null ptr 001066 aa 3 00002 7571 00 1590 staq pr3|2 and store in entry variable 001067 aa 7 00044 7101 20 1591 short_return 1592 1593 " 1594 1595 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1596 " 1597 " level_get ..... entry to get (return) the current validation level 1598 " 1599 " call cu_$level_get (level) 1600 " 1601 " 1. level (fixed bin(17)) - current validation level (returned). 1602 " 1603 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1604 001070 1605 level_get: 001070 4a 4 00036 7131 20 1606 callsp hcs_$level_get " only hardcore knows for sure 1607 1608 1609 1610 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1611 " 1612 " level_set ..... entry to set the current validation level 1613 " 1614 " call cu_$level_set(level) 1615 " 1616 " 1. level (fixed bin(17)) - validation level to be set. 1617 " 1618 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1619 001071 1620 level_set: 001071 4a 4 00040 7131 20 1621 callsp hcs_$level_set " hardcore will do this 1622 1623 end ENTRY SEQUENCES 001072 5a 000542 0000 00 001073 aa 7 00046 2721 20 001074 0a 000643 7100 00 001075 5a 000532 0000 00 001076 aa 7 00046 2721 20 001077 0a 000650 7100 00 001100 5a 000524 0000 00 001101 aa 7 00046 2721 20 001102 0a 000657 7100 00 001103 5a 000515 0000 00 001104 aa 7 00046 2721 20 001105 0a 000706 7100 00 001106 5a 000506 0000 00 001107 aa 7 00046 2721 20 001110 0a 000616 7100 00 001111 5a 000476 0000 00 001112 aa 7 00046 2721 20 001113 0a 000632 7100 00 001114 5a 000470 0000 00 001115 aa 7 00046 2721 20 001116 0a 000450 7100 00 001117 5a 000461 0000 00 001120 aa 7 00046 2721 20 001121 0a 000453 7100 00 001122 5a 000452 0000 00 001123 aa 7 00046 2721 20 001124 0a 000770 7100 00 001125 5a 000445 0000 00 001126 aa 7 00046 2721 20 001127 0a 000526 7100 00 001130 5a 000437 0000 00 001131 aa 7 00046 2721 20 001132 0a 000523 7100 00 001133 5a 000431 0000 00 001134 aa 7 00046 2721 20 001135 0a 000764 7100 00 001136 5a 000425 0000 00 001137 aa 7 00046 2721 20 001140 0a 000012 7100 00 001141 5a 000421 0000 00 001142 aa 7 00046 2721 20 001143 0a 000071 7100 00 001144 5a 000411 0000 00 001145 aa 7 00046 2721 20 001146 0a 001053 7100 00 001147 5a 000400 0000 00 001150 aa 7 00046 2721 20 001151 0a 000227 7100 00 001152 5a 000372 0000 00 001153 aa 7 00046 2721 20 001154 0a 000372 7100 00 001155 5a 000363 0000 00 001156 aa 7 00046 2721 20 001157 0a 000267 7100 00 001160 5a 000356 0000 00 001161 aa 7 00046 2721 20 001162 0a 000046 7100 00 001163 5a 000346 0000 00 001164 aa 7 00046 2721 20 001165 0a 000027 7100 00 001166 5a 000335 0000 00 001167 aa 7 00046 2721 20 001170 0a 000100 7100 00 001171 5a 000324 0000 00 001172 aa 7 00046 2721 20 001173 0a 000563 7100 00 001174 5a 000314 0000 00 001175 aa 7 00046 2721 20 001176 0a 000566 7100 00 001177 5a 000307 0000 00 001200 aa 7 00046 2721 20 001201 0a 000117 7100 00 001202 5a 000275 0000 00 001203 aa 7 00046 2721 20 001204 0a 000236 7100 00 001205 5a 000266 0000 00 001206 aa 7 00046 2721 20 001207 0a 000224 7100 00 001210 5a 000257 0000 00 001211 aa 7 00046 2721 20 001212 0a 000176 7100 00 001213 5a 000247 0000 00 001214 aa 7 00046 2721 20 001215 0a 000157 7100 00 001216 5a 000237 0000 00 001217 aa 7 00046 2721 20 001220 0a 001002 7100 00 001221 5a 000231 0000 00 001222 aa 7 00046 2721 20 001223 0a 001070 7100 00 001224 5a 000223 0000 00 001225 aa 7 00046 2721 20 001226 0a 001071 7100 00 001227 5a 000213 0000 00 001230 aa 7 00046 2721 20 001231 0a 001061 7100 00 001232 5a 000205 0000 00 001233 aa 7 00046 2721 20 001234 0a 000376 7100 00 001235 5a 000177 0000 00 001236 aa 7 00046 2721 20 001237 0a 000142 7100 00 001240 5a 000166 0000 00 001241 aa 7 00046 2721 20 001242 0a 000065 7100 00 001243 5a 000155 0000 00 001244 aa 7 00046 2721 20 001245 0a 000136 7100 00 001246 5a 000142 0000 00 001247 aa 7 00046 2721 20 001250 0a 000263 7100 00 001251 5a 000131 0000 00 001252 aa 7 00046 2721 20 001253 0a 000215 7100 00 001254 5a 000124 0000 00 001255 aa 7 00046 2721 20 001256 0a 000057 7100 00 001257 5a 000114 0000 00 001260 aa 7 00046 2721 20 001261 0a 000051 7100 00 001262 5a 000103 0000 00 001263 aa 7 00046 2721 20 001264 0a 000122 7100 00 001265 5a 000076 0000 00 001266 aa 7 00046 2721 20 001267 0a 000130 7100 00 001270 5a 000064 0000 00 001271 aa 7 00046 2721 20 001272 0a 000255 7100 00 001273 5a 000055 0000 00 001274 aa 7 00046 2721 20 001275 0a 000221 7100 00 001276 5a 000046 0000 00 001277 aa 7 00046 2721 20 001300 0a 000207 7100 00 001301 5a 000036 0000 00 001302 aa 7 00046 2721 20 001303 0a 000201 7100 00 001304 5a 000026 0000 00 001305 aa 7 00046 2721 20 001306 0a 001021 7100 00 001307 5a 000017 0000 00 001310 aa 7 00046 2721 20 001311 0a 000773 7100 00 001312 5a 000007 0000 00 001313 aa 7 00046 2721 20 001314 0a 000775 7100 00 LITERALS 001316 aa 000077 777777 NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 001317 5a 000003 000000 001320 5a 000560 600000 001321 aa 000000 000000 001322 55 000007 000002 001323 5a 000002 400003 001324 55 000006 000007 001325 aa 003 143 165 137 001326 55 000017 000003 001327 0a 001313 500000 001330 55 000012 000003 001331 aa 020 163 164 141 stack_frame_size 001332 aa 143 153 137 146 001333 aa 162 141 155 145 001334 aa 137 163 151 172 001335 aa 145 000 000 000 001336 55 000026 000007 001337 0a 001310 500000 001340 55 000022 000003 001341 aa 017 163 164 141 stack_frame_ptr 001342 aa 143 153 137 146 001343 aa 162 141 155 145 001344 aa 137 160 164 162 001345 55 000036 000017 001346 0a 001305 500000 001347 55 000031 000003 001350 aa 022 163 150 162 shrink_stack_frame 001351 aa 151 156 153 137 001352 aa 163 164 141 143 001353 aa 153 137 146 162 001354 aa 141 155 145 000 001355 55 000046 000026 001356 0a 001302 500000 001357 55 000041 000003 001360 aa 023 163 145 164 set_ready_procedure 001361 aa 137 162 145 141 001362 aa 144 171 137 160 001363 aa 162 157 143 145 001364 aa 144 165 162 145 001365 55 000055 000036 001366 0a 001277 500000 001367 55 000051 000003 001370 aa 016 163 145 164 set_ready_proc 001371 aa 137 162 145 141 001372 aa 144 171 137 160 001373 aa 162 157 143 000 001374 55 000064 000046 001375 0a 001274 500000 001376 55 000060 000003 001377 aa 016 163 145 164 set_ready_mode 001400 aa 137 162 145 141 001401 aa 144 171 137 155 001402 aa 157 144 145 000 001403 55 000076 000055 001404 0a 001271 500000 001405 55 000067 000003 001406 aa 032 163 145 164 set_evaluate_active_string 001407 aa 137 145 166 141 001410 aa 154 165 141 164 001411 aa 145 137 141 143 001412 aa 164 151 166 145 001413 aa 137 163 164 162 001414 aa 151 156 147 000 001415 55 000103 000064 001416 0a 001266 500000 001417 55 000101 000003 001420 aa 006 163 145 164 set_cp 001421 aa 137 143 160 000 001422 55 000114 000076 001423 0a 001263 500000 001424 55 000106 000003 001425 aa 025 163 145 164 set_command_processor 001426 aa 137 143 157 155 001427 aa 155 141 156 144 001430 aa 137 160 162 157 001431 aa 143 145 163 163 001432 aa 157 162 000 000 001433 55 000124 000103 001434 0a 001260 500000 001435 55 000117 000003 001436 aa 023 163 145 164 set_cl_intermediary 001437 aa 137 143 154 137 001440 aa 151 156 164 145 001441 aa 162 155 145 144 001442 aa 151 141 162 171 001443 55 000131 000114 001444 0a 001255 500000 001445 55 000127 000003 001446 aa 006 163 145 164 set_cl 001447 aa 137 143 154 000 001450 55 000142 000124 001451 0a 001252 500000 001452 55 000134 000003 001453 aa 025 162 145 163 reset_ready_procedure 001454 aa 145 164 137 162 001455 aa 145 141 144 171 001456 aa 137 160 162 157 001457 aa 143 145 144 165 001460 aa 162 145 000 000 001461 55 000155 000131 001462 0a 001247 500000 001463 55 000145 000003 001464 aa 034 162 145 163 reset_evaluate_active_string 001465 aa 145 164 137 145 001466 aa 166 141 154 165 001467 aa 141 164 145 137 001470 aa 141 143 164 151 001471 aa 166 145 137 163 001472 aa 164 162 151 156 001473 aa 147 000 000 000 001474 55 000166 000142 001475 0a 001244 500000 001476 55 000160 000003 001477 aa 027 162 145 163 reset_command_processor 001500 aa 145 164 137 143 001501 aa 157 155 155 141 001502 aa 156 144 137 160 001503 aa 162 157 143 145 001504 aa 163 163 157 162 001505 55 000177 000155 001506 0a 001241 500000 001507 55 000171 000003 001510 aa 025 162 145 163 reset_cl_intermediary 001511 aa 145 164 137 143 001512 aa 154 137 151 156 001513 aa 164 145 162 155 001514 aa 145 144 151 141 001515 aa 162 171 000 000 001516 55 000205 000166 001517 0a 001236 500000 001520 55 000202 000003 001521 aa 012 162 145 141 ready_proc 001522 aa 144 171 137 160 001523 aa 162 157 143 000 001524 55 000213 000177 001525 0a 001233 500000 001526 55 000210 000003 001527 aa 010 160 164 162 ptr_call 001530 aa 137 143 141 154 001531 aa 154 000 000 000 001532 55 000223 000205 001533 0a 001230 500000 001534 55 000216 000003 001535 aa 020 155 141 153 make_entry_value 001536 aa 145 137 145 156 001537 aa 164 162 171 137 001540 aa 166 141 154 165 001541 aa 145 000 000 000 001542 55 000231 000213 001543 0a 001225 500000 001544 55 000226 000003 001545 aa 011 154 145 166 level_set 001546 aa 145 154 137 163 001547 aa 145 164 000 000 001550 55 000237 000223 001551 0a 001222 500000 001552 55 000234 000003 001553 aa 011 154 145 166 level_get 001554 aa 145 154 137 147 001555 aa 145 164 000 000 001556 55 000247 000231 001557 0a 001217 500000 001560 55 000242 000003 001561 aa 020 147 162 157 grow_stack_frame 001562 aa 167 137 163 164 001563 aa 141 143 153 137 001564 aa 146 162 141 155 001565 aa 145 000 000 000 001566 55 000257 000237 001567 0a 001214 500000 001570 55 000252 000003 001571 aa 023 147 145 164 get_ready_procedure 001572 aa 137 162 145 141 001573 aa 144 171 137 160 001574 aa 162 157 143 145 001575 aa 144 165 162 145 001576 55 000266 000247 001577 0a 001211 500000 001600 55 000262 000003 001601 aa 016 147 145 164 get_ready_proc 001602 aa 137 162 145 141 001603 aa 144 171 137 160 001604 aa 162 157 143 000 001605 55 000275 000257 001606 0a 001206 500000 001607 55 000271 000003 001610 aa 016 147 145 164 get_ready_mode 001611 aa 137 162 145 141 001612 aa 144 171 137 155 001613 aa 157 144 145 000 001614 55 000307 000266 001615 0a 001203 500000 001616 55 000300 000003 001617 aa 032 147 145 164 get_evaluate_active_string 001620 aa 137 145 166 141 001621 aa 154 165 141 164 001622 aa 145 137 141 143 001623 aa 164 151 166 145 001624 aa 137 163 164 162 001625 aa 151 156 147 000 001626 55 000314 000275 001627 0a 001200 500000 001630 55 000312 000003 001631 aa 006 147 145 164 get_cp 001632 aa 137 143 160 000 001633 55 000324 000307 001634 0a 001175 500000 001635 55 000317 000003 001636 aa 020 147 145 164 get_command_name 001637 aa 137 143 157 155 001640 aa 155 141 156 144 001641 aa 137 156 141 155 001642 aa 145 000 000 000 001643 55 000335 000314 001644 0a 001172 500000 001645 55 000327 000003 001646 aa 024 147 145 164 get_command_name_rel 001647 aa 137 143 157 155 001650 aa 155 141 156 144 001651 aa 137 156 141 155 001652 aa 145 137 162 145 001653 aa 154 000 000 000 001654 55 000346 000324 001655 0a 001167 500000 001656 55 000340 000003 001657 aa 025 147 145 164 get_command_processor 001660 aa 137 143 157 155 001661 aa 155 141 156 144 001662 aa 137 160 162 157 001663 aa 143 145 163 163 001664 aa 157 162 000 000 001665 55 000356 000335 001666 0a 001164 500000 001667 55 000351 000003 001670 aa 023 147 145 164 get_cl_intermediary 001671 aa 137 143 154 137 001672 aa 151 156 164 145 001673 aa 162 155 145 144 001674 aa 151 141 162 171 001675 55 000363 000346 001676 0a 001161 500000 001677 55 000361 000003 001700 aa 006 147 145 164 get_cl 001701 aa 137 143 154 000 001702 55 000372 000356 001703 0a 001156 500000 001704 55 000366 000003 001705 aa 015 147 145 156 generate_call 001706 aa 145 162 141 164 001707 aa 145 137 143 141 001710 aa 154 154 000 000 001711 55 000400 000363 001712 0a 001153 500000 001713 55 000375 000003 001714 aa 010 147 145 156 gen_call 001715 aa 137 143 141 154 001716 aa 154 000 000 000 001717 55 000411 000372 001720 0a 001150 500000 001721 55 000403 000003 001722 aa 026 145 166 141 evaluate_active_string 001723 aa 154 165 141 164 001724 aa 145 137 141 143 001725 aa 164 151 166 145 001726 aa 137 163 164 162 001727 aa 151 156 147 000 001730 55 000421 000400 001731 0a 001145 500000 001732 55 000414 000003 001733 aa 022 144 145 143 decode_entry_value 001734 aa 157 144 145 137 001735 aa 145 156 164 162 001736 aa 171 137 166 141 001737 aa 154 165 145 000 001740 55 000425 000411 001741 0a 001142 500000 001742 55 000424 000003 001743 aa 002 143 160 000 cp 001744 55 000431 000421 001745 0a 001137 500000 001746 55 000430 000003 001747 aa 002 143 154 000 cl 001750 55 000437 000425 001751 0a 001134 500000 001752 55 000434 000003 001753 aa 012 143 141 154 caller_ptr 001754 aa 154 145 162 137 001755 aa 160 164 162 000 001756 55 000445 000431 001757 0a 001131 500000 001760 55 000442 000003 001761 aa 013 141 162 147 arg_ptr_rel 001762 aa 137 160 164 162 001763 aa 137 162 145 154 001764 55 000452 000437 001765 0a 001126 500000 001766 55 000450 000003 001767 aa 007 141 162 147 arg_ptr 001770 aa 137 160 164 162 001771 55 000461 000445 001772 0a 001123 500000 001773 55 000455 000003 001774 aa 014 141 162 147 arg_list_ptr 001775 aa 137 154 151 163 001776 aa 164 137 160 164 001777 aa 162 000 000 000 002000 55 000470 000452 002001 0a 001120 500000 002002 55 000464 000003 002003 aa 015 141 162 147 arg_count_rel 002004 aa 137 143 157 165 002005 aa 156 164 137 162 002006 aa 145 154 000 000 002007 55 000476 000461 002010 0a 001115 500000 002011 55 000473 000003 002012 aa 011 141 162 147 arg_count 002013 aa 137 143 157 165 002014 aa 156 164 000 000 002015 55 000506 000470 002016 0a 001112 500000 002017 55 000501 000003 002020 aa 021 141 146 137 af_return_arg_rel 002021 aa 162 145 164 165 002022 aa 162 156 137 141 002023 aa 162 147 137 162 002024 aa 145 154 000 000 002025 55 000515 000476 002026 0a 001107 500000 002027 55 000511 000003 002030 aa 015 141 146 137 af_return_arg 002031 aa 162 145 164 165 002032 aa 162 156 137 141 002033 aa 162 147 000 000 002034 55 000524 000506 002035 0a 001104 500000 002036 55 000520 000003 002037 aa 016 141 146 137 af_arg_ptr_rel 002040 aa 141 162 147 137 002041 aa 160 164 162 137 002042 aa 162 145 154 000 002043 55 000532 000515 002044 0a 001101 500000 002045 55 000527 000003 002046 aa 012 141 146 137 af_arg_ptr 002047 aa 141 162 147 137 002050 aa 160 164 162 000 002051 55 000542 000524 002052 0a 001076 500000 002053 55 000535 000003 002054 aa 020 141 146 137 af_arg_count_rel 002055 aa 141 162 147 137 002056 aa 143 157 165 156 002057 aa 164 137 162 145 002060 aa 154 000 000 000 002061 55 000551 000532 002062 0a 001073 500000 002063 55 000545 000003 002064 aa 014 141 146 137 af_arg_count 002065 aa 141 162 147 137 002066 aa 143 157 165 156 002067 aa 164 000 000 000 002070 55 000002 000542 002071 6a 000000 400002 002072 55 000554 000003 002073 aa 014 163 171 155 symbol_table 002074 aa 142 157 154 137 002075 aa 164 141 142 154 002076 aa 145 000 000 000 DEFINITIONS HASH TABLE 002077 aa 000000 000131 002100 5a 000445 000000 002101 aa 000000 000000 002102 5a 000335 000000 002103 5a 000506 000000 002104 5a 000551 000000 002105 aa 000000 000000 002106 aa 000000 000000 002107 5a 000064 000000 002110 5a 000363 000000 002111 5a 000400 000000 002112 5a 000532 000000 002113 aa 000000 000000 002114 aa 000000 000000 002115 aa 000000 000000 002116 5a 000461 000000 002117 aa 000000 000000 002120 aa 000000 000000 002121 aa 000000 000000 002122 5a 000017 000000 002123 5a 000431 000000 002124 5a 000314 000000 002125 aa 000000 000000 002126 aa 000000 000000 002127 aa 000000 000000 002130 aa 000000 000000 002131 5a 000103 000000 002132 5a 000372 000000 002133 5a 000247 000000 002134 5a 000346 000000 002135 aa 000000 000000 002136 aa 000000 000000 002137 5a 000142 000000 002140 aa 000000 000000 002141 aa 000000 000000 002142 aa 000000 000000 002143 5a 000515 000000 002144 5a 000425 000000 002145 5a 000421 000000 002146 aa 000000 000000 002147 5a 000026 000000 002150 5a 000411 000000 002151 5a 000437 000000 002152 5a 000476 000000 002153 aa 000000 000000 002154 aa 000000 000000 002155 5a 000257 000000 002156 5a 000266 000000 002157 aa 000000 000000 002160 aa 000000 000000 002161 5a 000155 000000 002162 5a 000007 000000 002163 5a 000036 000000 002164 5a 000114 000000 002165 5a 000205 000000 002166 aa 000000 000000 002167 aa 000000 000000 002170 5a 000307 000000 002171 5a 000356 000000 002172 aa 000000 000000 002173 5a 000324 000000 002174 5a 000177 000000 002175 5a 000542 000000 002176 aa 000000 000000 002177 aa 000000 000000 002200 5a 000470 000000 002201 aa 000000 000000 002202 5a 000213 000000 002203 aa 000000 000000 002204 5a 000046 000000 002205 5a 000055 000000 002206 aa 000000 000000 002207 5a 000452 000000 002210 aa 000000 000000 002211 5a 000275 000000 002212 5a 000131 000000 002213 5a 000166 000000 002214 aa 000000 000000 002215 aa 000000 000000 002216 aa 000000 000000 002217 5a 000076 000000 002220 5a 000124 000000 002221 aa 000000 000000 002222 5a 000223 000000 002223 5a 000231 000000 002224 aa 000000 000000 002225 5a 000237 000000 002226 5a 000524 000000 002227 aa 000000 000000 002230 aa 000000 000000 EXTERNAL NAMES 002231 aa 004 150 143 163 hcs_ 002232 aa 137 000 000 000 002233 aa 017 146 162 141 frame_scope_err 002234 aa 155 145 137 163 002235 aa 143 157 160 145 002236 aa 137 145 162 162 002237 aa 017 145 151 147 eight_unaligned 002240 aa 150 164 137 165 002241 aa 156 141 154 151 002242 aa 147 156 145 144 002243 aa 013 156 157 164 not_act_fnc 002244 aa 137 141 143 164 002245 aa 137 146 156 143 002246 aa 032 143 157 155 command_name_not_available 002247 aa 155 141 156 144 002250 aa 137 156 141 155 002251 aa 145 137 156 157 002252 aa 164 137 141 166 002253 aa 141 151 154 141 002254 aa 142 154 145 000 002255 aa 005 156 157 141 noarg 002256 aa 162 147 000 000 002257 aa 017 141 143 164 active_function 002260 aa 151 166 145 137 002261 aa 146 165 156 143 002262 aa 164 151 157 156 002263 aa 007 156 157 144 nodescr 002264 aa 145 163 143 162 002265 aa 014 145 162 162 error_table_ 002266 aa 157 162 137 164 002267 aa 141 142 154 145 002270 aa 137 000 000 000 002271 aa 013 145 166 141 eval_string 002272 aa 154 137 163 164 002273 aa 162 151 156 147 002274 aa 024 160 162 151 print_ready_message_ 002275 aa 156 164 137 162 002276 aa 145 141 144 171 002277 aa 137 155 145 163 002300 aa 163 141 147 145 002301 aa 137 000 000 000 002302 aa 022 143 157 155 command_processor_ 002303 aa 155 141 156 144 002304 aa 137 160 162 157 002305 aa 143 145 163 163 002306 aa 157 162 137 000 002307 aa 020 165 156 143 unclaimed_signal 002310 aa 154 141 151 155 002311 aa 145 144 137 163 002312 aa 151 147 156 141 002313 aa 154 000 000 000 002314 aa 012 147 145 164 get_to_cl_ 002315 aa 137 164 157 137 002316 aa 143 154 137 000 NO TRAP POINTER WORDS TYPE PAIR BLOCKS 002317 aa 000004 000000 002320 55 000712 000226 002321 aa 000004 000000 002322 55 000712 000234 002323 aa 000004 000000 002324 55 000746 000714 002325 aa 000004 000000 002326 55 000746 000720 002327 aa 000004 000000 002330 55 000746 000724 002331 aa 000004 000000 002332 55 000746 000727 002333 aa 000004 000000 002334 55 000746 000736 002335 aa 000004 000000 002336 55 000746 000740 002337 aa 000004 000000 002340 55 000746 000744 002341 aa 000004 000000 002342 55 000763 000752 002343 aa 000004 000000 002344 55 000755 000755 002345 aa 000004 000000 002346 55 000763 000763 002347 aa 000004 000000 002350 55 000775 000770 002351 aa 000001 000000 002352 aa 000000 000000 INTERNAL EXPRESSION WORDS 002353 5a 001000 000000 002354 5a 001002 000000 002355 5a 001004 000000 002356 5a 001006 000000 002357 5a 001010 000000 002360 5a 001012 000000 002361 5a 001014 000000 002362 5a 001016 000000 002363 5a 001020 000000 002364 5a 001022 000000 002365 5a 001024 000000 002366 5a 001026 000000 002367 5a 001030 000000 LINKAGE INFORMATION 000032 aa 000000 000000 000033 0a 001317 000000 000034 aa 000000 000000 000035 aa 000000 000000 000036 aa 000000 000000 000037 aa 000000 000000 000040 22 000010 000042 000041 a2 000000 000032 000042 9a 777770 0000 46 get_to_cl_|unclaimed_signal 000043 5a 001050 0000 00 000044 9a 777766 0000 46 command_processor_|command_processor_ 000045 5a 001047 0000 00 000046 9a 777764 0000 46 print_ready_message_|print_ready_message_ 000047 5a 001046 0000 00 000050 9a 777762 0000 46 command_processor_|eval_string 000051 5a 001045 0000 00 000052 9a 777760 0000 46 error_table_|nodescr 000053 5a 001044 0000 00 000054 9a 777756 0000 46 error_table_|active_function 000055 5a 001043 0000 00 000056 9a 777754 0000 46 error_table_|noarg 000057 5a 001042 0000 00 000060 9a 777752 0000 46 error_table_|command_name_not_available 000061 5a 001041 0000 00 000062 9a 777750 0000 46 error_table_|not_act_fnc 000063 5a 001040 0000 00 000064 9a 777746 0000 46 error_table_|eight_unaligned 000065 5a 001037 0000 00 000066 9a 777744 0000 46 error_table_|frame_scope_err 000067 5a 001036 0000 00 000070 9a 777742 0000 46 hcs_|level_get 000071 5a 001035 0000 00 000072 9a 777740 0000 46 hcs_|level_set 000073 5a 001034 0000 00 SYMBOL INFORMATION SYMBOL TABLE HEADER 000000 aa 000000 000001 000001 aa 163171 155142 000002 aa 164162 145145 000003 aa 000000 000010 000004 aa 000000 117244 000005 aa 361023 525721 000006 aa 000000 117547 000007 aa 255572 013563 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000002 000002 000016 aa 000064 000000 000017 aa 000000 000373 000020 aa 000000 000133 000021 aa 000253 000243 000022 aa 000363 000133 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 070056 061064 000030 aa 040115 141162 000031 aa 143150 040061 000032 aa 071070 071040 000033 aa 040040 040040 000034 aa 110151 162156 000035 aa 145151 163145 000036 aa 156056 123171 000037 aa 163115 141151 000040 aa 156164 056141 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 055164 141162 000045 aa 147145 164040 000046 aa 154066 070040 000047 aa 040040 040040 000050 aa 040040 040040 000051 aa 040040 040040 000052 aa 040040 040040 000053 aa 040040 040040 000054 aa 040040 040040 000055 aa 040040 040040 000056 aa 040154 151163 000057 aa 164040 163171 000060 aa 155142 157154 000061 aa 163040 040040 000062 aa 040040 040040 000063 aa 040040 040040 000064 aa 000000 000001 000065 aa 000000 000003 000066 aa 000102 000032 000067 aa 175453 017576 000070 aa 000000 117547 000071 aa 176227 200000 000072 aa 000111 000042 000073 aa 147777 464111 000074 aa 000000 115000 000075 aa 507463 000000 000076 aa 000122 000041 000077 aa 052721 247134 000100 aa 000000 105272 000101 aa 317215 400000 000102 aa 076163 160145 >spec>install>1110>cu_.alm 000103 aa 143076 151156 000104 aa 163164 141154 000105 aa 154076 061061 000106 aa 061060 076143 000107 aa 165137 056141 000110 aa 154155 040040 000111 aa 076154 144144 >ldd>include>stack_header.incl.alm 000112 aa 076151 156143 000113 aa 154165 144145 000114 aa 076163 164141 000115 aa 143153 137150 000116 aa 145141 144145 000117 aa 162056 151156 000120 aa 143154 056141 000121 aa 154155 040040 000122 aa 076154 144144 >ldd>include>stack_frame.incl.alm 000123 aa 076151 156143 000124 aa 154165 144145 000125 aa 076163 164141 000126 aa 143153 137146 000127 aa 162141 155145 000130 aa 056151 156143 000131 aa 154056 141154 000132 aa 155040 040040 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number 511 ach_check_v1 cu_: 987, 994. 470 ach_continue cu_: 967, 970. 520 ach_err_af cu_: 991, 997, 1006. 515 ach_err_no_descs cu_: 973, 977, 1001. active_function cu_: 1007. 643 af_arg_count cu_: 62, 1233. 650 af_arg_count_rel cu_: 63, 1251. 655 af_arg_count_rel_return cu_: 1257, 1259. 646 af_arg_count_return cu_: 1236, 1238. 657 af_arg_ptr cu_: 64, 1278. 665 af_arg_ptr_common cu_: 1287, 1334. 703 af_arg_ptr_noarg cu_: 1289, 1292, 1309. 706 af_arg_ptr_rel cu_: 65, 1322. 702 af_arg_ptr_return cu_: 1285, 1306, 1332. 755 af_error_nodescr cu_: 1355, 1383. 757 af_error_not_af cu_: 1349, 1352, 1368, 1377, 1387. 760 af_error_return cu_: 1385, 1390. 616 af_return_arg cu_: 66, 1177. 624 af_return_arg_common cu_: 1186, 1218. 632 af_return_arg_rel cu_: 67, 1206. 630 af_return_arg_return cu_: 1184, 1193, 1216. 1031 aligned cu_: 1518, 1524. 450 arg_count cu_: 68, 925. 456 arg_count_common cu_: 928, 950. 464 arg_count_hard cu_: 956, 963. 453 arg_count_rel cu_: 69, 944. 770 arg_list_ptr cu_: 70, 1427. 526 arg_ptr cu_: 71, 1044. 527 arg_ptr_common cu_: 1029, 1046. 560 arg_ptr_noarg cu_: 1053, 1057, 1079. 557 arg_ptr_no_descriptors cu_: 1063, 1076. 523 arg_ptr_rel cu_: 72, 1026. 764 caller_ptr cu_: 73, 1409. 1170 call_offset stack_header: 80. 746 check_v1_desc cu_: 1364, 1374. 12 cl cu_: 74, 198. 0 cl_arg cu_: 151, 202. 6 cl_arglist cu_: 160, 201, 203. 2 cl_entry cu_: 157, 206, 229, 241, 243, 259, 278, 280, 298, 300, 315, 316. 20 cl_with_args cu_: 200, 205. command_name_not_available cu_: 1156. command_processor_ cu_: 339, 361, 650, 673. 71 cp cu_: 75, 333. 12 cp_entry cu_: 165, 333, 356, 368, 370, 386, 405, 407, 425, 427, 442, 443. 1053 decode_entry_value cu_: 76, 1562. 1 descriptor_mask cu_: 130, 1073. 2 desc_mask cu_: 133, 995, 1375. 26 eas_entry cu_: 177, 644, 668, 680, 682, 702, 704, 719, 720. eight_unaligned cu_: 1520. 1174 entry_offset stack_header: 84. error_table_ cu_: 1002, 1007, 1080, 1156, 1310, 1384, 1388, 1520, 1528, 1535. 227 evaluate_active_string cu_: 77, 643. eval_string cu_: 650, 673. 0 fb21_mask cu_: 127, 1150. frame_scope_err cu_: 1528, 1535. 267 generate_call cu_: 79, 738. 362 generate_call_call cu_: 811, 823. 272 generate_call_common cu_: 210, 337, 478, 648, 746. 372 gen_call cu_: 78, 840. 46 get_cl cu_: 80, 259. 27 get_cl_intermediary cu_: 81, 227. 41 get_cl_intermediary_non_default cu_: 232, 240. 566 get_command_name cu_: 84, 1116. 567 get_command_name_common cu_: 1102, 1119. 613 get_command_name_no_name cu_: 1130, 1136, 1155. 563 get_command_name_rel cu_: 83, 1099. 100 get_command_processor cu_: 82, 354. 117 get_cp cu_: 85, 386. 112 get_cp_non_default cu_: 359, 367. 250 get_eas_non_default cu_: 671, 679. 236 get_evaluate_active_string cu_: 86, 666. 224 get_ready_mode cu_: 87, 621. 176 get_ready_proc cu_: 88, 529. 157 get_ready_procedure cu_: 89, 497. 171 get_ready_procedure_non_default cu_: 502, 510. get_to_cl_ cu_: 212, 234. 1002 grow_stack_frame cu_: 90, 1481. 3 has_command_name_mask cu_: 136, 1129. hcs_ cu_: 1606, 1621. 1037 inscope1 cu_: 1526, 1532. 1044 inscope2 cu_: 1533, 1539. 0 int_stat cu_: 148, 149. 1070 level_get cu_: 91, 1605, 1606. 1071 level_set cu_: 92, 1620, 1621. 12 main cu_: 181. 1061 make_entry_value cu_: 93, 1584. noarg cu_: 1080, 1310. nodescr cu_: 1002, 1384. not_act_fnc cu_: 1388. 6 null cu_: 142, 208, 230, 236, 299, 314, 335, 357, 363, 426, 441, 476, 500, 506, 571, 586, 646, 669, 675, 718, 750, 767, 1047, 1120, 1178, 1207, 1279, 1323, 1589. print_ready_message_ cu_: 480, 504. 10 ptrmask cu_: 143, 209, 231, 336, 358, 477, 501, 647, 670, 756, 768. 376 ptr_call cu_: 94, 858. 440 ptr_call_call cu_: 888, 891, 903. 1171 push_offset stack_header: 81. 22 ready_arglist cu_: 172, 469, 471. 16 ready_entry cu_: 168, 474, 499, 511, 513, 530, 549, 551, 570, 572, 587, 588. 1 ready_mode cu_: 153, 470, 606, 622. 142 ready_proc cu_: 95, 465. 150 ready_with_args cu_: 468, 473. 65 reset_cl_intermediary cu_: 96, 313. 136 reset_command_processor cu_: 97, 440. 263 reset_evaluate_active_string cu_: 98, 717. 215 reset_ready_procedure cu_: 99, 585. 1173 return_no_pop_offset stack_header: 83. 1172 return_offset stack_header: 82. 57 set_cl cu_: 100, 296. 51 set_cl_intermediary cu_: 101, 275. 122 set_command_processor cu_: 102, 402. 130 set_cp cu_: 103, 423. 255 set_evaluate_active_string cu_: 104, 699. 221 set_ready_mode cu_: 105, 604. 207 set_ready_proc cu_: 106, 567. 201 set_ready_procedure cu_: 107, 546. 1021 shrink_stack_frame cu_: 108, 1513. 73 stach_header.trace_top_ptr stack_header: 62. 32 stack_frame.arg_ptr cu_: 927, 1044, 1117, 1342, 1428, stack_frame: 16. 100 stack_frame.condition_bit stack_frame: 32. 20 stack_frame.condition_word stack_frame: 9. 2000 stack_frame.crawl_out_bit stack_frame: 28. 26 stack_frame.entry_ptr stack_frame: 13. 20 stack_frame.flag_word cu_: 780, 866, stack_frame: 24. 400 stack_frame.link_trap_bit stack_frame: 30. 30 stack_frame.lp_ptr stack_frame: 15. 20000 stack_frame.main_proc_bit stack_frame: 25. 60 stack_frame.min_length cu_: 772, 782, 858, 868, 1524, stack_frame: 23. 22 stack_frame.next_sp cu_: 1462, 1490, 1539, stack_frame: 10. 36 stack_frame.on_unit_rel_ptrs stack_frame: 19. 30 stack_frame.operator_ptr stack_frame: 14. 37 stack_frame.operator_ret_ptr stack_frame: 20. 20 stack_frame.prev_sp cu_: 1410, stack_frame: 8. 40 stack_frame.regs stack_frame: 22. 24 stack_frame.return_ptr cu_: 1411, stack_frame: 12. 10000 stack_frame.run_unit_manager stack_frame: 26. 1000 stack_frame.signaller_bit stack_frame: 29. 22 stack_frame.signaller_word stack_frame: 11. 4000 stack_frame.signal_bit stack_frame: 27. 34 stack_frame.static_ptr stack_frame: 17. 200 stack_frame.support_bit cu_: 779, 865, stack_frame: 31. 35 stack_frame.support_ptr stack_frame: 18. 37 stack_frame.translator_id stack_frame: 21. 773 stack_frame_ptr cu_: 109, 1444. 775 stack_frame_size cu_: 110, 1461. 66 stack_header.assign_linkage_ptr stack_header: 59. 32 stack_header.bar_mode_sp stack_header: 42. 36 stack_header.call_op_ptr stack_header: 44. 10 stack_header.clr_ptr stack_header: 27. 6 stack_header.combined_stat_ptr stack_header: 25. 4 stack_header.cpm_data_ptr stack_header: 24. 13 stack_header.cpm_enabled stack_header: 32. 13 stack_header.cur_lot_size stack_header: 31. 64 stack_header.ect_ptr stack_header: 58. 46 stack_header.entry_op_ptr stack_header: 49. 70 stack_header.heap_header_ptr stack_header: 60. 74 stack_header.in_trace stack_header: 63. 52 stack_header.isot_ptr stack_header: 52. 26 stack_header.lot_ptr stack_header: 39. 12 stack_header.main_proc_invoked stack_header: 29. 12 stack_header.max_lot_size stack_header: 28. 20 stack_header.parent_ptr stack_header: 36. 34 stack_header.pl1_operators_ptr stack_header: 43. 40 stack_header.push_op_ptr cu_: 778, 864, stack_header: 46. 42 stack_header.return_op_ptr stack_header: 47. 44 stack_header.ret_no_pop_op_ptr cu_: 1494, 1543, stack_header: 48. 62 stack_header.rnt_ptr stack_header: 57. 12 stack_header.run_unit_depth stack_header: 30. 54 stack_header.sct_ptr stack_header: 53. 30 stack_header.signal_ptr stack_header: 41. 22 stack_header.stack_begin_ptr stack_header: 37. 24 stack_header.stack_end_ptr cu_: 1482, 1489, 1491, 1532, 1540, stack_header: 38. 14 stack_header.system_free_ptr stack_header: 33. 60 stack_header.sys_link_info_ptr stack_header: 56. 72 stack_header.trace_frames stack_header: 61. 50 stack_header.trans_op_tv_ptr stack_header: 51. 56 stack_header.unwinder_ptr stack_header: 54. 16 stack_header.user_free_ptr stack_header: 34. 100 stack_header_end stack_header: 64. 50 temp_ptr cu_: 119. 52 temp_ptr2 cu_: 119. 0 trace_frames.count stack_header: 69. 1 trace_frames.top_ptr stack_header: 70. 551 tv_offset stack_header: 75, 80, 81, 82, 83, 84. unclaimed_signal cu_: 212, 234. 4 v2_mask cu_: 139, 989, 1366. 130000 v2_var cu_: 125, 990, 1367. 10120 var_desc cu_: 124, 996, 1376. 717 verify_af cu_: 1183, 1235, 1284, 1341. 720 verify_af_rel cu_: 1215, 1256, 1331, 1344. NO FATAL ERRORS ----------------------------------------------------------- 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