assm 01 12-10-82 15.824 module to monitor performce by sampling ic page 1 preface program break 4070 common length 0 v count bits 5 primary symdef entry icmon 26 icmdat 12 secondary symdef entry .chain 0 block length symref 1 intp 2 sked 3 etrip 4 idlend 5 idloop 6 intend end of binary card 00000001 assm 01 12-10-82 15.824 module to monitor performce by sampling ic page 2 1 * *********************************************************** 2 * * * 3 * * copyright, (c) honeywell information systems inc., 1982 * 4 * * * 5 * * copyright (c) 1972 by massachusetts institute of * 6 * * technology and honeywell information systems, inc. * 7 * * * 8 * *********************************************************** 9 assm 01 12-10-82 15.824 module to monitor performce by sampling ic page 3 11 lbl ,ic_sampler 13 pcc on 14 editp on 15 16 symref etrip start of elapsed timer handler - contains ic 17 symref sked lowest address to check 18 symref idloop start of idle loop 19 symref idlend end of idle loop 20 symref intp beginning of interpreter 21 symref intend end of interpreter 22 23 symdef icmon routine to do the work 24 symdef icmdat data base for external programs 25 26 27 * this module is controlled by data in the following table. 28 * the format of this table is known to ring-4 multics 29 * software (debug_fnp), from where it is read and patched. 30 00000 31 icsamp null 00000 32 start icsamp 33 00012 34 even 00012 35 icmdat null 00012 000000 0 36 action oct 0 multics sets this to request action 37 1 = start monitoring 38 2 = stop monitoring 39 3 = clear table 00013 000000 0 40 confrm oct 0 we set this to confirm receipt of action 41 1 = action performed 42 2 = illegal action 00014 000000 0 43 enable oct 0 when non-zero, monitoring is on 00015 0 00150 1 44 tbaddr ind table address of data area 00016 0 03720 0 45 tblen ind ltable number of words (2 per bucket) 00017 000005 0 46 shift oct 5 amount to shift address (bucket size) 00020 0 02000 3 47 base ind sked lowest address to watch 00021 233100 0 00022 48 even 00022 000000 0 49 orange oct 0,0 count of out-of-range samples 00023 000000 0 00024 000000 0 50 ilpcnt oct 0,0 count of samples in idle loop 00025 000000 0 assm 01 12-10-82 15.824 module to monitor performce by sampling ic page 4 51 eject 00026 52 icmon subr icm,(x1,x2) 53 54 * first, perform any outstanding actions 55 * ring-4 multics software sets an action code. this module responds 56 * by performing the action next time is is called and 57 * storing a confirmation in 'confrm' 58 00037 0 07 753 12 59 lda action-* pick up the code 00040 0 74 036 76 60 tze icm070-* no request 00041 422 001 0 61 icmpa 1 start? 00042 0 74 007 51 62 tze icm010-* 00043 422 002 0 63 icmpa 2 stop? 00044 0 74 010 54 64 tze icm020-* 00045 422 003 0 65 icmpa 3 clear? 00046 0 74 010 56 66 tze icm030-* end of binary card 00000002 00047 673 002 0 67 ila 2 invalid action 00050 0 71 024 74 68 tra icm060-* go report it 69 00051 673 001 0 70 icm010 ila 1 start 00052 0 17 742 14 71 sta enable-* 00053 0 71 020 73 72 tra icm050-* 73 00054 0 56 740 14 74 icm020 stz enable-* stop 00055 0 71 016 73 75 tra icm050-* 76 00056 0 43 737 15 77 icm030 ldx1 tbaddr-* first addr to clear 00057 673 000 0 78 ila 0 00060 0 26 736 16 79 sba tblen-* get -length 00061 0337 01 0 80 ars 1 convert to -double words 00062 0 17 055 137 81 sta icmtmp-* 00063 673 000 0 82 ila 0 00064 473 000 0 83 ilq 0 00065 1 14 000 0 84 icm040 staq 0,1 clear the table 00066 173 002 0 85 iacx1 2 00067 0 76 050 137 86 aos icmtmp-* 00070 0 75 775 65 87 tmi icm040-* 00071 0 14 731 22 88 staq orange-* clear out-of-range too 00072 0 14 732 24 89 staq ilpcnt-* and times at the dis 90 00073 673 001 0 91 icm050 ila 1 report success 00074 0 17 717 13 92 icm060 sta confrm-* 00075 0 56 715 12 93 stz action-* assm 01 12-10-82 15.824 module to monitor performce by sampling ic page 5 94 eject 95 * now, compute a bucket number and record ic 96 00076 0 20 716 14 97 icm070 szn enable-* are we monitoring? 00077 0 74 036 135 98 tze icmret-* no 00100 0 07 717 17 99 lda shift-* build shift instruction 00101 0 37 046 147 100 ora l.a001-* =arl 0 00102 0 17 015 117 101 sta icm080-* 00103 4 07 035 140 102 lda a.a001-*,* =etrip, the ic interrupted 00104 0 27 036 142 103 cmpa a.a003-* =addr(idloop) are we in idle loop? 00105 0 75 003 110 104 tmi icm075-* no, we're before the beginning 00106 0 27 036 144 105 cmpa a.a005-* =addr(idlend+1) check end 00107 0 75 017 126 106 tmi icm110-* we're idle, meter it as such 00110 0 27 035 145 107 icm075 cmpa a.a006-* addr(intp) within interpreter? 00111 0 75 004 115 108 tmi icm077-* no 00112 0 27 034 146 109 cmpa a.a007-* addr(intend) maybe 00113 0 65 002 115 110 tpl icm077-* no 00114 0 07 722 36 111 lda icmsx2-* yes, use x2 instead (op block address) 00115 0 26 703 20 112 icm077 sba base-* get offset end of binary card 00000003 00116 0 75 012 130 113 tmi icm090-* out of range 00117 2337 00 0 114 icm080 arl *-* divide to get bucket number 00120 0336 01 0 115 als 1 multiply by 2 (for double word) 00121 0 27 675 16 116 cmpa tblen-* too high? 00122 0 65 006 130 117 tpl icm090-* yes 00123 0 06 672 15 118 ada tbaddr-* compute bucket address 00124 4332 00 0 119 cax1 00125 0 71 004 131 120 tra icm100-* 121 00126 0 43 015 143 122 icm110 ldx1 a.a004-* =ilpcnt, addr of idle bucket 00127 0 71 002 131 123 tra icm100-* 124 00130 0 43 011 141 125 icm090 ldx1 a.a002-* use out-or-range bucket 126 00131 673 000 0 127 icm100 ila 0 00132 473 001 0 128 ilq 1 build a 1 00133 1 15 000 0 129 adaq 0,1 00134 1 14 000 0 130 staq 0,1 131 00135 132 icmret return icmon 133 134 00137 135 icmtmp bss 1 00140 0 03000 3 136 a.a001 ind etrip 00141 0 00022 1 137 a.a002 ind orange 00142 0 05001 3 138 a.a003 ind idloop+1 00143 0 00024 1 139 a.a004 ind ilpcnt 00144 0 04001 3 140 a.a005 ind idlend+1 00145 0 01000 3 141 a.a006 ind intp 00146 0 06000 3 142 a.a007 ind intend 00147 2337 00 0 143 l.a001 arl 0 144 145 assm 01 12-10-82 15.824 module to monitor performce by sampling ic page 6 00150 146 even 00150 147 table bss 2000 003720 148 ltable equ *-table 149 end of binary card 00000004 150 end 4070 is the next available location. 355map version/assembly dates gmpa 770711/071177 gmpb 770711/071177 gmpc 770711/071177 there were no warning flags in the above assembly assm 01 12-10-82 15.827 module to monitor performce by sampling ic page 7 octal symbol references by sequence no. 12 action 36 36 59 93 140 a.a001 136 102 136 141 a.a002 137 125 137 142 a.a003 138 103 138 143 a.a004 139 122 139 144 a.a005 140 105 140 145 a.a006 141 107 141 146 a.a007 142 109 142 20 base 47 47 112 13 confrm 40 40 92 14 enable 43 43 71 74 97 3 etrip 16 136 51 icm010 70 62 70 54 icm020 74 64 74 56 icm030 77 66 77 65 icm040 84 84 87 73 icm050 91 72 75 91 74 icm060 92 68 92 76 icm070 97 60 97 110 icm075 107 104 107 115 icm077 112 108 110 112 117 icm080 114 101 114 130 icm090 125 113 117 125 131 icm100 127 120 123 127 126 icm110 122 106 122 12 icmdat 35 24 35 26 icmon 52 23 52 132 135 icmret 132 98 132 36 icmsx2 52 52 111 137 icmtmp 135 81 86 135 0 icsamp 31 31 32 4 idlend 19 140 5 idloop 18 138 24 ilpcnt 50 50 89 139 6 intend 21 142 1 intp 20 141 147 l.a001 143 100 143 3720 ltable 148 45 148 2 macwk1 52 52 132 22 orange 49 49 88 137 17 shift 46 46 99 2 sked 17 47 150 table 147 44 147 148 15 tbaddr 44 44 77 118 16 tblen 45 45 79 116 ** 45948 words of memory were used by 355map for this assembly. ----------------------------------------------------------- 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