ASSEMBLY LISTING OF SEGMENT >spec>install>1110>condition_.alm ASSEMBLED ON: 11/11/89 0950.3 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 " *********************************************************** 8 9 %; 10 " ****************************************************** 11 " * * 12 " * * 13 " * Copyright (c) 1972 by Massachusetts Institute of * 14 " * Technology and Honeywell Information Systems, Inc. * 15 " * * 16 " * * 17 " ****************************************************** 18 000000 19 name condition_ 20 21 22 23 " condition_ - This procedure establishes a handler for a 24 " specified condition. 25 " 26 " declare condition_ entry(char(*),entry); 27 " 28 " call condition_(name, handler); 29 " 30 " 1. name is the name of the condition. (Input) 31 " 32 " 2. handler is the entry to be called when the specified 33 " condition is raised. (Input) 34 " 35 36 include stack_frame 1-1 " 1-2 " BEGIN INCLUDE FILE ... stack_frame.incl.alm 6/72 RBS 1-3 " 1-4 " Modified: 16 Dec 1977, D. Levin - to add fio_ps_ptr 1-5 " Modified: 3 Feb 1978, P. Krupp - to add run_unit_manager_bit & main_proc_bit 1-6 " Modified: 21 March 1978, D. Levin - change fio_ps_ptr to support_ptr 1-7 " 000020 1-8 equ stack_frame.prev_sp,16 000020 1-9 equ stack_frame.condition_word,16 000022 1-10 equ stack_frame.next_sp,18 000022 1-11 equ stack_frame.signaller_word,18 000024 1-12 equ stack_frame.return_ptr,20 000026 1-13 equ stack_frame.entry_ptr,22 000030 1-14 equ stack_frame.operator_ptr,24 000030 1-15 equ stack_frame.lp_ptr,24 000032 1-16 equ stack_frame.arg_ptr,26 000034 1-17 equ stack_frame.static_ptr,28 000035 1-18 equ stack_frame.support_ptr,29 " only used by fortran I/O 000036 1-19 equ stack_frame.on_unit_rel_ptrs,30 000037 1-20 equ stack_frame.operator_ret_ptr,31 000037 1-21 equ stack_frame.translator_id,31 000040 1-22 equ stack_frame.regs,32 000060 1-23 equ stack_frame.min_length,48 000020 1-24 equ stack_frame.flag_word,16 020000 1-25 bool stack_frame.main_proc_bit,020000 (DL) 010000 1-26 bool stack_frame.run_unit_manager,010000 (DL) 004000 1-27 bool stack_frame.signal_bit,004000 (DL) 002000 1-28 bool stack_frame.crawl_out_bit,002000 (DL) 001000 1-29 bool stack_frame.signaller_bit,001000 (DL) 000400 1-30 bool stack_frame.link_trap_bit,000400 (DL) 000200 1-31 bool stack_frame.support_bit,000200 (DL) 000100 1-32 bool stack_frame.condition_bit,000100 (DL) 1-33 1-34 " 1-35 " END INCLUDE FILE ... stack_frame.incl.alm 1-36 " 37 include stack_header 2-1 " BEGIN INCLUDE FILE ... stack_header.incl.alm 3/72 Bill Silver 2-2 " 2-3 " modified 7/76 by M. Weaver for *system links and more system use of areas 2-4 " modified 3/77 by M. Weaver to add rnt_ptr 2-5 " modified 7/77 by S. Webber to add run_unit_depth and assign_linkage_ptr 2-6 " modified 6/83 by J. Ives to add trace_frames and in_trace. 2-7 2-8 " HISTORY COMMENTS: 2-9 " 1) change(86-06-24,DGHowe), approve(86-06-24,MCR7396), 2-10 " audit(86-08-05,Schroth), install(86-11-03,MR12.0-1206): 2-11 " added the heap_header_ptr definition 2-12 " 2) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 2-13 " audit(86-10-10,Fawcett), install(86-11-03,MR12.0-1206): 2-14 " Modified to support control point management. These changes were 2-15 " actually made in February 1985 by G. Palter. 2-16 " 3) change(86-10-22,Fawcett), approve(86-10-22,MCR7473), 2-17 " audit(86-10-22,Farley), install(86-11-03,MR12.0-1206): 2-18 " Remove the old_lot pointer and replace it with cpm_data_ptr. Use the 18 2-19 " bit pad after cur_lot_size for the cpm_enabled. This was done to save 2-20 " some space int the stack header and change the cpd_ptr unal to 2-21 " cpm_data_ptr (ITS pair). 2-22 " END HISTORY COMMENTS 2-23 000004 2-24 equ stack_header.cpm_data_ptr,4 ptr to control point for this stack 000006 2-25 equ stack_header.combined_stat_ptr,6 ptr to separate static area 2-26 000010 2-27 equ stack_header.clr_ptr,8 ptr to area containing linkage sections 000012 2-28 equ stack_header.max_lot_size,10 number of words allowed in lot (DU) 000012 2-29 equ stack_header.main_proc_invoked,10 nonzero if main proc was invoked in run unit (DL) 000012 2-30 equ stack_header.run_unit_depth,10 number of active run units stacked (DL) 000013 2-31 equ stack_header.cur_lot_size,11 DU number of words (entries) in lot 000013 2-32 equ stack_header.cpm_enabled,11 DL non-zero if control point management is enabled 000014 2-33 equ stack_header.system_free_ptr,12 ptr to system storage area 000016 2-34 equ stack_header.user_free_ptr,14 ptr to user storage area 2-35 000020 2-36 equ stack_header.parent_ptr,16 ptr to parent stack or null 000022 2-37 equ stack_header.stack_begin_ptr,18 ptr to first stack frame 000024 2-38 equ stack_header.stack_end_ptr,20 ptr to next useable stack frame 000026 2-39 equ stack_header.lot_ptr,22 ptr to the lot for the current ring 2-40 000030 2-41 equ stack_header.signal_ptr,24 ptr to signal proc for current ring 000032 2-42 equ stack_header.bar_mode_sp,26 value of sp before entering bar mode 000034 2-43 equ stack_header.pl1_operators_ptr,28 ptr: pl1_operators_$operator_table 000036 2-44 equ stack_header.call_op_ptr,30 ptr to standard call operator 2-45 000040 2-46 equ stack_header.push_op_ptr,32 ptr to standard push operator 000042 2-47 equ stack_header.return_op_ptr,34 ptr to standard return operator 000044 2-48 equ stack_header.ret_no_pop_op_ptr,36 ptr: stand. return/ no pop operator 000046 2-49 equ stack_header.entry_op_ptr,38 ptr to standard entry operator 2-50 000050 2-51 equ stack_header.trans_op_tv_ptr,40 ptr to table of translator operator ptrs 000052 2-52 equ stack_header.isot_ptr,42 pointer to ISOT 000054 2-53 equ stack_header.sct_ptr,44 pointer to System Condition Table 000056 2-54 equ stack_header.unwinder_ptr,46 pointer to unwinder for current ring 2-55 000060 2-56 equ stack_header.sys_link_info_ptr,48 ptr to *system link name table 000062 2-57 equ stack_header.rnt_ptr,50 ptr to reference name table 000064 2-58 equ stack_header.ect_ptr,52 ptr to event channel table 000066 2-59 equ stack_header.assign_linkage_ptr,54 ptr to area for hcs_$assign_linkage calls 000070 2-60 equ stack_header.heap_header_ptr,56 ptr to heap header. 000072 2-61 equ stack_header.trace_frames,58 stack of trace_catch_ frames 000073 2-62 equ stach_header.trace_top_ptr,59 trace pointer 000074 2-63 equ stack_header.in_trace,60 trace antirecurse bit 000100 2-64 equ stack_header_end,64 length of stack header 2-65 2-66 2-67 2-68 000000 2-69 equ trace_frames.count,0 number of trace frames on stack 000001 2-70 equ trace_frames.top_ptr,1 packed pointer to top one 2-71 2-72 " The following constant is an offset within the pl1 operators table. 2-73 " It references a transfer vector table. 2-74 000551 2-75 bool tv_offset,551 2-76 2-77 2-78 " The following constants are offsets within this transfer vector table. 2-79 001170 2-80 equ call_offset,tv_offset+271 001171 2-81 equ push_offset,tv_offset+272 001172 2-82 equ return_offset,tv_offset+273 001173 2-83 equ return_no_pop_offset,tv_offset+274 001174 2-84 equ entry_offset,tv_offset+275 2-85 2-86 2-87 " END INCLUDE FILE stack_header.incl.alm 38 39 000000 40 equ on_name,0 pointer to name of condition 000002 41 equ on_body,2 pointer to handler for this condition 000004 42 equ on_size,4 length of condition name in chars 000005 43 equ on_next,5 thread to next condition 44 000000 aa 077777 000043 45 null: its -1,1 null pointer 000001 aa 000001 000000 000002 aa 040 040 040 040 46 blanks: aci " " word of blanks 000003 aa 000777 777777 47 masks1: oct 000777777777 masks for lookin at individual chars 000004 aa 777000 777777 48 oct 777000777777 000005 aa 777777 000777 49 oct 777777000777 000006 aa 777777 777000 50 oct 777777777000 000007 aa 000777 777777 51 masks2: oct 000777777777 masks for comparing strings 000010 aa 000000 777777 52 oct 000000777777 000011 aa 000000 000777 53 oct 000000000777 000012 aa 000000 000000 54 oct 000000000000 000013 55 char_count: 000013 aa 000000 000001 56 oct 1 number of chars in last word 000014 aa 000000 000002 57 oct 2 000015 aa 000000 000003 58 oct 3 000016 aa 000000 000004 59 oct 4 60 61 " The following conventions are used with respect to index registers: 62 " x0 reserved for subroutine calls 63 " x1 contains relative pointer to on unit 64 " x2 indicates number of words to grow stack frame 65 " x3 contains bit offset of name 66 " x4 for use by subroutines 67 " x5 contains number of chars in last word of condition name 68 " x6 contains the number of words in condition name minus one 69 " x7 reserved for subroutine calls 70 " 71 " pr3 used for pointer to condition name 72 " 73 " Completely recoded by R. J. Feiertag on November 13, 1971 74 " Modified by R. J. Feiertag on January 13, 1972 75 " Modified by C. Jensen on July 28, 1972 for the follow-on 645. 76 " Modified by M. Weaver on November 7, 1973 to make entries for the 77 " special handlers act like the main entries 78 " 000017 79 entry condition_ 000017 80 condition_: 000017 aa 0 00002 3521 20 81 eppbp ap|2,* get pointer to condition name 000020 aa 0 00006 7261 20 82 lxl6 ap|6,* get number of chars in name 000021 aa 0 00004 3535 20 83 eppbb ap|4,* get pointer to handler 000022 aa 0 00003 2351 00 84 lda ap|3 get bit offset of name 000023 aa 000011 7310 00 85 ars 9 .. 000024 aa 000777 3750 07 86 ana =o777,dl .. 000025 aa 000000 6230 05 87 eax3 0,al remember bit offset 000026 0a 000147 7070 00 88 join: tsx7 find_unit look for unit for this condition 000027 0a 000065 7100 00 89 tra found_condition have found unit for this condition 000030 aa 000007 6220 16 90 eax2 6+1,6 must create unit so grow stack frame 000031 0a 000134 7000 00 91 tsx0 grow_stack_frame .. 000032 aa 4 00004 4501 00 92 stz lp|on_size fill in length of condition name 000033 aa 4 00004 4451 00 93 sxl5 lp|on_size .. 000034 aa 000000 6350 16 94 eaa 0,6 .. 000035 aa 000020 7310 00 95 ars 16 .. 000036 aa 4 00004 0551 00 96 asa lp|on_size .. 000037 aa 000000 6230 13 97 eax3 0,3 is the name aligned 000040 0a 000050 6000 00 98 tze aligned if so use aligned code 000041 99 copy_more: 000041 aa 2 00000 2351 16 100 lda bp|0,6 copy name 000042 aa 2 00001 2361 16 101 ldq bp|1,6 .. 000043 aa 000000 7370 13 102 lls 0,3 .. 000044 aa 4 00006 7551 16 103 sta lp|6,6 .. 000045 aa 777777 6260 16 104 eax6 -1,6 .. 000046 0a 000041 6050 00 105 tpl copy_more .. 000047 0a 000054 7100 00 106 tra fill_on_unit skip aligned code 000050 107 aligned: 000050 aa 2 00000 2351 16 108 lda bp|0,6 copy condition name into stack 000051 aa 4 00006 7551 16 109 sta lp|6,6 .. 000052 aa 777777 6260 16 110 eax6 -1,6 .. 000053 0a 000050 6050 00 111 tpl aligned .. 000054 112 fill_on_unit: 000054 aa 4 00006 3521 00 113 eppbp lp|6 place pointer to name in unit 000055 aa 4 00000 2521 00 114 spribp lp|on_name .. 000056 aa 4 00005 4501 00 115 stz lp|on_next thread into condition stack 000057 aa 6 00036 2211 00 116 ldx1 sp|stack_frame.on_unit_rel_ptrs .. 000060 aa 4 00005 7411 00 117 stx1 lp|on_next .. 000061 aa 6 00000 6351 00 118 eaa sp|0 .. 000062 aa 000000 5310 00 119 neg 0 .. 000063 aa 4 00000 6211 01 120 eax1 lp|0,au .. 000064 aa 6 00036 7411 00 121 stx1 sp|stack_frame.on_unit_rel_ptrs .. 000065 122 found_condition: 000065 aa 3 00000 3521 20 123 eppbp bb|0,* place pointer to handler in unit 000066 aa 6 00002 2521 11 124 spribp sp|on_body,1 .. 000067 125 return: 000067 aa 7 00044 7101 20 126 short_return 127 " 128 " reversion_ - This procedure reverts the given condition. 129 " 130 " declare reversion_ entry(char(*)); 131 " 132 " call reversion_(name); 133 " 134 " 1. name name of condition to be reverted. (Input) 135 000070 136 entry reversion_ 137 000070 138 reversion_: 000070 aa 0 00002 3521 20 139 eppbp ap|2,* get pointer to condition name 000071 aa 0 00004 7261 20 140 lxl6 ap|4,* get length of condition name 000072 aa 0 00003 2351 00 141 lda ap|3 get bit offset of name 000073 aa 000011 7310 00 142 ars 9 .. 000074 aa 000777 3750 07 143 ana =o777,dl .. 000075 aa 000000 6230 05 144 eax3 0,al .. 000076 0a 000147 7070 00 145 tsx7 find_unit look for on unit 000077 aa 6 00004 4501 11 146 stz sp|on_size,1 unit found so revert it 000100 aa 7 00044 7101 20 147 short_return return to caller 148 " 149 " default_handler_$set,establish_cleanup_proc_ - 150 " These procedures establish the named handlers and procedures. 151 " 152 " declare (default_handler_$set,establish_cleanup_proc_) 153 " entry(entry); 154 " 155 " call default_handler_$set(handler); 156 " call establish_cleanup_proc_(handler); 157 " 158 " 1. handler is the entry to be invoked. (Input) 159 000101 160 any_other: 000101 aa 141 156 171 137 161 aci 'any_other ' 000102 aa 157 164 150 145 000103 aa 162 040 040 040 000104 162 cleanup: 000104 aa 143 154 145 141 163 aci 'cleanup ' 000105 aa 156 165 160 040 164 000106 165 entry set 166 000106 167 set: 000106 0a 000101 3520 00 168 eppbp any_other get ptr to condition name 000107 aa 000011 6260 00 169 eax6 9 get no. of chars in name 000110 aa 0 00002 3535 20 170 eppbb ap|2,* get ptr to handler 000111 aa 000000 6230 00 171 eax3 0 bit offset = 0 000112 0a 000026 7100 00 172 tra join use rest of code for condition_ 173 000113 174 entry establish_cleanup_proc_ 175 000113 176 establish_cleanup_proc_: 000113 0a 000104 3520 00 177 eppbp cleanup get ptr to condition name 000114 aa 000007 6260 00 178 eax6 7 get no. of chars in name 000115 aa 0 00002 3535 20 179 eppbb ap|2,* get ptr to handler 000116 aa 000000 6230 00 180 eax3 0 bit offset of name = 0 000117 0a 000026 7100 00 181 tra join use rest of code for condition_ 182 183 " The following entries were originally intended to revert 184 " the special handlers and are called with no arguments. 185 000120 186 entry revert 187 000120 188 revert: 000120 0a 000101 3520 00 189 eppbp any_other get ptr to condition name 000121 aa 000011 6260 00 190 eax6 9 get length of name 000122 aa 000000 6230 00 191 eax3 0 bit offset of name = 0 000123 0a 000147 7070 00 192 tsx7 find_unit look for on unit 000124 aa 6 00004 4501 11 193 stz sp|on_size,1 unit found so revert it 000125 aa 7 00044 7101 20 194 short_return return to caller 195 000126 196 entry revert_cleanup_proc_ 197 000126 198 revert_cleanup_proc_: 000126 0a 000104 3520 00 199 eppbp cleanup get ptr to condition name 000127 aa 000007 6260 00 200 eax6 7 get length of name 000130 aa 000000 6230 00 201 eax3 0 bit offset of name = 0 000131 0a 000147 7070 00 202 tsx7 find_unit look for on unit 000132 aa 6 00004 4501 11 203 stz sp|on_size,1 unit found so revert it 000133 aa 7 00044 7101 20 204 short_return return to caller 205 206 " 207 " The following subroutine grows the stack frame by the amount 208 " indicated in x2. Much of this code was copied from rest_of_cu_$grow_stack_frame 209 000134 210 grow_stack_frame: 000134 aa 7 00024 3701 20 211 epplp sb|stack_header.stack_end_ptr,* set lp to point to next available space 000135 aa 000017 6220 12 212 eax2 15,2 round to next mod 16 location 000136 aa 777760 3620 03 213 anx2 =o777760,du .. 000137 aa 7 00025 0221 00 214 adlx2 sb|stack_header.stack_end_ptr+1 Add increm. to stack end ptr. 000140 aa 7 00025 7421 00 215 stx2 sb|stack_header.stack_end_ptr+1 Save new stack end ptr. 000141 aa 6 00023 7421 00 216 stx2 sp|stack_frame.next_sp+1 Reset current stack frame's ptr. to the next stack frame. 217 000142 aa 0 00000 2361 00 218 ldq ap|0 Is this a pl1 frame? 000143 aa 000014 3160 07 219 canq =o14,dl .. 000144 aa 000000 6000 10 220 tze 0,0 No, return to caller. 000145 aa 6 00005 7421 00 221 stx2 sp|5 record growth in pl1 frame 000146 aa 000000 7100 10 222 tra 0,0 return to caller 223 " 224 " This subroutine tries to find the unit for the given condition. 225 000147 226 find_unit: 000147 aa 000100 2350 07 227 lda stack_frame.condition_bit,dl make sure this is a condition stack 000150 aa 6 00020 3151 00 228 cana sp|stack_frame.condition_word .. 000151 0a 000154 6010 00 229 tnz get_length .. 000152 aa 6 00036 4501 00 230 stz sp|stack_frame.on_unit_rel_ptrs .. 000153 aa 6 00020 2551 00 231 orsa sp|stack_frame.condition_word .. 000154 232 get_length: 000154 aa 000000 6350 16 233 eaa 0,6 get length of name in chars 000155 0a 000067 6000 00 234 tze return if zero then done 000156 aa 000024 7330 00 235 lrs 20 convert to words 000157 aa 000000 6260 05 236 eax6 0,al place number of words in x6 000160 aa 000020 7720 00 237 qrl 16 get extra chars 000161 aa 000001 6250 02 238 eax5 1,qu place extra chars in x5 000162 aa 000000 6230 13 239 eax3 0,3 set indicators according to value in x3 000163 0a 000222 6010 00 240 tnz unaligned if non zero bit offset use unaligned code 000164 241 previous_char: 000164 aa 777777 6250 15 242 eax5 -1,5 reduce chars by 1 000165 0a 000171 6010 00 243 tnz next_word have we gone over word boundary 000166 aa 777777 6260 16 244 eax6 -1,6 if so reduce number of words 000167 0a 000067 6040 00 245 tmi return name of all blanks 000170 aa 000004 6250 00 246 eax5 4 have four chars in new word 000171 247 next_word: 000171 aa 2 00000 2351 16 248 lda bp|0,6 get word and check for blanks 000172 0a 000002 2360 15 249 ldq masks1-1,5 .. 000173 0a 000002 2110 00 250 cmk blanks .. 000174 0a 000164 6000 00 251 tze previous_char if blank reduce length by 1 000175 aa 6 00036 2211 00 252 ldx1 sp|stack_frame.on_unit_rel_ptrs get offset of first on unit 000176 0a 000200 7100 00 253 tra next_length .. 000177 254 next_on_unit: 000177 aa 6 00005 2211 11 255 ldx1 sp|on_next,1 get offset of next on unit 000200 256 next_length: 000200 aa 000001 6000 17 257 tze 1,7 cannot find unit 000201 aa 000000 6350 16 258 eaa 0,6 compute length of name 000202 aa 000020 7310 00 259 ars 16 .. 000203 0a 000012 0750 15 260 ada char_count-1,5 .. 000204 aa 6 00004 1151 11 261 cmpa sp|on_size,1 are names the same length 000205 0a 000177 6010 00 262 tnz next_on_unit if not go to next on unit 000206 aa 6 00000 3701 31 263 epplp sp|on_name,1* get pointer to name for this unit 000207 aa 2 00000 2351 16 264 lda bp|0,6 compare extra chars 000210 0a 000006 2360 15 265 ldq masks2-1,5 .. 000211 aa 4 00000 2111 16 266 cmk lp|0,6 .. 000212 0a 000177 6010 00 267 tnz next_on_unit no match, try next 000213 aa 000000 6240 16 268 eax4 0,6 compare rest of name 000214 269 compare_next_word: 000214 aa 777777 6240 14 270 eax4 -1,4 .. 000215 aa 000000 6040 17 271 tmi 0,7 match, we are done 000216 aa 2 00000 2351 14 272 lda bp|0,4 .. 000217 aa 4 00000 1151 14 273 cmpa lp|0,4 .. 000220 0a 000214 6000 00 274 tze compare_next_word .. 000221 0a 000177 7100 00 275 tra next_on_unit no match, try next 276 000222 277 unaligned: 000222 aa 777777 6250 15 278 eax5 -1,5 strip off trailing blanks 000223 0a 000227 6010 00 279 tnz unal_next_word .. 000224 aa 777777 6260 16 280 eax6 -1,6 .. 000225 0a 000067 6040 00 281 tmi return .. 000226 aa 000004 6250 00 282 eax5 4 .. 000227 283 unal_next_word: 000227 aa 2 00000 2351 16 284 lda bp|0,6 .. 000230 aa 2 00001 2361 16 285 ldq bp|1,6 align string 000231 aa 000000 7370 13 286 lls 0,3 .. 000232 0a 000002 2360 15 287 ldq masks1-1,5 .. 000233 0a 000002 2110 00 288 cmk blanks .. 000234 0a 000222 6000 00 289 tze unaligned .. 000235 aa 6 00036 2211 00 290 ldx1 sp|stack_frame.on_unit_rel_ptrs get offset of first on unit 000236 0a 000240 7100 00 291 tra unal_next_length .. 000237 292 unaligned_next_on_unit: 000237 aa 6 00005 2211 11 293 ldx1 sp|on_next,1 get offset of next on unit 000240 294 unal_next_length: 000240 aa 000001 6000 17 295 tze 1,7 cannot find unit 000241 aa 000000 6350 16 296 eaa 0,6 compute length of name 000242 aa 000020 7310 00 297 ars 16 .. 000243 0a 000012 0750 15 298 ada char_count-1,5 .. 000244 aa 6 00004 1151 11 299 cmpa sp|on_size,1 are names the same length 000245 0a 000237 6010 00 300 tnz unaligned_next_on_unit if not go to next on unit 000246 aa 6 00000 3701 31 301 epplp sp|on_name,1* get pointer to name for this unit 000247 aa 2 00000 2351 16 302 lda bp|0,6 align this word of string 000250 aa 2 00001 2361 16 303 ldq bp|1,6 .. 000251 aa 000000 7370 13 304 lls 0,3 .. 000252 0a 000006 2360 15 305 ldq masks2-1,5 compare extra chars 000253 aa 4 00000 2111 16 306 cmk lp|0,6 .. 000254 0a 000237 6010 00 307 tnz unaligned_next_on_unit continue comparison 000255 0a 000237 6010 00 308 tnz unaligned_next_on_unit no match, try next unit 000256 aa 000000 6240 16 309 eax4 0,6 compare rest of name 000257 310 unal_compare_next: 000257 aa 777777 6240 14 311 eax4 -1,4 .. 000260 aa 000000 6040 17 312 tmi 0,7 match, done 000261 aa 2 00000 2351 14 313 lda bp|0,4 align word of string 000262 aa 2 00001 2361 14 314 ldq bp|1,4 .. 000263 aa 000000 7370 13 315 lls 0,3 .. 000264 aa 4 00000 1151 14 316 cmpa lp|0,4 compare word 000265 0a 000257 6000 00 317 tze unal_compare_next continue comparison 000266 0a 000237 7100 00 318 tra unaligned_next_on_unit no match, try next unit 319 320 end ENTRY SEQUENCES 000267 5a 000052 0000 00 000270 aa 7 00046 2721 20 000271 0a 000017 7100 00 000272 5a 000044 0000 00 000273 aa 7 00046 2721 20 000274 0a 000070 7100 00 000275 5a 000040 0000 00 000276 aa 7 00046 2721 20 000277 0a 000106 7100 00 000300 5a 000027 0000 00 000301 aa 7 00046 2721 20 000302 0a 000113 7100 00 000303 5a 000022 0000 00 000304 aa 7 00046 2721 20 000305 0a 000120 7100 00 000306 5a 000011 0000 00 000307 aa 7 00046 2721 20 000310 0a 000126 7100 00 NO LITERALS NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 000312 5a 000003 000000 000313 5a 000067 600000 000314 aa 000000 000000 000315 55 000011 000002 000316 5a 000002 400003 000317 55 000006 000011 000320 aa 012 143 157 156 000321 aa 144 151 164 151 000322 aa 157 156 137 000 000323 55 000022 000003 000324 0a 000307 500000 000325 55 000014 000003 000326 aa 024 162 145 166 revert_cleanup_proc_ 000327 aa 145 162 164 137 000330 aa 143 154 145 141 000331 aa 156 165 160 137 000332 aa 160 162 157 143 000333 aa 137 000 000 000 000334 55 000027 000011 000335 0a 000304 500000 000336 55 000025 000003 000337 aa 006 162 145 166 revert 000340 aa 145 162 164 000 000341 55 000040 000022 000342 0a 000301 500000 000343 55 000032 000003 000344 aa 027 145 163 164 establish_cleanup_proc_ 000345 aa 141 142 154 151 000346 aa 163 150 137 143 000347 aa 154 145 141 156 000350 aa 165 160 137 160 000351 aa 162 157 143 137 000352 55 000044 000027 000353 0a 000276 500000 000354 55 000043 000003 000355 aa 003 163 145 164 set 000356 55 000052 000040 000357 0a 000273 500000 000360 55 000047 000003 000361 aa 012 162 145 166 reversion_ 000362 aa 145 162 163 151 000363 aa 157 156 137 000 000364 55 000060 000044 000365 0a 000270 500000 000366 55 000055 000003 000367 aa 012 143 157 156 condition_ 000370 aa 144 151 164 151 000371 aa 157 156 137 000 000372 55 000002 000052 000373 6a 000000 400002 000374 55 000063 000003 000375 aa 014 163 171 155 symbol_table 000376 aa 142 157 154 137 000377 aa 164 141 142 154 000400 aa 145 000 000 000 DEFINITIONS HASH TABLE 000401 aa 000000 000015 000402 aa 000000 000000 000403 aa 000000 000000 000404 aa 000000 000000 000405 aa 000000 000000 000406 5a 000044 000000 000407 aa 000000 000000 000410 5a 000011 000000 000411 5a 000027 000000 000412 5a 000060 000000 000413 5a 000052 000000 000414 5a 000040 000000 000415 5a 000022 000000 000416 aa 000000 000000 NO EXTERNAL NAMES NO TRAP POINTER WORDS TYPE PAIR BLOCKS 000417 aa 000001 000000 000420 aa 000000 000000 INTERNAL EXPRESSION WORDS 000421 aa 000000 000000 LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 000312 000000 000002 aa 000000 000000 000003 aa 000000 000000 000004 aa 000000 000000 000005 aa 000000 000000 000006 22 000010 000010 000007 a2 000000 000000 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 255653 436202 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 000210 000020 aa 000000 000135 000021 aa 000164 000161 000022 aa 000200 000135 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 000041 000067 aa 175453 017560 000070 aa 000000 117547 000071 aa 176222 200000 000072 aa 000113 000041 000073 aa 052721 247134 000074 aa 000000 105272 000075 aa 317215 400000 000076 aa 000124 000042 000077 aa 147777 464111 000100 aa 000000 115000 000101 aa 507463 000000 000102 aa 076163 160145 >spec>install>1110>condition_.alm 000103 aa 143076 151156 000104 aa 163164 141154 000105 aa 154076 061061 000106 aa 061060 076143 000107 aa 157156 144151 000110 aa 164151 157156 000111 aa 137056 141154 000112 aa 155040 040040 000113 aa 076154 144144 >ldd>include>stack_frame.incl.alm 000114 aa 076151 156143 000115 aa 154165 144145 000116 aa 076163 164141 000117 aa 143153 137146 000120 aa 162141 155145 000121 aa 056151 156143 000122 aa 154056 141154 000123 aa 155040 040040 000124 aa 076154 144144 >ldd>include>stack_header.incl.alm 000125 aa 076151 156143 000126 aa 154165 144145 000127 aa 076163 164141 000130 aa 143153 137150 000131 aa 145141 144145 000132 aa 162056 151156 000133 aa 143154 056141 000134 aa 154155 040040 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number 50 aligned condition_: 98, 107, 111. 101 any_other condition_: 160, 168, 189. 2 blanks condition_: 46, 250, 288. 1170 call_offset stack_header: 80. 13 char_count condition_: 55, 260, 298. 104 cleanup condition_: 162, 177, 199. 214 compare_next_word condition_: 269, 274. 17 condition_ condition_: 79, 80. 41 copy_more condition_: 99, 105. 1174 entry_offset stack_header: 84. 113 establish_cleanup_proc_ condition_: 174, 176. 54 fill_on_unit condition_: 106, 112. 147 find_unit condition_: 88, 145, 192, 202, 226. 65 found_condition condition_: 89, 122. 154 get_length condition_: 229, 232. 134 grow_stack_frame condition_: 91, 210. 26 join condition_: 88, 172, 181. 3 masks1 condition_: 47, 249, 287. 7 masks2 condition_: 51, 265, 305. 200 next_length condition_: 253, 256. 177 next_on_unit condition_: 254, 262, 267, 275. 171 next_word condition_: 243, 247. 0 null condition_: 45. 2 on_body condition_: 41, 124. 0 on_name condition_: 40, 114, 263, 301. 5 on_next condition_: 43, 115, 117, 255, 293. 4 on_size condition_: 42, 92, 93, 96, 146, 193, 203, 261, 299. 164 previous_char condition_: 241, 251. 1171 push_offset stack_header: 81. 67 return condition_: 125, 234, 245, 281. 1173 return_no_pop_offset stack_header: 83. 1172 return_offset stack_header: 82. 70 reversion_ condition_: 136, 138. 120 revert condition_: 186, 188. 126 revert_cleanup_proc_ condition_: 196, 198. 106 set condition_: 165, 167. 73 stach_header.trace_top_ptr stack_header: 62. 32 stack_frame.arg_ptr stack_frame: 16. 100 stack_frame.condition_bit condition_: 227, stack_frame: 32. 20 stack_frame.condition_word condition_: 228, 231, 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 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 stack_frame: 23. 22 stack_frame.next_sp condition_: 216, stack_frame: 10. 36 stack_frame.on_unit_rel_ptrs condition_: 116, 121, 230, 252, 290, 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 stack_frame: 8. 40 stack_frame.regs stack_frame: 22. 24 stack_frame.return_ptr 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 stack_frame: 31. 35 stack_frame.support_ptr stack_frame: 18. 37 stack_frame.translator_id stack_frame: 21. 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 stack_header: 46. 42 stack_header.return_op_ptr stack_header: 47. 44 stack_header.ret_no_pop_op_ptr 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 condition_: 211, 214, 215, 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. 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. 222 unaligned condition_: 240, 277, 289. 237 unaligned_next_on_unit condition_: 292, 300, 307, 308, 318. 257 unal_compare_next condition_: 310, 317. 240 unal_next_length condition_: 291, 294. 227 unal_next_word condition_: 279, 283. 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