ASSEMBLY LISTING OF SEGMENT >special_ldd>on>apl.1129>apl_iota_appendage_.alm ASSEMBLED ON: 11/29/83 1615.3 mst Tue OPTIONS USED: list ASSEMBLED BY: ALM Version 6.6 November 1982 ASSEMBLER CREATED: 09/21/83 1227.3 mst Wed  1 " ******************************************************  2 " * *  3 " * *  4 " * Copyright (c) 1972 by Massachusetts Institute of *  5 " * Technology and Honeywell Information Systems, Inc. *  6 " * *  7 " * *  8 " ******************************************************  9  10 " Subroutine called by apl to do a fast iota.  11 "  12 "Calling sequence:  13 "  14 " call apl_iota_appendage_ (index_origin, increment, no_of_elements, ptr_to_result_array);  15 "  16 " declare apl_iota_appendage_ entry (float, float, fixed bin, ptr); 17 "  18 " Modified 2 January 1974 by PG to construct backwards iota for big dealer.  19 " Modified 740829 by PG to treat index register 3 as an unsigned word offset, thus fixing a bug 20 " in which i65536 gave an overflow fault, and i70000 did only last 4 elements! 21 "  22 "Calling sequence for backwards iota:  23 "  24 " call apl_iota_appendage_ (index_origin, - step, - no_of_elements, ptr_to_result_array)  25 "  26  000000 27 name apl_iota_appendage_  000000 28 segdef apl_iota_appendage_ 000002 29 equ index_origin,2 000004 30 equ step,4 000006 31 equ no_of_elements,6  000010 32 equ result_ptr,8  000000 33 apl_iota_appendage_:  000000 aa 0 00010 3521 20 34 eppbp ap|result_ptr,* get ptr to result array  000001 aa 2 00000 3521 20 35 eppbp bp|0,*  000002 aa 0 00006 2361 20 36 ldq ap|no_of_elements,* number of elements to process  000003 0a 000053 6000 00 37 tze return_iota no elements to process, return null vector 000004 0a 000014 6050 00 38 tpl normal_iota ascending iota.  000005 aa 000044 7370 00 39 lls 36 prepare for negate.  000006 aa 000000 5310 00 40 neg 0 make number_of_elements positive  000007 aa 000001 7350 00 41 als 1 convert to word count  000010 aa 000000 6220 05 42 eax2 0,al put offset to last word in x2.  000011 aa 0 00002 4331 20 43 dfld ap|index_origin,* index_origin will be assigned to last element.  000012 aa 0 00004 3535 20 44 eppbb ap|step,* get pointer to step (presumed to be negative). 000013 0a 000026 7100 00 45 tra join_iota and begin.  46  000014 47 normal_iota:  000014 aa 000001 7360 00 48 qls 1 convert to word count  000015 aa 000000 6220 06 49 eax2 0,ql put offset to last word in x2  000016 aa 000001 7720 00 50 qrl 1 convert back to element number  000017 aa 000000 2350 07 51 lda 0,dl prepart for conversion to float  000020 aa 216000 4110 03 52 lde =71b25,du load e with right magic number  000021 aa 400000 4750 03 53 fad =0.0,du convert to float  000022 aa 0 00004 3535 20 54 eppbb ap|step,* get ptr to step between elements  000023 aa 002400 5750 03 55 fsb =1.0,du must subtract 1 because want number assigned to last element  000024 aa 3 00000 4631 00 56 dfmp bb|0 multiply by step  000025 aa 0 00002 4771 20 57 dfad ap|index_origin,* add index origin  58  000026 59 join_iota:  000026 aa 000000 6230 12 60 eax3 0,x2 get number of groups of 4 in result 000027 aa 777770 3630 03 61 anx3 =o777770,du get rid of those over mod 4 boundary  000030 0a 000045 6000 00 62 tze do_few less than 4 elements to process  000031 aa 000007 3620 03 63 anx2 7,du  000032 aa 2 00000 3715 12 64 epplb bp|0,x2  65  000033 66 many_iota_loop: 000033 aa 5 77776 4571 13 67 dfst lb|-2,x3 store into an element  000034 aa 3 00000 5771 00 68 dfsb bb|0 reduce by step quantity 000035 aa 5 77774 4571 13 69 dfst lb|-4,x3 store into an element  000036 aa 3 00000 5771 00 70 dfsb bb|0 reduce by step quantity 000037 aa 5 77772 4571 13 71 dfst lb|-6,x3 store into an element  000040 aa 3 00000 5771 00 72 dfsb bb|0 reduce by step quantity 000041 aa 5 77770 4571 13 73 dfst lb|-8,x3 store into an element  000042 aa 3 00000 5771 00 74 dfsb bb|0 reduce by step quantity 000043 aa 000010 1230 03 75 sblx3 8,du reduce by the 4 elements processed this iteration (unsigned offset!)  000044 0a 000033 6010 00 76 tnz many_iota_loop go do 4 more (again, unsigned! (tpnz was wrong!))  77  000045 78 do_few: "less than 4 left to do  000045 aa 000000 1020 03 79 cmpx2 0,du and out the mod 4 ones 000046 0a 000053 6000 00 80 tze return_iota none left to do  81  000047 82 few_iota_loop:  000047 aa 2 77776 4571 12 83 dfst bp|-2,x2  000050 aa 3 00000 5771 00 84 dfsb bb|0  000051 aa 000002 1620 03 85 sbx2 2,du  000052 0a 000047 6054 00 86 tpnz few_iota_loop 87  000053 88 return_iota:  000053 aa 7 00044 7101 20 89 short_return  90 end  NO LITERALS  NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 000054 5a 000003 000000 000055 5a 000032 600000 000056 aa 000000 000000 000057 55 000013 000002 000060 5a 000002 400003 000061 55 000006 000013 000062 aa 023 141 160 154 000063 aa 137 151 157 164 000064 aa 141 137 141 160 000065 aa 160 145 156 144 000066 aa 141 147 145 137 000067 55 000023 000003 000070 0a 000000 400000 000071 55 000016 000003 000072 aa 023 141 160 154 apl_iota_appendage_ 000073 aa 137 151 157 164 000074 aa 141 137 141 160 000075 aa 160 145 156 144 000076 aa 141 147 145 137 000077 55 000002 000013 000100 6a 000000 400002 000101 55 000026 000003 000102 aa 014 163 171 155 symbol_table  000103 aa 142 157 154 137 000104 aa 164 141 142 154 000105 aa 145 000 000 000 DEFINITIONS HASH TABLE  000106 aa 000000 000015 000107 aa 000000 000000 000110 aa 000000 000000 000111 aa 000000 000000 000112 aa 000000 000000 000113 aa 000000 000000 000114 aa 000000 000000 000115 5a 000023 000000 000116 aa 000000 000000 000117 5a 000013 000000 000120 aa 000000 000000 000121 aa 000000 000000 000122 aa 000000 000000 000123 aa 000000 000000 NO EXTERNAL NAMES  NO TRAP POINTER WORDS  TYPE PAIR BLOCKS  000124 aa 000001 000000 000125 aa 000000 000000 INTERNAL EXPRESSION WORDS LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 000054 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 000004 000004 aa 000000 112143 000005 aa 305203 523135 000006 aa 000000 112272 000007 aa 254447 671340 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 000125 000020 aa 000000 000106 000021 aa 000000 000114 000022 aa 000117 000106 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 040066 056066 000030 aa 040040 116157 000031 aa 166145 155142 000032 aa 145162 040061 000033 aa 071070 062040 000034 aa 115141 162164 000035 aa 151156 163157 000036 aa 156056 123171 000037 aa 163115 141151 000040 aa 156164 056155 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 154151 163164 000045 aa 040040 040040 000046 aa 040040 040040 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 040040 040040 000057 aa 040040 040040 000060 aa 040040 040040 000061 aa 040040 040040 000062 aa 040040 040040 000063 aa 040040 040040 000064 aa 000000 000001 000065 aa 000000 000001 000066 aa 000072 000060 000067 aa 122721 262565 000070 aa 000000 112272 000071 aa 152043 000000 000072 aa 076163 160145 >special_ldd>on>apl.1129>apl_iota_appendage_.alm  000073 aa 143151 141154 000074 aa 137154 144144 000075 aa 076157 156076 000076 aa 141160 154056 000077 aa 061061 062071 000100 aa 076141 160154 000101 aa 137151 157164 000102 aa 141137 141160 000103 aa 160145 156144 000104 aa 141147 145137 000105 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number  0 apl_iota_appendage_ apl_iota_appendage_: 28, 33.  45 do_few apl_iota_appendage_: 62, 78.  47 few_iota_loop apl_iota_appendage_: 82, 86.  2 index_origin apl_iota_appendage_: 29, 43, 57. 26 join_iota apl_iota_appendage_: 45, 59.  33 many_iota_loop apl_iota_appendage_: 66, 76.  14 normal_iota apl_iota_appendage_: 38, 47.  6 no_of_elements apl_iota_appendage_: 31, 36.  10 result_ptr apl_iota_appendage_: 32, 34.  53 return_iota apl_iota_appendage_: 37, 80, 88. 4 step apl_iota_appendage_: 30, 44, 54. 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