assm 01 09-08-79 11.662 multics/mcs trace package page 1 multics/mcs trace package preface program break 372 common length 0 v count bits 5 primary symdef entry trac 0 trace 6 traceb 235 nxtrce 323 endtrc 324 trams1 55 trams2 201 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 09-08-79 11.662 multics/mcs trace package page 2 multics/mcs trace package 1 ttl multics/mcs trace package 2 ttls multics/mcs trace package 3 lbl ,trace 4 pcc off 8 9 ************************************************************************ 10 * 11 * trace 12 * 13 * this routine is the interface for all trace calls 14 * made by other mcs routines. it does memory tracing 15 * directly and calls printer_trace to do any 16 * required printer tracing. the module number 17 * and a tracing type are always supplied by the 18 * caller. 19 * 20 * memory tracing involves putting entries in a circular 21 * trace buffer which is printed by the various 22 * fnp dumping programs. 23 * 24 * printer tracing is done under control of the 25 * processor switches and a switch word passed in 26 * the call. the printer_trace module need not 27 * be loaded, and the printer is an 28 * optional part of the configuration. 29 * 30 * buffer tracing is a special form of printer 31 * tracing which causes buffers to be dumped 32 * to the printer 33 * 34 * coded november 1974 by robert s. coren 35 * modified 1979 june 10 by art beattie to put trace data at high end 36 * of memory. 37 * 38 ************************************************************************ 39 40 00000 42 systm assm 01 09-08-79 11.662 multics/mcs trace package page 3 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 09-08-79 11.662 multics/mcs trace package page 4 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 09-08-79 11.662 multics/mcs trace package page 5 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 09-08-79 11.662 multics/mcs trace package page 6 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 09-08-79 11.662 multics/mcs trace package page 7 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 09-08-79 11.662 multics/mcs trace package page 8 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 09-08-79 11.662 multics/mcs trace package page 9 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 09-08-79 11.662 multics/mcs trace package page 10 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 09-08-79 11.662 multics/mcs trace package page 11 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 43 00000 44 comreg assm 01 09-08-79 11.662 multics/mcs trace package page 12 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 09-08-79 11.662 multics/mcs trace package page 13 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 assm 01 09-08-79 11.662 multics/mcs trace package page 14 macros, symdefs, etc. 46 mpy macro 47 mpf #1 48 lrl 1 49 endm 50 51 52 symdef trac 53 symdef trace memory and printer tracing 54 symdef traceb buffer tracing 55 symdef nxtrce pointer to next entry in trace buffer 56 symdef endtrc pointer to last word in trace buffer 57 symdef trams1 trace memory switch one 58 symdef trams2 trace memory switch two 59 60 symref simclk 61 symref ptrace 62 symref ptrabf 63 symref mvpgtg move data paging target 64 symref setptw virtualize absolute address and set ptw 65 66 67 68 00000 69 trac null 00000 70 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 001100 0 date 00005 100711 0 assm 01 09-08-79 11.662 multics/mcs trace package page 15 trace -- entry for memory and printer tracing 73 74 ************************************************************************ 75 * 76 * trace is used for memory and printer tracing (other than buffer 77 * tracing). if bit corresponding to calling module in trace enable mask 78 * is off, tracing will not occur. 79 * 80 * calling sequence: 81 * 82 * tsy addr-*,* 83 * vfd 6/count,12/type count = number of data words 84 * vfd 6/modnum,12/switch 85 * addr ind trace 86 * bss count data words 87 * --- return point 88 * 89 * printer tracing will be done only if all "on" bits 90 * in modnum-switch word are on in processor switches, and "switch" is 91 * non-zero 92 * 93 ************************************************************************ 94 95 00006 96 trace subr tra,(inh,q,x1,x2,x3) 97 00031 4 07 755 6 98 lda trace-*,* get count-type word 00032 2335 14 0 99 lrl 12 separate items 00033 6337 06 0 100 qrl 6 and store them locally 00034 0 14 260 314 101 staq count-* 00035 0 76 751 6 102 aos trace-* bump to modnum-switch word 00036 4 07 750 6 103 lda trace-*,* 00037 2335 14 0 104 lrl 12 treat it similarly 00040 6337 06 0 105 qrl 6 00041 0 14 255 316 106 staq modsw-* 107 00042 4 20 234 276 108 szn a.a006-*,* (.crtsw) is tracing disabled? 00043 0 64 164 227 109 tnz trabak-* yes 110 00044 773 777 0 111 iaa -1 get module number - 1 00045 0 37 244 311 112 ora l.a007-* combine with shift template 00046 0 17 003 51 113 sta trashf-* put it in shift instruction 00047 673 001 0 114 ila 1 00050 0336 21 0 115 als 17 get high-order bit alone in a 00051 2337 00 0 116 trashf arl ** (modified above) 117 now we have bt corresponding to modnum end of binary card 00000003 00052 4 31 217 271 118 cana a.a001-*,* (.crtra) is mask bit on? 00053 0 74 154 227 119 tze trabak-* if not, skip the whole thing 00054 0 72 243 317 120 orsa switch-* hang on to bit 121 we will now do memory trace 00055 0 71 003 60 122 trams1 tra tra005-* set to nop by init if 64k is configured assm 01 09-08-79 11.662 multics/mcs trace package page 16 trace -- entry for memory and printer tracing 00056 4 07 224 302 123 lda a.a010-*,* (.crpte,*) remember current page table word 00057 0 17 243 322 124 sta tsvpte-* 125 00060 126 tra005 null 00060 0 43 243 323 127 ldx1 nxtrce-* get next available spot in trace table 00061 2332 00 0 128 cx1a 00062 0 06 232 314 129 ada count-* add data count 00063 773 002 0 130 iaa 2 and two words for header 00064 0 27 240 324 131 cmpa endtrc-* room for this entry? 00065 0 75 016 103 132 tmi tra010-* yes 00066 2332 00 0 133 cx1a no. copy address to a 00067 4 10 212 301 134 tsy a.a009-*,* (setptw) virtualize absolute address 00070 4332 00 0 135 cax1 put it in original register 00071 0 07 215 306 136 lda l.a002-* (525250) else put in end marker 00072 1 17 000 0 137 sta 0,1 00073 673 001 0 138 ila 1 make sure we make wraparound check 00074 0 17 231 325 139 sta wrap-* 140 00075 4 43 175 272 141 ldx1 a.a002-*,* (.crtrb) physical beginning of table 00076 2332 00 0 142 cx1a 00077 0 17 224 323 143 sta nxtrce-* is new next pointer 00100 0 06 214 314 144 ada count-* 00101 773 003 0 145 iaa 3 for header and end marker 00102 0 71 002 104 146 tra tra020-* 147 00103 148 tra010 null a contains pointer to end of next entry already 00103 773 001 0 149 iaa 1 except for end marker 00104 150 tra020 null have we ever wrapped around table? 00104 0 20 221 325 151 szn wrap-* 00105 0 74 031 136 152 tze tra030-* no, skip overwrite test 153 154 will we overwrite more than one entry? 00106 4 27 165 273 155 cmpa a.a003-*,* (.crtrc) oldest complete entry 00107 0 75 027 136 156 tmi tra030-* will not be overwritten 157 fall through if it will, we must update .crtrc 00110 0 17 220 330 158 sta temp3-* save pointer to next free word 00111 4 47 162 273 159 ldq a.a003-*,* (.crtrc) 00112 160 tra025 null 00112 7333 00 0 161 cqa copy address to a 00113 4 10 166 301 162 tsy a.a009-*,* (setptw) virtualize absolute address 00114 0332 00 0 163 cax2 put it in x2 00115 2 07 000 0 164 lda 0,2 get first word of entry 00116 022 077 0 165 iana 63 isolate word count 00117 773 002 0 166 iaa 2 00120 0 17 207 327 167 sta temp1-* end of binary card 00000004 00121 0 46 206 327 168 adq temp1-* bump pointer 00122 7333 00 0 169 cqa copy address to a 00123 4 10 156 301 170 tsy a.a009-*,* (setptw) virtualize absolute address 00124 0332 00 0 171 cax2 put it in x2 00125 2 07 000 0 172 lda 0,2 does it now point to physical end? assm 01 09-08-79 11.662 multics/mcs trace package page 17 trace -- entry for memory and printer tracing 00126 0 27 160 306 173 cmpa l.a002-* (525250) 00127 0 74 004 133 174 tze tra028-* yes, start at beginning again 175 else see if we've gone far enough 00130 0 67 200 330 176 cmpq temp3-* is start of next entry in the clear? 00131 0 75 761 112 177 tmi tra025-* no, we will overwrite it too 00132 0 71 003 135 178 tra tra029-* else store new value 00133 179 tra028 null 00133 4 47 137 272 180 ldq a.a002-*,* (.crtrb) 00134 0 56 171 325 181 stz wrap-* don't test for overwrite again until 182 new entries wrap around 00135 183 tra029 null 00135 4 57 136 273 184 stq a.a003-*,* (.crtrc) 185 00136 186 tra030 null ready to make new entry 00136 0 47 156 314 187 ldq count-* get data count 00137 573 003 0 188 iaq 3 2 words of header and end marker 00140 0 57 152 312 189 stq memlen-* save length of trace entry 190 first put in new end marker 00141 0 43 137 300 191 ldx1 a.a008-* x1 points to beginning of new entry 00142 0 41 136 300 192 ldx3 a.a008-* 00143 0 40 151 314 193 adcx3 count-* 00144 0 07 143 307 194 lda l.a003-* (=o525252) logical end marker 00145 3 17 002 0 195 sta 2,3 include 2 words for header 196 00146 0 07 150 316 197 lda modsw-* get modnum 00147 0336 06 0 198 als 6 00150 0 37 145 315 199 ora ttype-* and type 00151 0336 06 0 200 als 6 00152 0 37 142 314 201 ora count-* and count 00153 1 17 000 0 202 sta 0,1 this is entry header word 203 get time now 00154 4 07 121 275 204 lda a.a005-*,* (itmb) interval timer 00155 0 17 144 321 205 sta ttime+1-* store as 36-bit quantity 00156 4 04 116 274 206 ldaq a.a004-*,* (simclk) 00157 0 24 141 320 207 sbaq ttime-* subract saved interval timer 00160 1 57 001 0 208 stq 1,1 put it in trace entry (low-order 18 bits only) 00161 173 002 0 209 iacx1 2 point to data area 00162 0 03 624 6 210 ldx2 trace-* point to input data 00163 273 002 0 211 iacx2 2 00164 0 13 145 331 212 stx2 datap-* save data pointer for possible printer tracing 00165 0 47 127 314 213 ldq count-* get count of data words 00166 0 74 007 175 214 tze tra050-* if any 215 00167 216 tra040 null 00167 2 07 000 0 217 lda 0,2 copy data word into end of binary card 00000005 00170 1 17 000 0 218 sta 0,1 temporary storage 00171 173 001 0 219 iacx1 1 00172 273 001 0 220 iacx2 1 bump pointers 00173 573 777 0 221 iaq -1 decrement count 00174 0 64 773 167 222 tnz tra040-* get next word if any assm 01 09-08-79 11.662 multics/mcs trace package page 18 trace -- entry for memory and printer tracing 223 224 * 225 * move data from temporary storage to trace data buffer 226 00175 227 tra050 null 00175 0 03 103 300 228 ldx2 a.a008-* source address 00176 0 41 125 323 229 ldx3 nxtrce-* target address 00177 0 47 113 312 230 ldq memlen-* length of move 00200 4 10 077 277 231 tsy a.a007-*,* (mvpgtg) 232 * 233 * restore cpu page table entry 234 00201 0 71 003 204 235 trams2 tra tra060-* set to nop by init if 64k is configured 00202 0 07 120 322 236 lda tsvpte-* previous value 00203 4 17 077 302 237 sta a.a010-*,* (.crpte,*) is restored 238 00204 239 tra060 null 00204 0 07 117 323 240 lda nxtrce-* update pointer 00205 0 06 107 314 241 ada count-* data count 00206 773 002 0 242 iaa 2 2 word header 00207 0 17 114 323 243 sta nxtrce-* marker is overwritten by next entry 244 245 now find out if we're supposed to do 246 printer tracing 247 00210 4 03 074 304 248 ldx2 a.a014-*,* (.criom) get ptr to iom table 00211 2 20 004 0 249 szn lpch*2,2 is a printer configured? 00212 0 74 015 227 250 tze trabak-* no, don't try tracing 251 00213 0 07 104 317 252 lda switch-* get switch word 00214 0 31 074 310 253 cana l.a004-* (=o007777) are switches all zero? 00215 0 74 012 227 254 tze trabak-* yes, no printer tracing 255 else read processor switches to find out 00216 073 077 0 256 sel swch if specified ones are on 00217 0 70 107 326 257 stex procsw-* 258 00220 0 34 106 326 259 ana procsw-* are all relevant switches on? 00221 0 27 076 317 260 cmpa switch-* these will compare equal if so 00222 0 64 005 227 261 tnz trabak-* if they aren't don't print 262 00223 0 07 073 316 263 lda modsw-* get module sw for ptrace 00224 0 47 071 315 264 ldq ttype-* and the type too 00225 0 03 104 331 265 ldx2 datap-* get ptr to data 00226 4 10 057 305 266 tsy a.a015-*,* (ptrace) do actual printer tracing 267 00227 268 trabak null return from trace 269 "tsy" word now points 2 words past call 00227 0 07 065 314 270 lda count-* 00230 0 16 556 6 271 asa trace-* bump it over data and address of trace routine 00231 0 76 555 6 272 aos trace-* 00232 0 76 554 6 273 aos trace-* assm 01 09-08-79 11.662 multics/mcs trace package page 19 trace -- entry for memory and printer tracing 00233 274 return trace goodbye assm 01 09-08-79 11.662 multics/mcs trace package page 20 traceb -- entry for buffer tracing 276 277 ************************************************************************ 278 * 279 * traceb is used to print the contents of a buffer on the printer 280 * 281 * calling sequence: 282 * 283 * ldx3 bufadr-* address of buffer 284 * tsy addr-*,* 285 * vfd 6/modnum,12/size size of 286 *addr ind traceb 287 * --- return point 288 * 289 * if the printer is configured, the call will be passed on to trabf 290 * to do the work, otherwise traceb just returns. 291 * 292 ************************************************************************ 293 00235 294 traceb subr trc,(inh,q,x1,x2,x3) end of binary card 00000006 295 00260 4 03 024 304 296 ldx2 a.a014-*,* (.criom) get ptr to iom table 00261 2 20 004 0 297 szn lpch*2,2 printer configured? 00262 0 74 003 265 298 tze trcbak-* no, just return 00263 4 07 752 235 299 lda traceb-*,* get modnum/size word 00264 4 10 017 303 300 tsy a.a013-*,* (ptrabf) 301 00265 302 trcbak null 00265 0 76 750 235 303 aos traceb-* bump return pointer past arguments 00266 0 76 747 235 304 aos traceb-* 00267 305 return traceb assm 01 09-08-79 11.662 multics/mcs trace package page 21 trace symbols 307 00271 0 00661 0 308 a.a001 ind .crtra trace enable mask 00272 0 00662 0 309 a.a002 ind .crtrb base of trace table 00273 0 00663 0 310 a.a003 ind .crtrc pointer to oldest valid entry in trace table 00274 0 05000 3 311 a.a004 ind simclk next timer interrupt time 00275 0 00450 0 312 a.a005 ind itmb interval timer 00276 0 00673 0 313 a.a006 ind .crtsw global trace control switch 00277 0 01000 3 314 a.a007 ind mvpgtg move data paging target 00300 0 00332 1 315 a.a008 ind trctmp temporary storage for trace data 00301 0 04000 3 316 a.a009 ind setptw virtualize absolute address and set ptw 00302 4 00702 0 317 a.a010 ind .crpte,* page table entry for ptw 00303 0 02000 3 318 a.a013 ind ptrabf real buffer tracing subroutine 00304 0 00653 0 319 a.a014 ind .criom 00305 0 03000 3 320 a.a015 ind ptrace 321 00306 525250 0 322 l.a002 oct 525250 tag for physical end of trace table 00307 525252 0 323 l.a003 oct 525252 tag for logical end of trace table 00310 007777 0 324 l.a004 oct 007777 mask for switches end of binary card 00000007 00311 2337 00 0 325 l.a007 arl 0 model for "arl" instruction 326 00312 000000 0 327 memlen oct 0 328 00313 233100 0 00314 329 even 00314 330 count bss 1 count of data words passed 00315 331 ttype bss 1 trace type 00316 332 modsw bss 1 module number 00317 333 switch bss 1 printer tracing switch(es) 334 00320 335 even 00320 000000 0 336 ttime oct 0,0 interval timer value saved as 36-bit number 00321 000000 0 00322 000000 0 337 tsvpte oct 0 save-store for ptw on entry to trace 338 00323 000000 0 339 nxtrce oct 0 pointer to next available entry in trace buffer 340 table (initialized to point to base) 00324 000000 0 341 endtrc oct 0 end of table addr 342 00325 000000 0 343 wrap oct 0 flag indicating that the trace buffer has 344 wrapped around 345 00326 346 procsw bss 1 word for reading processor switches 00327 347 temp1 bss 1 a temporary 00330 348 temp3 bss 1 another one 00331 349 datap bss 1 address of current data word 350 00332 351 trctmp bss 32 storage to copy data into before copying into 352 trace data buffer end of binary card 00000008 353 end assm 01 09-08-79 11.662 multics/mcs trace package page 22 trace symbols 372 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 09-08-79 11.664 multics/mcs trace package page 23 octal symbol references by sequence no. 271 a.a001 308 118 308 272 a.a002 309 141 180 309 273 a.a003 310 155 159 184 310 274 a.a004 311 206 311 275 a.a005 312 204 312 276 a.a006 313 108 313 277 a.a007 314 231 314 300 a.a008 315 191 192 228 315 301 a.a009 316 134 162 170 316 302 a.a010 317 123 237 317 303 a.a013 318 300 318 304 a.a014 319 248 296 319 305 a.a015 320 266 320 314 count 330 101 129 144 187 193 201 213 241 270 330 331 datap 349 212 265 349 324 endtrc 341 56 131 341 450 itmb 42 42 312 653 .criom 44 44 319 702 .crpte 44 44 317 661 .crtra 44 44 308 662 .crtrb 44 44 309 663 .crtrc 44 44 310 673 .crtsw 44 44 313 306 l.a002 322 136 173 322 307 l.a003 323 194 323 310 l.a004 324 253 324 311 l.a007 325 112 325 2 lpch 42 42 249 297 6 macwk1 294 96 274 294 305 14 macwk2 294 96 294 312 memlen 327 189 230 327 316 modsw 332 106 197 263 332 1 mvpgtg 63 314 323 nxtrce 339 55 127 143 229 240 243 339 326 procsw 346 257 259 346 2 ptrabf 62 318 3 ptrace 61 320 4 setptw 64 316 5 simclk 60 311 77 swch 42 42 256 317 switch 333 120 252 260 333 327 temp1 347 167 168 347 330 temp3 348 158 176 348 60 tra005 126 122 126 103 tra010 148 132 148 104 tra020 150 146 150 112 tra025 160 160 177 133 tra028 179 174 179 135 tra029 183 178 183 136 tra030 186 152 156 186 167 tra040 216 216 222 assm 01 09-08-79 11.664 multics/mcs trace package page 24 octal symbol references by sequence no. 175 tra050 227 214 227 204 tra060 239 235 239 227 trabak 268 109 119 250 254 261 268 0 trac 69 52 69 70 6 trace 96 53 96 98 102 103 210 271 272 273 274 235 traceb 294 54 294 299 303 304 305 55 trams1 122 57 122 201 trams2 235 58 235 51 trashf 116 113 116 265 trcbak 302 298 302 332 trctmp 351 315 351 322 tsvpte 337 124 236 337 320 ttime 336 205 207 336 315 ttype 331 199 264 331 325 wrap 343 139 151 181 343 ** 43168 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