assm 01 12-10-82 16.042 multics/mcs trace package page 1 multics/mcs trace package preface program break 376 common length 0 v count bits 5 primary symdef entry trac 0 trace 12 traceb 241 nxtrce 327 endtrc 330 trams1 61 trams2 205 secondary symdef entry .chain 0 block length symref 1 mvpgtg 2 ptrabf end of binary card 00000001 3 ptrace 4 setptw 5 simclk end of binary card 00000002 assm 01 12-10-82 16.042 multics/mcs trace package page 2 multics/mcs trace package 1 ****************************************************** 2 * * 3 * * 4 * copyright (c) 1972 by massachusetts institute of * 5 * technology and honeywell information systems, inc. * 6 * * 7 * * 8 ****************************************************** 9 assm 01 12-10-82 16.042 multics/mcs trace package page 3 multics/mcs trace package 12 lbl ,trace 13 pcc off 17 18 ************************************************************************ 19 * 20 * trace 21 * 22 * this routine is the interface for all trace calls 23 * made by other mcs routines. it does memory tracing 24 * directly and calls printer_trace to do any 25 * required printer tracing. the module number 26 * and a tracing type are always supplied by the 27 * caller. 28 * 29 * memory tracing involves putting entries in a circular 30 * trace buffer which is printed by the various 31 * fnp dumping programs. 32 * 33 * printer tracing is done under control of the 34 * processor switches and a switch word passed in 35 * the call. the printer_trace module need not 36 * be loaded, and the printer is an 37 * optional part of the configuration. 38 * 39 * buffer tracing is a special form of printer 40 * tracing which causes buffers to be dumped 41 * to the printer 42 * 43 * coded november 1974 by robert s. coren 44 * modified 1979 june 10 by art beattie to put trace data at high end 45 * of memory. 46 * 47 ************************************************************************ 48 49 00000 51 systm assm 01 12-10-82 16.042 multics/mcs trace package page 4 datanet configuration description 000000 intv set 0 iom interrupt vector base address 000400 intc set 256 program interrupt cell base address 000420 fltst set 272 iom fault status base address 000440 fltv set 288 processor fault vector base address 000450 iomm set 296 iom mailbox base address *************************** * iom channel assignments * *************************** 000000 tych set 0 typewriter channel 000002 lpch set 2 line printer channel 000004 dich set 4 direct interface adaptor 000006 h1ch set 6 high speed line adapter number one 000007 h2ch set 7 high speed line adapter number two 000010 h3ch set 8 high speed line adapter number three 000011 l1ch set 9 low speed line adapter number one 000012 l2ch set 10 low speed line adapter number two 000013 l3ch set 11 low speed line adapter number three 000014 l4ch set 12 low speed line adapter number four 000015 l5ch set 13 low speed line adapter number five 000016 l6ch set 14 low speed line adapter number six 000077 tmch set 63 interval timer channel 000077 swch set 63 data switch channel assm 01 12-10-82 16.042 multics/mcs trace package page 5 datanet configuration description ************************* * iom interrupt vectors * ************************* 000000 tyft set 0 typewriter fault 000001 tyrq set 1 typewriter request 000002 tytm set 2 typewriter terminate 000040 lpft set 32 line printer fault 000041 lpat set 33 line printer attention 000042 lptm set 34 line printer terminate 000100 dift set 64 dia fault 000102 ditm set 66 dia terminate 000003 dis0 set 3 dia special - 0 000023 dis1 set 19 dia special - 1 000043 dis2 set 35 dia special - 2 000063 dis3 set 51 dia special - 3 000103 dis4 set 67 dia special - 4 000123 dis5 set 83 dia special - 5 000143 dis6 set 99 dia special - 6 000163 dis7 set 115 dia special - 7 000203 dis8 set 131 dia special - 8 000223 dis9 set 147 dia special - 9 000243 dis10 set 163 dia special - 10 000263 dis11 set 179 dia special - 11 000303 dis12 set 195 dia special - 12 000323 dis13 set 211 dia special - 13 000343 dis14 set 227 dia special - 14 000363 dis15 set 243 dia special - 15 assm 01 12-10-82 16.042 multics/mcs trace package page 6 datanet configuration description 000140 h1ft set 96 hsla 1 fault 000004 h1a0 set 4 hsla 1 subch 0 active terminate vector 000005 h1a16 set 5 hsla 1 subch 16 active terminate vector 000006 h1c0 set 6 hsla 1 subch 0 config terminate vector 000007 h1c16 set 7 hsla 1 subch 16 config terminate vector 000024 h1a1 set 20 hsla 1 subch 1 active terminate vector 000025 h1a17 set 21 hsla 1 subch 17 active terminate vector 000026 h1c1 set 22 hsla 1 subch 1 config terminate vector 000027 h1c17 set 23 hsla 1 subch 17 config terminate vector 000044 h1a2 set 36 hsla 1 subch 2 active terminate vector 000045 h1a18 set 37 hsla 1 subch 18 active terminate vector 000046 h1c2 set 38 hsla 1 subch 2 config terminate vector 000047 h1c18 set 39 hsla 1 subch 18 config terminate vector 000064 h1a3 set 52 hsla 1 subch 3 active terminate vector 000065 h1a19 set 53 hsla 1 subch 19 active terminate vector 000066 h1c3 set 54 hsla 1 subch 3 config terminate vector 000067 h1c19 set 55 hsla 1 subch 19 config terminate vector 000104 h1a4 set 68 hsla 1 subch 4 active terminate vector 000105 h1a20 set 69 hsla 1 subch 20 active terminate vector 000106 h1c4 set 70 hsla 1 subch 4 config terminate vector 000107 h1c20 set 71 hsla 1 subch 20 config terminate vector 000124 h1a5 set 84 hsla 1 subch 5 active terminate vector 000125 h1a21 set 85 hsla 1 subch 21 active terminate vector 000126 h1c5 set 86 hsla 1 subch 5 config terminate vector 000127 h1c21 set 87 hsla 1 subch 21 config terminate vector assm 01 12-10-82 16.042 multics/mcs trace package page 7 datanet configuration description 000144 h1a6 set 100 hsla 1 subch 6 active terminate vector 000145 h1a22 set 101 hsla 1 subch 22 active terminate vector 000146 h1c6 set 102 hsla 1 subch 6 config terminate vector 000147 h1c22 set 103 hsla 1 subch 22 config terminate vector 000164 h1a7 set 116 hsla 1 subch 7 active terminate vector 000165 h1a23 set 117 hsla 1 subch 23 active terminate vector 000166 h1c7 set 118 hsla 1 subch 7 config terminate vector 000167 h1c23 set 119 hsla 1 subch 23 config terminate vector 000204 h1a8 set 132 hsla 1 subch 8 active terminate vector 000205 h1a24 set 133 hsla 1 subch 24 active terminate vector 000206 h1c8 set 134 hsla 1 subch 8 config terminate vector 000207 h1c24 set 135 hsla 1 subch 24 config terminate vector 000224 h1a9 set 148 hsla 1 subch 9 active terminate vector 000225 h1a25 set 149 hsla 1 subch 25 active terminate vector 000226 h1c9 set 150 hsla 1 subch 9 config terminate vector 000227 h1c25 set 151 hsla 1 subch 25 config terminate vector 000244 h1a10 set 164 hsla 1 subch 10 active terminate vector 000245 h1a26 set 165 hsla 1 subch 26 active terminate vector 000246 h1c10 set 166 hsla 1 subch 10 config terminate vector 000247 h1c26 set 167 hsla 1 subch 26 config terminate vector 000264 h1a11 set 180 hsla 1 subch 11 active terminate vector 000265 h1a27 set 181 hsla 1 subch 27 active terminate vector 000266 h1c11 set 182 hsla 1 subch 11 config terminate vector 000267 h1c27 set 183 hsla 1 subch 27 config terminate vector 000304 h1a12 set 196 hsla 1 subch 12 active terminate vector 000305 h1a28 set 197 hsla 1 subch 28 active terminate vector assm 01 12-10-82 16.042 multics/mcs trace package page 8 datanet configuration description 000306 h1c12 set 198 hsla 1 subch 12 config terminate vector 000307 h1c28 set 199 hsla 1 subch 28 config terminate vector 000324 h1a13 set 212 hsla 1 subch 13 active terminate vector 000325 h1a29 set 213 hsla 1 subch 29 active terminate vector 000326 h1c13 set 214 hsla 1 subch 13 config terminate vector 000327 h1c29 set 215 hsla 1 subch 29 config terminate vector 000344 h1a14 set 228 hsla 1 subch 14 active terminate vector 000345 h1a30 set 229 hsla 1 subch 30 active terminate vector 000346 h1c14 set 230 hsla 1 subch 14 config terminate vector 000347 h1c30 set 231 hsla 1 subch 30 config terminate vector 000364 h1a15 set 244 hsla 1 subch 15 active terminate vector 000365 h1a31 set 245 hsla 1 subch 31 active terminate vector 000366 h1c15 set 246 hsla 1 subch 15 config terminate vector 000367 h1c31 set 247 hsla 1 subch 31 config terminate vector 000220 l1ft set 144 lsla 1 fault 000221 l1a set 145 lsla 1 active terminate vector 000222 l1c set 146 lsla 1 configuration terminate vector 000240 l2ft set 160 lsla 2 fault 000241 l2a set 161 lsla 2 active terminate vector 000242 l2c set 162 lsla 2 configuration terminate vector 000260 l3ft set 176 lsla 3 fault 000261 l3a set 177 lsla 3 active terminate vector 000262 l3c set 178 lsla 3 configuration terminate vector 000300 l4ft set 192 lsla 4 fault 000301 l4a set 193 lsla 4 active terminate vector assm 01 12-10-82 16.042 multics/mcs trace package page 9 datanet configuration description 000302 l4c set 194 lsla 4 configuration terminate vector 000320 l5ft set 208 lsla 5 fault 000321 l5a set 209 lsla 5 active terminate vector 000322 l5c set 210 lsla 5 configuration terminate vector 000340 l6ft set 224 lsla 6 fault 000341 l6a set 225 lsla 6 active terminate vector 000342 l6c set 226 lsla 6 configuration terminate vector 000360 tmft set 240 timer channel fault 000361 tmro set 241 interval timer runout 000362 etr set 242 elapsed timer roll-over assm 01 12-10-82 16.042 multics/mcs trace package page 10 datanet configuration description *************************** * program interrupt cells * *************************** 000400 ilev0 set 256 level 0 (common peripheral fault) 000401 ilev1 set 257 level 1 (common peripheral req/attn) 000402 ilev2 set 258 level 2 (common peripheral terminate) 000403 ilev3 set 259 level 3 (dia special) 000404 ilev4 set 260 level 4 (hsla 1 subch 0-15 active) 000405 ilev5 set 261 level 5 (hsla 1 subch 16-31 active) 000406 ilev6 set 262 level 6 (hsla 1 subch 0-15 config) 000407 ilev7 set 263 level 7 (hsla 1 subch 16-31 config) 000410 ilev8 set 264 level 8 (hsla 2 subch 0-15 active) 000411 ilev9 set 265 level 9 (hsla 2 subch 16-31 active) 000412 ilev10 set 266 level 10 (hsla 2 subch 0-15 config) 000413 ilev11 set 267 level 11 (hsla 2 subch 16-31 config) 000414 ilev12 set 268 level 12 (hsla 3 subch 0-15 active) 000415 ilev13 set 269 level 13 (hsla 3 subch 16-31 active) 000416 ilev14 set 270 level 14 (hsla 3 subch 0-15 config) 000417 ilev15 set 271 level 15 (hsla 3 subch 16-31 config) ******************** * iom fault status * ******************** 000420 tyfts set 272 typewriter fault status word 000422 lpfts set 274 line printer fault status word 000424 difts set 276 dia fault status word 000426 h1fts set 278 hsla 1 fault status word 000427 h2fts set 279 hsla 2 fault status word assm 01 12-10-82 16.042 multics/mcs trace package page 11 datanet configuration description 000430 h3fts set 280 hsla 3 fault status word 000431 l1fts set 281 lsla 1 fault status word 000432 l2fts set 282 lsla 2 fault status word 000433 l3fts set 283 lsla 3 fault status word 000434 l4fts set 284 lsla 4 fault status word 000435 l5fts set 285 lsla 5 fault status word 000436 l6fts set 286 lsla 6 fault status word 000437 tmfts set 287 timer fault status word *************************** * processor fault vectors * *************************** 000440 suflt set 288 startup fault 000441 sdflt set 289 shutdown fault 000442 parflt set 290 memory parity fault 000443 iopflt set 291 illegal operation fault 000444 ovflt set 292 overflow fault 000445 memflt set 293 illegal memory operation fault 000446 dvflt set 294 divide check fault 000447 ipiflt set 295 illegal program interrupt fault assm 01 12-10-82 16.042 multics/mcs trace package page 12 datanet configuration description ************************************ * iom mailbox communication region * ************************************ 000450 itmb set 296 interval timer mailbox 000451 etmb set 297 elapsed timer mailbox 000454 dimb set 300 dia pcw mailbox 000456 dist set 302 dia status icw mailbox 000460 tyst set 304 typewriter status icw mailbox 000462 tyicw set 306 typewriter data icw mailbox 000470 lpst set 312 line printer status icw mailbox 000472 lpicw set 314 line printer data icw mailbox 000475 cptp set 317 cpu page table pointer 000476 yelcnt set 318 memory yellow counter (edac corected erro 000500 l1mb set 320 lsla 1 mailbox base address 000520 l2mb set 336 lsla 2 mailbox base address 000540 l3mb set 352 lsla 3 mailbox base address 000560 l4mb set 368 lsla 4 mailbox base address 000600 l5mb set 384 lsla 5 mailbox base address 000620 l6mb set 400 lsla 6 mailbox base address 001000 h1mb set 512 hsla 1 mailbox base address 002000 h2mb set 1024 hsla 2 mailbox base address 003000 h3mb set 1536 hsla 3 mailbox base address 002000 .end. set 1024 end of iom mailbox communication region 52 00000 53 comreg assm 01 12-10-82 16.042 multics/mcs trace package page 13 system communications region ********************************** * system communication region * ********************************** 000640 .crldt set 416 date and time of binding 000644 .crbdt set 420 date and time of bootloading 000650 .crbuf set 424 starting address of buffer area 000651 .crmem set 425 last location of memory 000652 .crnbf set 426 number of buffers available 000653 .criom set 427 start of iom table 000654 .crnhs set 428 number of hsla's configured 000655 .crnls set 429 number of lsla's configured 000656 .crcon set 430 console enabled flag 000657 .crmod set 431 starting address of module chain 000660 .crnxa set 432 ptr to next avaliable buffer 000661 .crtra set 433 trace entry enable mask 000662 .crtrb set 434 base address of trace table 000663 .crtrc set 435 next available location in trace table 000664 .crreg set 436 disaster fault register storage location 000665 .crttb set 437 location of tib table 000666 .crtte set 438 location of end of tib table 000667 .crdly set 439 head of delay table chain 000670 .crver set 440 mcs version number, 4 chars 000672 .crbrk set 442 addr of breakpoint control table 000673 .crtsw set 443 if non-zero, tracing will cease 000674 .crnxs set 444 next free small block 000675 .crnbs set 445 number of buffers devoted to small space 000676 .crcct set 446 address of first cct descriptor assm 01 12-10-82 16.042 multics/mcs trace package page 14 system communications region 000677 .crskd set 447 address of scheduler data block 000700 .cretb set 448 list of echo-negotiation bit tables 000701 .crcpt set 449 address of cpu page table 000702 .crpte set 450 address of variable cpu page table entry 000703 .crtsz set 451 size of trace data buffer 000704 .crmet set 452 non-zero if metering enabled 000705 .crtdt set 453 address of tib for t&d executive channel 000706 .crbtm set 454 address of time meters for getbuf/frebuf 000760 .crcpr set 496 copyright notice assm 01 12-10-82 16.042 multics/mcs trace package page 15 macros, symdefs, etc. 55 mpy macro 56 mpf #1 57 lrl 1 58 endm 59 60 61 symdef trac 62 symdef trace memory and printer tracing 63 symdef traceb buffer tracing 64 symdef nxtrce pointer to next entry in trace buffer 65 symdef endtrc pointer to last word in trace buffer 66 symdef trams1 trace memory switch one 67 symdef trams2 trace memory switch two 68 69 symref simclk 70 symref ptrace 71 symref ptrabf 72 symref mvpgtg move data paging target 73 symref setptw virtualize absolute address and set ptw 74 75 76 77 00000 78 trac null 00000 79 start trac,8 symdef -.chain 00000 even 000010 modnum equ 8 00000 000010 0 .chain dec 8 00001 635121 0 bci 2,trac 00002 232020 0 00003 0 00000 1 ind trac 00004 010201 0 date 00005 001002 0 00006 330000 0 bci 4,.001. 00007 013320 0 00010 202020 0 00011 202020 0 assm 01 12-10-82 16.042 multics/mcs trace package page 16 trace -- entry for memory and printer tracing 82 83 ************************************************************************ 84 * 85 * trace is used for memory and printer tracing (other than buffer 86 * tracing). if bit corresponding to calling module in trace enable mask 87 * is off, tracing will not occur. 88 * 89 * calling sequence: 90 * 91 * tsy addr-*,* 92 * vfd 6/count,12/type count = number of data words 93 * vfd 6/modnum,12/switch 94 * addr ind trace 95 * bss count data words 96 * --- return point 97 * 98 * printer tracing will be done only if all "on" bits 99 * in modnum-switch word are on in processor switches, and "switch" is 100 * non-zero 101 * 102 ************************************************************************ 103 104 00012 105 trace subr tra,(inh,q,x1,x2,x3) 106 00035 4 07 755 12 107 lda trace-*,* get count-type word 00036 2335 14 0 108 lrl 12 separate items 00037 6337 06 0 109 qrl 6 and store them locally 00040 0 14 260 320 110 staq count-* 00041 0 76 751 12 111 aos trace-* bump to modnum-switch word 00042 4 07 750 12 112 lda trace-*,* 00043 2335 14 0 113 lrl 12 treat it similarly 00044 6337 06 0 114 qrl 6 00045 0 14 255 322 115 staq modsw-* 116 00046 4 20 234 302 117 szn a.a006-*,* (.crtsw) is tracing disabled? 00047 0 64 164 233 118 tnz trabak-* yes 119 00050 773 777 0 120 iaa -1 get module number - 1 00051 0 37 244 315 121 ora l.a007-* combine with shift template end of binary card 00000003 00052 0 17 003 55 122 sta trashf-* put it in shift instruction 00053 673 001 0 123 ila 1 00054 0336 21 0 124 als 17 get high-order bit alone in a 00055 2337 00 0 125 trashf arl ** (modified above) 126 now we have bt corresponding to modnum 00056 4 31 217 275 127 cana a.a001-*,* (.crtra) is mask bit on? 00057 0 74 154 233 128 tze trabak-* if not, skip the whole thing 00060 0 72 243 323 129 orsa switch-* hang on to bit 130 we will now do memory trace 00061 0 71 003 64 131 trams1 tra tra005-* set to nop by init if 64k is configured assm 01 12-10-82 16.042 multics/mcs trace package page 17 trace -- entry for memory and printer tracing 00062 4 07 224 306 132 lda a.a010-*,* (.crpte,*) remember current page table word 00063 0 17 243 326 133 sta tsvpte-* 134 00064 135 tra005 null 00064 0 43 243 327 136 ldx1 nxtrce-* get next available spot in trace table 00065 2332 00 0 137 cx1a 00066 0 06 232 320 138 ada count-* add data count 00067 773 002 0 139 iaa 2 and two words for header 00070 0 27 240 330 140 cmpa endtrc-* room for this entry? 00071 0 75 016 107 141 tmi tra010-* yes 00072 2332 00 0 142 cx1a no. copy address to a 00073 4 10 212 305 143 tsy a.a009-*,* (setptw) virtualize absolute address 00074 4332 00 0 144 cax1 put it in original register 00075 0 07 215 312 145 lda l.a002-* (525250) else put in end marker 00076 1 17 000 0 146 sta 0,1 00077 673 001 0 147 ila 1 make sure we make wraparound check 00100 0 17 231 331 148 sta wrap-* 149 00101 4 43 175 276 150 ldx1 a.a002-*,* (.crtrb) physical beginning of table 00102 2332 00 0 151 cx1a 00103 0 17 224 327 152 sta nxtrce-* is new next pointer 00104 0 06 214 320 153 ada count-* 00105 773 003 0 154 iaa 3 for header and end marker 00106 0 71 002 110 155 tra tra020-* 156 00107 157 tra010 null a contains pointer to end of next entry already 00107 773 001 0 158 iaa 1 except for end marker 00110 159 tra020 null have we ever wrapped around table? 00110 0 20 221 331 160 szn wrap-* 00111 0 74 031 142 161 tze tra030-* no, skip overwrite test 162 163 will we overwrite more than one entry? 00112 4 27 165 277 164 cmpa a.a003-*,* (.crtrc) oldest complete entry 00113 0 75 027 142 165 tmi tra030-* will not be overwritten 166 fall through if it will, we must update .crtrc 00114 0 17 220 334 167 sta temp3-* save pointer to next free word 00115 4 47 162 277 168 ldq a.a003-*,* (.crtrc) 00116 169 tra025 null 00116 7333 00 0 170 cqa copy address to a 00117 4 10 166 305 171 tsy a.a009-*,* (setptw) virtualize absolute address 00120 0332 00 0 172 cax2 put it in x2 end of binary card 00000004 00121 2 07 000 0 173 lda 0,2 get first word of entry 00122 022 077 0 174 iana 63 isolate word count 00123 773 002 0 175 iaa 2 00124 0 17 207 333 176 sta temp1-* 00125 0 46 206 333 177 adq temp1-* bump pointer 00126 7333 00 0 178 cqa copy address to a 00127 4 10 156 305 179 tsy a.a009-*,* (setptw) virtualize absolute address 00130 0332 00 0 180 cax2 put it in x2 00131 2 07 000 0 181 lda 0,2 does it now point to physical end? assm 01 12-10-82 16.042 multics/mcs trace package page 18 trace -- entry for memory and printer tracing 00132 0 27 160 312 182 cmpa l.a002-* (525250) 00133 0 74 004 137 183 tze tra028-* yes, start at beginning again 184 else see if we've gone far enough 00134 0 67 200 334 185 cmpq temp3-* is start of next entry in the clear? 00135 0 75 761 116 186 tmi tra025-* no, we will overwrite it too 00136 0 71 003 141 187 tra tra029-* else store new value 00137 188 tra028 null 00137 4 47 137 276 189 ldq a.a002-*,* (.crtrb) 00140 0 56 171 331 190 stz wrap-* don't test for overwrite again until 191 new entries wrap around 00141 192 tra029 null 00141 4 57 136 277 193 stq a.a003-*,* (.crtrc) 194 00142 195 tra030 null ready to make new entry 00142 0 47 156 320 196 ldq count-* get data count 00143 573 003 0 197 iaq 3 2 words of header and end marker 00144 0 57 152 316 198 stq memlen-* save length of trace entry 199 first put in new end marker 00145 0 43 137 304 200 ldx1 a.a008-* x1 points to beginning of new entry 00146 0 41 136 304 201 ldx3 a.a008-* 00147 0 40 151 320 202 adcx3 count-* 00150 0 07 143 313 203 lda l.a003-* (=o525252) logical end marker 00151 3 17 002 0 204 sta 2,3 include 2 words for header 205 00152 0 07 150 322 206 lda modsw-* get modnum 00153 0336 06 0 207 als 6 00154 0 37 145 321 208 ora ttype-* and type 00155 0336 06 0 209 als 6 00156 0 37 142 320 210 ora count-* and count 00157 1 17 000 0 211 sta 0,1 this is entry header word 212 get time now 00160 4 07 121 301 213 lda a.a005-*,* (itmb) interval timer 00161 0 17 144 325 214 sta ttime+1-* store as 36-bit quantity 00162 4 04 116 300 215 ldaq a.a004-*,* (simclk) 00163 0 24 141 324 216 sbaq ttime-* subract saved interval timer 00164 1 57 001 0 217 stq 1,1 put it in trace entry (low-order 18 bits only) 00165 173 002 0 218 iacx1 2 point to data area 00166 0 03 624 12 219 ldx2 trace-* point to input data 00167 273 002 0 220 iacx2 2 end of binary card 00000005 00170 0 13 145 335 221 stx2 datap-* save data pointer for possible printer tracing 00171 0 47 127 320 222 ldq count-* get count of data words 00172 0 74 007 201 223 tze tra050-* if any 224 00173 225 tra040 null 00173 2 07 000 0 226 lda 0,2 copy data word into 00174 1 17 000 0 227 sta 0,1 temporary storage 00175 173 001 0 228 iacx1 1 00176 273 001 0 229 iacx2 1 bump pointers 00177 573 777 0 230 iaq -1 decrement count 00200 0 64 773 173 231 tnz tra040-* get next word if any assm 01 12-10-82 16.042 multics/mcs trace package page 19 trace -- entry for memory and printer tracing 232 233 * 234 * move data from temporary storage to trace data buffer 235 00201 236 tra050 null 00201 0 03 103 304 237 ldx2 a.a008-* source address 00202 0 41 125 327 238 ldx3 nxtrce-* target address 00203 0 47 113 316 239 ldq memlen-* length of move 00204 4 10 077 303 240 tsy a.a007-*,* (mvpgtg) 241 * 242 * restore cpu page table entry 243 00205 0 71 003 210 244 trams2 tra tra060-* set to nop by init if 64k is configured 00206 0 07 120 326 245 lda tsvpte-* previous value 00207 4 17 077 306 246 sta a.a010-*,* (.crpte,*) is restored 247 00210 248 tra060 null 00210 0 07 117 327 249 lda nxtrce-* update pointer 00211 0 06 107 320 250 ada count-* data count 00212 773 002 0 251 iaa 2 2 word header 00213 0 17 114 327 252 sta nxtrce-* marker is overwritten by next entry 253 254 now find out if we're supposed to do 255 printer tracing 256 00214 4 03 074 310 257 ldx2 a.a014-*,* (.criom) get ptr to iom table 00215 2 20 004 0 258 szn lpch*2,2 is a printer configured? 00216 0 74 015 233 259 tze trabak-* no, don't try tracing 260 00217 0 07 104 323 261 lda switch-* get switch word 00220 0 31 074 314 262 cana l.a004-* (=o007777) are switches all zero? 00221 0 74 012 233 263 tze trabak-* yes, no printer tracing 264 else read processor switches to find out 00222 073 077 0 265 sel swch if specified ones are on 00223 0 70 107 332 266 stex procsw-* 267 00224 0 34 106 332 268 ana procsw-* are all relevant switches on? 00225 0 27 076 323 269 cmpa switch-* these will compare equal if so 00226 0 64 005 233 270 tnz trabak-* if they aren't don't print 271 00227 0 07 073 322 272 lda modsw-* get module sw for ptrace 00230 0 47 071 321 273 ldq ttype-* and the type too 00231 0 03 104 335 274 ldx2 datap-* get ptr to data 00232 4 10 057 311 275 tsy a.a015-*,* (ptrace) do actual printer tracing 276 00233 277 trabak null return from trace 278 "tsy" word now points 2 words past call 00233 0 07 065 320 279 lda count-* 00234 0 16 556 12 280 asa trace-* bump it over data and address of trace routine 00235 0 76 555 12 281 aos trace-* 00236 0 76 554 12 282 aos trace-* assm 01 12-10-82 16.042 multics/mcs trace package page 20 trace -- entry for memory and printer tracing 00237 283 return trace goodbye end of binary card 00000006 assm 01 12-10-82 16.042 multics/mcs trace package page 21 traceb -- entry for buffer tracing 285 286 ************************************************************************ 287 * 288 * traceb is used to print the contents of a buffer on the printer 289 * 290 * calling sequence: 291 * 292 * ldx3 bufadr-* address of buffer 293 * tsy addr-*,* 294 * vfd 6/modnum,12/size size of 295 *addr ind traceb 296 * --- return point 297 * 298 * if the printer is configured, the call will be passed on to trabf 299 * to do the work, otherwise traceb just returns. 300 * 301 ************************************************************************ 302 00241 303 traceb subr trc,(inh,q,x1,x2,x3) 304 00264 4 03 024 310 305 ldx2 a.a014-*,* (.criom) get ptr to iom table 00265 2 20 004 0 306 szn lpch*2,2 printer configured? 00266 0 74 003 271 307 tze trcbak-* no, just return 00267 4 07 752 241 308 lda traceb-*,* get modnum/size word 00270 4 10 017 307 309 tsy a.a013-*,* (ptrabf) 310 00271 311 trcbak null 00271 0 76 750 241 312 aos traceb-* bump return pointer past arguments 00272 0 76 747 241 313 aos traceb-* 00273 314 return traceb assm 01 12-10-82 16.042 multics/mcs trace package page 22 trace symbols 316 00275 0 00661 0 317 a.a001 ind .crtra trace enable mask 00276 0 00662 0 318 a.a002 ind .crtrb base of trace table 00277 0 00663 0 319 a.a003 ind .crtrc pointer to oldest valid entry in trace table 00300 0 05000 3 320 a.a004 ind simclk next timer interrupt time 00301 0 00450 0 321 a.a005 ind itmb interval timer 00302 0 00673 0 322 a.a006 ind .crtsw global trace control switch 00303 0 01000 3 323 a.a007 ind mvpgtg move data paging target 00304 0 00336 1 324 a.a008 ind trctmp temporary storage for trace data 00305 0 04000 3 325 a.a009 ind setptw virtualize absolute address and set ptw 00306 4 00702 0 326 a.a010 ind .crpte,* page table entry for ptw 00307 0 02000 3 327 a.a013 ind ptrabf real buffer tracing subroutine 00310 0 00653 0 328 a.a014 ind .criom end of binary card 00000007 00311 0 03000 3 329 a.a015 ind ptrace 330 00312 525250 0 331 l.a002 oct 525250 tag for physical end of trace table 00313 525252 0 332 l.a003 oct 525252 tag for logical end of trace table 00314 007777 0 333 l.a004 oct 007777 mask for switches 00315 2337 00 0 334 l.a007 arl 0 model for "arl" instruction 335 00316 000000 0 336 memlen oct 0 337 00317 233100 0 00320 338 even 00320 339 count bss 1 count of data words passed 00321 340 ttype bss 1 trace type 00322 341 modsw bss 1 module number 00323 342 switch bss 1 printer tracing switch(es) 343 00324 344 even 00324 000000 0 345 ttime oct 0,0 interval timer value saved as 36-bit number 00325 000000 0 00326 000000 0 346 tsvpte oct 0 save-store for ptw on entry to trace 347 00327 000000 0 348 nxtrce oct 0 pointer to next available entry in trace buffer 349 table (initialized to point to base) 00330 000000 0 350 endtrc oct 0 end of table addr 351 00331 000000 0 352 wrap oct 0 flag indicating that the trace buffer has 353 wrapped around 354 00332 355 procsw bss 1 word for reading processor switches 00333 356 temp1 bss 1 a temporary 00334 357 temp3 bss 1 another one 00335 358 datap bss 1 address of current data word 359 00336 360 trctmp bss 32 storage to copy data into before copying into 361 trace data buffer end of binary card 00000008 362 end assm 01 12-10-82 16.042 multics/mcs trace package page 23 trace symbols 376 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 16.045 multics/mcs trace package page 24 octal symbol references by sequence no. 275 a.a001 317 127 317 276 a.a002 318 150 189 318 277 a.a003 319 164 168 193 319 300 a.a004 320 215 320 301 a.a005 321 213 321 302 a.a006 322 117 322 303 a.a007 323 240 323 304 a.a008 324 200 201 237 324 305 a.a009 325 143 171 179 325 306 a.a010 326 132 246 326 307 a.a013 327 309 327 310 a.a014 328 257 305 328 311 a.a015 329 275 329 320 count 339 110 138 153 196 202 210 222 250 279 339 335 datap 358 221 274 358 330 endtrc 350 65 140 350 450 itmb 51 51 321 653 .criom 53 53 328 702 .crpte 53 53 326 661 .crtra 53 53 317 662 .crtrb 53 53 318 663 .crtrc 53 53 319 673 .crtsw 53 53 322 312 l.a002 331 145 182 331 313 l.a003 332 203 332 314 l.a004 333 262 333 315 l.a007 334 121 334 2 lpch 51 51 258 306 6 macwk1 303 105 283 303 314 14 macwk2 303 105 303 316 memlen 336 198 239 336 322 modsw 341 115 206 272 341 1 mvpgtg 72 323 327 nxtrce 348 64 136 152 238 249 252 348 332 procsw 355 266 268 355 2 ptrabf 71 327 3 ptrace 70 329 4 setptw 73 325 5 simclk 69 320 77 swch 51 51 265 323 switch 342 129 261 269 342 333 temp1 356 176 177 356 334 temp3 357 167 185 357 64 tra005 135 131 135 107 tra010 157 141 157 110 tra020 159 155 159 116 tra025 169 169 186 137 tra028 188 183 188 141 tra029 192 187 192 142 tra030 195 161 165 195 173 tra040 225 225 231 assm 01 12-10-82 16.045 multics/mcs trace package page 25 octal symbol references by sequence no. 201 tra050 236 223 236 210 tra060 248 244 248 233 trabak 277 118 128 259 263 270 277 0 trac 78 61 78 79 12 trace 105 62 105 107 111 112 219 280 281 282 283 241 traceb 303 63 303 308 312 313 314 61 trams1 131 66 131 205 trams2 244 67 244 55 trashf 125 122 125 271 trcbak 311 307 311 336 trctmp 360 324 360 326 tsvpte 346 133 245 346 324 ttime 345 214 216 345 321 ttype 340 208 273 340 331 wrap 352 148 160 190 352 ** 46433 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