assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 1 preface program break 3524 common length 0 v count bits 5 primary symdef entry lsla 0 lip 12 ldcw 2064 lbreak 603 loutav 603 lslajt 2335 lsf1 2360 lsf2 2526 lsf3 2674 lsf4 3042 end of binary card 00000001 lsf5 3210 lsf6 3356 secondary symdef entry .chain 0 x.003. 1010 x.006. 1056 x.008. 1233 x.009. 1327 block length symref 1 ctrl 2 denq 3 invp end of binary card 00000002 4 move 5 derrq 6 g3wjt 7 istat 10 mdisp 11 trace 12 dspqur 13 frebuf 14 fulbuf 15 getbuf end of binary card 00000003 16 getubf 17 inproc assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 2 20 meterc 21 outprc 22 secdsp 23 traceb end of binary card 00000004 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_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 10 lbl ,lsla_man 11 pcc on 12 pmc off 13 editp on assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 4 14 ttl multics/355 low-speed line adaptor -- lsla_man 15 16 this module contains all the code for interfacing 17 with an lsla for multics. the interrupt module, lip, 18 handles the interrupts that come in every 50 milliseconds 19 and schedules either loutpt, the output frame generator, 20 or linput, the input frame processor, depending 21 on whether the lsla status was "send" or "receive" type. 22 23 by convention, these two main processing routines 24 keep the address of the current time slot in 25 the frame in x2, and load x1 with the address 26 of the terminal information block (tib) for the 27 line associated with that slot. 28 29 buffer conventions: 30 31 (input) 32 t.icp points to the head of an input 33 chain currently being built; dia_man zeroes 34 it when it passes the data on to multics. 35 t.icch points to the spot in an input buffer where 36 the next input character is to go. 37 38 (output) 39 t.ocp points to the head of an output chain 40 (if any) supplied by dia_man. 41 lsla_man zeroes it once it has accepted 42 this chain so that dia_man can set up another one. 43 t.ocur points to the buffer from which data 44 is currently being output; t.occh points to the 45 next character position in this buffer from 46 which data is to be taken. 47 48 49 special labelling conventions: 50 51 literals used within the program are named 52 l.xnnn where x is a letter associated with each 53 subroutine and nnn is a 3-digit number. 54 indirect words are named a.xnnn where x and nnn are as 55 above. 56 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 5 57 ttls 58 pmc save,on assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 6 macro prototypes 59 ttls macro prototypes 60 61 62 mpy macro 63 mpf #1 64 lrs 1 65 endm mpy 66 67 68 dvd macro 69 qls 1 70 dvf #1 71 endm 72 73 74 cmt macro 75 used to set up controls for "cmd" bits 76 arg 1: bit(s) to test for 77 arg 2: 0=turn bit on, 1= turn it off 78 arg 3: bit(s) to turn on/off in t.stat 79 arg 4: subroutine for special handling 80 81 cmt macro c,m 82 vfd 18/#1 83 vfd 1/#2,17/#3 84 ind #4 85 endm cmt 86 87 88 jmptbl macro 89 idrp #1 90 rem 91 jtrm#1 oct 92 tsy iinvp-*,* 93 vfd 4/l#1ch,7/#1-1,1/1,6/modlsa 94 idrp 95 endm 96 * assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 7 macro prototypes 97 eject 98 sfcmi macro allocates and initializes software comm region 99 fields with ** are filled in by init 100 101 sfcmi macro 102 idrp #1 103 even 104 symdef lsf#1 105 lsf#1 ind l#1mb sf.hcm 106 zero *+sf.sbf-sf.nxa sf.nxa 107 zero *+sf.ssb-sf.nxp sf.nxp 108 zero ** sf.ioc 109 zero ** sf.bfc 110 zero ** sf.flg 111 zero ** sf.bfa 112 zero lbfsiz sf.bfl 113 ind ** sf.icw 114 ind ** sf.ocw 115 ind ** sf.ltb 116 ind *+lsfcml-sf.otb sf.otb 117 zero ** sf.ity 118 zero ** sf.oty 119 icw *+sf.sbf-sf.sic,w.2,lstsbf/2 sf.sic 120 bss lstsvb sf.ssb 121 bss lstsbf+4 sf.sbf 122 zero 0 output buffer 1 123 vfd 18/sync 124 vfd 9/sync,9/sync,9/sync,9/stx 125 dup 1,14 126 vfd 9/fill,9/fill,9/fill,9/fill 127 rem 128 vfd 18/sffsnd,18/sync output buffer 2 129 vfd 9/sync,9/sync,9/sync,9/stx 130 dup 1,14 131 vfd 9/fill,9/fill,9/fill,9/fill 132 idrp 133 endm 134 00000 135 systm assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 8 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 000004 dich set 4 direct interface adaptor 000006 h1ch set 6 high speed line adapter number one 000007 h2ch set 7 high speed line adapter number two 000010 h3ch set 8 high speed line adapter number three 000011 l1ch set 9 low speed line adapter number one 000012 l2ch set 10 low speed line adapter number two 000013 l3ch set 11 low speed line adapter number three 000014 l4ch set 12 low speed line adapter number four 000015 l5ch set 13 low speed line adapter number five 000016 l6ch set 14 low speed line adapter number six 000077 tmch set 63 interval timer channel 000077 swch set 63 data switch channel assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 9 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 000100 dift set 64 dia fault 000102 ditm set 66 dia terminate 000003 dis0 set 3 dia special - 0 000023 dis1 set 19 dia special - 1 000043 dis2 set 35 dia special - 2 000063 dis3 set 51 dia special - 3 000103 dis4 set 67 dia special - 4 000123 dis5 set 83 dia special - 5 000143 dis6 set 99 dia special - 6 000163 dis7 set 115 dia special - 7 000203 dis8 set 131 dia special - 8 000223 dis9 set 147 dia special - 9 000243 dis10 set 163 dia special - 10 000263 dis11 set 179 dia special - 11 000303 dis12 set 195 dia special - 12 000323 dis13 set 211 dia special - 13 000343 dis14 set 227 dia special - 14 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 10 datanet configuration description 000363 dis15 set 243 dia special - 15 000140 h1ft set 96 hsla 1 fault 000004 h1a0 set 4 hsla 1 subch 0 active terminate vector 000005 h1a16 set 5 hsla 1 subch 16 active terminate vector 000006 h1c0 set 6 hsla 1 subch 0 config terminate vector 000007 h1c16 set 7 hsla 1 subch 16 config terminate vector 000024 h1a1 set 20 hsla 1 subch 1 active terminate vector 000025 h1a17 set 21 hsla 1 subch 17 active terminate vector 000026 h1c1 set 22 hsla 1 subch 1 config terminate vector 000027 h1c17 set 23 hsla 1 subch 17 config terminate vector 000044 h1a2 set 36 hsla 1 subch 2 active terminate vector 000045 h1a18 set 37 hsla 1 subch 18 active terminate vector 000046 h1c2 set 38 hsla 1 subch 2 config terminate vector 000047 h1c18 set 39 hsla 1 subch 18 config terminate vector 000064 h1a3 set 52 hsla 1 subch 3 active terminate vector 000065 h1a19 set 53 hsla 1 subch 19 active terminate vector 000066 h1c3 set 54 hsla 1 subch 3 config terminate vector 000067 h1c19 set 55 hsla 1 subch 19 config terminate vector 000104 h1a4 set 68 hsla 1 subch 4 active terminate vector 000105 h1a20 set 69 hsla 1 subch 20 active terminate vector 000106 h1c4 set 70 hsla 1 subch 4 config terminate vector 000107 h1c20 set 71 hsla 1 subch 20 config terminate vector 000124 h1a5 set 84 hsla 1 subch 5 active terminate vector 000125 h1a21 set 85 hsla 1 subch 21 active terminate vector 000126 h1c5 set 86 hsla 1 subch 5 config terminate vector 000127 h1c21 set 87 hsla 1 subch 21 config terminate vector assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 11 datanet configuration description 000144 h1a6 set 100 hsla 1 subch 6 active terminate vector 000145 h1a22 set 101 hsla 1 subch 22 active terminate vector 000146 h1c6 set 102 hsla 1 subch 6 config terminate vector 000147 h1c22 set 103 hsla 1 subch 22 config terminate vector 000164 h1a7 set 116 hsla 1 subch 7 active terminate vector 000165 h1a23 set 117 hsla 1 subch 23 active terminate vector 000166 h1c7 set 118 hsla 1 subch 7 config terminate vector 000167 h1c23 set 119 hsla 1 subch 23 config terminate vector 000204 h1a8 set 132 hsla 1 subch 8 active terminate vector 000205 h1a24 set 133 hsla 1 subch 24 active terminate vector 000206 h1c8 set 134 hsla 1 subch 8 config terminate vector 000207 h1c24 set 135 hsla 1 subch 24 config terminate vector 000224 h1a9 set 148 hsla 1 subch 9 active terminate vector 000225 h1a25 set 149 hsla 1 subch 25 active terminate vector 000226 h1c9 set 150 hsla 1 subch 9 config terminate vector 000227 h1c25 set 151 hsla 1 subch 25 config terminate vector 000244 h1a10 set 164 hsla 1 subch 10 active terminate vector 000245 h1a26 set 165 hsla 1 subch 26 active terminate vector 000246 h1c10 set 166 hsla 1 subch 10 config terminate vector 000247 h1c26 set 167 hsla 1 subch 26 config terminate vector 000264 h1a11 set 180 hsla 1 subch 11 active terminate vector 000265 h1a27 set 181 hsla 1 subch 27 active terminate vector 000266 h1c11 set 182 hsla 1 subch 11 config terminate vector 000267 h1c27 set 183 hsla 1 subch 27 config terminate vector 000304 h1a12 set 196 hsla 1 subch 12 active terminate vector assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 12 datanet configuration description 000305 h1a28 set 197 hsla 1 subch 28 active terminate vector 000306 h1c12 set 198 hsla 1 subch 12 config terminate vector 000307 h1c28 set 199 hsla 1 subch 28 config terminate vector 000324 h1a13 set 212 hsla 1 subch 13 active terminate vector 000325 h1a29 set 213 hsla 1 subch 29 active terminate vector 000326 h1c13 set 214 hsla 1 subch 13 config terminate vector 000327 h1c29 set 215 hsla 1 subch 29 config terminate vector 000344 h1a14 set 228 hsla 1 subch 14 active terminate vector 000345 h1a30 set 229 hsla 1 subch 30 active terminate vector 000346 h1c14 set 230 hsla 1 subch 14 config terminate vector 000347 h1c30 set 231 hsla 1 subch 30 config terminate vector 000364 h1a15 set 244 hsla 1 subch 15 active terminate vector 000365 h1a31 set 245 hsla 1 subch 31 active terminate vector 000366 h1c15 set 246 hsla 1 subch 15 config terminate vector 000367 h1c31 set 247 hsla 1 subch 31 config terminate vector 000220 l1ft set 144 lsla 1 fault 000221 l1a set 145 lsla 1 active terminate vector 000222 l1c set 146 lsla 1 configuration terminate vector 000240 l2ft set 160 lsla 2 fault 000241 l2a set 161 lsla 2 active terminate vector 000242 l2c set 162 lsla 2 configuration terminate vector 000260 l3ft set 176 lsla 3 fault 000261 l3a set 177 lsla 3 active terminate vector 000262 l3c set 178 lsla 3 configuration terminate vector 000300 l4ft set 192 lsla 4 fault 000301 l4a set 193 lsla 4 active terminate vector assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 13 datanet configuration description 000302 l4c set 194 lsla 4 configuration terminate vector 000320 l5ft set 208 lsla 5 fault 000321 l5a set 209 lsla 5 active terminate vector 000322 l5c set 210 lsla 5 configuration terminate vector 000340 l6ft set 224 lsla 6 fault 000341 l6a set 225 lsla 6 active terminate vector 000342 l6c set 226 lsla 6 configuration terminate vector 000360 tmft set 240 timer channel fault 000361 tmro set 241 interval timer runout 000362 etr set 242 elapsed timer roll-over assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 14 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 000427 h2fts set 279 hsla 2 fault status word assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 15 datanet configuration description 000430 h3fts set 280 hsla 3 fault status word 000431 l1fts set 281 lsla 1 fault status word 000432 l2fts set 282 lsla 2 fault status word 000433 l3fts set 283 lsla 3 fault status word 000434 l4fts set 284 lsla 4 fault status word 000435 l5fts set 285 lsla 5 fault status word 000436 l6fts set 286 lsla 6 fault status word 000437 tmfts set 287 timer fault status word *************************** * processor fault vectors * *************************** 000440 suflt set 288 startup fault 000441 sdflt set 289 shutdown fault 000442 parflt set 290 memory parity fault 000443 iopflt set 291 illegal operation fault 000444 ovflt set 292 overflow fault 000445 memflt set 293 illegal memory operation fault 000446 dvflt set 294 divide check fault 000447 ipiflt set 295 illegal program interrupt fault assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 16 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 136 * 00000 137 hwcm assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 17 hardware comm. region (hwcm) ttls hardware comm. region (hwcm) 000000 h.ric0 equ 0 primary receive icw 000002 h.ric1 equ 2 alternate receive icw 000004 h.sic0 equ 4 primary send icw 000006 h.sic1 equ 6 alternate send icw 000010 h.baw equ 8 base address word 000011 h.sfcm equ 9 software comm. region address 000012 h.mask equ 10 mask register 000014 h.aicw equ 12 active status icw 000016 h.cnfg equ 14 configuration status 138 * 00000 139 comreg assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_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 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_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 140 * 00000 141 tib assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_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 000030 t.ftse equ t.dlst+1 first time slot entry in lsla table assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 21 terminal information block (tib) 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 ******************************** 000001 tsfcd bool 000001 carrier detect assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 22 terminal information block (tib) 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 000200 tfquit bool 000200 send nl on line break assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 23 terminal information block (tib) 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 004000 tfblak bool 004000 asynchronous block acknowledgement 010000 tfcrcv bool 010000 'control' receive mode assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 24 terminal information block (tib) 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 002000 tfsoip bool 002000 suspension of output in progress 004000 tforp bool 004000 output resume pending (waiting until tro) 010000 tfabf1 bool 010000 t.abf1 available 020000 tfmask bool 020000 channel has been masked for excessive int ********************************* * redefined tib flags in t.flg ********************************* 000020 tfdlup equ tfprtr line is on dialup modem assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 25 terminal information block (tib) 142 * 00000 143 sfcm lsla pcc save,off assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 26 sfcm for lsla 000000 sf.hcm equ 0 hardware comm. region address 000001 sf.nxa equ sf.hcm+1 current input status pointer 000002 sf.nxp equ sf.nxa+1 status save buffer ptr 000003 sf.ioc equ sf.nxp+1 i/o chain pointer 000004 sf.bfc equ sf.ioc+1 current input buffer ptr 000005 sf.flg equ sf.bfc+1 flag word 000006 sf.bfa equ sf.flg+1 alternate input buffer ptr 000007 sf.bfl equ sf.bfa+1 output buffer length 000010 sf.icw equ sf.bfl+1 ptr to current input icw 000011 sf.ocw equ sf.icw+1 ptr to current output icw 000012 sf.ltb equ sf.ocw+1 ptr to lsla table 000013 sf.otb equ sf.ltb+1 ptr to output buffer 000014 sf.ity equ sf.otb+1 tally for input icw 000015 sf.oty equ sf.ity+1 tally for output icw 000016 sf.sic equ sf.oty+1 standard status icw 000020 sf.ssb equ sf.sic+2 status save buffer (10 words) 000032 sf.sbf equ sf.ssb+10 status buffer (8 words) bit definitions for sf.flg 000200 sffrlm bool 200 already sent error message about resync a 000100 sffopt bool 100 dsr and cts reported 000040 sffrsy bool 40 resync required 000020 sffptr bool 20 expecting input ptro 000010 sffrun bool 10 lsla running ok 000004 sffnsx bool 4 no stx on last input frame 000002 sffsnd bool 2 second output buffer current 000001 sffslo bool 1 short frame lsla (22 time slots) assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 27 sfcm for lsla pcc restore 144 * 00000 145 csbits assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 28 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 000002 c.rcrq bool 000002 reset call request assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 29 control and status bits 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) 040000 s.isd bool 040000 idle state detect (hdlc) assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 30 control and status bits 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 146 * 00000 147 buffer assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 31 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 148 * assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 32 buffer format 00000 149 devtab assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 33 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 150 * 00000 151 dlytbl assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 34 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 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 35 symbol definitions 152 ttls symbol definitions 153 symdef lsla 154 symdef lip 155 symdef ldcw,lbreak,loutav 156 symdef lslajt 157 158 symref inproc,move 159 symref outprc,fulbuf 160 symref g3wjt,mdisp,dspqur,getbuf,getubf 161 symref invp 162 symref secdsp,denq,frebuf,istat 163 symref ctrl 164 symref trace,traceb 165 symref meterc 166 symref derrq 167 * 000001 168 ct.dev equ 1 offset in control tables of device table 169 pointers assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 36 symbol definitions 170 eject 171 lsla status bits 172 173 174 400000 175 ls.rcs bool 400000 receive status 020000 176 ls.alt bool 20000 alternate buffer 010000 177 ls.bsw bool 10000 buffer switch 004000 178 ls.tro bool 4000 tally runout 002000 179 ls.ptr bool 2000 pre-tally runout 000200 180 ls.dsc bool 200 data set status change 000040 181 ls.xte bool 40 transfer timing error 182 183 184 400000 185 ls.dsr bool 400000 data set ready 200000 186 ls.cts bool 200000 clear to send 100000 187 ls.cd bool 100000 carrier detect 000400 188 ls.rcv bool 400 receive mode 000200 189 ls.snd bool 200 send mode 000100 190 ls.wrp bool 100 wraparound 000040 191 ls.dtr bool 40 data terminal ready 000020 192 ls.rts bool 20 request to send 193 194 195 normal status bits 700661 196 norms equ ls.dsr+ls.cts+ls.cd+ls.rcv+ls.snd+ls.dtr+ls.rts+1 197 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 37 symbol definitions 198 eject 199 200 201 202 000010 203 lstsbf equ 8 length of status buffer 000012 204 lstsvb equ 10 length of status save buffer 000046 205 lsfcml equ sf.sbf+lstsbf+4 length of lsla sfcm (2 words for extra 206 status, 2 words of zero for safety) 000146 207 lslasz equ lsfcml+2*bufsiz maximum memory requirement/lsla 000006 208 maxlsa equ 6 maximum number of lsla's allowed 001144 209 ltotm equ maxlsa*lslasz maximum memory for all lsla's 210 211 redefinition of unused fields in hwcm for meters 212 000010 213 hcmt1 equ 8 (overlays baw) count of missed stx frames 000012 214 hcmt2 equ 10 (overlays mask reg) count of attempts to resync 000013 215 hcmt3 equ 11 (overlays mask reg) record num successive resync 000016 216 hcmt4 equ 14 (overlays config st) temp counter 217 777776 218 ntfwrt bool /tfwrit mask for tfwrit 777773 219 ntnstx bool /sffnsx mask for sffnsx 777733 220 ntrstx bool /sffnsx*/sffrsy mask for sffnsx and sffrsy 777776 221 ntsfcd bool /tsfcd mask for tsfcd 777773 222 ntsdsr bool /tsfdsr mask for tsfdsr 777775 223 ntscts bool /tsfcts mask for tsfcts 777757 224 ntsfst bool /tsfst mask for tsfst 777770 225 n3bits bool ntsfcd*ntsdsr*ntscts mask for 776777 226 ntsfbk bool /tsfbrk mask for tsfbrk 777767 227 ntfeco bool /tfecho mask for tfecho 777577 228 ntfups bool /tfupsf mask for tfupsf 207000 229 ecflgs bool tflfec+tfcrec+tftbec+tfecpx all mode 230 carriage movement is relevant assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 38 symbol definitions 231 eject 232 lsla table entry format 233 000000 234 lt.flg equ 0 flag word 000001 235 lt.tib equ 1 tib address 000007 236 lt.sid bool 000007 time slot id 237 000010 238 ltfskp bool 000010 skip next character 000020 239 ltfste bool 000020 status character expected 000040 240 ltfesc bool 000040 escape sent before command 000100 241 ltfibm bool 000100 ibm-type (odd parity) terminal 000200 242 ltfdtr bool 000200 current setting of data terminal ready 000400 243 ltfrqs bool 000400 current setting of request to send 001000 244 ltfbex bool 001000 break on next input character 002000 245 ltfbrk bool 002000 sending delays for line break 004000 246 ltfst bool 004000 request for status is pending 010000 247 ltfdcw bool 010000 new dcw list pending for line 020000 248 ltfbbk bool 020000 line break status received 249 250 values for lt.sid 251 000000 252 lt10 equ 0 10 cps 000001 253 lt30a equ 1 30 cps, slot 1 000002 254 lt30b equ 2 30 cps, slot 2 000003 255 lt30c equ 3 30 cps, slot 3 000005 256 lt15a equ 5 15 cps, slot 1 000006 257 lt15b equ 6 15 cps, slot 2 258 000004 259 l15cps bool 4 15cps bit 000002 260 lnfts bool 2 not first slot bit 261 262 delays for break 000005 263 b10 equ 5 10 cps 000010 264 b15 equ 8 15 cps 000021 265 b30 equ 17 30 cps 266 267 777577 268 nodtr bool /ltfdtr mask for dtr 777377 269 norqs bool /ltfrqs mask for rqs 757777 270 nltfbk bool /ltfbbk mask for ltfbbk assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 39 symbol definitions 271 eject 272 273 bits for lsla time slot commands 274 000200 275 pbit bool 200 parity bit 000100 276 type1 bool 100 type bit 277 000040 278 fs bool 40 select transmit frequency 000020 279 cm bool 20 answer control 000010 280 bsy bool 10 busy 281 000004 282 cd bool 4 data terminal ready 000002 283 ca bool 2 request to send 000001 284 brk bool 1 line break transmit 285 286 287 bits for lsla time slot status 288 289 type1 100 type 1 status 290 000040 291 cc bool 40 dataset ready 000020 292 cz bool 20 restraint 000010 293 cb bool 10 clear to send 000004 294 ce bool 4 ring 000002 295 cf bool 2 carrier detect 296 brk 1 line break received 297 000002 298 cicw bool 2 bit for flipping current icw pointers 000014 299 altshf equ 12 difference in bit positions between 300 ls.alt and cicw 301 000040 302 lbfsiz equ bufsiz lsla buffer size 303 000037 304 fill bool 37 lsla fill character 000033 305 esc bool 33 escape 000233 306 escop bool esc+200 escape (odd parity) 000002 307 stx bool 002 start-of-text 000007 308 bel bool 007 bell 000012 309 lf bool 012 line feed 000015 310 cr bool 015 carriage return 000026 311 sync bool 026 synchronization char. 000040 312 blank bool 040 ascii blank 000177 313 rubout bool 177 000377 314 evdel bool rubout+200 even parity rubout 315 000014 316 resync bool 14 resynchronize command 000006 317 swcmd bool 6 store rcv status/switch icw command assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 40 symbol definitions 318 eject 319 320 321 dispatcher priorities 322 000002 323 lsaotp bool 2 output frame generator 000003 324 lsainp bool 3 input frame processer 325 326 word definitions within frame buffer 327 000000 328 sfcmwd equ 0 sfcm pointer word 000003 329 stxwd equ 3 stx word 330 331 type codes for dcwlst 332 000001 333 cmdtyp equ 1 "cmd" 000002 334 intyp equ 2 "input" 000003 335 outtyp equ 3 "output" 000004 336 rdttyp equ 4 "rdtly" 337 338 339 break list codes 340 341 342 343 miscellaneous 344 000064 345 long equ 52 number of slots in long frame 000025 346 short equ 21 number of slots in short frame 000177 347 mask7 bool 177 mask for 7-bit char 000077 348 mask6 bool 77 mask for 6-bitchar 000200 349 par7 bool 200 parity for 7-bit char 000100 350 par6 bool 100 parity for 6-bit char 000105 351 sndout bool 105 "send output" cmd for dia_man 000077 352 ibmmsk bool 77 mask for 2741 characters 000400 353 ncbit bool 400 no code conversion on 2741 output 000160 354 lmnbmk bool 160 lsla number mask 000001 355 modlsa equ 1 001750 356 rlimit equ 1000 limit on successive resync attempts 000115 357 errmsg bool 115 dia error-message code 000002 358 retsus bool 000002 inproc returned output_suspend 000004 359 retres bool 000004 inproc returned output_resume 360 361 memory trace types 362 000001 363 mt.int equ 1 000002 364 mt.out equ 2 000003 365 mt.obf equ 3 000004 366 mt.inp equ 4 000005 367 mt.ibf equ 5 000006 368 mt.cmd equ 6 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 41 symbol definitions 000007 369 mt.esc equ 7 370 371 printer tracing switches 372 000100 373 tr.frm bool 100 000002 374 tr.buf bool 002 000200 375 tr.cmd bool 200 376 377 00000 378 lsla null 00000 379 start lsla,5 symdef -.chain crsm save,off 00000 even ine '5','',2 000005 modnum equ 5 00000 000005 0 .chain dec 5 ife '5','',1 crsm restore 00001 436243 0 bci 2,lsla 00002 212020 0 00003 0 00000 1 ind lsla 00004 001102 0 date 00005 031002 0 ine '.001.','',1 00006 330000 0 bci 4,.001. 00007 013320 0 00010 202020 0 00011 202020 0 380 pmc restore assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 42 lip -- lsla interrupt processer 381 ttls lip -- lsla interrupt processer 382 00012 383 lip null enter here on interrupt 00012 4 10 314 326 384 tsy ig3wjt-*,* get data from interrupt 385 386 returns with data in q reg 387 form -- 388 389 field: iom ch# lsla# 1 mod# 390 bits: 4 7 1 6 391 00013 0 57 305 320 392 stq t3wjt-* save third word of jump table 00014 7333 00 0 393 cqa 00015 0337 03 0 394 ars 3 00016 022 160 0 395 iana lmnbmk get lsla number times 16 00017 0 06 306 325 396 ada ihwcm-* compute address of hardware com region 00020 4333 00 0 397 cax3 move it to hwcm register 00021 3 03 011 0 398 ldx2 h.sfcm,3 set software com region pointer from hcr 00022 3331 00 0 399 inh ***inhibit interrupts*** 00023 0 71 016 41 400 tra lip004-* go get first status 401 00024 402 lip002 null return here after processing status 00024 3331 00 0 403 inh 00025 2 41 000 0 404 ldx3 sf.hcm,2 reset hardware com region pointer 00026 0334 44 0 405 lls 36 zero aq 00027 6 14 001 0 406 staq sf.nxa,2* zero processed status 00030 673 002 0 407 ila 2 00031 2 16 001 0 408 asa sf.nxa,2 increment software status pointer 00032 2 16 002 0 409 asa sf.nxp,2 increment status save pointer 00033 3332 00 0 410 cx2a 00034 773 030 0 411 iaa sf.ssb+lstsvb-2 compute end of save buffer 00035 2 27 002 0 412 cmpa sf.nxp,2 test if it has been reached 00036 0 65 003 41 413 tpl lip004-* no - process next status 00037 773 770 0 414 iaa -lstsvb+2 yes 00040 2 17 002 0 415 sta sf.nxp,2 reset status save pointer to start of buffer 00041 6 04 001 0 416 lip004 ldaq sf.nxa,2* get next status 00042 0 64 017 61 417 tnz lip010-* if one found - process it 00043 3 07 014 0 418 lda h.aicw,3 none found - get status icw 00044 0 34 267 333 419 ana addmsk-* pick off address 00045 2 27 001 0 420 cmpa sf.nxa,2 test if icw already reset 00046 0 65 007 55 421 tpl lip008-* no end of binary card 00000005 00047 2 07 016 0 422 lip006 lda sf.sic,2 get start address of status buffer 00050 0 34 263 333 423 ana addmsk-* isolate address 00051 2 17 001 0 424 sta sf.nxa,2 reset software status pointers 00052 6 04 001 0 425 ldaq sf.nxa,2* test if another status has been stored 00053 4 74 254 327 426 tze imdisp-*,* if not - return to main dispatcher 00054 0 71 005 61 427 tra lip010-* if so - go process it 428 00055 2 04 016 0 429 lip008 ldaq sf.sic,2 get standard value for status icw - addr & tally 00056 3 14 014 0 430 staq h.aicw,3 reset the status icw assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 43 lip -- lsla interrupt processer 00057 6 04 001 0 431 ldaq sf.nxa,2* test if any unprocessed status 00060 0 74 767 47 432 tze lip006-* none assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 44 lip -- lsla interrupt processer 433 eject 434 435 come here when status found 436 00061 437 lip010 null 00061 7331 00 0 438 eni ***enable interrupts*** 00062 0 56 262 344 439 stz errflg-* no errors initially for this status 00063 6 14 002 0 440 staq sf.nxp,2* save copy of status 00064 0 67 266 352 441 cmpq nrmbts-* test if all normal bits on 00065 0 64 220 305 442 tnz lip090-* no - better check 00066 6 20 001 0 443 szn sf.nxa,2* test if receive status 00067 0 75 075 164 444 lip012 tmi lip050-* yes 00070 445 lip013 null check to make sure we have the right icw 00070 2 07 011 0 446 lda sf.ocw,2 get address of current output icw 00071 022 002 0 447 iana cicw isolate bit indicating alternate or primary 00072 0336 14 0 448 als altshf shift it corresponding position in status 00073 6 35 001 0 449 era sf.nxa,2* compare it with corresponding bit in status 00074 0 31 265 361 450 cana altbit-* do they match? 00075 0 74 002 77 451 tze 2 yes, okay 00076 452 die 11 453 status is back in aq (except maybe for ls.alt) 00077 0 31 224 323 454 cana xterr-* test for transfer timing error 00100 0 74 002 102 455 tze 2 00101 456 die 5 xte is bad news 00102 0 31 222 324 457 cana tro-* tally runout? 00103 0 64 056 161 458 tnz lip030-* yes - go handle it 459 00104 673 040 0 460 ila sffrsy are we supposed to do resync? 00105 2 31 005 0 461 cana sf.flg,2 00106 0 74 002 110 462 tze lip014-* 00107 4 10 263 372 463 tsy a.i004-*,* (lrsync) yes, go do it 464 00110 465 lip014 null 00110 2 43 013 0 466 ldx1 sf.otb,2 get address of output buffers 00111 673 002 0 467 ila cicw set to flip buffers 00112 2 31 011 0 468 cana sf.ocw,2 test which buffer exhausted 00113 0 64 005 120 469 tnz lip015-* second exhausted 00114 2 42 007 0 470 adcx1 sf.bfl,2 compute second buffer address 00115 1 56 000 0 471 stz 0,1 mark second buffer in use end of binary card 00000006 00116 2 43 013 0 472 ldx1 sf.otb,2 refetch first buffer address 00117 0 71 003 122 473 tra lip020-* go refill it 474 00120 1 56 000 0 475 lip015 stz 0,1 mark first buffer in use 00121 2 42 007 0 476 adcx1 sf.bfl,2 compute address of second buffer 00122 673 001 0 477 lip020 ila sffslo 00123 2 31 005 0 478 cana sf.flg,2 test if half size frame lsla 00124 0 64 033 157 479 tnz lip026-* yes 00125 0 04 207 334 480 ldaq 4fill-* 00126 1 14 036 0 481 staq 30,1 fill frame with fill characters 00127 1 14 034 0 482 staq 28,1 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 45 lip -- lsla interrupt processer 00130 1 14 032 0 483 staq 26,1 00131 1 14 030 0 484 staq 24,1 00132 1 14 026 0 485 staq 22,1 00133 1 14 024 0 486 staq 20,1 00134 1 14 022 0 487 staq 18,1 00135 1 14 020 0 488 staq 16,1 00136 1 14 016 0 489 lip023 staq 14,1 00137 1 14 014 0 490 staq 12,1 00140 1 14 012 0 491 staq 10,1 00141 1 14 010 0 492 staq 8,1 00142 1 14 006 0 493 staq 6,1 00143 1 14 004 0 494 staq 4,1 00144 2332 00 0 495 cx1a put buffer addr in a 00145 0 06 213 360 496 ada icwbts-* generate an icw for the frame(add 1 word,1 char) 00146 2 47 015 0 497 ldq sf.oty,2 get output buffer tally 00147 6 14 011 0 498 staq sf.ocw,2* store the icw 00150 673 002 0 499 ila cicw 00151 2 62 011 0 500 ersa sf.ocw,2 reverse icw pointer 00152 1 17 000 0 501 sta 0,1 set buffer to non-outputting state(word0 not 0) 00153 3 43 011 0 502 ldx1 h.sfcm,3 get software com region address 00154 0 04 200 354 503 ldaq qotgen-* get priority and addr of output frame generator 00155 4 10 153 330 504 tsy cquer-*,* queue frame generator 00156 0 71 646 24 505 tra lip002-* go test for more status 506 00157 0 04 155 334 507 lip026 ldaq 4fill-* 00160 0 71 756 136 508 tra lip023-* go fill a half size frame 509 00161 510 lip030 null output tro 00161 473 001 0 511 ilq 1 meter it 00162 4 10 150 332 512 tsy imeter-*,* 00163 4 71 206 371 513 tra a.i003-*,* (lip230) reconnect 514 515 516 process lsla receive status 517 00164 518 lip050 null 00164 2 07 010 0 519 lda sf.icw,2 make sure we have right icw end of binary card 00000007 00165 022 002 0 520 iana cicw isolate bit indicating alternate or primary 00166 0336 14 0 521 als altshf shift it corresponding position in status 00167 6 35 001 0 522 era sf.nxa,2* compare it with corresponding bit in status 00170 0 31 171 361 523 cana altbit-* do they match? 00171 0 74 002 173 524 tze 2 yes, okay 00172 525 die 9 526 status is back in aq (except maybe for ls.alt) 00173 0 31 126 321 527 cana iptro-* test if a pre tally runout status 00174 0 74 076 272 528 tze lip070-* no - what else could it be 00175 2 43 004 0 529 ldx1 sf.bfc,2 get address of input frame 00176 1 13 000 0 530 stx2 sfcmwd,1 store sfcm address in first word 00177 1 07 003 0 531 lda stxwd,1 get word containing stx 00200 022 177 0 532 iana rubout mask it out assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 46 lip -- lsla interrupt processer 00201 422 002 0 533 icmpa stx is it an stx 00202 0 74 011 213 534 tze lip055-* yes - the world is beautiful 00203 3 76 010 0 535 aos hcmt1,3 meter mi 00204 673 004 0 536 ila sffnsx 00205 2 31 005 0 537 cana sf.flg,2 test if stx on last frame 00206 0 74 002 210 538 tze lip053-* no, set flag to resync 00207 673 040 0 539 ila sffrsy 00210 540 lip053 null 00210 2 72 005 0 541 orsa sf.flg,2 set flag 542 so we'll resync if it happens again 00211 2 41 004 0 543 ldx3 sf.bfc,2 get buff 00212 0 71 045 257 544 tra lip060-* and hope it don't happen again. 00213 673 733 0 545 lip055 ila ntrstx remember that we got stx correctly and 00214 2 32 005 0 546 ansa sf.flg,2 clear possible sffnsx bit from last frame 00215 3 07 016 0 547 lda hcmt4,3 see if w 00216 0 74 005 223 548 tze lip057-* no 00217 3 27 013 0 549 cmpa hcmt3,3 new reco 00220 0 75 002 222 550 tmi 2 no 00221 3 17 013 0 551 sta hcmt3,3 yes - sa 00222 3 56 016 0 552 stz hcmt4,3 clear te 553 00223 0 04 155 400 554 lip057 ldaq mframe-* meter total frames 00224 0 15 156 402 555 adaq dbl1-* 00225 0 14 153 400 556 staq mframe-* 00226 2332 00 0 557 cx1a buffer containing input frame 00227 0 06 146 375 558 ada l.i002-* =stxwrd+1,b.1 address of first data char 00230 4333 00 0 559 cax3 00231 473 064 0 560 ilq long number of chars in long frame 00232 673 001 0 561 ila sffslo short frame bit 00233 2 31 005 0 562 cana sf.flg,2 is this short frame? end of binary card 00000008 00234 0 74 002 236 563 tze 2 no 00235 473 025 0 564 ilq short yes 00236 673 037 0 565 ila fill copy of fill character in empty slots 00237 3 27 200 0 566 lip058 cmpa 0,3,b.0 empty frame? 00240 0 64 012 252 567 tnz lip059-* no, must schedule status processor 00241 373 300 0 568 iacx3 0,b.1 next char 00242 573 777 0 569 iaq -1 00243 0 64 774 237 570 tnz lip058-* 00244 2332 00 0 571 cx1a check won, can reuse buffer 00245 4333 00 0 572 cax3 buts its address must be here 00246 0 04 130 376 573 ldaq mempty-* meter empty frames 00247 0 15 133 402 574 adaq dbl1-* 00250 0 14 126 376 575 staq mempty-* 00251 0 71 006 257 576 tra lip060-* go setup new icw 00252 0 04 104 356 577 lip059 ldaq qframe-* get prio 00253 4 10 055 330 578 tsy cquer-*,* queue up frame to be processed 579 (buffer address passed in x1) 00254 473 040 0 580 ilq lbfsiz get buffer size 00255 4 10 054 331 581 tsy igtrbf-*,* get another buffer 00256 582 die 10 none available -- disastrous error assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 47 lip -- lsla interrupt processer 00257 583 lip060 null 00257 2 07 003 0 584 lda sf.ioc,2 make old "next buffer" current 00260 2 17 004 0 585 sta sf.bfc,2 00261 2 50 003 0 586 stx3 sf.ioc,2 save new buffer address as "next" 00262 3333 00 0 587 cx3a put buffer address in a 00263 0 06 075 360 588 ada icwbts-* add 1 word, 1 char 00264 2 47 014 0 589 ldq sf.ity,2 generate icw for next frame 00265 6 14 010 0 590 staq sf.icw,2* store it 00266 3 56 003 0 591 stz stxwd,3 clear stx word of new buffer 00267 673 002 0 592 ila cicw 00270 2 62 010 0 593 ersa sf.icw,2 flip icw pointer 00271 0 71 533 24 594 tra lip002-* go check for another status 595 00272 596 lip070 null input error 00272 673 020 0 597 ila sffptr are things just getting started 00273 2 31 005 0 598 cana sf.flg,2 00274 0 64 003 277 599 tnz lip072-* 600 yes - ignore status 00275 2 72 005 0 601 orsa sf.flg,2 set ptro expected from now on 00276 0 71 526 24 602 tra lip002-* process next status 603 00277 604 lip072 null 00277 473 002 0 605 ilq 2 meter bad input status 00300 4 10 032 332 606 tsy imeter-*,* 00301 6 04 001 0 607 ldaq sf.nxa,2* get status again 00302 0 31 022 324 608 cana tro-* tally runout? end of binary card 00000009 00303 4 64 066 371 609 tnz a.i003-*,* (lip230) yes, reconnect 610 00304 611 die 8 else we don't know what it is 612 613 00305 673 010 0 614 lip090 ila sffrun 00306 2 31 005 0 615 cana sf.flg,2 test if just getting started 00307 0 64 075 404 616 tnz lip200-* 617 yes -- probably ok 00310 573 001 0 618 iaq 1 add on initial state bit 00311 0 67 041 352 619 cmpq nrmbts-* test if everything on yet 00312 0 64 004 316 620 tnz lip094-* no - wait for it to come on 00313 2 72 005 0 621 orsa sf.flg,2 now insist that it stays on 00314 673 776 0 622 ila -2 clear initial state bit 00315 0 32 035 352 623 ansa nrmbts-* 00316 6 04 001 0 624 lip094 ldaq sf.nxa,2* refetch status 00317 0 71 550 67 625 tra lip012-* go process it 626 627 00320 000000 0 628 t3wjt oct temp for third word of jump table 00321 0 02000 0 629 iptro zero ls.ptr pretally runout bit 00322 073 000 0 630 selcmd sel 0 select command 00323 0 00040 0 631 xterr zero ls.xte output error conditions 00324 0 04000 0 632 tro zero ls.tro assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 48 lip -- lsla interrupt processer 633 00325 0 00500 0 634 ihwcm ind l1mb indirect word to lsla hardware com regions 00326 0 06000 3 635 ig3wjt zero g3wjt indirect word to get third word routine 00327 0 10000 3 636 imdisp zero mdisp indirect word to master dispatcher 00330 0 12000 3 637 cquer ind dspqur secondary dispatcher queuer 00331 0 15000 3 638 igtrbf ind getbuf indirect wort to get lsla buffer 00332 0 20000 3 639 imeter ind meterc 640 00333 077777 0 641 addmsk oct 077777 address mask 00334 642 even 00334 037037 0 643 4fill vfd 9/fill,9/fill,9/fill,9/fill some fills 00335 037037 0 644 resync command 00336 340000 0 645 rsync vfd 2/1,4/resync,12/0,18/ls.rcv+ls.snd+ls.dtr+ls.rts 00337 000660 0 646 647 broadside nop command 00340 200000 0 648 broad vfd 2/1,16/0,18/ls.rcv+ls.snd+ls.dtr+ls.rts 00341 000660 0 649 650 store receive status and switch icw 00342 060000 0 651 switch vfd 2/0,4/swcmd,12/0,18/0 00343 000000 0 652 00344 000000 0 653 errflg oct 0 flag indicating whether to queue error message 00345 000003 0 654 stcode dec 3 code for error msg (this location must be odd) 00346 655 errst bss 2 status to be sent with error message 656 00350 000005 0 657 rcode dec 5 code for error message 00351 658 lslano bss 1 place to store lsla number for errmsg 659 end of binary card 00000010 00352 700661 0 660 nrmbts vfd 18/norms 661 00353 662 tstat bss 1 temporary for half a status 663 00354 664 even 00354 0 00002 0 665 qotgen ind lsaotp queue output frame generator 00355 0 00605 1 666 ind loutpt 667 00356 0 00003 0 668 qframe ind lsainp word pair for queueing input frame 00357 0 01564 1 669 ind linput 670 00360 3 00001 0 671 icwbts zero 1,b.1 used to generate send icw 672 00361 0 20000 0 673 altbit zero ls.alt 00362 0 00200 0 674 sendst zero ls.snd 00363 0 00400 0 675 rcvst zero ls.rcv 00364 700060 0 676 leads vfd 18/ls.dsr+ls.cts+ls.cd+ls.dtr+ls.rts 677 00365 010000 0 678 exh oct 010000 bit indicating exhausted icw assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 49 lip -- lsla interrupt processer 679 00366 0 00024 1 680 nxtst ind lip002 for processing next status after handling error 681 00367 0 00345 1 682 a.i001 ind stcode 00370 0 05000 3 683 a.i002 ind derrq 00371 0 00476 1 684 a.i003 ind lip230 00372 0 00534 1 685 a.i004 ind lrsync resynchronization subroutine 00373 0 00350 1 686 a.i005 ind rcode 00374 0 00257 1 687 a.i006 ind lip060 place to refresh input icws 00375 3 00004 0 688 l.i002 ind stxwd+1,b.1 00376 689 even 00376 000000 0 690 mempty oct 0,0 meter number of empty lsla inpuut frames 00377 000000 0 00400 000000 0 691 mframe oct 0,0 total input frames 00401 000000 0 00402 000000 0 692 dbl1 oct 0,1 00403 000001 0 693 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 50 lip -- lsla interrupt processer 694 eject 695 here to handle abnormal status 00404 696 lip200 null 00404 6 04 001 0 697 ldaq sf.nxa,2* get status in aq 00405 2334 22 0 698 llr 18 switch a and q temporarily 00406 0 17 745 353 699 sta tstat-* save low-order word 00407 0 34 755 364 700 ana leads-* see if all data set leads are on 00410 0 27 754 364 701 cmpa leads-* 00411 0 64 077 510 702 tnz lip240-* they aren't go resynchronize 703 00412 0 07 741 353 704 lda tstat-* get saved word back 00413 0 31 747 362 705 cana sendst-* did we drop out of send mode? 00414 0 64 044 460 706 tnz lip220-* no, check for other problems 00415 7333 00 0 707 cqa yes, get high-order word of status back in a 00416 0 75 042 460 708 tmi lip220-* receive status, doesn't matter 00417 0 31 705 324 709 cana tro-* tally runout? end of binary card 00000011 00420 0 74 024 444 710 tze lip210-* no, not good 00421 473 001 0 711 ilq 1 yes, meter it 00422 4 10 710 332 712 tsy imeter-*,* meterc 713 make sure both send icws are ok 00423 2 47 015 0 714 ldq sf.oty,2 we may need this 00424 3 07 005 0 715 lda h.sic0+1,3 get low-order word of primary icw 00425 0 31 740 365 716 cana exh-* exhausted? 00426 0 74 005 433 717 tze lip205-* no, check other icw 00427 2 07 013 0 718 lda sf.otb,2 yes, refresh it 00430 0 06 730 360 719 ada icwbts-* 1,b.1 00431 3 14 004 0 720 staq h.sic0,3 00432 7 56 004 0 721 stz h.sic0,3* zero out first word of buffer 722 00433 723 lip205 null check secondary icw 00433 3 07 007 0 724 lda h.sic1+1,3 00434 0 31 731 365 725 cana exh-* is it exhausted? 00435 0 74 041 476 726 tze lip230-* no, go ahead and reconnect 00436 2 07 013 0 727 lda sf.otb,2 yes, refresh it 00437 2 06 007 0 728 ada sf.bfl,2 point to second buffer 00440 0 06 720 360 729 ada icwbts-* 1,b.1 00441 3 14 006 0 730 staq h.sic1,3 00442 7 56 006 0 731 stz h.sic1,3* 00443 0 71 033 476 732 tra lip230-* now reconnect 00444 733 lip210 null 734 not tro, refresh current send icw 00444 0 76 700 344 735 aos errflg-* we will send error message 00445 2 43 013 0 736 ldx1 sf.otb,2 point to output buffers 00446 2 07 011 0 737 lda sf.ocw,2 find out which is current icw 00447 222 002 0 738 icana cicw 00450 0 74 002 452 739 tze 2 00451 2 42 007 0 740 adcx1 sf.bfl,2 second one, point to second buffer 00452 1 56 000 0 741 stz 0,1 make sure to mark buffer in use 00453 2332 00 0 742 cx1a get buffer address + 1 word,1 char 00454 0 06 704 360 743 ada icwbts-* for icw assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 51 lip -- lsla interrupt processer 00455 2 47 015 0 744 ldq sf.oty,2 get standard tally 00456 6 14 011 0 745 staq sf.ocw,2* store icw 00457 0 71 017 476 746 tra lip230-* reconnect 00460 747 lip220 null 748 we didn't drop out of send 00460 0 31 703 363 749 cana rcvst-* well, did we drop out of receive? 00461 0 64 036 517 750 tnz lip270-* no, this is funny status to be reported 751 and ignored 00462 7333 00 0 752 cqa yes, get high-order word back 00463 0 65 405 70 753 tpl lip013-* send status, so we don't care 00464 0 31 640 324 754 cana tro-* tally runout? 00465 0 74 023 510 755 tze lip240-* if not, resynchronize 756 else just reconnect 00466 473 002 0 757 ilq 2 meter tro end of binary card 00000012 00467 4 10 643 332 758 tsy imeter-*,* meterc 759 if receive icws aren't cool, resync 00470 3 07 001 0 760 lda h.ric0+1,3 get primary receive icw 00471 0 31 674 365 761 cana exh-* exhausted? 00472 0 64 021 513 762 tnz lip250-* yes, resync 00473 3 07 003 0 763 lda h.ric1+1,3 else check secondary one 00474 0 31 671 365 764 cana exh-* 00475 0 64 016 513 765 tnz lip250-* if it's exhausted, resync 766 00476 767 lip230 null here to reconnect 00476 0 07 622 320 768 lda t3wjt-* get 3rd word of jump table 00477 2337 16 0 769 arl 14 isolate channel number 00500 0 37 622 322 770 ora selcmd-* make a select command 00501 3331 00 0 771 inh make sure no interrupts after select 00502 0 17 001 503 772 sta 1 00503 000000 0 773 oct patched in sel command 00504 0 60 634 340 774 cioc broad-* broadside nop, to put everything up 775 00505 0 20 637 344 776 szn errflg-* did we decide it was worth kvetching about? 00506 4 74 660 366 777 tze nxtst-*,* (lip002) no, get next status 00507 0 71 010 517 778 tra lip270-* go queue error message 779 00510 780 lip240 null 00510 0 76 634 344 781 aos errflg-* 00511 473 003 0 782 ilq 3 meter unusual status 00512 4 10 620 332 783 tsy imeter-*,* meterc 00513 784 lip250 null here to resynchronize 00513 673 040 0 785 ila sffrsy set flag so we'll resync at next output status 00514 2 72 005 0 786 orsa sf.flg,2 00515 0 20 627 344 787 szn errflg-* anything worth talking about? 00516 0 74 007 525 788 tze lip280-* no, check to see if we must refresh icws 789 00517 790 lip270 null here to queue error message 791 for transmission to multics 00517 6 04 001 0 792 ldaq sf.nxa,2* pick up status again 00520 0 14 626 346 793 staq errst-* put it in command data for error msg assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 52 lip -- lsla interrupt processer 00521 0 03 646 367 794 ldx2 a.i001-* get address of command data 00522 473 115 0 795 ilq errmsg and opcode 00523 4 10 645 370 796 tsy a.i002-*,* derrq 00524 3 03 011 0 797 ldx2 h.sfcm,3 restore sfcm address to x2 00525 798 lip280 null 00525 673 040 0 799 ila sffrsy 00526 2 31 005 0 800 cana sf.flg,2 did we decide to resync? 00527 4 74 637 366 801 tze nxtst-*,* no, get next status (lip002) 802 yes, make sure input icws are refreshed if necess 00530 6 07 001 0 803 lda sf.nxa,2* receive status? 00531 4 65 635 366 804 tpl nxtst-*,* no, don't bother 00532 2 41 004 0 805 ldx3 sf.bfc,2 get buffer just used 00533 4 71 641 374 806 tra a.i006-*,* (lip060) go refresh 807 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 53 lrsync -- resynchronization subroutine 808 ttls lrsync -- resynchronization subroutine 809 810 this subroutine is called at output status pocess 811 time if sffrsy is set in the sfcm 812 it is called at output time to make sure the inp 813 are not currently storing syn characters 814 00534 815 lrsync subr lrs end of binary card 00000013 00537 3331 00 0 816 inh can't afford to fool around 00540 3 76 012 0 817 aos hcmt2,3 count re 00541 673 200 0 818 ila sffrlm have we sent an error message about resync? 00542 2 31 005 0 819 cana sf.flg,2 00543 0 64 016 561 820 tnz lrs010-* yes, don't bother checking limit 00544 3 07 016 0 821 lda hcmt4,3 get count of successive resync tries 00545 0 27 034 601 822 cmpa l.i001-* rlimit 00546 0 75 013 561 823 tmi lrs010-* haven't reached it, proceed 824 else we'll send error message to multics 00547 673 200 0 825 ila sffrlm turn flag on so we don't send more than one messa 00550 2 72 005 0 826 orsa sf.flg,2 00551 0 07 547 320 827 lda t3wjt-* get 3rd word of jump table 00552 2337 16 0 828 arl 14 shift to get iom channel number 00553 773 767 0 829 iaa -9 lsla 0 is on channel 9 00554 0 17 575 351 830 sta lslano-* store it in errmsg command data 00555 473 115 0 831 ilq errmsg get command code 00556 0 03 615 373 832 ldx2 a.i005-* addr(command data) 00557 4 10 611 370 833 tsy a.i002-*,* derrq 00560 3 03 011 0 834 ldx2 h.sfcm,3 restore sfcm address to x2 835 00561 836 lrs010 null 00561 3 76 016 0 837 aos hcmt4,3 bump count of successive tries 838 00562 0 07 536 320 839 lda t3wjt-* get third word of jump table 00563 2337 16 0 840 arl 14 shift to get ioc channel 00564 0 37 536 322 841 ora selcmd-* generate a select command, 00565 0 17 001 566 842 sta 1 store it, and 00566 000000 0 843 oct execute it 00567 0 60 547 336 844 cioc rsync-* tell sla to resyncronize 845 reset icw which was in use 00570 2 07 004 0 846 lda sf.bfc,2 get last-used buffer 00571 2 47 014 0 847 ldq sf.ity,2 get normal input tally 00572 0 06 010 602 848 ada rbits-* 2,b.1 -- two characters eaten by sync search 00573 573 776 0 849 iaq -2 decrement tally for same reason 00574 6 14 010 0 850 staq sf.icw,2* update icw 851 00575 673 733 0 852 ila ntrstx look for successive stx's again 00576 2 32 005 0 853 ansa sf.flg,2 by turning off sffnsx 00577 854 return lrsync 855 856 00601 0 01750 0 857 l.i001 zero rlimit number of successive resyncs to cause errmsg assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 54 lrsync -- resynchronization subroutine 858 00602 3 00002 0 859 rbits zero 2,b.1 five chars from start of buffer (for resync) 860 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 55 dummy entries for symmetry with hsla_man 861 ttls dummy entries for symmetry with hsla_man 862 863 00603 864 lbreak null change break list (feature not implemented) 00603 865 loutav null 00603 0 00000 0 866 ind 0 00604 4 71 777 603 867 tra -1,* assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 56 loutpt -- output frame generator 868 ttls loutpt -- output frame generator 00605 869 loutpt null 870 called to generate output frame. 871 scheduled at interrupt time. at entry: 872 873 x1 contains software comm. region address 874 875 we get frame address from sfcm 876 877 end of binary card 00000014 00605 1 03 013 0 878 ldx2 sf.otb,1 get pointer to output frame 00606 673 002 0 879 ila sffsnd 00607 1 31 005 0 880 cana sf.flg,1 find out if using second buffer 00610 0 74 002 612 881 tze 2 00611 1 02 007 0 882 adcx2 sf.bfl,1 if so, skip over first one 00612 1 62 005 0 883 ersa sf.flg,1 switch buffer flag 00613 2 20 000 0 884 szn 0,2 currently outputting from buffer? 00614 4 74 326 1142 885 tze a.a002-*,* (secdsp) return if so 00615 473 064 0 886 ilq long get long frame size 00616 673 001 0 887 ila sffslo 00617 1 31 005 0 888 cana sf.flg,1 "slow" line? 00620 0 74 002 622 889 tze lou010-* 00621 473 025 0 890 ilq short yes, use short frame size 00622 891 lou010 null 00622 0 57 311 1133 892 stq maxslt-* 00623 673 001 0 893 ila 1 00624 0 17 310 1134 894 sta slotno-* initialize slot index 00625 4 56 314 1141 895 stz a.a001-*,* initialize "send char" flag used by comand 00626 3332 00 0 896 cx2a switch x2 to char. addressing 00627 0 06 270 1117 897 ada l.a009-* (4,b.1) and skip over t & d slot 00630 0332 00 0 898 cax2 x2 now points to first slot in frame 00631 1 41 012 0 899 ldx3 sf.ltb,1 00632 0 50 305 1137 900 stx3 ltbp-* save lsla table pointer assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 57 loutpt -- output frame generator 901 eject 00633 902 lou020 null start processing time slot 00633 0 41 304 1137 903 ldx3 ltbp-* get pointer to lsla table entry 904 for last slot 00634 373 002 0 905 iacx3 2 bump to next 00635 0 50 302 1137 906 stx3 ltbp-* and save it 907 x3 now points to lsla table entry 00636 3 43 001 0 908 ldx1 lt.tib,3 get tib address 00637 0 74 243 1102 909 tze lou300-* no tib, skip slot 00640 3 07 000 0 910 lda lt.flg,3 00641 022 007 0 911 iana lt.sid isolate slot id 00642 422 006 0 912 icmpa lt15b second slot of 15cps line? 00643 0 64 005 650 913 tnz lou030-* 00644 0 07 245 1111 914 lda l.a002-* =ltfskp 00645 3 62 000 0 915 ersa lt.flg,3 flip the "skip" switch 00646 3 31 000 0 916 cana lt.flg,3 did we turn it on or off? 00647 0 74 233 1102 917 tze lou300-* off, so we'll skip it this time 918 * 00650 919 lou030 null 00650 1 41 030 0 920 ldx3 t.ftse,1 get pointer to principal lsla table entry 00651 0 50 265 1136 921 stx3 lste-* save it 922 923 see if we're in the middle of sending 00652 0 07 250 1122 924 lda l.a012-* (=ltfesc) a command character 00653 3 31 000 0 925 cana lt.flg,3 end of binary card 00000015 00654 0 64 067 743 926 tnz lou073-* yes, go finish it 927 00655 0 07 241 1116 928 lda l.a008-* (=ltfbrk) currently sending delays 929 for line break? 00656 3 31 000 0 930 cana lt.flg,3 00657 0 74 015 674 931 tze lou050-* 00660 1 07 031 0 932 lda t.bcnt,1 yes, get count 00661 0 74 004 665 933 tze lou040-* 00662 773 777 0 934 iaa -1 not last one, decrement it 00663 1 17 031 0 935 sta t.bcnt,1 00664 0 71 216 1102 936 tra lou300-* next slot 00665 937 lou040 null 00665 673 377 0 938 ila evdel even parity del (377) 00666 2 17 200 0 939 sta 0,2,b.0 in slot 00667 0 07 227 1116 940 lda l.a008-* =ltfbrk 00670 3 62 000 0 941 ersa lt.flg,3 turn it off 00671 0 07 230 1121 942 lda l.a011-* =^tsfbrk 00672 1 32 000 0 943 ansa t.stat,1 turn off tib flag too 00673 0 71 207 1102 944 tra lou300-* and on to next 945 * 00674 946 lou050 null 00674 0 56 244 1140 947 stz ecoflg-* initialize echo flag 948 if echo buffer overflowed, we want 949 to send out a bell 00675 0 07 220 1115 950 lda l.a007-* =tfbel assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 58 loutpt -- output frame generator 00676 1 31 001 0 951 cana t.flg,1 bell flag on? 00677 0 74 004 703 952 tze lou053-* 00700 1 62 001 0 953 ersa t.flg,1 yes, turn it off 00701 473 007 0 954 ilq bel get bell 00702 0 71 024 726 955 tra lou058-* put in frame (as if from echo buffer) 956 00703 957 lou053 null 958 00703 0 07 220 1123 959 lda l.a013-* =ltfdcw 00704 3 31 000 0 960 cana lt.flg,3 new dcw list to process? 00705 0 74 006 713 961 tze lou054-* 00706 3 62 000 0 962 ersa lt.flg,3 yes, turn flag off 00707 4 10 242 1151 963 tsy a.a009-*,* loudcw 00710 0 71 172 1102 964 tra lou300-* slot has been filled, on to next 00711 0 71 772 703 965 tra lou053-* command that didn't use slot, see if there's more 00712 0 71 004 716 966 tra lou055-* output, we know we're in xmit, so skip test 967 00713 968 lou054 null 00713 0 07 201 1114 969 lda l.a006-* =tsfxmt 00714 1 31 000 0 970 cana t.stat,1 in transmit mode? 00715 0 74 004 721 971 tze lou057-* 972 yes, but does echoing take priority? 00716 973 lou055 null 00716 0 07 207 1125 974 lda l.a015-* =tfecho 00717 1 31 036 0 975 cana t.flg3,1 00720 0 74 013 733 976 tze lou060-* if not, go check for output 00721 977 lou057 null 00721 1 07 001 0 978 lda t.flg,1 is output suspended? 00722 0 31 206 1130 979 cana l.a018-* =tfosus end of binary card 00000016 00723 0 64 157 1102 980 tnz lou300-* yes, wait till later 00724 4 10 217 1143 981 tsy a.a003-*,* see if there's a char. to echo 982 (geteco) 00725 0 71 003 730 983 tra lou059-* there wasn't 984 there was, it's in the q 00726 985 lou058 null 00726 0 76 212 1140 986 aos ecoflg-* turn on echo flag 00727 0 71 040 767 987 tra lou200-* go put char. in frame 988 * 00730 0 07 164 1114 989 lou059 lda l.a006-* =tsfxmt 00731 1 31 000 0 990 cana t.stat,1 in xmit mode? 00732 0 74 006 740 991 tze lou070-* no, check dcw list 992 00733 993 lou060 null 00733 1 07 001 0 994 lda t.flg,1 is output suspended? 00734 0 31 174 1130 995 cana l.a018-* =tfosus 00735 0 64 145 1102 996 tnz lou300-* yes, wait till later 00736 1 20 013 0 997 szn t.ocur,1 is there an output buffer? 00737 0 64 017 756 998 tnz lou100-* yes, go process it 999 00740 1000 lou070 null assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 59 loutpt -- output frame generator 1001 are waiting to request status? 00740 0 07 160 1120 1002 lda l.a010-* =ltfst 00741 3 31 000 0 1003 cana lt.flg,3 00742 0 74 004 746 1004 tze lou075-* no, never mind 00743 1005 lou073 null 00743 473 000 0 1006 ilq 0 else pass comand subr a null command 00744 4 10 201 1145 1007 tsy a.a005-*,* =comand 00745 0 71 135 1102 1008 tra lou300-* that's all for this slot 1009 00746 1010 lou075 null 00746 1 20 024 0 1011 szn t.dcwl,1 dcw list to process? 00747 0 74 133 1102 1012 tze lou300-* no, go to next slot 00750 4 10 201 1151 1013 tsy a.a009-*,* (loudcw) yes, deal with it 00751 0 71 131 1102 1014 tra lou300-* slot has been filled by command 00752 0 71 731 703 1015 tra lou053-* slot is available for further use 1016 else it was output subop 00753 0 07 152 1125 1017 lda l.a015-* =tfecho 00754 322 777 0 1018 iera -1 must be turned off 00755 1 32 036 0 1019 ansa t.flg3,1 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 60 loutpt -- output frame generator 1020 eject 1021 we have an output buffer, presumably 1022 with something in it, so we'll 1023 send a character 1024 00756 1025 lou100 null 00756 1 41 015 0 1026 ldx3 t.occh,1 get pointer to current character 00757 3 47 200 0 1027 ldq 0,3,b.0 get the character itself 1028 00760 373 300 0 1029 iacx3 0,b.1 update character pointer 00761 1 50 015 0 1030 stx3 t.occh,1 1031 00762 4 10 166 1150 1032 tsy a.a008-*,* (move) do carriage movement 00763 0 71 004 767 1033 tra lou200-* we don't care what the char was 00764 0 71 003 767 1034 tra lou200-* 00765 0 71 002 767 1035 tra lou200-* 00766 0 71 001 767 1036 tra lou200-* 1037 00767 1038 lou200 null 1039 output char. is in q 1040 now calculate parity and put it 1041 in the slot 1042 00767 0 41 147 1136 1043 ldx3 lste-* get lsla table entry back 00770 673 100 0 1044 ila ltfibm is it an ibm-type (odd parity) terminal? 00771 3 31 000 0 1045 cana lt.flg,3 end of binary card 00000017 00772 0 74 007 1001 1046 tze lou210-* 1047 yes 00773 7333 00 0 1048 cqa get character 00774 022 077 0 1049 iana mask6 make 6-bit char. 00775 3336 22 0 1050 alp 18 get parity 00776 0 64 005 1003 1051 tnz lou215-* odd is right 00777 122 100 0 1052 iora par6 01000 0 71 003 1003 1053 tra lou215-* now make it 8-bit even so lsla will send it 1054 01001 1055 lou210 null ascii terminal 01001 7333 00 0 1056 cqa get character 01002 022 177 0 1057 iana mask7 make 7-bit char. 01003 1058 lou215 null 01003 3336 22 0 1059 alp 18 get parity 01004 0 74 002 1006 1060 tze lou220-* even is right 01005 122 200 0 1061 iora par7 else make it so 1062 * 01006 1063 lou220 null 01006 2 17 200 0 1064 sta 0,2,b.0 store char in slot 01007 0 17 126 1135 1065 sta outchr-* save it for trace call 01010 1066 trace mt.cmd,tr.frm,(outchr,slotno,t.line(1)) 1067 01026 0 20 112 1140 1068 szn ecoflg-* was it an echo char? 01027 0 64 053 1102 1069 tnz lou300-* if so, done with slot assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 61 loutpt -- output frame generator 01030 1 41 013 0 1070 ldx3 t.ocur,1 get pointer to output buffer 01031 3 07 001 0 1071 lda bf.tly,3 get word with tally 01032 773 777 0 1072 iaa -1 decrement tally 01033 3 17 001 0 1073 sta bf.tly,3 01034 0 34 057 1113 1074 ana l.a005-* (=buftmk) isolate tally to check for zero 01035 0 64 045 1102 1075 tnz lou300-* if non-zero, go to next slot 1076 * 01036 1077 lou240 null buffer exhausted, free it and get next 01036 3 07 000 0 1078 lda bf.nxt,3 get pointer to next buffer 01037 1 17 013 0 1079 sta t.ocur,1 save it in tib 01040 3 07 001 0 1080 lda bf.flg,3 is this buffer to be saved? 01041 0 31 066 1127 1081 cana l.a017-* =bffhld end of binary card 00000018 01042 0 64 025 1067 1082 tnz lou248-* yes, don't free it 01043 0 31 061 1124 1083 cana l.a014-* (bffctl) is it control buffer? 01044 0 64 012 1056 1084 tnz lou245-* 01045 673 777 0 1085 ila -1 decrement output chain buffer count 01046 1 16 016 0 1086 asa t.ocnt,1 1087 01047 1 07 016 0 1088 lda t.ocnt,1 have we reached output buffer threshold? 01050 422 002 0 1089 icmpa bufthr 01051 0 64 005 1056 1090 tnz lou245-* 01052 1 20 012 0 1091 szn t.ocp,1 (without there being another chain behind) 01053 0 64 003 1056 1092 tnz lou245-* 01054 473 105 0 1093 ilq sndout if so, ask dia_man to ask 6180 for 01055 4 10 072 1147 1094 tsy a.a007-*,* more output (denq) 1095 now free the buffer 01056 1096 lou245 null 01056 1097 trace mt.obf,tr.buf,(x3) 1098 01065 473 000 0 1099 ilq 0 let frebuf get buffer size 01066 4 10 056 1144 1100 tsy a.a004-*,* (frebuf) free the buffer 1101 * 01067 1 07 013 0 1102 lou248 lda t.ocur,1 is there another buffer? 01070 0 64 006 1076 1103 tnz lou250-* 01071 0 07 035 1126 1104 lda l.a016-* (^tfwrit) no, turn off tfwrit 01072 1 32 001 0 1105 ansa t.flg,1 1106 make sure echoing takes priority in full duplex 01073 0 07 032 1125 1107 lda l.a015-* tfecho 01074 1 72 036 0 1108 orsa t.flg3,1 01075 0 71 005 1102 1109 tra lou300-* next slot 1110 * 01076 1111 lou250 null new buffer, set t.occh to point 01076 773 002 0 1112 iaa bf.dta to first data char. 01077 0 37 011 1110 1113 ora l.a001-* 0,b.0 01100 1 17 015 0 1114 sta t.occh,1 01101 1 41 013 0 1115 ldx3 t.ocur,1 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 62 loutpt -- output frame generator 1116 eject 01102 1117 lou300 null here to bump to next time slot 1118 if any 01102 0 07 032 1134 1119 lda slotno-* get slot no. 01103 0 27 030 1133 1120 cmpa maxslt-* was this last one? 01104 4 65 036 1142 1121 tpl a.a002-*,* yes, we're done, go back to secondary 1122 dispatcher 1123 * 01105 0 76 027 1134 1124 aos slotno-* bump slot no. 01106 273 300 0 1125 iacx2 0,b.1 and slot pointer 1126 01107 0 71 524 633 1127 tra lou020-* process next one 1128 1129 1130 end of binary card 00000019 01110 2 00000 0 1131 l.a001 zero 0,b.0 character addressing 01111 000010 0 1132 l.a002 vfd 18/ltfskp skip flag in lsla table entry 01112 000012 0 1133 l.a003 dec 10 1134 01113 000777 0 1135 l.a005 vfd 18/buftmk 01114 000400 0 1136 l.a006 vfd 18/tsfxmt 01115 000002 0 1137 l.a007 vfd 18/tfbel 01116 002000 0 1138 l.a008 vfd 18/ltfbrk 01117 3 00004 0 1139 l.a009 zero stxwd+1,b.1 01120 004000 0 1140 l.a010 vfd 18/ltfst 01121 776777 0 1141 l.a011 vfd 18/ntsfbk 01122 000040 0 1142 l.a012 vfd 18/ltfesc 01123 010000 0 1143 l.a013 vfd 18/ltfdcw 01124 002000 0 1144 l.a014 vfd 18/bffctl 01125 000010 0 1145 l.a015 vfd 18/tfecho 01126 777776 0 1146 l.a016 vfd 18/ntfwrt 01127 001000 0 1147 l.a017 vfd 18/bffhld 01130 400000 0 1148 l.a018 vfd 18/tfosus 1149 01131 1150 l.t001 bss 1 temporary storage 01132 1151 l.t002 bss 1 more temporary storage 1152 01133 1153 maxslt bss 1 maximum number of time slots 01134 1154 slotno bss 1 current slot number 01135 1155 outchr bss 1 temp for output char for tracing 01136 1156 lste bss 1 address of current lsla table entry 01137 1157 ltbp bss 1 address of head of lsla table 01140 1158 ecoflg bss 1 flag indicating whether character is 1159 echo buffer 01141 0 01470 1 1160 a.a001 ind sndchr flag indicating whether to send cmd char 1161 01142 0 22000 3 1162 a.a002 ind secdsp secondary dispatcher 01143 0 02137 1 1163 a.a003 ind geteco subr to get char from echo buffer 01144 0 13000 3 1164 a.a004 ind frebuf buffer freeing subr 01145 0 01152 1 1165 a.a005 ind comand command subop processor assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 63 loutpt -- output frame generator 01146 0 21000 3 1166 a.a006 ind outprc output subop processor 01147 0 02000 3 1167 a.a007 ind denq queuing routine in dia_man 01150 0 04000 3 1168 a.a008 ind move carriage movement subroutine 01151 0 02100 1 1169 a.a009 ind loudcw processes dcw list for output side assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 64 comand -- subroutine to process "cmd" subop 1170 ttls comand -- subroutine to process "cmd" subop 1171 comand subroutine is called to 1172 process a "cmd" subop in a dcw list. 1173 1174 the 15 control bits are in bits 0-14 1175 of the q 1176 x1 points to the tib as always 1177 x2 to the current time slot 1178 x3 points to the lsla table entry 1179 1180 certain control functions require 1181 sending a control char to the lsla, 1182 preceded by an odd parity escape (o233) 1183 once the escape has been sent, t.stat 1184 reflects what bits to set in the 1185 control character. 1186 1187 if the q is zero (no command bits) 1188 we are just supposed to send a 1189 type 2 command (request for status) 1190 1191 000255 1192 cmd2 bool 255 status request command char 000003 1193 ctent equ 3 length of command table entry 1194 1195 01152 1196 comand subr com,(x2) 1197 * 01160 0 56 310 1470 1198 stz sndchr-* initialize "send char" flag 01161 673 040 0 1199 ila ltfesc was escape already sent? 01162 3 31 000 0 1200 cana lt.flg,3 01163 0 64 136 1321 1201 tnz com130-* if so, go do it 1202 end of binary card 00000020 01164 6337 03 0 1203 qrl 3 get the control bits in low-order 01165 0 57 302 1467 1204 stq cbits-* and save them 01166 0 74 033 1221 1205 tze com055-* if no control bits, just send type 2 1206 * 01167 1207 com010 null start checking for control bits 01167 1 07 000 0 1208 lda t.stat,1 get copy of t.stat for calculation 01170 0 17 301 1471 1209 sta ctemp-* of whether to send command 01171 0 47 372 1563 1210 ldq ctbsiz-* get size of table to be scanned 01172 0 03 301 1473 1211 ldx2 a.c002-* get addr of table 1212 * 01173 1213 com020 null 01173 2 07 000 0 1214 lda 0,2 get bit(s) to check for 01174 0 31 273 1467 1215 cana cbits-* find out if it's part of command 01175 0 74 013 1210 1216 tze com050-* no, bump to next table entry 01176 2 07 001 0 1217 lda 1,2 get bits to modify in tib 01177 0 75 003 1202 1218 tmi com030-* on or off? 01200 0 72 271 1471 1219 orsa ctemp-* on, just or them into copy assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 65 comand -- subroutine to process "cmd" subop 01201 0 71 003 1204 1220 tra com040-* 1221 * 01202 1222 com030 null bit is to be turned off 01202 0 35 273 1475 1223 era l.c001-* (=o377777) switch all bits except leave 1224 bit zero alone 01203 0 32 266 1471 1225 ansa ctemp-* 1226 01204 1227 com040 null 01204 2 20 002 0 1228 szn 2,2 is there a subroutine to call? 01205 0 74 003 1210 1229 tze com050-* if not, get next entry 01206 2 07 001 0 1230 lda 1,2 might need on/off bit 01207 6 10 002 0 1231 tsy 2,2* call the subroutine 1232 01210 1233 com050 null go to next table entry 01210 273 003 0 1234 iacx2 ctent bump pointer 01211 573 775 0 1235 iaq -ctent decrement counter 01212 0 64 761 1173 1236 tnz com020-* if any left, go around again 1237 01213 0 07 275 1510 1238 lda l.c013-* =o400000 01214 1 17 034 0 1239 sta t.char,1 mark this as direct result of command 1240 (not special status request call) 1241 01215 0 20 253 1470 1242 szn sndchr-* command char to send? 01216 0 64 012 1230 1243 tnz com080-* yes, go worry about it 01217 0 07 252 1471 1244 lda ctemp-* no, update t.stat now 01220 1 17 000 0 1245 sta t.stat,1 01221 1246 com055 null 01221 3 07 000 0 1247 lda lt.flg,3 is there a status request to send? 01222 0 31 254 1476 1248 cana l.c002-* (=ltfst) 01223 0 74 122 1345 1249 tze com180-* 1250 1251 yes, send status request 1252 (type 2 command) 01224 0 07 252 1476 1253 lda l.c002-* get ltfst 01225 3 62 000 0 1254 ersa lt.flg,3 in order to turn it off 01226 673 255 0 1255 ila cmd2 get type 2 command char 01227 1 72 034 0 1256 orsa t.char,1 save it in tib 1257 01230 1258 com080 null 01230 473 233 0 1259 ilq escop get odd parity esacpe 01231 0 03 726 1157 1260 ldx2 comsx2-* get slot pointer back 01232 2 57 200 0 1261 stq 0,2,b.0 put escape in 1262 01233 1263 trace mt.esc,tr.cmd,(a.c003-*(*),t.line(1)) end of binary card 00000021 1264 01246 0 07 231 1477 1265 lda l.c003-* get ltfesc 01247 3 72 000 0 1266 orsa lt.flg,3 and turn it on in lsla table 01250 0 20 220 1470 1267 szn sndchr-* will there be a control char? 01251 0 74 120 1371 1268 tze combak-* no, just a status request 1269 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 66 comand -- subroutine to process "cmd" subop 1270 1271 now fabricate command char for lsla 01252 0 07 217 1471 1272 lda ctemp-* first update t.stat to reflect 01253 1 17 000 0 1273 sta t.stat,1 effect of command 01254 673 100 0 1274 ila type1 type 1 command 01255 0 17 211 1466 1275 sta cchar-* 01256 0 07 222 1500 1276 lda l.c004-* =tsfdtr 01257 1 31 000 0 1277 cana t.stat,1 set dtr bit? 01260 0 74 006 1266 1278 tze com105-* 01261 673 004 0 1279 ila cd yes 01262 0 72 204 1466 1280 orsa cchar-* 1281 make sure lsla table flag is on 01263 0 07 221 1504 1282 lda l.c008-* =ltfdtr 01264 3 72 000 0 1283 orsa lt.flg,3 01265 0 71 004 1271 1284 tra com110-* 01266 1285 com105 null no dtr, make sure lsla flag is off 01266 0 07 216 1504 1286 lda l.c008-* =ltfdtr 01267 322 777 0 1287 iera -1 01270 3 32 000 0 1288 ansa lt.flg,3 1289 * 01271 1290 com110 null 01271 0 07 210 1501 1291 lda l.c005-* =tsfrts 01272 1 31 000 0 1292 cana t.stat,1 set rqs bit? 01273 0 74 006 1301 1293 tze com115-* 01274 673 002 0 1294 ila ca yes 01275 0 72 171 1466 1295 orsa cchar-* 1296 make sure lsla table flag is on 01276 0 07 207 1505 1297 lda l.c009-* =ltfrqs 01277 3 72 000 0 1298 orsa lt.flg,3 01300 0 71 004 1304 1299 tra com120-* 01301 1300 com115 null 1301 no request to send, make sure flag is off 01301 0 07 204 1505 1302 lda l.c009-* =ltfrqs end of binary card 00000022 01302 322 777 0 1303 iera -1 01303 3 32 000 0 1304 ansa lt.flg,3 1305 * 01304 1306 com120 null 01304 0 07 176 1502 1307 lda l.c006-* =tsfbrk 01305 1 31 000 0 1308 cana t.stat,1 set line break bit? 01306 0 74 005 1313 1309 tze com125-* 01307 673 001 0 1310 ila brk yes 01310 0 72 156 1466 1311 orsa cchar-* 1312 set break flag in lsla table 01311 0 07 175 1506 1313 lda l.c010-* =ltfbrk 01312 3 72 000 0 1314 orsa lt.flg,3 1315 01313 1316 com125 null 01313 0 07 153 1466 1317 lda cchar-* store completed control char 1318 check parity on command char now 01314 3336 22 0 1319 alp 18 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 67 comand -- subroutine to process "cmd" subop 01315 0 64 002 1317 1320 tnz 2 01316 122 200 0 1321 iora pbit not odd, make it so 01317 1 72 034 0 1322 orsa t.char,1 in tib (without disturbing flag) 01320 0 71 051 1371 1323 tra combak-* we'll send it next time 1324 01321 1325 com130 null 01321 1 07 034 0 1326 lda t.char,1 01322 0 03 635 1157 1327 ldx2 comsx2-* get slot pointer 01323 2 17 200 0 1328 sta 0,2,b.0 01324 0 07 153 1477 1329 lda l.c003-* =ltfesc 01325 322 777 0 1330 iera -1 to be turned off in lsla table 01326 3 32 000 0 1331 ansa lt.flg,3 1332 01327 1333 trace mt.cmd,tr.cmd,(t.char(1),a.c003-*(*),t.line(1)) 1334 now if marker or terminate status 01345 1335 com180 null wanted generate it for interpreter 01345 1 07 034 0 1336 lda t.char,1 01346 1 56 034 0 1337 stz t.char,1 clear this so we don't get confused later 1338 if high-order bit was off, this was 1339 special call to 01347 0 65 022 1371 1340 tpl combak-* send status request, in which case we're 1341 all done 1342 01350 0 07 137 1507 1343 lda l.c011-* =ltfdcw 01351 3 31 000 0 1344 cana lt.flg,3 if we're about to start a new dcw list, don't end of binary card 00000023 01352 0 64 005 1357 1345 tnz com200-* bump pointer 01353 1 76 023 0 1346 aos t.dcwa,1 bump pointer 01354 1 07 024 0 1347 lda t.dcwl,1 and decrement count of dcw list 01355 773 777 0 1348 iaa -1 01356 1 17 024 0 1349 sta t.dcwl,1 01357 1350 com200 null 1351 marker or terminate wanted? 01357 1 07 000 0 1352 lda t.stat,1 01360 0 31 123 1503 1353 cana l.c007-* =(tsfmrk+tsftrm) 01361 0 74 010 1371 1354 tze combak-* 1355 one or other is on, use t.stat 1356 to generate standard status 01362 022 177 0 1357 iana s.tib mask t.stat to bits that correspond to 1358 standard status 01363 6333 00 0 1359 caq hang on to it 01364 0 07 117 1503 1360 lda l.c007-* must turn off tsfmrk and tsftrm now 01365 322 777 0 1361 iera -1 01366 1 32 000 0 1362 ansa t.stat,1 01367 7333 00 0 1363 cqa get status word for interpreter 01370 4 10 102 1472 1364 tsy a.c001-*,* and call it 1365 1366 1367 01371 1368 combak return comand 1369 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 68 comand -- subroutine to process "cmd" subop 1370 1371 the following routines handle the few special cases 1372 for command bits 1373 1374 chkdtr and chkrqs make sure that the dtr and rqs 1375 bits (respectively) in the lsla table match those 1376 newly set in t.stat; if the bits in the lsla table 1377 were changed a command character must be sent to 1378 diddle the data set leads 1379 1380 actually they just load the a with the bit to 1381 be tested, and call check to do the test 1382 01373 1383 chkdtr subr chd,(q) 01401 6333 00 0 1384 caq save on/off indicator 01402 0 07 102 1504 1385 lda l.c008-* =ltfdtr 01403 0 10 016 1421 1386 tsy check-* 01404 1387 return chkdtr 1388 1389 01406 1390 chkrqs subr chr,(q) 01414 6333 00 0 1391 caq save on/off indicator 01415 0 07 070 1505 1392 lda l.c009-* =ltfrqs 01416 0 10 003 1421 1393 tsy check-* 01417 1394 return chkrqs end of binary card 00000024 1395 1396 check subroutine makes sure bit 1397 supplied in a is on or off in lsla table 1398 accordingly as sign bit in q is off or on 1399 respectively. 1400 if bit is wrong, command char 1401 will be sent 1402 01421 1403 check subr 01424 3 31 000 0 1404 cana lt.flg,3 test the bit 01425 0 64 004 1431 1405 tnz che010-* 1406 it's off 01426 4336 00 0 1407 qls 0 should it be? 01427 0 75 005 1434 1408 tmi chebak-* yes, don't do anything 01430 0 71 003 1433 1409 tra che020-* else fix it 1410 01431 1411 che010 null bit was on 01431 4336 00 0 1412 qls 0 should it be? 01432 0 65 002 1434 1413 tpl chebak-* yes, go away 1414 * 01433 1415 che020 null 01433 0 76 035 1470 1416 aos sndchr-* make sure command char gets sent 01434 1417 chebak return check 1418 1419 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 69 comand -- subroutine to process "cmd" subop 1420 cstat turns on "status pending" bit 1421 in lsla table (ltfst) 1422 01436 1423 cstat subr cst 1424 01441 0 07 035 1476 1425 lda l.c002-* =ltfst 01442 3 72 000 0 1426 orsa lt.flg,3 01443 1427 cstbak return cstat 1428 1429 1430 cbrk is used if a line break is to 1431 be transmitted; we must send a command 1432 char and also set the delay count 1433 depending on the line speed 1434 01445 1435 cbrk subr cbr 01450 0 76 020 1470 1436 aos sndchr-* make sure command char gets sent 01451 3 07 000 0 1437 lda lt.flg,3 01452 022 007 0 1438 iana lt.sid get slot id 01453 0 64 003 1456 1439 tnz cbr010-* 01454 673 005 0 1440 ila b10 zero is for 10 cps line 01455 0 71 006 1463 1441 tra cbr030-* 1442 01456 1443 cbr010 null 01456 022 004 0 1444 iana l15cps 15 cps line? 01457 0 74 003 1462 1445 tze cbr020-* 01460 673 010 0 1446 ila b15 yes 01461 0 71 002 1463 1447 tra cbr030-* 1448 01462 1449 cbr020 null must be 30 cps 01462 673 021 0 1450 ila b30 01463 1451 cbr030 null 01463 1 17 031 0 1452 sta t.bcnt,1 set the count 01464 1453 return cbrk 1454 1455 1456 1457 01466 1458 cchar bss 1 command character 01467 1459 cbits bss 1 control bits 01470 1460 sndchr bss 1 flag indicating command char to be sent 01471 1461 ctemp bss 1 temporary copy of t.stat 1462 end of binary card 00000025 01472 0 07000 3 1463 a.c001 ind istat status entry of interpreter 01473 0 01511 1 1464 a.c002 ind ctabs address of command table 01474 0 01134 1 1465 a.c003 ind slotno 1466 1467 01475 377777 0 1468 l.c001 oct 377777 01476 004000 0 1469 l.c002 vfd 18/ltfst assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 70 comand -- subroutine to process "cmd" subop 01477 000040 0 1470 l.c003 vfd 18/ltfesc 01500 002000 0 1471 l.c004 vfd 18/tsfdtr 01501 010000 0 1472 l.c005 vfd 18/tsfrts 01502 001000 0 1473 l.c006 vfd 18/tsfbrk 01503 000140 0 1474 l.c007 vfd 18/tsfmrk+tsftrm 01504 000200 0 1475 l.c008 vfd 18/ltfdtr 01505 000400 0 1476 l.c009 vfd 18/ltfrqs 01506 002000 0 1477 l.c010 vfd 18/ltfbrk 01507 010000 0 1478 l.c011 vfd 18/ltfdcw 01510 400000 0 1479 l.c013 oct 400000 1480 1481 1482 command bit table for comand subr 1483 001511 1484 ctabs equ * 01511 1485 cmt c.srec,0,tsfrcv,0 1486 01514 1487 cmt c.rrec,1,tsfrcv,0 1488 01517 1489 cmt c.sxmt,0,tsfxmt,0 1490 01522 1491 cmt c.rxmt,1,tsfxmt,0 1492 01525 1493 cmt c.sdtr,0,tsfdtr,chkdtr 1494 01530 1495 cmt c.rdtr,1,tsfdtr,chkdtr 1496 01533 1497 cmt c.ssup,0,tsfsxt,0 1498 01536 1499 cmt c.rsup,1,tsfsxt,0 1500 01541 1501 cmt c.stat,0,tsfst,cstat end of binary card 00000026 1502 01544 1503 cmt c.sbrk,0,tsfbrk,cbrk 1504 01547 1505 cmt c.smrk,0,tsfmrk,0 1506 01552 1507 cmt c.strm,0,tsftrm,0 1508 01555 1509 cmt c.srqs,0,tsfrts,chkrqs 1510 01560 1511 cmt c.rrqs,1,tsfrts,chkrqs 1512 01563 0 00052 0 1513 ctbsiz zero *-ctabs assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 71 linput -- processes input frame 1514 ttls linput -- processes input frame 1515 1516 this entry is scheduled by lip to deal with 1517 an input frame and is called by the secondary 1518 dispatcher 1519 1520 x1 contains the frame address at entry; the 1521 first word of the frame contains the software 1522 communications region address 1523 01564 1524 linput null 1525 01564 0 53 271 2055 1526 stx1 iframe-* save frame address 01565 1 41 000 0 1527 ldx3 sfcmwd,1 get sfcm address 01566 0 50 263 2051 1528 stx3 insfcm-* 01567 2332 00 0 1529 cx1a get frame address 01570 773 004 0 1530 iaa stxwd+1 point to first character 01571 0 37 237 2030 1531 ora l.b012-* 0,b.1 (skip t & d slot) 01572 0332 00 0 1532 cax2 x2 points to first character slot 01573 673 001 0 1533 ila 1 01574 0 17 252 2046 1534 sta isltno-* initialize slot counter 01575 473 064 0 1535 ilq long 01576 0 07 221 2017 1536 lda l.b002-* =sffslo 01577 3 31 005 0 1537 cana sf.flg,3 short frame? 01600 0 74 002 1602 1538 tze lin010-* 01601 473 025 0 1539 ilq short yes, get appropriate length 01602 1540 lin010 null 01602 0 57 243 2045 1541 stq imxslt-* set maximum number of slots 1542 01603 3 41 012 0 1543 ldx3 sf.ltb,3 get lsla table address 01604 0 50 243 2047 1544 stx3 inltb-* save it 1545 start processing slots assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 72 linput -- processes input frame 1546 eject 01605 1547 lin020 null head of slot-processing loop 01605 0 41 242 2047 1548 ldx3 inltb-* get pointer to last slot's 1549 lsla table entry 01606 373 002 0 1550 iacx3 2 bump to next entry 01607 0 50 240 2047 1551 stx3 inltb-* save it 1552 x3 points to next lsla table entry end of binary card 00000027 01610 3 43 001 0 1553 ldx1 lt.tib,3 get tib address 01611 0 74 172 2003 1554 tze lin300-* no tib, go to next slot 1555 01612 2 07 200 0 1556 lda 0,2,b.0 get input char 01613 422 037 0 1557 icmpa fill fill character? 01614 0 74 167 2003 1558 tze lin300-* (lin300) yes, that's all for this one 01615 0 17 227 2044 1559 sta inchar-* else hang on to it 1560 01616 0 04 242 2060 1561 ldaq mchars-* memter total lsla input chars 01617 0 15 243 2062 1562 adaq mdbl1-* 01620 0 14 240 2060 1563 staq mchars-* 1564 01621 1 41 030 0 1565 ldx3 t.ftse,1 get pointer to real lsla table entry 01622 0 50 226 2050 1566 stx3 inlte-* save it 1567 01623 673 233 0 1568 ila escop is char odd parity escape? 01624 2 27 200 0 1569 cmpa 0,2,b.0 01625 0 64 004 1631 1570 tnz lin023-* 1571 yes 01626 0 07 173 2021 1572 lda l.b004-* (=ltfste) set status expected flag 01627 3 72 000 0 1573 orsa lt.flg,3 01630 0 71 153 2003 1574 tra lin300-* and handle status next time 1575 01631 1576 lin023 null 01631 0 07 170 2021 1577 lda l.b004-* (=ltfste) status char coming in? 01632 3 31 000 0 1578 cana lt.flg,3 01633 0 64 061 1714 1579 tnz lin060-* yes, we must deal with it now 1580 01634 0 07 176 2032 1581 lda l.b014-* (ltfbbk) are we receiving a line break? 01635 3 31 000 0 1582 cana lt.flg,3 01636 0 64 145 2003 1583 tnz lin300-* (lin300) yes, ignore slot 1584 01637 1 20 024 0 1585 szn t.dcwl,1 dcw list to work on? 01640 0 74 121 1761 1586 tze lin100-* 01641 1 41 023 0 1587 ldx3 t.dcwa,1 yes 01642 0 56 215 2057 1588 stz rdtflg-* initialize "rdtly" flag 01643 3 07 000 0 1589 lda 0,3 get subop type 01644 2335 17 0 1590 lrl 15 isolate type 01645 422 002 0 1591 icmpa intyp input? 01646 0 74 004 1652 1592 tze lin024-* 01647 422 004 0 1593 icmpa rdttyp no, rdtly? 01650 0 64 111 1761 1594 tnz lin100-* no, output side will handle it 01651 0 76 206 2057 1595 aos rdtflg-* yes, set flag assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 73 linput -- processes input frame 1596 01652 1597 lin024 null 1598 do input if receive mode on only 01652 0 07 146 2020 1599 lda l.b003-* =tsfrcv 01653 1 31 000 0 1600 cana t.stat,1 on? 01654 0 74 127 2003 1601 tze lin300-* (lin300) if not, go to next slot 1602 1603 for an input subop, we are to 1604 throw away input characters until a 1605 matching character is found. 1606 if a tally of 1 is specified in the 1607 subop, exactly one character is thrown 1608 away no matter what it is. 1609 1610 for a rdtly subop, we store a specified 1611 number of input characters before updating 1612 the dcwlst. 1613 t.bcnt is used to hold the number 1614 of characters still to be stored 1615 when it goes to zero, the subop 1616 is finished, so when we start a new one, 1617 t.bcnt is zero 1618 01655 673 000 0 1619 ila 0 clear a 01656 0334 06 0 1620 lls 6 get count in a end of binary card 00000028 01657 0 20 200 2057 1621 szn rdtflg-* input or rdtly? 01660 0 74 010 1670 1622 tze lin025-* input, go deal with it 1623 01661 1 20 031 0 1624 szn t.bcnt,1 just starting it? 01662 0 74 002 1664 1625 tze 2 01663 1 07 031 0 1626 lda t.bcnt,1 no, get current count 01664 773 777 0 1627 iaa -1 decrement count (old or new) 01665 1 17 031 0 1628 sta t.bcnt,1 01666 0 74 017 1705 1629 tze lin030-* exhausted now? 1630 if so, go update pointer 01667 0 71 072 1761 1631 tra lin100-* else just put char in input buffer 1632 01670 1633 lin025 null input subop 01670 422 001 0 1634 icmpa 1 tally of one? 01671 0 74 014 1705 1635 tze lin030-* yes, we've finished it 01672 6337 11 0 1636 qrl 9 get comparison character in q low 1637 strip off parity from input character 01673 0 41 155 2050 1638 ldx3 inlte-* lsla table entry 01674 3 07 000 0 1639 lda lt.flg,3 01675 0 31 136 2033 1640 cana l.b015-* =ltfibm 01676 0 74 003 1701 1641 tze lin027-* 6-bit chars? 01677 673 077 0 1642 ila mask6 yes 01700 0 71 002 1702 1643 tra 2 01701 1644 lin027 null no 01701 673 177 0 1645 ila mask7 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 74 linput -- processes input frame 1646 we have correct parity mask 01702 0 32 142 2044 1647 ansa inchar-* 01703 0 67 141 2044 1648 cmpq inchar-* input character matches test char? 01704 0 64 077 2003 1649 tnz lin300-* (lin300) no, next slot 1650 01705 1651 lin030 null char matched or count exhausted 01705 1 76 023 0 1652 aos t.dcwa,1 bump dcw list pointer 01706 1 07 024 0 1653 lda t.dcwl,1 and decrement length 01707 773 777 0 1654 iaa -1 01710 1 17 024 0 1655 sta t.dcwl,1 01711 0 20 146 2057 1656 szn rdtflg-* input or rdtly? 01712 0 64 047 1761 1657 tnz lin100-* rdtly, put char in input buffer 01713 0 71 070 2003 1658 tra lin300-* (lin300) else go to next slot 1659 01714 1660 lin060 null 1661 status character. first make sure 1662 cd, dsr, and cts are on in tib 1663 we'll turn them off if necessary 01714 0 07 106 2022 1664 lda l.b005-* =tsfdsr+tsfcts+tsfcd 01715 1 72 000 0 1665 orsa t.stat,1 1666 lsla does not recognize dsr or cts 1667 so use carrier detect for all 3 01716 673 002 0 1668 ila cf 01717 0 31 125 2044 1669 cana inchar-* 01720 0 64 003 1723 1670 tnz lin090-* 1671 carrier detect off, shut off all 3 01721 0 07 104 2025 1672 lda l.b009-* =ntsfcd*ntsdsr*ntscts 01722 1 32 000 0 1673 ansa t.stat,1 1674 01723 1675 lin090 null 01723 0 41 125 2050 1676 ldx3 inlte-* get pointer to lsla table entry 01724 1 07 000 0 1677 lda t.stat,1 pick up t.stat 01725 022 177 0 1678 iana s.tib ignore bits not common to standard 1679 status and tib status end of binary card 00000029 01726 0 17 124 2052 1680 sta instat-* 01727 673 001 0 1681 ila brk line break received? 01730 0 31 114 2044 1682 cana inchar-* 01731 0 74 011 1742 1683 tze lin092-* 01732 0 07 100 2032 1684 lda l.b014-* =ltfbbk 01733 3 72 000 0 1685 orsa lt.flg,3 set lsla table flag 01734 0 07 072 2026 1686 lda l.b010-* =s.brk 01735 0 72 115 2052 1687 orsa instat-* mark break received in status 01736 0 07 100 2036 1688 lda l.b031-* =tffip 01737 322 777 0 1689 iera -1 always turned off on quit 01740 1 32 002 0 1690 ansa t.flg2,1 01741 0 71 003 1744 1691 tra lin093-* 1692 01742 1693 lin092 null not line break, make sure lsla table flag is off 01742 0 07 072 2034 1694 lda l.b018-* =^ltfbbk 01743 3 32 000 0 1695 ansa lt.flg,3 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 75 linput -- processes input frame 1696 01744 1697 lin093 null check for ring 01744 673 004 0 1698 ila ce 01745 0 31 077 2044 1699 cana inchar-* 01746 0 74 003 1751 1700 tze lin094-* 01747 0 07 060 2027 1701 lda l.b011-* =s.ring 01750 0 72 102 2052 1702 orsa instat-* yes, set ring status bit 1703 01751 1704 lin094 null send status to interpreter 01751 0 07 101 2052 1705 lda instat-* 01752 4 10 065 2037 1706 tsy a.b001-*,* =addr(istat) 1707 01753 0 07 056 2031 1708 lda l.b013-* =ntsfst 01754 1 32 000 0 1709 ansa t.stat,1 turn off "status requested" in tib 01755 1710 lin098 null 01755 0 07 044 2021 1711 lda l.b004-* =ltfste 01756 0 41 072 2050 1712 ldx3 inlte-* 01757 3 62 000 0 1713 ersa lt.flg,3 and "status expected" in lsla table 01760 0 71 023 2003 1714 tra lin300-* go to next slot 1715 01761 1716 lin100 null data (not status) char in slot 1717 if not in receive mode, skip it 01761 0 07 037 2020 1718 lda l.b003-* =tsfrcv 01762 1 31 000 0 1719 cana t.stat,1 on? 01763 0 74 020 2003 1720 tze lin300-* if not, go to next slot 1721 01764 0 41 064 2050 1722 ldx3 inlte-* lsla table entry 01765 0 07 046 2033 1723 lda l.b015-* =ltfibm 01766 3 34 000 0 1724 ana lt.flg,3 6-bit chars? 1725 01767 0 41 051 2040 1726 ldx3 a.b002-* addr(inchar),b.1 01770 473 001 0 1727 ilq 1 one character for inproc 01771 4 10 050 2041 1728 tsy a.b003-*,* inproc 1729 01772 222 002 0 1730 icana retsus did inproc find output_suspend char? 01773 0 74 004 1777 1731 tze lin110-* no 01774 0 07 027 2023 1732 lda l.b006-* =tfosus end of binary card 00000030 01775 1 72 001 0 1733 orsa t.flg,1 yes, set flag 01776 0 71 005 2003 1734 tra lin300-* done with slot 01777 222 004 0 1735 lin110 icana retres how about output_resume? 02000 0 74 003 2003 1736 tze lin300-* no 02001 0 07 023 2024 1737 lda l.b007-* =^tfosus 02002 1 32 001 0 1738 ansa t.flg,1 else turn flag off 1739 02003 1740 lin300 null finished with slot, on to next 02003 0 07 043 2046 1741 lda isltno-* 02004 0 27 041 2045 1742 cmpa imxslt-* was this last slot? 02005 0 65 005 2012 1743 tpl lin310-* if so, wrap up and return 1744 02006 0 76 040 2046 1745 aos isltno-* else increment counter assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 76 linput -- processes input frame 02007 273 300 0 1746 iacx2 0,b.1 bump pointer 1747 02010 4 71 001 2011 1748 tra 1,* and go around again 02011 0 01605 1 1749 ind lin020 head of loop is too far away for direct 1750 transfer 1751 02012 1752 lin310 null done with frame, must free buffer containing it 02012 473 000 0 1753 ilq 0 02013 0 41 042 2055 1754 ldx3 iframe-* 02014 4 10 027 2043 1755 tsy a.b008-*,* frebuf 1756 now return to secondary dispatcher 02015 4 71 025 2042 1757 tra a.b006-*,* secdsp assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 77 linput -- processes input frame 1758 eject 02016 2 00000 0 1759 l.b001 zero 0,b.0 character addressing 02017 000001 0 1760 l.b002 vfd 18/sffslo 02020 000200 0 1761 l.b003 vfd 18/tsfrcv 02021 000020 0 1762 l.b004 vfd 18/ltfste 02022 000007 0 1763 l.b005 vfd 18/tsfdsr+tsfcts+tsfcd 02023 400000 0 1764 l.b006 vfd 18/tfosus 02024 377777 0 1765 l.b007 vfd o18//tfosus 1766 *l.b008 unused 02025 777770 0 1767 l.b009 vfd 18/n3bits ^tsfcd&^tsfdsr&^tsfcts 02026 000400 0 1768 l.b010 vfd 18/s.brk 02027 002000 0 1769 l.b011 vfd 18/s.ring 02030 3 00000 0 1770 l.b012 zero 0,b.1 02031 777757 0 1771 l.b013 vfd 18/ntsfst ^tsfst 02032 020000 0 1772 l.b014 vfd 18/ltfbbk 02033 000100 0 1773 l.b015 vfd 18/ltfibm 1774 *l.b016 unused 1775 *l.b017 unused 02034 757777 0 1776 l.b018 vfd 18/nltfbk ^ltfbbk 1777 *l.b020 unused 1778 *l.b021 unused 1779 *l.b022 unused 1780 *l.b023 unused 1781 *l.b024 unused 1782 *l.b026 unused 02035 777776 0 1783 l.b027 vfd 18/ntfwrt 1784 *l.b028 unused 1785 *l.b029 unused 1786 *l.b030 unused 02036 100000 0 1787 l.b031 vfd 18/tffip 1788 02037 0 07000 3 1789 a.b001 ind istat interpreter status entry 02040 3 02044 1 1790 a.b002 ind inchar,b.1 char address of input char 02041 0 17000 3 1791 a.b003 ind inproc 1792 *a.b004 unused 1793 *a.b005 unused 02042 0 22000 3 1794 a.b006 ind secdsp secondary dispatcher 1795 *a.b007 unused 02043 0 13000 3 1796 a.b008 ind frebuf 1797 02044 1798 inchar bss 1 input char 02045 1799 imxslt bss 1 total number of slots 02046 1800 isltno bss 1 current slot no. 02047 1801 inltb bss 1 lsla table address 02050 1802 inlte bss 1 address of lsla table entry 02051 1803 insfcm bss 1 software comm region address 02052 1804 instat bss 1 status word for interpreter 02053 1805 inext bss 1 "break on next" flag 02054 1806 ifull bss 1 buffer is full flag 02055 1807 iframe bss 1 frame address 02056 1808 oldpos bss 1 old value of t.pos assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 78 linput -- processes input frame 02057 1809 rdtflg bss 1 1 if rdtly subop 1810 02060 1811 even end of binary card 00000031 02060 000000 0 1812 mchars oct 0,0 02061 000000 0 02062 000000 0 1813 mdbl1 oct 0,1 02063 000001 0 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 79 ldcw -- called when dcw list started for a line 1814 ttls ldcw -- called when dcw list started for a line 1815 1816 all this subroutine does is set a flag so loutpt 1817 will know to process the new dcw list 1818 1819 x1 contains tib address 1820 02064 1821 ldcw subr ldc,(x3) 1822 02072 1 41 030 0 1823 ldx3 t.ftse,1 get pointer to lsla table entry 02073 0 07 004 2077 1824 lda l.d001-* =ltfdcw 02074 3 72 000 0 1825 orsa lt.flg,3 turn it on 02075 1826 return ldcw 1827 1828 02077 010000 0 1829 l.d001 vfd 18/ltfdcw assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 80 loudcw -- processe dcw list for loutpt 1830 ttls loudcw -- processe dcw list for loutpt 1831 1832 this subroutine decides on behalf of loutpt 1833 what type of dcw list item is up next. 1834 it returns as follows: 1835 1836 normal -- loutpt should not try to use slot 1837 +1 -- comand did not put char in slot 1838 +2 -- output subop, start filling slots 1839 1840 x1 -- tib address 1841 x2 -- address of current output slot 1842 02100 1843 loudcw subr lod 1844 02103 1 41 023 0 1845 ldx3 t.dcwa,1 get pointer to current item 02104 3 07 000 0 1846 lda 0,3 get type word 02105 2335 17 0 1847 lrl 15 isolate type 02106 422 001 0 1848 icmpa cmdtyp command? 02107 0 64 007 2116 1849 tnz lod010-* 02110 4 41 023 2133 1850 ldx3 a.e001-*,* (lste) get lsla table entry back 02111 4 10 023 2134 1851 tsy a.e002-*,* (comand) yes, call comand subroutine 02112 2 07 200 0 1852 lda 0,2,b.0 did we put a char in the slot? 02113 422 037 0 1853 icmpa fill 02114 0 74 014 2130 1854 tze lod020-* no, bump return pointer 02115 0 71 014 2131 1855 tra lodbak-* and go to next slot 1856 * 02116 1857 lod010 null 02116 422 003 0 1858 icmpa outtyp output? 02117 0 64 012 2131 1859 tnz lodbak-* otherwise must be input, will be handled 1860 by linput next time around 02120 4 10 015 2135 1861 tsy a.e003-*,* call outprc to handle output 1862 02121 0 07 015 2136 1863 lda l.e001-* (=tsfxmt) is xmit mode on now? 02122 1 31 000 0 1864 cana t.stat,1 02123 0 64 002 2125 1865 tnz 2 it had better be 02124 1866 die 1 1867 02125 1 20 013 0 1868 szn t.ocur,1 find out if output actually did anything end of binary card 00000032 02126 0 74 002 2130 1869 tze lod020-* it didn't, so we can use the slot again 1870 02127 0 76 751 2100 1871 aos loudcw-* output return 02130 1872 lod020 null 02130 0 76 750 2100 1873 aos loudcw-* 02131 1874 lodbak return loudcw 1875 1876 02133 0 01136 1 1877 a.e001 ind lste place where lsla table entry pointer was saved 02134 0 01152 1 1878 a.e002 ind comand 02135 0 21000 3 1879 a.e003 ind outprc assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 81 loudcw -- processe dcw list for loutpt 1880 02136 000400 0 1881 l.e001 vfd 18/tsfxmt assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 82 echo buffer subroutines 1882 ttls echo buffer subroutines 1883 echo buffer format 1884 000000 1885 eb.inp equ 0 ptr to next place for input character 000001 1886 eb.out equ 1 ptr to next output character 000002 1887 eb.tly equ 2 current character count (upper half) 000002 1888 eb.dta equ 2 first data char (lower half) 000040 1889 eb.end equ eb.inp+bufsiz end of echo buffer 000073 1890 ebsize equ bufsiz*2-5 maximum number of echo chars 1891 000011 1892 ht bool 011 ascii horizontal tab 000014 1893 ff bool 014 ascii form-feed 1894 1895 1896 geteco subroutine gets a character from 1897 echo buffer for output 1898 char returned in q reg 1899 1900 returns to callpoint+1 if no char, else returns 1901 to callpoint+2 1902 02137 1903 geteco subr get,(x2,x3) 1904 * 02150 1 07 002 0 1905 lda t.flg2,1 are we in process of replaying? 02151 0 31 144 2315 1906 cana l.p008-* =tfrpon 02152 0 64 133 2305 1907 tnz getbak-* yes, don't echo 02153 1 03 025 0 1908 ldx2 t.echo,1 is there an echo buffer? 02154 0 74 004 2160 1909 tze get010-* if not, no char 02155 2 07 002 0 1910 lda eb.tly,2 check tally 02156 2337 11 0 1911 arl 9 02157 0 64 006 2165 1912 tnz get020-* if tally zero, no char. 02160 1913 get010 null tally is zero, turn off tfecho 02160 1 20 013 0 1914 szn t.ocur,1 if working on output chain 02161 0 74 124 2305 1915 tze getbak-* 1916 02162 0 07 132 2314 1917 lda l.p006-* ^tfecho 02163 1 32 036 0 1918 ansa t.flg3,1 02164 0 71 121 2305 1919 tra getbak-* all done 1920 02165 1921 get020 null 02165 2 41 001 0 1922 ldx3 eb.out,2 get output char pointer 02166 3 07 200 0 1923 lda 0,3,b.0 pick up the character 02167 0 31 130 2317 1924 cana l.p011-* =400(8) -- are we doing spaces for tab echo? 02170 0 74 004 2174 1925 tze get025-* no 02171 0336 11 0 1926 als 9 yes, extend sign bit 02172 0337 11 0 1927 ars 9 02173 0 71 052 2245 1928 tra get070-* join tab code 1929 02174 1930 get025 null 02174 222 200 0 1931 icana 128 sending delays? end of binary card 00000033 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 83 echo buffer subroutines 02175 0 74 007 2204 1932 tze get030-* no, check for carriage movement 02176 473 000 0 1933 ilq 0 yes, get delay char 02177 773 777 0 1934 iaa -1 decrement count 02200 422 200 0 1935 icmpa 128 last one? 02201 0 74 067 2270 1936 tze get110-* yes, update ptr and tally 02202 3 17 200 0 1937 sta 0,3,b.0 else restore update count 02203 0 71 101 2304 1938 tra get130-* done 1939 02204 1940 get030 null check for carriage movement requiring delays 02204 6333 00 0 1941 caq get character into q 02205 1 07 033 0 1942 lda t.pos,1 save present value of t.pos 02206 0 17 114 2322 1943 sta ecpos-* 02207 1 03 037 0 1944 ldx2 t.dtp,1 get pointer to delay table 02210 0 64 002 2212 1945 tnz 2 1946 if no delays, use dummy table 02211 0 03 077 2310 1947 ldx2 a.p003-* =addr (dumdly) 1948 02212 4 10 075 2307 1949 tsy a.p002-*,* move 1950 return indicates character found 02213 0 71 010 2223 1951 tra get040-* lf 02214 0 71 011 2225 1952 tra get050-* cr 02215 0 71 021 2236 1953 tra get060-* tab 02216 0 71 044 2262 1954 tra get090-* bs 1955 no hit 02217 0 67 101 2320 1956 cmpq l.p012-* =ff 02220 0 64 050 2270 1957 tnz get110-* not a form-feed, just update pointer & tally 02221 2 07 010 0 1958 lda dl.ff,2 02222 0 71 041 2263 1959 tra get100-* 1960 02223 2 07 003 0 1961 get040 lda dl.lf,2 get linefeed delay count 02224 0 71 037 2263 1962 tra get100-* 1963 02225 2 07 004 0 1964 get050 lda dl.cr,2 get per-column carriage return factor 02226 0 74 042 2270 1965 tze get110-* no delays, forget it 02227 1966 mpy ecpos-* multiply by old column position 02231 0335 11 0 1967 lrs 9 divide by 512 02232 573 003 0 1968 iaq 3 add constant factor 02233 7333 00 0 1969 cqa get count into a 02234 3 47 200 0 1970 ldq 0,3,b.0 restore echo char into q 02235 0 71 026 2263 1971 tra get100-* 1972 02236 0 17 065 2323 1973 get060 sta spcnt-* save space count for tab 02237 0 07 057 2316 1974 lda l.p009-* =tftbec 02240 1 31 001 0 1975 cana t.flg,1 tab echo? 02241 0 74 011 2252 1976 tze get080-* no, figure delays 02242 673 000 0 1977 ila 0 yes, get negative space count 02243 0 26 060 2323 1978 sba spcnt-* end of binary card 00000034 02244 0 74 024 2270 1979 tze get110-* no space count, forget it 02245 1980 get070 null 02245 473 040 0 1981 ilq blank we will return blank for output assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 84 echo buffer subroutines 02246 773 001 0 1982 iaa 1 decrement count (which is negative) 02247 0 74 021 2270 1983 tze get110-* if it went to zero, update tally, ptr 02250 3 17 200 0 1984 sta 0,3,b.0 else update unfinished count 02251 0 71 033 2304 1985 tra get130-* done 1986 02252 0 07 051 2323 1987 get080 lda spcnt-* get space count for calculating tab delays 02253 1988 mpy (dl.tbb,2) 02255 0335 11 0 1989 lrs 9 divide by 512 02256 2 46 005 0 1990 adq dl.tba,2 add constant factor 02257 7333 00 0 1991 cqa get count in a 02260 3 47 200 0 1992 ldq 0,3,b.0 get character again 02261 0 71 002 2263 1993 tra get100-* 1994 02262 2 07 007 0 1995 get090 lda dl.bs,2 backspace delay count 1996 02263 1997 get100 null have delay count 02263 773 000 0 1998 iaa 0 see if it's zero 02264 0 74 004 2270 1999 tze get110-* it is, never mind 02265 122 200 0 2000 iora 128 mark it as delay count 02266 3 17 200 0 2001 sta 0,3,b.0 replace character with it 02267 0 71 015 2304 2002 tra get130-* done 2003 02270 2004 get110 null 02270 1 03 025 0 2005 ldx2 t.echo,1 restore pointer to echo buffer 02271 373 300 0 2006 iacx3 0,b.1 bump char pointer 02272 3333 00 0 2007 cx3a look at word address 02273 0 31 026 2321 2008 cana l.p014-* =o077777 02274 0 74 003 2277 2009 tze get115-* off end of memory 02275 0 31 015 2312 2010 cana l.p002-* (=o000037) check mod 32 02276 0 64 003 2301 2011 tnz get120-* 2012 0 mod 32 means wraparound 02277 3332 00 0 2013 get115 cx2a so get address of 02300 0 06 011 2311 2014 ada l.p001-* beginning of data 02301 2015 get120 null store output pointer updated 02301 2 17 001 0 2016 sta eb.out,2 02302 0 07 011 2313 2017 lda l.p003-* (=o777000) decrement tally 02303 2 16 002 0 2018 asa eb.tly,2 02304 2019 get130 null 2020 bump return pointer for success 02304 0 76 633 2137 2021 aos geteco-* 02305 2022 getbak return geteco 2023 *a.p001 unused 02307 0 04000 3 2024 a.p002 ind move 02310 0 02324 1 2025 a.p003 ind dumdly 2026 02311 3 00002 0 2027 l.p001 zero eb.dta,b.1 offset of first char. position 02312 000037 0 2028 l.p002 oct 37 mask for mod 32 end of binary card 00000035 02313 777000 0 2029 l.p003 oct 777000 for subtracting 1 from high-order 9 bits 2030 *l.p004 unused 2031 *l.p005 unused assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 85 echo buffer subroutines 02314 777767 0 2032 l.p006 vfd 18/ntfeco 2033 *l.p007 unused 02315 001000 0 2034 l.p008 vfd 18/tfrpon 02316 004000 0 2035 l.p009 vfd 18/tftbec 2036 *l.p010 unused 02317 000400 0 2037 l.p011 oct 400 02320 000014 0 2038 l.p012 vfd 18/ff 2039 *l.p013 unused 02321 077777 0 2040 l.p014 oct 077777 2041 02322 2042 ecpos bss 1 former value of t.pos 02323 2043 spcnt bss 1 number of blanks to echo for tab 2044 2045 dummy delay table of all zero 02324 000000 0 2046 dumdly dec 0,0,0,0,0,0,0,0,0 02325 000000 0 02326 000000 0 02327 000000 0 02330 000000 0 02331 000000 0 02332 000000 0 02333 000000 0 02334 000000 0 assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 86 echo buffer subroutines 2047 eject assm 01 09-23-82 12.157 multics/355 low-speed line adaptor -- lsla_man page 87 jump tables 2048 ttls jump tables 2049 02335 2050 lslajt jmptbl (1,2,3,4,5,6) 2051 02357 0 03000 3 2052 iinvp ind invp interrupt vector processor 2053 2054 2055 set up 6 software comm. regions 02360 2056 sfcmi (1,2,3,4,5,6) end of binary card 00000048 2057 003524 2058 endlsl equ * end of lsla code end of binary card 00000049 2059 end 3524 is the next available location. 355map version/assembly dates gmpa 770711/071177 gmpb 770711/071177 gmpc 770711/071177 there were no warning flags in the above assembly assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 88 octal symbol references by sequence no. 334 4fill 643 480 507 643 333 addmsk 641 419 423 641 1141 a.a001 1160 895 1160 1142 a.a002 1162 885 1121 1162 1143 a.a003 1163 981 1163 1144 a.a004 1164 1100 1164 1145 a.a005 1165 1007 1165 1147 a.a007 1167 1094 1167 1150 a.a008 1168 1032 1168 1151 a.a009 1169 963 1013 1169 2037 a.b001 1789 1706 1789 2040 a.b002 1790 1726 1790 2041 a.b003 1791 1728 1791 2042 a.b006 1794 1757 1794 2043 a.b008 1796 1755 1796 1472 a.c001 1463 1364 1463 1473 a.c002 1464 1211 1464 1474 a.c003 1465 1263 1333 1465 2133 a.e001 1877 1850 1877 2134 a.e002 1878 1851 1878 2135 a.e003 1879 1861 1879 367 a.i001 682 682 794 370 a.i002 683 683 796 833 371 a.i003 684 513 609 684 372 a.i004 685 463 685 373 a.i005 686 686 832 374 a.i006 687 687 806 2307 a.p002 2024 1949 2024 2310 a.p003 2025 1947 2025 361 altbit 673 450 523 673 14 altshf 299 299 448 521 5 b10 263 263 1440 10 b15 264 264 1446 21 b30 265 265 1450 7 bel 308 308 954 2000 bffctl 147 147 1144 1000 bffhld 147 147 1147 2 bf.dta 147 147 1112 1 bf.flg 147 147 1080 0 bf.nxt 147 147 1078 1 bf.tly 147 147 1071 1073 2 b.0 566 939 1027 1064 1131 1261 1328 1556 1569 1759 1852 1923 1937 1970 1984 1992 2001 3 b.1 568 671 688 859 1029 1125 1139 1746 1770 1790 2006 2027 40 blank 312 312 1981 1 brk 284 284 1310 1681 340 broad 648 648 774 40 bufsiz 147 147 207 302 1889 1890 2 bufthr 147 147 1089 777 buftmk 147 147 1135 2 ca 283 283 1294 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 89 octal symbol references by sequence no. 1467 cbits 1459 1204 1215 1459 1456 cbr010 1443 1439 1443 1462 cbr020 1449 1445 1449 1463 cbr030 1451 1441 1447 1451 1445 cbrk 1435 1435 1453 1503 1466 cchar 1458 1275 1280 1295 1311 1317 1458 4 cd 282 282 1279 4 ce 294 294 1698 2 cf 295 295 1668 1431 che010 1411 1405 1411 1433 che020 1415 1409 1415 1434 chebak 1417 1408 1413 1417 1421 check 1403 1386 1393 1403 1417 1373 chkdtr 1383 1383 1387 1493 1495 1406 chkrqs 1390 1390 1394 1509 1511 2 cicw 298 298 447 467 499 520 592 738 40 c.rdtr 145 145 1495 2 c.rrec 145 145 1487 20000 c.rrqs 145 145 1511 200 c.rsup 145 145 1499 10 c.rxmt 145 145 1491 1000 c.sbrk 145 145 1503 20 c.sdtr 145 145 1493 2000 c.smrk 145 145 1505 1 c.srec 145 145 1485 10000 c.srqs 145 145 1509 100 c.ssup 145 145 1497 400 c.stat 145 145 1501 4000 c.strm 145 145 1507 4 c.sxmt 145 145 1489 255 cmd2 1192 1192 1255 1 cmdtyp 333 333 1848 1173 com020 1213 1213 1236 1202 com030 1222 1218 1222 1204 com040 1227 1220 1227 1210 com050 1233 1216 1229 1233 1221 com055 1246 1205 1246 1230 com080 1258 1243 1258 1266 com105 1285 1278 1285 1271 com110 1290 1284 1290 1301 com115 1300 1293 1300 1304 com120 1306 1299 1306 1313 com125 1316 1309 1316 1321 com130 1325 1201 1325 1345 com180 1335 1249 1335 1357 com200 1350 1345 1350 1152 comand 1196 1165 1196 1368 1878 1371 combak 1368 1268 1323 1340 1354 1368 1157 comsx2 1196 1196 1260 1327 330 cquer 637 504 578 637 1436 cstat 1423 1423 1427 1501 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 90 octal symbol references by sequence no. 1511 ctabs 1484 1464 1484 1513 1563 ctbsiz 1513 1210 1513 1471 ctemp 1461 1209 1219 1225 1244 1272 1461 3 ctent 1193 1193 1234 1235 1 ctrl 163 402 dbl1 692 555 574 692 2 denq 162 1167 5 derrq 166 683 7 dl.bs 151 151 1995 4 dl.cr 151 151 1964 10 dl.ff 151 151 1958 3 dl.lf 151 151 1961 5 dl.tba 151 151 1990 6 dl.tbb 151 151 1988 12 dspqur 160 637 2324 dumdly 2046 2025 2046 2 eb.dta 1888 1888 2027 0 eb.inp 1885 1885 1889 1 eb.out 1886 1886 1922 2016 2 eb.tly 1887 1887 1910 2018 1140 ecoflg 1158 947 986 1068 1158 2322 ecpos 2042 1943 1966 2042 344 errflg 653 439 653 735 776 781 787 115 errmsg 357 357 795 831 346 errst 655 655 793 33 esc 305 305 306 233 escop 306 306 1259 1568 377 evdel 314 314 938 365 exh 678 678 716 725 761 764 14 ff 1893 1893 2038 37 fill 304 304 565 643 1557 1853 2056 13 frebuf 162 1164 1796 14 fulbuf 159 6 g3wjt 160 635 2160 get010 1913 1909 1913 2165 get020 1921 1912 1921 2174 get025 1930 1925 1930 2204 get030 1940 1932 1940 2223 get040 1961 1951 1961 2225 get050 1964 1952 1964 2236 get060 1973 1953 1973 2245 get070 1980 1928 1980 2252 get080 1987 1976 1987 2262 get090 1995 1954 1995 2263 get100 1997 1959 1962 1971 1993 1997 2270 get110 2004 1936 1957 1965 1979 1983 1999 2004 2277 get115 2013 2009 2013 2301 get120 2015 2011 2015 2304 get130 2019 1938 1985 2002 2019 2305 getbak 2022 1907 1915 1919 2022 15 getbuf 160 638 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 91 octal symbol references by sequence no. 2137 geteco 1903 1163 1903 2021 2022 16 getubf 160 10 hcmt1 213 213 535 12 hcmt2 214 214 817 13 hcmt3 215 215 549 551 16 hcmt4 216 216 547 552 821 837 14 h.aicw 137 137 418 430 0 h.ric0 137 137 760 2 h.ric1 137 137 763 11 h.sfcm 137 137 398 502 797 834 4 h.sic0 137 137 715 720 721 6 h.sic1 137 137 724 730 731 360 icwbts 671 496 588 671 719 729 743 2055 iframe 1807 1526 1754 1807 326 ig3wjt 635 384 635 331 igtrbf 638 581 638 325 ihwcm 634 396 634 2357 iinvp 2052 2050 2052 327 imdisp 636 426 636 332 imeter 639 512 606 639 712 758 783 2045 imxslt 1799 1541 1742 1799 2044 inchar 1798 1559 1647 1648 1669 1682 1699 1790 1798 2047 inltb 1801 1544 1548 1551 1801 2050 inlte 1802 1566 1638 1676 1712 1722 1802 17 inproc 158 1791 2051 insfcm 1803 1528 1803 2052 instat 1804 1680 1687 1702 1705 1804 2 intyp 334 334 1591 3 invp 161 2052 321 iptro 629 527 629 2046 isltno 1800 1534 1741 1745 1800 7 istat 162 1463 1789 4 l15cps 259 259 1444 11 l1ch 135 135 2050 500 l1mb 135 135 634 2056 12 l2ch 135 135 2050 520 l2mb 135 135 2056 13 l3ch 135 135 2050 540 l3mb 135 135 2056 14 l4ch 135 135 2050 560 l4mb 135 135 2056 15 l5ch 135 135 2050 600 l5mb 135 135 2056 16 l6ch 135 135 2050 620 l6mb 135 135 2056 40 lbfsiz 302 302 580 2056 603 lbreak 864 155 864 2064 ldcw 1821 155 1821 1826 364 leads 676 676 700 701 1602 lin010 1540 1538 1540 1605 lin020 1547 1547 1749 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 92 octal symbol references by sequence no. 1631 lin023 1576 1570 1576 1652 lin024 1597 1592 1597 1670 lin025 1633 1622 1633 1701 lin027 1644 1641 1644 1705 lin030 1651 1629 1635 1651 1714 lin060 1660 1579 1660 1723 lin090 1675 1670 1675 1742 lin092 1693 1683 1693 1744 lin093 1697 1691 1697 1751 lin094 1704 1700 1704 1761 lin100 1716 1586 1594 1631 1657 1716 1777 lin110 1735 1731 1735 2003 lin300 1740 1554 1558 1574 1583 1601 1649 1658 1714 1720 1734 1736 1740 2012 lin310 1752 1743 1752 1564 linput 1524 669 1524 24 lip002 402 402 505 594 602 680 41 lip004 416 400 413 416 47 lip006 422 422 432 55 lip008 429 421 429 61 lip010 437 417 427 437 67 lip012 444 444 625 70 lip013 445 445 753 110 lip014 465 462 465 120 lip015 475 469 475 122 lip020 477 473 477 136 lip023 489 489 508 157 lip026 507 479 507 161 lip030 510 458 510 164 lip050 518 444 518 210 lip053 540 538 540 213 lip055 545 534 545 223 lip057 554 548 554 237 lip058 566 566 570 252 lip059 577 567 577 257 lip060 583 544 576 583 687 272 lip070 596 528 596 277 lip072 604 599 604 305 lip090 614 442 614 316 lip094 624 620 624 404 lip200 696 616 696 433 lip205 723 717 723 444 lip210 733 710 733 460 lip220 747 706 708 747 476 lip230 767 684 726 732 746 767 510 lip240 780 702 755 780 513 lip250 784 762 765 784 517 lip270 790 750 778 790 525 lip280 798 788 798 12 lip 383 154 383 1110 l.a001 1131 1113 1131 1111 l.a002 1132 914 1132 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 93 octal symbol references by sequence no. 1113 l.a005 1135 1074 1135 1114 l.a006 1136 969 989 1136 1115 l.a007 1137 950 1137 1116 l.a008 1138 928 940 1138 1117 l.a009 1139 897 1139 1120 l.a010 1140 1002 1140 1121 l.a011 1141 942 1141 1122 l.a012 1142 924 1142 1123 l.a013 1143 959 1143 1124 l.a014 1144 1083 1144 1125 l.a015 1145 974 1017 1107 1145 1126 l.a016 1146 1104 1146 1127 l.a017 1147 1081 1147 1130 l.a018 1148 979 995 1148 2017 l.b002 1760 1536 1760 2020 l.b003 1761 1599 1718 1761 2021 l.b004 1762 1572 1577 1711 1762 2022 l.b005 1763 1664 1763 2023 l.b006 1764 1732 1764 2024 l.b007 1765 1737 1765 2025 l.b009 1767 1672 1767 2026 l.b010 1768 1686 1768 2027 l.b011 1769 1701 1769 2030 l.b012 1770 1531 1770 2031 l.b013 1771 1708 1771 2032 l.b014 1772 1581 1684 1772 2033 l.b015 1773 1640 1723 1773 2034 l.b018 1776 1694 1776 2036 l.b031 1787 1688 1787 1475 l.c001 1468 1223 1468 1476 l.c002 1469 1248 1253 1425 1469 1477 l.c003 1470 1265 1329 1470 1500 l.c004 1471 1276 1471 1501 l.c005 1472 1291 1472 1502 l.c006 1473 1307 1473 1503 l.c007 1474 1353 1360 1474 1504 l.c008 1475 1282 1286 1385 1475 1505 l.c009 1476 1297 1302 1392 1476 1506 l.c010 1477 1313 1477 1507 l.c011 1478 1343 1478 1510 l.c013 1479 1238 1479 2077 l.d001 1829 1824 1829 2136 l.e001 1881 1863 1881 601 l.i001 857 822 857 375 l.i002 688 558 688 2311 l.p001 2027 2014 2027 2312 l.p002 2028 2010 2028 2313 l.p003 2029 2017 2029 2314 l.p006 2032 1917 2032 2315 l.p008 2034 1906 2034 2316 l.p009 2035 1974 2035 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 94 octal symbol references by sequence no. 2317 l.p011 2037 1924 2037 2320 l.p012 2038 1956 2038 2321 l.p014 2040 2008 2040 160 lmnbmk 354 354 395 2116 lod010 1857 1849 1857 2130 lod020 1872 1854 1869 1872 2131 lodbak 1874 1855 1859 1874 64 long 345 345 560 886 1535 622 lou010 891 889 891 633 lou020 902 902 1127 650 lou030 919 913 919 665 lou040 937 933 937 674 lou050 946 931 946 703 lou053 957 952 957 965 1015 713 lou054 968 961 968 716 lou055 973 966 973 721 lou057 977 971 977 726 lou058 985 955 985 730 lou059 989 983 989 733 lou060 993 976 993 740 lou070 1000 991 1000 743 lou073 1005 926 1005 746 lou075 1010 1004 1010 756 lou100 1025 998 1025 767 lou200 1038 987 1033 1034 1035 1036 1038 1001 lou210 1055 1046 1055 1003 lou215 1058 1051 1053 1058 1006 lou220 1063 1060 1063 1056 lou245 1096 1084 1090 1092 1096 1067 lou248 1102 1082 1102 1076 lou250 1111 1103 1111 1102 lou300 1117 909 917 936 944 964 980 996 1008 1012 1014 1069 1075 1109 1117 2100 loudcw 1843 1169 1843 1871 1873 1874 603 loutav 865 155 865 605 loutpt 869 666 869 561 lrs010 836 820 823 836 534 lrsync 815 685 815 854 3 lsainp 324 324 668 2 lsaotp 323 323 665 46 lsfcml 205 205 207 2056 20000 ls.alt 176 176 673 100000 ls.cd 187 187 196 676 200000 ls.cts 186 186 196 676 400000 ls.dsr 185 185 196 676 40 ls.dtr 191 191 196 645 648 676 2000 ls.ptr 179 179 629 400 ls.rcv 188 188 196 645 648 675 20 ls.rts 192 192 196 645 648 676 200 ls.snd 189 189 196 645 648 674 4000 ls.tro 178 178 632 40 ls.xte 181 181 631 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 95 octal symbol references by sequence no. 0 lsla 378 153 378 379 2335 lslajt 2050 156 2050 351 lslano 658 658 830 146 lslasz 207 207 209 1136 lste 1156 921 1043 1156 1877 10 lstsbf 203 203 205 2056 12 lstsvb 204 204 411 414 2056 6 lt15b 257 257 912 1137 ltbp 1157 900 903 906 1157 20000 ltfbbk 248 248 270 1772 2000 ltfbrk 245 245 1138 1477 10000 ltfdcw 247 247 1143 1478 1829 200 ltfdtr 242 242 268 1475 40 ltfesc 240 240 1142 1199 1470 100 ltfibm 241 241 1044 1773 400 ltfrqs 243 243 269 1476 10 ltfskp 238 238 1132 4000 ltfst 246 246 1140 1469 20 ltfste 239 239 1762 0 lt.flg 234 234 910 915 916 925 930 941 960 962 1003 1045 1200 1247 1254 1266 1283 1288 1298 1304 1314 1331 1344 1404 1426 1437 1573 1578 1582 1639 1685 1695 1713 1724 1825 7 lt.sid 236 236 911 1438 1 lt.tib 235 235 908 1553 2 macwk1 1903 815 854 1196 1368 1383 1387 1390 1394 1403 1417 1423 1427 1435 1453 1821 1826 1843 1874 1903 2022 5 macwk2 1903 815 1196 1383 1390 1403 1423 1435 1821 1843 1903 3 macwk3 1333 1066 1097 1263 1333 7 macwk4 1333 1066 1097 1263 1333 77 mask6 348 348 1049 1642 177 mask7 347 347 1057 1645 6 maxlsa 208 208 209 1133 maxslt 1153 892 1120 1153 2060 mchars 1812 1561 1563 1812 2062 mdbl1 1813 1562 1813 10 mdisp 160 636 376 mempty 690 573 575 690 20 meterc 165 639 400 mframe 691 554 556 691 1 modlsa 355 355 2050 5 modnum 379 379 452 456 525 582 611 1066 1097 1263 1333 1866 4 move 158 1168 2024 6 mt.cmd 368 368 1066 1333 7 mt.esc 369 369 1263 3 mt.obf 365 365 1097 777770 n3bits 225 225 1767 757777 nltfbk 270 270 1776 700661 norms 196 196 660 352 nrmbts 660 441 619 623 660 777767 ntfeco 227 227 2032 777776 ntfwrt 218 218 1146 1783 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 96 octal symbol references by sequence no. 777733 ntrstx 220 220 545 852 777775 ntscts 223 223 225 777773 ntsdsr 222 222 225 776777 ntsfbk 226 226 1141 777776 ntsfcd 221 221 225 777757 ntsfst 224 224 1771 366 nxtst 680 680 777 801 804 1135 outchr 1155 1065 1066 1155 21 outprc 159 1166 1879 3 outtyp 335 335 1858 100 par6 350 350 1052 200 par7 349 349 1061 200 pbit 275 275 1321 356 qframe 668 577 668 354 qotgen 665 503 665 602 rbits 859 848 859 350 rcode 657 657 686 363 rcvst 675 675 749 2057 rdtflg 1809 1588 1595 1621 1656 1809 4 rdttyp 336 336 1593 14 resync 316 316 645 4 retres 359 359 1735 2 retsus 358 358 1730 1750 rlimit 356 356 857 336 rsync 645 645 844 177 rubout 313 313 314 532 22 secdsp 162 1162 1794 322 selcmd 630 630 770 841 362 sendst 674 674 705 0 sfcmwd 328 328 530 1527 4 sffnsx 143 143 219 220 536 20 sffptr 143 143 597 200 sffrlm 143 143 818 825 40 sffrsy 143 143 220 460 539 785 799 10 sffrun 143 143 614 1 sffslo 143 143 477 561 887 1760 2 sffsnd 143 143 879 2056 4 sf.bfc 143 143 529 543 585 805 846 7 sf.bfl 143 143 470 476 728 740 882 5 sf.flg 143 143 461 478 537 541 546 562 598 601 615 621 786 800 819 826 853 880 883 888 1537 0 sf.hcm 143 143 404 10 sf.icw 143 143 519 590 593 850 3 sf.ioc 143 143 584 586 14 sf.ity 143 143 589 847 12 sf.ltb 143 143 899 1543 1 sf.nxa 143 143 406 408 416 420 424 425 431 443 449 522 607 624 697 792 803 2056 2 sf.nxp 143 143 409 412 415 440 2056 11 sf.ocw 143 143 446 468 498 500 737 745 13 sf.otb 143 143 466 472 718 727 736 878 2056 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 97 octal symbol references by sequence no. 15 sf.oty 143 143 497 714 744 32 sf.sbf 143 143 205 2056 16 sf.sic 143 143 422 429 2056 20 sf.ssb 143 143 411 2056 25 short 346 346 564 890 1539 400 s.brk 145 145 1768 2000 s.ring 145 145 1769 177 s.tib 145 145 1357 1678 1134 slotno 1154 894 1066 1119 1124 1154 1465 1470 sndchr 1460 1160 1198 1242 1267 1416 1436 1460 105 sndout 351 351 1093 2323 spcnt 2043 1973 1978 1987 2043 345 stcode 654 654 682 2 stx 307 307 533 2056 3 stxwd 329 329 531 591 688 1139 1530 6 swcmd 317 317 651 26 sync 311 311 2056 320 t3wjt 628 392 628 768 827 839 2 tfbel 141 141 1137 2000 tfcrec 141 141 229 10 tfecho 141 141 227 1145 200000 tfecpx 141 141 229 100000 tffip 141 141 1787 1000 tflfec 141 141 229 400000 tfosus 141 141 1148 1764 1765 1000 tfrpon 141 141 2034 4000 tftbec 141 141 229 2035 200 tfupsf 141 141 228 1 tfwrit 141 141 218 31 t.bcnt 141 141 932 935 1452 1624 1626 1628 34 t.char 141 141 1239 1256 1322 1326 1333 1336 1337 23 t.dcwa 141 141 1346 1587 1652 1845 24 t.dcwl 141 141 1011 1347 1349 1585 1653 1655 37 t.dtp 141 141 1944 25 t.echo 141 141 1908 2005 2 t.flg2 141 141 1690 1905 36 t.flg3 141 141 975 1019 1108 1918 1 t.flg 141 141 951 953 978 994 1105 1733 1738 1975 30 t.ftse 141 141 920 1565 1823 4 t.line 141 141 1066 1263 1333 15 t.occh 141 141 1026 1030 1114 16 t.ocnt 141 141 1086 1088 12 t.ocp 141 141 1091 13 t.ocur 141 141 997 1070 1079 1102 1115 1868 1914 33 t.pos 141 141 1942 0 t.stat 141 141 943 970 990 1208 1245 1273 1277 1292 1308 1352 1362 1600 1665 1673 1677 1709 1719 1864 11 trace 164 1066 1097 1263 1333 23 traceb 164 2 tr.buf 374 374 1097 200 tr.cmd 375 375 1263 1333 assm 01 09-23-82 12.163 multics/355 low-speed line adaptor -- lsla_man page 98 octal symbol references by sequence no. 100 tr.frm 373 373 1066 324 tro 632 457 608 632 709 754 1000 tsfbrk 141 141 226 1473 1503 1 tsfcd 141 141 221 1763 2 tsfcts 141 141 223 1763 4 tsfdsr 141 141 222 1763 2000 tsfdtr 141 141 1471 1493 1495 40 tsfmrk 141 141 1474 1505 200 tsfrcv 141 141 1485 1487 1761 10000 tsfrts 141 141 1472 1509 1511 20 tsfst 141 141 224 1501 4000 tsfsxt 141 141 1497 1499 100 tsftrm 141 141 1474 1507 400 tsfxmt 141 141 1136 1489 1491 1881 353 tstat 662 662 699 704 100 type1 276 276 1274 1 w.2 2056 323 xterr 631 454 631 ** 48128 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