ASSEMBLY LISTING OF SEGMENT >special_ldd>install>MR12.2-1071>e_find_invocation_.alm ASSEMBLED ON: 08/01/88 0952.6 mst Mon OPTIONS USED: -target l68 list symbols ASSEMBLED BY: ALM Version 7.4 April 1987 ASSEMBLER CREATED: 11/02/87 1303.7 mst Mon 1 " *********************************************************** 2 " * * 3 " * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4 " * * 5 " * Copyright (c) 1978 by Massachusetts Institute of * 6 " * Technology and Honeywell Information Systems, Inc. * 7 " * * 8 " * Copyright (c) 1972 by Massachusetts Institute of * 9 " * Technology and Honeywell Information Systems, Inc. * 10 " * * 11 " *********************************************************** 12 " 13 " 14 " This module is used by emacs to find the appropriate invocation to use. 15 " It's operation is as follows: 16 " 17 " (1) If there are no invocations, return null. 18 " (2) If all invocations are on the same stack, return most recent invocation. 19 " (3) If there are tasking invocations on the current stack, return most recent 20 " of those. 21 " (4) If there are nontasking invocations, return most recent of those. 22 " (5) Return the most recent invocation. 23 " 24 " Note that we assume that an invocation closer to the head if the 25 " invocation chain is more recent than one further away. 26 " (I.e., we assume that emacs_data_$invocation_list -> emacs_data 27 " is more recent than 28 " emacs_data_$invocation_list -> emacs_data.next_invocation -> emacs_data) 29 " 30 " pr0 points to caller's arg list: 1 output argument, type ptr. 31 " pr1 points to the emacs invocation being considered. 32 " pr3 saves the first or first nontask invocation ptr for failing search. 33 " pr6 points to the current stack frame. 34 " x0 contains a branch address to only save the first nontask invocation. 35 " x1 contains the segno of the current execution stack. 36 " 37 " Written 7 August 1981 by J. Spencer Love. 38 " Modified 8 August 1981 Benson Margulies and Richard Soley to correct, 39 " clean, and debug. 40 " 41 000000 42 name e_find_invocation_ 43 44 include emacs_data 1-1 "Begin include file ...... emacs_data.incl.alm 1-2 1-3 " HISTORY COMMENTS: 1-4 " 1) change(82-10-22,Margolin), approve(), audit(), install(): 1-5 " Created 10/22/82 1734.1 edt Fri by convert_include_file, 1-6 " Version of 07/15/82 2204.3 edt Thu. 1-7 " Made from >x>ue>i>i>emacs_data.incl.pl1, 1-8 " modified 10/12/82 2208.4 edt Tue 1-9 " 2) change(84-09-23,Margolin), approve(), audit(), install(): 1-10 " to add emacs_data.shared_static by hand. 1-11 " 3) change(84-11-02,Margolin), approve(), audit(), install(): 1-12 " to add emacs_data.force by hand. 1-13 " 4) change(86-07-16,Margolin), approve(86-07-16,MCR7452), 1-14 " audit(86-11-03,Coren), install(86-11-03,MR12.0-1205): 1-15 " Modified by hand to add emacs_data.turned_on_video. 1-16 " 5) change(87-12-22,Schroth), approve(88-02-29,MCR7851), 1-17 " audit(88-06-06,RBarstad), install(88-08-01,MR12.2-1071): 1-18 " Created 12/22/87 1053.4 mst Tue by convert_include_file, 1-19 " Version of 01/09/85 0754.4 mst Wed. 1-20 " Made from >udd>tsdc>Schroth>w>emd>incl>emacs_data.incl.pl1, 1-21 " modified 12/21/87 1652.2 mst Mon 1-22 " Recreated from new emacs_data.incl.pl1 which added 1-23 " emacs_data.extended_ascii flag and increased emacs_data.breaktable 1-24 " to 256 entries. This is for 8 bit I/O. 1-25 " END HISTORY COMMENTS 1-26 1-27 1-28 " 1-29 " Structure emacs_data 1-30 " 000634 1-31 equ emacs_data_size,412 1-32 1-33 000000 1-34 equ emacs_data.next_invocation,0 000002 1-35 equ emacs_data.prev_invocation,2 000004 1-36 equ emacs_data.frame_ptr,4 000006 1-37 equ emacs_data.myname,6 000016 1-38 equ emacs_data.env_name,14 000026 1-39 equ emacs_data.log_name,22 000036 1-40 equ emacs_data.info_ptr,30 000040 1-41 equ emacs_data.status_code,32 000042 1-42 equ emacs_data.output_iocb,34 000044 1-43 equ emacs_data.input_iocb,36 000046 1-44 equ emacs_data.arg_list_ptr,38 000050 1-45 equ emacs_data.flags,40 " LEVEL 2 1-46 400000 1-47 bool emacs_data.debugging,400000 " DU 200000 1-48 bool emacs_data.using_video,200000 " DU 100000 1-49 bool emacs_data.in_emacs,100000 " DU 040000 1-50 bool emacs_data.new_arguments,040000 " DU 020000 1-51 bool emacs_data.using_r0_echnego,020000 " DU 010000 1-52 bool emacs_data.netsw,010000 " DU 1-53 " bool emacs_data.messages_were_sent_here,004000 " DU 002000 1-54 bool emacs_data.update_breaktable,002000 " DU 001000 1-55 bool emacs_data.got_cr,001000 " DU 000400 1-56 bool emacs_data.turned_on_video,000400 " DU 000200 1-57 bool emacs_data.extended_ascii,000200 " DU 1-58 000052 1-59 equ emacs_data.arguments,42 " LEVEL 2 1-60 400000 1-61 bool emacs_data.ns,400000 " DU 200000 1-62 bool emacs_data.query,200000 " DU 100000 1-63 bool emacs_data.reset,100000 " DU 040000 1-64 bool emacs_data.task,040000 " DU 020000 1-65 bool emacs_data.no_task,020000 " DU 010000 1-66 bool emacs_data.destroy_task,010000 " DU 004000 1-67 bool emacs_data.shared_static,004000 " DU 002000 1-68 bool emacs_data.force,002000 " DU 1-69 000053 1-70 equ emacs_data.ls,43 1-71 000054 1-72 equ emacs_data.pl,44 " UPPER 1-73 000055 1-74 equ emacs_data.ll,45 1-75 000056 1-76 equ emacs_data.apply,46 " UPPER 1-77 000057 1-78 equ emacs_data.path_count,47 000060 1-79 equ emacs_data.ttp,48 000132 1-80 equ emacs_data.first_path,90 000134 1-81 equ emacs_data.tasking,92 " LEVEL 2 1-82 000134 1-83 equ emacs_data.task_flags,92 " LEVEL 3 1-84 400000 1-85 bool emacs_data.in_task,400000 " DU 200000 1-86 bool emacs_data.destroy,200000 " DU 1-87 000135 1-88 equ emacs_data.task_id,93 1-89 " equ emacs_data.saved_cl_intermediary,94 000142 1-90 equ emacs_data.return_label,98 000146 1-91 equ emacs_data.interrupts,102 " LEVEL 2 1-92 000146 1-93 equ emacs_data.head,102 000150 1-94 equ emacs_data.tail,104 000152 1-95 equ emacs_data.array,106 000154 1-96 equ emacs_data.terminal_type,108 000254 1-97 equ emacs_data.tty_modes,172 000454 1-98 equ emacs_data.linel,300 000455 1-99 equ emacs_data.ttyx,301 000456 1-100 equ emacs_data.netx,302 000457 1-101 equ emacs_data.wnetx,303 000460 1-102 equ emacs_data.chars_in_obuf,304 000461 1-103 equ emacs_data.echoed,305 000462 1-104 equ emacs_data.cgot,306 000463 1-105 equ emacs_data.ctook,307 000464 1-106 equ emacs_data.edir,308 000536 1-107 equ emacs_data.ledir,350 1-108 000610 1-109 equ emacs_data.breaktable_word,392 400000 1-110 bool emacs_data.breaktable,400000 " DU 1-111 000620 1-112 equ emacs_data.first_msgp,400 000622 1-113 equ emacs_data.last_msgp,402 000624 1-114 equ emacs_data.ibufptr,404 000626 1-115 equ emacs_data.obufptr,406 000630 1-116 equ emacs_data.ospeed,408 000632 1-117 equ emacs_data.level_ptr,410 1-118 1-119 " 1-120 " Structure path 1-121 " 000055 1-122 equ path_size,45 1-123 000000 1-124 equ path.next_path,0 000002 1-125 equ path.type,2 000003 1-126 equ path.name,3 1-127 000000 1-128 equ MACRO_PATH,0 " MANIFEST 000001 1-129 equ FIND_PATH,1 " MANIFEST 1-130 1-131 " 1-132 " Structure level_info 1-133 " 000000 1-134 equ level_info.prev_level,0 000002 1-135 equ level_info.tty_modes,2 000102 1-136 equ level_info.n_used,66 000103 1-137 equ level_info.n_allocated,67 000104 1-138 equ level_info.segment_ptrs,68 1-139 1-140 "END INCLUDE FILE emacs_data.incl.alm 45 000000 46 entry e_find_invocation_ 47 000000 48 e_find_invocation_: 000000 4a 4 00010 3515 20 49 epp1 emacs_data_$invocation_list,* 50 000001 aa 1 00000 2131 00 51 epaq pr1|0 " See if list is empty. 000002 aa 077777 3750 03 52 ana =o77777,du " Mask off uninteresting ring number. 000003 0a 000032 1170 00 53 cmpaq EPAQ_NULL_PTR " See if pointer is null. 000004 0a 000024 6000 00 54 tze EGRESS " If so, return it. 55 000005 aa 1 00000 3535 00 56 epp3 pr1|0 " Save first invocation for no tasking. 000006 0a 000026 6200 00 57 eax0 SAVE_NONTASK_INVOCATION " Replace first with first nontask. 58 000007 aa 6 00000 2131 00 59 epaq pr6|0 " Get a pointer to the current stack. 000010 aa 000000 6210 01 60 eax1 0,au " Put the segno in x1 for compare. 61 000011 62 FIND_TASK_LOOP: 000011 aa 1 00134 2361 00 63 ldq pr1|emacs_data.task_flags " See if this is a tasking invocation. 000012 aa 400000 3160 03 64 canq emacs_data.in_task,du 000013 aa 000000 6010 10 65 tnz 0,x0 66 000014 aa 1 00004 1011 00 67 cmpx1 pr1|emacs_data.frame_ptr " Check if task stack segno is equal. 000015 0a 000024 6000 00 68 tze EGRESS " If so, return this invocation. 69 000016 70 FIND_NEXT_TASK: 000016 aa 1 00000 3515 20 71 epp1 pr1|emacs_data.next_invocation,* " Get next invocation in chain. 72 000017 aa 1 00000 2131 00 73 epaq pr1|0 " See if we have reached the end. 000020 aa 077777 3750 03 74 ana =o77777,du " Mask off uninteresting ring number. 000021 0a 000032 1170 00 75 cmpaq EPAQ_NULL_PTR " See if pointer is null. 000022 0a 000011 6010 00 76 tnz FIND_TASK_LOOP " If not, check out this invocation. 77 000023 aa 3 00000 3515 00 78 epp1 pr3|0 " Else, use most recent invocation. 79 000024 80 EGRESS: 000024 aa 0 00002 2515 20 81 spri1 pr0|2,* " Return the invocation ptr to caller. 82 000025 aa 7 00044 7101 20 83 short_return 84 000026 85 SAVE_NONTASK_INVOCATION: 000026 aa 1 00000 3535 00 86 epp3 pr1|0 " Replace first with first nontask. 000027 0a 000016 6200 00 87 eax0 FIND_NEXT_TASK " Arrange not to come here again. 000030 0a 000016 7100 00 88 tra FIND_NEXT_TASK " Go back into search loop. 89 000031 aa 000000 0110 03 90 even 91 000032 92 EPAQ_NULL_PTR: 000032 aa 077777 000000 93 oct 077777000000 000033 aa 000001 000000 94 oct 000001000000 95 96 end ENTRY SEQUENCES 000034 5a 000013 0000 00 000035 aa 7 00046 2721 20 000036 0a 000000 7100 00 NO LITERALS NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 000040 5a 000003 000000 000041 5a 000032 600000 000042 aa 000000 000000 000043 55 000013 000002 000044 5a 000002 400003 000045 55 000006 000013 000046 aa 022 145 137 146 000047 aa 151 156 144 137 000050 aa 151 156 166 157 000051 aa 143 141 164 151 000052 aa 157 156 137 000 000053 55 000023 000003 000054 0a 000035 500000 000055 55 000016 000003 000056 aa 022 145 137 146 e_find_invocation_ 000057 aa 151 156 144 137 000060 aa 151 156 166 157 000061 aa 143 141 164 151 000062 aa 157 156 137 000 000063 55 000002 000013 000064 6a 000000 400002 000065 55 000026 000003 000066 aa 014 163 171 155 symbol_table 000067 aa 142 157 154 137 000070 aa 164 141 142 154 000071 aa 145 000 000 000 DEFINITIONS HASH TABLE 000072 aa 000000 000015 000073 aa 000000 000000 000074 aa 000000 000000 000075 aa 000000 000000 000076 aa 000000 000000 000077 aa 000000 000000 000100 aa 000000 000000 000101 5a 000023 000000 000102 aa 000000 000000 000103 aa 000000 000000 000104 5a 000013 000000 000105 aa 000000 000000 000106 aa 000000 000000 000107 aa 000000 000000 EXTERNAL NAMES 000110 aa 017 151 156 166 invocation_list 000111 aa 157 143 141 164 000112 aa 151 157 156 137 000113 aa 154 151 163 164 000114 aa 013 145 155 141 emacs_data_ 000115 aa 143 163 137 144 000116 aa 141 164 141 137 NO TRAP POINTER WORDS TYPE PAIR BLOCKS 000117 aa 000004 000000 000120 55 000054 000050 000121 aa 000001 000000 000122 aa 000000 000000 INTERNAL EXPRESSION WORDS 000123 5a 000057 000000 LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 000040 000000 000002 aa 000000 000000 000003 aa 000000 000000 000004 aa 000000 000000 000005 aa 000000 000000 000006 22 000010 000012 000007 a2 000000 000000 000010 9a 777770 0000 46 emacs_data_|invocation_list 000011 5a 000063 0000 20 SYMBOL INFORMATION SYMBOL TABLE HEADER 000000 aa 000000 000001 000001 aa 163171 155142 000002 aa 164162 145145 000003 aa 000000 000007 000004 aa 000000 115705 000005 aa 073761 335527 000006 aa 000000 116434 000007 aa 140707 340700 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 000161 000020 aa 000000 000131 000021 aa 000142 000136 000022 aa 000152 000131 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 067056 064040 000030 aa 101160 162151 000031 aa 154040 061071 000032 aa 070067 040040 000033 aa 040040 040040 000034 aa 107112 157150 000035 aa 156163 157156 000036 aa 056123 171163 000037 aa 115141 151156 000040 aa 164056 141040 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 000002 000066 aa 000076 000067 000067 aa 164337 321352 000070 aa 000000 116434 000071 aa 140710 000000 000072 aa 000114 000064 000073 aa 164337 321030 000074 aa 000000 116434 000075 aa 137153 400000 000076 aa 076163 160145 >special_ldd>install>MR12.2-1071>e_find_invocation_.alm 000077 aa 143151 141154 000100 aa 137154 144144 000101 aa 076151 156163 000102 aa 164141 154154 000103 aa 076115 122061 000104 aa 062056 062055 000105 aa 061060 067061 000106 aa 076145 137146 000107 aa 151156 144137 000110 aa 151156 166157 000111 aa 143141 164151 000112 aa 157156 137056 000113 aa 141154 155040 000114 aa 076163 160145 >special_ldd>install>MR12.2-1071>emacs_data.incl.alm 000115 aa 143151 141154 000116 aa 137154 144144 000117 aa 076151 156163 000120 aa 164141 154154 000121 aa 076115 122061 000122 aa 062056 062055 000123 aa 061060 067061 000124 aa 076145 155141 000125 aa 143163 137144 000126 aa 141164 141056 000127 aa 151156 143154 000130 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number 24 EGRESS e_find_invocation_: 54, 68, 80. 56 emacs_data.apply emacs_data: 76. 52 emacs_data.arguments emacs_data: 59. 46 emacs_data.arg_list_ptr emacs_data: 44. 152 emacs_data.array emacs_data: 95. 400000 emacs_data.breaktable emacs_data: 110. 610 emacs_data.breaktable_word emacs_data: 109. 462 emacs_data.cgot emacs_data: 104. 460 emacs_data.chars_in_obuf emacs_data: 102. 463 emacs_data.ctook emacs_data: 105. 400000 emacs_data.debugging emacs_data: 47. 200000 emacs_data.destroy emacs_data: 86. 10000 emacs_data.destroy_task emacs_data: 66. 461 emacs_data.echoed emacs_data: 103. 464 emacs_data.edir emacs_data: 106. 16 emacs_data.env_name emacs_data: 38. 200 emacs_data.extended_ascii emacs_data: 57. 620 emacs_data.first_msgp emacs_data: 112. 132 emacs_data.first_path emacs_data: 80. 50 emacs_data.flags emacs_data: 45. 2000 emacs_data.force emacs_data: 68. 4 emacs_data.frame_ptr e_find_invocation_: 67, emacs_data: 36. 1000 emacs_data.got_cr emacs_data: 55. 146 emacs_data.head emacs_data: 93. 624 emacs_data.ibufptr emacs_data: 114. 36 emacs_data.info_ptr emacs_data: 40. 44 emacs_data.input_iocb emacs_data: 43. 146 emacs_data.interrupts emacs_data: 91. 100000 emacs_data.in_emacs emacs_data: 49. 400000 emacs_data.in_task e_find_invocation_: 64, emacs_data: 85. 622 emacs_data.last_msgp emacs_data: 113. 536 emacs_data.ledir emacs_data: 107. 632 emacs_data.level_ptr emacs_data: 117. 454 emacs_data.linel emacs_data: 98. 55 emacs_data.ll emacs_data: 74. 26 emacs_data.log_name emacs_data: 39. 53 emacs_data.ls emacs_data: 70. 6 emacs_data.myname emacs_data: 37. 10000 emacs_data.netsw emacs_data: 52. 456 emacs_data.netx emacs_data: 100. 40000 emacs_data.new_arguments emacs_data: 50. 0 emacs_data.next_invocation e_find_invocation_: 71, emacs_data: 34. 20000 emacs_data.no_task emacs_data: 65. 400000 emacs_data.ns emacs_data: 61. 626 emacs_data.obufptr emacs_data: 115. 630 emacs_data.ospeed emacs_data: 116. 42 emacs_data.output_iocb emacs_data: 42. 57 emacs_data.path_count emacs_data: 78. 54 emacs_data.pl emacs_data: 72. 2 emacs_data.prev_invocation emacs_data: 35. 200000 emacs_data.query emacs_data: 62. 100000 emacs_data.reset emacs_data: 63. 142 emacs_data.return_label emacs_data: 90. 4000 emacs_data.shared_static emacs_data: 67. 40 emacs_data.status_code emacs_data: 41. 150 emacs_data.tail emacs_data: 94. 40000 emacs_data.task emacs_data: 64. 134 emacs_data.tasking emacs_data: 81. 134 emacs_data.task_flags e_find_invocation_: 63, emacs_data: 83. 135 emacs_data.task_id emacs_data: 88. 154 emacs_data.terminal_type emacs_data: 96. 60 emacs_data.ttp emacs_data: 79. 455 emacs_data.ttyx emacs_data: 99. 254 emacs_data.tty_modes emacs_data: 97. 400 emacs_data.turned_on_video emacs_data: 56. 2000 emacs_data.update_breaktable emacs_data: 54. 20000 emacs_data.using_r0_echnego emacs_data: 51. 200000 emacs_data.using_video emacs_data: 48. 457 emacs_data.wnetx emacs_data: 101. emacs_data_ e_find_invocation_: 49. 634 emacs_data_size emacs_data: 31. 32 EPAQ_NULL_PTR e_find_invocation_: 53, 75, 92. 0 e_find_invocation_ e_find_invocation_: 46, 48. 16 FIND_NEXT_TASK e_find_invocation_: 70, 87, 88. 1 FIND_PATH emacs_data: 129. 11 FIND_TASK_LOOP e_find_invocation_: 62, 76. invocation_list e_find_invocation_: 49. 103 level_info.n_allocated emacs_data: 137. 102 level_info.n_used emacs_data: 136. 0 level_info.prev_level emacs_data: 134. 104 level_info.segment_ptrs emacs_data: 138. 2 level_info.tty_modes emacs_data: 135. 0 MACRO_PATH emacs_data: 128. 3 path.name emacs_data: 126. 0 path.next_path emacs_data: 124. 2 path.type emacs_data: 125. 55 path_size emacs_data: 122. 26 SAVE_NONTASK_INVOCATION e_find_invocation_: 57, 85. 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