assm 01 01-12-87 13.312 multics/fnp direct interface adapter -- dia_man page 1 preface this program will be loaded mod 16 program break 7306 common length 0 v count bits 6 primary symdef entry dia 0 dterm 12 dmail 157 denq 630 dindcw 6021 dicell 6651 dmbx 6650 derrq 1166 diajt 7221 dlist 6142 end of binary card 00000001 diconf 6646 ecgifl 4545 lctlck 2771 diasel 6123 secondary symdef entry .chain 0 m.001. 44 x.005. 63 x.006. 221 x.008. 356 m.009. 526 end of binary card 00000002 m.013. 1532 m.016. 1550 x.020. 1777 x.022. 2404 x.023. 2440 x.025. 3011 x.028. 3621 m.031. 3647 m.035. 3656 m.038. 3747 end of binary card 00000003 m.042. 3756 x.047. 4621 x.050. 5207 x.057. 6365 x.060. 6440 x.063. 7010 assm 01 01-12-87 13.312 multics/fnp direct interface adapter -- dia_man page 2 m.067. 7044 m.070. 7053 m.072. 7114 m.075. 7123 end of binary card 00000004 block length symref 1 ctrl 2 hcfg 3 invp 4 cvabs 5 g3wjt 6 hmode 7 itest 10 mdisp 11 mincd 12 mincs end of binary card 00000005 13 trace 14 brkptr 15 dspqur 16 frebfh 17 frebuf 20 frelbf 21 fremem 22 getbfh 23 getbuf 24 getmem end of binary card 00000006 25 gettib 26 globsw 27 houtav 30 hunmsk 31 iwrite 32 loutav 33 mupdat 34 mvpgsc 35 mvpgtg 36 secdsp end of binary card 00000007 37 setbpt 40 setptw 41 shrcct end of binary card 00000008 assm 01 01-12-87 13.312 multics/fnp direct interface adapter -- dia_man page 3 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 01-12-87 13.312 multics/fnp direct interface adapter -- dia_man page 4 11 lbl ,dia_man 13 pcc on 14 editp on 15 16 ************************************************************* 17 * 18 * note: cs means "central system" 19 * 20 ************************************************************* 21 * 22 * dia_man contains the code to control the direct interface 23 * adapter (dia) in order to handle communications between 24 * the fnp and multics. all such communications are transmitted 25 * by means of "mailboxes" of eight (36-bit) words each 26 * which are supplied by the cs. 27 * 28 * dia activity is triggered by: 29 * 1) entries in the dia i/o request queues 30 * (placed there by the denq entry) 31 * 32 * 2) interrupts from the cs indicating that 33 * a mailbox is to be transmitted to the fnp 34 * 35 * the two basic scenarios are as follows 36 * 37 * 1) fnp-initiated i/o 38 * 39 * entry is placed in request queue by denq 40 * (one queue for each line) 41 * dgetwk (which is scheduled at completion of i/o cycle) 42 * finds entry and builds large mailbox which it writes 43 * into cs memory 44 * cs responds either by "freeing" the mailbox 45 * (interrupt level 12-15) or by rewriting it with new 46 * information (interrupt level 8-11), in either case 47 * causing an entry to be added to the mailbox queue; 48 * dia_man reads the mailbox as described below, interprets 49 * it and marks it free 50 * queue entries are freed immediately upon sending of the mailbox 51 * except in the case of input operations, which are freed 52 * when the input has been accepted 53 * 54 * 2) cs-initiated i/o 55 * 56 * cs sends interrupt to add entry to mailbox queue 57 * when dgetwk finds mailbox queue non-empty, it calls 58 * rdmbx to read the mailbox in from the cs 59 * dia_man does whatever is indicated by the contents of the 60 * mailbox, and when finished either writes a modified copy 61 * of the mailbox back to the cs or just informs the cs 62 * that the mailbox is free 63 * assm 01 01-12-87 13.312 multics/fnp direct interface adapter -- dia_man page 5 64 * 65 * during such a cycle as described above, a global 66 * lock (the "dia lock") is locked so that there is no attempt 67 * to process more than one mailbox at a time 68 * 69 * a "transaction control word" is used to indicate the 70 * current state of the dia i/o cycle in progress 71 * 72 * two interrupt handlers are used: 73 * dterm handles the interrupt that comes in at the com- 74 * pletion of each i/o operation and schedules 75 * the transaction processor (dtrans) to deal with the 76 * results of the i/o 77 * 78 * dmail handles the "mailbox ready" interrupt from the 79 * cs and adds an entry to the mailbox queue 80 * 81 * except when copying output buffers from the cs, 82 * dcws for dia i/o are built starting at location "dcws" 83 * in the "conect" subroutine 84 * 85 * the address and length of the current dcw list are 86 * also kept in "conect" so that if necessary the most 87 * recent i/o can simply be restarted by calling conect 88 * again 89 * 90 * 91 * labelling conventions: 92 * 93 * literals have names of the form l.xnnn 94 * where "x" is a letter that varies from subroutine 95 * to subroutine and "nnn" is a 3-digit number that starts 96 * over for each new value of "x" 97 * 98 * address constants have names of the form a.xnnn 99 * where "x" and "nnn" are as above 100 * 101 * 102 * coded august 1974 by robert s. coren 103 * modified december 1975 by jay goldman 104 * modified november 1978 by robert coren for fnp-initiated 105 * mailboxes. 106 * modified 4th of july, 1979 by bernard greenberg 107 * for fnp echo negotiation 108 * modified 1979 may by art beattie to support dn6670 109 * extended memory. 110 * modified september 1984 by robert coren to zero block 111 * count when turning off oflow and to call hmode when 112 * setting flow control characters. 113 * modified april 1985 by robert coren to include tfabf0 114 * and tfabf1 in "permanent" t.flg3 flags 115 * assm 01 01-12-87 13.312 multics/fnp direct interface adapter -- dia_man page 6 116 ************************************************************* 117 118 * history comments: 119 * 1) change(86-04-23,coren), approve(86-04-23,mcr7300), 120 * audit(86-05-19,beattie), install(86-07-08,mr12.0-1089): 121 * modified november 1984 by robert coren to read echo negotiation break 122 * table from cs. 123 * end history comments 124 assm 01 01-12-87 13.312 multics/fnp direct interface adapter -- dia_man page 7 125 eject 126 symdef dia 127 symdef dterm 128 symdef dmail 129 symdef denq 130 symdef dindcw 131 symdef dicell 132 symdef dmbx 133 symdef derrq 134 symdef diajt 135 symdef dlist 136 symdef diconf 137 symdef ecgifl 138 symdef lctlck 139 symdef diasel 'sel' instruction in conect subroutine 140 141 symref mdisp 142 symref secdsp 143 symref dspqur 144 symref g3wjt 145 symref getbuf 146 symref getbfh 147 symref frebuf 148 symref frebfh 149 symref frelbf 150 symref getmem 151 symref fremem 152 symref gettib 153 symref globsw 154 symref iwrite 155 symref itest 156 symref loutav,houtav 157 symref invp 158 symref hmode 159 symref trace 160 symref ctrl 161 symref brkptr 162 symref shrcct hsla_man subr to release cct 163 symref setptw set page table word 164 symref setbpt set buffer page table word 165 symref cvabs convert buffer address to absolute 166 symref mvpgsc move data paging source 167 symref mvpgtg move data paging target 168 symref hcfg hsla reconfigure subroutine 169 symref hunmsk unmask subchannel 170 symref mincs 171 symref mincd 172 symref mupdat 173 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 8 m a c r o s 174 ttls m a c r o s 175 176 jumptb macro 177 idrp #1 178 jmps#1 zero 179 tsy ivp-*,* 180 vfd 4/0,7/#1,1/0,6/mbxmod 181 idrp 182 endm 183 184 185 186 187 mpy macro (multiplier location-*) 188 mpf #1 189 lrl 1 190 endm 191 192 193 dvd macro (divisor location-*) 194 qls 1 195 dvf #1 196 endm 197 198 pmc save,on 00000 199 systm assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 9 datanet configuration description ttls 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 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 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 10 datanet configuration description eject ************************* * 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 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 000140 h1ft set 96 hsla 1 fault assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 11 datanet configuration description 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 000144 h1a6 set 100 hsla 1 subch 6 active terminate vector assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 12 datanet configuration description 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 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 13 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 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 14 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 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 15 datanet configuration description eject 1 *************************** * 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 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 16 datanet configuration description 000427 h2fts set 279 hsla 2 fault status word 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 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 17 datanet configuration description eject ************************************ * 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 200 00000 201 comreg assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 18 system communications region ttls 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 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 19 system communications region 000676 .crcct set 446 address of first cct descriptor 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 000707 .crnxe set 455 next available space in extended memory 000710 .crbpe set 456 buffer paging window table entry 000760 .crcpr set 496 copyright notice 202 00000 203 tib assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 20 terminal information block (tib) ttls terminal information block (tib) 000000 t.stat equ 0 holds current line status 000001 t.flg equ t.stat+1 flag word 000002 t.flg2 equ t.flg+1 second word of flags 000003 t.cur equ t.flg2+1 current address in control table 000004 t.line equ t.cur+1 10 bit line number 000005 t.icp equ t.line+1 first buffer in input chain 000006 t.ilst equ t.icp+1 last buffer in input chain 000007 t.icpl equ t.ilst+1 count of buffers in icp chain 000010 t.icch equ t.icpl+1 address of next input character 000011 t.elnk equ t.icch+1 link to tib extension 000011 t.rcp equ t.elnk replay chain pointer (share t.elnk) 000012 t.ocp equ t.elnk+1 addr of output chain from cs 000013 t.ocur equ t.ocp+1 addr of current output buffer 000014 t.olst equ t.ocur+1 addr of last buffer in output chain 000015 t.occh equ t.olst+1 addr of next output character 000016 t.ocnt equ t.occh+1 count of buffers in t.ocur 000017 t.type equ t.ocnt+1 line type 000020 t.time equ t.type+1 time at which next timeout will occur 000022 t.reta equ t.time+2 return address from calsub 000023 t.dcwa equ t.reta+1 addr of dcw list to 'execute' 000024 t.dcwl equ t.dcwa+1 length of dcw list 000025 t.echo equ t.dcwl+1 echo buffer address 000026 t.dcp equ t.echo+1 addr of message chain for cs 000027 t.dlst equ t.dcp+1 last buffer in messge chain for cs assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 21 terminal information block (tib) 000030 t.ftse equ t.dlst+1 first time slot entry in lsla table 000030 t.sfcm equ t.ftse pointer to sfcm for hsla lines 000031 t.bcnt equ t.ftse+1 counting temporary 000032 t.brkp equ t.bcnt+1 pointer to current break list 000033 t.pos equ t.brkp+1 current carriage position 000034 t.char equ t.pos+1 pending line control char (lsla only) 000034 t.ecch equ t.char address of current echo char (hsla only) 000035 t.cntr equ t.char+1 counter for control tables 000036 t.flg3 equ t.cntr+1 third word of flags 000037 t.dtp equ t.flg3+1 pointer to delay table for this line 000040 t.frmc equ t.dtp+1 framing chars (2 chars) 000041 t.dcpl equ t.frmc+1 number of buffers in dcp chain 000042 t.scll equ t.dcpl+1 screenline length left, for echo neg. 000043 t.sncc equ t.scll+1 echo negotiation sync ctr. 000044 t.entp equ t.sncc+1 echo negotiation break table ptr 000045 t.ifch equ t.entp+1 input flow control characters 000046 t.ofch equ t.ifch+1 output flow control characters 000047 t.omct equ t.ofch+1 output message count (for flow control) 000050 t.itim equ t.omct+1 time of last call to inproc (2 words) 000052 t.metr equ t.itim+2 address of metering area 000053 t.abf0 equ t.metr+1 absolute address of first permanent buffe 000054 t.abf1 equ t.abf0+1 absolute address of first permanent buffe 000055 t.leng equ t.abf1+1 length of a tib ******************************** * t.stat bits ******************************** assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 22 terminal information block (tib) 000001 tsfcd bool 000001 carrier detect 000002 tsfcts bool 000002 clear to send 000004 tsfdsr bool 000004 data set ready 000010 tsfsrc bool 000010 supervisory receive 000020 tsfst bool 000020 store status 000040 tsfmrk bool 000040 send marker status 000100 tsftrm bool 000100 send terminate status 000200 tsfrcv bool 000200 receive mode 000400 tsfxmt bool 000400 transmit mode 001000 tsfbrk bool 001000 send line break 002000 tsfdtr bool 002000 data terminal ready 004000 tsfsxt bool 004000 supervisory transmit 004000 tsftre bool 004000 tally runout enable (hdlc) 010000 tsfrts bool 010000 request to send 020000 tsfcrq bool 020000 acu call request ******************************** * tib flags -- t.flg ******************************** 000001 tfwrit bool 000001 output chain present 000002 tfbel bool 000002 send bell as next echoed character 000004 tffdpx bool 000004 full duplex mode 000010 tfkybd bool 000010 keyboard addressed 000020 tfprtr bool 000020 printer addressed 000040 tfhang bool 000040 hangup this line 000100 tflisn bool 000100 answer the phone assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 23 terminal information block (tib) 000200 tfquit bool 000200 send nl on line break 000400 tfctrl bool 000400 do kybd/printer addressing 001000 tflfec bool 001000 do lf echo on cr 002000 tfcrec bool 002000 do cr echo on lf 004000 tftbec bool 004000 do space echo on tab 010000 tfwabt bool 010000 do write abort 020000 tfauto bool 020000 this is hsla autobaud line 040000 tfeotx bool 040000 eot expected from 2741 100000 tfisus bool 100000 input suspended 200000 tfecpx bool 200000 echoplex mode 400000 tfosus bool 400000 output suspended ******************************** * second word of tib flags ******************************** 000001 tfxhld bool 000001 hold transmit on 000002 tfdild bool 000002 terminal is dialed up 000004 tfercv bool 000004 enter receive mode 000010 tfrabt bool 000010 do read abort 000020 tfacu bool 000020 do dial out 000040 tfifc bool 000040 input flow control mode 000100 tfofc bool 000100 output flow control mode 000200 tfupsf bool 000200 terminal is upshifted now 000400 tfrply bool 000400 replay mode 001000 tfrpon bool 001000 replay is occurring now 002000 tfplit bool 002000 polite mode assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 24 terminal information block (tib) 004000 tfblak bool 004000 asynchronous block acknowledgement 010000 tfcrcv bool 010000 'control' receive mode 020000 tfmrcv bool 020000 'message' receive mode 040000 tffrmi bool 040000 frame mode 100000 tffip bool 100000 frame in progress 200000 tfsftr bool 200000 terminal is shifting device 400000 tfpfnl bool 400000 line is in prefixnl mode ********************************* * third word of tib flags ********************************* 000001 tfbkpt bool 000001 line is stopped at breakpoint 000002 tfitim bool 000002 timeout if input stops 000004 tfkpar bool 000004 keep parity bits 000010 tfecho bool 000010 echoing has priority over output (lsla) 000020 tfbral bool 000020 break on all characters 000040 tfsked bool 000040 input timeout routine scheduled 000100 tf8in bool 000100 don't strip input parity 000200 tf8out bool 000200 don't strip output parity 000400 tfoddp bool 000400 odd parity 001000 tfabf0 bool 001000 t.afb0 available 010000 tfabf1 bool 010000 t.abf1 available 020000 tfmask bool 020000 channel has been masked for excessive int 040000 tfinq bool 040000 input is queued for the channel ********************************* assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 25 terminal information block (tib) * redefined tib flags in t.flg ********************************* 000020 tfdlup equ tfprtr line is on dialup modem 204 00000 205 sfcm hsla pcc save,off assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 26 sfcm for hsla 000000 sf.hcm equ 0 addr of hwcm 000001 sf.nxa equ sf.hcm+1 addr of next available queue entry 000002 sf.nxp equ sf.nxa+1 addr of next queue entry to process 000003 sf.tly equ sf.nxp+1 tally of status queue 000004 sf.tib equ sf.tly+1 addr of tib for this line 000005 sf.flg equ sf.tib+1 flag word 000006 sf.ib0 equ sf.flg+1 pointer to input buffer 1 000007 sf.ib1 equ sf.ib0+1 pointer to input buffer 2 000010 sf.ob0 equ sf.ib1+1 pointer to output buffer 1 000011 sf.ob1 equ sf.ob0+1 pointer to output buffer 2 000012 sf.pcw equ sf.ob1+1 current pcw 2nd word 000013 sf.cct equ sf.pcw+1 cct addr for this line, if non-zero 000014 sf.rct equ sf.cct+1 repeat count for status queue overflows 000015 sf.hsl equ sf.rct+1 address of hsla table entry for this line 000016 sf.bsz equ sf.hsl+1 max buffer size 000017 sf.fbs equ sf.bsz+1 buffer size to be used during frame input 000020 sf.mms equ sf.fbs+1 maximum synchronous message size 000020 sf.csz equ sf.mms current asynchronous buffer size 000021 sf.rms equ sf.mms+1 remaining unallocated message length 000021 sf.nic equ sf.rms char. address of next asynchronous input 000022 sf.noc equ sf.nic+1 **not used** char address of next asynchr 000023 sf.ssl equ sf.noc+1 number of entries in software status queu 000024 sf.cfg equ sf.ssl+1 2 words for config pcw 000026 sf.sta equ sf.cfg+2 hardware status q, sicw here (primary) 000005 sfhsiz equ 5 number of entries in hardware status buf assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 27 sfcm for hsla room for 6 status words 000042 sf.est equ sf.sta+sfhsiz*2+2 000042 sf.shq equ sf.est hardware status q, sicw here (secondary) room for 6 more status word 000056 sf.ast equ sf.shq+sfhsiz*2+2 000056 sf.hln equ sf.ast 000056 sf.waq equ sf.ast wrap around queue, software status q 000012 sfssq equ 10 length of "short" software status queue 000024 sflsq equ 20 length of "long" software status queue (used for hdlc and bisync lines) 000070 sf.sln equ sf.hln+sfssq 000102 sf.lln equ sf.hln+sflsq sfcm flag definitions 000001 sffskd bool 000001 status processor is scheduled 000002 sffcii bool 000002 on if alternate input icw is active 000004 sffcoi bool 000004 on if alternate output icw is active 000010 sffisc bool 000010 inactive subchannel flag 000020 sffsct bool 000020 short cct flag 000040 sffebd bool 000040 ebcdic data code on this line 000100 sffech bool 000100 tab, cr, lf echo going on now 000200 sffdct bool 000200 dynamic (sharable) cct in use for channel 000400 sffstp bool 000400 stop channel, rxmit done 001000 sffcai bool 001000 on if altermate status queue is active 002000 sffbsc bool 002000 binary synchronous device 004000 sffsqo bool 004000 status queue overflow pending 010000 sffsyn bool 010000 any synchronous line type 020000 sffmsp bool 020000 marker status pending assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 28 sfcm for hsla 040000 sffofr bool 040000 old setting of tffrmi (lines up on tffrmi 100000 sffnib bool 100000 need to allocate new input buffer(s) 400000 sffhdl bool 400000 uses hdlc channel board 000002 sfhmk equ 2 x-or mask to switch icw addrs 000001 sfbfmk equ 1 x-or mask to switch i-or-ob1/2 addrs pcc restore 206 00000 207 meters assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 29 system-wide meters ttls system-wide meters 000720 .mdilc set 464 cumulative no. of channels dialed 000722 .mdilu set 466 updates of .mdilc 000724 .mspav set 468 cumulative space available 000726 .mspau set 470 updates of .mspav 000730 .mimbx set 472 cumulative number of mbxes in use 000732 .mimbu set 474 updates of .mimbx 000734 .mndil set 476 current no. of channels dialed 000735 .malof set 477 number of space allocation failures 000736 .mdias set 478 abnormal dia status 000737 .mpool set 479 total size of buffer pool (in words) 000740 .mbufa set 480 number of buffer allocations 000742 .mbfpa set 482 number of buffers pre-allocated 000744 .mupab set 484 used a pre-allocated buffer 000746 .mpanf set 486 no pre-allocated buffer available 000750 .mblow set 488 buffer allocated in low memory 000030 .mleng equ .mpanf+2-.mdilc length of system-wide meters assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 30 per-channel meters ttls per-channel meters meters for all channels 000000 m.dql equ 0 cumulative length of dia request queue 000002 m.dqu equ m.dql+2 updates of m.dql 000004 m.nst equ m.dqu+2 cumulative no. of pending status 000006 m.nsu equ m.nst+2 updates of m.nst 000010 m.over equ m.nsu+2 output overlaps 000011 m.par equ m.over+1 parity errors 000012 m.ssqo equ m.par+1 software status queue overflows 000013 m.hsqo equ m.ssqo+1 hardware status queue overflows 000014 m.inaf equ m.hsqo+1 input allocation failures 000015 m.cql equ m.inaf+1 current length of dia request queue 000016 m.exh equ m.cql+1 exhaust status 000020 m.xte equ m.exh+2 software xte status 000022 m.leng equ m.xte+2 length of common meters (must be even) additional meters for asynchronous channels 000022 m.prex equ m.leng pre-exhaust status 000024 m.ebof equ m.prex+2 echo buffer overflows 000026 m.quit equ m.ebof+2 bell-quits 000030 m.asyl equ m.quit+2 total length of asynchronous meters (must be even) additional meters for synchronous channels 000022 m.nim equ m.leng number of input messages 000024 m.iml equ m.nim+2 cumulative length of input 000026 m.mini equ m.iml+2 minimum length of input message assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 31 per-channel meters 000027 m.maxi equ m.mini+1 maximum length of input message 000030 m.nom equ m.maxi+1 number of output messages 000032 m.oml equ m.nom+2 cumulative length of output 000034 m.mino equ m.oml+2 minimum length of output message 000035 m.maxo equ m.mino+1 maximum length of output message 000036 m.cnt1 equ m.maxo+1 first type of counter 000040 m.cnt2 equ m.cnt1+2 second type of counter 000042 m.cnt3 equ m.cnt2+2 third type of counter 000044 m.cnt4 equ m.cnt3+2 fourth type of counter 000046 m.cnt5 equ m.cnt4+2 fifth type of counter 000050 m.cnt6 equ m.cnt5+2 sixth type of counter 000052 m.cnt7 equ m.cnt6+2 seventh type of counter 000054 m.cnt8 equ m.cnt7+2 eighth type of counter 000056 m.synl equ m.cnt8+2 total length of synchronous meters 208 00000 209 devtab assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 32 device table entry (devtab) ttls device table entry (devtab) two characters used alternately for 000000 dt.seq equ 0 sequencing 000001 dt.cct equ dt.seq+1 address of default cct (hsla only) address of array of keyboard addressing 000002 dt.key equ dt.cct+1 sequences address of array of printer addressing 000003 dt.prt equ dt.key+1 sequences 000004 dt.flg equ dt.prt+1 flags(one word) 000005 dt.cmt equ dt.flg+1 carriage movement table (6 chars) 000010 dt.brk equ dt.cmt+3 default break list (4 words) (lsla only) flags 000001 dtfctl bool 000001 default setting of tfctrl (in tib) 000002 dtfsct bool 000002 default setting of short cct flag 000004 dtfsft bool 000004 default setting of tfsftr 210 00000 211 dlytbl assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 33 delay table entry (dlytbl) ttls delay table entry (dlytbl) 000000 dl.fwd equ 0 forward pointer 000001 dl.bck equ 1 back pointer 000002 dl.rfc equ 2 reference count 000003 dl.hsz equ 3 header size - also for echnego tables. 000003 dl.lf equ 3 delays for line feed 000004 dl.cr equ 4 per-column delay factor for carriage retu 000005 dl.tba equ 5 initial delay for tab 000006 dl.tbb equ 6 per-column delay factor for tab 000007 dl.bs equ 7 delays for backspace 000010 dl.ff equ 8 delays for form feed 000011 dl.siz equ 9 size of table entry 212 00000 213 buffer assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 34 buffer format ttls buffer format 000000 bf.nxt equ 0 address of next buffer in chain 000001 bf.siz equ bf.nxt+1 size of buffer (bits0-2) 000001 bf.flg equ bf.nxt+1 flags (bits3-8) 000001 bf.tly equ bf.nxt+1 tally of buffer (bits9-17) 000002 bf.dta equ bf.siz+1 start of data 000040 bufsiz equ 32 buffer size 000074 bufnch equ bufsiz*2-4 number of data characters in a buffer 000050 bufmax equ 40 maximum number of input buffers 000012 bufpre equ 10 number of buffers to trigger pre-exhaust 000005 bufshf equ 5 number of bits shifted to divide by bufsi 000024 bufres equ 20 number of reserved buffers 700000 bufsmk bool 700000 mask to isolate bf.siz 077000 buffmk bool 077000 mask to isolate bf.flg 000777 buftmk bool 000777 mask to isolate bf.tly 000002 bufthr equ 2 threshold at which to send send_output 000400 bfmsiz equ 256 maximum buffer size in words ******************************** * buffer flags ******************************** 040000 bfflst bool 040000 last buffer in message 020000 bffbrk bool 020000 buffer contains break character 010000 bfftra bool 010000 throw away this buffer when done inputtin 004000 bffrpy bool 004000 buffer is last in replay chain 002000 bffctl bool 002000 buffer consists of keybd/prtr control 001000 bffhld bool 001000 hold output buffer until dmpout assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 35 buffer format 214 00000 215 global assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 36 global switches ttls global switches 000001 gbfup bool 000001 cs is up 000002 gbfhng bool 000002 we've received "blast hangup" 000004 gbfbla bool 000004 doing "blast" output 216 00000 217 hslatb ******************************************** * hsla table symbol definitions ******************************************** 000000 ht.flg equ 0 hsla tables flag bits 000001 ht.tib equ 1 tib ptr in hsla table 400000 htfcc bool 400000 concentrator channel 200000 htfpl bool 200000 private line modem or hardwire 100000 htfasy bool 100000 async channel 040000 htfop1 bool 040000 option 1 020000 htfop2 bool 020000 option 2 017000 htfmdm bool 017000 modem type, 4 bits 000760 htflnt bool 000760 line type, 5 bits 000017 htfspd bool 000017 line speed, 4 bits 218 00000 219 csbits assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 37 control and status bits ttls control and status bits control bits 000001 c.srec bool 000001 set receive mode 000002 c.rrec bool 000002 reset receive mode 000004 c.sxmt bool 000004 set transmit mode 000010 c.rxmt bool 000010 reset transmit mode 000020 c.sdtr bool 000020 set data terminal ready 000040 c.rdtr bool 000040 reset data terminal ready 000100 c.ssup bool 000100 set supervisory transmit mode 000100 c.stre bool 000100 set tally runout enable (hdlc) 000200 c.rsup bool 000200 reset supervisory transmit mode 000200 c.rtre bool 000200 reset tally runout enable (hdlc) 000400 c.stat bool 000400 store status 001000 c.sbrk bool 001000 send line break 002000 c.smrk bool 002000 store marker status 004000 c.strm bool 004000 store terminate status 010000 c.srqs bool 010000 set request to send 020000 c.rrqs bool 020000 reset request to send 040000 c.pad bool 040000 unused 100000 c.cmd bool 100000 indicates cmd subop 400000 c.scmd bool 400000 indicates supplementary cmd subop the following must be used in the optional fields to the cmd (or contrl) macros in the control_tables 000001 c.scrq bool 000001 set call request assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 38 control and status bits 000002 c.rcrq bool 000002 reset call request status bits 000001 s.cd bool 000001 carrier detect 000002 s.cts bool 000002 clear to send 000004 s.dsr bool 000004 data set ready 000010 s.sprc bool 000010 supervisory receive mode 000020 s.st bool 000020 status requested 000040 s.mark bool 000040 marker status 000100 s.term bool 000100 terminate status 000200 s.prex bool 000200 pre-exhaust 000400 s.brk bool 000400 line break received 001000 s.brch bool 001000 break character received 002000 s.ring bool 002000 ring 004000 s.exh bool 004000 exhaust status 010000 s.prty bool 010000 parity error 010000 s.fcse bool 010000 frame check sequence error (hdlc) 020000 s.xte bool 020000 transfer timing error 040000 s.pwi bool 040000 acu power indicator 100000 s.dlo bool 100000 acu data line occupied 200000 s.acr bool 200000 acu abandon call and retry 400000 s.ads bool 400000 acu raised data set status the following four bits share the values of acu status but can never be misinterpreted. 040000 s.rto bool 040000 receive time out (bsc) assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 39 control and status bits 040000 s.isd bool 040000 idle state detect (hdlc) 100000 s.rbt bool 100000 receive block termination (bsc & hdlc) 200000 s.bmk bool 200000 marker status (bsc) 200000 s.rabt bool 200000 receive abort (hdlc) 400000 s.bdmk bool 400000 delayed marker status (bsc) 400000 s.pbyt bool 400000 partial byte (hdlc) bits in common between standard status 000177 s.tib bool 000177 and tib status dataset status bits in standard status 000017 s.dss bool 000017 and tib status asynchronous configuration bits 000001 fg.icw bool 000001 icw (two send icw's) 000002 fg.lpr bool 000002 lateral parity receive 000004 fg.lps bool 000004 lateral parity send 000010 fg.lpo bool 000010 lateral parity odd 000020 fg.5bt bool 000020 5-bit character mode 000040 fg.6bt bool 000040 6-bit character mode 000100 fg.7bt bool 000100 7-bit character mode 000200 fg.8bt bool 000200 8-bit character mode 000400 fg.beb bool 000400 ebcdic mode (bsc) 000400 fg.itf bool 000400 interfame time fill (hdlc) 001000 fg.btr bool 001000 transparent mode (bsc) 002000 fg.cct bool 002000 enable cct 220 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 40 dia mailbox opcodes 221 ttls dia mailbox opcodes 00000 222 diaop mailbox i/o commands 000001 rcd equ 1 000002 rtx equ 2 000003 wcd equ 3 000004 wtx equ 4 mailbox opcodes <6180 -> 355> 000000 termac bool 000 terminal accepted 000001 dislin bool 001 disconnect this line 000002 disall bool 002 disconnect all lines 000003 noacc bool 003 don't accept calls 000004 accall bool 004 accept calls 000005 inacc bool 005 input accepted 000006 setcls bool 006 set device class 000007 entrcv bool 007 enter receive mode 000010 frmchr bool 010 set framing characters 000011 blast bool 011 send output to all lines 000012 accout bool 012 accept output 000013 aclout bool 013 accept last output 000014 dodial bool 014 do dial out 000016 rejreq bool 016 reject request 000020 trmrej bool 020 terminal rejected 000021 disacc bool 021 disconnect accepted 000022 incomp bool 022 init complete 000023 dmpmem bool 023 dump 355 memory 000024 pchmem bool 024 patch 355 memory 000025 brkpnt bool 025 fnp_break order 000026 linctl bool 026 line_control order 000027 msgsiz bool 027 set input message size 000030 engstb bool 030 set echnego break table 000031 engogo bool 031 start negotiated echo 000032 engoff bool 032 stop negotiated echo 000033 engini bool 033 init negotiated echo 000035 brack bool 035 break acknowledged 000036 infcc bool 036 set input flow control characters 000037 outfcc bool 037 set output flow control characters 000042 alter bool 042 alter parameters 000043 cserr bool 043 checksum error 000044 rmeter bool 044 report meters 000045 setdly bool 045 set delay values <355 -> 6180> assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 41 dia mailbox opcodes 000100 acctrm bool 100 accept new terminal 000101 lindis bool 101 line disconnected 000102 inmbx bool 102 input in mailbox 000103 linmsk bool 103 line masked 000104 sparms bool 104 send 6180 parameters 000105 sndout bool 105 send output 000106 engain bool 106 ack_echnego_init 000107 engaof bool 107 ack_echnego_stop 000111 conslv bool 111 connect to slave 000112 accin bool 112 accept input 000113 brkcon bool 113 line break condition 000114 wrutim bool 114 "wru" timeout 000115 errmsg bool 115 error message 000120 acupwi bool 120 no power to acu 000121 acudlo bool 121 data line occupied 000122 acuacr bool 122 dial out failed 000123 acung bool 123 unable to dial out 000124 linsta bool 124 line_status signal from control tables 223 00000 224 alterp defines alter-parameters subcodes 000003 alfdpx bool 03 full duplex mode 000004 albrk bool 04 send line break 000010 alcrec bool 10 crecho mode 000011 allfec bool 11 lfecho mode 000012 allock bool 12 lock and unlock keyboard 000015 aldump bool 15 dump output 000016 altbec bool 16 tab-echo mode 000020 allisn bool 20 listen 000021 alquit bool 21 handle quit 000022 alchng bool 22 change control string index 000023 alwru bool 23 read answerback 000024 alecpx bool 24 echoplex mode 000025 alxhld bool 25 transmit hold 000026 aldpin bool 26 dump input 000027 alrply bool 27 replay mode 000030 alplit bool 30 polite mode 000031 alfrmi bool 31 framei mode 000032 alsetb bool 32 set buffer size 000033 albral bool 33 breakall mode 000034 alpfnl bool 34 prefixnl mode 000035 alifc bool 35 iflow mode 000036 alofc bool 36 oflow mode 000037 aloddp bool 37 odd parity 000040 al8in bool 40 don't strip input parity 000041 al8out bool 41 don't generate output parity assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 42 dia mailbox opcodes 225 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 43 symbol definitions 226 ttls symbol definitions 227 228 transaction control word states 229 000000 230 tcfrst equ 0 first interrupt of session 000001 231 tcdcwl equ 1 dcw list was read 000002 232 tcdata equ 2 data was read 000003 233 tcmbxr equ 3 mailbox was read 000004 234 tcwrd equ 4 wrote data to cs 000005 235 tcblst equ 5 blast message was read 000006 236 tcpchm equ 6 reading data for patch_fnp order 000007 237 tcdmpm equ 7 writing data for dump_fnp order 000010 238 tcinmb equ 8 sent input in a mailbox 000011 239 tcmetr equ 9 sent metering information 000012 240 tcrecn equ 10 echo neg. table was read 000013 241 tcreq equ 11 sent mailbox request count 000014 242 tcfree equ 12 freed mailbox 000015 243 tcwmbx equ 13 wrote mailbox to cs 244 000016 245 tcmax equ 14 maximum value of tcword + 1 000024 246 maxbuf equ 20 maximum number of cs buffers 247 248 249 dia opcodes 250 000065 251 diatrg bool 65 transfer gate from cs to fnp 000070 252 diadis bool 70 disconnect 000071 253 diainf bool 71 interrupt fnp 000072 254 diajmp bool 72 jump 000073 255 diainc bool 73 interrupt cs 000074 256 diardc bool 74 read configuration switches 000075 257 diaftc bool 75 data transfer from fnp to cs 000076 258 diactf bool 76 " " " cs to fnp 000077 259 diawrp bool 77 wraparound 260 261 262 777677 263 ntflsn bool /tflisn for turning off listen flag 777757 264 ntfacu bool /tfacu for turning off acu flag 000700 265 lnmask bool 000700 lsla/hsla number in line number 000077 266 submsk bool 000077 subchannel number in line number 001000 267 hslafl bool 001000 hsla bit in line number 400000 268 retry bool 400000 flag for retrying i/o request 200000 269 rejflg bool 200000 flag indicating i/o request has been rejected 100000 270 quitfl bool 100000 flag indicating a quit or hangup is in queue 177777 271 nretry bool /retry*/rejflg 777776 272 ntfwrt bool /tfwrit 777640 273 fatal bool 777640 bits in status word indicating unrecoverable 274 error 000005 275 maxerr equ 5 maximum number of consecutive dia errors assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 44 symbol definitions 000002 276 maxcke equ 2 maximum number of consecutive checksum errors 000030 277 maxchn equ 24 max number of buffers sent to cs by 1 dcw list 278 000002 279 eb.tly equ 2 position in echo buffer of tally (upper 9 bits) 280 000000 281 qtib equ 0 offset from tib entry of tib address 000001 282 qbuf equ 1 offset from tib entry of buffer address 283 000000 284 dtprty equ 0 priority for dtrans 000001 285 gtprty equ 1 priority for dgetwk 000001 286 rtprty equ gtprty priority for dretry 287 288 000017 289 mqmask bool 17 mask for mailbox queue address 000037 290 mnmask bool 37 mask for mailbox number in 3rd word 291 of jump table 292 293 294 parity for dcws 295 040000 296 pupper bool 040000 parity bit for bits 0-17 020000 297 plower bool 020000 parity bit for bits 18-35 717777 298 npbits bool /pupper*/plower both bits off 299 400000 300 absflg bool 400000 flag to indicate absolute addressing 301 302 303 cs mailbox header format 304 (36-bit offsets) 305 000000 306 mh.pcw equ 0 peripheral control word 000001 307 mh.cnt equ mh.pcw+1 mailbox request count 000002 308 mh.tim equ mh.cnt+1 terminate interrupt multiplex word (timw) 000003 309 mh.oct equ mh.tim+1 old request count 000010 310 mh.sub equ mh.pcw+8 submailbox area 000110 311 mh.fsb equ mh.sub+64 start of fnp-controlled submailboxes 312 313 314 cs submailbox 315 (18-bit offsets) 316 000000 317 sm.lno equ 0 line number and fnp number 000001 318 sm.fre equ sm.lno+1 number of free fnp buffers 000002 319 sm.cdl equ sm.fre+1 command data length (in 6-bit chars) 000003 320 sm.op equ sm.cdl+1 opcode and i/o command 000004 321 sm.cd equ sm.op+1 command data (6 18-bit words) 000012 322 sm.adr equ sm.cd+6 cs data address 000013 323 sm.len equ sm.adr+1 data length 000017 324 sm.cks equ sm.len+4 checksum 325 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 45 symbol definitions 326 fields in fnp-controlled submailbox with 327 input-in-mailbox opcode 328 000002 329 sm.ict equ sm.cdl input character count 000004 330 sm.dat equ sm.cd input data 000066 331 sm.fcd equ sm.dat+50 flags with input data 332 333 fields in fnp-controlled submailbox with 334 accept-input opcode 335 000004 336 sm.nbf equ 4 number of buffers in input chain 000006 337 sm.dcw equ 6 start of pseudo-dcw list 338 000144 339 mbxmax equ 2*sm.fcd-2*sm.dat 340 700000 341 sm3msk bool 700000 mask for fnp number 001777 342 smlmsk bool 001777 mask for line number 777000 343 smomsk bool 777000 mask for opcode 000777 344 smcmsk bool 000777 mask for i/o command 345 000020 346 mbxsz equ 16 000070 347 fmbxsz equ 56 size of fnp-controlled mailbox 348 000400 349 ecbits equ 256 number of useful bits in echo negotiation 350 break table 000020 351 ecnlen equ ecbits/16 resulting length in words 352 003000 353 bufinc bool 003000 mask for flags showing amount by which 354 buffer tally has been adjusted 355 000023 356 ttcolt equ 19 line type for colts executive channel 357 000002 358 trmmod equ 2 000003 359 mbxmod equ 3 360 361 362 memory trace types 363 000001 364 mt.trm equ 1 000002 365 mt.mbx equ 2 000003 366 mt.rmb equ 3 000004 367 mt.inq equ 4 000005 368 mt.wcd equ 5 000006 369 mt.ouq equ 6 000007 370 mt.inc equ 7 000010 371 mt.wmb equ 8 000011 372 mt.fre equ 9 000012 373 mt.wtx equ 10 000013 374 mt.rtx equ 11 000014 375 mt.alt equ 12 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 46 symbol definitions 000015 376 mt.acu equ 13 377 378 printer trace switches 379 000002 380 tr.que bool 002 000004 381 tr.mbx bool 004 000010 382 tr.int bool 010 383 000001 384 ct.dev equ 1 offset in control tables of array of 385 device table pointers 000004 386 ct.wru equ 4 offset in control tables of "wru" wait block 000005 387 ct.dly equ 5 offset in control tables of first delay table 000006 388 ct.brk equ 6 offset in control tables of send_break pointer 389 00000 390 dia null 00000 391 start dia,2,c3mcsm0c0000 symdef -.chain crsm save,off 00000 even ine '2','',2 000002 modnum equ 2 00000 000002 0 .chain dec 2 ife '2','',1 crsm restore 00001 243121 0 bci 2,dia 00002 202020 0 00003 0 00000 1 ind dia 00004 000101 0 date 00005 021007 0 ine 'c3mcsm0c0000','',1 00006 230344 0 bci 4,c3mcsm0c0000 00007 236244 0 00010 002300 0 00011 000000 0 392 pmc restore 393 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 47 dterm -- handles terminate interrupts from dia 394 ttls dterm -- handles terminate interrupts from dia 395 396 this entry processes terminate interrupts. 397 it checks the status and if a recoverable 398 error occurred, it restarts the i/o. 399 if the i/o succeeded, it uses the transaction 400 control word (tcword) to see whether to schedule 401 the transaction processor or the "get-work" subroutine. 402 403 00012 404 dterm null 405 406 status should be 000001000000 00012 0 07 126 140 407 lda stat-* high-order word of status 00013 422 001 0 408 icmpa 1 00014 0 64 003 17 409 tnz dte005-* 00015 0 20 124 141 410 szn stat+1-* is low-order word 0? 00016 0 74 041 57 411 tze dte010-* yes, all is well 00017 412 dte005 null 413 00017 0 07 117 136 414 lda errcnt-* no, get error count 00020 0336 01 0 415 als 1 double error count to use as an offset 00021 0332 00 0 416 cax2 00022 0 04 116 140 417 ldaq stat-* store bad status in table 00023 4 14 102 125 418 staq a.a011-*,* (badsts,2) 00024 0 07 112 136 419 lda errcnt-* calc true count 00025 773 001 0 420 iaa 1 00026 0 17 130 156 421 sta bdstct-* number of consecutive io errors in table 422 00027 0 07 112 141 423 lda stat+1-* get right-hand word in a 00030 0 34 102 132 424 ana l.a003-* see if it's one of the restartable ones 00031 0 74 002 33 425 tze 2 00032 426 die 2 it wasn't, die 427 00033 0 07 103 136 428 lda errcnt-* get error count again 00034 422 005 0 429 icmpa maxerr reached maximum? 00035 0 75 002 37 430 tmi 2 00036 431 die 3 yes, that's all for you 432 00037 773 001 0 433 iaa 1 increment count 00040 0 17 076 136 434 sta errcnt-* 00041 473 115 0 435 ilq errmsg queue an error message to tell cs 00042 0 03 057 121 436 ldx2 a.a007-* addr(sterr), command data for error message 00043 4 10 057 122 437 tsy a.a008-*,* derrq 438 00044 439 smeter mincs,.mdias,l.a004-* end of binary card 00000009 440 00053 0 20 061 134 441 szn iopend-* did we have a connect pending? 00054 0 74 002 56 442 tze 2 no, don't reconnect assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 48 dterm -- handles terminate interrupts from dia 00055 4 10 040 115 443 tsy a.a003-*,* (conect) reconnect the i/o 00056 4 71 036 114 444 tra a.a002-*,* return to master dispatcher 445 446 i/o was all right 00057 447 dte010 null 00057 0 56 057 136 448 stz errcnt-* start error count over 00060 0 20 054 134 449 szn iopend-* were we actually expecting something? 00061 4 74 033 114 450 tze a.a002-*,* (mdisp) no, ignore it 00062 0 56 052 134 451 stz iopend-* if we were, we have it now 452 00063 453 trace mt.trm,tr.int,(a.a001-*(*)) 454 00073 4 07 020 113 455 lda a.a001-*,* (tcword) get transaction control word 00074 0 75 004 100 456 tmi dte020-* it had better not be negative 00075 0 74 014 111 457 tze dte040-* if it's zero, nothing to do 00076 422 016 0 458 icmpa tcmax if it's over maximum 00077 0 75 002 101 459 tmi 2 we die 00100 460 dte020 die 4 00101 422 010 0 461 icmpa tcinmb did we write a mailbox with input? 00102 4 74 012 114 462 tze a.a002-*,* (mdisp) yes, don't do anything until we hear 463 more from multics 464 00103 422 013 0 465 icmpa tcreq one of the ones we have to act on? 00104 0 65 004 110 466 tpl dte030-* no, just go unlock 467 yes, schedule transaction processor 00105 0 04 023 130 468 ldaq l.a002-* priority and address of dtrans 00106 4 10 010 116 469 tsy a.a004-*,* dspqur 00107 4 71 005 114 470 tra a.a002-*,* back to master dispatcher 471 00110 472 dte030 null nothing to do, unlock dia and call gate 00110 4 10 007 117 473 tsy a.a005-*,* unlock 00111 474 dte040 null 00111 4 10 007 120 475 tsy a.a006-*,* gate 00112 4 71 002 114 476 tra a.a002-*,* back to master dispatcher 477 478 479 00113 0 01255 1 480 a.a001 ind tcword transaction control word 00114 0 04000 3 481 a.a002 ind mdisp master dispatcher end of binary card 00000010 00115 0 06056 1 482 a.a003 ind conect 00116 0 06400 3 483 a.a004 ind dspqur scheduling routine 00117 0 06040 1 484 a.a005 ind unlock 00120 0 00500 1 485 a.a006 ind gate 00121 0 00137 1 486 a.a007 ind sterr 00122 0 01166 1 487 a.a008 ind derrq 00123 0 05346 1 488 a.a009 ind shinp short input flag 00124 3 00621 1 489 a.a010 ind mbxfre,3 for marking fnp mailboxes free 00125 2 00142 1 490 a.a011 ind badsts,2 index into bad status table 491 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 49 dterm -- handles terminate interrupts from dia 00126 492 even 00126 000001 0 493 l.a001 oct 1,0 good status from dia 00127 000000 0 00130 0 00000 0 494 l.a002 zero dtprty priority and address for 00131 0 01256 1 495 ind dtrans scheduling dtrans 00132 777640 0 496 l.a003 vfd 18/fatal non-restartable dia errors 00133 000001 0 497 l.a004 dec 1 498 499 00134 000001 0 500 iopend dec 1 indicates whether i/o is pending 501 but set to 1 so first call to gate will happen 502 00135 233100 0 00136 503 even 00136 000000 0 504 errcnt oct 0 count of dia i/o errors 00137 000002 0 505 sterr dec 2 command data for reporting dia error 00140 000001 0 506 stat oct 1,0 place where dia status is to go 00141 000000 0 00142 507 badsts bss 12 bad status table 00156 000000 0 508 bdstct oct 0 number of consecutive errors in table 509 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 50 dmail -- handler for mailbox interrupt 510 ttls dmail -- handler for mailbox interrupt 511 512 this entry handles interrupt that comes in when 513 mailbox is read from cs 514 515 it queues the mailbox for later processing 516 00157 517 dmail null get 3rd word of jump table 00157 4 10 231 410 518 tsy a.b001-*,* g3wjt 519 word is in q 00160 0334 13 0 520 lls 11 shift mailbox number into a low 00161 022 037 0 521 iana mnmask mask out rest of word 00162 422 014 0 522 icmpa 12 is it to be read or just freed? 00163 0 75 020 203 523 tmi dma010-* read 00164 4 20 737 123 524 szn a.a009-*,* (shinp) is there short input pending? 00165 0 74 016 203 525 tze dma010-* no, deal with it later 00166 4332 00 0 526 cax1 save mailbox number for trace 00167 773 764 0 527 iaa -12 get mailbox # in range 0-3 00170 4333 00 0 528 cax3 mark it free now 00171 4 07 733 124 529 lda a.a010-*,* mbxfre,3 00172 422 102 0 530 icmpa inmbx is this the one? 00173 0 64 011 204 531 tnz dma012-* no, free mailbox later 532 else do it now 00174 4 56 730 124 533 stz a.a010-*,* mbxfre,3 00175 4 56 726 123 534 stz a.a009-*,* zero the flag now end of binary card 00000011 00176 673 777 0 535 ila -1 and decrement mbx use count 00177 4 16 232 431 536 asa a.b018-*,* mbused 00200 0 04 730 130 537 ldaq l.a002-* scheduling stuff for dtrans 00201 4 10 715 116 538 tsy a.a004-*,* dspqur -- make sure transaction processor runs 00202 0 71 017 221 539 tra dma020-* done 00203 540 dma010 null 00203 4332 00 0 541 cax1 get mailbox no. into x1 00204 0 10 027 233 542 dma012 tsy upmbq-* update the mailbox queue 543 00205 2332 00 0 544 cx1a get mailbox no. again 00206 422 010 0 545 icmpa 8 ours originally? 00207 0 75 012 221 546 tmi dma020-* no, done 00210 773 770 0 547 iaa -8 get it in range 0-3 00211 4333 00 0 548 cax3 yes, look at saved opcode 00212 4 07 712 124 549 lda a.a010-*,* mbxfre,3 00213 422 102 0 550 icmpa inmbx input in mailbox? 00214 0 64 005 221 551 tnz dma020-* no 552 yes, it must have been rejected 00215 4 20 706 123 553 szn a.a009-*,* (shinp) were we working on it now? 00216 0 74 003 221 554 tze dma020-* no, worry about it later 00217 4 56 704 123 555 stz a.a009-*,* yes, clear the flag now 00220 4 10 677 117 556 tsy a.a005-*,* (unlock) make sure mailbox gets read 557 00221 558 dma020 null assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 51 dmail -- handler for mailbox interrupt 00221 559 trace mt.mbx,tr.int,(x1) 00230 4 71 161 411 560 tra a.b002-*,* return to master dispatcher 561 562 563 rpmbx is scheduled to cause reprocessing of a mailbox 564 because of lack of buffer space. to the rest of dia_man, 565 it will appear that an interrupt was received for the 566 mailbox and handled by dmail 567 568 mailbox number is in x1 569 00231 570 rpmbx null 00231 0 10 002 233 571 tsy upmbq-* update mailbox queue 00232 4 71 174 426 572 tra a.b015-*,* return to secondary dispatcher 573 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 52 upmbq -- update mailbox queue 574 ttls upmbq -- update mailbox queue 575 576 mailbox number to be added to queue of mailboxes to be 577 processed is passed in x1 578 00233 579 upmbq subr upm,(inh,x1) 580 end of binary card 00000012 00245 0 03 172 437 581 ldx2 mbqnxa-* get offset of next available slot 00246 4 07 157 425 582 lda a.b014-*,* in mailbox queue 00247 422 777 0 583 icmpa -1 is it free? 00250 0 64 004 254 584 tnz upm010-* it had better be 00251 0 07 165 436 585 lda mbqcnt-* get count, which had better be <16 00252 422 020 0 586 icmpa 16 00253 0 75 002 255 587 tmi upm020-* 00254 588 upm010 die 1 mailbox queue overflowed 589 00255 590 upm020 null 00255 0 76 161 436 591 aos mbqcnt-* increment queue count 00256 4 53 147 425 592 stx1 a.b014-*,* store number in queue entry 593 00257 0 76 160 437 594 aos mbqnxa-* bump "next available" pointer 00260 673 017 0 595 ila mqmask make it mod 16 00261 0 32 156 437 596 ansa mbqnxa-* 597 00262 4 10 130 412 598 tsy a.b003-*,* gate (to schedule dgetwk) 00263 599 return upmbq 600 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 53 rdmbx -- subroutine to read mailbox from cs 601 ttls rdmbx -- subroutine to read mailbox from cs 602 603 this subroutine is called by dgetwk when mailbox 604 queue count is non-zero in order to read a mailbox from 605 the cs. the number of the mailbox is picked up from the 606 "next-to-process" entry of the mailbox queue 607 608 the routine is entered with interrupts inhibited, 609 x1 points to saved copy of indicators for reenabling them 610 00265 611 rdmbx subr rdm,(x2,x3) 612 00276 0 07 140 436 613 lda mbqcnt-* get mailbox queue count 00277 0 64 002 301 614 tnz 2 if it's zero, 00300 615 die 5 we screwed up somehow 616 00301 773 777 0 617 iaa -1 decrement it 00302 0 17 134 436 618 sta mbqcnt-* 00303 0 03 135 440 619 ldx2 mbqnxt-* get pointer to next entry to process 00304 4 47 121 425 620 ldq a.b014-*,* pick up mailbox number 00305 673 777 0 621 ila -1 and mark the entry as free 00306 4 17 117 425 622 sta a.b014-*,* 00307 0 76 131 440 623 aos mbqnxt-* bump the "next-to-process" pointer 00310 673 017 0 624 ila mqmask force it mod 16 00311 0 32 127 440 625 ansa mbqnxt-* 00312 7333 00 0 626 cqa get mailbox number 00313 0 75 003 316 627 tmi rdm010-* make sure it's in range of end of binary card 00000013 00314 422 020 0 628 icmpa 16 0-15 00315 0 75 002 317 629 tmi 2 00316 630 rdm010 die 6 00317 422 014 0 631 icmpa 12 mailbox to be read or just freed? 00320 0 75 014 334 632 tmi rdm020-* read 00321 773 764 0 633 iaa -12 freed, get number to be 0-3 00322 4333 00 0 634 cax3 to use as index to freed words 00323 4 56 104 427 635 stz a.b016-*,* mbxfre,3 00324 673 777 0 636 ila -1 and decrement mbx use count 00325 4 16 104 431 637 asa a.b018-*,* mbused 00326 1 44 000 0 638 ldi 0,1 ****enable interrupts now 00327 673 014 0 639 ila tcfree set tcword to "freed mailbox" 00330 4 17 073 423 640 sta a.b012-*,* tcword 641 00331 4 10 077 430 642 tsy a.b017-*,* unlock 00332 4 10 060 412 643 tsy a.b003-*,* (gate) make sure dgtwrk runs 00333 0 71 053 406 644 tra rdmbak-* done 00334 645 rdm020 null we are to read mailbox 646 save mailbox number 00334 4 17 063 417 647 sta a.b008-*,* mbxno 00335 422 010 0 648 icmpa 8 fnp's or cs's? 00336 0 75 011 347 649 tmi rdm030-* his assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 54 rdmbx -- subroutine to read mailbox from cs 00337 773 770 0 650 iaa -8 ours, make it 0 to 3 00340 651 mpy l.b001-* (fmbxsz/2) get size 00342 573 110 0 652 iaq mh.fsb and correct offset 00343 0 57 072 435 653 stq mbxadr-* 00344 673 034 0 654 ila fmbxsz/2 size again 00345 0 17 066 433 655 sta rdsize-* save it for later 00346 0 71 006 354 656 tra rdm040-* 00347 657 rdm030 null 00347 0336 03 0 658 als 3 multiply mbx no by 8 for addressing 00350 773 010 0 659 iaa mh.sub get full offset in mailbox area 00351 0 17 064 435 660 sta mbxadr-* save it 00352 673 010 0 661 ila 8 get correct size for cs-controlled mailbox 00353 0 17 060 433 662 sta rdsize-* 00354 663 rdm040 null 664 00354 1 44 000 0 665 ldi 0,1 ****enable interrupts 00355 4 56 036 413 666 stz a.b004-*,* count of consecutive checksum errors 667 00356 668 trace mt.rmb,tr.mbx,(a.b008-*(*)) end of binary card 00000014 669 670 now set up dcw list to read the mailbox 671 00366 0 41 026 414 672 ldx3 a.b005-* get address of dcw area 00367 4 07 027 416 673 lda a.b007-*,* (csmbx) get cs mailbox header addr 00370 0 06 045 435 674 ada mbxadr-* add mailbox offset 00371 473 076 0 675 ilq diactf get cs -> fnp opcode 00372 3 14 000 0 676 staq 0,3 677 00373 0 47 040 433 678 ldq rdsize-* tally for reading mailbox 00374 0 07 021 415 679 lda a.b006-* addr(savmbx), w.2 00375 3 14 002 0 680 staq 2,3 681 682 save dcw list address for conect subroutine 00376 4 50 022 420 683 stx3 a.b009-*,* dcwadr 00377 373 004 0 684 iacx3 4 point to next place for dcw 00400 4 10 022 422 685 tsy a.b011-*,* (bdisc) set up disconnect dcw 686 save tally for conect subroutine 00401 673 004 0 687 ila 4 00402 4 17 017 421 688 sta a.b010-*,* dcwlen 689 690 dcws are all set up 691 set transaction control word 692 to "mailbox read" 693 00403 673 003 0 694 ila tcmbxr 00404 4 17 017 423 695 sta a.b012-*,* tcword 696 00405 4 10 017 424 697 tsy a.b013-*,* conect 00406 698 rdmbak return rdmbx assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 55 rdmbx -- subroutine to read mailbox from cs 699 eject 00410 0 02400 3 700 a.b001 ind g3wjt get 3rd word of jump table 00411 0 04000 3 701 a.b002 ind mdisp master dispatcher 00412 0 00500 1 702 a.b003 ind gate 00413 0 01751 1 703 a.b004 ind ckecnt count of consecutive checksum errors 00414 0 06150 1 704 a.b005 ind dcws static dcw list 00415 1 02604 1 705 a.b006 zero savmbx,w.2 fnp's copy of last-read mailbox 00416 0 06650 1 706 a.b007 ind csmbx cs address of mailbox header 00417 0 06555 1 707 a.b008 ind mbxno mailbox number 00420 0 06146 1 708 a.b009 ind dcwadr conect's address of dcw list 00421 0 06147 1 709 a.b010 ind dcwlen conect's dcw tally 00422 0 06004 1 710 a.b011 ind bdisc subroutine to build a disconnect dcw 00423 0 01255 1 711 a.b012 ind tcword transaction control word 00424 0 06056 1 712 a.b013 ind conect subroutine to connect to dia 00425 2 00460 1 713 a.b014 ind mbqhed,2 for accessing mailbox queue entries 00426 0 17000 3 714 a.b015 ind secdsp secondary dispatcher 00427 3 00621 1 715 a.b016 ind mbxfre,3 00430 0 06040 1 716 a.b017 ind unlock end of binary card 00000015 00431 0 00625 1 717 a.b018 ind mbused 718 719 00432 0 00034 0 720 l.b001 zero fmbxsz/2 721 722 00433 723 rdsize bss 1 size of this mailbox in 36-bit words 00434 724 dmsvi bss 1 place to save indicators 00435 725 mbxadr bss 1 offset for cs address of mailbox 00436 000000 0 726 mbqcnt oct 0 mailbox queue count 00437 000000 0 727 mbqnxa oct 0 next available entry in mailbox queue 00440 000000 0 728 mbqnxt oct 0 next entry in mailbox queue to process 729 730 00441 071017 0 00460 731 base 16 732 mailbox queue 00460 777777 0 733 mbqhed dec -1,-1,-1,-1,-1,-1,-1,-1 00461 777777 0 00462 777777 0 00463 777777 0 00464 777777 0 00465 777777 0 00466 777777 0 00467 777777 0 00470 777777 0 734 dec -1,-1,-1,-1,-1,-1,-1,-1 00471 777777 0 00472 777777 0 00473 777777 0 00474 777777 0 00475 777777 0 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 56 rdmbx -- subroutine to read mailbox from cs 00476 777777 0 00477 777777 0 735 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 57 gate -- subroutine to schedule dgetwk 736 ttls gate -- subroutine to schedule dgetwk 737 738 subroutine called when a task is completed to make 739 sure that dgetwk gets scheduled. dgetwk will figure 740 out if there's more work to do 741 742 if dgetwk is already scheduled, we won't bother 743 00500 744 gate subr gat,(inh,a,q) 745 00515 0 20 111 626 746 szn gqued-* see if it's already queued end of binary card 00000016 00516 0 64 004 522 747 tnz gatbak-* it is, just return 748 00517 0 76 107 626 749 aos gqued-* else mark it queued now 00520 0 04 076 616 750 ldaq l.c001-* get dgetwk's priority and address 00521 4 10 050 571 751 tsy a.c001-*,* (dspqur) and schedule it 752 00522 753 gatbak return gate 754 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 58 dgetwk -- reads or requests a mailbox 755 ttls dgetwk -- reads or requests a mailbox 756 757 this routine is scheduled by gate to find out 758 if there's anything to do 759 (more mailboxes to read or request) 760 761 if the dia lock is locked we will do nothing 762 763 00524 764 dgetwk null 00524 0 54 103 627 765 sti dgsvi-* hold on to indicators 00525 3331 00 0 766 inh ****inhibit interrupts 767 00526 768 smeter mupdat,.mimbx,mbused-* good time to update this 769 00535 0 56 071 626 770 stz gqued-* turn off "dgetwk queued" flag 00536 4 20 034 572 771 szn a.c002-*,* (=dilock) is dia already locked? 00537 0 64 030 567 772 tnz dgebak-* if it is, return 00540 4 10 033 573 773 tsy a.c003-*,* (=lock) else, lock it 774 00541 4 20 043 604 775 szn a.c014-*,* (mbqcnt) any mailboxes waiting to be read? 00542 0 74 004 546 776 tze dge005-* no, don't bother 00543 0 43 043 606 777 ldx1 a.c016-* (dgsvi) get address of where indicators are store 00544 4 10 041 605 778 tsy a.c015-*,* (rdmbx) go read the mailbox 00545 4 71 043 610 779 tra a.c018-*,* and return to secondary dispatcher 780 00546 0 20 052 620 781 dge005 szn qcnt-* anything in the queue? 00547 0 74 017 566 782 tze dge030-* no, nothing to do 00550 0 41 041 611 783 ldx3 a.c019-* addr (mbxfre) 00551 673 774 0 784 ila -4 check if any are free 00552 3 20 000 0 785 dge010 szn 0,3 this one? 00553 0 74 005 560 786 tze dge020-* yes 00554 773 001 0 787 iaa 1 no, are there more? 00555 0 74 011 566 788 tze dge030-* no, we'll have to deal with it later 00556 373 001 0 789 iacx3 1 look at next 00557 0 71 773 552 790 tra dge010-* 791 00560 0 76 045 625 792 dge020 aos mbused-* keep count of mailboxes in use 00561 773 014 0 793 iaa 12 make it in range 8-11 00562 4 17 030 612 794 sta a.c020-*,* mbxno 00563 0 41 031 614 795 ldx3 a.c022-* addr (savmbx) 00564 4 10 027 613 796 tsy a.c021-*,* filmbx end of binary card 00000017 00565 0 71 002 567 797 tra dgebak-* all done 798 if we come here, nothing to do 00566 799 dge030 null so just clear dia lock and return 00566 4 10 021 607 800 tsy a.c017-*,* unlock 801 00567 802 dgebak null 00567 0 44 040 627 803 ldi dgsvi-* ****restore indicators (to enable) assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 59 dgetwk -- reads or requests a mailbox 00570 4 71 020 610 804 tra a.c018-*,* return to secondary dispatcher 805 806 807 00571 0 06400 3 808 a.c001 ind dspqur scheduling routine 00572 0 06055 1 809 a.c002 ind dilock dia lock 00573 0 06022 1 810 a.c003 ind lock locking subroutine 00574 0 01255 1 811 a.c004 ind tcword transaction control word 00575 0 06150 1 812 a.c006 ind dcws static area for building dcw list 00576 0 06146 1 813 a.c007 ind dcwadr address of dcw list (for conect) 00577 0 06147 1 814 a.c008 ind dcwlen length of dcw list (36-bit words) 815 *a.c009 unused 00600 0 06650 1 816 a.c010 ind csmbx cs mailbox header address 00601 0 05772 1 817 a.c011 ind bint subroutine to build interrupt dcw 00602 0 06004 1 818 a.c012 ind bdisc subroutine to build disconnect dcw 00603 0 06056 1 819 a.c013 ind conect subroutine to do connect to dia 00604 0 00436 1 820 a.c014 ind mbqcnt mailbox queue count 00605 0 00265 1 821 a.c015 ind rdmbx subroutine to read a mailbox from cs 00606 0 00627 1 822 a.c016 ind dgsvi saved indicators (to pass to rdmbx) 00607 0 06040 1 823 a.c017 ind unlock unlocking subroutine 00610 0 17000 3 824 a.c018 ind secdsp secondary dispatcher 00611 0 00621 1 825 a.c019 ind mbxfre 00612 0 06555 1 826 a.c020 ind mbxno 00613 0 03536 1 827 a.c021 ind filmbx 00614 0 02604 1 828 a.c022 ind savmbx mailbox save area 829 00615 004000 0 830 l.c002 oct 004000 for masking overflow 00616 831 even 00616 0 00001 0 832 l.c001 zero gtprty priority and address 00617 0 00524 1 833 ind dgetwk for scheduling dgetwk 834 00620 835 even 00620 000000 0 836 qcnt oct 0 00621 837 mbxfre bss 4 words marked to show fnp mailboxes in use 00625 000000 0 838 mbused oct 0 number of inbound mailboxes now in use 00626 000000 0 839 gqued oct 0 "dgetwk is queued" flag 00627 840 dgsvi bss 1 place to save indicators 841 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 60 denq -- subroutine to add entry to dia i/o queue 842 ttls denq -- subroutine to add entry to dia i/o queue 843 844 this subroutine is called from outside dia_man 845 to queue a request for dia i/o. 846 847 separate queues are maintained for each 848 line; a list of tibs and queue pointers is maintained 849 for finding the queue for each line. 850 851 we will update the mailbox request count as long as 852 there are no "accept input" requests already 853 on the queue for this line; but there may never be more 854 than one mailbox request outstanding for an "accept input" 855 opcode for any line. 856 857 if a quit or a hangup is queued, and there is a 858 rejected "accept input" at the head of 859 the queue, all accept inputs are cleansed from the queue 860 to ensure that the quit or hangup gets sent. 861 862 at entry: 863 864 q: opcode to be put in mailbox 865 x1: virtual tib address 866 867 the opcode is stored in queue element 868 869 queue consists of chained buffers, each pointing 870 to next buffer 871 elements are processed first in, first out 872 00630 873 denq subr den,(a,q,x2,x3) end of binary card 00000018 00647 0 56 167 1036 874 stz noai-* initialize 00650 1 07 004 0 875 lda t.line,1 save line number for trace 00651 4 17 274 1145 876 sta a.d013-*,* (curqln) 00652 2332 00 0 877 cx1a need real tib address in a 00653 1 03 030 0 878 ldx2 t.sfcm,1 assume this is an hsla tib 00654 2 03 015 0 879 ldx2 sf.hsl,2 get hsla table entry for this channel 00655 2 07 001 0 880 lda ht.tib,2 this is the real tib address 881 00656 882 den010 null 00656 4 10 260 1136 883 tsy a.d006-*,* getque 884 address of this tib's entry in list is in x2 00657 0 07 765 644 885 lda densq-* is this to mask the line? 00660 422 103 0 886 icmpa linmsk 00661 0 64 020 701 887 tnz den030-* no, proceed normally 00662 473 000 0 888 ilq 0 initialize q decrement 00663 4 10 254 1137 889 tsy a.d007-*,* (getqai) any accept inputs in queue? 00664 0 71 006 672 890 tra den020-* no, queue linmsk now assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 61 denq -- subroutine to add entry to dia i/o queue 00665 2 07 000 0 891 lda 0,2 yes, look at first one 00666 0 34 272 1160 892 ana l.d009-* (retry+rejflg) see if it's active 00667 0 27 272 1161 893 cmpa l.d010-* (retry only) 00670 0 74 143 1033 894 tze denbak-* it is, do the rest when it finishes 00671 473 001 0 895 ilq 1 otherwise, it's counted in the queue 00672 4 10 241 1133 896 den020 tsy a.d001-*,* (qmask) empty the queue and add linmsk 00673 4 46 250 1143 897 adq a.d011-*,* (nnonai) now have total number removed 00674 0 57 270 1164 898 stq dendec-* that had been counted in qcnt 00675 4 07 244 1141 899 lda a.d009-*,* (qcnt) 00676 0 26 266 1164 900 sba dendec-* decrement the count accordingly 00677 4 17 242 1141 901 sta a.d009-*,* 00700 0 71 133 1033 902 tra denbak-* finished now 903 00701 4 10 236 1137 904 den030 tsy a.d007-*,* (getqai) find first accept input in queue 00702 0 71 002 704 905 tra den060-* none, so must update request count 00703 0 71 004 707 906 tra den070-* adding entry after a previous accept input 907 so no need to update request count 908 00704 909 den060 null add one to queue entry count 00704 0 76 132 1036 910 aos noai-* there's no accept input now 00705 4 76 234 1141 911 aos a.d009-*,* (qcnt) end of binary card 00000019 00706 4 10 226 1134 912 tsy a.d003-*,* (gate) make sure dgetwk gets scheduled 913 to process queue 00707 0 03 736 645 914 den070 ldx2 densx2-* get pointer to data 00710 0 47 734 644 915 ldq densq-* and origional opcode 00711 4 10 231 1142 916 tsy a.d010-*,* (adqent) update queue 917 00712 7333 00 0 918 cqa get opcode in a 00713 422 112 0 919 icmpa accin is opcode "accept input"? 00714 0 64 101 1015 920 tnz den140-* 00715 673 001 0 921 ila 1 get double-precision 1 00716 2335 22 0 922 lrl 18 00717 0 20 117 1036 923 szn noai-* first accept input for this line? 00720 0 64 004 724 924 tnz den080-* yes 00721 0 15 117 1040 925 adaq prevai-* no, meter presence of previous one 00722 0 14 116 1040 926 staq prevai-* 00723 0 71 003 726 927 tra den090-* 00724 0 15 116 1042 928 den080 adaq nprvai-* meter addition of accept input without one alread 00725 0 14 115 1042 929 staq nprvai-* 00726 1 47 005 0 930 den090 ldq t.icp,1 get pointer to head of chain 00727 0 64 002 731 931 tnz 2 (which must exist) 00730 932 die 19 933 00731 1 07 027 0 934 lda t.dlst,1 get last buffer of previous chain 00732 0 74 005 737 935 tze den120-* if any 00733 4 10 213 1146 936 tsy a.d014-*,* setbpt 00734 4333 00 0 937 cax3 get virtual address 938 hook new chain onto 00735 3 57 000 0 939 stq bf.nxt,3 previous one assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 62 denq -- subroutine to add entry to dia i/o queue 00736 0 71 002 740 940 tra den130-* 00737 941 den120 null 942 no old chain, set up new chain pointer 00737 1 57 026 0 943 stq t.dcp,1 00740 944 den130 null 00740 7333 00 0 945 cqa get t.icp back 00741 4 10 205 1146 946 den131 tsy a.d014-*,* (setbpt) convert it 00742 4333 00 0 947 cax3 00743 0 56 072 1035 948 stz denbuf-* init buffer count 00744 0 56 221 1165 949 stz accum-* start counter 00745 3 07 001 0 950 den132 lda bf.siz,3 count the number of 32-word blocks 00746 2337 17 0 951 arl 15 get size code in low-order 3 bits 00747 773 001 0 952 iaa 1 00750 1 16 041 0 953 asa t.dcpl,1 save length of t.dcp chain 00751 3 20 000 0 954 szn bf.nxt,3 is this last buffer in chain? 00752 0 74 026 1000 955 tze den135-* yes, go mark it 00753 3 07 001 0 956 lda bf.flg,3 is this the end of a message? 00754 0 31 174 1150 957 cana l.d001-* =bfflst end of binary card 00000020 00755 0 64 020 775 958 tnz den133-* yes, break chain here 00756 3 07 001 0 959 lda bf.tly,3 no, increment running tally 00757 0 34 177 1156 960 ana l.d007-* =buftmk 00760 0 06 205 1165 961 ada accum-* new result 00761 0 27 176 1157 962 cmpa l.d008-* more than max chain length? 00762 0 65 013 775 963 tpl den133-* yes 00763 0 17 202 1165 964 sta accum-* no, save new running tally 00764 0 07 051 1035 965 lda denbuf-* get buffer count 00765 773 001 0 966 iaa 1 increment 00766 422 030 0 967 icmpa maxchn more than max number of buffers ? 00767 0 65 006 775 968 tpl den133-* yes 00770 0 17 045 1035 969 sta denbuf-* save new buffer count 00771 3 07 000 0 970 lda bf.nxt,3 and check next 00772 4 10 154 1146 971 tsy a.d014-*,* setbpt 00773 4333 00 0 972 cax3 00774 0 71 751 745 973 tra den132-* 974 00775 0 03 650 645 975 den133 ldx2 densx2-* put another accept input in queue 00776 0 47 646 644 976 ldq densq-* 00777 4 10 143 1142 977 tsy a.d010-*,* (=adqent) 978 01000 0 07 150 1150 979 den135 lda l.d001-* =bfflst 01001 3 72 001 0 980 orsa bf.flg,3 mark buffer as last in request 01002 3 07 000 0 981 lda bf.nxt,3 are there more? 01003 0 64 736 741 982 tnz den131-* yes, start counting again 01004 3333 00 0 983 cx3a get absolute address to save 01005 4 10 142 1147 984 tsy a.d015-*,* cvabs 01006 1 17 027 0 985 sta t.dlst,1 else mark end of chain 986 01007 1 56 005 0 987 stz t.icp,1 zero out tib fields so lsla_man or 01010 1 56 006 0 988 stz t.ilst,1 hsla_man can start new chain assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 63 denq -- subroutine to add entry to dia i/o queue 01011 1 56 007 0 989 stz t.icpl,1 01012 0 07 151 1163 990 lda l.d012-* tfinq 01013 1 72 036 0 991 orsa t.flg3,1 inproc may add characters to t.dcp chain 01014 0 71 017 1033 992 tra denbak-* all done 993 01015 994 den140 null is it quit or hangup? 01015 422 113 0 995 icmpa brkcon check for quit 01016 0 74 003 1021 996 tze den150-* yup 01017 422 101 0 997 icmpa lindis no, check for hangup 01020 0 64 013 1033 998 tnz denbak-* none of above, we're all done 01021 999 den150 null we must cleanse any accept inputs from the queue 01021 1 56 042 0 1000 stz t.scll,1 turn off echo negotiation 01022 4 10 115 1137 1001 tsy a.d007-*,* (getqai) are there any? 01023 0 71 010 1033 1002 tra denbak-* no, forget it end of binary card 00000021 01024 2 07 000 0 1003 lda 0,2 yes, has it been rejected? 01025 0 31 127 1154 1004 cana l.d005-* =rejflg 01026 0 64 004 1032 1005 tnz den160-* 01027 0 37 126 1155 1006 ora l.d006-* (=quitfl) if not, mark there's a quit 01030 2 17 000 0 1007 sta 0,2 behind it in case it does get rejected 01031 0 71 002 1033 1008 tra denbak-* 1009 01032 1010 den160 null cleanse the queue 01032 4 10 106 1140 1011 tsy a.d008-*,* cleanq 1012 01033 1013 denbak return denq 1014 01035 1015 denbuf bss 1 01036 1016 noai bss 1 01037 233100 0 01040 1017 even 01040 1018 prevai bss 2 count of accept inputs when one already 1019 present for the same channel 01042 1020 nprvai bss 2 count of accept inputs added to queue 1021 without one already present assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 64 deque -- remove an accept input from an i/o queue 1022 ttls deque -- remove an accept input from an i/o queue 1023 1024 the first item in the relevant line's i/o queue 1025 must be an "accept input"; it will be removed from the 1026 queue, and the mailbox request count will be updated 1027 1028 x1: virtual tib address 1029 01044 1030 deque subr deq,(a,q,x1,x2,x3) 1031 01066 4 07 146 1234 1032 lda a.n001-*,* (tibadr) get real tib address 01067 4 10 047 1136 1033 tsy a.d006-*,* (getque) 1034 x2 -> tib table entry 01070 4 10 047 1137 1035 tsy a.d007-*,* (=getqai) find first accept input 01071 1036 die 16 none is fatal 01072 4 20 051 1143 1037 szn a.d011-*,* (=nnonai) be sure no other entries before accin 01073 0 74 002 1075 1038 tze 2 ok 01074 1039 die 16 1040 01075 4 10 047 1144 1041 tsy a.d012-*,* (dlqent) free accept input entry 1042 01076 1 07 036 0 1043 lda t.flg3,1 is the channel masked? 01077 0 31 063 1162 1044 cana l.d011-* tfmask end of binary card 00000022 01100 0 74 003 1103 1045 tze deq005-* no, proceed 01101 4 10 032 1133 1046 tsy a.d001-*,* (qmask) now is the time to empty the queue 01102 0 71 013 1115 1047 tra deqbak-* that's it 1048 01103 4 10 034 1137 1049 deq005 tsy a.d007-*,* (=getqai) find first accin in new queue 01104 0 71 005 1111 1050 tra deq010-* none 01105 0 07 056 1163 1051 lda l.d012-* tfinq 01106 1 72 036 0 1052 orsa t.flg3,1 it's okay to add to existing t.dcp chain 01107 673 001 0 1053 ila 1 must add 1 to req cnt for accin 01110 0 71 002 1112 1054 tra 2 01111 673 000 0 1055 deq010 ila 0 01112 4 06 031 1143 1056 ada a.d011-*,* (=nnonai) add in entries before accin 01113 0 74 002 1115 1057 tze deqbak-* no requests in queue, return 01114 4 16 025 1141 1058 asa a.d009-*,* qcnt 1059 01115 1060 deqbak null all done 01115 1061 return deque assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 65 dretry -- scheduled to retry accept input 1062 ttls dretry -- scheduled to retry accept input 1063 1064 this entry is scheduled if an attempt to send 1065 input to the cs was rejected for lack of 1066 buffer space. it turns off the "rejected" flag 1067 in the first "accept input" entry for the tib 1068 pointed to by x1, and puts out a request for one mailbox 1069 1070 if there is no rejected request queued for this 1071 line, we will do nothing 1072 1073 x1 - real tib address 1074 01117 1075 dretry null 1076 01117 2332 00 0 1077 cx1a need real tib address in a 01120 4 10 016 1136 1078 tsy a.d006-*,* getque 01121 4 10 016 1137 1079 tsy a.d007-*,* (=getqai) find first accept input 01122 0 71 010 1132 1080 tra drebak-* none, return 01123 2 07 000 0 1081 lda 0,2 pick up queue entry 01124 0 31 030 1154 1082 cana l.d005-* (=rejflg) has it been rejected? 01125 0 74 005 1132 1083 tze drebak-* no, queue must have been cleaned 1084 we have one 01126 0 07 025 1153 1085 lda l.d004-* =nretry 01127 2 32 000 0 1086 ansa 0,2 zero "retry" flag 01130 4 76 011 1141 1087 aos a.d009-*,* (qcnt) add one to count of queue entries 01131 4 10 003 1134 1088 tsy a.d003-*,* (gate) schedule dgetwk 01132 4 71 003 1135 1089 drebak tra a.d005-*,* return to secondary dispatcher 1090 1091 01133 0 06657 1 1092 a.d001 ind qmask subr that clears queue and adds linmsk 01134 0 00500 1 1093 a.d003 ind gate 01135 0 17000 3 1094 a.d005 ind secdsp secondary dispatcher 01136 0 05016 1 1095 a.d006 ind getque subroutine to find entry in tib queue list 01137 0 07167 1 1096 a.d007 ind getqai subr thats finds first accin in queue 01140 0 05072 1 1097 a.d008 ind cleanq cleans accept inputs out of queue 01141 0 00620 1 1098 a.d009 ind qcnt count of pending queue entries 01142 0 06732 1 1099 a.d010 ind adqent subr that adds entry to end of queue 01143 0 06731 1 1100 a.d011 ind nnonai counter set by getqai subr that indicates 1101 the number of entries before the first accin 01144 0 07072 1 1102 a.d012 ind dlqent subr that deletes entry from the queue 01145 0 06730 1 1103 a.d013 ind curqln line number for trace 01146 0 17400 3 1104 a.d014 ind setbpt end of binary card 00000023 01147 0 02000 3 1105 a.d015 ind cvabs 1106 1107 01150 040000 0 1108 l.d001 vfd 18/bfflst 01151 000037 0 1109 l.d002 oct 37 for checking 0 mod 32 01152 004000 0 1110 l.d003 oct 004000 inhibit overflow indicator assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 66 dretry -- scheduled to retry accept input 01153 177777 0 1111 l.d004 vfd 18/nretry 01154 200000 0 1112 l.d005 vfd 18/rejflg 01155 100000 0 1113 l.d006 vfd 18/quitfl 01156 000777 0 1114 l.d007 vfd 18/buftmk 01157 004000 0 1115 l.d008 dec 2048 arbitrary maximum chain length 01160 600000 0 1116 l.d009 vfd o18/retry+rejflg 01161 400000 0 1117 l.d010 vfd 18/retry 01162 020000 0 1118 l.d011 vfd 18/tfmask 01163 040000 0 1119 l.d012 vfd 18/tfinq 1120 1121 01164 1122 dendec bss 1 amount by which to decrement qcnt if masking 01165 1123 accum bss 1 running length of chain in characters 1124 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 67 derrq -- subroutine to add entry to error message queue 1125 ttls derrq -- subroutine to add entry to error message queue 1126 1127 this subroutine adds an entry to a special i/o 1128 queue for error messages. each entry contains an 1129 opcode and 4 words (72 bits) of command data to be 1130 passed to the cs 1131 queue is allocated in buffers of which second word is zero, 1132 leaving room for 6 five-word entries 1133 1134 because this routine can be called at interrupt 1135 time, it must save and restore the variables used 1136 to describe the current request queue 1137 1138 at entry: 1139 1140 q: opcode 1141 x2: address of command data 1142 01166 1143 derrq subr der,(inh,a,q,x2,x3) 1144 01211 4 07 027 1240 1145 lda a.n005-*,* =curque 01212 4 47 733 1145 1146 ldq a.d013-*,* =curqln 01213 0 14 037 1252 1147 staq tcurq-* save these in temporary 01214 4 07 030 1244 1148 lda a.n009-*,* =curqbf 01215 0 17 037 1254 1149 sta tcurbf-* this too 1150 01216 4 56 727 1145 1151 stz a.d013-*,* =curqln, zero line number 01217 0 07 020 1237 1152 lda a.n004-* get address of simulated tib table entry 01220 4 17 020 1240 1153 sta a.n005-*,* (curque) 1154 end of binary card 00000024 01221 0 47 765 1206 1155 ldq dersq-* restore opcode to q 01222 0 46 024 1246 1156 adq l.n002-* (=004000) indicate 4 words of data 01223 4 10 717 1142 1157 tsy a.d010-*,* (adqent) add entry to error queue 01224 4 76 011 1235 1158 aos a.n002-*,* qcnt 1159 now restore common values 01225 0 04 025 1252 1160 ldaq tcurq-* 01226 4 17 012 1240 1161 sta a.n005-*,* =curque 01227 4 57 716 1145 1162 stq a.d013-*,* =curqln 01230 0 07 024 1254 1163 lda tcurbf-* 01231 4 17 013 1244 1164 sta a.n009-*,* =curqbf 01232 1165 return derrq 1166 1167 01234 0 02365 1 1168 a.n001 ind tibadr 01235 0 00620 1 1169 a.n002 ind qcnt 01236 0 10400 3 1170 a.n003 ind fremem 01237 0 01247 1 1171 a.n004 ind errqtb 01240 0 06726 1 1172 a.n005 ind curque 01241 0 02371 1 1173 a.n006 ind pchbuf assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 68 derrq -- subroutine to add entry to error message queue 01242 0 02372 1 1174 a.n007 ind pchadr 01243 0 02373 1 1175 a.n008 ind pchlen 01244 0 06727 1 1176 a.n009 ind curqbf 01245 0 01255 1 1177 a.n010 ind tcword 1178 01246 004000 0 1179 l.n002 oct 004000 1180 1181 * the following two words simuulate a tib table entry for 1182 * the dia error queue. the first word corresponds to the 1183 * tib address word, but is not used here. the second word 1184 * points to the first buffer in the queue. 1185 01247 000000 0 1186 errqtb oct 0 01250 000000 0 1187 errqbf oct 0 01251 233100 0 01252 1188 even 01252 1189 tcurq bss 1 temporary for saving curque 01253 1190 tcurln bss 1 likewise for curqln 01254 1191 tcurbf bss 1 likewise for curqbf 1192 01255 000000 0 1193 tcword oct 0 transaction control word assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 69 dtrans -- transaction processor 1194 ttls dtrans -- transaction processor 1195 1196 this subroutine is scheduled after dia i/o is finished 1197 in order to process the results of the i/o 1198 1199 the transaction control word (tcword) 1200 indicates what was just done 1201 1202 dia lock is locked at entry 1203 01256 1204 dtrans null 01256 4 07 767 1245 1205 lda a.n010-*,* (tcword) get transaction control word 01257 0 74 161 1440 1206 tze dtr100-* do nothing if it's zero 01260 422 013 0 1207 icmpa tcreq is its value one that requires action? 01261 0 65 157 1440 1208 tpl dtr100-* no, go away 1209 01262 4 07 752 1234 1210 lda a.n001-*,* (tibadr) get real address of relevant tib 01263 4 10 347 1632 1211 tsy a.e019-*,* (setptw) virtualize it 01264 4332 00 0 1212 cax1 need it in x1 1213 01265 0 07 770 1255 1214 lda tcword-* get tcword back in a 01266 422 001 0 1215 icmpa tcdcwl did we read dcw list? 01267 0 64 007 1276 1216 tnz dtr010-* if not, try something else 1217 if so, set up dcw list to read the data 01270 4 10 321 1611 1218 tsy a.e001-*,* (rddata) end of binary card 00000025 01271 0 71 163 1454 1219 tra dtr200-* error return (buffer allocation failed) 01272 673 002 0 1220 ila tcdata reset transaction control word 01273 0 17 762 1255 1221 sta tcword-* to "read data" 01274 4 10 316 1612 1222 tsy a.e002-*,* (conect) do the connect 01275 4 71 316 1613 1223 tra a.e003-*,* return to secondary dispatcher 1224 01276 1225 dtr010 null 01276 422 002 0 1226 icmpa tcdata did we read data? 01277 0 64 012 1311 1227 tnz dtr050-* if not, try something else 01300 0 56 374 1674 1228 stz bflag-* indicate not blast write 01301 0 10 161 1462 1229 tsy write-* set up chains and notify control tables 1230 1231 01302 0 20 374 1676 1232 szn sndflg-* immediate send output response? 01303 0 74 133 1436 1233 tze dtr090-* no, just free mailbox and return 01304 0 41 342 1646 1234 ldx3 a.e033-* addr (savmbx) 01305 3 76 004 0 1235 aos sm.cd,3 turn on send output flag in mbx 01306 3333 00 0 1236 cx3a 01307 4 10 340 1647 1237 tsy a.e034-*,* (wmbx) write mailbox back 01310 4 71 303 1613 1238 tra a.e003-*,* (secdsp) and done 1239 01311 1240 dtr050 null 01311 422 003 0 1241 icmpa tcmbxr did we read a mailbox? 01312 0 64 003 1315 1242 tnz dtr060-* assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 70 dtrans -- transaction processor 01313 4 10 312 1625 1243 tsy a.e014-*,* (decmbx) yes, go decode it 01314 4 71 277 1613 1244 tra a.e003-*,* that's all 1245 01315 1246 dtr060 null 01315 422 005 0 1247 icmpa tcblst did we read blast message? 01316 0 64 044 1362 1248 tnz dtr080-* 01317 0 41 353 1672 1249 ldx3 blbuf-* yes, get buffer address 1250 01320 373 100 0 1251 iacx3 2*bufsiz save address of second buffer 01321 0 50 352 1673 1252 stx3 blbuf2-* 01322 0 76 352 1674 1253 aos bflag-* so write will know this is blast 1254 01323 4 03 320 1643 1255 ldx2 a.e029-*,* .crttb 1256 start scanning all tibs 01324 1257 dtr065 null 01324 2 07 000 0 1258 lda qtib,2 this is the real tib address 01325 4 10 305 1632 1259 tsy a.e019-*,* (setptw) virtualize it 01326 4332 00 0 1260 cax1 put in x1 01327 1 07 000 0 1261 lda t.stat,1 find out if it's dialed up 01330 0 34 335 1665 1262 ana l.e010-* tsfcd+tsfdsr 01331 0 27 334 1665 1263 cmpa l.e010-* carrier and dsr both on? 01332 0 64 021 1353 1264 tnz dtr075-* not dialed up, look at next 1265 01333 1 07 017 0 1266 lda t.type,1 get line type 01334 422 010 0 1267 icmpa 8 tn1200 on 202c? 01335 0 74 012 1347 1268 tze dtr070-* yes, treat like ascii 01336 422 005 0 1269 icmpa 5 regular terminal type (1-4)? 01337 0 65 014 1353 1270 tpl dtr075-* no, look at next tib end of binary card 00000026 01340 422 002 0 1271 icmpa 2 is it ibm-type? 01341 0 74 003 1344 1272 tze dtr068-* it's 1050 01342 422 003 0 1273 icmpa 3 if not, 2741? 01343 0 64 004 1347 1274 tnz dtr070-* no 01344 0 41 327 1673 1275 dtr068 ldx3 blbuf2-* yes, point to ebcdic buffer 01345 673 001 0 1276 ila 1 set ebcdic indicator 01346 0 71 003 1351 1277 tra dtr072-* 1278 01347 0 41 323 1672 1279 dtr070 ldx3 blbuf-* ascii, point to ascii buffer 01350 673 000 0 1280 ila 0 set ascii indicator 01351 0 10 326 1677 1281 dtr072 tsy gblast-* allocate output buffers 01352 0 10 110 1462 1282 tsy write-* update output chain, tell control tables 1283 01353 273 002 0 1284 dtr075 iacx2 2 look at next entry in tib list 01354 4 23 270 1644 1285 cmpx2 a.e030-*,* (.crtte) reached end? 01355 0 64 747 1324 1286 tnz dtr065-* no, look at next tib 01356 473 300 0 1287 ilq 6*bufsiz yes, free message buffers 01357 0 41 313 1672 1288 ldx3 blbuf-* 01360 4 10 256 1636 1289 tsy a.e024-*,* (frebuf) 1290 01361 0 71 055 1436 1291 tra dtr090-* free mailbox and return assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 71 dtrans -- transaction processor 1292 01362 422 006 0 1293 dtr080 icmpa tcpchm patching memory? 01363 0 64 012 1375 1294 tnz dtr084-* no 01364 4 03 655 1241 1295 ldx2 a.n006-*,* (pchbuf) yes. address of buffer 01365 4 41 655 1242 1296 ldx3 a.n007-*,* (pchadr) address to patch 01366 4 47 655 1243 1297 ldq a.n008-*,* (pchlen) length of patch 01367 4 10 242 1631 1298 tsy a.e018-*,* (mvpgtg) move the patch into place 01370 1299 dtr083 null release buffer 01370 4 41 651 1241 1300 ldx3 a.n006-*,* (pchbuf) memory space to free 01371 4 47 652 1243 1301 ldq a.n008-*,* (pchlen) length of memory space 01372 4 10 644 1236 1302 tsy a.n003-*,* (fremem) 01373 4 10 225 1620 1303 tsy a.e009-*,* (gate) make sure dgetwk runs 01374 0 71 044 1440 1304 tra dtr100-* and done 1305 01375 422 007 0 1306 dtr084 icmpa tcdmpm dumping memory? 01376 0 74 772 1370 1307 tze dtr083-* yes. release temp memory space 1308 01377 422 010 0 1309 dtr085 icmpa tcinmb wrote data in mailbox? 01400 0 64 030 1430 1310 tnz dtr089-* no 01401 1 07 026 0 1311 lda t.dcp,1 yes, must take buffers off chain now 01402 1 41 026 0 1312 ldx3 t.dcp,1 for call to frelbf 01403 0 56 272 1675 1313 stz dnblks-* initialize count 01404 4 10 246 1652 1314 dtr086 tsy a.e037-*,* setbpt 01405 0332 00 0 1315 cax2 get virutal address in x2 01406 2 07 001 0 1316 lda bf.siz,2 get buffer size end of binary card 00000027 01407 2337 17 0 1317 arl 15 in 32-word blocks 01410 773 001 0 1318 iaa 1 01411 0 16 264 1675 1319 asa dnblks-* update count 01412 2 07 001 0 1320 lda bf.flg,2 this the last one? 01413 0 31 244 1657 1321 cana l.e005-* bfflst 01414 0 64 003 1417 1322 tnz dtr088-* yes 01415 2 07 000 0 1323 lda bf.nxt,2 look at next 01416 0 64 766 1404 1324 tnz dtr086-* 01417 0 47 256 1675 1325 dtr088 ldq dnblks-* get block count 01420 4 10 210 1630 1326 tsy a.e017-*,* (instrp) take them off t.dcp chain 01421 3333 00 0 1327 cx3a 01422 4 10 173 1615 1328 tsy a.e005-*,* (frelbf) 01423 4 10 204 1627 1329 tsy a.e016-*,* (deque) remove accin from queue now 01424 673 014 0 1330 ila tcfree set transaction control word to indicate 01425 0 17 630 1255 1331 sta tcword-* end of transaction 01426 4 10 172 1620 1332 tsy a.e009-*,* (gate) make sure dgetwk runs 01427 0 71 011 1440 1333 tra dtr100-* done with transaction 1334 01430 422 011 0 1335 dtr089 icmpa tcmetr sent metering info? 01431 0 64 011 1442 1336 tnz dtr110-* 01432 4 41 216 1650 1337 ldx3 a.e035-*,* (gmebuf) get address of temporary buffer 01433 4 47 216 1651 1338 ldq a.e036-*,* (gmesiz) 01434 4 10 602 1236 1339 tsy a.n003-*,* (fremem) we're through with it now 01435 0 71 001 1436 1340 tra dtr090-* free mailbox and return assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 72 dtrans -- transaction processor 1341 01436 1342 dtr090 null free mailbox and return 01436 4 10 166 1624 1343 tsy a.e013-*,* frembx 01437 4 71 154 1613 1344 tra a.e003-*,* and return to secondary dispatcher 1345 01440 1346 dtr100 null nothing to do, unlock dia lock 01440 4 10 175 1635 1347 tsy a.e023-*,* unlock 01441 4 71 152 1613 1348 tra a.e003-*,* return to secondary dispatcher 1349 01442 422 012 0 1350 dtr110 icmpa tcrecn did we read echo negotiation table? 01443 0 64 004 1447 1351 tnz dtr150-* no 01444 0 03 167 1633 1352 ldx2 a.e020-* (addr (pdcws)) point to the table 01445 4 10 167 1634 1353 tsy a.e021-*,* makecn 01446 0 71 770 1436 1354 tra dtr090-* free mailbox and return 1355 01447 1356 dtr150 null by default, we wrote data to cs 1357 free buffer chain that was sent 01447 4 07 157 1626 1358 lda a.e015-*,* oldhed 01450 4 10 145 1615 1359 tsy a.e005-*,* frelbf 01451 4 10 156 1627 1360 tsy a.e016-*,* (deque) remove accin from queue now 01452 4 10 146 1620 1361 tsy a.e009-*,* (gate) make sure dgetwk runs 01453 0 71 765 1440 1362 tra dtr100-* unlock & return 1363 1364 01454 1365 dtr200 null attempt to allocate output buffers failed 1366 we will schedule rpmbx to reprocess the 1367 mailbox after 6 seconds 01454 4 43 165 1641 1368 ldx1 a.e027-*,* mbxno 01455 0 04 205 1662 1369 ldaq l.e008-* time, priority, and address of rpmbx end of binary card 00000028 01456 4 10 164 1642 1370 tsy a.e028-*,* dspqur 01457 673 016 0 1371 ila tcmax set transaction control word to illegal value 01460 0 17 575 1255 1372 sta tcword-* 01461 0 71 757 1440 1373 tra dtr100-* assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 73 write -- subroutine to set up for sending output 1374 ttls write -- subroutine to set up for sending output 01462 1375 write subr wri,(x2) 01470 0 56 206 1676 1376 stz sndflg-* 01471 1 07 036 0 1377 lda t.flg3,1 is this for a line that's been masked? 01472 0 31 176 1670 1378 cana l.e013-* tfmask 01473 0 74 006 1501 1379 tze wri003-* no, proceed 01474 0 20 200 1674 1380 szn bflag-* for blast message? 01475 0 64 112 1607 1381 tnz wribak-* yes, done 01476 4 07 120 1616 1382 lda a.e007-*,* (rhead) else free the buffer chain now 01477 4 10 116 1615 1383 tsy a.e005-*,* (frelbf) since we certainly can't use it 01500 0 71 107 1607 1384 tra wribak-* 1385 01501 0 07 152 1653 1386 wri003 lda l.e001-* =tfwrit 01502 1 31 001 0 1387 cana t.flg,1 output in progress? 01503 0 74 014 1517 1388 tze wri005-* no, check t.ocp chain 01504 1 07 002 0 1389 lda t.flg2,1 else see if it's in block acknowledge 01505 0 34 157 1664 1390 ana l.e009-* =tfblak+tfofc 01506 0 27 156 1664 1391 cmpa l.e009-* both on? 01507 0 74 010 1517 1392 tze wri005-* yes, don't chain to t.ocur 01510 1 07 025 0 1393 lda t.echo,1 else check if there's pending echoing 01511 0 74 034 1545 1394 tze wri040-* obviously not, chain new stuff on 01512 4 10 140 1652 1395 tsy a.e037-*,* setbpt 01513 0332 00 0 1396 cax2 01514 2 07 002 0 1397 lda eb.tly,2 there's an echo buffer, anything in it? 01515 2337 11 0 1398 arl 9 isolate tally 01516 0 74 027 1545 1399 tze wri040-* no, chain new stuff on 01517 1400 wri005 null else check current chain pointer 01517 1 07 012 0 1401 lda t.ocp,1 load the pointer 01520 0 64 004 1524 1402 tnz wri010-* already there, must chain on here too 1403 none, just set ptr 01521 4 07 075 1616 1404 lda a.e007-*,* =rhead (set by rddata) 01522 1 17 012 0 1405 sta t.ocp,1 new output chain 01523 0 71 020 1543 1406 tra wri030-* skip out 1407 end of binary card 00000029 01524 4 10 126 1652 1408 wri010 tsy a.e037-*,* setbpt 01525 0332 00 0 1409 cax2 01526 2 20 000 0 1410 szn bf.nxt,2 any forward ptr this block? 01527 0 74 003 1532 1411 tze wri020-* no, chain in here 01530 2 07 000 0 1412 lda bf.nxt,2 chain to next block 01531 0 71 773 1524 1413 tra wri010-* loop 1414 01532 1415 wri020 null 01532 1416 cmeter mincs,m.over,l.e012-* 1417 01541 4 07 055 1616 1418 lda a.e007-*,* (=rhead) get head of new chain 01542 2 17 000 0 1419 sta bf.nxt,2 reset forward ptr in block 1420 01543 1421 wri030 null call "write" entry of control table interpreter 01543 4 10 056 1621 1422 tsy a.e010-*,* iwrite assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 74 write -- subroutine to set up for sending output 01544 0 71 043 1607 1423 tra wribak-* 1424 01545 1425 wri040 null write is in progress 01545 1 20 013 0 1426 szn t.ocur,1 make sure there's a real live chain 01546 0 64 002 1550 1427 tnz 2 01547 1428 die 20 there had better be 1429 01550 1430 cmeter mincs,m.over,l.e012-* 1431 hook new output chain onto active chain 01557 1 07 014 0 1432 lda t.olst,1 get old last buffer 01560 4 10 072 1652 1433 tsy a.e037-*,* setbpt 01561 0332 00 0 1434 cax2 01562 4 07 034 1616 1435 lda a.e007-*,* =rhead (head of new data) 01563 2 17 000 0 1436 sta bf.nxt,2 attach new chain 01564 4 07 033 1617 1437 lda a.e008-*,* =rtail 01565 1 17 014 0 1438 sta t.olst,1 update "last buffer" 1439 update output chain buffer count 01566 4 07 051 1637 1440 lda a.e025-*,* ndcws (same as number of new buffers) 01567 1 16 016 0 1441 asa t.ocnt,1 01570 0 20 104 1674 1442 szn bflag-* is this for blast? 01571 0 64 005 1576 1443 tnz wri050-* yes, don't check for threshold 01572 673 002 0 1444 ila bufthr is count over threshold now? end of binary card 00000030 01573 1 27 016 0 1445 cmpa t.ocnt,1 01574 0 75 002 1576 1446 tmi wri050-* yes, it's all right 01575 0 76 101 1676 1447 aos sndflg-* no, ask for more output 1448 01576 1449 wri050 null 01576 1 07 017 0 1450 lda t.type,1 is this colts executive channel? 01577 422 023 0 1451 icmpa ttcolt 01600 0 74 007 1607 1452 tze wribak-* yes, don't call anybody 01601 1 07 004 0 1453 lda t.line,1 get line number to find out if it's 1454 hsla or lsla 01602 0 31 052 1654 1455 cana l.e002-* =hslafl 1456 call relevant "output available" entry 01603 0 64 003 1606 1457 tnz wri060-* 01604 4 10 016 1622 1458 tsy a.e011-*,* loutav 01605 0 71 002 1607 1459 tra wribak-* 01606 4 10 015 1623 1460 wri060 tsy a.e012-*,* houtav 01607 1461 wribak return write assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 75 storage for dtrans and write 1462 ttls storage for dtrans and write 1463 01611 0 05607 1 1464 a.e001 ind rddata subroutine to set up dcw lists to read data 01612 0 06056 1 1465 a.e002 ind conect 01613 0 17000 3 1466 a.e003 ind secdsp secondary dispatcher 01614 0 06146 1 1467 a.e004 ind dcwadr address of last-used dcw list 01615 0 10000 3 1468 a.e005 ind frelbf subroutine to free a linked list of input buffers 01616 0 05726 1 1469 a.e007 ind rhead head of buffer chain allocated by rddata 01617 0 05727 1 1470 a.e008 ind rtail tail " " " " " " 01620 0 00500 1 1471 a.e009 ind gate 01621 0 14400 3 1472 a.e010 ind iwrite 01622 0 15000 3 1473 a.e011 ind loutav lsla "output available" subroutine 01623 0 13400 3 1474 a.e012 ind houtav hsla " " " 01624 0 06433 1 1475 a.e013 ind frembx 01625 0 01752 1 1476 a.e014 ind decmbx 01626 0 05547 1 1477 a.e015 ind oldhed old head of input chain just sent 01627 0 01044 1 1478 a.e016 ind deque 01630 0 05514 1 1479 a.e017 ind instrp 01631 0 16400 3 1480 a.e018 ind mvpgtg move data paging target subroutine 01632 0 20000 3 1481 a.e019 ind setptw set page table word 01633 0 05732 1 1482 a.e020 ind pdcws 01634 0 04475 1 1483 a.e021 ind makecn 01635 0 06040 1 1484 a.e023 ind unlock 01636 0 07000 3 1485 a.e024 ind frebfh subroutine to free a single buffer 01637 0 05725 1 1486 a.e025 ind ndcws same as number of buffers read in 01640 0 00630 1 1487 a.e026 ind denq 01641 0 06555 1 1488 a.e027 ind mbxno end of binary card 00000031 01642 0 06400 3 1489 a.e028 ind dspqur 01643 0 00665 0 1490 a.e029 ind .crttb head of tib list 01644 0 00666 0 1491 a.e030 ind .crtte end of tib list 01645 0 11000 3 1492 a.e032 ind getbfh 01646 0 02604 1 1493 a.e033 ind savmbx 01647 0 06330 1 1494 a.e034 ind wmbx 01650 0 04247 1 1495 a.e035 ind gmebuf 01651 0 04250 1 1496 a.e036 ind gmesiz 01652 0 17400 3 1497 a.e037 ind setbpt 1498 1499 01653 000001 0 1500 l.e001 vfd 18/tfwrit 01654 001000 0 1501 l.e002 vfd 18/hslafl 01655 000037 0 1502 l.e003 oct 37 for testing 0 mod 32 01656 004000 0 1503 l.e004 oct 004000 inhibit overflow indicator 01657 040000 0 1504 l.e005 vfd 18/bfflst 01660 777776 0 1505 l.e007 vfd 18/ntfwrt 01661 233100 0 01662 1506 even 01662 000101 0 1507 l.e008 vfd 12/1,6/rtprty 01663 0 00231 1 1508 ind rpmbx for scheduling rpmbx after 1 second 1509 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 76 storage for dtrans and write 01664 004100 0 1510 l.e009 vfd 18/tfblak+tfofc 01665 000005 0 1511 l.e010 vfd 18/tsfcd+tsfdsr 01666 000004 0 1512 l.e011 vfd 18/gbfbla "blast" flag (for utilities) 01667 000001 0 1513 l.e012 dec 1 for meter increment 01670 020000 0 1514 l.e013 vfd 18/tfmask 1515 1516 01671 1517 dtrsvi bss 1 for saving indicators 1518 blast buffers are three consecutive 1519 double-size buffers 1520 first is ascii, second is ebcdic, 1521 third is correspondence 01672 1522 blbuf bss 1 address of blast buffers 01673 1523 blbuf2 bss 1 address of ebcdic blast buffers 01674 1524 bflag bss 1 flag indicating blast call 01675 1525 dnblks bss 1 number of 32-word blocks to take off chain assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 77 gblast -- subroutine to allocate buffers for blast output 1526 ttls gblast -- subroutine to allocate buffers for blast output 01676 1527 sndflg bss 1 1528 1529 this subroutine allocates the buffer(s) to be use 1530 to send a blast message to a particular line 1531 one double-size buffer is sent to ascii lines, 1532 or two to ebcdic lines. 1533 1534 the message is copied into the allocated buffers 1535 1536 inputs: 1537 x3 points to source for message 1538 a is 0 for ascii or 1 for ebcdic 1539 01677 1540 gblast subr gbl,(x2) 1541 01705 0 17 037 1744 1542 sta tflag-* save arguments 01706 0 50 037 1745 1543 stx3 gsrce-* 1544 01707 473 100 0 1545 ilq 2*bufsiz get double buffer size 01710 0 20 034 1744 1546 szn tflag-* ebcdic? 01711 0 74 002 1713 1547 tze 2 no 01712 4336 01 0 1548 qls 1 yes, double it again 01713 4 10 732 1645 1549 tsy a.e032-*,* getbuf 01714 1550 die 10 if we can't get buffers, forget it end of binary card 00000032 1551 01715 0 17 031 1746 1552 sta gtarg-* store absolute target address 01716 0 50 031 1747 1553 stx3 vtarg-* and virtual also 01717 0 03 026 1745 1554 ldx2 gsrce-* 01720 0 57 030 1750 1555 stq gsize-* 01721 2 04 000 0 1556 gbl010 ldaq 0,2 get two words of source 01722 3 14 000 0 1557 staq 0,3 put them in target buffer 01723 273 002 0 1558 iacx2 2 01724 373 002 0 1559 iacx3 2 01725 673 776 0 1560 ila -2 reduce count 01726 0 16 022 1750 1561 asa gsize-* 01727 0 64 772 1721 1562 tnz gbl010-* not exhausted, go around again 1563 01730 0 07 016 1746 1564 lda gtarg-* get address of head buffer 01731 4 17 665 1616 1565 sta a.e007-*,* (rhead) where write will look for it 01732 0 41 015 1747 1566 ldx3 vtarg-* get virtual address back 01733 0 20 011 1744 1567 szn tflag-* ascii or ebcdic? 01734 0 74 004 1740 1568 tze gbl020-* ascii 01735 773 100 0 1569 iaa 2*bufsiz ebcdic, set forward pointer 01736 3 17 000 0 1570 sta bf.nxt,3 01737 0 71 002 1741 1571 tra 2 01740 3 56 000 0 1572 gbl020 stz bf.nxt,3 ascii, only one buffer 01741 4 17 656 1617 1573 sta a.e008-*,* (rtail) 01742 1574 return gblast assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 78 gblast -- subroutine to allocate buffers for blast output 1575 1576 01744 1577 tflag bss 1 ascii/ebcdic flag 01745 1578 gsrce bss 1 address of source characters 01746 1579 gtarg bss 1 address of target buffer 01747 1580 vtarg bss 1 virtual address of target buffer 01750 1581 gsize bss 1 size of target buffer 1582 01751 000000 0 1583 ckecnt oct 0 consecutive checksum error count assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 79 decmbx -- routine to decode a mailbox from the cs 1584 ttls decmbx -- routine to decode a mailbox from the cs 1585 1586 this routine is called if transaction control word 1587 indicates that a mailbox has been read from the cs. 1588 it will interpret the mailbox that has been read into 1589 "savmbx" and take appropriate action depending on the 1590 i/o command and opcode in the mailbox 1591 1592 01752 1593 decmbx subr dec 01755 0 41 337 2314 1594 ldx3 a.f018-* =addr(savmbx) 01756 3 07 000 0 1595 lda sm.lno,3 get line number from mailbox 01757 0 34 363 2342 1596 ana l.f001-* =smlmsk 01760 0 64 003 1763 1597 tnz dec005-* there's really a line number 01761 4 56 332 2313 1598 stz a.f017-*,* (tibadr) use 0 01762 0 71 004 1766 1599 tra dec010-* there's a 0 in the a for x1 01763 1600 dec005 null convert to tib address 01763 4 10 313 2276 1601 tsy a.f003-*,* gettib 01764 4 17 327 2313 1602 sta a.f017-*,* (tibadr) save real tib address 01765 4 10 645 1632 1603 tsy a.e019-*,* (setptw) virtualize it end of binary card 00000033 01766 4332 00 0 1604 dec010 cax1 x1 gets virtual tib address 1605 pick up i/o command 01767 3 47 003 0 1606 ldq sm.op,3 get i/o command and opcode 01770 673 000 0 1607 ila 0 01771 0334 11 0 1608 lls 9 01772 0 17 374 2366 1609 sta opcode-* save opcode 1610 01773 673 000 0 1611 ila 0 01774 0334 11 0 1612 lls 9 get i/o command into a 01775 422 003 0 1613 icmpa wcd write command data? 01776 0 64 376 2374 1614 tnz dec210-* no, check for something else 1615 yes, search wcd table to determine 1616 where to go 01777 1617 trace mt.wcd,tr.mbx,(a.f023-*(*),opcode,sm.lno(3)) 1618 02015 0 03 262 2277 1619 ldx2 a.f004-* (wcdtab) 02016 0 07 350 2366 1620 lda opcode-* 02017 1621 dec015 null 02017 2 27 000 0 1622 cmpa 0,2 check opcode against table entry 02020 6 74 001 0 1623 tze 1,2* if it matches, go where table says 02021 273 002 0 1624 iacx2 2 else check next entry 02022 4 23 300 2322 1625 cmpx2 a.f025-*,* (wcdend) reached end? 02023 0 64 774 2017 1626 tnz dec015-* no, look at next entry 02024 1627 die 8 else invalid 1628 1629 02025 1630 dec020 null terminal accepted 02025 0 20 340 2365 1631 szn tibadr-* is this line really configured? 02026 0 74 207 2235 1632 tze dec100-* if not, forget it assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 80 decmbx -- routine to decode a mailbox from the cs 02027 473 105 0 1633 ilq sndout queue "send output" 02030 4 10 250 2300 1634 tsy a.f005-*,* denq 02031 0 71 204 2235 1635 tra dec100-* 1636 02032 1637 dec030 null disconnect line 02032 0 20 333 2365 1638 szn tibadr-* is there a tib? 02033 0 74 202 2235 1639 tze dec100-* no, don't try to do anything 02034 0 07 307 2343 1640 lda l.f002-* (tfhang) 02035 1 72 001 0 1641 orsa t.flg,1 hang it up end of binary card 00000034 02036 0 07 306 2344 1642 lda l.f003-* (ntflsn) 02037 1 32 001 0 1643 ansa t.flg,1 turn off listen flag 1644 call test-state entry of interpreter 02040 4 10 241 2301 1645 tsy a.f006-*,* (itest) 02041 0 71 174 2235 1646 tra dec100-* 1647 02042 1648 dec040 null disconnect all lines 02042 0 07 303 2345 1649 lda l.f004-* (gbfhng) turn on "hung up" flag 02043 4 72 237 2302 1650 orsa a.f007-*,* globsw 1651 now hang up all dialed-up lines 02044 4 03 244 2310 1652 ldx2 a.f013-*,* (.crttb) 1653 02045 1654 dec045 null 02045 2 07 000 0 1655 lda qtib,2 get real tib address 02046 4 10 564 1632 1656 tsy a.e019-*,* (setptw) virtualize it 02047 4332 00 0 1657 cax1 put virtual tib address in x1 02050 0 07 273 2343 1658 lda l.f002-* (tfhang) 02051 1 72 001 0 1659 orsa t.flg,1 set hangup flag in tib 02052 4 10 227 2301 1660 tsy a.f006-*,* (itest) 1661 02053 273 002 0 1662 iacx2 2 look at next entry in tib list 02054 4 23 261 2335 1663 cmpx2 a.f039-*,* (.crtte) reached end? 02055 0 64 770 2045 1664 tnz dec045-* no, go around again 02056 0 71 157 2235 1665 tra dec100-* 1666 02057 1667 dec046 null don't accept calls 02057 0 07 267 2346 1668 lda l.f005-* (gbfup) 02060 322 777 0 1669 iera -1 complement it 02061 4 32 221 2302 1670 ansa a.f007-*,* (globsw) turn it off 02062 0 71 153 2235 1671 tra dec100-* that's all 1672 02063 1673 dec050 null accept calls 1674 turn global "cs up" switch on 02063 0 07 263 2346 1675 lda l.f005-* (gbfup) 02064 4 72 216 2302 1676 orsa a.f007-*,* (globsw) 02065 3 07 004 0 1677 lda sm.cd,3 get buffer limit for input 02066 4 17 237 2325 1678 sta a.f029-*,* (blimit) save for future use 1679 now call itest for all lines in case they need to 1680 start listening again 02067 4 03 221 2310 1681 ldx2 a.f013-*,* .crttb assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 81 decmbx -- routine to decode a mailbox from the cs 02070 2 07 000 0 1682 dec054 lda qtib,2 get tib address 02071 0 74 004 2075 1683 tze dec055-* none, skip it 02072 4 10 540 1632 1684 tsy a.e019-*,* setptw 02073 4332 00 0 1685 cax1 now have virtual tib address 02074 4 10 205 2301 1686 tsy a.f006-*,* itest 02075 273 002 0 1687 dec055 iacx2 2 next entry in tib list 02076 4 23 237 2335 1688 cmpx2 a.f039-*,* (.crtte) reached the end? 02077 0 64 771 2070 1689 tnz dec054-* no, do the next one 02100 0 71 135 2235 1690 tra dec100-* 1691 02101 1692 dec060 null reject request 1693 i.e. cs didn't have room for input 1694 we will schedule retry routine to retry 1695 "accept input" one second from now 02101 4 10 202 2303 1696 tsy a.f008-*,* reject 02102 0 71 133 2235 1697 tra dec100-* 1698 02103 1699 dec065 null enter receive mode 02103 0 20 262 2365 1700 szn tibadr-* not if no line 02104 0 74 131 2235 1701 tze dec100-* end of binary card 00000035 02105 0 07 253 2360 1702 lda l.f015-* (tfercv) 02106 1 72 002 0 1703 orsa t.flg2,1 turn on flag (in second word) 02107 4 10 172 2301 1704 tsy a.f006-*,* (itest) tell interpreter 02110 0 71 125 2235 1705 tra dec100-* done 1706 02111 1707 dec070 null terminal rejected 02111 0 20 254 2365 1708 szn tibadr-* don't try to hang up nonexistent line 02112 0 74 123 2235 1709 tze dec100-* 02113 0 07 230 2343 1710 lda l.f002-* (tfhang) 02114 1 72 001 0 1711 orsa t.flg,1 hang it up, tell interpreter 02115 4 10 164 2301 1712 tsy a.f006-*,* (itest) 02116 0 71 117 2235 1713 tra dec100-* done 1714 02117 1715 dec075 null set line type 02117 0 20 246 2365 1716 szn tibadr-* if no line, skip it 02120 0 74 115 2235 1717 tze dec100-* 02121 3 07 004 0 1718 lda sm.cd,3 get new type 02122 1 17 017 0 1719 sta t.type,1 set it in tib 02123 0 71 112 2235 1720 tra dec100-* that's all 1721 02124 1722 dec080 null checksum error 02124 673 000 0 1723 ila 0 rewrite same mailbox as last time 02125 4 10 160 2305 1724 tsy a.f010-*,* wmbx 02126 4 71 175 2323 1725 tra a.f026-*,* (decbak) return now 1726 02127 1727 dec085 null blast message 02127 4 10 207 2336 1728 tsy a.f040-*,* (rblast) sets up dcw to read msg 02130 673 005 0 1729 ila tcblst set transaction control word 02131 4 17 165 2316 1730 sta a.f021-*,* (tcword) assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 82 decmbx -- routine to decode a mailbox from the cs 02132 4 10 143 2275 1731 tsy a.f002-*,* (conect) 02133 4 71 170 2323 1732 tra a.f026-*,* (decbak) 1733 02134 1734 dec090 null alter parameters, done by subroutine 02134 0 20 231 2365 1735 szn tibadr-* but not if there's no line 02135 0 74 100 2235 1736 tze dec100-* 02136 4 10 146 2304 1737 tsy a.f009-*,* (alterp) 02137 0 71 076 2235 1738 tra dec100-* done 1739 02140 1740 dec095 null dial out request 02140 0 20 225 2365 1741 szn tibadr-* but not if there's no line 02141 0 74 074 2235 1742 tze dec100-* 02142 4 10 164 2326 1743 tsy a.f032-*,* (acusr) done by subroutine 02143 0 71 072 2235 1744 tra dec100-* 1745 02144 1746 dec096 null dump memory 02144 0 50 223 2367 1747 stx3 dctemp-* save mailbox address 02145 3 47 007 0 1748 ldq sm.cd+3,3 get length of area to dump 02146 0 57 225 2373 1749 stq pchlen-* so memory space can be freed later 02147 4 10 140 2307 1750 tsy a.f012-*,* (getmem) get equal amount of memory space 02150 1751 die 10 failed 02151 0 50 220 2371 1752 stx3 pchbuf-* save address of buffer 02152 0 41 215 2367 1753 ldx3 dctemp-* retrieve mailbox address 1754 copy memory to dump into buffer, it may come 1755 from upper 32k 02153 3 03 006 0 1756 ldx2 sm.cd+2,3 get source address end of binary card 00000036 02154 3 47 007 0 1757 ldq sm.cd+3,3 get length of memory to be dumped 02155 0 41 214 2371 1758 ldx3 pchbuf-* get address of target 02156 4 10 133 2311 1759 tsy a.f014-*,* (mvpgsc) move data paging source 1760 02157 0 41 210 2367 1761 ldx3 dctemp-* retrieve mailbox address 02160 0 07 211 2371 1762 lda pchbuf-* put buffer address in mailbox 02161 3 17 006 0 1763 sta sm.cd+2,3 02162 673 007 0 1764 ila tcdmpm set tcword for dump_fnp order 02163 4 17 133 2316 1765 sta a.f021-*,* (tcword) 02164 473 075 0 1766 ilq diaftc we'll be writing to cs 02165 0 71 020 2205 1767 tra dec098-* enter common code with patch_fnp order 1768 02166 1769 dec097 null patch memory 02166 0 50 201 2367 1770 stx3 dctemp-* save mailbox addr 02167 3 47 007 0 1771 ldq sm.cd+3,3 get length of area to patch 02170 4 10 117 2307 1772 tsy a.f012-*,* (getmem) get equal amount of memory space 02171 1773 die 10 failed 02172 0 50 177 2371 1774 stx3 pchbuf-* save address of patch buffer 02173 3333 00 0 1775 cx3a 02174 0 41 173 2367 1776 ldx3 dctemp-* get mailbox addr back 02175 3 47 006 0 1777 ldq sm.cd+2,3 fnp address to patch 02176 0 57 174 2372 1778 stq pchadr-* save 02177 3 17 006 0 1779 sta sm.cd+2,3 setup transfer to temp buffer assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 83 decmbx -- routine to decode a mailbox from the cs 02200 3 47 007 0 1780 ldq sm.cd+3,3 get length in words 02201 0 57 172 2373 1781 stq pchlen-* and save 02202 673 006 0 1782 ila tcpchm set tcword for patch_fnp order 02203 4 17 113 2316 1783 sta a.f021-*,* (tcword) 02204 473 076 0 1784 ilq diactf we'll be reading from cs 02205 0 03 122 2327 1785 dec098 ldx2 a.f033-* (dcws) 02206 4 13 122 2330 1786 stx2 a.f034-*,* (dcwadr) 02207 673 012 0 1787 ila 10 space for five dcws 02210 4 17 121 2331 1788 sta a.f035-*,* (dcwlen) 1789 get cs address 02211 3 07 005 0 1790 lda sm.cd+1,3 bottom 18 bits anyway 02212 2 14 000 0 1791 staq 0,2 store along with opcode (set above) 02213 3 07 004 0 1792 lda sm.cd,3 high-order 6 bits of cs address? 02214 0 74 003 2217 1793 tze dec099-* not there 02215 0336 06 0 1794 als 6 yes, put in dcw (24-29) 02216 2 72 001 0 1795 orsa 1,2 1796 02217 1797 dec099 null 02217 3 04 006 0 1798 ldaq sm.cd+2,3 get fnp address and tally 02220 0 37 141 2361 1799 ora l.f016-* (0,w.2) 02221 573 001 0 1800 iaq 1 convert tally to 36-bit words 02222 4337 01 0 1801 qrs 1 end of binary card 00000037 02223 2 14 002 0 1802 staq 2,2 put them in dcw 02224 3332 00 0 1803 cx2a get dcw address 02225 773 004 0 1804 iaa 4 updated 02226 4333 00 0 1805 cax3 into x3 1806 free the mailbox (can't use frembx because 1807 it assumes a new dcw list) 02227 4 10 103 2332 1808 tsy a.f036-*,* (wtimw) 02230 4 10 103 2333 1809 tsy a.f037-*,* (bint) 02231 373 004 0 1810 iacx3 4 02232 4 10 102 2334 1811 tsy a.f038-*,* (bdisc) 02233 4 10 042 2275 1812 tsy a.f002-*,* (conect) 02234 4 71 067 2323 1813 tra a.f026-*,* (decbak) done 1814 02235 1815 dec100 null through with wcd, free the mailbox 02235 4 10 051 2306 1816 tsy a.f011-*,* (frembx) 02236 4 71 065 2323 1817 tra a.f026-*,* (decbak) and return 1818 02237 1819 dec101 null msgsiz 02237 1 07 004 0 1820 lda t.line,1 find out if hsla line 02240 0 31 110 2350 1821 cana l.f007-* hslafl 02241 0 74 774 2235 1822 tze dec100-* it isn't, ignore this mailbox 02242 1 03 030 0 1823 ldx2 t.sfcm,1 get sfcm address 02243 3 07 004 0 1824 lda sm.cd,3 get new message size 02244 2 17 020 0 1825 sta sf.mms,2 save it 02245 0 71 770 2235 1826 tra dec100-* done 1827 02246 1828 dec105 null fnp_break order assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 84 decmbx -- routine to decode a mailbox from the cs 02246 4 10 071 2337 1829 tsy a.f041-*,* (=brkptr) subr to do break point request 02247 0 71 766 2235 1830 tra dec100-* done 1831 02250 0 50 120 2370 1832 dec106 stx3 lctlmb-* line_control - save mbx addr 02251 4 10 030 2301 1833 tsy a.f006-*,* make test state call 02252 0 56 116 2370 1834 stz lctlmb-* this means line_control done 02253 0 71 762 2235 1835 tra dec100-* 1836 02254 1837 dec107 null set_delay 02254 0 20 111 2365 1838 szn tibadr-* any line? 02255 0 74 760 2235 1839 tze dec100-* not really 02256 3333 00 0 1840 cx3a get pointer to 02257 773 004 0 1841 iaa sm.cd command data 02260 0332 00 0 1842 cax2 into x2 02261 4 10 057 2340 1843 tsy a.f044-*,* makdly 02262 0 71 753 2235 1844 tra dec100-* 1845 02263 1846 dec300 null set framing chars 02263 0 20 102 2365 1847 szn tibadr-* forget it if no line 02264 0 74 751 2235 1848 tze dec100-* 02265 3 07 004 0 1849 lda sm.cd,3 get the characters 02266 1 17 040 0 1850 sta t.frmc,1 save in tib 02267 1 07 004 0 1851 lda t.line,1 02270 0 31 060 2350 1852 cana l.f007-* =hslafl 02271 0 74 744 2235 1853 tze dec100-* not hsla line, don't bother end of binary card 00000038 02272 4 10 047 2341 1854 tsy a.f048-*,* =hmode 02273 0 71 742 2235 1855 tra dec100-* 1856 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 85 decmbx -- routine to decode a mailbox from the cs 1857 eject 02274 0 04124 1 1858 a.f001 ind gmeter sets up dcw list to report meters 02275 0 06056 1 1859 a.f002 ind conect 02276 0 12400 3 1860 a.f003 ind gettib translates line number to tib 02277 0 02674 1 1861 a.f004 ind wcdtab branch table for wcd opcodes 02300 0 00630 1 1862 a.f005 ind denq 02301 0 03400 3 1863 a.f006 ind itest interpreter's "test_state" entry 02302 0 13000 3 1864 a.f007 ind globsw global switch word 02303 0 05033 1 1865 a.f008 ind reject 02304 0 03006 1 1866 a.f009 ind alterp subroutine for "alter parameters" 02305 0 06330 1 1867 a.f010 ind wmbx 02306 0 06433 1 1868 a.f011 ind frembx 02307 0 12000 3 1869 a.f012 ind getmem 02310 0 00665 0 1870 a.f013 ind .crttb head of tib list 02311 0 16000 3 1871 a.f014 ind mvpgsc move data paging source subroutine 02312 0 04545 1 1872 a.f015 ind ecgifl echo negotiation input flush 1873 *a.f016 unused 02313 0 02365 1 1874 a.f017 ind tibadr some places can't quite reach it 02314 0 02604 1 1875 a.f018 ind savmbx 02315 0 05555 1 1876 a.f019 ind rddcw 02316 0 01255 1 1877 a.f021 ind tcword transaction control word 02317 0 05401 1 1878 a.f022 ind indata subroutine to set up dcws for sending 1879 input to cs 02320 0 06555 1 1880 a.f023 ind mbxno 02321 0 00704 0 1881 a.f024 ind .crmet 02322 0 02770 1 1882 a.f025 ind wcdend 02323 0 02457 1 1883 a.f026 ind decbak return from this routine 02324 0 17400 3 1884 a.f027 ind setbpt 02325 0 05552 1 1885 a.f029 ind blimit 1886 *a.f030 unused 1887 02326 0 04612 1 1888 a.f032 ind acusr for starting acu 02327 0 06150 1 1889 a.f033 ind dcws standard dcw area 02330 0 06146 1 1890 a.f034 ind dcwadr 02331 0 06147 1 1891 a.f035 ind dcwlen 02332 0 06501 1 1892 a.f036 ind wtimw updates timw 02333 0 05772 1 1893 a.f037 ind bint builds interrupt dcw 02334 0 06004 1 1894 a.f038 ind bdisc builds disconnect dcw 02335 0 00666 0 1895 a.f039 ind .crtte end of tib list 02336 0 04557 1 1896 a.f040 ind rblast 02337 0 06000 3 1897 a.f041 ind brkptr break point request handler 1898 *a.f042 unused 1899 *a.f043 unused 02340 0 04252 1 1900 a.f044 ind makdly 1901 *a.f045 unused 1902 *a.f046 unused 1903 *a.f047 unused end of binary card 00000039 02341 0 03000 3 1904 a.f048 ind hmode subr that handles mode change for hsla lines 1905 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 86 decmbx -- routine to decode a mailbox from the cs 1906 02342 001777 0 1907 l.f001 vfd 18/smlmsk 02343 000040 0 1908 l.f002 vfd 18/tfhang 02344 777677 0 1909 l.f003 vfd 18/ntflsn 02345 000002 0 1910 l.f004 vfd 18/gbfhng 02346 000001 0 1911 l.f005 vfd 18/gbfup 02347 004100 0 1912 l.f006 vfd 18/tfblak+tfofc 02350 001000 0 1913 l.f007 vfd 18/hslafl 02351 000700 0 1914 l.f008 vfd 18/lnmask 02352 177777 0 1915 l.f009 vfd 18/nretry 02353 000002 0 1916 l.f010 vfd 18/tfitim 02354 004000 0 1917 l.f011 vfd 18/tfblak 02355 777775 0 1918 l.f012 vfd o18//tfitim 02356 000400 0 1919 l.f013 vfd 18/tfctrl 02357 773777 0 1920 l.f014 vfd o18//tfblak 02360 000004 0 1921 l.f015 vfd 18/tfercv 02361 1 00000 0 1922 l.f016 zero 0,w.2 02362 000100 0 1923 l.f017 vfd 18/tfofc 02363 000002 0 1924 l.f018 vfd 18/tfdild 02364 000040 0 1925 l.f019 vfd 18/tfifc 1926 1927 02365 1928 tibadr bss 1 real address of currently relevant tib 02366 1929 opcode bss 1 opcode from mailbox 02367 1930 dctemp bss 1 temporary 02370 000000 0 1931 lctlmb oct 0 contains mbx addr during line_control order 02371 1932 pchbuf bss 1 address of patch buffer 02372 1933 pchadr bss 1 address being patched 02373 1934 pchlen bss 1 number of words to patch assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 87 decmbx -- routine to decode a mailbox from the cs 1935 eject 02374 1936 dec210 null not wcd 02374 422 004 0 1937 icmpa wtx write text? 02375 0 64 034 2431 1938 tnz dec230-* no, try rtx 02376 0 07 770 2366 1939 lda opcode-* yes, get opcode 02377 422 012 0 1940 icmpa accout must be accept output or 02400 0 74 004 2404 1941 tze dec220-* accept last output 02401 422 013 0 1942 icmpa aclout 02402 0 74 002 2404 1943 tze dec220-* 02403 1944 die 8 otherwise, forget it 1945 02404 1946 dec220 null set up to read dcw list 1947 02404 1948 trace mt.wtx,tr.mbx,(a.f023-*(*),sm.lno(3),sm.adr+1(3)) end of binary card 00000040 1949 02422 0 20 743 2365 1950 szn tibadr-* is there really a line? 02423 0 74 612 2235 1951 tze dec100-* if not, just free mailbox and return 1952 02424 4 10 671 2315 1953 tsy a.f019-*,* rddcw 1954 1955 set transaction control word to 02425 673 001 0 1956 ila tcdcwl "dcw list read" 02426 4 17 670 2316 1957 sta a.f021-*,* tcword 02427 4 10 646 2275 1958 tsy a.f002-*,* conect 02430 0 71 027 2457 1959 tra decbak-* and return 1960 1961 02431 1962 dec230 null i/o command is rtx or invalid 02431 422 002 0 1963 icmpa rtx 02432 0 74 002 2434 1964 tze 2 02433 1965 die 17 1966 1967 it's rtx, opcode must be 02434 0 07 732 2366 1968 lda opcode-* input accepted 02435 422 005 0 1969 icmpa inacc 02436 0 74 002 2440 1970 tze 2 02437 1971 die 8 1972 02440 1973 trace mt.rtx,tr.mbx,(a.f023-*(*),sm.lno(3)) 1974 1975 put together dcw list for transmitting input 1976 to cs 02453 4 10 644 2317 1977 tsy a.f022-*,* indata 1978 02454 673 004 0 1979 ila tcwrd set transaction control word to "wrote data" 02455 4 17 641 2316 1980 sta a.f021-*,* tcword 02456 4 10 617 2275 1981 tsy a.f002-*,* conect 1982 02457 1983 decbak return decmbx assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 88 decmbx -- routine to decode a mailbox from the cs 1984 02461 1985 dec350 null set echnego break table 1986 1987 the table is too big to fit in a mailbox, 1988 so we'll read it into the pseudo-dcw area 02461 0 20 704 2365 1989 szn tibadr-* end of binary card 00000041 02462 0 74 553 2235 1990 tze dec100-* no line? 02463 4 10 632 2315 1991 tsy a.f019-*,* (rddcw) 02464 673 012 0 1992 ila tcrecn set tcword to "read echo neg. table" 02465 4 17 631 2316 1993 sta a.f021-*,* tcword 02466 4 10 607 2275 1994 tsy a.f002-*,* conect 02467 0 71 770 2457 1995 tra decbak-* 1996 02470 1997 dec360 null start echo negotiation 1998 which has the option to refuse echnegooin 1999 by zeroing t.scll for any reason whatsoever. 02470 0 20 675 2365 2000 szn tibadr-* 02471 0 74 544 2235 2001 tze dec100-* no line 02472 1 07 025 0 2002 lda t.echo,1 is there pending echoing? 02473 0 74 006 2501 2003 tze dec370-* no 02474 4 10 630 2324 2004 tsy a.f027-*,* setbpt 02475 0332 00 0 2005 cax2 02476 2 07 002 0 2006 lda eb.tly,2 maybe 02477 2337 11 0 2007 arl 9 isolate tally to make sure 02500 0 64 014 2514 2008 tnz dec380-* yes, can't echnego 02501 1 20 026 0 2009 dec370 szn t.dcp,1 is there a dia-queued input chain? 02502 0 64 012 2514 2010 tnz dec380-* yes, don't negotiate 02503 4 10 607 2312 2011 tsy a.f015-*,* (engifl) get icp chain queued 02504 1 20 044 0 2012 szn t.entp,1 make sure there had better be a table 02505 0 74 007 2514 2013 tze dec380-* punt if not 02506 3 07 004 0 2014 lda sm.cd,3 get # of chars seen by ring 0 02507 1 27 043 0 2015 cmpa t.sncc,1 is it the same as # of chars we sent out? 02510 0 64 004 2514 2016 tnz dec380-* no, can't echnego 02511 3 07 005 0 2017 lda sm.cd+1,3 get screen length left, 0 works too. 02512 1 17 042 0 2018 sta t.scll,1 ok, we're echo negotiating 02513 0 71 522 2235 2019 tra dec100-* 02514 2020 dec380 null fail to start echo negotiation 02514 1 56 042 0 2021 stz t.scll,1 shoulda been zero anyway for engogo 02515 0 71 520 2235 2022 tra dec100-* 2023 02516 2024 dec400 null stop echo negotiation 02516 0 20 647 2365 2025 szn tibadr-* 02517 0 74 516 2235 2026 tze dec100-* 02520 4 10 572 2312 2027 tsy a.f015-*,* get queued stuff out 02521 473 107 0 2028 ilq engaof acknowledge_echnego_stop 02522 4 10 556 2300 2029 tsy a.f005-*,* (denq) send one 02523 0 71 771 2514 2030 tra dec380-* turn off negotiation 2031 02524 2032 dec440 null init echo negotiation assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 89 decmbx -- routine to decode a mailbox from the cs 02524 0 20 641 2365 2033 szn tibadr-* 02525 0 74 510 2235 2034 tze dec100-* no line? 02526 4 10 564 2312 2035 tsy a.f015-*,* get the act synchronized 02527 1 56 043 0 2036 stz t.sncc,1 synchronize ctrs 02530 473 106 0 2037 ilq engain acknowledge_echnego_init end of binary card 00000042 02531 4 10 547 2300 2038 tsy a.f005-*,* (denq) 02532 0 71 503 2235 2039 tra dec100-* 2040 02533 2041 dec450 null set input flow control chars 02533 3 07 004 0 2042 lda sm.cd,3 get the characters 02534 1 17 045 0 2043 sta t.ifch,1 02535 3 20 005 0 2044 szn sm.cd+1,3 timeout options specified? 02536 0 74 004 2542 2045 tze dec455-* no 02537 0 07 614 2353 2046 lda l.f010-* =tfitim 02540 1 72 036 0 2047 orsa t.flg3,1 yes, set it in tib 02541 0 71 003 2544 2048 tra dec458-* 02542 0 07 613 2355 2049 dec455 lda l.f012-* =^tfitim 02543 1 32 036 0 2050 ansa t.flg3,1 otherwise, turn it off 02544 1 07 002 0 2051 dec458 lda t.flg2,1 check if iflow already on 02545 0 31 617 2364 2052 cana l.f019-* =tfifc 02546 0 74 467 2235 2053 tze dec100-* no, never mind 02547 4 10 572 2341 2054 tsy a.f048-*,* (hmode) have to make sure cct is updated 02550 0 71 465 2235 2055 tra dec100-* 2056 02551 2057 dec460 null set output flow control chars 02551 3 07 004 0 2058 lda sm.cd,3 get the chars 02552 1 27 046 0 2059 cmpa t.ofch,1 have they changed? 02553 0 74 003 2556 2060 tze dec462-* no, may not want to reinitialize 02554 1 17 046 0 2061 sta t.ofch,1 else store them 02555 0 71 005 2562 2062 tra dec463-* and skip other test 02556 1 07 002 0 2063 dec462 lda t.flg2,1 check for modes already on 02557 0 34 570 2347 2064 ana l.f006-* =tfblak+tfofc 02560 0 27 567 2347 2065 cmpa l.f006-* both on? 02561 0 74 002 2563 2066 tze dec464-* yes, don't initialize block count 02562 1 56 047 0 2067 dec463 stz t.omct,1 initialize message count 02563 3 20 005 0 2068 dec464 szn sm.cd+1,3 block acknowledgement protocol? 02564 0 74 004 2570 2069 tze dec465-* no 02565 0 07 567 2354 2070 lda l.f011-* =tfblak 02566 1 72 002 0 2071 orsa t.flg2,1 yes, set it in tib 02567 0 71 003 2572 2072 tra dec468-* 02570 0 07 567 2357 2073 dec465 lda l.f014-* =^tfblak 02571 1 32 002 0 2074 ansa t.flg2,1 otherwise, turn it off 02572 1 07 002 0 2075 dec468 lda t.flg2,1 see if mode is already on 02573 0 31 567 2362 2076 cana l.f017-* =tfofc 02574 0 74 441 2235 2077 tze dec100-* nope 02575 4 10 544 2341 2078 tsy a.f048-*,* (hmode) yes, have to make sure cct gets updated 02576 0 71 437 2235 2079 tra dec100-* 2080 02577 2081 dec470 null report meters assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 90 decmbx -- routine to decode a mailbox from the cs 02577 4 20 522 2321 2082 szn a.f024-*,* (.crmet) is metering enabled? end of binary card 00000043 02600 0 74 435 2235 2083 tze dec100-* no, just free mailbox 02601 4 10 473 2274 2084 tsy a.f001-*,* gmeter subroutine does it all 02602 0 71 655 2457 2085 tra decbak-* 2086 2087 02603 233100 0 02604 2088 even 02604 2089 savmbx bss fmbxsz copy of input mailbox 2090 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 91 decmbx -- routine to decode a mailbox from the cs 2091 eject 2092 2093 this macro is used to set up a branch table fo 2094 mailbox opcodes. it generates a word containing 2095 the opcode to be checked for, and a word containing 2096 the address to branch to for that opcode. 2097 2098 optab macro c,m 2099 zero #1 2100 ind #2 2101 rem 2102 endm optab 2103 02674 2104 wcdtab null table of locations for transfer 2105 on wcd opcodes 02674 2106 optab termac,dec020 02676 2107 optab dislin,dec030 02700 2108 optab disall,dec040 02702 2109 optab accall,dec050 02704 2110 optab rejreq,dec060 02706 2111 optab entrcv,dec065 02710 2112 optab trmrej,dec070 02712 2113 optab setcls,dec075 02714 2114 optab cserr,dec080 02716 2115 optab alter,dec090 02720 2116 optab blast,dec085 02722 2117 optab disacc,dec100 02724 2118 optab incomp,dec100 02726 2119 optab frmchr,dec300 02730 2120 optab brack,dec100 02732 2121 optab dodial,dec095 02734 2122 optab dmpmem,dec096 end of binary card 00000044 02736 2123 optab pchmem,dec097 02740 2124 optab brkpnt,dec105 02742 2125 optab noacc,dec046 02744 2126 optab linctl,dec106 02746 2127 optab setdly,dec107 02750 2128 optab msgsiz,dec101 02752 2129 optab engstb,dec350 02754 2130 optab engogo,dec360 02756 2131 optab engoff,dec400 02760 2132 optab engini,dec440 02762 2133 optab infcc,dec450 02764 2134 optab outfcc,dec460 02766 2135 optab rmeter,dec470 02770 0 02770 1 2136 wcdend zero * to mark end of table 2137 2138 2139 * assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 92 decmbx -- routine to decode a mailbox from the cs 2140 * this subroutine is called by a linctl opblock to see if the 2141 * current test state call is caused by a line_control 2142 * order. the convention is that during a line_control order, 2143 * "lctlmb" is non-zero, and contains the mailbox addr 2144 * 02771 2145 lctlck subr lct,(a) 02777 4 07 332 3331 2146 lda a.g007-*,* =lctlmb, pick up mailbox addr 03000 0 74 004 3004 2147 tze lctret-* not line contorl 03001 773 004 0 2148 iaa sm.cd get addr of data 03002 4333 00 0 2149 cax3 end of binary card 00000045 03003 0 76 766 2771 2150 aos lctlck-* take skip return 03004 2151 lctret return lctlck assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 93 alterp -- subroutine to handle "alter parameters" 2152 ttls alterp -- subroutine to handle "alter parameters" 2153 2154 2155 this subroutine does whatever is necessary when an 2156 "alter parameters" opcode is sent from the cs 2157 2158 the subcommand to be performed is in the first 9 2159 bits of the command data in the mailbox 2160 for most of the subcommands currently implemented, 2161 the low-order bit of the first word of command 2162 data indicates "on" or "off" 2163 2164 at entry: 2165 x1 -- virtual tib address 2166 x3 -- mailbox address 2167 03006 2168 alterp subr alt 2169 03011 2170 trace mt.alt,tr.mbx,(sm.cd(3)) 2171 03021 0 56 352 3373 2172 stz caltst-* initialize "call itest" flag 03022 0 56 352 3374 2173 stz chmode-* and "call hmode" flag 03023 0 56 352 3375 2174 stz checho-* and "change acho mode" flag 03024 0 07 307 3333 2175 lda a.g009-* =t.flg,1 03025 0 17 353 3400 2176 sta flgptr-* initialize pointer to t.flg 03026 1 07 017 0 2177 lda t.type,1 is this colts executive channel? 03027 422 023 0 2178 icmpa ttcolt if so, we use a much shorter 03030 0 74 260 3310 2179 tze alt500-* list of subcommands 03031 3 07 004 0 2180 lda sm.cd,3 get first 18 bits of command data 03032 2335 11 0 2181 lrl 9 isolate subcommand 03033 0 03 270 3323 2182 ldx2 a.g001-* addr(alttab) 03034 2183 alt010 null 03034 2 27 000 0 2184 cmpa 0,2 does subcommand match table entry? 03035 6 74 001 0 2185 tze 1,2* yes, go process it 03036 273 002 0 2186 iacx2 2 no, check next 03037 4 23 276 3335 2187 cmpx2 a.g011-*,* (altend) if not at end of table 03040 0 64 774 3034 2188 tnz alt010-* 03041 2189 die 8 else die 2190 03042 2191 alt020 null crecho 03042 0 07 276 3340 2192 lda l.g001-* =tfcrec 03043 0 71 075 3140 2193 tra alt135-* join common code 2194 03044 2195 alt030 null lfecho 03044 0 07 275 3341 2196 lda l.g002-* =tflfec 03045 0 71 073 3140 2197 tra alt135-* 2198 03046 2199 alt040 null tbecho 03046 0 07 274 3342 2200 lda l.g003-* =tftbec 03047 0 71 072 3141 2201 tra alt140-* assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 94 alterp -- subroutine to handle "alter parameters" 2202 03050 2203 alt050 null handle quit 03050 0 07 273 3343 2204 lda l.g004-* =tfquit end of binary card 00000046 03051 0 71 071 3142 2205 tra alt150-* 2206 03052 2207 alt060 null listen 03052 4 10 264 3336 2208 tsy a.g012-*,* (setsiz) pick up buffer size from mailbox 03053 6337 00 0 2209 qrl 0 check flag 03054 0 74 005 3061 2210 tze alt065-* turning it off, don't worry 03055 1 07 036 0 2211 lda t.flg3,1 was the channel masked? 03056 0 31 314 3372 2212 cana l.g027-* =tfmask 03057 0 74 002 3061 2213 tze alt065-* no 03060 4 10 257 3337 2214 tsy a.g013-*,* (hunmsk) yes, unmask it now 03061 0 07 263 3344 2215 alt065 lda l.g005-* =tflisn 03062 0 76 311 3373 2216 aos caltst-* call itest when done 2217 03063 0 71 057 3142 2218 tra alt150-* 2219 03064 2220 alt070 null lock 03064 0 07 263 3347 2221 lda l.g008-* =tfctrl 03065 0 71 055 3142 2222 tra alt150-* 2223 03066 2224 alt080 null full duplex 03066 0 07 262 3350 2225 lda l.g009-* =tffdpx 03067 0 71 053 3142 2226 tra alt150-* 2227 03070 2228 alt090 null change-string 03070 0 71 231 3321 2229 tra altbak-* that's all 2230 03071 2231 alt100 null who-are-you 2232 must start control tables at special place 2233 to read answerback 03071 0 07 253 3344 2234 lda l.g005-* =tflisn 03072 1 31 001 0 2235 cana t.flg,1 if line isn't listening, 03073 0 74 226 3321 2236 tze altbak-* don't bother 2237 03074 673 774 0 2238 ila -wruinc check list of line types for which wru is no good 03075 0 03 232 3327 2239 ldx2 a.g005-* addr(wrutbl) 03076 1 47 017 0 2240 ldq t.type,1 2241 03077 2 67 000 0 2242 alt101 cmpq 0,2 is this one? 03100 0 74 007 3107 2243 tze alt102-* yes 03101 273 001 0 2244 iacx2 1 look at next 03102 773 001 0 2245 iaa 1 exhausted table? 03103 0 64 774 3077 2246 tnz alt101-* no 2247 03104 473 114 0 2248 ilq wrutim send "wru timeout" right away 03105 4 10 223 3330 2249 tsy a.g006-*,* denq 03106 0 71 213 3321 2250 tra altbak-* assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 95 alterp -- subroutine to handle "alter parameters" 2251 03107 0 03 217 3326 2252 alt102 ldx2 a.g004-* addr(ctrl) 03110 2 07 004 0 2253 lda ct.wru,2 address of special wait block 03111 1 17 003 0 2254 sta t.cur,1 tell interpreter to start there 03112 1 56 022 0 2255 stz t.reta,1 in case we yanked it out of subr 03113 4 10 211 3324 2256 tsy a.g002-*,* itest 03114 0 71 205 3321 2257 tra altbak-* 2258 03115 2259 alt110 null echoplex mode 03115 0 07 235 3352 2260 lda l.g011-* =tfecpx 03116 0 71 022 3140 2261 tra alt135-* 2262 03117 2263 alt120 null framei mode 03117 1 07 004 0 2264 lda t.line,1 hsla line? end of binary card 00000047 03120 0 31 231 3351 2265 cana l.g010-* =hslafl 03121 0 74 013 3134 2266 tze alt125-* no, buffer sizes are uninteresting 03122 6337 00 0 2267 qrl 0 check the flag 03123 0 74 011 3134 2268 tze alt125-* turning it off, no buffer sizes 03124 1 03 030 0 2269 ldx2 t.sfcm,1 get sfcm address 03125 3 07 005 0 2270 lda sm.cd+1,3 get intermediate buffer size 03126 0 10 351 3477 2271 tsy rndsiz-* get it in words 03127 2 17 016 0 2272 sta sf.bsz,2 save it 03130 3 07 006 0 2273 lda sm.cd+2,3 get size to be used during frame 03131 0 74 002 3133 2274 tze 2 if any 03132 0 10 345 3477 2275 tsy rndsiz-* in words 03133 2 17 017 0 2276 sta sf.fbs,2 save it 2277 03134 2278 alt125 null 03134 673 001 0 2279 ila t.flg2-t.flg 03135 0 16 243 3400 2280 asa flgptr-* update flgptr to point to t.flg2 03136 0 07 223 3361 2281 lda l.g018-* tffrmi 03137 0 71 002 3141 2282 tra alt140-* 2283 03140 0 76 235 3375 2284 alt135 aos checho-* echoing mode changed 2285 03141 2286 alt140 null 03141 0 76 233 3374 2287 aos chmode-* 2288 03142 2289 alt150 null flag on or off? 03142 6337 00 0 2290 qrl 0 03143 0 74 003 3146 2291 tze alt160-* 03144 4 72 234 3400 2292 orsa flgptr-*,* on 03145 0 71 003 3150 2293 tra alt170-* 03146 2294 alt160 null off 03146 322 777 0 2295 iera -1 03147 4 32 231 3400 2296 ansa flgptr-*,* 2297 03150 2298 alt170 null mode changed? 03150 0 20 224 3374 2299 szn chmode-* assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 96 alterp -- subroutine to handle "alter parameters" 03151 0 74 014 3165 2300 tze alt180-* no 03152 1 07 004 0 2301 lda t.line,1 yes, hsla line? 03153 0 31 176 3351 2302 cana l.g010-* hslafl 03154 0 74 002 3156 2303 tze alt175-* no 03155 4 10 150 3325 2304 tsy a.g003-*,* call hmode 2305 03156 0 20 217 3375 2306 alt175 szn checho-* did we change an echoing mode? 03157 0 74 006 3165 2307 tze alt180-* no 03160 1 07 001 0 2308 lda t.flg,1 03161 0 31 176 3357 2309 cana l.g016-* tflfec+tfcrec+tfecpx 03162 0 64 003 3165 2310 tnz alt180-* echoing not all off 03163 4 10 147 3332 2311 tsy a.g008-*,* (deldly) we have stopped echoing, remove delay ta 03164 1 56 037 0 2312 stz t.dtp,1 2313 03165 2314 alt180 null call itest? 03165 0 20 206 3373 2315 szn caltst-* 03166 0 74 133 3321 2316 tze altbak-* no,return end of binary card 00000048 03167 4 10 135 3324 2317 tsy a.g002-*,* itest 03170 0 71 131 3321 2318 tra altbak-* 2319 03171 2320 alt190 null dump input 03171 0 07 163 3354 2321 lda l.g013-* =tfrabt 03172 1 72 002 0 2322 orsa t.flg2,1 set read abort flag 03173 4 10 131 3324 2323 tsy a.g002-*,* itest 03174 0 71 125 3321 2324 tra altbak-* 2325 03175 2326 alt200 null dump output 03175 0 07 150 3345 2327 lda l.g006-* =tfwabt 03176 1 72 001 0 2328 orsa t.flg,1 on 03177 0 07 147 3346 2329 lda l.g007-* =^tfwrit 03200 1 32 001 0 2330 ansa t.flg,1 tfwrit off 03201 4 10 123 3324 2331 tsy a.g002-*,* itest 03202 0 71 117 3321 2332 tra altbak-* 2333 03203 2334 alt210 null xmit hold 03203 0 07 150 3353 2335 lda l.g012-* =tfxhld 03204 6337 00 0 2336 qrl 0 on or off? 03205 0 74 003 3210 2337 tze alt220-* 03206 1 72 002 0 2338 orsa t.flg2,1 on, just do it 03207 0 71 112 3321 2339 tra altbak-* 03210 2340 alt220 null off, we'll have to do test-state also 03210 322 777 0 2341 iera -1 03211 1 32 002 0 2342 ansa t.flg2,1 turn flag off 03212 4 10 112 3324 2343 tsy a.g002-*,* itest 03213 0 71 106 3321 2344 tra altbak-* 2345 03214 2346 alt230 null replay mode 03214 0 07 141 3355 2347 lda l.g014-* (=tfrply) get bit 2348 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 97 alterp -- subroutine to handle "alter parameters" 03215 6337 00 0 2349 alt240 qrl 0 on or off? 03216 0 74 003 3221 2350 tze alt245-* off, do it 03217 1 72 002 0 2351 orsa t.flg2,1 turn it on 03220 0 71 101 3321 2352 tra altbak-* 2353 03221 2354 alt245 null 03221 322 777 0 2355 iera -1 invert flag bit 03222 1 32 002 0 2356 ansa t.flg2,1 turn it off 03223 0 71 076 3321 2357 tra altbak-* 2358 03224 2359 alt250 null polite mode 03224 0 07 132 3356 2360 lda l.g015-* (=tfplit) get the bit 03225 0 71 770 3215 2361 tra alt240-* common code to set second flag word bits 2362 03226 2363 alt260 null set buffer size 03226 0 10 264 3512 2364 tsy setsiz-* just do it 03227 0 71 072 3321 2365 tra altbak-* and begone 2366 03230 2367 alt270 null breakall mode 03230 673 035 0 2368 ila t.flg3-t.flg 03231 0 16 147 3400 2369 asa flgptr-* make flgptr point to t.flg3 03232 0 07 130 3362 2370 lda l.g019-* (=tfbral) prepare to set breakall flag 03233 0 71 706 3141 2371 tra alt140-* 2372 03234 2373 alt280 null prefixnl mode 03234 673 001 0 2374 ila t.flg2-t.flg 03235 0 16 143 3400 2375 asa flgptr-* end of binary card 00000049 03236 0 07 125 3363 2376 lda l.g020-* (=tfpfnl) 03237 0 71 703 3142 2377 tra alt150-* 2378 03240 2379 alt290 null iflow mode 03240 673 001 0 2380 ila t.flg2-t.flg make flgptr point to t.flg2 03241 0 16 137 3400 2381 asa flgptr-* 03242 1 07 004 0 2382 lda t.line,1 is it hsla line? 03243 0 31 106 3351 2383 cana l.g010-* =hslafl 03244 0 74 005 3251 2384 tze alt295-* 03245 1 03 030 0 2385 ldx2 t.sfcm,1 if so, have to update buffer size 03246 3 07 005 0 2386 lda sm.cd+1,3 get it from mailbox 03247 0 10 230 3477 2387 tsy rndsiz-* 03250 2 17 017 0 2388 sta sf.fbs,2 03251 0 07 113 3364 2389 alt295 lda l.g021-* =tfifc 03252 0 71 667 3141 2390 tra alt140-* go set it 2391 03253 2392 alt300 null oflow mode 03253 673 001 0 2393 ila t.flg2-t.flg make flgptr point at t.flg2 03254 0 16 124 3400 2394 asa flgptr-* 03255 6337 00 0 2395 qrl 0 turning it on or off? 03256 0 64 006 3264 2396 tnz alt309-* on, go ahead 03257 1 07 002 0 2397 lda t.flg2,1 off, was it block acknowledgement? assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 98 alterp -- subroutine to handle "alter parameters" 03260 0 31 106 3366 2398 cana l.g023-* =tfblak 03261 0 74 003 3264 2399 tze alt309-* no, hsla_man will take care of it 03262 1 56 047 0 2400 stz t.omct,1 else must reset counter 03263 0 76 110 3373 2401 aos caltst-* and alert control tables 03264 0 07 101 3365 2402 alt309 lda l.g022-* =tfofc 03265 0 71 654 3141 2403 tra alt140-* go do it 2404 03266 2405 alt310 null odd parity 03266 673 035 0 2406 ila t.flg3-t.flg make flgptr point at t.flg3 03267 0 16 111 3400 2407 asa flgptr-* 03270 0 07 077 3367 2408 lda l.g024-* =tfoddp 03271 0 71 650 3141 2409 tra alt140-* 2410 03272 2411 alt320 null no input parity 03272 673 035 0 2412 ila t.flg3-t.flg make flgptr point at t.flg3 03273 0 16 105 3400 2413 asa flgptr-* 03274 0 07 074 3370 2414 lda l.g025-* =tf8in 03275 0 71 645 3142 2415 tra alt150-* 2416 03276 2417 alt330 null no output parity 03276 673 035 0 2418 ila t.flg3-t.flg make flgptr point at t.flg3 03277 0 16 101 3400 2419 asa flgptr-* 03300 0 07 071 3371 2420 lda l.g026-* =tf8out 03301 0 71 640 3141 2421 tra alt140-* 2422 2423 03302 2424 alt400 null send line break 2425 must start control tables at special place 2426 to send line break 2427 03302 0 03 024 3326 2428 ldx2 a.g004-* addr(ctrl) 03303 2 07 006 0 2429 lda ct.brk,2 address of special wait block 03304 1 17 003 0 2430 sta t.cur,1 tell interpreter to start there end of binary card 00000050 03305 1 56 022 0 2431 stz t.reta,1 in case we yanked it out of subr 03306 4 10 016 3324 2432 tsy a.g002-*,* itest 03307 0 71 012 3321 2433 tra altbak-* 2434 03310 2435 alt500 null come here for colts channel 03310 3 07 004 0 2436 lda sm.cd,3 get ifrst 18 bits of command data 03311 2335 11 0 2437 lrl 9 isolate subcommand 03312 0 03 022 3334 2438 ldx2 a.g010-* addr (alctab) 03313 2439 alt510 null 03313 2 27 000 0 2440 cmpa 0,2 does subcommand match table entry? 03314 6 74 001 0 2441 tze 1,2* yes, go process it 03315 273 002 0 2442 iacx2 2 no, check next 03316 0 23 154 3472 2443 cmpx2 alcend-* reached end of table? 03317 0 64 774 3313 2444 tnz alt510-* no, look again 03320 0 71 001 3321 2445 tra altbak-* ignore any not in table 2446 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 99 alterp -- subroutine to handle "alter parameters" 03321 2447 altbak return alterp 2448 2449 2450 03323 0 03401 1 2451 a.g001 ind alttab 03324 0 03400 3 2452 a.g002 ind itest "test_state" entry of interpreter 03325 0 03000 3 2453 a.g003 ind hmode "change-mode" entry of hsla_man 03326 0 00400 3 2454 a.g004 ind ctrl 03327 0 03473 1 2455 a.g005 ind wrutbl table of invalid "wru" line types 03330 0 00630 1 2456 a.g006 ind denq 03331 0 02370 1 2457 a.g007 ind lctlmb 03332 0 04313 1 2458 a.g008 ind deldly 03333 1 00001 0 2459 a.g009 ind t.flg,1 used to set up address variable for flag word 03334 0 03464 1 2460 a.g010 ind alctab 03335 0 03463 1 2461 a.g011 ind altend 03336 0 03512 1 2462 a.g012 ind setsiz 03337 0 14000 3 2463 a.g013 ind hunmsk 2464 03340 002000 0 2465 l.g001 vfd 18/tfcrec 03341 001000 0 2466 l.g002 vfd 18/tflfec 03342 004000 0 2467 l.g003 vfd 18/tftbec 03343 000200 0 2468 l.g004 vfd 18/tfquit 03344 000100 0 2469 l.g005 vfd 18/tflisn 03345 010000 0 2470 l.g006 vfd 18/tfwabt 03346 777776 0 2471 l.g007 vfd 18/ntfwrt 03347 000400 0 2472 l.g008 vfd 18/tfctrl 03350 000004 0 2473 l.g009 vfd 18/tffdpx 03351 001000 0 2474 l.g010 vfd 18/hslafl 03352 200000 0 2475 l.g011 vfd 18/tfecpx 03353 000001 0 2476 l.g012 vfd 18/tfxhld end of binary card 00000051 03354 000010 0 2477 l.g013 vfd 18/tfrabt 03355 000400 0 2478 l.g014 vfd 18/tfrply 03356 002000 0 2479 l.g015 vfd 18/tfplit 03357 203000 0 2480 l.g016 vfd 18/tflfec+tfcrec+tfecpx 03360 000400 0 2481 l.g017 vfd 18/bfmsiz 03361 040000 0 2482 l.g018 vfd 18/tffrmi 03362 000020 0 2483 l.g019 vfd 18/tfbral 03363 400000 0 2484 l.g020 vfd 18/tfpfnl 03364 000040 0 2485 l.g021 vfd 18/tfifc 03365 000100 0 2486 l.g022 vfd 18/tfofc 03366 004000 0 2487 l.g023 vfd 18/tfblak 03367 000400 0 2488 l.g024 vfd 18/tfoddp 03370 000100 0 2489 l.g025 vfd 18/tf8in 03371 000200 0 2490 l.g026 vfd 18/tf8out 03372 020000 0 2491 l.g027 vfd 18/tfmask 2492 2493 03373 2494 caltst bss 1 flag indicating whether to call itest 03374 2495 chmode bss 1 flag indicating mode change assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 100 alterp -- subroutine to handle "alter parameters" 03375 2496 checho bss 1 flag indicating echo-mode change 03376 2497 altemp bss 1 temporary storage 03377 2498 atemp2 bss 1 more temporary storage 03400 0 00000 0 2499 flgptr ind ** this will be set with x1 modification 2500 2501 003401 2502 alttab equ * branch table for alter parameters subcommands 2503 03401 2504 optab alcrec,alt020 03403 2505 optab allfec,alt030 03405 2506 optab altbec,alt040 03407 2507 optab alquit,alt050 03411 2508 optab allisn,alt060 03413 2509 optab allock,alt070 03415 2510 optab alfdpx,alt080 03417 2511 optab alchng,alt090 03421 2512 optab alwru,alt100 03423 2513 optab alecpx,alt110 03425 2514 optab aldpin,alt190 end of binary card 00000052 03427 2515 optab aldump,alt200 03431 2516 optab alxhld,alt210 03433 2517 optab alrply,alt230 03435 2518 optab alplit,alt250 03437 2519 optab alfrmi,alt120 03441 2520 optab alsetb,alt260 03443 2521 optab albral,alt270 03445 2522 optab alpfnl,alt280 03447 2523 optab alifc,alt290 03451 2524 optab alofc,alt300 03453 2525 optab aloddp,alt310 03455 2526 optab al8in,alt320 03457 2527 optab al8out,alt330 03461 2528 optab albrk,alt400 03463 0 03463 1 2529 altend zero * marks end of table 2530 2531 003464 2532 alctab equ * branch table used for colts channel 03464 2533 optab allisn,alt060 03466 2534 optab aldpin,alt190 03470 2535 optab aldump,alt200 03472 0 03472 1 2536 alcend zero * marks end of table 2537 2538 table of line types for which wru is allowed 03473 000001 0 2539 wrutbl dec 1 ascii 03474 000002 0 2540 dec 2 1050 end of binary card 00000053 03475 000003 0 2541 dec 3 2741 03476 000010 0 2542 dec 8 202c6 000004 2543 wruinc equ *-wrutbl length of table assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 101 rndsiz -- subroutine to convert buffer size to words 2544 ttls rndsiz -- subroutine to convert buffer size to words 2545 2546 this subroutine takes a buffer size in characters 2547 and returns it in words rounded up to the next 2548 multiple of 32 2549 2550 input: 2551 a -- chars per buffer 2552 2553 output: 2554 a -- buffer size in words 2555 2556 03477 2557 rndsiz subr rnd 03502 773 107 0 2558 iaa 71 round up to multiple of 32 words 03503 0337 06 0 2559 ars 6 03504 0336 05 0 2560 als 5 convert to words 03505 0 27 653 3360 2561 cmpa l.g017-* (bfmsiz) respect upper limit 03506 0 75 002 3510 2562 tmi 2 03507 0 07 651 3360 2563 lda l.g017-* 03510 2564 return rndsiz 2565 2566 2567 * setsiz -- subroutine to set buffer size in sfcm 2568 2569 2570 copy input buffer size from mailbox to sf.bsz for 2571 listen order or set_buffer_size order (dialout) 2572 2573 input: 2574 x1 -- virtual tib address 2575 x3 -- submailbox address 2576 2577 output: 2578 buffer size stored in sf.bsz 2579 zero stored in sf.mms 2580 2581 03512 2582 setsiz subr set,(q,x2) 03523 1 07 004 0 2583 lda t.line,1 is this an hsla line? 03524 0 31 625 3351 2584 cana l.g010-* hslafl 03525 0 74 007 3534 2585 tze setbak-* no, don't bother with sfcm stuff 03526 1 03 030 0 2586 ldx2 t.sfcm,1 03527 0 74 005 3534 2587 tze setbak-* better leave it alone if no sfcm 03530 3 07 005 0 2588 lda sm.cd+1,3 get buffer size in chars 03531 0 10 746 3477 2589 tsy rndsiz-* get it in words rounded up to multiple of 32 03532 2 17 016 0 2590 sta sf.bsz,2 save size in sfcm 03533 2 56 020 0 2591 stz sf.mms,2 start clean 03534 2592 setbak return setsiz assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 102 filmbx -- subroutine to fill fnp-controlled mailbox from 2593 ttls filmbx -- subroutine to fill fnp-controlled mailbox from i/o queu 2594 2595 2596 this routine is called by dgetwk if the i/o queue 2597 non-empty and there's a free mailbox for sending 2598 2599 x3: mailbox save area address 2600 2601 03536 2602 filmbx subr fil 2603 start by getting request from i/o queue 03541 4 10 301 4042 2604 tsy a.v027-*,* (fetch) 03542 2 07 000 0 2605 lda 0,2 pick up opcode word from queue 03543 0 17 325 4070 2606 sta filopc-* end of binary card 00000054 03544 0 13 323 4067 2607 stx2 filtmp-* save queue address 03545 0336 11 0 2608 als 9 put opcode in mailbox 03546 122 001 0 2609 iora rcd with rcd 03547 3 17 003 0 2610 sta sm.op,3 03550 3 56 002 0 2611 stz sm.cdl,3 initialize command data length to zero 03551 3 56 000 0 2612 stz sm.lno,3 likewise line number 03552 673 777 0 2613 ila -1 correct the queue count 03553 4 16 255 4030 2614 asa a.v004-*,* (qcnt) 03554 0 07 314 4070 2615 lda filopc-* pick up opcode again 03555 0 34 311 4066 2616 ana l.v019-* (=007000) see if any data words 03556 0 74 016 3574 2617 tze fil020-* none 03557 0337 11 0 2618 ars 9 compute nwords 03560 6333 00 0 2619 caq 03561 3333 00 0 2620 cx3a 03562 773 004 0 2621 iaa sm.cd point at beginning of command data 03563 4332 00 0 2622 cax1 03564 0 03 303 4067 2623 ldx2 filtmp-* get opcode back 03565 2624 fil010 null 03565 2 07 001 0 2625 lda 1,2 pick up word from queue 03566 1 17 000 0 2626 sta 0,1 store in mailbox 03567 573 777 0 2627 iaq -1 03570 0 74 004 3574 2628 tze fil020-* all words moved in 03571 173 001 0 2629 iacx1 1 bump pointers 03572 273 001 0 2630 iacx2 1 03573 0 71 772 3565 2631 tra fil010-* 2632 03574 2633 fil020 null now dequeue the error message 03574 0 07 274 4070 2634 lda filopc-* pick up original opcode 03575 022 377 0 2635 iana 255 03576 0 17 272 4070 2636 sta filopc-* save masked version 03577 422 115 0 2637 icmpa errmsg sending an error message? 03600 0 64 005 3605 2638 tnz fil030-* no 03601 0 03 266 4067 2639 ldx2 filtmp-* addr of q entry 03602 0 43 252 4054 2640 ldx1 l.v004-* (=0) so dlqent will know not to meter 03603 4 10 241 4044 2641 tsy a.v042-*,* (=dlqent) delete it assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 103 filmbx -- subroutine to fill fnp-controlled mailbox from 03604 0 71 212 4016 2642 tra fil120-* done 2643 03605 4 43 240 4045 2644 fil030 ldx1 a.v043-*,* address of current queue 03606 1 07 000 0 2645 lda qtib,1 get real tib addrss 03607 4 17 216 4025 2646 sta a.v001-*,* (tibadr) save real tib address 03610 4 10 222 4032 2647 tsy a.v006-*,* (setptw) virtualize it 03611 4332 00 0 2648 cax1 put virtual tib address in x1 03612 1 07 004 0 2649 lda t.line,1 put line number in mailbox end of binary card 00000055 03613 3 72 000 0 2650 orsa sm.lno,3 2651 now deal with opcode 03614 0 07 254 4070 2652 lda filopc-* 03615 422 112 0 2653 icmpa accin "accept input"? 03616 0 74 160 3776 2654 tze fil100-* yes, go do special stuff 03617 0 03 250 4067 2655 ldx2 filtmp-* get queue address 03620 4 10 224 4044 2656 tsy a.v042-*,* (=dlqent) and free it 2657 03621 2658 trace mt.ouq,tr.que,(filtmp,filopc,t.line(1)) 2659 03637 0 07 231 4070 2660 lda filopc-* get op code again 03640 0 03 175 4035 2661 ldx2 a.v015-* addr(rcdtab) 03641 2662 fil040 null search table for opcode 03641 2 27 000 0 2663 cmpa 0,2 if found, 03642 6 74 001 0 2664 tze 1,2* branch according to table 03643 273 002 0 2665 iacx2 2 else go to next entry 03644 0 23 257 4123 2666 cmpx2 rcdend-* table exhausted? 03645 0 64 774 3641 2667 tnz fil040-* 03646 2668 die 8 yes, invalid opcode 2669 2670 03647 2671 fil050 null accept new terminal 2672 03647 2673 smeter mincs,.mndil,l.v001-* 03656 2674 smeter mupdat,.mdilc,(a.v007-*(*)) end of binary card 00000056 2675 03665 1 07 017 0 2676 lda t.type,1 pass type back as command data 03666 3 56 004 0 2677 stz sm.cd,3 cs looks at 36 bits 03667 3 17 005 0 2678 sta sm.cd+1,3 03670 3 56 006 0 2679 stz sm.cd+2,3 zero second 36 bits of command data 03671 3 56 007 0 2680 stz sm.cd+3,3 03672 0 07 172 4064 2681 lda l.v017-* (=tfauto) 03673 1 31 001 0 2682 cana t.flg,1 is the an autobaud line? 03674 0 74 012 3706 2683 tze fil060-* no 03675 1 03 030 0 2684 ldx2 t.sfcm,1 address of software com region 03676 2 03 015 0 2685 ldx2 sf.hsl,2 address of hsla table 03677 2 07 000 0 2686 lda ht.flg,2 flag word 03700 022 017 0 2687 iana htfspd isolate speed 03701 773 777 0 2688 iaa -1 compute cs speed index 03702 422 007 0 2689 icmpa 7 less then 1200? assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 104 filmbx -- subroutine to fill fnp-controlled mailbox from 03703 0 75 002 3705 2690 tmi 2 yes 03704 773 777 0 2691 iaa -1 further fudge (multics does not know 1050 baud) 03705 3 17 007 0 2692 sta sm.cd+3,3 and store in command data 03706 673 014 0 2693 fil060 ila 12 set command data length also 03707 3 17 002 0 2694 sta sm.cdl,3 03710 0 07 155 4065 2695 lda l.v018-* tfdild 03711 1 72 002 0 2696 orsa t.flg2,1 mark it dialed up now 03712 0 71 104 4016 2697 tra fil120-* 2698 03713 2699 fil070 null line disconnected 2700 turn off listen flag in tib 03713 0 07 140 4053 2701 lda l.v003-* =^tflisn 03714 1 32 001 0 2702 ansa t.flg,1 03715 0 07 142 4057 2703 lda l.v010-* get permanent t.flg bits 03716 1 32 001 0 2704 ansa t.flg,1 turn off all the others 03717 0 07 141 4060 2705 lda l.v011-* get permanent t.flg2 bits 03720 1 32 002 0 2706 ansa t.flg2,1 turn off all the others 03721 0 07 142 4063 2707 lda l.v014-* get permanent t.flg3 bits 03722 1 32 036 0 2708 ansa t.flg3,1 turn off all the others 2709 2710 if this type of line has tfctrl by default, 2711 leave it on 03723 0 41 116 4041 2712 ldx3 a.v024-* addr(ctrl) 03724 3 41 001 0 2713 ldx3 ct.dev,3 array of device table addresses 03725 1 40 017 0 2714 adcx3 t.type,1 indexed by device type 03726 3 41 777 0 2715 ldx3 -1,3 (which starts at 1, not 0) 2716 x3 -> relevant device table entry 03727 0 07 132 4061 2717 lda l.v012-* dtfctl 03730 3 31 004 0 2718 cana dt.flg,3 should tfctrl be on? 03731 0 74 003 3734 2719 tze fil080-* no, leave it off end of binary card 00000057 03732 0 07 130 4062 2720 lda l.v013-* =tfctrl 03733 1 72 001 0 2721 orsa t.flg,1 turn it on 2722 03734 2723 fil080 null 03734 1 07 025 0 2724 lda t.echo,1 is there an echo buffer? 03735 0 74 004 3741 2725 tze fil090-* 03736 473 040 0 2726 ilq bufsiz if so, free it 03737 4 10 077 4036 2727 tsy a.v016-*,* frebfh 03740 1 56 025 0 2728 stz t.echo,1 2729 03741 2730 fil090 null 03741 4 10 105 4046 2731 tsy a.v045-*,* (deldly) get rid of any delay table 03742 1 56 037 0 2732 stz t.dtp,1 and remember that it's gone 03743 4 10 105 4050 2733 tsy a.v047-*,* (deletb) free echnego tbl if any 03744 1 56 044 0 2734 stz t.entp,1 and remember that it's gone 03745 1 56 042 0 2735 stz t.scll,1 turn off pendant echo negotiation 03746 1 56 043 0 2736 stz t.sncc,1 clear this for good luck 2737 03747 2738 smeter mincs,.mndil,l.v002-* assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 105 filmbx -- subroutine to fill fnp-controlled mailbox from 03756 2739 smeter mupdat,.mdilc,(a.v007-*(*)) 2740 if hsla line, free cct buffer if any 03765 1 07 004 0 2741 lda t.line,1 is it hsla line? 03766 0 31 070 4056 2742 cana l.v007-* =hslafl 03767 0 74 027 4016 2743 tze fil120-* if not, don't bother 03770 1 07 017 0 2744 lda t.type,1 make sure it's a real channel 03771 422 023 0 2745 icmpa ttcolt and not just colts executive 03772 0 74 024 4016 2746 tze fil120-* nope 03773 473 000 0 2747 ilq 0 03774 4 10 053 4047 2748 tsy a.v046-*,* shrcct 03775 0 71 021 4016 2749 tra fil120-* that's it for disconnected line 2750 2751 03776 2752 fil100 null accept input 03776 673 011 0 2753 ila 9 command data will be 54 bits 03777 3 17 002 0 2754 sta sm.cdl,3 2755 get count of input characters to put in cmd 04000 4 10 037 4037 2756 tsy a.v017-*,* (incnt) data 2757 end of binary card 00000058 04001 4 07 042 4043 2758 lda a.v030-*,* (.crnbf) get number of buffers left 04002 3 17 001 0 2759 sta sm.fre,3 tell multics what it is 04003 4 20 026 4031 2760 szn a.v005-*,* (shinp) was it short input? 04004 0 74 012 4016 2761 tze fil120-* no 04005 673 102 0 2762 ila inmbx yes, reset opcode 04006 0 17 062 4070 2763 sta filopc-* 04007 0 07 046 4055 2764 lda l.v005-* (^tfinq) while, accept input is being processed, 04010 1 32 036 0 2765 ansa t.flg3,1 don't allow appending to the last buffer 04011 0 71 005 4016 2766 tra fil120-* 2767 2768 04012 2769 fil110 null send output 04012 673 011 0 2770 ila 9 54 bits of command data 04013 3 17 002 0 2771 sta sm.cdl,3 because we will put buffer count in same 2772 place as for accept input 04014 4 07 027 4043 2773 lda a.v030-*,* (.crnbf) get number of buffers remaining 04015 3 17 001 0 2774 sta sm.fre,3 2775 2776 04016 2777 fil120 null finished with rcd, now write mailbox 2778 back to cs 04016 0 07 052 4070 2779 lda filopc-* 04017 4 03 007 4026 2780 ldx2 a.v002-*,* mbxno 04020 4 17 007 4027 2781 sta a.v003-*,* mbxfre-8,2 (mark mailbox with current opcode) 04021 0 07 017 4040 2782 lda a.v018-* addr(savmb) 04022 4 10 012 4034 2783 tsy a.v010-*,* wmbx 04023 2784 filbak return filmbx assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 106 filmbx -- subroutine to fill fnp-controlled mailbox from 2785 eject 2786 2787 04025 0 02365 1 2788 a.v001 ind tibadr 04026 0 06555 1 2789 a.v002 ind mbxno 04027 2 00611 1 2790 a.v003 ind mbxfre-8,2 04030 0 00620 1 2791 a.v004 ind qcnt 04031 0 05346 1 2792 a.v005 ind shinp 04032 0 20000 3 2793 a.v006 ind setptw set up variable cpu page table word 04033 0 00734 0 2794 a.v007 ind .mndil 2795 *a.v008 unused 2796 *a.v009 unused 04034 0 06330 1 2797 a.v010 ind wmbx 04035 0 04071 1 2798 a.v015 ind rcdtab branch table for rcd opcodes 04036 0 07000 3 2799 a.v016 ind frebfh 04037 0 05147 1 2800 a.v017 ind incnt subroutine to count input characters 04040 0 02604 1 2801 a.v018 ind savmbx 04041 0 00400 3 2802 a.v024 ind ctrl 04042 0 04725 1 2803 a.v027 ind fetch 04043 0 00652 0 2804 a.v030 ind .crnbf 04044 0 07072 1 2805 a.v042 ind dlqent 04045 0 06726 1 2806 a.v043 ind curque 04046 0 04313 1 2807 a.v045 ind deldly 04047 0 20400 3 2808 a.v046 ind shrcct subr that shares or releases cct end of binary card 00000059 04050 0 04527 1 2809 a.v047 ind deletb 2810 2811 04051 000001 0 2812 l.v001 dec 1 04052 777777 0 2813 l.v002 dec -1 04053 777677 0 2814 l.v003 vfd 18/ntflsn 04054 000000 0 2815 l.v004 dec 0 04055 737777 0 2816 l.v005 vfd o18//tfinq 04056 001000 0 2817 l.v007 vfd 18/hslafl 04057 020020 0 2818 l.v010 vfd 18/tfdlup+tfauto 04060 200000 0 2819 l.v011 vfd 18/tfsftr 04061 000001 0 2820 l.v012 vfd 18/dtfctl 04062 000400 0 2821 l.v013 vfd 18/tfctrl 04063 031401 0 2822 l.v014 vfd 18/tfbkpt+tfoddp+tfmask+tfabf0+tfabf1 04064 020000 0 2823 l.v017 vfd 18/tfauto 04065 000002 0 2824 l.v018 vfd 18/tfdild 04066 007000 0 2825 l.v019 oct 007000 2826 2827 04067 2828 filtmp bss 1 04070 2829 filopc bss 1 2830 2831 04071 2832 rcdtab null branch table for rcd opcodes 2833 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 107 filmbx -- subroutine to fill fnp-controlled mailbox from 04071 2834 optab acctrm,fil050 04073 2835 optab lindis,fil070 04075 2836 optab sndout,fil110 04077 2837 optab brkcon,fil120 04101 2838 optab wrutim,fil120 04103 2839 optab acupwi,fil120 04105 2840 optab acudlo,fil120 04107 2841 optab acuacr,fil120 04111 2842 optab acung,fil120 04113 2843 optab linsta,fil120 04115 2844 optab engain,fil120 04117 2845 optab engaof,fil120 end of binary card 00000060 04121 2846 optab linmsk,fil070 04123 0 04123 1 2847 rcdend zero * to mark end of table 2848 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 108 gmeter -- report meters to cs 2849 ttls gmeter -- report meters to cs 2850 2851 this subroutine sets up a dcw list to copy either 2852 per-channel or fnp-wide meters in response to a 2853 report-meters mailbox. the meters are copied to a 2854 temporary buffer both to avoid having them paged out and 2855 to make sure a consistent copy is sent. 2856 2857 at entry: 2858 x1 contains address of tib (or tibadr = 0 if for whole fnp) 2859 x3 points to mailbox; sm.cd in mailbox contains address 2860 of cs buffer 2861 04124 2862 gmeter subr gme,(x2,x3) 04135 4 20 075 4232 2863 szn a.s001-*,* (tibadr) for a subchannel? 04136 0 74 005 4143 2864 tze gme010-* no 04137 1 03 052 0 2865 ldx2 t.metr,1 yes, get pointer to its meters 04140 473 056 0 2866 ilq m.synl this is how much space they take up 04141 0 57 110 4251 2867 stq gmelen-* 04142 0 71 005 4147 2868 tra gme020-* 04143 0 03 070 4233 2869 gme010 ldx2 a.s002-* whole fnp, get addr (.mdilc) 04144 473 030 0 2870 ilq .mleng size of metering area 04145 0 57 104 4251 2871 stq gmelen-* this is how much to copy 04146 573 016 0 2872 iaq 14 extra stuff copied from elsewhere 04147 0 57 101 4250 2873 gme020 stq gmesiz-* save size 04150 4 10 064 4234 2874 tsy a.s003-*,* getmem 04151 2875 die 10 please not 04152 0 50 075 4247 2876 stx3 gmebuf-* save address of buffer 04153 0 47 076 4251 2877 ldq gmelen-* get copying length 04154 2 07 000 0 2878 gme030 lda 0,2 copy a word 04155 3 17 000 0 2879 sta 0,3 04156 273 001 0 2880 iacx2 1 move to next 04157 373 001 0 2881 iacx3 1 04160 573 777 0 2882 iaq -1 any more? 04161 0 64 773 4154 2883 tnz gme030-* yes 2884 04162 4 20 050 4232 2885 szn a.s001-*,* (tibadr) for a subchannel? 04163 0 64 021 4204 2886 tnz gme040-* yes 2887 no, fill in some extra fnp-wide stuff 04164 0 03 057 4243 2888 ldx2 a.s010-* addr (.crbdt) 04165 2 04 000 0 2889 ldaq 0,2 get bootload time end of binary card 00000061 04166 3 14 000 0 2890 staq 0,3 04167 2 04 002 0 2891 ldaq 2,2 all 4 words of it 04170 3 14 002 0 2892 staq 2,3 04171 4 03 053 4244 2893 ldx2 a.s011-*,* (.crsked) get pointer to idle meters 04172 2 04 000 0 2894 ldaq 0,2 this is 8 words 04173 3 14 004 0 2895 staq 4,3 04174 2 04 002 0 2896 ldaq 2,2 04175 3 14 006 0 2897 staq 6,3 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 109 gmeter -- report meters to cs 04176 2 04 004 0 2898 ldaq 4,2 04177 3 14 010 0 2899 staq 8,3 04200 2 04 006 0 2900 ldaq 6,2 04201 3 14 012 0 2901 staq 10,3 04202 4 04 043 4245 2902 ldaq a.s012-*,* (yelcnt) get edac error count 04203 3 14 014 0 2903 staq 12,3 2904 04204 0 03 031 4235 2905 gme040 ldx2 a.s004-* addr (dcws) -- put dcw list in usual place 04205 4 13 031 4236 2906 stx2 a.s005-*,* dcwadr 04206 673 004 0 2907 ila 4 set length 04207 4 17 030 4237 2908 sta a.s006-*,* dcwlen 2909 04210 0 41 724 4134 2910 ldx3 gmesx3-* get mailbox pointer 04211 3 07 004 0 2911 lda sm.cd,3 get cs address 04212 473 075 0 2912 ilq diaftc fnp -> cs transfer 04213 2 14 000 0 2913 staq 0,2 04214 0 07 033 4247 2914 lda gmebuf-* get pointer to data 04215 0 37 031 4246 2915 ora l.s001-* 0,w.2 for dia 04216 0 47 032 4250 2916 ldq gmesiz-* get data length 04217 4337 01 0 2917 qrs 1 in 36-bit words 04220 2 14 002 0 2918 staq 2,2 rest of dcw 04221 273 004 0 2919 iacx2 4 point to place for next dcw 04222 3332 00 0 2920 cx2a but bdisc wants it in x3 04223 4333 00 0 2921 cax3 04224 4 10 014 4240 2922 tsy a.s007-*,* (bdisc) disconnect dcw 04225 673 011 0 2923 ila tcmetr set transaction control word 04226 4 17 013 4241 2924 sta a.s008-*,* tcword 04227 4 10 013 4242 2925 tsy a.s009-*,* conect 04230 2926 return gmeter 2927 2928 04232 0 02365 1 2929 a.s001 ind tibadr 04233 0 00720 0 2930 a.s002 ind .mdilc 04234 0 12000 3 2931 a.s003 ind getmem end of binary card 00000062 04235 0 06150 1 2932 a.s004 ind dcws 04236 0 06146 1 2933 a.s005 ind dcwadr 04237 0 06147 1 2934 a.s006 ind dcwlen 04240 0 06004 1 2935 a.s007 ind bdisc 04241 0 01255 1 2936 a.s008 ind tcword 04242 0 06056 1 2937 a.s009 ind conect 04243 0 00644 0 2938 a.s010 ind .crbdt 04244 0 00677 0 2939 a.s011 ind .crskd 04245 0 00476 0 2940 a.s012 ind yelcnt 2941 04246 1 00000 0 2942 l.s001 zero 0,w.2 2943 2944 04247 2945 gmebuf bss 1 address of temporary space for meters 04250 2946 gmesiz bss 1 size of same assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 110 gmeter -- report meters to cs 04251 2947 gmelen bss 1 length to copy from metering area assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 111 makdly -- allocate new delay table 2948 ttls makdly -- allocate new delay table 2949 2950 this subroutine takes a list of delay values and associates 2951 them with a given line. it does this by searching the chain of de 2952 tables starting at .crdly, and if it finds one matching the 2953 supplied values it increases its reference count; if 2954 none is found, it chains a new one on to the end. t.dtp is 2955 updated accordingly. 2956 2957 input: 2958 x1 -> virtual tib address 2959 x2 -> array of 6 delay values 2960 2961 04252 2962 makdly subr mak,(x2,x3) 2963 04263 473 006 0 2964 ilq dl.siz-dl.hsz count of values 04264 0 41 775 4261 2965 ldx3 maksx2-* use x3 for tbl clobberably 04265 3 20 000 0 2966 mak010 szn 0,3 find out if all are zero 04266 0 64 007 4275 2967 tnz mak020-* clearly not 04267 373 001 0 2968 iacx3 1 check next 04270 573 777 0 2969 iaq -1 are there more? 04271 0 64 774 4265 2970 tnz mak010-* yes 04272 673 000 0 2971 ila 0 04273 4333 00 0 2972 cax3 indicate no table 04274 0 71 010 4304 2973 tra mak030-* and go delete old one 2974 04275 2975 mak020 null 04275 0 41 070 4365 2976 ldx3 a.p001-* addr (.crdly) -- start looking at existing tables 04276 473 006 0 2977 ilq dl.siz-dl.hsz table size 04277 4 10 071 4370 2978 tsy a.p004-*,* (=cmptbl) x2 -> table 04300 0 71 010 4310 2979 tra mak040-* didnt find it, x3 is last 2980 come here if corresponding table already exists 04301 1 61 037 0 2981 cmpx3 t.dtp,1 already in use by this line? 04302 0 74 004 4306 2982 tze makret-* yes, nothing to do 04303 3 76 002 0 2983 aos dl.rfc,3 up the reference count 2984 04304 2985 mak030 null here to update t.dtp and free old table 04304 0 10 007 4313 2986 tsy deldly-* free old one end of binary card 00000063 04305 1 50 037 0 2987 stx3 t.dtp,1 save it in tib 2988 04306 2989 makret return makdly 04310 2990 mak040 null table does not already exist 04310 473 011 0 2991 ilq dl.siz allocate a new block 04311 4 10 055 4366 2992 tsy a.p002-*,* =newtbl 04312 0 71 772 4304 2993 tra mak030-* 2994 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 112 deldly -- free delay table 2995 ttls deldly -- free delay table 2996 2997 frees delay table pointed to by t.dtp 2998 if reference count > 1, just reduces it 2999 3000 x1 -> virtual tib address 3001 3002 04313 3003 deldly subr dld,(x3) 3004 04321 473 011 0 3005 ilq dl.siz use delay tbl size 04322 2332 00 0 3006 cx1a use t.dtp 04323 773 037 0 3007 iaa t.dtp 04324 4333 00 0 3008 cax3 get tbl ptr in x3 04325 0 10 003 4330 3009 tsy deltbl-* 04326 3010 return deldly 3011 3012 delete any table 3013 delay or echnego 3014 x1 = tib (not used) 3015 x3 = ptr to tib tbl ptr word 3016 q = size of table (for fremem) 3017 04330 3018 deltbl subr del,(x1,x2,x3,q) 04347 3 41 000 0 3019 ldx3 0,3 is there an old table? 04350 0 74 013 4363 3020 tze delret-* no, forget it 3021 04351 3 07 002 0 3022 lda dl.rfc,3 anyone else using it? 04352 773 777 0 3023 iaa -1 04353 3 17 002 0 3024 sta dl.rfc,3 decrement ref count 04354 0 64 007 4363 3025 tnz delret-* someone else wants it, leave it alone 3026 end of binary card 00000064 04355 3 43 001 0 3027 ldx1 dl.bck,3 get pointer to previous block 04356 3 03 000 0 3028 ldx2 dl.fwd,3 and next one 04357 0 74 002 4361 3029 tze 2 is no next one 04360 2 53 001 0 3030 stx1 dl.bck,2 if there is, attach it to previous one 04361 1 13 000 0 3031 stx2 dl.fwd,1 correct previous block's forward ptr 3032 note: even if freed block is first one, its 3033 backptr points to .crdly or .cretb 3034 3035 q has right size at this point. 04362 4 10 005 4367 3036 tsy a.p003-*,* =fremem 3037 04363 3038 delret return deltbl 3039 3040 3041 04365 0 00667 0 3042 a.p001 ind .crdly 04366 0 04430 1 3043 a.p002 ind newtbl assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 113 deldly -- free delay table 04367 0 10400 3 3044 a.p003 ind fremem 04370 0 04371 1 3045 a.p004 ind cmptbl 3046 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 114 table sharing routines 3047 ttls table sharing routines 3048 3049 compare tables for sharing 3050 x1 => tib (saved, not used) 3051 x2 => values in table 3052 x3 -> chain head 3053 q = size of table data 3054 04371 3055 cmptbl subr cmt,(x2,q) 3056 04402 3057 cmt010 null 04402 3 07 000 0 3058 lda 0,3 get next in chain 04403 0 74 022 4425 3059 tze cmt050-* there are no more 04404 0 17 023 4427 3060 sta cmtbuf-* 04405 4333 00 0 3061 cax3 find out if this one matches new one 04406 373 003 0 3062 iacx3 dl.hsz start at first value 04407 2 07 000 0 3063 cmt020 lda 0,2 04410 3 27 000 0 3064 cmpa 0,3 values equal? 04411 0 74 005 4416 3065 tze cmt030-* yes, look at next 04412 0 41 015 4427 3066 ldx3 cmtbuf-* no, see if there are more in chain 04413 0 03 765 4400 3067 ldx2 cmtsx2-* restore pointer to first value 04414 0 47 765 4401 3068 ldq cmtsq-* restore count 04415 0 71 765 4402 3069 tra cmt010-* 3070 04416 573 777 0 3071 cmt030 iaq -1 checked all values? 04417 0 74 004 4423 3072 tze cmt040-* yes, we've found matching table 04420 273 001 0 3073 iacx2 1 no, move to next value 04421 373 001 0 3074 iacx3 1 04422 0 71 765 4407 3075 tra cmt020-* and test again 3076 04423 0 41 004 4427 3077 cmt040 ldx3 cmtbuf-* end of binary card 00000065 04424 0 76 745 4371 3078 aos cmptbl-* 04425 3079 cmt050 return cmptbl 3080 04427 3081 cmtbuf bss 1 3082 3083 3084 subr to allocate a new table 3085 x2 -> table data 3086 x3 -> end of previous chain 3087 q = data size, incl.header 3088 return x3 -> new block 3089 04430 3090 newtbl subr nwt,(x2,x3,q) 3091 04444 4 10 027 4473 3092 tsy a.p501-*,* =getmem 04445 3093 die 10 if we can't get one, horrors. 04446 0 50 026 4474 3094 stx3 nwttmp-* this is the new one 3095 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 115 table sharing routines 04447 0 03 773 4442 3096 ldx2 nwtsx3-* thread it to previous one 04450 3 13 001 0 3097 stx2 dl.bck,3 04451 2 50 000 0 3098 stx3 dl.fwd,2 04452 673 001 0 3099 ila 1 initialize reference count 04453 3 17 002 0 3100 sta dl.rfc,3 04454 373 003 0 3101 iacx3 dl.hsz point to first value 04455 0 03 764 4441 3102 ldx2 nwtsx2-* restore pointer to supplied values 04456 0 47 765 4443 3103 ldq nwtsq-* get table length 04457 573 775 0 3104 iaq -dl.hsz dont copy the header! 04460 2 07 000 0 3105 nwt010 lda 0,2 04461 3 17 000 0 3106 sta 0,3 04462 573 777 0 3107 iaq -1 got 'em all ? 04463 0 74 004 4467 3108 tze nwt020-* yes 04464 273 001 0 3109 iacx2 1 no, get another 04465 373 001 0 3110 iacx3 1 04466 0 71 772 4460 3111 tra nwt010-* 04467 3112 nwt020 null 04467 0 41 005 4474 3113 ldx3 nwttmp-* 04470 0 50 752 4442 3114 stx3 nwtsx3-* 04471 3115 return newtbl 3116 end of binary card 00000066 04473 0 12000 3 3117 a.p501 ind getmem 04474 3118 nwttmp bss 1 3119 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 116 makecn - make echnego table 3120 ttls makecn - make echnego table 3121 3122 make an echo negotiation bit table 3123 try to share it like a delay table 3124 3125 04475 3126 makecn subr mnt,(x2,x3) 3127 04506 3128 mnt010 null 04506 0 41 016 4524 3129 ldx3 a.y001-* addr (.cretb) -- start looking at existing tables 04507 473 020 0 3130 ilq ecnlen table size 04510 4 10 015 4525 3131 tsy a.y002-*,* (=cmptbl) x2 -> table 04511 0 71 010 4521 3132 tra mnt040-* didnt find it, x3 is last 3133 come here if corresponding table already exists 04512 1 61 044 0 3134 cmpx3 t.entp,1 already in use by this line? 04513 0 74 004 4517 3135 tze mnt030-* yes, nothing to do 04514 3 76 002 0 3136 aos dl.rfc,3 up the reference count 3137 04515 3138 mnt020 null here to update t.dtp and free old table 04515 0 10 012 4527 3139 tsy deletb-* free old one 04516 1 50 044 0 3140 stx3 t.entp,1 save it in tib 3141 04517 3142 mnt030 return makecn 04521 3143 mnt040 null table does not already exist 04521 473 023 0 3144 ilq dl.hsz+ecnlen allocate a new block 04522 4 10 004 4526 3145 tsy a.y003-*,* =newtbl 04523 0 71 772 4515 3146 tra mnt020-* 3147 3148 04524 0 00700 0 3149 a.y001 ind .cretb 04525 0 04371 1 3150 a.y002 ind cmptbl 04526 0 04430 1 3151 a.y003 ind newtbl 3152 3153 free echo negotiation table 04527 3154 deletb subr dle,(x3) 3155 04535 473 023 0 3156 ilq dl.hsz+ecnlen 04536 2332 00 0 3157 cx1a 04537 773 044 0 3158 iaa t.entp end of binary card 00000067 04540 4333 00 0 3159 cax3 04541 4 10 003 4544 3160 tsy a.y501-*,* (=deltbl) 04542 3161 return deletb 3162 04544 0 04330 1 3163 a.y501 ind deltbl 3164 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 117 ecgifl -- echnego input flush (to 6180) 3165 ttls ecgifl -- echnego input flush (to 6180) 3166 send icp chains off to dcp chain (dia queue) 3167 so echnego sync requests work. 3168 04545 3169 ecgifl subr ecf 3170 04550 1 20 005 0 3171 szn t.icp,1 do we have an icp chain? 04551 0 74 003 4554 3172 tze ecfret-* 04552 473 112 0 3173 ilq accin send accept input 04553 4 10 003 4556 3174 tsy a.y601-*,* (denq) 04554 3175 ecfret return ecgifl 3176 04556 0 00630 1 3177 a.y601 ind denq 3178 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 118 rblast -- subroutine to set up dcw for reading blast mess 3179 ttls rblast -- subroutine to set up dcw for reading blast message 3180 3181 mailbox address passed in x3 3182 address field of mailbox (word 10) points to 3183 6-buffer area containing blast message in three languages 3184 (two buffers per message) 3185 04557 3186 rblast subr rbl,(x3) 04565 0 03 123 4710 3187 ldx2 a.t003-* (dcws) 04566 4 13 123 4711 3188 stx2 a.t004-*,* (dcwadr) tell conect to use usual dcw place 04567 673 004 0 3189 ila 4 04570 4 17 122 4712 3190 sta a.t005-*,* dcwlen 3191 04571 3 07 012 0 3192 lda sm.adr,3 get cs address 04572 473 076 0 3193 ilq diactf read cs opcode 04573 2 14 000 0 3194 staq 0,2 into dcw 04574 473 300 0 3195 ilq 6*bufsiz get three double buffers together 04575 4 10 111 4706 3196 tsy a.t001-*,* (getbfh) 04576 3197 die 10 oh my god 04577 4 17 115 4714 3198 sta a.t007-*,* (blbuf) for dtrans 04600 473 140 0 3199 ilq 3*bufsiz 3 buffers worth of 36-bit words 04601 2 14 002 0 3200 staq 2,2 put in dcw 04602 0 07 120 4722 3201 lda l.t005-* =absflg 04603 2 72 003 0 3202 orsa 3,2 put absolute address flag in dcw 04604 273 004 0 3203 iacx2 4 next dcw 04605 3332 00 0 3204 cx2a end of binary card 00000068 04606 4333 00 0 3205 cax3 into x3 for bdisc 04607 4 10 104 4713 3206 tsy a.t006-*,* (bdisc) build disconnect dcw 04610 3207 return rblast done assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 119 acusr -- subroutine to handle dial out request 3208 ttls acusr -- subroutine to handle dial out request 3209 3210 this routine sets the tfacu flag in the tib and then 3211 it copies the phone number that has been passed 3212 to the fnp in the command data portion of the mailbox 3213 into a buffer (coverting the 6bit bcd into 9bit) 3214 and invokes the control table interpreter at the test state 3215 entry. 3216 04612 3217 acusr subr acu 3218 04615 1 07 036 0 3219 lda t.flg3,1 was the channel masked? 04616 0 31 105 4723 3220 cana l.t006-* =tfmask 04617 0 74 002 4621 3221 tze acu005-* no 04620 4 10 075 4715 3222 tsy a.t008-*,* (hunmsk) if so, unmask it now 04621 3223 acu005 null 3224 04621 3225 trace mt.acu,tr.mbx,(sm.cdl(3),sm.cd(3),sm.cd+1(3),sm.cd+2(3),s 04621 3226 etc m.cd+3(3)) 3227 04645 0 07 051 4716 3228 lda l.t001-* (tfacu) 04646 1 72 002 0 3229 orsa t.flg2,1 set flag on 3230 now to get a buffer 04647 3 07 002 0 3231 lda sm.cdl,3 get number of digits 04650 0 34 054 4724 3232 ana l.t007-* (low-order 9 bits only) 04651 0 65 002 4653 3233 tpl acu010-* must be at least 1 digit 04652 3234 die 8 bad acu request, stop 3235 04653 3236 acu010 null 04653 3333 00 0 3237 cx3a getbuf restores all but x3 04654 0332 00 0 3238 cax2 x2 will contain addr of mailbox 04655 473 040 0 3239 ilq bufsiz get a buffers worth 04656 4 10 030 4706 3240 tsy a.t001-*,* (getbuf) 04657 3241 die 10 no buffers means bad problems end of binary card 00000069 04660 1 50 012 0 3242 stx3 t.ocp,1 remember absolute addr of buffer 04661 2 47 002 0 3243 ldq sm.cdl,2 get number of digits 04662 4336 11 0 3244 qls 9 reduce to lower half-word only 04663 6337 11 0 3245 qrl 9 04664 3 57 001 0 3246 stq 1,3 store as tally in buffer 04665 373 002 0 3247 iacx3 bf.dta set x3 to addr of data part of buffer 04666 273 004 0 3248 iacx2 sm.cd set x2 to addr of command data part of mailbox 3249 3250 now to copy 6bit chars from mailbox into 3251 9bit chars in buffer. number of characters 3252 to move is in q. 3253 04667 3332 00 0 3254 cx2a 04670 0 37 027 4717 3255 ora l.t002-* (0,c.0) change x2 to 6bit chars 04671 0332 00 0 3256 cax2 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 120 acusr -- subroutine to handle dial out request 04672 3333 00 0 3257 cx3a 04673 0 37 025 4720 3258 ora l.t003-* (0,b.0) change x3 to 9bit chars 04674 4333 00 0 3259 cax3 3260 04675 3261 acumvc null 04675 2 07 400 0 3262 lda 0,2,c.0 load 6bits right justified (other bits of q are z 04676 3 17 200 0 3263 sta 0,3,b.0 store rightmost 9bits 04677 273 500 0 3264 iacx2 0,c.1 move 1 char to right 04700 373 300 0 3265 iacx3 0,b.1 move 1 byte to right 04701 573 777 0 3266 iaq -1 decrement count of digits remaining 04702 0 65 773 4675 3267 tpl acumvc-* stop when count goes to zero 04703 4 10 004 4707 3268 tsy a.t002-*,* (itest) 04704 3269 return acusr 3270 04706 0 11400 3 3271 a.t001 ind getbuf 04707 0 03400 3 3272 a.t002 ind itest "test_state" entry of interpreter 04710 0 06150 1 3273 a.t003 ind dcws 04711 0 06146 1 3274 a.t004 ind dcwadr 04712 0 06147 1 3275 a.t005 ind dcwlen 04713 0 06004 1 3276 a.t006 ind bdisc 04714 0 01672 1 3277 a.t007 ind blbuf place to store address of blast buffers 04715 0 14000 3 3278 a.t008 ind hunmsk 3279 04716 000020 0 3280 l.t001 vfd 18/tfacu 04717 4 00000 0 3281 l.t002 zero 0,c.0 for setting '6bit char mode' 04720 2 00000 0 3282 l.t003 zero 0,b.0 for setting '9bit char mode' 04721 1 00000 0 3283 l.t004 zero 0,w.2 for setting 36-bit mode 04722 400000 0 3284 l.t005 vfd 18/absflg 04723 020000 0 3285 l.t006 vfd 18/tfmask 04724 000777 0 3286 l.t007 oct 000777 3287 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 121 fetch -- subroutine to get next item to satisfy an rcd 3288 ttls fetch -- subroutine to get next item to satisfy an rcd 3289 3290 this routine first checks error message queue; 3291 otherwise entry is taken from queue for a tib 3292 inputs: none 3293 3294 outputs: 3295 x2: pointer to queue entry 3296 04725 3297 fetch subr fet,(a,q,x3) end of binary card 00000070 3298 04741 4 20 044 5005 3299 szn a.o001-*,* (=errqbf) anyting in error queue? 04742 0 74 004 4746 3300 tze fet010-* no 04743 0 07 043 5006 3301 lda a.o002-* (=errqtb) addr of simulated tib table 04744 4 17 046 5012 3302 sta a.o007-*,* (=curque) 04745 0 71 016 4763 3303 tra fet050-* 3304 04746 3305 fet010 null 04746 0 03 047 5015 3306 ldx2 dqcur-* look at tib table entry whose turn it is 04747 0 64 002 4751 3307 tnz fet020-* if it's never been set, 04750 4 03 040 5010 3308 ldx2 a.o004-*,* set it to .crttb 04751 3309 fet020 null 04751 4 23 036 5007 3310 cmpx2 a.o003-*,* (.crtte) time to wrap around? 04752 0 64 002 4754 3311 tnz 2 04753 4 03 035 5010 3312 ldx2 a.o004-*,* .crttb 3313 04754 2 20 001 0 3314 szn qbuf,2 is there a queue for this line? 04755 0 64 005 4762 3315 tnz fet040-* yes, go get something out of it 04756 3316 fet030 null 04756 273 002 0 3317 iacx2 2 look at next tib entry 04757 0 23 036 5015 3318 cmpx2 dqcur-* have we gone all the way around? 04760 0 64 771 4751 3319 tnz fet020-* 04761 3320 die 9 yes, spurious rcd 3321 04762 4 13 030 5012 3322 fet040 stx2 a.o007-*,* (=curque) save current tib table entry 04763 4 10 030 5013 3323 fet050 tsy a.o008-*,* (=getqhd) get head of queue 04764 3324 die 8 queue can't be empty 3325 04765 2 07 000 0 3326 lda 0,2 pick up first word of entry 04766 0 65 003 4771 3327 tpl fet060-* not already picked up 04767 4 03 023 5012 3328 ldx2 a.o007-*,* pick up current queue 04770 0 71 766 4756 3329 tra fet030-* back tp bump to next 04771 022 377 0 3330 fet060 iana 255 mask down to opcode 04772 0 64 002 4774 3331 tnz 2 make sure it's more or less legal 04773 3332 die 8 3333 04774 0 07 020 5014 3334 lda l.o001-* (=400000) set active bit 04775 2 72 000 0 3335 orsa 0,2 04776 4 41 014 5012 3336 ldx3 a.o007-*,* (curque) get current tib table entry assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 122 fetch -- subroutine to get next item to satisfy an rcd end of binary card 00000071 04777 0 61 007 5006 3337 cmpx3 a.o002-* (errqtb) is it error queue? 05000 0 74 003 5003 3338 tze fetbak-* yes 05001 373 002 0 3339 iacx3 2 bump i/o queue to next tib 05002 0 50 013 5015 3340 stx3 dqcur-* 05003 3341 fetbak return fetch 3342 3343 05005 0 01250 1 3344 a.o001 ind errqbf 05006 0 01247 1 3345 a.o002 ind errqtb 05007 0 00666 0 3346 a.o003 ind .crtte 05010 0 00665 0 3347 a.o004 ind .crttb 3348 05011 0 07072 1 3349 a.o006 ind dlqent 05012 0 06726 1 3350 a.o007 ind curque 05013 0 07154 1 3351 a.o008 ind getqhd 3352 05014 400000 0 3353 l.o001 oct 400000 3354 05015 0 00000 0 3355 dqcur ind 0 pointer to entry in tib table whose turn it is assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 123 getque -- finds entry in tib i/o queue list 3356 ttls getque -- finds entry in tib i/o queue list 3357 3358 this subroutine finds the entry in the tib i/o queue list 3359 for a given tib 3360 3361 input: 3362 a: real tib address 3363 3364 output: 3365 x2: address of entry in list 3366 3367 if there is none, we will crash 3368 05016 3369 getque subr gtq 3370 05021 4 03 767 5010 3371 ldx2 a.o004-*,* (.crttb) get pointer to tib table base 05022 3372 gtq010 null 05022 2 27 000 0 3373 cmpa qtib,2 is this the one? 05023 0 74 005 5030 3374 tze gtqbak-* yes, we got it 05024 273 002 0 3375 iacx2 2 no, look at next 05025 4 23 762 5007 3376 cmpx2 a.o003-*,* (.crtte) 05026 0 64 774 5022 3377 tnz gtq010-* if there are any more 05027 3378 die 22 else crash 3379 05030 4 13 762 5012 3380 gtqbak stx2 a.o007-*,* (=curque) save current queue addr 05031 3381 return getque assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 124 reject -- subroutine to reschedule rejected accept input 3382 ttls reject -- subroutine to reschedule rejected accept input 3383 3384 this subroutine finds the rejected accept input for the tib 3385 pointed to by x1, marks it "rejected", and schedules 3386 dretry routine to try it again a second later 3387 3388 x1 - virtual tib address 3389 05033 3390 reject subr rej 05036 4 07 023 5061 3391 lda a.q001-*,* (tibadr) need real tib address for getque 05037 0 10 757 5016 3392 tsy getque-* 3393 x2 -> tib queue entry 05040 4 10 024 5064 3394 tsy a.q004-*,* (=getqai) find first accept input 05041 3395 die 16 better be one 05042 4 20 023 5065 3396 szn a.q005-*,* (=nonnai) better be nothing before it 05043 0 74 002 5045 3397 tze 2 05044 3398 die 16 3399 05045 2 07 000 0 3400 lda 0,2 is there a quit or hangup behind it? end of binary card 00000072 05046 0 31 020 5066 3401 cana l.q001-* =quitfl 05047 0 74 003 5052 3402 tze rej040-* no 05050 4 10 012 5062 3403 tsy a.q002-*,* (cleanq) yes, remove all accept inputs 3404 from queue 05051 0 71 006 5057 3405 tra rejbak-* 3406 05052 3407 rej040 null mark entry rejected 05052 0 37 015 5067 3408 ora l.q002-* =rejflg 05053 2 17 000 0 3409 sta 0,2 05054 4 43 005 5061 3410 ldx1 a.q001-*,* (tibadr) need real address for dspqur 05055 0 04 013 5070 3411 ldaq l.q003-* delay time, priority, and address of dretry 05056 4 10 005 5063 3412 tsy a.q003-*,* dspqur 3413 05057 3414 rejbak return reject 3415 3416 05061 0 02365 1 3417 a.q001 ind tibadr real tib address 05062 0 05072 1 3418 a.q002 ind cleanq 05063 0 06400 3 3419 a.q003 ind dspqur 05064 0 07167 1 3420 a.q004 ind getqai 05065 0 06731 1 3421 a.q005 ind nnonai 3422 05066 100000 0 3423 l.q001 vfd 18/quitfl 05067 200000 0 3424 l.q002 vfd 18/rejflg 05070 3425 even 05070 000101 0 3426 l.q003 vfd 12/1,6/rtprty delay time, priority, and address 05071 0 01117 1 3427 ind dretry for scheduling dretry assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 125 cleanq -- remove accept inputs from queue with a reject 3428 ttls cleanq -- remove accept inputs from queue with a reject 3429 3430 this routine is called to remove all accept input requests 3431 from a line's i/o queue so that quits and hangups will go 3432 through although an input request has been rejected 3433 3434 input: 3435 x1: virtual tib address 3436 x2: address of first accept input in queue 3437 05072 3438 cleanq subr cle,(a,q,x2,x3) 3439 05111 1 07 026 0 3440 lda t.dcp,1 free any input chain(s) 05112 0 74 005 5117 3441 tze cle003-* 05113 4 10 027 5142 3442 tsy a.r001-*,* frelbf 05114 1 56 026 0 3443 stz t.dcp,1 05115 1 56 027 0 3444 stz t.dlst,1 05116 1 56 041 0 3445 stz t.dcpl,1 05117 3446 cle003 null end of binary card 00000073 05117 1 07 005 0 3447 lda t.icp,1 05120 0 74 005 5125 3448 tze cle006-* 05121 4 10 021 5142 3449 tsy a.r001-*,* 05122 1 56 005 0 3450 stz t.icp,1 05123 1 56 006 0 3451 stz t.ilst,1 05124 1 56 007 0 3452 stz t.icpl,1 3453 05125 3454 cle006 null 05125 4 07 740 5065 3455 lda a.q005-*,* (=nnonai) number of queue entries before first ac 05126 0 17 020 5146 3456 sta savnai-* will need this in a second 05127 4 10 015 5144 3457 tsy a.r003-*,* (=dlqent) delete the accept inpuut 05130 4 10 015 5145 3458 cle010 tsy a.r004-*,* (=getqai) find first accept input again 05131 0 71 003 5134 3459 tra cle020-* none, queue is clean 05132 4 10 012 5144 3460 tsy a.r003-*,* (=dlqent) delete this accept input 05133 0 71 775 5130 3461 tra cle010-* back to find another 05134 4 07 731 5065 3462 cle020 lda a.q005-*,* (=nnonai) this is total entries now in queue 05135 0 26 011 5146 3463 sba savnai-* subtract out number before the first accin 3464 that used to be there and get the number 3465 if new mailboxes needed 05136 0 74 002 5140 3466 tze 2 were none, do nothing 05137 4 16 004 5143 3467 asa a.r002-*,* qcnt 3468 05140 3469 return cleanq 3470 3471 05142 0 10000 3 3472 a.r001 ind frelbf 05143 0 00620 1 3473 a.r002 ind qcnt 05144 0 07072 1 3474 a.r003 ind dlqent 05145 0 07167 1 3475 a.r004 ind getqai 3476 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 126 cleanq -- remove accept inputs from queue with a reject 05146 3477 savnai bss 1 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 127 incnt -- subroutine to get input character count 3478 ttls incnt -- subroutine to get input character count 3479 3480 this subroutine gets count of input characters 3481 for "accept input" in order to send the count to the 3482 cs 3483 it also sets the "break" flag in the mailbox if appropriate 3484 3485 x1 -- virtual tib address 3486 x3 -- mailbox address 3487 05147 3488 incnt subr inc,(x2,x3) 3489 05160 0 56 161 5341 3490 stz icount-* initialize character count 05161 0 56 161 5342 3491 stz iflags-* and break char flag 05162 0 56 156 5340 3492 stz nbufs-* and buffer count 05163 0 07 143 5326 3493 lda a.h001-* addr (tallys) 05164 0 17 163 5347 3494 sta tallyp-* initialize temporary tally array pointer end of binary card 00000074 05165 1 07 026 0 3495 lda t.dcp,1 point to beginning of input chain 3496 05166 3497 inc010 null 05166 0 76 152 5340 3498 aos nbufs-* bump buffer count 05167 4 10 141 5330 3499 tsy a.h003-*,* setbpt 05170 0332 00 0 3500 cax2 get virtual address 05171 2 07 001 0 3501 lda bf.tly,2 get tally from buffer 05172 0 34 137 5331 3502 ana l.h001-* =buftmk 05173 0 64 002 5175 3503 tnz 2 if it's zero, something's very wrong 05174 3504 die 21 3505 05175 0 16 144 5341 3506 asa icount-* add it into count 05176 4 17 151 5347 3507 sta tallyp-*,* save it in temporary array 05177 0 76 150 5347 3508 aos tallyp-* bump array pointer 05200 2 07 001 0 3509 lda bf.flg,2 is break flag in buffer on? 05201 0 31 131 5332 3510 cana l.h002-* =bffbrk 05202 0 74 003 5205 3511 tze inc020-* 05203 473 001 0 3512 ilq 1 05204 0 57 136 5342 3513 stq iflags-* yes, turn it on in mailbox 3514 05205 3515 inc020 null last buffer? 05205 0 31 126 5333 3516 cana l.h003-* =bfflst 05206 0 74 115 5323 3517 tze inc030-* no, go to next 3518 else we're done 05207 3519 trace mt.inc,tr.que,(icount,t.line(1)) 3520 05222 1 20 012 0 3521 szn t.ocp,1 is there any kind of output chain? 05223 0 64 003 5226 3522 tnz inc025-* 05224 1 20 013 0 3523 szn t.ocur,1 05225 0 74 003 5230 3524 tze inc040-* no 3525 05226 673 002 0 3526 inc025 ila 2 yes, set flag in command data assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 128 incnt -- subroutine to get input character count 05227 0 72 113 5342 3527 orsa iflags-* 3528 05230 0 07 112 5342 3529 inc040 lda iflags-* store flags 05231 3 17 066 0 3530 sta sm.fcd,3 05232 0 07 107 5341 3531 lda icount-* get total char count 05233 422 144 0 3532 icmpa mbxmax will it fit in mailbox? end of binary card 00000075 05234 0 75 021 5255 3533 tmi inc050-* yes, go copy the data 05235 3 17 002 0 3534 sta sm.ict,3 no, put the char count in the mbx 05236 0 07 071 5327 3535 lda a.h002-* addr (sm.dcw)+1 05237 0 17 111 5350 3536 sta incdcw-* initialize pointer to dcws in mbx 05240 673 000 0 3537 ila 0 05241 0 47 077 5340 3538 ldq nbufs-* get number of buffers in chain 05242 3 14 004 0 3539 staq sm.nbf,3 put it in mbx 3540 we'll count it in q 05243 0 07 063 5326 3541 lda a.h001-* reinitialize pointer to temp array of tallies 05244 0 17 103 5347 3542 sta tallyp-* 3543 05245 4 07 102 5347 3544 inc045 lda tallyp-*,* get next tally 05246 4 17 102 5350 3545 sta incdcw-*,* store it in mbx 05247 573 777 0 3546 iaq -1 count it 05250 0 74 051 5321 3547 tze incbak-* finished when we reach zero 05251 0 76 076 5347 3548 aos tallyp-* bump pointers 05252 673 002 0 3549 ila 2 05253 0 16 075 5350 3550 asa incdcw-* 05254 0 71 771 5245 3551 tra inc045-* back for next one 3552 05255 673 102 0 3553 inc050 ila inmbx change opcode 05256 0336 11 0 3554 als 9 to "input in mailbox" 05257 122 001 0 3555 iora rcd (keep it rcd) 05260 3 17 003 0 3556 sta sm.op,3 05261 3333 00 0 3557 cx3a 05262 0 06 053 5335 3558 ada l.h006-* (sm.dat,b.0) point x3 at mailbox data area 05263 4333 00 0 3559 cax3 05264 1 07 026 0 3560 lda t.dcp,1 point x2 at input chain 05265 0 17 262 5547 3561 sta oldhed-* save it for later freeing 05266 0 56 053 5341 3562 stz icount-* start count over 05267 4 10 041 5330 3563 inc060 tsy a.h003-*,* setbpt 05270 0332 00 0 3564 cax2 05271 2 07 001 0 3565 lda bf.tly,2 05272 0 34 037 5331 3566 ana l.h001-* buftmk 05273 0 16 046 5341 3567 asa icount-* keep count of total number 05274 0 13 051 5345 3568 stx2 ibufp-* remember current buffer address 05275 6333 00 0 3569 caq hold running count in q 05276 3332 00 0 3570 cx2a 05277 0 06 037 5336 3571 ada l.h007-* (bf.dta,b.0) get pointer to data in buffer 05300 0332 00 0 3572 cax2 05301 2 07 200 0 3573 inc080 lda 0,2,b.0 get a character form the buffer 05302 3 17 200 0 3574 sta 0,3,b.0 store it in mailbox end of binary card 00000076 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 129 incnt -- subroutine to get input character count 05303 273 300 0 3575 iacx2 0,b.1 bump pointers 05304 373 300 0 3576 iacx3 0,b.1 05305 573 777 0 3577 iaq -1 count the character 05306 0 64 773 5301 3578 tnz inc080-* if more, go get the next one 05307 0 03 036 5345 3579 ldx2 ibufp-* no more, get buffer pointer back in x2 05310 2 07 001 0 3580 lda bf.flg,2 last one? 05311 0 31 022 5333 3581 cana l.h003-* bfflst 05312 0 64 003 5315 3582 tnz inc090-* yes, wrap it up 05313 2 07 000 0 3583 lda bf.nxt,2 no, get forward pointer 05314 0 71 753 5267 3584 tra inc060-* process next buffer 3585 05315 3586 inc090 null 05315 0 07 024 5341 3587 lda icount-* get final count 05316 0 41 641 5157 3588 ldx3 incsx3-* get saved mailbox address 05317 3 17 002 0 3589 sta sm.ict,3 05320 0 76 026 5346 3590 aos shinp-* set flag showing short input in progress 3591 05321 3592 incbak return incnt 3593 05323 3594 inc030 null 05323 2 07 000 0 3595 lda bf.nxt,2 05324 0 64 642 5166 3596 tnz inc010-* go process next buffer 3597 if there isn't one, something's wrong 05325 3598 die 11 3599 3600 3601 3602 05326 0 05351 1 3603 a.h001 ind tallys pointer to tally array 05327 3 00007 0 3604 a.h002 ind sm.dcw+1,3 pointer to lower half of dcws 05330 0 17400 3 3605 a.h003 ind setbpt 3606 3607 05331 000777 0 3608 l.h001 vfd 18/buftmk 05332 020000 0 3609 l.h002 vfd 18/bffbrk 05333 040000 0 3610 l.h003 vfd 18/bfflst 05334 777774 0 3611 l.h004 oct 777774 3612 *l.h005 unused 05335 2 00004 0 3613 l.h006 zero sm.dat,b.0 05336 2 00002 0 3614 l.h007 zero bf.dta,b.0 05337 777000 0 3615 l.h008 oct 777000 3616 05340 3617 nbufs bss 1 number of buffers processed so far 05341 3618 icount bss 1 number of characters processed 05342 3619 iflags bss 1 flags for sending back to multics 05343 3620 increm bss 1 amount by which tally has beeen adjusted 05344 3621 itally bss 1 05345 3622 ibufp bss 1 05346 3623 shinp bss 1 global dia_man flag indicating short input transa 05347 3624 tallyp bss 1 pointer to current element of tally array assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 130 incnt -- subroutine to get input character count 05350 3625 incdcw bss 1 pointer to current pseudo-dcw in mailbox 05351 3626 tallys bss 24 temporary array of buffer tallies assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 131 indata -- sets up dcw list for rtx 3627 ttls indata -- sets up dcw list for rtx 3628 3629 this subroutine sets up a dcw list for sending 3630 an input chain to the cs 3631 the mailbox in "savmbx" has the following information 3632 in (18-bit) words 8-11: 3633 3634 word 8: second address or 0 3635 word 9: second tally or 0 3636 word 10: data address 3637 word 11: tally 3638 3639 words 8 and 9 are only used if cs is supplying 3640 two addresses because of wraparound in its circular 3641 input buffer 3642 3643 tallies are in characters 3644 3645 x1: virtual tib address 3646 05401 3647 indata subr ind 05404 0 41 130 5534 3648 ldx3 a.i001-* addr(dcws) 05405 4 50 130 5535 3649 stx3 a.i002-*,* dcwadr 05406 0 50 142 5550 3650 stx3 curdcw-* initialize dcw pointer 05407 4 56 127 5536 3651 stz a.i003-*,* initialize dcwlen 05410 0 41 127 5537 3652 ldx3 a.i004-* addr(savmbx) -- get mailbox address 3653 end of binary card 00000077 05411 1 07 026 0 3654 lda t.dcp,1 get pointer to first buffer 05412 0 17 135 5547 3655 sta oldhed-* hang on to it for later freeing 05413 373 006 0 3656 iacx3 sm.dcw point to dcw array in mbx 05414 0 50 135 5551 3657 stx3 pdcwa-* 05415 0 56 136 5553 3658 stz nblks-* initialize this too 3659 05416 3660 ind010 null 05416 0 17 136 5554 3661 sta curabs-* save absolute address of current buffer 05417 4 10 124 5543 3662 tsy a.i008-*,* setbpt 05420 0332 00 0 3663 cax2 get virtual address 05421 2 07 001 0 3664 lda bf.siz,2 find out how many blocks long this buffer is 05422 2337 17 0 3665 arl 15 05423 773 001 0 3666 iaa 1 05424 0 16 127 5553 3667 asa nblks-* keep running count 05425 2 07 001 0 3668 lda bf.tly,2 get buffer tally 05426 0 34 116 5544 3669 ana l.i001-* =buftmk 05427 6333 00 0 3670 caq put tally in q 05430 0 07 124 5554 3671 lda curabs-* recover buffer address 05431 773 002 0 3672 iaa bf.dta get fnp address in a 05432 0 10 022 5454 3673 tsy indcw-* make the dcw 3674 05433 2 07 001 0 3675 lda bf.flg,2 is this last buffer? assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 132 indata -- sets up dcw list for rtx 05434 0 31 111 5545 3676 cana l.i002-* =bfflst 05435 0 64 004 5441 3677 tnz ind050-* yes,finish up 05436 2 07 000 0 3678 lda bf.nxt,2 no, get next buffer 05437 0 64 757 5416 3679 tnz ind010-* 05440 3680 die 11 bad news if there isn't one 3681 05441 3682 ind050 null no more input buffers 05441 0 47 112 5553 3683 ldq nblks-* 05442 0 10 052 5514 3684 tsy instrp-* take buffers of dcp chain 05443 0 41 105 5550 3685 ldx3 curdcw-* get dcw address 3686 to set timw bit 3687 and make interrupt and disconnect dcws 05444 4 10 076 5542 3688 tsy a.i007-*,* wtimw (which updates x3 itself) 05445 4 10 073 5540 3689 tsy a.i005-*,* bint 05446 373 004 0 3690 iacx3 4 05447 4 10 072 5541 3691 tsy a.i006-*,* bdisc 05450 673 010 0 3692 ila 8 update dcw length 05451 4 16 065 5536 3693 asa a.i003-*,* dcwlen 05452 3694 return indata all done 3695 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 133 indcw -- build dcw for indata 3696 ttls indcw -- build dcw for indata 3697 3698 input: 3699 a -- fnp address 3700 q -- tally in characters 3701 3702 curdcw contains address of dcw to be built 3703 pdcwa contains pointer to next pseudo-dcw 3704 containing cs address 3705 both of these are to be updated 3706 as is dcwlen (no. of 36-bit words in dcw list) 3707 05454 3708 indcw subr inw,(a,q,x3) end of binary card 00000078 3709 05470 0 41 060 5550 3710 ldx3 curdcw-* get dcw pointer 05471 573 003 0 3711 iaq 3 convert tally to words 05472 4337 02 0 3712 qrs 2 (words = (char+3)/4) 05473 3 14 002 0 3713 staq 2,3 put tally and fnp address in dcw 05474 0 07 052 5546 3714 lda l.i003-* =absflg 05475 3 72 003 0 3715 orsa 3,3 mark dcw for absolute addressing 05476 4 04 053 5551 3716 ldaq pdcwa-*,* get next absolute cs address 05477 2334 06 0 3717 llr 6 get low-order 18 bits in a 05500 4336 14 0 3718 qls 12 isolate high-order part of address 05501 6337 06 0 3719 qrl 6 it ends up in bits 24-29 of dcw 05502 3 14 000 0 3720 staq 0,3 store in dcw 3721 05503 673 075 0 3722 ila diaftc get opcode (fnp -> cs transfer) 05504 3 72 001 0 3723 orsa 1,3 store in dcw 05505 673 004 0 3724 ila 4 05506 0 16 042 5550 3725 asa curdcw-* update dcw pointer 05507 673 002 0 3726 ila 2 and list length 05510 4 16 026 5536 3727 asa a.i003-*,* dcwlen 05511 0 16 040 5551 3728 asa pdcwa-* 05512 3729 return indcw that's all assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 134 instrp -- subroutine to strip input buffers of t.dcp chai 3730 ttls instrp -- subroutine to strip input buffers of t.dcp chain 3731 3732 removes input buffers that have been sent from t.dcp chain 3733 and adjusts t.dcpl accordingly 3734 3735 input: 3736 q -- number of buffers in chain sent 3737 05514 3738 instrp subr ins,(q) 05522 1 07 041 0 3739 lda t.dcpl,1 we've removed some blocks from t.dcp chain 05523 0 26 776 5521 3740 sba inssq-* this many 05524 1 17 041 0 3741 sta t.dcpl,1 05525 2 07 000 0 3742 lda bf.nxt,2 save next-pointer from last buffer 05526 1 17 026 0 3743 sta t.dcp,1 will be head of next input chain end of binary card 00000079 05527 0 64 002 5531 3744 tnz 2 if there isn't another chain, 05530 1 56 027 0 3745 stz t.dlst,1 kill tail pointer 05531 2 56 000 0 3746 stz bf.nxt,2 zero next-pointer so chain can be freed 05532 3747 return instrp assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 135 storage for indata and indcw 3748 ttls storage for indata and indcw 3749 05534 0 06150 1 3750 a.i001 ind dcws 05535 0 06146 1 3751 a.i002 ind dcwadr 05536 0 06147 1 3752 a.i003 ind dcwlen 05537 0 02604 1 3753 a.i004 ind savmbx 05540 0 05772 1 3754 a.i005 ind bint 05541 0 06004 1 3755 a.i006 ind bdisc 05542 0 06501 1 3756 a.i007 ind wtimw 05543 0 17400 3 3757 a.i008 ind setbpt 3758 3759 05544 000777 0 3760 l.i001 vfd 18/buftmk 05545 040000 0 3761 l.i002 vfd 18/bfflst 05546 400000 0 3762 l.i003 vfd 18/absflg 3763 3764 05547 3765 oldhed bss 1 head of input chain being sent 05550 3766 curdcw bss 1 address of current dcw 05551 3767 pdcwa bss 1 address of current pseudo-dcw in mailbox 05552 3768 blimit bss 1 highest allowed cs address + one 05553 3769 nblks bss 1 number of 32-word blocks used by input chain 05554 3770 curabs bss 1 absolute address of current buffer 3771 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 136 rddcw -- set up dcw list to read cs dcw list 3772 ttls rddcw -- set up dcw list to read cs dcw list 3773 3774 this subroutine is called when a decoded mailbox 3775 contains a wtx command 3776 3777 the mailbox contains (in words 10-11) the address 3778 and length (in 36-bit words) of a cs dcw list 3779 for transmitting the output data 3780 3781 this routine creates dia dcw list to read the cs 3782 dcw list (the "pseudo-dcws") into a static area 3783 3784 x3 contains the mailbox address 3785 05555 3786 rddcw subr rdw,(x3) 3787 set up dcw address and length for conect 05563 0 03 127 5712 3788 ldx2 a.j001-* addr(dcws) 05564 4 13 127 5713 3789 stx2 a.j002-*,* dcwadr 05565 673 004 0 3790 ila 4 05566 4 17 126 5714 3791 sta a.j003-*,* dcwlen 3792 05567 3 04 012 0 3793 ldaq sm.adr,3 get address and length of cs dcw list 05570 0 27 762 5552 3794 cmpa blimit-* make sure it's probably in buffer area 05571 0 45 015 5606 3795 tnc rdw010-* it isn't 05572 0 57 133 5725 3796 stq ndcws-* save length 05573 2 57 003 0 3797 stq 3,2 put tally in dcw 05574 473 076 0 3798 ilq diactf get cs->fnp transfer opcode 05575 2 14 000 0 3799 staq 0,2 put it in dcw 3800 05576 0 07 121 5717 3801 lda a.j006-* get address of pseudo-dcw area (pdcws) 05577 2 17 002 0 3802 sta 2,2 put in fnp address of dcw 3803 05600 273 004 0 3804 iacx2 4 bump dcw pointer end of binary card 00000080 05601 3332 00 0 3805 cx2a copy it into x3 to make disconnect dcw 05602 4333 00 0 3806 cax3 05603 4 10 113 5716 3807 tsy a.j005-*,* bdisc 05604 3808 rdwbak return rddcw all done 3809 05606 3810 rdw010 die 20 3811 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 137 rddata -- set up dcw list to read output data 3812 ttls rddata -- set up dcw list to read output data 3813 3814 this subroutine uses the pseudo-dcws read from 3815 the cs by rddcw to set up a dia dcw list for 3816 reading in the output data itself 3817 3818 the dcws will be built in a static area (dcws) and 3819 a chain of buffers will be allocated for the data 3820 05607 3821 rddata subr rdd 3822 05612 0 43 100 5712 3823 ldx1 a.j001-* (dcws) get address of dcw list area 05613 4 53 100 5713 3824 stx1 a.j002-*,* (dcwadr) setup dcw list address for conect 05614 0 07 111 5725 3825 lda ndcws-* length of dcw list is 05615 773 001 0 3826 iaa 1 2*(ndcws+1) because of disconnect dcw 05616 0336 01 0 3827 als 1 05617 4 17 075 5714 3828 sta a.j003-*,* (dcwlen) setup dcw list length for conect 3829 05620 0 03 077 5717 3830 ldx2 a.j006-* get pointer to first pseudo-dcw 05621 0 56 105 5726 3831 stz rhead-* init head of chain addr 05622 0 56 105 5727 3832 stz rtail-* init tail of chain addr 05623 0 07 102 5725 3833 lda ndcws-* get number of dcws 05624 322 777 0 3834 iera -1 negate it 05625 773 001 0 3835 iaa 1 05626 0 17 102 5730 3836 sta dcwcnt-* init loop counter 3837 05627 3838 rdd010 null 05627 2 47 001 0 3839 ldq 1,2 get character tally 05630 0 64 002 5632 3840 tnz 2 zero ain't posssible 05631 3841 die 20 05632 573 103 0 3842 iaq 67 4 chars overhead + 63 to round up 05633 4337 06 0 3843 qrs 6 divide by 64 (chars per buffer) 05634 4336 05 0 3844 qls bufshf multiply by words per buffer 05635 4 10 060 5715 3845 tsy a.j004-*,* getbfh 05636 0 71 047 5705 3846 tra rdd030-* failed, go clean up 05637 6333 00 0 3847 caq put new buffer addr in q 05640 0 07 067 5727 3848 lda rtail-* get addr of prev buffer 05641 0 74 005 5646 3849 tze rdd015-* no prev buffer 05642 4 10 060 5722 3850 tsy a.j009-*,* setbpt 05643 4333 00 0 3851 cax3 05644 3 57 000 0 3852 stq bf.nxt,3 chain to next buffer 05645 0 71 002 5647 3853 tra 2 05646 0 57 060 5726 3854 rdd015 stq rhead-* save head of chain 05647 0 57 060 5727 3855 stq rtail-* save tail of chain end of binary card 00000081 05650 7333 00 0 3856 cqa put new buffer addr in a 05651 4 10 051 5722 3857 tsy a.j009-*,* setbpt 05652 4333 00 0 3858 cax3 convert it into x3 3859 05653 2 07 000 0 3860 lda 0,2 get cs address from pseudo-dcw assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 138 rddata -- set up dcw list to read output data 05654 0 74 035 5711 3861 tze rdd040-* zero address is unlikely to be right 05655 0 27 675 5552 3862 cmpa blimit-* so is one below the buffer area 05656 0 45 033 5711 3863 tnc rdd040-* 05657 473 076 0 3864 ilq diactf cs -> fnp transfer opcode 05660 1 14 000 0 3865 staq 0,1 put in dcw 05661 2 07 001 0 3866 lda 1,2 get character tally 05662 3 72 001 0 3867 orsa bf.tly,3 put it in buffer 05663 773 003 0 3868 iaa 3 convert to words 05664 0337 02 0 3869 ars 2 right-adjust 05665 0 37 037 5724 3870 ora l.j002-* =absflg 05666 0335 22 0 3871 lrs 18 and put in q 05667 0 07 040 5727 3872 lda rtail-* get absolute buffer address 05670 773 002 0 3873 iaa bf.dta get pointer to output buffer data 05671 1 14 002 0 3874 staq 2,1 put fnp address and tally in dcw 3875 05672 173 004 0 3876 iacx1 4 point to next place for dcw 05673 0 76 035 5730 3877 aos dcwcnt-* increment loop counter 05674 0 74 003 5677 3878 tze rdd020-* done if zero 05675 273 002 0 3879 iacx2 2 get addr of next pseudo-dcw 05676 0 71 731 5627 3880 tra rdd010-* build next dcw 3881 05677 3882 rdd020 null through building dcws 3883 except for disconnect 05677 2332 00 0 3884 cx1a put addr of next dcw ... 05700 4333 00 0 3885 cax3 in x3 (for bdisc) 05701 4 10 015 5716 3886 tsy a.j005-*,* bdisc 05702 0 76 705 5607 3887 aos rddata-* give success return 3888 05703 3889 rddbak return rddata 3890 05705 3891 rdd030 null couldn't allocate enough data buffers 05705 0 07 021 5726 3892 lda rhead-* must free data buffers 05706 0 74 775 5703 3893 tze rddbak-* none allocated yet 05707 4 10 012 5721 3894 tsy a.j008-*,* frelbf 05710 0 71 773 5703 3895 tra rddbak-* cleanup and take error exit 3896 05711 3897 rdd040 die 20 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 139 storage for rddcw and rddata 3898 ttls storage for rddcw and rddata 3899 05712 0 06150 1 3900 a.j001 ind dcws static dcw list area 05713 0 06146 1 3901 a.j002 ind dcwadr conect's address of base of dcw list 05714 0 06147 1 3902 a.j003 ind dcwlen length of dcw list (36-bit words) 05715 0 11000 3 3903 a.j004 ind getbfh subroutine to get a buffer from high memory 05716 0 06004 1 3904 a.j005 ind bdisc subroutine to make a disconnect dcw end of binary card 00000082 05717 0 05732 1 3905 a.j006 ind pdcws address of static pseudo-dcw area 05720 0 07400 3 3906 a.j007 ind frebuf subroutine to release a single buffer 05721 0 10000 3 3907 a.j008 ind frelbf subroutine to free linked list of buffers 05722 0 17400 3 3908 a.j009 ind setbpt subroutine to convert buffer address to 15-bit 3909 3910 05723 000777 0 3911 l.j001 vfd 18/buftmk 05724 400000 0 3912 l.j002 vfd 18/absflg absolute address ing in dcw 3913 3914 05725 3915 ndcws bss 1 number of cs dcws in list 05726 3916 rhead bss 1 address of head of allocated output chain 05727 3917 rtail bss 1 address of last buffer in allocated chain 05730 3918 dcwcnt bss 1 dcw loop counter 05731 233100 0 05732 3919 even 05732 3920 pdcws bss 16*2 space for reading in pseudo-dcws assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 140 bint -- builds an "interrupt cs" dcw 3921 ttls bint -- builds an "interrupt cs" dcw 3922 3923 interrupt cell assignment has been set by init 3924 from configuration status 3925 3926 x3 points to dcw to be built 3927 05772 3928 bint subr bin 3929 05775 0 04 023 6020 3930 ldaq intdcw-* get interrupt cell and opcode 05776 3 14 000 0 3931 staq 0,3 05777 0 07 020 6017 3932 lda l.z001-* 0,w.2 06000 473 000 0 3933 ilq 0 06001 3 14 002 0 3934 staq 2,3 this stuff will be ignored, but should be 36-bit 06002 3935 return bint 3936 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 141 bdisc -- builds a "disconnect" dcw 3937 ttls bdisc -- builds a "disconnect" dcw 3938 3939 a "disconnect" dcw will be put at the address 3940 pointed to by x3 3941 06004 3942 bdisc subr bdi 3943 06007 673 000 0 3944 ila 0 06010 473 070 0 3945 ilq diadis disconnect opcode 06011 3 14 000 0 3946 staq 0,3 06012 0 07 005 6017 3947 lda l.z001-* 0,w.2 (make unused fnp address 36-bit addressing) 06013 473 000 0 3948 ilq 0 06014 3 14 002 0 3949 staq 2,3 06015 3950 return bdisc 3951 06017 1 00000 0 3952 l.z001 zero 0,w.2 3953 06020 3954 even 06020 000000 0 3955 intdcw oct 0 06021 000073 0 3956 dindcw vfd 12/0,6/diainc interrupt cell is or'ed in at init time 3957 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 142 lock and unlock -- control the dia lock 3958 ttls lock and unlock -- control the dia lock 3959 3960 no new dia activity is initiated while the dia 3961 lock is locked 3962 06022 3963 lock subr loc,(inh) end of binary card 00000083 3964 06031 0 20 024 6055 3965 szn dilock-* lock already locked? 06032 0 74 002 6034 3966 tze 2 06033 3967 die 14 yes, we shouldn't be locking it again 3968 06034 0 07 766 6022 3969 lda lock-* no, lock it with address of caller 06035 0 17 020 6055 3970 sta dilock-* 06036 3971 return lock 3972 3973 3974 06040 3975 unlock subr unl,(inh) 3976 06047 0 20 006 6055 3977 szn dilock-* is it unlocked? 06050 0 64 002 6052 3978 tnz 2 06051 3979 die 15 then we shouldn't be trying to unlock it 3980 06052 0 56 003 6055 3981 stz dilock-* unlock it now 06053 3982 return unlock 3983 3984 06055 000000 0 3985 dilock oct 0 dia lock 3986 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 143 conect -- connect to the dia 3987 ttls conect -- connect to the dia 3988 3989 this subroutine is called when it's time to 3990 do a connect to the dia 3991 3992 it must: 3993 store the address and tally (36-bit words) 3994 of the dcw list in the list icw 3995 3996 calculate parity on all the dcws in the list 3997 3998 put the list icw address in the pcw mailbox 3999 4000 issue the connect 4001 4002 dcwadr is preset with the address of the dcw list 4003 dcwlen is preset with the number of 36-bit words 4004 this is so that in case of an i/o error we can 4005 just use the same dcw list again 4006 06056 4007 conect subr con,(inh) 4008 06065 4 07 044 6131 4009 lda a.k003-*,* globsw 06066 0 31 051 6137 4010 cana l.k005-* (gbfhng) is anyone listening at other end? 06067 0 64 036 6125 4011 tnz conbak-* no, don't bother doing connect 4012 06070 0 07 056 6146 4013 lda dcwadr-* get pointer to head of list 06071 0332 00 0 4014 cax2 end of binary card 00000084 06072 0 37 044 6136 4015 ora l.k004-* 0.w,2 06073 0 47 054 6147 4016 ldq dcwlen-* get length 06074 0 14 044 6140 4017 staq lsticw-* 4018 4019 now calculate parity on dcws 4020 set bit 21 to be odd parity with bits 0-17 4021 then set bit 22 to be odd parity with bits 18-35 4022 06075 4023 con010 null 06075 0 07 036 6133 4024 lda l.k001-* =npbits 06076 2 32 001 0 4025 ansa 1,2 turn them both off first 06077 2 07 000 0 4026 lda 0,2 get high-order word 06100 3336 22 0 4027 alp 18 get parity 06101 0 64 003 6104 4028 tnz con020-* already odd, do nothing 06102 0 07 032 6134 4029 lda l.k002-* =pupper 06103 2 72 001 0 4030 orsa 1,2 or on upper parity bit 4031 06104 4032 con020 null 06104 2 07 001 0 4033 lda 1,2 get second word 06105 3336 22 0 4034 alp 18 06106 0 64 003 6111 4035 tnz con030-* if already odd, don't bother it assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 144 conect -- connect to the dia 06107 0 07 026 6135 4036 lda l.k003-* =plower 06110 2 72 001 0 4037 orsa 1,2 or on lower parity bit 4038 06111 4039 con030 null on to next dcw word 06111 573 777 0 4040 iaq -1 any more? 06112 0 74 003 6115 4041 tze con040-* 06113 273 002 0 4042 iacx2 2 yes, bump pointer 06114 0 71 761 6075 4043 tra con010-* go around again 4044 06115 4045 con040 null parity all set 06115 0 04 027 6144 4046 ldaq licadr-* get address and parity of list icw 06116 4 14 011 6127 4047 staq a.k001-*,* (dimb) dia pcw mailbox 4048 refresh status icw 06117 0 04 023 6142 4049 ldaq sticw-* clean status icw model 06120 4 14 010 6130 4050 staq a.k002-*,* (dist) dia status icw 06121 673 001 0 4051 ila 1 indicate that connect is pending 06122 4 17 010 6132 4052 sta a.k004-*,* iopend 4053 4054 06123 073 000 0 4055 diasel sel ** patched by init for correct channel 06124 4 60 003 6127 4056 cioc a.k001-*,* dimb (dia pcw mailbox) 4057 that's it 06125 4058 conbak return conect 4059 4060 06127 0 00454 0 4061 a.k001 ind dimb dia pcw mailbox 06130 0 00456 0 4062 a.k002 ind dist 06131 0 13000 3 4063 a.k003 ind globsw 06132 0 00134 1 4064 a.k004 ind iopend 4065 06133 717777 0 4066 l.k001 vfd 18/npbits 06134 040000 0 4067 l.k002 vfd 18/pupper 06135 020000 0 4068 l.k003 vfd 18/plower 06136 1 00000 0 4069 l.k004 zero 0,w.2 36-bit addressing 06137 000002 0 4070 l.k005 vfd 18/gbfhng 4071 4072 06140 4073 even 06140 1 06150 1 4074 lsticw icw dcws,w.2,4 list icw end of binary card 00000085 06141 000004 0 06142 4075 dlist null init uses this to do parity calculations 06142 1 00140 1 4076 sticw icw stat,w.2,1,1 dia status icw template 06143 010001 0 4077 with exhaust bit so we always see latest one 4078 06144 4079 even 06144 1 06140 1 4080 licadr zero lsticw,w.2 list icw address 06145 000070 0 4081 oct 70 init will or in parity 4082 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 145 conect -- connect to the dia 06146 4083 dcwadr bss 1 address of dcw list 06147 4084 dcwlen bss 1 length of dcw list (36-bit words) 06150 4085 even 06150 4086 dcws bss 4*28 place where most dcw lists are created 4087 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 146 wmbx -- write a mailbox to the cs 4088 ttls wmbx -- write a mailbox to the cs 4089 4090 this subroutine writes a mailbox to the cs after 4091 computing the checksum and storing it in the mailbox 4092 4093 a contains address of mailbox to be written, which 4094 will first be copied into swmbx 4095 if a is 0, mailbox is already in swmbx, and 4096 is being rewritten because of checksum error 4097 4098 mailbox number in mbxno will be used by wtimw 4099 to determine what bit to set in cs's 4100 "terminate interrupt multiplex word" (timw) 4101 and the mailbox size 4102 06330 4103 wmbx subr wmb 4104 06333 4333 00 0 4105 cax3 get mailbox address 06334 0 74 023 6357 4106 tze wmb020-* if zero, use swmbx 4107 else we'll copy it in 06335 0 07 220 6555 4108 lda mbxno-* 06336 422 010 0 4109 icmpa 8 fnp or cs origin? 06337 0 75 003 6342 4110 tmi 3 cs 06340 673 744 0 4111 ila -fmbxsz/2 fnp, use large size 06341 0 71 002 6343 4112 tra 2 06342 673 770 0 4113 ila -8 get repetition count 06343 0 17 211 6554 4114 sta rcnt-* 06344 322 777 0 4115 iera -1 now make it positive 06345 773 001 0 4116 iaa 1 06346 0 17 203 6551 4117 sta wsize-* 06347 0 03 160 6527 4118 ldx2 a.l001-* addr(swmbx) 4119 06350 4120 wmb010 null 06350 3 04 000 0 4121 ldaq 0,3 pick up two words of mailbox 06351 2 14 000 0 4122 staq 0,2 copy them 06352 0 76 202 6554 4123 aos rcnt-* is that all? 06353 0 74 004 6357 4124 tze wmb020-* 06354 273 002 0 4125 iacx2 2 no, bump input and output pointers 06355 373 002 0 4126 iacx3 2 06356 0 71 772 6350 4127 tra wmb010-* do it again 4128 06357 4129 wmb020 null set transaction control word 06357 4 20 161 6540 4130 szn a.l011-*,* shinp 06360 0 74 003 6363 4131 tze 3 if "short input", set it to 06361 673 010 0 4132 ila tcinmb "sent input in mailbox" 06362 0 71 002 6364 4133 tra 2 else, set it 06363 673 015 0 4134 ila tcwmbx to "wrote mailbox" 06364 4 17 144 6530 4135 sta a.l002-*,* tcword 4136 4137 now set up dcw list assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 147 wmbx -- write a mailbox to the cs 06365 4138 trace mt.wmb,tr.mbx,(mbxno) end of binary card 00000086 4139 06375 0 41 134 6531 4140 ldx3 a.l004-* addr(dcws) 06376 4 50 134 6532 4141 stx3 a.l005-*,* dcwadr 06377 673 012 0 4142 ila 10 10 words of dcws 06400 4 17 133 6533 4143 sta a.l006-*,* dcwlen 4144 06401 0 07 154 6555 4145 lda mbxno-* get mailbox number 06402 422 010 0 4146 icmpa 8 cs mailbox? 06403 0 75 007 6412 4147 tmi wmb030-* yes 06404 773 770 0 4148 iaa -8 no, get it in range 0-3 06405 4149 mpy l.l004-* (fmbxsz) use fnp size 06407 7333 00 0 4150 cqa 06410 773 110 0 4151 iaa mh.fsb add base of fnp mailbox area 06411 0 71 003 6414 4152 tra wmb040-* 06412 4153 wmb030 null 06412 0336 03 0 4154 als 3 for cs mailbox, use mailbox no. times 8 06413 773 010 0 4155 iaa mh.sub and offset of submailbox 0 06414 4156 wmb040 null 06414 0 06 234 6650 4157 ada csmbx-* add address of cs mailbox header 06415 473 075 0 4158 ilq diaftc fnp->cs transfer opcode 06416 3 14 000 0 4159 staq 0,3 cs address and opcode into dcw 4160 06417 0 07 110 6527 4161 lda a.l001-* get addr(swmbx) in a 06420 0 37 125 6545 4162 ora l.l001-* 0,w.2 06421 0 47 130 6551 4163 ldq wsize-* tally for writing mailbox 06422 3 14 002 0 4164 staq 2,3 into dcw 06423 373 004 0 4165 iacx3 4 point to next dcw 4166 call subroutine to update timw 06424 0 10 055 6501 4167 tsy wtimw-* 4168 dcw pointer is also updated 4169 now put in interrupt and disconnect dcws 06425 4 10 107 6534 4170 tsy a.l007-*,* bint 06426 373 004 0 4171 iacx3 4 06427 4 10 106 6535 4172 tsy a.l008-*,* bdisc 4173 all done, now just connect 06430 4 10 106 6536 4174 tsy a.l009-*,* conect 06431 4175 return wmbx 4176 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 148 frembx -- tells cs a mailbox is free 4177 ttls frembx -- tells cs a mailbox is free 4178 4179 this subroutine sets up a dcw list to or on 4180 the bit corresponding to a mailbox being frees in the 4181 cs's "terminate interrupt multiplex word" (timw) 4182 06433 4183 frembx subr fre 4184 set transaction control word end of binary card 00000087 06436 673 014 0 4185 ila tcfree to "mailbox freed" 06437 4 17 071 6530 4186 sta a.l002-*,* tcword 4187 06440 4188 trace mt.fre,tr.mbx,(mbxno) 4189 06450 0 07 105 6555 4190 lda mbxno-* cs or fnp mailbox? 06451 422 010 0 4191 icmpa 8 06452 0 75 014 6466 4192 tmi fre010-* cs 06453 422 014 0 4193 icmpa 12 fnp, rewritten or not? 06454 0 75 002 6456 4194 tmi 2 yes 06455 773 774 0 4195 iaa -4 no, get number in range 8-11 06456 773 770 0 4196 iaa -8 now get it in range 0-3 06457 4333 00 0 4197 cax3 06460 4 56 061 6541 4198 stz a.l012-*,* (mbxfre,3) mark it free 06461 673 777 0 4199 ila -1 decrement used count 06462 4 16 062 6544 4200 asa a.l015-*,* mbused 06463 4 10 057 6542 4201 tsy a.l013-*,* (unlock) unlock dia now 06464 4 10 057 6543 4202 tsy a.l014-*,* (gate) make sure dgetwk runs 06465 0 71 012 6477 4203 tra frebak-* no need to tell multics anything 06466 4204 fre010 null 06466 0 41 043 6531 4205 ldx3 a.l004-* addr(dcws) 06467 4 50 043 6532 4206 stx3 a.l005-*,* dcwadr 06470 673 010 0 4207 ila 8 8 words of dcws 06471 4 17 042 6533 4208 sta a.l006-*,* dcwlen 06472 0 10 007 6501 4209 tsy wtimw-* set up dcws to update timw 4210 set up interrupt and disconnect dcws 06473 4 10 041 6534 4211 tsy a.l007-*,* bint 06474 373 004 0 4212 iacx3 4 06475 4 10 040 6535 4213 tsy a.l008-*,* bdisc 4214 do connect now 06476 4 10 040 6536 4215 tsy a.l009-*,* conect 06477 4216 frebak return frembx 4217 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 149 wtimw -- sets up dcws to update timw 4218 ttls wtimw -- sets up dcws to update timw 4219 4220 this subroutine sets up dcws to "or" in a bit 4221 corresponding to the mailbox number in "mbxno" 4222 to the cs's "terminate interrupt multiplex word" (timw) 4223 4224 we will use the dia opcode "transfer gate", which means 4225 "read and clear cs and or fnp", 4226 followed by fnp->cs transfer 4227 4228 x3 contains address of first dcw to be built 4229 on return it will point to next free spot in dcw list 4230 06501 4231 wtimw subr wti 4232 end of binary card 00000088 06504 0 07 042 6546 4233 lda l.l002-* "arl 0" instruction 06505 0 37 050 6555 4234 ora mbxno-* make it "arl [mbxno]" 06506 0 17 002 6510 4235 sta wti010-* store it where we'll execute it 4236 get high-order bit for shifting 06507 0 07 040 6547 4237 lda l.l003-* =400000 4238 shift it 06510 0 00000 0 4239 wti010 zero shift instruction goes here 06511 0 17 041 6552 4240 sta timw-* result will be new timw 4241 now set up dcws 06512 0 07 136 6650 4242 lda csmbx-* cs address of mailbox header 06513 773 002 0 4243 iaa mh.tim +offset of timw 06514 473 065 0 4244 ilq diatrg "transfer gate" opcode 06515 3 14 000 0 4245 staq 0,3 06516 473 075 0 4246 ilq diaftc second dcw is same but with fnp->cs transfer 06517 3 14 004 0 4247 staq 4,3 4248 06520 0 07 017 6537 4249 lda a.l010-* addr(timw),w.2 06521 473 001 0 4250 ilq 1 tally of one 36-bit word 06522 3 14 002 0 4251 staq 2,3 this is for both dcws 06523 3 14 006 0 4252 staq 6,3 4253 06524 373 010 0 4254 iacx3 8 update dcw pointer 06525 4255 return wtimw that's all 4256 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 150 storage for wmbx, frembx, wtimw 4257 ttls storage for wmbx, frembx, wtimw 4258 06527 0 06556 1 4259 a.l001 ind swmbx 06530 0 01255 1 4260 a.l002 ind tcword 4261 *a.l003 unused 06531 0 06150 1 4262 a.l004 ind dcws 06532 0 06146 1 4263 a.l005 ind dcwadr 06533 0 06147 1 4264 a.l006 ind dcwlen 06534 0 05772 1 4265 a.l007 ind bint 06535 0 06004 1 4266 a.l008 ind bdisc 06536 0 06056 1 4267 a.l009 ind conect 06537 1 06552 1 4268 a.l010 zero timw,w.2 06540 0 05346 1 4269 a.l011 ind shinp "short input" flag 06541 3 00621 1 4270 a.l012 ind mbxfre,3 06542 0 06040 1 4271 a.l013 ind unlock 06543 0 00500 1 4272 a.l014 ind gate 06544 0 00625 1 4273 a.l015 ind mbused 4274 4275 06545 1 00000 0 4276 l.l001 zero 0,w.2 06546 2337 00 0 4277 l.l002 arl 0 template for shift of [mbxno] bits 06547 400000 0 4278 l.l003 oct 400000 06550 0 00034 0 4279 l.l004 zero fmbxsz/2 4280 4281 06551 4282 wsize bss 1 size of this mailbox (in 36-bit words) 06552 4283 even 06552 4284 timw bss 2 fnp's copy of cs timw 06554 4285 rcnt bss 1 repetition count for copying mailbox 06555 4286 mbxno bss 1 mailbox number 4287 06556 4288 even 06556 4289 swmbx bss 56 mailbox to be written 4290 assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 151 dia configuration region 4291 ttls dia configuration region 4292 4293 06646 4294 even end of binary card 00000089 06646 000000 0 4295 cspab oct port a and port b 06647 000000 0 4296 cspcd oct port c and port d 06650 000000 0 4297 csmbx oct cs mailbox address 06651 000000 0 4298 csics oct cs interrupt cell switch 06652 000000 0 4299 cslwa oct lower address bounds switches 4300 (bits 0-8) 06653 000000 0 4301 csupc oct upper address bounds switches 4302 (bits 0-8) 4303 bit 15 - store timer 4304 bit 16 - address bounds 06654 000000 0 4305 zerwd oct 0,0 36 bit zero word for end-of-file 06655 000000 0 06656 000000 0 4306 cssca oct cs system controller address 4307 006651 4308 dicell equ csics 006650 4309 dmbx equ csmbx 006646 4310 diconf equ cspab assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 152 qmask -- clear out a queue for masked channel 4311 ttls qmask -- clear out a queue for masked channel 4312 4313 ************************************************************ 4314 * 4315 * this routine is called when it's time to add a 4316 * "mask channel" entry to a dia request queue. first 4317 * it clears out whatever is currently in the channel's 4318 * queue, and frees its t.dcp chain, if any. 4319 * it is called by denq when a linmsk op code is passed 4320 * to it, unless there's a currently active accept input in 4321 * in the queue; in the latter case, it is called by deque 4322 * when the accept input is finished. in either case, it is 4323 * the caller's responsibility to worry about decrementing 4324 * qcnt to account for the removed queue entries. 4325 * 4326 * input: 4327 * x1: virtual tib address 4328 * curque points to corresponding tib table entry 4329 * 4330 ************************************************************ 4331 06657 4332 qmask subr qma,(a,q,x2,x3) 4333 06676 4 41 022 6720 4334 ldx3 a.m001-*,* curque 06677 3 03 001 0 4335 qma010 ldx2 qbuf,3 get pointer to first entry in queue 06700 0 74 004 6704 4336 tze qma020-* none left 06701 0 13 026 6727 4337 stx2 curqbf-* make sure dlqent knows where to look 06702 4 10 017 6721 4338 tsy a.m002-*,* (dlqent) remove it 06703 0 71 774 6677 4339 tra qma010-* do next one 06704 1 07 026 0 4340 qma020 lda t.dcp,1 if any queued input, 06705 0 74 005 6712 4341 tze qma030-* 06706 4 10 014 6722 4342 tsy a.m003-*,* (frelbf) not any more 06707 1 56 026 0 4343 stz t.dcp,1 06710 1 56 041 0 4344 stz t.dcpl,1 06711 1 56 027 0 4345 stz t.dlst,1 06712 473 103 0 4346 qma030 ilq linmsk get opcode 06713 4 10 010 6723 4347 tsy a.m004-*,* adqent 06714 4 76 010 6724 4348 aos a.m005-*,* (qcnt) update queue count 06715 4 10 010 6725 4349 tsy a.m006-*,* (gate) make sure dgetwk runs 06716 4350 return qmask end of binary card 00000090 4351 06720 0 06726 1 4352 a.m001 ind curque 06721 0 07072 1 4353 a.m002 ind dlqent 06722 0 10000 3 4354 a.m003 ind frelbf 06723 0 06732 1 4355 a.m004 ind adqent 06724 0 00620 1 4356 a.m005 ind qcnt 06725 0 00500 1 4357 a.m006 ind gate assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 153 subroutines to manage dia queues 4358 ttls subroutines to manage dia queues 4359 4360 ************************************************************ 4361 * 4362 * one dia queue is maintained for each tib as well 4363 * as one for an error queue. 4364 * each queue consists of blocks linked 4365 * together with one entry per block. 4366 * 4367 * format of first word of a dia queue entry 4368 * 4369 * ******************************* 4370 * * * * * 4371 * * flags * cnt * opcode * 4372 * * * * * 4373 * ******************************* 4374 * 0 5 6 8 9 17 4375 * 4376 * followed by the number of data words specified in count 4377 * 4378 * format of a block in the dia queue 4379 * 4380 * word 0 (qbnext) - address of next buffer in chain 4381 * 0 specifies end of chain 4382 * word 1 (qbsize) - size of this block in words 4383 * word 2 (qbdata) - queue entries start here 4384 * 4385 ************************************************************ 4386 4387 * define buffer addresses 4388 000000 4389 qbnext equ 0 addr of next buffer 000001 4390 qbsize equ 1 number of words in this block 000002 4391 qbdata equ 2 data starts here 4392 4393 * the queue handling routines set and/or depend on the 4394 * following variables: 4395 06726 4396 curque bss 1 must contain the address of the tib 4397 table entry for the current queue 06727 4398 curqbf bss 1 address of buffer that contains current 4399 queue entry 06730 4400 curqln bss 1 current line number, set for trace 06731 4401 nnonai bss 1 set by getqai to indicate the number 4402 if non-accept input queue entries 4403 before the first accept input entry assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 154 subroutines to manage dia queues 4404 eject 4405 ************************************************************ 4406 * 4407 * adqent - subroutine to add a new entry to a dia queue 4408 * 4409 * at input, the q contains the dia opcode in the lower 4410 * half and, if data is to be passed, the word count 4411 * in the upper half. if the word count is non-0, 4412 * x2 must contain the address of the data. 4413 * 4414 * this subroutine can be called by derrq at interrupt time, 4415 * and therefore must run inhibited 4416 * 4417 * there are no outputs. 4418 * 4419 ************************************************************ 4420 06732 4421 adqent subr adq,(inh,a,q,x2,x3) 06755 7333 00 0 4422 cqa first word of queue entry 06756 0337 11 0 4423 ars 9 get word count 06757 773 001 0 4424 iaa 1 allow 1 word for opcode 06760 0 17 104 7064 4425 sta adqsnw-* save number of words required 4426 4427 * the new entry goes in the last buffer, so find it 4428 06761 0 03 745 6726 4429 ldx2 curque-* tib table entry 06762 2 41 001 0 4430 ldx3 qbuf,2 get buffer pointer 06763 0 74 005 6770 4431 tze adq010-* no buffers, go allocate one 06764 3 20 000 0 4432 adq030 szn qbnext,3 is this last buffer? 06765 0 74 003 6770 4433 tze adq010-* yes 06766 3 41 000 0 4434 ldx3 qbnext,3 follow thread 06767 0 71 775 6764 4435 tra adq030-* 4436 4437 * must allocate a new buffer for this entry 4438 06770 0 50 075 7065 4439 adq010 stx3 adqtmp-* save last buffer address 06771 0 07 073 7064 4440 lda adqsnw-* number of data words 06772 773 003 0 4441 iaa 3 +1 for chain, +1 for size, +1 for rounding end of binary card 00000091 06773 022 776 0 4442 iana -2 force it even 06774 6333 00 0 4443 caq 06775 4 10 071 7066 4444 tsy a.u001-*,* (=getmem) allocate new entry 06776 4445 die 10 06777 3 57 001 0 4446 stq qbsize,3 save size 07000 2 20 001 0 4447 szn qbuf,2 is this the first buffer for queue 07001 0 74 004 7005 4448 tze adq050-* yes 07002 0 03 063 7065 4449 ldx2 adqtmp-* get pointer to old last buffer 07003 2 50 000 0 4450 stx3 qbnext,2 complete chain 07004 0 71 002 7006 4451 tra adq040-* 07005 2 50 001 0 4452 adq050 stx3 qbuf,2 store as first buffer in chain assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 155 subroutines to manage dia queues 4453 4454 * now a buffer has been found where the entry will fit 4455 07006 0 50 721 6727 4456 adq040 stx3 curqbf-* this is the new current buffer 07007 373 002 0 4457 iacx3 qbdata address of first word to use 4458 07010 4459 trace mt.inq,tr.que,(x3,adqsq,curqln) 4460 07025 0 07 725 6752 4461 lda adqsq-* pick up opcode from save area 07026 3 17 000 0 4462 sta 0,3 store in queue 07027 373 001 0 4463 iacx3 1 and bump pointer 07030 0337 11 0 4464 ars 9 get number of data words to copy 07031 0 74 010 7041 4465 tze adq060-* none 07032 0 03 721 6753 4466 ldx2 adqsx2-* get their address 07033 2 47 000 0 4467 adq070 ldq 0,2 get a word 07034 3 57 000 0 4468 stq 0,3 copy it 07035 273 001 0 4469 iacx2 1 bump pointers 07036 373 001 0 4470 iacx3 1 07037 773 777 0 4471 iaa -1 07040 0 64 773 7033 4472 tnz adq070-* loop til copied 07041 0 20 667 6730 4473 adq060 szn curqln-* was this for s apecific line? 07042 0 74 020 7062 4474 tze adqbak-* no, skip metering 4475 end of binary card 00000092 07043 1 41 052 0 4476 ldx3 t.metr,1 07044 4477 cmeter mincs,m.cql,l.u001-* 07053 4478 cmeter mupdat,m.dql,(m.cql(3)) 4479 07062 4480 adqbak return adqent all done 4481 07064 4482 adqsnw bss 1 07065 4483 adqtmp bss 1 4484 07066 0 12000 3 4485 a.u001 ind getmem 07067 0 10400 3 4486 a.u002 ind fremem 4487 4488 07070 000001 0 4489 l.u001 dec 1 for metering 07071 777777 0 4490 l.u002 dec -1 likewise assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 156 subroutines to manage dia queues 4491 eject 4492 ************************************************************ 4493 * 4494 * dlqent - suboutine to delete an entry for the queue. 4495 * 4496 * input - x2 must point at entry to delete 4497 * 4498 ************************************************************ 4499 07072 4500 dlqent subr dlq,(a,q,x2,x3) 4501 07111 2332 00 0 4502 cx1a for a specific line? 07112 0 74 020 7132 4503 tze dlq010-* no, no metering 07113 1 41 052 0 4504 ldx3 t.metr,1 07114 4505 cmeter mincs,m.cql,l.u002-* end of binary card 00000093 07123 4506 cmeter mupdat,m.dql,(m.cql(3)) 4507 07132 0 41 575 6727 4508 dlq010 ldx3 curqbf-* start of buffer 07133 3 03 000 0 4509 ldx2 qbnext,3 hold onto pointer to next buffer 07134 3 47 001 0 4510 ldq qbsize,3 07135 4 10 732 7067 4511 tsy a.u002-*,* (=fremem) free this buffer 4512 4513 * rethread the buffer chain 4514 07136 0 07 571 6727 4515 lda curqbf-* addr of buffer just freed 07137 0 41 567 6726 4516 ldx3 curque-* tib table entry 07140 3 27 001 0 4517 cmpa qbuf,3 did we free first buffer in chain 07141 0 64 003 7144 4518 tnz dlq040-* no 07142 3 13 001 0 4519 stx2 qbuf,3 yes, next buffer now first 07143 0 71 007 7152 4520 tra dlqret-* 07144 3 41 001 0 4521 dlq040 ldx3 qbuf,3 follow buffer trail 07145 3 27 000 0 4522 dlq060 cmpa qbnext,3 does this buffer point to one just freed? 07146 0 74 003 7151 4523 tze dlq050-* yes 07147 3 41 000 0 4524 ldx3 qbnext,3 07150 0 71 775 7145 4525 tra dlq060-* 07151 3 13 000 0 4526 dlq050 stx2 qbnext,3 thread out freed buffer 07152 4527 dlqret return dlqent assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 157 subroutines to manage dia queues 4528 eject 4529 ************************************************************ 4530 * 4531 * getqhd - subroutine to find first entry in a dia queue. 4532 * 4533 * no inputs 4534 * 4535 * output - if queue empty, return is inline 4536 * otherwise, a skip return is done, and x2 will point to the 4537 * first entry. 4538 * 4539 ************************************************************ 4540 07154 4541 getqhd subr ghd 4542 07157 0 03 547 6726 4543 ldx2 curque-* current tib table 07160 2 03 001 0 4544 ldx2 qbuf,2 first buffer 07161 0 74 004 7165 4545 tze ghdret-* queue empty 07162 0 13 545 6727 4546 stx2 curqbf-* this becomes current buffer end of binary card 00000094 07163 273 002 0 4547 iacx2 qbdata data starts here 07164 0 76 770 7154 4548 aos getqhd-* found entry, so skip 07165 4549 ghdret return getqhd 4550 4551 4552 ************************************************************ 4553 * 4554 * getqai - subroutine to find first accept input in queue 4555 * 4556 * output - x2 points to accept input, if found, and 4557 * a skip return is made. if not found, the return is inline. 4558 * the variable nnonai is set to the number of queue 4559 * entries skipped over. 4560 * 4561 ************************************************************ 4562 07167 4563 getqai subr gai,(a,x3) 4564 07200 0 56 531 6731 4565 stz nnonai-* zero counter initially 07201 0 10 753 7154 4566 tsy getqhd-* get head of queue 07202 0 71 015 7217 4567 tra gairet-* empty 07203 2 07 000 0 4568 gai020 lda 0,2 pick up opcode 07204 022 377 0 4569 iana 255 07205 422 112 0 4570 icmpa accin found it? 07206 0 74 010 7216 4571 tze gai010-* yes 07207 0 76 522 6731 4572 aos nnonai-* count something else 07210 0 41 517 6727 4573 ldx3 curqbf-* get block address 07211 3 03 000 0 4574 ldx2 qbnext,3 go to next 07212 0 74 005 7217 4575 tze gairet-* if any 07213 0 13 514 6727 4576 stx2 curqbf-* this is current buffer now assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 158 subroutines to manage dia queues 07214 273 002 0 4577 iacx2 qbdata point at data 07215 0 71 766 7203 4578 tra gai020-* check for accin 07216 0 76 751 7167 4579 gai010 aos getqai-* skip return, found accin 07217 4580 gairet return getqai assm 01 01-12-87 13.317 multics/fnp direct interface adapter -- dia_man page 159 j u m p t a b l e s 4581 ttls j u m p t a b l e s 4582 4583 4584 format: 4585 4586 word 0 return addr after interrupt processed 4587 word 1 place to go on interrupt (in dia_man) 4588 word 2 ioc#,channel#,module#(3) 4589 4590 07221 4591 diajt null used to find jump tables for setting up iv's 07221 0 00000 0 4592 jmptm zero terminate 07222 4 10 062 7304 4593 tsy ivp-*,* 07223 000002 0 4594 vfd 4/0,8/0,6/trmmod 4595 4596 mailbox requests 07224 4597 jumptb (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) end of binary card 00000096 4598 07304 0 01400 3 4599 ivp zero invp 4600 4601 007305 4602 enddia equ * end of binary card 00000097 4603 end 7306 is the next available location. 355map version/assembly dates gmpa 801215/123080 gmpb 801215/123080 gmpc 801215/123080 there were no warning flags in the above assembly assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 160 octal symbol references by sequence no. 400000 absflg 300 300 3284 3762 3912 4 accall 222 222 2109 112 accin 222 222 919 2653 3173 4570 12 accout 222 222 1940 100 acctrm 222 222 2834 1165 accum 1123 949 961 964 1123 13 aclout 222 222 1942 4621 acu005 3223 3221 3223 4653 acu010 3236 3233 3236 122 acuacr 222 222 2841 121 acudlo 222 222 2840 4675 acumvc 3261 3261 3267 123 acung 222 222 2842 120 acupwi 222 222 2839 4612 acusr 3217 1888 3217 3269 6770 adq010 4439 4431 4433 4439 6764 adq030 4432 4432 4435 7006 adq040 4456 4451 4456 7005 adq050 4452 4448 4452 7041 adq060 4473 4465 4473 7033 adq070 4467 4467 4472 7062 adqbak 4480 4474 4480 6732 adqent 4421 1099 4355 4421 4480 7064 adqsnw 4482 4425 4440 4482 6752 adqsq 4421 4421 4459 4461 6753 adqsx2 4421 4421 4466 7065 adqtmp 4483 4439 4449 4483 113 a.a001 480 453 455 480 114 a.a002 481 444 450 462 470 476 481 115 a.a003 482 443 482 116 a.a004 483 469 483 538 117 a.a005 484 473 484 556 120 a.a006 485 475 485 121 a.a007 486 436 486 122 a.a008 487 437 487 123 a.a009 488 488 524 534 553 555 124 a.a010 489 489 529 533 549 125 a.a011 490 418 490 410 a.b001 700 518 700 411 a.b002 701 560 701 412 a.b003 702 598 643 702 413 a.b004 703 666 703 414 a.b005 704 672 704 415 a.b006 705 679 705 416 a.b007 706 673 706 417 a.b008 707 647 668 707 420 a.b009 708 683 708 421 a.b010 709 688 709 422 a.b011 710 685 710 423 a.b012 711 640 695 711 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 161 octal symbol references by sequence no. 424 a.b013 712 697 712 425 a.b014 713 582 592 620 622 713 426 a.b015 714 572 714 427 a.b016 715 635 715 430 a.b017 716 642 716 431 a.b018 717 536 637 717 571 a.c001 808 751 808 572 a.c002 809 771 809 573 a.c003 810 773 810 604 a.c014 820 775 820 605 a.c015 821 778 821 606 a.c016 822 777 822 607 a.c017 823 800 823 610 a.c018 824 779 804 824 611 a.c019 825 783 825 612 a.c020 826 794 826 613 a.c021 827 796 827 614 a.c022 828 795 828 1133 a.d001 1092 896 1046 1092 1134 a.d003 1093 912 1088 1093 1135 a.d005 1094 1089 1094 1136 a.d006 1095 883 1033 1078 1095 1137 a.d007 1096 889 904 1001 1035 1049 1079 1096 1140 a.d008 1097 1011 1097 1141 a.d009 1098 899 901 911 1058 1087 1098 1142 a.d010 1099 916 977 1099 1157 1143 a.d011 1100 897 1037 1056 1100 1144 a.d012 1102 1041 1102 1145 a.d013 1103 876 1103 1146 1151 1162 1146 a.d014 1104 936 946 971 1104 1147 a.d015 1105 984 1105 1611 a.e001 1464 1218 1464 1612 a.e002 1465 1222 1465 1613 a.e003 1466 1223 1238 1244 1344 1348 1466 1615 a.e005 1468 1328 1359 1383 1468 1616 a.e007 1469 1382 1404 1418 1435 1469 1565 1617 a.e008 1470 1437 1470 1573 1620 a.e009 1471 1303 1332 1361 1471 1621 a.e010 1472 1422 1472 1622 a.e011 1473 1458 1473 1623 a.e012 1474 1460 1474 1624 a.e013 1475 1343 1475 1625 a.e014 1476 1243 1476 1626 a.e015 1477 1358 1477 1627 a.e016 1478 1329 1360 1478 1630 a.e017 1479 1326 1479 1631 a.e018 1480 1298 1480 1632 a.e019 1481 1211 1259 1481 1603 1656 1684 1633 a.e020 1482 1352 1482 1634 a.e021 1483 1353 1483 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 162 octal symbol references by sequence no. 1635 a.e023 1484 1347 1484 1636 a.e024 1485 1289 1485 1637 a.e025 1486 1440 1486 1641 a.e027 1488 1368 1488 1642 a.e028 1489 1370 1489 1643 a.e029 1490 1255 1490 1644 a.e030 1491 1285 1491 1645 a.e032 1492 1492 1549 1646 a.e033 1493 1234 1493 1647 a.e034 1494 1237 1494 1650 a.e035 1495 1337 1495 1651 a.e036 1496 1338 1496 1652 a.e037 1497 1314 1395 1408 1433 1497 2274 a.f001 1858 1858 2084 2275 a.f002 1859 1731 1812 1859 1958 1981 1994 2276 a.f003 1860 1601 1860 2277 a.f004 1861 1619 1861 2300 a.f005 1862 1634 1862 2029 2038 2301 a.f006 1863 1645 1660 1686 1704 1712 1833 1863 2302 a.f007 1864 1650 1670 1676 1864 2303 a.f008 1865 1696 1865 2304 a.f009 1866 1737 1866 2305 a.f010 1867 1724 1867 2306 a.f011 1868 1816 1868 2307 a.f012 1869 1750 1772 1869 2310 a.f013 1870 1652 1681 1870 2311 a.f014 1871 1759 1871 2312 a.f015 1872 1872 2011 2027 2035 2313 a.f017 1874 1598 1602 1874 2314 a.f018 1875 1594 1875 2315 a.f019 1876 1876 1953 1991 2316 a.f021 1877 1730 1765 1783 1877 1957 1980 1993 2317 a.f022 1878 1878 1977 2320 a.f023 1880 1617 1880 1948 1973 2321 a.f024 1881 1881 2082 2322 a.f025 1882 1625 1882 2323 a.f026 1883 1725 1732 1813 1817 1883 2324 a.f027 1884 1884 2004 2325 a.f029 1885 1678 1885 2326 a.f032 1888 1743 1888 2327 a.f033 1889 1785 1889 2330 a.f034 1890 1786 1890 2331 a.f035 1891 1788 1891 2332 a.f036 1892 1808 1892 2333 a.f037 1893 1809 1893 2334 a.f038 1894 1811 1894 2335 a.f039 1895 1663 1688 1895 2336 a.f040 1896 1728 1896 2337 a.f041 1897 1829 1897 2340 a.f044 1900 1843 1900 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 163 octal symbol references by sequence no. 2341 a.f048 1904 1854 1904 2054 2078 3323 a.g001 2451 2182 2451 3324 a.g002 2452 2256 2317 2323 2331 2343 2432 2452 3325 a.g003 2453 2304 2453 3326 a.g004 2454 2252 2428 2454 3327 a.g005 2455 2239 2455 3330 a.g006 2456 2249 2456 3331 a.g007 2457 2146 2457 3332 a.g008 2458 2311 2458 3333 a.g009 2459 2175 2459 3334 a.g010 2460 2438 2460 3335 a.g011 2461 2187 2461 3336 a.g012 2462 2208 2462 3337 a.g013 2463 2214 2463 5326 a.h001 3603 3493 3541 3603 5327 a.h002 3604 3535 3604 5330 a.h003 3605 3499 3563 3605 5534 a.i001 3750 3648 3750 5535 a.i002 3751 3649 3751 5536 a.i003 3752 3651 3693 3727 3752 5537 a.i004 3753 3652 3753 5540 a.i005 3754 3689 3754 5541 a.i006 3755 3691 3755 5542 a.i007 3756 3688 3756 5543 a.i008 3757 3662 3757 5712 a.j001 3900 3788 3823 3900 5713 a.j002 3901 3789 3824 3901 5714 a.j003 3902 3791 3828 3902 5715 a.j004 3903 3845 3903 5716 a.j005 3904 3807 3886 3904 5717 a.j006 3905 3801 3830 3905 5721 a.j008 3907 3894 3907 5722 a.j009 3908 3850 3857 3908 6127 a.k001 4061 4047 4056 4061 6130 a.k002 4062 4050 4062 6131 a.k003 4063 4009 4063 6132 a.k004 4064 4052 4064 6527 a.l001 4259 4118 4161 4259 6530 a.l002 4260 4135 4186 4260 6531 a.l004 4262 4140 4205 4262 6532 a.l005 4263 4141 4206 4263 6533 a.l006 4264 4143 4208 4264 6534 a.l007 4265 4170 4211 4265 6535 a.l008 4266 4172 4213 4266 6536 a.l009 4267 4174 4215 4267 6537 a.l010 4268 4249 4268 6540 a.l011 4269 4130 4269 6541 a.l012 4270 4198 4270 6542 a.l013 4271 4201 4271 6543 a.l014 4272 4202 4272 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 164 octal symbol references by sequence no. 6544 a.l015 4273 4200 4273 6720 a.m001 4352 4334 4352 6721 a.m002 4353 4338 4353 6722 a.m003 4354 4342 4354 6723 a.m004 4355 4347 4355 6724 a.m005 4356 4348 4356 6725 a.m006 4357 4349 4357 1234 a.n001 1168 1032 1168 1210 1235 a.n002 1169 1158 1169 1236 a.n003 1170 1170 1302 1339 1237 a.n004 1171 1152 1171 1240 a.n005 1172 1145 1153 1161 1172 1241 a.n006 1173 1173 1295 1300 1242 a.n007 1174 1174 1296 1243 a.n008 1175 1175 1297 1301 1244 a.n009 1176 1148 1164 1176 1245 a.n010 1177 1177 1205 5005 a.o001 3344 3299 3344 5006 a.o002 3345 3301 3337 3345 5007 a.o003 3346 3310 3346 3376 5010 a.o004 3347 3308 3312 3347 3371 5012 a.o007 3350 3302 3322 3328 3336 3350 3380 5013 a.o008 3351 3323 3351 4365 a.p001 3042 2976 3042 4366 a.p002 3043 2992 3043 4367 a.p003 3044 3036 3044 4370 a.p004 3045 2978 3045 4473 a.p501 3117 3092 3117 5061 a.q001 3417 3391 3410 3417 5062 a.q002 3418 3403 3418 5063 a.q003 3419 3412 3419 5064 a.q004 3420 3394 3420 5065 a.q005 3421 3396 3421 3455 3462 5142 a.r001 3472 3442 3449 3472 5143 a.r002 3473 3467 3473 5144 a.r003 3474 3457 3460 3474 5145 a.r004 3475 3458 3475 4232 a.s001 2929 2863 2885 2929 4233 a.s002 2930 2869 2930 4234 a.s003 2931 2874 2931 4235 a.s004 2932 2905 2932 4236 a.s005 2933 2906 2933 4237 a.s006 2934 2908 2934 4240 a.s007 2935 2922 2935 4241 a.s008 2936 2924 2936 4242 a.s009 2937 2925 2937 4243 a.s010 2938 2888 2938 4244 a.s011 2939 2893 2939 4245 a.s012 2940 2902 2940 4706 a.t001 3271 3196 3240 3271 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 165 octal symbol references by sequence no. 4707 a.t002 3272 3268 3272 4710 a.t003 3273 3187 3273 4711 a.t004 3274 3188 3274 4712 a.t005 3275 3190 3275 4713 a.t006 3276 3206 3276 4714 a.t007 3277 3198 3277 4715 a.t008 3278 3222 3278 7066 a.u001 4485 4444 4485 7067 a.u002 4486 4486 4511 4025 a.v001 2788 2646 2788 4026 a.v002 2789 2780 2789 4027 a.v003 2790 2781 2790 4030 a.v004 2791 2614 2791 4031 a.v005 2792 2760 2792 4032 a.v006 2793 2647 2793 4033 a.v007 2794 2674 2739 2794 4034 a.v010 2797 2783 2797 4035 a.v015 2798 2661 2798 4036 a.v016 2799 2727 2799 4037 a.v017 2800 2756 2800 4040 a.v018 2801 2782 2801 4041 a.v024 2802 2712 2802 4042 a.v027 2803 2604 2803 4043 a.v030 2804 2758 2773 2804 4044 a.v042 2805 2641 2656 2805 4045 a.v043 2806 2644 2806 4046 a.v045 2807 2731 2807 4047 a.v046 2808 2748 2808 4050 a.v047 2809 2733 2809 4524 a.y001 3149 3129 3149 4525 a.y002 3150 3131 3150 4526 a.y003 3151 3145 3151 4544 a.y501 3163 3160 3163 4556 a.y601 3177 3174 3177 40 al8in 224 224 2526 41 al8out 224 224 2527 33 albral 224 224 2521 4 albrk 224 224 2528 3472 alcend 2536 2443 2536 22 alchng 224 224 2511 10 alcrec 224 224 2504 3464 alctab 2532 2460 2532 26 aldpin 224 224 2514 2534 15 aldump 224 224 2515 2535 24 alecpx 224 224 2513 3 alfdpx 224 224 2510 31 alfrmi 224 224 2519 35 alifc 224 224 2523 11 allfec 224 224 2505 20 allisn 224 224 2508 2533 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 166 octal symbol references by sequence no. 12 allock 224 224 2509 37 aloddp 224 224 2525 36 alofc 224 224 2524 34 alpfnl 224 224 2522 30 alplit 224 224 2518 21 alquit 224 224 2507 27 alrply 224 224 2517 32 alsetb 224 224 2520 3034 alt010 2183 2183 2188 3042 alt020 2191 2191 2504 3044 alt030 2195 2195 2505 3046 alt040 2199 2199 2506 3050 alt050 2203 2203 2507 3052 alt060 2207 2207 2508 2533 3061 alt065 2215 2210 2213 2215 3064 alt070 2220 2220 2509 3066 alt080 2224 2224 2510 3070 alt090 2228 2228 2511 3071 alt100 2231 2231 2512 3077 alt101 2242 2242 2246 3107 alt102 2252 2243 2252 3115 alt110 2259 2259 2513 3117 alt120 2263 2263 2519 3134 alt125 2278 2266 2268 2278 3140 alt135 2284 2193 2197 2261 2284 3141 alt140 2286 2201 2282 2286 2371 2390 2403 2409 2421 3142 alt150 2289 2205 2218 2222 2226 2289 2377 2415 3146 alt160 2294 2291 2294 3150 alt170 2298 2293 2298 3156 alt175 2306 2303 2306 3165 alt180 2314 2300 2307 2310 2314 3171 alt190 2320 2320 2514 2534 3175 alt200 2326 2326 2515 2535 3203 alt210 2334 2334 2516 3210 alt220 2340 2337 2340 3214 alt230 2346 2346 2517 3215 alt240 2349 2349 2361 3221 alt245 2354 2350 2354 3224 alt250 2359 2359 2518 3226 alt260 2363 2363 2520 3230 alt270 2367 2367 2521 3234 alt280 2373 2373 2522 3240 alt290 2379 2379 2523 3251 alt295 2389 2384 2389 3253 alt300 2392 2392 2524 3264 alt309 2402 2396 2399 2402 3266 alt310 2405 2405 2525 3272 alt320 2411 2411 2526 3276 alt330 2417 2417 2527 3302 alt400 2424 2424 2528 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 167 octal symbol references by sequence no. 3310 alt500 2435 2179 2435 3313 alt510 2439 2439 2444 3321 altbak 2447 2229 2236 2250 2257 2316 2318 2324 2332 2339 2344 2352 2357 2365 2433 2445 2447 16 altbec 224 224 2506 3463 altend 2529 2461 2529 42 alter 222 222 2115 3006 alterp 2168 1866 2168 2447 3401 alttab 2502 2451 2502 23 alwru 224 224 2512 25 alxhld 224 224 2516 142 badsts 507 490 507 6004 bdisc 3942 710 818 1894 2935 3276 3755 3904 3942 3950 4266 156 bdstct 508 421 508 20000 bffbrk 213 213 3609 40000 bfflst 213 213 1108 1504 3610 3761 2 bf.dta 213 213 3247 3614 3672 3873 1 bf.flg 213 213 956 980 1320 3509 3580 3675 0 bf.nxt 213 213 939 954 970 981 1323 1410 1412 1419 1436 1570 1572 3583 3595 3678 3742 3746 3852 1 bf.siz 213 213 950 1316 3664 1 bf.tly 213 213 959 3501 3565 3668 3867 1674 bflag 1524 1228 1253 1380 1442 1524 400 bfmsiz 213 213 2481 5772 bint 3928 817 1893 3754 3928 3935 4265 2 b.0 3263 3282 3573 3574 3613 3614 3 b.1 3265 3575 3576 11 blast 222 222 2116 1673 blbuf2 1523 1252 1275 1523 1672 blbuf 1522 1249 1279 1288 1522 3277 5552 blimit 3768 1885 3768 3794 3862 35 brack 222 222 2120 113 brkcon 222 222 995 2837 25 brkpnt 222 222 2124 14 brkptr 161 1897 5 bufshf 213 213 3844 40 bufsiz 213 213 1251 1287 1545 1569 2726 3195 3199 3239 2 bufthr 213 213 1444 777 buftmk 213 213 1114 3608 3760 3911 3373 caltst 2494 2172 2216 2315 2401 2494 3375 checho 2496 2174 2284 2306 2496 3374 chmode 2495 2173 2287 2299 2495 4 c.0 3262 3281 5 c.1 3264 1751 ckecnt 1583 703 1583 5117 cle003 3446 3441 3446 5125 cle006 3454 3448 3454 5130 cle010 3458 3458 3461 5134 cle020 3462 3459 3462 5072 cleanq 3438 1097 3418 3438 3469 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 168 octal symbol references by sequence no. 4371 cmptbl 3055 3045 3055 3078 3079 3150 4402 cmt010 3057 3057 3069 4407 cmt020 3063 3063 3075 4416 cmt030 3071 3065 3071 4423 cmt040 3077 3072 3077 4425 cmt050 3079 3059 3079 4427 cmtbuf 3081 3060 3066 3077 3081 4401 cmtsq 3055 3055 3068 4400 cmtsx2 3055 3055 3067 6075 con010 4023 4023 4043 6104 con020 4032 4028 4032 6111 con030 4039 4035 4039 6115 con040 4045 4041 4045 6125 conbak 4058 4011 4058 6056 conect 4007 482 712 819 1465 1859 2937 4007 4058 4267 43 cserr 222 222 2114 6651 csics 4298 4298 4308 6650 csmbx 4297 706 816 4157 4242 4297 4309 6646 cspab 4295 4295 4310 6 ct.brk 388 388 2429 1 ct.dev 384 384 2713 4 ct.wru 386 386 2253 1 ctrl 160 2454 2802 5554 curabs 3770 3661 3671 3770 5550 curdcw 3766 3650 3685 3710 3725 3766 6727 curqbf 4398 1176 4337 4398 4456 4508 4515 4546 4573 4576 6730 curqln 4400 1103 4400 4459 4473 6726 curque 4396 1172 2806 3350 4352 4396 4429 4516 4543 4 cvabs 165 1105 2367 dctemp 1930 1747 1753 1761 1770 1776 1930 6146 dcwadr 4083 708 813 1467 1890 2933 3274 3751 3901 4013 4083 4263 5730 dcwcnt 3918 3836 3877 3918 6147 dcwlen 4084 709 814 1891 2934 3275 3752 3902 4016 4084 4264 6150 dcws 4086 704 812 1889 2932 3273 3750 3900 4074 4086 4262 1763 dec005 1600 1597 1600 1766 dec010 1604 1599 1604 2017 dec015 1621 1621 1626 2025 dec020 1630 1630 2106 2032 dec030 1637 1637 2107 2042 dec040 1648 1648 2108 2045 dec045 1654 1654 1664 2057 dec046 1667 1667 2125 2063 dec050 1673 1673 2109 2070 dec054 1682 1682 1689 2075 dec055 1687 1683 1687 2101 dec060 1692 1692 2110 2103 dec065 1699 1699 2111 2111 dec070 1707 1707 2112 2117 dec075 1715 1715 2113 2124 dec080 1722 1722 2114 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 169 octal symbol references by sequence no. 2127 dec085 1727 1727 2116 2134 dec090 1734 1734 2115 2140 dec095 1740 1740 2121 2144 dec096 1746 1746 2122 2166 dec097 1769 1769 2123 2205 dec098 1785 1767 1785 2217 dec099 1797 1793 1797 2235 dec100 1815 1632 1635 1639 1646 1665 1671 1690 1697 1701 1705 1709 1713 1717 1720 1736 1738 1742 1744 1815 1822 1826 1830 1835 1839 1844 1848 1853 1855 1951 1990 2001 2019 2022 2026 2034 2039 2053 2055 2077 2079 2083 2117 2118 2120 2237 dec101 1819 1819 2128 2246 dec105 1828 1828 2124 2250 dec106 1832 1832 2126 2254 dec107 1837 1837 2127 2374 dec210 1936 1614 1936 2404 dec220 1946 1941 1943 1946 2431 dec230 1962 1938 1962 2263 dec300 1846 1846 2119 2461 dec350 1985 1985 2129 2470 dec360 1997 1997 2130 2501 dec370 2009 2003 2009 2514 dec380 2020 2008 2010 2013 2016 2020 2030 2516 dec400 2024 2024 2131 2524 dec440 2032 2032 2132 2533 dec450 2041 2041 2133 2542 dec455 2049 2045 2049 2544 dec458 2051 2048 2051 2551 dec460 2057 2057 2134 2556 dec462 2063 2060 2063 2562 dec463 2067 2062 2067 2563 dec464 2068 2066 2068 2570 dec465 2073 2069 2073 2572 dec468 2075 2072 2075 2577 dec470 2081 2081 2135 2457 decbak 1983 1883 1959 1983 1995 2085 1752 decmbx 1593 1476 1593 1983 4313 deldly 3003 2458 2807 2986 3003 3010 4527 deletb 3154 2809 3139 3154 3161 4363 delret 3038 3020 3025 3038 4330 deltbl 3018 3009 3018 3038 3163 672 den020 896 890 896 701 den030 904 887 904 704 den060 909 905 909 707 den070 914 906 914 724 den080 928 924 928 726 den090 930 927 930 737 den120 941 935 941 740 den130 944 940 944 741 den131 946 946 982 745 den132 950 950 973 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 170 octal symbol references by sequence no. 775 den133 975 958 963 968 975 1000 den135 979 955 979 1015 den140 994 920 994 1021 den150 999 996 999 1032 den160 1010 1005 1010 1033 denbak 1013 894 902 992 998 1002 1008 1013 1035 denbuf 1015 948 965 969 1015 1164 dendec 1122 898 900 1122 630 denq 873 129 873 1013 1487 1862 2456 3177 644 densq 873 873 885 915 976 645 densx2 873 873 914 975 1103 deq005 1049 1045 1049 1111 deq010 1055 1050 1055 1115 deqbak 1060 1047 1057 1060 1044 deque 1030 1030 1061 1478 1166 derrq 1143 133 487 1143 1165 1206 dersq 1143 1143 1155 546 dge005 781 776 781 552 dge010 785 785 790 560 dge020 792 786 792 566 dge030 799 782 788 799 567 dgebak 802 772 797 802 524 dgetwk 764 764 833 627 dgsvi 840 765 803 822 840 0 dia 390 126 390 391 76 diactf 258 258 675 1784 3193 3798 3864 70 diadis 252 252 3945 75 diaftc 257 257 1766 2912 3722 4158 4246 73 diainc 255 255 3956 7221 diajt 4591 134 4591 6123 diasel 4055 139 4055 65 diatrg 251 251 4244 6651 dicell 4308 131 4308 6646 diconf 4310 136 4310 6055 dilock 3985 809 3965 3970 3977 3981 3985 454 dimb 199 199 4061 6021 dindcw 3956 130 3956 21 disacc 222 222 2117 2 disall 222 222 2108 1 dislin 222 222 2107 456 dist 199 199 4062 6142 dlist 4075 135 4075 1 dl.bck 211 211 3027 3030 3097 0 dl.fwd 211 211 3028 3031 3098 3 dl.hsz 211 211 2964 2977 3062 3101 3104 3144 3156 2 dl.rfc 211 211 2983 3022 3024 3100 3136 11 dl.siz 211 211 2964 2977 2991 3005 7132 dlq010 4508 4503 4508 7144 dlq040 4521 4518 4521 7151 dlq050 4526 4523 4526 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 171 octal symbol references by sequence no. 7145 dlq060 4522 4522 4525 7072 dlqent 4500 1102 2805 3349 3474 4353 4500 4527 7152 dlqret 4527 4520 4527 203 dma010 540 523 525 540 204 dma012 542 531 542 221 dma020 558 539 546 551 554 558 157 dmail 517 128 517 6650 dmbx 4309 132 4309 23 dmpmem 222 222 2122 1675 dnblks 1525 1313 1319 1325 1525 14 dodial 222 222 2121 5015 dqcur 3355 3306 3318 3340 3355 1132 drebak 1089 1080 1083 1089 1117 dretry 1075 1075 3427 15 dspqur 143 483 808 1489 3419 17 dte005 412 409 412 57 dte010 447 411 447 100 dte020 460 456 460 110 dte030 472 466 472 111 dte040 474 457 474 12 dterm 404 127 404 1 dtfctl 209 209 2820 4 dt.flg 209 209 2718 0 dtprty 284 284 494 1276 dtr010 1225 1216 1225 1311 dtr050 1240 1227 1240 1315 dtr060 1246 1242 1246 1324 dtr065 1257 1257 1286 1344 dtr068 1275 1272 1275 1347 dtr070 1279 1268 1274 1279 1351 dtr072 1281 1277 1281 1353 dtr075 1284 1264 1270 1284 1362 dtr080 1293 1248 1293 1370 dtr083 1299 1299 1307 1375 dtr084 1306 1294 1306 1404 dtr086 1314 1314 1324 1417 dtr088 1325 1322 1325 1430 dtr089 1335 1310 1335 1436 dtr090 1342 1233 1291 1340 1342 1354 1440 dtr100 1346 1206 1208 1304 1333 1346 1362 1373 1442 dtr110 1350 1336 1350 1447 dtr150 1356 1351 1356 1454 dtr200 1365 1219 1365 1256 dtrans 1204 495 1204 2 eb.tly 279 279 1397 2006 400 ecbits 349 349 351 4554 ecfret 3175 3172 3175 4545 ecgifl 3169 137 1872 3169 3175 20 ecnlen 351 351 3130 3144 3156 106 engain 222 222 2037 2844 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 172 octal symbol references by sequence no. 107 engaof 222 222 2028 2845 33 engini 222 222 2132 32 engoff 222 222 2131 31 engogo 222 222 2130 30 engstb 222 222 2129 7 entrcv 222 222 2111 136 errcnt 504 414 419 428 434 448 504 115 errmsg 222 222 435 2637 1250 errqbf 1187 1187 3344 1247 errqtb 1186 1171 1186 3345 777640 fatal 273 273 496 4746 fet010 3305 3300 3305 4751 fet020 3309 3307 3309 3319 4756 fet030 3316 3316 3329 4762 fet040 3322 3315 3322 4763 fet050 3323 3303 3323 4771 fet060 3330 3327 3330 5003 fetbak 3341 3338 3341 4725 fetch 3297 2803 3297 3341 3565 fil010 2624 2624 2631 3574 fil020 2633 2617 2628 2633 3605 fil030 2644 2638 2644 3641 fil040 2662 2662 2667 3647 fil050 2671 2671 2834 3706 fil060 2693 2683 2693 3713 fil070 2699 2699 2835 2846 3734 fil080 2723 2719 2723 3741 fil090 2730 2725 2730 3776 fil100 2752 2654 2752 4012 fil110 2769 2769 2836 4016 fil120 2777 2642 2697 2743 2746 2749 2761 2766 2777 2837 2838 2839 2840 2841 2842 2843 2844 2845 3536 filmbx 2602 827 2602 2784 4070 filopc 2829 2606 2615 2634 2636 2652 2658 2660 2763 2779 2829 4067 filtmp 2828 2607 2623 2639 2655 2658 2828 3400 flgptr 2499 2176 2280 2292 2296 2369 2375 2381 2394 2407 2413 2419 2499 70 fmbxsz 347 347 654 720 2089 4111 4279 6466 fre010 4204 4192 4204 6477 frebak 4216 4203 4216 16 frebfh 148 1485 2799 17 frebuf 147 3906 20 frelbf 149 1468 3472 3907 4354 6433 frembx 4183 1475 1868 4183 4216 21 fremem 151 1170 3044 4486 10 frmchr 222 222 2119 5 g3wjt 144 700 7216 gai010 4579 4571 4579 7203 gai020 4568 4568 4578 7217 gairet 4580 4567 4575 4580 522 gatbak 753 747 753 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 173 octal symbol references by sequence no. 500 gate 744 485 702 744 753 1093 1471 4272 4357 4 gbfbla 215 215 1512 2 gbfhng 215 215 1910 4070 1 gbfup 215 215 1911 1721 gbl010 1556 1556 1562 1740 gbl020 1572 1568 1572 1677 gblast 1540 1281 1540 1574 22 getbfh 146 1492 3903 23 getbuf 145 3271 24 getmem 150 1869 2931 3117 4485 7167 getqai 4563 1096 3420 3475 4563 4579 4580 7154 getqhd 4541 3351 4541 4548 4549 4566 5016 getque 3369 1095 3369 3381 3392 25 gettib 152 1860 7165 ghdret 4549 4545 4549 26 globsw 153 1864 4063 4143 gme010 2869 2864 2869 4147 gme020 2873 2868 2873 4154 gme030 2878 2878 2883 4204 gme040 2905 2886 2905 4247 gmebuf 2945 1495 2876 2914 2945 4251 gmelen 2947 2867 2871 2877 2947 4250 gmesiz 2946 1496 2873 2916 2946 4134 gmesx3 2862 2862 2910 4124 gmeter 2862 1858 2862 2926 626 gqued 839 746 749 770 839 1750 gsize 1581 1555 1561 1581 1745 gsrce 1578 1543 1554 1578 1746 gtarg 1579 1552 1564 1579 1 gtprty 285 285 286 832 5022 gtq010 3372 3372 3377 5030 gtqbak 3380 3374 3380 2 hcfg 168 6 hmode 158 1904 2453 27 houtav 156 1474 1000 hslafl 267 267 1501 1913 2474 2817 17 htfspd 217 217 2687 0 ht.flg 217 217 2686 1 ht.tib 217 217 880 30 hunmsk 169 2463 3278 5345 ibufp 3622 3568 3579 3622 5341 icount 3618 3490 3506 3519 3531 3562 3567 3587 3618 5342 iflags 3619 3491 3513 3527 3529 3619 5 inacc 222 222 1969 5166 inc010 3497 3497 3596 5205 inc020 3515 3511 3515 5226 inc025 3526 3522 3526 5323 inc030 3594 3517 3594 5230 inc040 3529 3524 3529 5245 inc045 3544 3544 3551 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 174 octal symbol references by sequence no. 5255 inc050 3553 3533 3553 5267 inc060 3563 3563 3584 5301 inc080 3573 3573 3578 5315 inc090 3586 3582 3586 5321 incbak 3592 3547 3592 5350 incdcw 3625 3536 3545 3550 3625 5147 incnt 3488 2800 3488 3592 22 incomp 222 222 2118 5157 incsx3 3488 3488 3588 5416 ind010 3660 3660 3679 5441 ind050 3682 3677 3682 5401 indata 3647 1878 3647 3694 5454 indcw 3708 3673 3708 3729 36 infcc 222 222 2133 102 inmbx 222 222 530 550 2762 3553 5521 inssq 3738 3738 3740 5514 instrp 3738 1479 3684 3738 3747 6020 intdcw 3955 3930 3955 3 invp 157 4599 134 iopend 500 441 449 451 500 4064 7 itest 155 1863 2452 3272 7304 ivp 4599 4593 4597 4599 31 iwrite 154 1472 644 .crbdt 201 201 2938 667 .crdly 201 201 3042 700 .cretb 201 201 3149 704 .crmet 201 201 1881 652 .crnbf 201 201 2804 677 .crskd 201 201 2939 665 .crttb 201 201 1490 1870 3347 666 .crtte 201 201 1491 1895 3346 736 .mdias 207 207 439 720 .mdilc 207 207 2674 2739 2930 730 .mimbx 207 207 768 30 .mleng 207 207 2870 734 .mndil 207 207 2673 2738 2794 2771 lctlck 2145 138 2145 2150 2151 2370 lctlmb 1931 1832 1834 1931 2457 3004 lctret 2151 2147 2151 6144 licadr 4080 4046 4080 26 linctl 222 222 2126 101 lindis 222 222 997 2835 103 linmsk 222 222 886 2846 4346 124 linsta 222 222 2843 130 l.a002 494 468 494 537 132 l.a003 496 424 496 133 l.a004 497 439 497 432 l.b001 720 651 720 616 l.c001 832 750 832 1150 l.d001 1108 957 979 1108 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 175 octal symbol references by sequence no. 1153 l.d004 1111 1085 1111 1154 l.d005 1112 1004 1082 1112 1155 l.d006 1113 1006 1113 1156 l.d007 1114 960 1114 1157 l.d008 1115 962 1115 1160 l.d009 1116 892 1116 1161 l.d010 1117 893 1117 1162 l.d011 1118 1044 1118 1163 l.d012 1119 990 1051 1119 1653 l.e001 1500 1386 1500 1654 l.e002 1501 1455 1501 1657 l.e005 1504 1321 1504 1662 l.e008 1507 1369 1507 1664 l.e009 1510 1390 1391 1510 1665 l.e010 1511 1262 1263 1511 1667 l.e012 1513 1416 1430 1513 1670 l.e013 1514 1378 1514 2342 l.f001 1907 1596 1907 2343 l.f002 1908 1640 1658 1710 1908 2344 l.f003 1909 1642 1909 2345 l.f004 1910 1649 1910 2346 l.f005 1911 1668 1675 1911 2347 l.f006 1912 1912 2064 2065 2350 l.f007 1913 1821 1852 1913 2353 l.f010 1916 1916 2046 2354 l.f011 1917 1917 2070 2355 l.f012 1918 1918 2049 2357 l.f014 1920 1920 2073 2360 l.f015 1921 1702 1921 2361 l.f016 1922 1799 1922 2362 l.f017 1923 1923 2076 2364 l.f019 1925 1925 2052 3340 l.g001 2465 2192 2465 3341 l.g002 2466 2196 2466 3342 l.g003 2467 2200 2467 3343 l.g004 2468 2204 2468 3344 l.g005 2469 2215 2234 2469 3345 l.g006 2470 2327 2470 3346 l.g007 2471 2329 2471 3347 l.g008 2472 2221 2472 3350 l.g009 2473 2225 2473 3351 l.g010 2474 2265 2302 2383 2474 2584 3352 l.g011 2475 2260 2475 3353 l.g012 2476 2335 2476 3354 l.g013 2477 2321 2477 3355 l.g014 2478 2347 2478 3356 l.g015 2479 2360 2479 3357 l.g016 2480 2309 2480 3360 l.g017 2481 2481 2561 2563 3361 l.g018 2482 2281 2482 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 176 octal symbol references by sequence no. 3362 l.g019 2483 2370 2483 3363 l.g020 2484 2376 2484 3364 l.g021 2485 2389 2485 3365 l.g022 2486 2402 2486 3366 l.g023 2487 2398 2487 3367 l.g024 2488 2408 2488 3370 l.g025 2489 2414 2489 3371 l.g026 2490 2420 2490 3372 l.g027 2491 2212 2491 5331 l.h001 3608 3502 3566 3608 5332 l.h002 3609 3510 3609 5333 l.h003 3610 3516 3581 3610 5335 l.h006 3613 3558 3613 5336 l.h007 3614 3571 3614 5544 l.i001 3760 3669 3760 5545 l.i002 3761 3676 3761 5546 l.i003 3762 3714 3762 5724 l.j002 3912 3870 3912 6133 l.k001 4066 4024 4066 6134 l.k002 4067 4029 4067 6135 l.k003 4068 4036 4068 6136 l.k004 4069 4015 4069 6137 l.k005 4070 4010 4070 6545 l.l001 4276 4162 4276 6546 l.l002 4277 4233 4277 6547 l.l003 4278 4237 4278 6550 l.l004 4279 4149 4279 1246 l.n002 1179 1156 1179 5014 l.o001 3353 3334 3353 5066 l.q001 3423 3401 3423 5067 l.q002 3424 3408 3424 5070 l.q003 3426 3411 3426 4246 l.s001 2942 2915 2942 4716 l.t001 3280 3228 3280 4717 l.t002 3281 3255 3281 4720 l.t003 3282 3258 3282 4722 l.t005 3284 3201 3284 4723 l.t006 3285 3220 3285 4724 l.t007 3286 3232 3286 7070 l.u001 4489 4477 4489 7071 l.u002 4490 4490 4505 4051 l.v001 2812 2673 2812 4052 l.v002 2813 2738 2813 4053 l.v003 2814 2701 2814 4054 l.v004 2815 2640 2815 4055 l.v005 2816 2764 2816 4056 l.v007 2817 2742 2817 4057 l.v010 2818 2703 2818 4060 l.v011 2819 2705 2819 4061 l.v012 2820 2717 2820 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 177 octal symbol references by sequence no. 4062 l.v013 2821 2720 2821 4063 l.v014 2822 2707 2822 4064 l.v017 2823 2681 2823 4065 l.v018 2824 2695 2824 4066 l.v019 2825 2616 2825 6017 l.z001 3952 3932 3947 3952 700 lnmask 265 265 1914 6022 lock 3963 810 3963 3969 3971 32 loutav 156 1473 6140 lsticw 4074 4017 4074 4080 2 macwk1 4563 579 599 611 698 744 753 873 1013 1030 1061 1143 1165 1375 1461 1540 1574 1593 1983 2145 2151 2168 2447 2557 2564 2582 2592 2602 2784 2862 2926 2962 2989 3003 3010 3018 3038 3055 3079 3090 3115 3126 3142 3154 3161 3169 3175 3186 3207 3217 3269 3297 3341 3369 3381 3390 3414 3438 3469 3488 3592 3647 3694 3708 3729 3738 3747 3786 3808 3821 3889 3928 3935 3942 3950 3963 3971 3975 3982 4007 4058 4103 4175 4183 4216 4231 4255 4332 4350 4421 4480 4500 4527 4541 4549 4563 4580 5 macwk2 4563 579 611 744 873 1030 1143 1375 1540 1593 2145 2168 2557 2582 2602 2862 2962 3003 3018 3055 3090 3126 3154 3169 3186 3217 3297 3369 3390 3438 3488 3647 3708 3738 3786 3821 3928 3942 3963 3975 4007 4103 4183 4231 4332 4421 4500 4541 4563 3 macwk3 4459 453 559 668 1617 1948 1973 2170 2658 3226 3519 4138 4188 4459 7 macwk4 4459 453 559 668 1617 1948 1973 2170 2658 3226 3519 4138 4188 4459 4265 mak010 2966 2966 2970 4275 mak020 2975 2967 2975 4304 mak030 2985 2973 2985 2993 4310 mak040 2990 2979 2990 4252 makdly 2962 1900 2962 2989 4475 makecn 3126 1483 3126 3142 4306 makret 2989 2982 2989 4261 maksx2 2962 2962 2965 30 maxchn 277 277 967 5 maxerr 275 275 429 436 mbqcnt 726 585 591 613 618 726 820 460 mbqhed 733 713 733 437 mbqnxa 727 581 594 596 727 440 mbqnxt 728 619 623 625 728 625 mbused 838 717 768 792 838 4273 435 mbxadr 725 653 660 674 725 621 mbxfre 837 489 715 825 837 2790 4270 144 mbxmax 339 339 3532 3 mbxmod 359 359 4597 6555 mbxno 4286 707 826 1488 1880 2789 4108 4138 4145 4188 4190 4234 4286 10 mdisp 141 481 701 1 mh.cnt 307 307 308 110 mh.fsb 311 311 652 4151 0 mh.pcw 306 306 307 310 10 mh.sub 310 310 311 659 4155 2 mh.tim 308 308 309 4243 11 mincd 171 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 178 octal symbol references by sequence no. 12 mincs 170 439 1416 1430 2673 2738 4477 4505 15 m.cql 207 207 4477 4478 4505 4506 0 m.dql 207 207 4478 4506 10 m.over 207 207 1416 1430 56 m.synl 207 207 2866 37 mnmask 290 290 521 4515 mnt020 3138 3138 3146 4517 mnt030 3142 3135 3142 4521 mnt040 3143 3132 3143 2 modnum 391 391 426 431 453 460 559 588 615 630 668 932 1036 1039 1428 1550 1617 1627 1751 1773 1944 1948 1965 1971 1973 2170 2189 2658 2668 2875 3093 3197 3226 3234 3241 3320 3324 3332 3378 3395 3398 3504 3519 3598 3680 3810 3841 3897 3967 3979 4138 4188 4445 4459 17 mqmask 289 289 595 624 27 msgsiz 222 222 2128 15 mt.acu 376 376 3226 14 mt.alt 375 375 2170 11 mt.fre 372 372 4188 7 mt.inc 370 370 3519 4 mt.inq 367 367 4459 2 mt.mbx 365 365 559 6 mt.ouq 369 369 2658 3 mt.rmb 366 366 668 13 mt.rtx 374 374 1973 1 mt.trm 364 364 453 5 mt.wcd 368 368 1617 10 mt.wmb 371 371 4138 12 mt.wtx 373 373 1948 33 mupdat 172 768 2674 2739 4478 4506 34 mvpgsc 166 1871 35 mvpgtg 167 1480 5553 nblks 3769 3658 3667 3683 3769 5340 nbufs 3617 3492 3498 3538 3617 5725 ndcws 3915 1486 3796 3825 3833 3915 4430 newtbl 3090 3043 3090 3115 3151 6731 nnonai 4401 1100 3421 4401 4565 4572 3 noacc 222 222 2125 1036 noai 1016 874 910 923 1016 717777 npbits 298 298 4066 1042 nprvai 1020 928 929 1020 177777 nretry 271 271 1111 1915 777677 ntflsn 263 263 1909 2814 777776 ntfwrt 272 272 1505 2471 4460 nwt010 3105 3105 3111 4467 nwt020 3112 3108 3112 4443 nwtsq 3090 3090 3103 4441 nwtsx2 3090 3090 3102 4442 nwtsx3 3090 3090 3096 3114 4474 nwttmp 3118 3094 3113 3118 5547 oldhed 3765 1477 3561 3655 3765 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 179 octal symbol references by sequence no. 2366 opcode 1929 1609 1617 1620 1929 1939 1968 37 outfcc 222 222 2134 2372 pchadr 1933 1174 1778 1933 2371 pchbuf 1932 1173 1752 1758 1762 1774 1932 2373 pchlen 1934 1175 1749 1781 1934 24 pchmem 222 222 2123 5551 pdcwa 3767 3657 3716 3728 3767 5732 pdcws 3920 1482 3905 3920 20000 plower 297 297 298 4068 1040 prevai 1018 925 926 1018 40000 pupper 296 296 298 4067 2 qbdata 4391 4391 4457 4547 4577 0 qbnext 4389 4389 4432 4434 4450 4509 4522 4524 4526 4574 1 qbsize 4390 4390 4446 4510 1 qbuf 282 282 3314 4335 4430 4447 4452 4517 4519 4521 4544 620 qcnt 836 781 836 1098 1169 2791 3473 4356 6677 qma010 4335 4335 4339 6704 qma020 4340 4336 4340 6712 qma030 4346 4341 4346 6657 qmask 4332 1092 4332 4350 0 qtib 281 281 1258 1655 1682 2645 3373 100000 quitfl 270 270 1113 3423 4557 rblast 3186 1896 3186 3207 1 rcd 222 222 2609 3555 4123 rcdend 2847 2666 2847 4071 rcdtab 2832 2798 2832 6554 rcnt 4285 4114 4123 4285 5627 rdd010 3838 3838 3880 5646 rdd015 3854 3849 3854 5677 rdd020 3882 3878 3882 5705 rdd030 3891 3846 3891 5711 rdd040 3897 3861 3863 3897 5607 rddata 3821 1464 3821 3887 3889 5703 rddbak 3889 3889 3893 3895 5555 rddcw 3786 1876 3786 3808 316 rdm010 630 627 630 334 rdm020 645 632 645 347 rdm030 657 649 657 354 rdm040 663 656 663 406 rdmbak 698 644 698 265 rdmbx 611 611 698 821 433 rdsize 723 655 662 678 723 5606 rdw010 3810 3795 3810 5052 rej040 3407 3402 3407 5057 rejbak 3414 3405 3414 5033 reject 3390 1865 3390 3414 200000 rejflg 269 269 271 1112 1116 3424 16 rejreq 222 222 2110 400000 retry 268 268 271 1116 1117 5726 rhead 3916 1469 3831 3854 3892 3916 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 180 octal symbol references by sequence no. 44 rmeter 222 222 2135 3477 rndsiz 2557 2271 2275 2387 2557 2564 2589 231 rpmbx 570 570 1508 5727 rtail 3917 1470 3832 3848 3855 3872 3917 1 rtprty 286 286 1507 3426 2 rtx 222 222 1963 2604 savmbx 2089 705 828 1493 1875 2089 2801 3753 5146 savnai 3477 3456 3463 3477 36 secdsp 142 714 824 1094 1466 3534 setbak 2592 2585 2587 2592 37 setbpt 164 1104 1497 1884 3605 3757 3908 6 setcls 222 222 2113 45 setdly 222 222 2127 40 setptw 163 1481 2793 3512 setsiz 2582 2364 2462 2582 2592 16 sf.bsz 205 205 2272 2590 17 sf.fbs 205 205 2276 2388 15 sf.hsl 205 205 879 2685 20 sf.mms 205 205 1825 2591 5346 shinp 3623 488 2792 3590 3623 4269 41 shrcct 162 2808 12 sm.adr 322 322 323 1948 3192 3793 4 sm.cd 321 321 322 330 1235 1677 1718 1748 1756 1757 1763 1771 1777 1779 1780 1790 1792 1798 1824 1841 1849 2014 2017 2042 2044 2058 2068 2148 2170 2180 2270 2273 2386 2436 2588 2621 2677 2678 2679 2680 2692 2911 3226 3248 2 sm.cdl 319 319 320 329 2611 2694 2754 2771 3226 3231 3243 4 sm.dat 330 330 331 339 3613 6 sm.dcw 337 337 3604 3656 66 sm.fcd 331 331 339 3530 1 sm.fre 318 318 319 2759 2774 2 sm.ict 329 329 3534 3589 13 sm.len 323 323 324 0 sm.lno 317 317 318 1595 1617 1948 1973 2612 2650 4 sm.nbf 336 336 3539 3 sm.op 320 320 321 1606 2610 3556 1777 smlmsk 342 342 1907 1676 sndflg 1527 1232 1376 1447 1527 105 sndout 222 222 1633 2836 140 stat 506 407 410 417 423 506 4076 137 sterr 505 486 505 6142 sticw 4076 4049 4076 6556 swmbx 4289 4259 4289 5347 tallyp 3624 3494 3507 3508 3542 3544 3548 3624 5351 tallys 3626 3603 3626 5 tcblst 235 235 1247 1729 2 tcdata 232 232 1220 1226 1 tcdcwl 231 231 1215 1956 7 tcdmpm 237 237 1306 1764 14 tcfree 242 242 639 1330 4185 10 tcinmb 238 238 461 1309 4132 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 181 octal symbol references by sequence no. 16 tcmax 245 245 458 1371 3 tcmbxr 233 233 694 1241 11 tcmetr 239 239 1335 2923 6 tcpchm 236 236 1293 1782 12 tcrecn 240 240 1350 1992 13 tcreq 241 241 465 1207 1254 tcurbf 1191 1149 1163 1191 1252 tcurq 1189 1147 1160 1189 15 tcwmbx 243 243 4134 1255 tcword 1193 480 711 811 1177 1193 1214 1221 1331 1372 1877 2936 4260 4 tcwrd 234 234 1979 0 termac 222 222 2106 100 tf8in 203 203 2489 200 tf8out 203 203 2490 1000 tfabf0 203 203 2822 10000 tfabf1 203 203 2822 20 tfacu 203 203 264 3280 20000 tfauto 203 203 2818 2823 1 tfbkpt 203 203 2822 4000 tfblak 203 203 1510 1912 1917 1920 2487 20 tfbral 203 203 2483 2000 tfcrec 203 203 2465 2480 400 tfctrl 203 203 1919 2472 2821 2 tfdild 203 203 1924 2824 20 tfdlup 203 203 2818 200000 tfecpx 203 203 2475 2480 4 tfercv 203 203 1921 4 tffdpx 203 203 2473 40000 tffrmi 203 203 2482 40 tfhang 203 203 1908 40 tfifc 203 203 1925 2485 40000 tfinq 203 203 1119 2816 2 tfitim 203 203 1916 1918 1744 tflag 1577 1542 1546 1567 1577 1000 tflfec 203 203 2466 2480 100 tflisn 203 203 263 2469 20000 tfmask 203 203 1118 1514 2491 2822 3285 400 tfoddp 203 203 2488 2822 100 tfofc 203 203 1510 1912 1923 2486 400000 tfpfnl 203 203 2484 2000 tfplit 203 203 2479 200 tfquit 203 203 2468 10 tfrabt 203 203 2477 400 tfrply 203 203 2478 200000 tfsftr 203 203 2819 4000 tftbec 203 203 2467 10000 tfwabt 203 203 2470 1 tfwrit 203 203 272 1500 1 tfxhld 203 203 2476 2365 tibadr 1928 1168 1631 1638 1700 1708 1716 1735 1741 1838 1847 1874 1928 1950 1989 2000 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 182 octal symbol references by sequence no. 2025 2033 2788 2929 3417 6552 timw 4284 4240 4268 4284 3 t.cur 203 203 2254 2430 26 t.dcp 203 203 943 1311 1312 2009 3440 3443 3495 3560 3654 3743 4340 4343 41 t.dcpl 203 203 953 3445 3739 3741 4344 27 t.dlst 203 203 934 985 3444 3745 4345 37 t.dtp 203 203 2312 2732 2981 2987 3007 25 t.echo 203 203 1393 2002 2724 2728 44 t.entp 203 203 2012 2734 3134 3140 3158 2 t.flg2 203 203 1389 1703 2051 2063 2071 2074 2075 2279 2322 2338 2342 2351 2356 2374 2380 2393 2397 2696 2706 3229 36 t.flg3 203 203 991 1043 1052 1377 2047 2050 2211 2368 2406 2412 2418 2708 2765 3219 1 t.flg 203 203 1387 1641 1643 1659 1711 2235 2279 2308 2328 2330 2368 2374 2380 2393 2406 2412 2418 2459 2682 2702 2704 2721 40 t.frmc 203 203 1850 5 t.icp 203 203 930 987 3171 3447 3450 7 t.icpl 203 203 989 3452 45 t.ifch 203 203 2043 6 t.ilst 203 203 988 3451 4 t.line 203 203 875 1453 1820 1851 2264 2301 2382 2583 2649 2658 2741 3519 52 t.metr 203 203 1416 1430 2865 4476 4477 4478 4504 4505 4506 16 t.ocnt 203 203 1441 1445 12 t.ocp 203 203 1401 1405 3242 3521 13 t.ocur 203 203 1426 3523 46 t.ofch 203 203 2059 2061 14 t.olst 203 203 1432 1438 47 t.omct 203 203 2067 2400 22 t.reta 203 203 2255 2431 42 t.scll 203 203 1000 2018 2021 2735 30 t.sfcm 203 203 878 1823 2269 2385 2586 2684 43 t.sncc 203 203 2015 2036 2736 0 t.stat 203 203 1261 17 t.type 203 203 1266 1450 1719 2177 2240 2676 2714 2744 13 trace 159 453 559 668 1617 1948 1973 2170 2658 3226 3519 4138 4188 4459 10 tr.int 382 382 453 559 4 tr.mbx 381 381 668 1617 1948 1973 2170 3226 4138 4188 2 tr.que 380 380 2658 3519 4459 2 trmmod 358 358 4594 20 trmrej 222 222 2112 1 tsfcd 203 203 1511 4 tsfdsr 203 203 1511 23 ttcolt 356 356 1451 2178 2745 6040 unlock 3975 484 716 823 1484 3975 3982 4271 254 upm010 588 584 588 255 upm020 590 587 590 233 upmbq 579 542 571 579 599 1747 vtarg 1580 1553 1566 1580 3 wcd 222 222 1613 2770 wcdend 2136 1882 2136 2674 wcdtab 2104 1861 2104 assm 01 01-12-87 13.321 multics/fnp direct interface adapter -- dia_man page 183 octal symbol references by sequence no. 1 w.2 705 1922 2942 3283 3952 4069 4074 4076 4080 4268 4276 6350 wmb010 4120 4120 4127 6357 wmb020 4129 4106 4124 4129 6412 wmb030 4153 4147 4153 6414 wmb040 4156 4152 4156 6330 wmbx 4103 1494 1867 2797 4103 4175 1501 wri003 1386 1379 1386 1517 wri005 1400 1388 1392 1400 1524 wri010 1408 1402 1408 1413 1532 wri020 1415 1411 1415 1543 wri030 1421 1406 1421 1545 wri040 1425 1394 1399 1425 1576 wri050 1449 1443 1446 1449 1606 wri060 1460 1457 1460 1607 wribak 1461 1381 1384 1423 1452 1459 1461 1462 write 1375 1229 1282 1375 1461 4 wruinc 2543 2238 2543 3473 wrutbl 2539 2455 2539 2543 114 wrutim 222 222 2248 2838 6551 wsize 4282 4117 4163 4282 6510 wti010 4239 4235 4239 6501 wtimw 4231 1892 3756 4167 4209 4231 4255 4 wtx 222 222 1937 476 yelcnt 199 199 2940 50190 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