assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 1 hsla_man - multics/fnp (mcs) hsla manager preface this program will be loaded mod 8 program break 10642 common length 0 v count bits 5 primary symdef entry hsla 0 hdcw 12 hintr 3404 hgeti 2035 hmode 2607 houtav 7552 hcfg 2217 hslajt 10177 setcct 1762 shrcct 1500 end of binary card 00000001 hcheck 7341 cbufsz 1003 hunmsk 3112 secondary symdef entry .chain 0 x.002. 64 m.005. 1205 x.010. 2567 x.014. 3212 x.018. 3406 m.020. 3450 end of binary card 00000002 m.023. 3720 m.026. 4133 m.030. 4241 m.033. 4311 x.035. 4355 x.039. 4446 x.041. 5120 m.045. 5725 m.049. 5743 block length symref 1 denq assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 2 hsla_man - multics/fnp (mcs) hsla manager end of binary card 00000003 2 invp 3 cvabs 4 derrq 5 g3wjt 6 istat 7 itest 10 maskr 11 mdisp 12 mincd 13 mincs end of binary card 00000004 14 trace 15 dspqur 16 frebfh 17 frebuf 20 frelbf 21 fremem 22 getbfh 23 getbuf 24 getcmt 25 getmem end of binary card 00000005 26 gettib 27 inproc 30 meterc 31 mupdat 32 outprc 33 secdsp 34 setbpt 35 setptw end of binary card 00000006 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 3 hsla_man - multics/fnp (mcs) hsla manager 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 * history comments: 11 * 1) change(85-07-29,cousins), approve(85-10-28,mcr7274), 12 * audit(85-07-29,coren), install(): 13 * change hardware status queue refresh mechanism 14 * to swap between a pair of queues. this strategy avoids windows in 15 * refresh operation during which status can arrive unnoticed. 16 * 2) change(85-10-28,cousins), approve(85-10-28,mcr7275), 17 * audit(85-10-28,coren), install(): 18 * change suspend/resume strategy to send a pcw with the transmit bit off 19 * instead of manipulating icws to force an exhaust condition. 20 * 3) change(85-11-08,coren), approve(85-11-08,mcr7275), 21 * audit(85-11-17,beattie), install(88-09-20,mr12.2-1115): 22 * make some corrections to the changes for suspend/resume. 23 * 4) change(85-12-20,kozlowski), approve(88-08-15,mcr7965), 24 * audit(88-09-08,farley), install(88-09-20,mr12.2-1115): 25 * add support to set speeds of 2400, 4800 and 9600 as required by 26 * autobaud_tables. 27 * 5) change(88-07-22,beattie), approve(88-08-15,mcr7965), 28 * audit(88-09-08,farley), install(88-09-20,mr12.2-1115): 29 * prepared for installation. 30 * end history comments 31 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 4 hsla_man - multics/fnp (mcs) hsla manager 34 lbl ,hsla_man 37 pcc off 00000 38 base 8 39 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 40 * 41 * hsla_man, hsla 42 * 43 * this is hsla_man, the high speed line 44 * adaptor support routine for the multics/fnp 45 * communications system (mcs). it is driven by 46 * dcw lists supplied by the control_tables and 47 * interrupts from the various types of lines 48 * connected to the hsla subchannels. 49 * 50 * status from the interrupts is not 51 * processed at interrupt time, but is queued 52 * for later processing. this avoids problems of 53 * processing status for a line while the call side 54 * is changing parameters about that line. 55 * 56 * coded 9/5/74 by mike grady 57 * 58 * modified 79 jul 20 by art beattie to support dn6670 59 * extended memory. 60 * 61 * modified july 1981 by robert coren to incorporate 62 * dave cousins' code for faster icw switching. 63 * 64 * modified september 1984 by robert coren to fix several bugs: 65 * correct the order of storing icw words; 66 * set flow control characters in first half of a double cct; 67 * resume suspended output on quit; 68 * make mskchn free chains correctly if t.ocur is 69 * a non-first subset of t.ocp; 70 * fix oscan's check for overflowing t.pos with tabs; 71 * make hmode resume output if oflow turned off while 72 * suspended. 73 * modified april 1985 by robert coren to make scan subroutine not 74 * use page table entry if buffer address is in low memory. 75 * 76 * modified sept 1985 by d. w. cousins to do suspend and resume 77 * by turning off the pcw transmit bit instead of forcing 78 * an exhaust condition, which could result in a race with the 79 * hardware. 80 * 81 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00000 82 tib assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 5 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-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 6 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 ******************************** assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 7 terminal information block (tib) 000001 tsfcd bool 000001 carrier detect 000002 tsfcts bool 000002 clear to send 000004 tsfdsr bool 000004 data set ready 000010 tsfsrc bool 000010 supervisory receive 000020 tsfst bool 000020 store status 000040 tsfmrk bool 000040 send marker status 000100 tsftrm bool 000100 send terminate status 000200 tsfrcv bool 000200 receive mode 000400 tsfxmt bool 000400 transmit mode 001000 tsfbrk bool 001000 send line break 002000 tsfdtr bool 002000 data terminal ready 004000 tsfsxt bool 004000 supervisory transmit 004000 tsftre bool 004000 tally runout enable (hdlc) 010000 tsfrts bool 010000 request to send 020000 tsfcrq bool 020000 acu call request ******************************** * tib flags -- t.flg ******************************** 000001 tfwrit bool 000001 output chain present 000002 tfbel bool 000002 send bell as next echoed character 000004 tffdpx bool 000004 full duplex mode 000010 tfkybd bool 000010 keyboard addressed 000020 tfprtr bool 000020 printer addressed 000040 tfhang bool 000040 hangup this line 000100 tflisn bool 000100 answer the phone assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 8 terminal information block (tib) 000200 tfquit bool 000200 send nl on line break 000400 tfctrl bool 000400 do kybd/printer addressing 001000 tflfec bool 001000 do lf echo on cr 002000 tfcrec bool 002000 do cr echo on lf 004000 tftbec bool 004000 do space echo on tab 010000 tfwabt bool 010000 do write abort 020000 tfauto bool 020000 this is hsla autobaud line 040000 tfeotx bool 040000 eot expected from 2741 100000 tfisus bool 100000 input suspended 200000 tfecpx bool 200000 echoplex mode 400000 tfosus bool 400000 output suspended ******************************** * second word of tib flags ******************************** 000001 tfxhld bool 000001 hold transmit on 000002 tfdild bool 000002 terminal is dialed up 000004 tfercv bool 000004 enter receive mode 000010 tfrabt bool 000010 do read abort 000020 tfacu bool 000020 do dial out 000040 tfifc bool 000040 input flow control mode 000100 tfofc bool 000100 output flow control mode 000200 tfupsf bool 000200 terminal is upshifted now 000400 tfrply bool 000400 replay mode 001000 tfrpon bool 001000 replay is occurring now 002000 tfplit bool 002000 polite mode 004000 tfblak bool 004000 asynchronous block acknowledgement assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 9 terminal information block (tib) 010000 tfcrcv bool 010000 'control' receive mode 020000 tfmrcv bool 020000 'message' receive mode 040000 tffrmi bool 040000 frame mode 100000 tffip bool 100000 frame in progress 200000 tfsftr bool 200000 terminal is shifting device 400000 tfpfnl bool 400000 line is in prefixnl mode ********************************* * third word of tib flags ********************************* 000001 tfbkpt bool 000001 line is stopped at breakpoint 000002 tfitim bool 000002 timeout if input stops 000004 tfkpar bool 000004 keep parity bits 000010 tfecho bool 000010 echoing has priority over output (lsla) 000020 tfbral bool 000020 break on all characters 000040 tfsked bool 000040 input timeout routine scheduled 000100 tf8in bool 000100 don't strip input parity 000200 tf8out bool 000200 don't strip output parity 000400 tfoddp bool 000400 odd parity 001000 tfabf0 bool 001000 t.afb0 available 010000 tfabf1 bool 010000 t.abf1 available 020000 tfmask bool 020000 channel has been masked for excessive int 040000 tfinq bool 040000 input is queued for the channel ********************************* * redefined tib flags in t.flg assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 10 terminal information block (tib) ********************************* 000020 tfdlup equ tfprtr line is on dialup modem assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 11 software communications region, hsla 00000 84 sfcm hsla pcc save,off assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 12 sfcm for hsla 000000 sf.hcm equ 0 addr of hwcm 000001 sf.nxa equ sf.hcm+1 addr of next available queue entry 000002 sf.nxp equ sf.nxa+1 addr of next queue entry to process 000003 sf.tly equ sf.nxp+1 tally of status queue 000004 sf.tib equ sf.tly+1 addr of tib for this line 000005 sf.flg equ sf.tib+1 flag word 000006 sf.ib0 equ sf.flg+1 pointer to input buffer 1 000007 sf.ib1 equ sf.ib0+1 pointer to input buffer 2 000010 sf.ob0 equ sf.ib1+1 pointer to output buffer 1 000011 sf.ob1 equ sf.ob0+1 pointer to output buffer 2 000012 sf.pcw equ sf.ob1+1 current pcw 2nd word 000013 sf.cct equ sf.pcw+1 cct addr for this line, if non-zero 000014 sf.rct equ sf.cct+1 repeat count for status queue overflows 000015 sf.hsl equ sf.rct+1 address of hsla table entry for this line 000016 sf.bsz equ sf.hsl+1 max buffer size 000017 sf.fbs equ sf.bsz+1 buffer size to be used during frame input 000020 sf.mms equ sf.fbs+1 maximum synchronous message size 000020 sf.csz equ sf.mms current asynchronous buffer size 000021 sf.rms equ sf.mms+1 remaining unallocated message length 000021 sf.nic equ sf.rms char. address of next asynchronous input 000022 sf.noc equ sf.nic+1 **not used** char address of next asynchr 000023 sf.ssl equ sf.noc+1 number of entries in software status queu 000024 sf.cfg equ sf.ssl+1 2 words for config pcw 000026 sf.sta equ sf.cfg+2 hardware status q, sicw here (primary) 000005 sfhsiz equ 5 number of entries in hardware status buf assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 13 sfcm for hsla room for 6 status words 000042 sf.est equ sf.sta+sfhsiz*2+2 000042 sf.shq equ sf.est hardware status q, sicw here (secondary) room for 6 more status word 000056 sf.ast equ sf.shq+sfhsiz*2+2 000056 sf.hln equ sf.ast 000056 sf.waq equ sf.ast wrap around queue, software status q 000012 sfssq equ 10 length of "short" software status queue 000024 sflsq equ 20 length of "long" software status queue (used for hdlc and bisync lines) 000070 sf.sln equ sf.hln+sfssq 000102 sf.lln equ sf.hln+sflsq sfcm flag definitions 000001 sffskd bool 000001 status processor is scheduled 000002 sffcii bool 000002 on if alternate input icw is active 000004 sffcoi bool 000004 on if alternate output icw is active 000010 sffisc bool 000010 inactive subchannel flag 000020 sffsct bool 000020 short cct flag 000040 sffebd bool 000040 ebcdic data code on this line 000100 sffech bool 000100 tab, cr, lf echo going on now 000200 sffdct bool 000200 dynamic (sharable) cct in use for channel 000400 sffstp bool 000400 stop channel, rxmit done 001000 sffcai bool 001000 on if altermate status queue is active 002000 sffbsc bool 002000 binary synchronous device 004000 sffsqo bool 004000 status queue overflow pending 010000 sffsyn bool 010000 any synchronous line type 020000 sffmsp bool 020000 marker status pending assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 14 sfcm for hsla 040000 sffofr bool 040000 old setting of tffrmi (lines up on tffrmi 100000 sffnib bool 100000 need to allocate new input buffer(s) 400000 sffhdl bool 400000 uses hdlc channel board 000002 sfhmk equ 2 x-or mask to switch icw addrs 000001 sfbfmk equ 1 x-or mask to switch i-or-ob1/2 addrs pcc restore 85 86 00000 87 hwcm assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 15 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 88 00000 89 meters assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 16 system-wide meters 000720 .mdilc set 464 cumulative no. of channels dialed 000722 .mdilu set 466 updates of .mdilc 000724 .mspav set 468 cumulative space available 000726 .mspau set 470 updates of .mspav 000730 .mimbx set 472 cumulative number of mbxes in use 000732 .mimbu set 474 updates of .mimbx 000734 .mndil set 476 current no. of channels dialed 000735 .malof set 477 number of space allocation failures 000736 .mdias set 478 abnormal dia status 000737 .mpool set 479 total size of buffer pool (in words) 000740 .mbufa set 480 number of buffer allocations 000742 .mbfpa set 482 number of buffers pre-allocated 000744 .mupab set 484 used a pre-allocated buffer 000746 .mpanf set 486 no pre-allocated buffer available 000750 .mblow set 488 buffer allocated in low memory 000030 .mleng equ .mpanf+2-.mdilc length of system-wide meters assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 17 per-channel meters meters for all channels 000000 m.dql equ 0 cumulative length of dia request queue 000002 m.dqu equ m.dql+2 updates of m.dql 000004 m.nst equ m.dqu+2 cumulative no. of pending status 000006 m.nsu equ m.nst+2 updates of m.nst 000010 m.over equ m.nsu+2 output overlaps 000011 m.par equ m.over+1 parity errors 000012 m.ssqo equ m.par+1 software status queue overflows 000013 m.hsqo equ m.ssqo+1 hardware status queue overflows 000014 m.inaf equ m.hsqo+1 input allocation failures 000015 m.cql equ m.inaf+1 current length of dia request queue 000016 m.exh equ m.cql+1 exhaust status 000020 m.xte equ m.exh+2 software xte status 000022 m.leng equ m.xte+2 length of common meters (must be even) additional meters for asynchronous channels 000022 m.prex equ m.leng pre-exhaust status 000024 m.ebof equ m.prex+2 echo buffer overflows 000026 m.quit equ m.ebof+2 bell-quits 000030 m.asyl equ m.quit+2 total length of asynchronous meters (must be even) additional meters for synchronous channels 000022 m.nim equ m.leng number of input messages 000024 m.iml equ m.nim+2 cumulative length of input 000026 m.mini equ m.iml+2 minimum length of input message assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 18 per-channel meters 000027 m.maxi equ m.mini+1 maximum length of input message 000030 m.nom equ m.maxi+1 number of output messages 000032 m.oml equ m.nom+2 cumulative length of output 000034 m.mino equ m.oml+2 minimum length of output message 000035 m.maxo equ m.mino+1 maximum length of output message 000036 m.cnt1 equ m.maxo+1 first type of counter 000040 m.cnt2 equ m.cnt1+2 second type of counter 000042 m.cnt3 equ m.cnt2+2 third type of counter 000044 m.cnt4 equ m.cnt3+2 fourth type of counter 000046 m.cnt5 equ m.cnt4+2 fifth type of counter 000050 m.cnt6 equ m.cnt5+2 sixth type of counter 000052 m.cnt7 equ m.cnt6+2 seventh type of counter 000054 m.cnt8 equ m.cnt7+2 eighth type of counter 000056 m.synl equ m.cnt8+2 total length of synchronous meters 90 00000 91 hslatb ******************************************** * hsla table symbol definitions ******************************************** 000000 ht.flg equ 0 hsla tables flag bits 000001 ht.tib equ 1 tib ptr in hsla table 400000 htfcc bool 400000 concentrator channel 200000 htfpl bool 200000 private line modem or hardwire 100000 htfasy bool 100000 async channel 040000 htfop1 bool 040000 option 1 020000 htfop2 bool 020000 option 2 017000 htfmdm bool 017000 modem type, 4 bits 000760 htflnt bool 000760 line type, 5 bits 000017 htfspd bool 000017 line speed, 4 bits 00000 92 csbits assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 19 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-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 20 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-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 21 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 00000 93 devtab assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 22 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 00000 94 buffer assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 23 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 95 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 24 buffer format 000073 96 hbfnch equ bufsiz*2-5 number of real spots in hsla input bfr 97 00000 98 comreg assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 25 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-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 26 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 99 00000 100 dlytbl assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 27 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-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 28 00000 102 cctdef cct control bit definitions 000000 ct.ncs bool 000 normal char store 000001 ct.t1s bool 001 store and terminate on next 000002 ct.t2s bool 002 store and terminate after 2 chars 000003 ct.t0s bool 003 store and terminate 000004 ct.dmk bool 004 store and marker delayed 000005 ct.mk1 bool 005 store and marker on next 000006 ct.ign bool 006 ignore, no store 000007 ct.mrk bool 007 store and marker 000020 ct.sw bool 020 switch icws 000040 ct.syn bool 040 resync channel 000100 ct.tb1 bool 100 switch to table 1 000200 ct.tb2 bool 200 switch to table 2 000300 ct.tb3 bool 300 switch to table 3 000400 ct.tb4 bool 400 switch to table 4 000023 ct.eol equ ct.sw+ct.t0s eol for regular tty 000061 ct.grt equ ct.sw+ct.syn+ct.t1s for etx plus bcc char 000421 ct.etx equ ct.t1s+ct.sw+ct.tb4 000423 ct.nak equ ct.t0s+ct.sw+ct.tb4 000005 ct.itb equ ct.mk1 000204 ct.stx equ ct.tb2+ct.dmk 000207 ct.mtb equ ct.mrk+ct.tb2 ** following codes are for setcct opblock 000000 scc.dl equ 0 delete current cct 000001 scc.df equ 1 set to default cct based on modes 000002 scc.bs equ 2 reset to base of current cct assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 29 symrefs and symdefs 104 symdef hsla primary sysdef 105 symdef hdcw dcw list processor 106 symdef hintr interrupt processor 107 * symdef hbreak change break list 108 symdef hgeti get ptr and tally of input bfr 109 symdef hmode chnage modes entry 110 symdef houtav output has arrived entry 111 symdef hcfg change confiuration 112 symdef hslajt location of hsla jump tables 113 symdef setcct setcct opblock handler 114 symdef shrcct shared cct handler 115 symdef hcheck to start echoing if possible 116 symdef cbufsz change sf.bsz size for sync pre alloc buffer 117 symdef hunmsk subroutine to unmask a subchannel 118 119 120 symref trace 121 symref outprc processor for output sub-op 122 symref istat entry in intrp for status 123 symref maskr return point in control_tables after masking 124 symref itest test-state entry of control_tables 125 symref invp interrupt handler in scheduler 126 symref g3wjt entry to get interrupt info 127 symref dspqur secondary dispatcher 128 symref mdisp return to master dispatcher 129 symref secdsp return to secondary dispatcher 130 symref gettib entry to get the tib addr 131 symref getbuf entry to grab a buffer 132 symref getbfh entry to grab a buffer from high memory 133 symref frebuf entry to free a buffer 134 symref frebfh entry to free a buffer in high memory 135 symref frelbf entry to free a buffer chain 136 symref setbpt entry to convert buffer address to virtual 137 symref cvabs entry to convert address to absolute 138 symref denq queuer for dia man requests 139 symref derrq queuer for error messages to cs 140 symref meterc metering subroutine 141 symref getmem 142 symref fremem 143 symref getcmt get address of carriage mvmt tbl 144 symref inproc processes input chars for asynchronous lines 145 symref setptw set up page table word 146 symref mincs 147 symref mincd 148 symref mupdat metering subroutines 149 150 151 00000 152 hsla null 00000 153 start hsla,6 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 30 symrefs and symdefs symdef -.chain 00000 even 000006 modnum equ 6 00000 000006 0 .chain dec 6 00001 306243 0 bci 2,hsla 00002 212020 0 00003 0 00000 1 ind hsla 00004 001102 0 date 00005 001010 0 00006 330000 0 bci 4,.001. 00007 013320 0 00010 202020 0 00011 202020 0 00012 154 hslast assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 31 hsla status bits first status word 400000 hs.rcs bool 400000 send/rcv status indicator(1=rcv) 200000 hs.nms bool 200000 normal marker status 100000 hs.dms bool 100000 delayed marker status 040000 hs.trm bool 040000 terminate character 020000 hs.aiw bool 020000 alternate icw active 010000 hs.siw bool 010000 switching icw's after status store 004000 hs.tro bool 004000 tally runout 002000 hs.ptr bool 002000 pre-tally runout 001000 hs.per bool 001000 parity error, rcv 000400 hs.crj bool 000400 command reject 000200 hs.dss bool 000200 data set status change 000100 hs.isd bool 000100 idle state detect (hdlc) 000040 hs.xte bool 000040 transfer timing error 000020 hs.fce bool 000020 frame check sequence error (hdlc) 000010 hs.sqo bool 000010 status queue overflow (set by software) 000004 hs.nsb bool 000004 no stop bit rcvd 000004 hs.rab bool 000004 receive abort (hdlc) 000002 hs.dlo bool 000002 data line occupied(acu) 000001 hs.pwi bool 000001 power indicator(acu) second status word 400000 hs.dsr bool 400000 data set ready 200000 hs.cts bool 200000 clear to send 100000 hs.cd bool 100000 carrier detect 040000 hs.src bool 040000 supervisory receive 020000 hs.acr bool 020000 abandon call and retry(acu) 010000 hs.ads bool 010000 data set status(acu) 004000 hs.ri bool 004000 ring indicator 002000 hs.brk bool 002000 line break received 002000 hs.byt bool 002000 partial byte (hdlc) 001000 hs.rbt bool 001000 receive block terminate (bsc & hdlc) 000400 hs.rcv bool 000400 receive mode 000200 hs.xmt bool 000200 transmit mode 000100 hs.wam bool 000100 wrap around mode 000040 hs.dtr bool 000040 data terminal ready 000020 hs.rts bool 000020 request to send 000010 hs.mby bool 000010 make busy 000004 hs.sxt bool 000004 supervisory transmit 000004 hs.crc bool 000004 crc error (bsc) 000004 hs.tre bool 000004 tally runout enable (hdlc) 000002 hs.crq bool 000002 call request(acu) 000002 hs.rto bool 000002 receive time out (bsc) 000001 bool 000001 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 32 hsla pcw op-codes and broadside commands 156 157 pcw command type codes 158 000000 159 pcw.0 bool 000000 command type 0 pcw 200000 160 pcw.1 bool 200000 cmd type 1 w/broadside 400000 161 pcw.2 bool 400000 config type 2 async 600000 162 pcw.3 bool 600000 config type 3 sync 163 164 op-codes 165 000000 166 p.nop bool 000000 no operation 010000 167 p.ris bool 010000 request input status 020000 168 p.ros bool 020000 request output status 030000 169 p.rcs bool 030000 request config status 040000 170 p.msk bool 040000 set subchannel mask bit 050000 171 p.rmsk bool 050000 reset subchannel mask bit 060000 172 p.sriw bool 060000 switch receive icw 070000 173 p.ssiw bool 070000 switch send icw 100000 174 p.init bool 100000 initialize 110000 175 p.smsk bool 110000 store subchannel mask register 120000 176 bool 120000 130000 177 bool 130000 140000 178 p.rsyn bool 140000 re-sync the subchannel 150000 179 p.tlbk bool 150000 transmit line break 160000 180 bool 160000 170000 181 bool 170000 182 183 broadside bits 184 000400 185 pb.rcv bool 000400 set receive mode 000200 186 pb.xmt bool 000200 set xmit mode 000100 187 pb.wam bool 000100 set wraparound mode 000040 188 pb.dtr bool 000040 set data terminal ready 000020 189 pb.rts bool 000020 set request to send 000010 190 pb.mby bool 000010 make busy 000004 191 pb.sxt bool 000004 set supervisory transmit 000004 192 pb.tre bool 000004 set tally runout enable (hdlc) 000002 193 pb.crq bool 000002 set call request(acu) 000001 194 pb.msk bool 000001 195 196 pcw type 2 (asynch confiuration) mode bits 197 140000 198 p2.5bt bool 140000 5-bit characters 150000 199 p2.6bt bool 150000 6-bit characters 160000 200 p2.7bt bool 160000 7-bit characters 170000 201 p2.8bt bool 170000 8-bit characters 170000 202 p2.mbt bool 170000 mask for char size field 000040 203 p2.lpr bool 000040 lateral parity receive 000020 204 p2.lps bool 000020 lateral parity send 000010 205 p2.lpo bool 000010 lateral parity odd assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 33 hsla pcw op-codes and broadside commands 000004 206 p2.icw bool 000004 two send icw's 000002 207 p2.cct bool 000002 cct enable 000001 208 p2.spr bool 000001 209 210 211 pcw type 3 (sync config) 212 000400 213 p3.itf bool 000400 hdlc interframe time fill 000400 214 p3.beb bool 000400 bsc ebcdic mode 000200 215 p3.btr bool 000200 bsc transparent assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 34 random bits, flags, and definitions 217 218 sub-op types for dcw list 219 000001 220 dl.cmd equ 1 command sub-op 000002 221 dl.in equ 2 input sub-op 000003 222 dl.out equ 3 output sub-op 000004 223 dl.rdt equ 4 read tally sub-op 000005 224 dl.sup equ 5 additional command sub-op data 225 226 sub-op types for config list 227 000001 228 fg.smd equ 1 set mode bit 000002 229 fg.rmd equ 2 reset mode bit 000003 230 fg.bd equ 3 change baud rate 231 232 control tables and cct stuff 233 000001 234 ct.dev equ 1 offset of dev table ptr 235 000001 236 ttasci equ 1 t.type value for ascii channels 237 000103 238 linmsk bool 103 000105 239 sndout bool 105 send output op for denq 000115 240 errmsg bool 115 error message op for derrq 241 242 000005 243 lposhf equ 5 amount to shift tfoddp to get p2.lpo 000003 244 lpsshf equ 3 amount to shift tf8out to get p2.lps 245 246 000006 247 h1ch equ 6 first hsla iom channel number 000010 248 h3ch equ 8 last hsla iom channel number 249 000004 250 schdmn equ 4 module number for scheduler invp 251 000040 252 minsiz equ bufsiz size of smallest asynchronous input pseudo-buffer 253 000040 254 mxntty equ 32 max number subchannels per hsla 000140 255 maxtty equ mxntty*3 max tty on hslas 256 000006 257 hpri equ 6 priority of hsla_man hstprc 000003 258 hprip3 equ 3 high priority for ptro status 000002 259 hprip2 equ 2 highest priority for >9600 ptro status 260 000000 261 sw.dbg equ 0 on if debugging the module 262 000012 263 nl bool 12 new-line 000014 264 ff bool 14 form-feed 000015 265 cr bool 15 carriage return 000011 266 tab bool 11 horizontal tab assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 35 random bits, flags, and definitions 000003 267 etx bool 3 268 077000 269 bwndow bool 077000 base address of paging window assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 36 random bits, flags, and definitions 271 ************************************************************************ 272 * 273 * format of cct descriptor entry 274 * one exists for each shared cct 275 * 276 ************************************************************************ 277 000000 278 cct.nx equ 0 pointer to next entry 000001 279 cct.pr equ 1 pointer to previous entry 000002 280 cct.ad equ 2 address of the cct 000003 281 cct.sz equ 3 length of the cct 000004 282 cct.rc equ 4 referenct count 000005 283 cct.ln equ 5 length of descriptor 284 285 286 287 equates for echo buffer things 288 000000 289 eb.inp equ 0 000001 290 eb.otp equ 1 000002 291 eb.tly equ 2 000002 292 eb.dta equ 2 293 000073 294 ebmax equ bufsiz*2-5 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 37 trace types and switches 296 000001 297 tt.dcw equ 1 trace hdcw calls 000002 298 tt.pcw equ 2 trace pcw connects 000003 299 tt.int equ 3 trace interrupts 000004 300 tt.sta equ 4 trace status 000005 301 tt.ira equ 5 trace icw recovery attempt 302 303 000002 304 ts.dcw bool 000002 000004 305 ts.pcw bool 000004 000010 306 ts.int bool 000010 000020 307 ts.sta bool 000020 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 38 macros for hsla_man 309 310 macro to generate command bit lookup 311 312 cmdtab macro 313 vfd 1/#2,17/#1 314 ife '#2','c.on',2 315 vfd 18/#3 316 ife 1,0,1 317 vfd o18//#3 318 endm 319 320 macro to generate pcw lookup table 321 322 pcwtab macro 323 vfd 18/#1 324 vfd 18/#2 325 endm 326 327 macro to generate config mode bit lookup table entry 328 329 cfgtab macro 330 vfd 18/#1 331 vfd 18/#2 332 vfd 18/#3 333 ind #4 334 endm 335 336 macro to generate status lookup tables 337 338 stats macro 339 vfd 18/#1 340 ind #2 341 endm 342 343 macro to setup status match table 344 345 smap macro 346 vfd 18/#1 347 vfd 18/#2 348 endm 349 350 macro to do real divide 351 352 dvd macro 353 qls 1 354 dvf #1 355 endm assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 39 macros for hsla_man 357 358 macro to do real multiply 359 360 mpy macro 361 mpf #1 362 lrl 1 363 endm 364 365 generates the odd word of a dn6670 paged data address icw 366 which allows iom to directly address 64k memory. 367 uses same format as icw pseudo-op except the address is 368 is not supplied and the third argument must be supplied. 369 370 amicwo macro 371 vfd 2/2,3/#1,1/#3,12/#2 372 endm amicwo assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 40 hdcw - hsla dcw list processor 00012 375 hdcw subr dcw,(x1,x2,x3) save the index regs 376 377 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 378 * 379 * hdcw 380 * 381 * subroutine called by interpreter to process 382 * a dcw list found in the control_tables. 383 * 384 * upon entry: 385 * x1 - virtual tib address 386 * t.dcwa - address of dcw list 387 * t.dcwl - dcw list length 388 * 389 * returns: 390 * 391 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 392 00026 1 03 030 0 393 ldx2 t.sfcm,1 get ptr to sfcm 00027 2 07 005 0 394 lda sf.flg,2 get sfcm flags 00030 222 100 0 395 icana sffech some echo now? 00031 0 74 023 54 396 tze dcw004-* no, go ahead 397 00032 1 07 024 0 398 lda t.dcwl,1 get count of times we've skipped out 00033 2335 11 0 399 lrl 9 it's in upper half of t.dcwl 00034 773 001 0 400 iaa 1 increment it 00035 422 074 0 401 icmpa 60 over limit? 00036 0 65 006 44 402 tpl dcw002-* yes, force it through 403 00037 0334 11 0 404 lls 9 restore lower half of word 00040 1 17 024 0 405 sta t.dcwl,1 update count 00041 473 007 0 406 ilq 7 meter delayed processing 00042 4 10 234 276 407 tsy a.a008-*,* meterc 00043 0 71 202 245 408 tra dcwret-* done here for now 409 00044 673 100 0 410 dcw002 ila sffech we're going to force this off 00045 322 777 0 411 iera -1 00046 2 32 005 0 412 ansa sf.flg,2 413 00047 673 200 0 414 ila pb.xmt transmit mode too end of binary card 00000007 00050 322 777 0 415 iera -1 00051 2 32 012 0 416 ansa sf.pcw,2 417 00052 473 010 0 418 ilq 8 meter overriding of sffech 00053 4 10 223 276 419 tsy a.a008-*,* meterc 420 00054 673 777 0 421 dcw004 ila -1 we're going to process dcw list 00055 2337 11 0 422 arl 9 wipe out count in upper half of t.dcwl 00056 1 32 024 0 423 ansa t.dcwl,1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 41 hdcw - hsla dcw list processor 424 00057 1 07 024 0 425 dcw005 lda t.dcwl,1 look for real work to be done 00060 0 64 002 62 426 tnz 2 sure, go do it. 00061 427 die 8 428 00062 2 41 015 0 429 ldx3 sf.hsl,2 get pointer to hsla table entry 00063 3 41 001 0 430 ldx3 ht.tib,3 get real tib address for trace 00064 431 trace tt.dcw,ts.dcw,(x3,t.dcwa(1),t.dcwl(1)) 432 00101 1 41 023 0 433 ldx3 t.dcwa,1 get ponter to dcw list 00102 3 07 000 0 434 lda 0,3 get first dcw 00103 2337 17 0 435 arl 18-3 shift to get type 00104 422 001 0 436 icmpa dl.cmd is it a command dcw? 00105 0 74 007 114 437 tze dcw010-* yes, go process it 438 00106 422 002 0 439 icmpa dl.in is it input sub-op? 00107 0 74 136 245 440 tze dcwret-* yes, done 441 00110 422 004 0 442 icmpa dl.rdt is it a read tally sub-op? 00111 0 74 134 245 443 tze dcwret-* yes, done 444 00112 0 10 303 415 445 tsy bldobf-* look for output sub-op 446 00113 0 71 132 245 447 tra dcwret-* all done. 448 00114 0 47 141 255 449 dcw010 ldq l.a005-* (=p.ris) get request input status op 00115 0 57 132 247 450 stq dcwpcw-* save for later 451 00116 1 07 000 0 452 lda t.stat,1 pick up tib status 00117 0 34 132 251 453 ana l.a001-* (=tsfxmt&tsfrcv) isolate rcv and xmt end of binary card 00000008 00120 0 17 130 250 454 sta dcwst-* and save for later, also 455 00121 0 07 146 267 456 lda a.a001-* (=cmdtab) get addr of cmd table 00122 0 17 271 413 457 sta cmdls-* set for subr to use 00123 0 07 145 270 458 lda a.a002-* (=cmdend) get end of table addr 00124 0 17 270 414 459 sta cmdle-* also for subr 00125 0 10 230 355 460 tsy cmdprc-* process the command op 461 00126 1 20 024 0 462 szn t.dcwl,1 any more dcw list left? 00127 0 74 013 142 463 tze dcw020-* no, done 464 00130 1 41 023 0 465 ldx3 t.dcwa,1 yes, get addr of dcw list 00131 3 07 000 0 466 lda 0,3 get the dcw 00132 2337 17 0 467 arl 18-3 shift down to look at type 468 00133 422 005 0 469 icmpa dl.sup is it a supplemental cmd op? 00134 0 64 006 142 470 tnz dcw020-* no, continue 471 00135 0 07 142 277 472 lda a.a011-* (=suptab) get addr of sup table assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 42 hdcw - hsla dcw list processor 00136 0 17 255 413 473 sta cmdls-* set for subr process 00137 0 07 141 300 474 lda a.a012-* (=supend) end of cmd table 00140 0 17 254 414 475 sta cmdle-* set also for subr 00141 0 10 214 355 476 tsy cmdprc-* process sup cmd op 477 00142 0 07 106 250 478 dcw020 lda dcwst-* get the old rcv & xmt modes 00143 0 34 110 253 479 ana l.a003-* (=tsfrcv) old rcv mode only 00144 0 35 107 253 480 era l.a003-* (=tsfrcv) ^old rcv mode now 00145 1 31 000 0 481 cana t.stat,1 ^oldrcv&rcv, did we just enter rcv? 00146 0 74 012 160 482 tze dcw030-* no, continue... 483 00147 2 07 005 0 484 lda sf.flg,2 synchronous line? 00150 0 31 112 262 485 cana l.a010-* =sffsyn 00151 0 74 003 154 486 tze dcw025-* no, don't set message size 00152 2 47 020 0 487 ldq sf.mms,2 get max message size 00153 2 57 021 0 488 stq sf.rms,2 reset residual message size 489 00154 0 10 274 450 490 dcw025 tsy bldibf-* go setup rcv data 491 00155 0 07 106 263 492 lda l.a011-* get control rcv mask 00156 322 777 0 493 iera -1 invert bits 00157 1 32 002 0 494 ansa t.flg2,1 turn off control rcv 495 00160 1 07 000 0 496 dcw030 lda t.stat,1 get the tib status 00161 0 31 073 254 497 cana l.a004-* (=tsfxmt) in xmit mode? 00162 0 74 007 171 498 tze dcw035-* no 499 00163 2 20 010 0 500 szn sf.ob0,2 get addr of first output 00164 0 64 005 171 501 tnz dcw035-* output still ready, skip 00165 2 20 011 0 502 szn sf.ob1,2 check second 00166 0 64 003 171 503 tnz dcw035-* likewise 504 end of binary card 00000009 00167 0 10 226 415 505 tsy bldobf-* yes, setup output buffers 00170 0 71 011 201 506 tra dcw040-* done 507 00171 1 07 000 0 508 dcw035 lda t.stat,1 get new xmit mode setting 00172 0 34 062 254 509 ana l.a004-* (=tsfxmt) leave only xmit mode 00173 0 35 061 254 510 era l.a004-* (=tsfxmt) invert for ^xmit 00174 0 31 054 250 511 cana dcwst-* ^xmit&oldxmit, did we just leave xmit mode? 00175 0 74 004 201 512 tze dcw040-* no, continue 513 00176 0 07 062 260 514 lda l.a008-* (=sffstp) get bit to indicate this 00177 1 03 030 0 515 ldx2 t.sfcm,1 get ptr to sfcm and 00200 2 72 005 0 516 orsa sf.flg,2 turn it on in the sfcm 517 00201 0 07 056 257 518 dcw040 lda l.a007-* (=tsfbrk) shd we send line break? 00202 1 31 000 0 519 cana t.stat,1 line break? 00203 0 74 005 210 520 tze dcw050-* no, skip it 521 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 43 hdcw - hsla dcw list processor 00204 0 47 052 256 522 ldq l.a006-* (=p.tlbk) transmit line break op 00205 0 57 042 247 523 stq dcwpcw-* reset default op code 524 00206 322 777 0 525 iera -1 complement tsfbrk 00207 1 32 000 0 526 ansa t.stat,1 and turn it off in tib 527 00210 1 03 030 0 528 dcw050 ldx2 t.sfcm,1 get ptr to sfcm 00211 0 41 060 271 529 ldx3 a.a003-* (=pcwtab) get ptr to pcw table 00212 0 07 054 266 530 lda l.a014-* (pb.msk) preserve "masked" bit 00213 2 32 012 0 531 ansa sf.pcw,2 init rest of pcw to zero 532 00214 1 07 000 0 533 dcw055 lda t.stat,1 get tib status bits 00215 3 31 000 0 534 cana 0,3 is this one on in tib? 00216 0 74 003 221 535 tze dcw060-* no, jump out 536 00217 3 07 001 0 537 lda 1,3 get pcw broadside bit 00220 2 72 012 0 538 orsa sf.pcw,2 and or it into or pcw 539 00221 373 002 0 540 dcw060 iacx3 pcwlen add in table element size 00222 0 61 050 272 541 cmpx3 a.a004-* (=pcwend) at end of table? 00223 0 64 771 214 542 tnz dcw055-* no, loop 543 00224 1 07 001 0 544 lda t.flg,1 check for suspended output 00225 0 31 037 264 545 cana l.a012-* =tfosus 00226 0 74 003 231 546 tze dcw070-* not suspended, all is well 00227 0 07 036 265 547 lda l.a013-* =^pb.xmt 00230 2 32 012 0 548 ansa sf.pcw,2 if suspended we don't want xmit now 549 00231 0 07 016 247 550 dcw070 lda dcwpcw-* get the op-code 00232 4 10 043 275 551 tsy a.a007-*,* do a connect 552 00233 1 20 024 0 553 szn t.dcwl,1 any more dcw list now? 00234 0 74 011 245 554 tze dcwret-* no, done 555 00235 0 07 012 247 556 lda dcwpcw-* get pcw just sent end of binary card 00000010 00236 0 27 020 256 557 cmpa l.a006-* (=p.tlbk) sent line break? 00237 0 64 006 245 558 tnz dcwret-* no, done 559 00240 1 41 023 0 560 ldx3 t.dcwa,1 get addr of dcw list 00241 3 07 000 0 561 lda 0,3 get the next dcw 00242 2337 17 0 562 arl 18-3 shift into position 00243 422 001 0 563 icmpa dl.cmd is it command? 00244 0 74 613 57 564 tze dcw005-* yes, process it now 565 00245 566 dcwret return hdcw all done, go back 567 568 00247 569 dcwpcw bss 1 (altrd) save pcw op-code for connect 00250 570 dcwst bss 1 (altrd) status save for old rcv and xmt assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 44 hdcw - hsla dcw list processor 571 572 00251 000600 0 573 l.a001 vfd 18/tsfxmt+tsfrcv tib rcv and xmt 00252 400000 0 574 l.a002 vfd o18/400000 on/off bit in cmdtab 00253 000200 0 575 l.a003 vfd 18/tsfrcv tib receive alone 00254 000400 0 576 l.a004 vfd 18/tsfxmt tib transmit alone 00255 010000 0 577 l.a005 vfd 18/p.ris request input status op-code 00256 150000 0 578 l.a006 vfd 18/p.tlbk transmit line break op-code 00257 001000 0 579 l.a007 vfd 18/tsfbrk tib transmit line break 00260 000400 0 580 l.a008 vfd 18/sffstp stop channel bit 00261 077777 0 581 l.a009 oct 077777 00262 010000 0 582 l.a010 vfd 18/sffsyn 00263 010000 0 583 l.a011 vfd 18/tfcrcv 00264 400000 0 584 l.a012 vfd 18/tfosus 00265 777577 0 585 l.a013 vfd o18//pb.xmt 00266 000001 0 586 l.a014 vfd 18/pb.msk 587 588 00267 0 00301 1 589 a.a001 ind cmdtab command bit lookup table 00270 0 00335 1 590 a.a002 ind cmdend 00271 0 00341 1 591 a.a003 ind pcwtab pcw bit lookup table 00272 0 00355 1 592 a.a004 ind pcwend 00273 0 32000 3 593 a.a005 ind outprc output sub-op processor 00274 0 03234 1 594 a.a006 ind seticw setup icw's subr 00275 0 03147 1 595 a.a007 ind cioc connect routine 00276 0 30000 3 596 a.a008 ind meterc 597 *a.a009 unused 00277 0 00335 1 598 a.a011 ind suptab 00300 0 00341 1 599 a.a012 ind supend 600 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 45 command and pcw lookup tables 602 603 command table 604 00301 605 cmdtab null 00301 606 cmdtab c.srec,c.on,tsfrcv 00303 607 cmdtab c.rrec,c.off,tsfrcv 00305 608 cmdtab c.sxmt,c.on,tsfxmt end of binary card 00000011 00307 609 cmdtab c.rxmt,c.off,tsfxmt 00311 610 cmdtab c.sdtr,c.on,tsfdtr 00313 611 cmdtab c.rdtr,c.off,tsfdtr 00315 612 cmdtab c.ssup,c.on,tsfsxt 00317 613 cmdtab c.rsup,c.off,tsfsxt 00321 614 cmdtab c.stat,c.on,tsfst 00323 615 cmdtab c.sbrk,c.on,tsfbrk 00325 616 cmdtab c.smrk,c.on,tsfmrk 00327 617 cmdtab c.strm,c.on,tsftrm 00331 618 cmdtab c.srqs,c.on,tsfrts 00333 619 cmdtab c.rrqs,c.off,tsfrts 000335 620 cmdend equ * 621 00335 622 suptab null 00335 623 cmdtab c.scrq,c.on,tsfcrq 00337 624 cmdtab c.rcrq,c.off,tsfcrq 000341 625 supend equ * 626 000002 627 cmdlen equ 2 628 000000 629 c.on equ 0 000001 630 c.off equ 1 631 632 pcw table 633 00341 634 pcwtab null 00341 635 pcwtab tsfrcv,pb.rcv 00343 636 pcwtab tsfxmt,pb.xmt 00345 637 pcwtab tsfdtr,pb.dtr 00347 638 pcwtab tsfrts,pb.rts 00351 639 pcwtab tsfsxt,pb.sxt 00353 640 pcwtab tsfcrq,pb.crq end of binary card 00000012 000355 641 pcwend equ * 642 000002 643 pcwlen equ 2 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 46 cmdprc - subr to process cmd op from list 00355 645 cmdprc subr cpr,(x1,x2) 646 647 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 648 * 649 * cmdprc 650 * 651 * this subroutine is internal proc for hdcw 652 * which processes type 1 and 5 dcw cmd blocks. 653 * it is list driven. 654 * 655 * upon entry: 656 * x1 - virtual tib address 657 * cmdls - points to head of list 658 * cmdle - points to end of list 659 * 660 * returns: 661 * tib flags set 662 * 663 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 664 00366 0 03 025 413 665 ldx2 cmdls-* get addr of command table 00367 3 07 000 0 666 cpr010 lda 0,3 pick up cmd bits 00370 0 34 671 261 667 ana l.a009-* leave only the cmd bits 00371 2 31 000 0 668 cana 0,2 is this cmd bit on in dcw? 00372 0 74 011 403 669 tze cpr030-* no, continue loop 670 00373 2 07 000 0 671 lda 0,2 look at function bit 00374 0 31 656 252 672 cana l.a002-* (=400000) is it on? 00375 0 64 004 401 673 tnz cpr020-* yes, we want to turn bit off in tib 674 00376 2 07 001 0 675 lda 1,2 pick up t.stat bits 00377 1 72 000 0 676 orsa t.stat,1 and turn them on in the tib 677 00400 0 71 003 403 678 tra cpr030-* go look for more work 679 00401 2 07 001 0 680 cpr020 lda 1,2 get the correct bits 00402 1 32 000 0 681 ansa t.stat,1 and turn them off in the tib 682 00403 273 002 0 683 cpr030 iacx2 cmdlen increment table ptr 00404 0 23 010 414 684 cmpx2 cmdle-* at the end of table? 00405 0 64 762 367 685 tnz cpr010-* nope, go for more 686 00406 1 76 023 0 687 aos t.dcwa,1 increment dcw list addr 00407 673 777 0 688 ila -1 and decrement the dcw list 00410 1 16 024 0 689 asa t.dcwl,1 length word 690 00411 691 return cmdprc 692 00413 693 cmdls bss 1 00414 694 cmdle bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 47 bldobf - build output buffers from dcw list 00415 696 bldobf subr bob,(x1,x2,x3) end of binary card 00000013 697 698 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 699 * 700 * bldobf 701 * 702 * subroutine to build output buffers from 703 * an output dcw. called by hdcw. 704 * 705 * upon entry: 706 * x1 - virtual tib address 707 * t.dcwa - addr of output dcw 708 * t.dcwl - length of dcw list 709 * 710 * returns: 711 * a pair of output buffers is ready to connect to. 712 * 713 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 714 00431 1 07 024 0 715 lda t.dcwl,1 is dcw list gone? 00432 0 74 014 446 716 tze bobret-* yes, exit 717 00433 1 41 023 0 718 ldx3 t.dcwa,1 get addr of first dcw 00434 3 07 000 0 719 lda 0,3 pick up that dcw 00435 2337 17 0 720 arl 18-3 get the sub-op type 00436 422 003 0 721 icmpa dl.out is it output? 00437 0 64 007 446 722 tnz bobret-* no, exit 723 00440 4 10 633 273 724 tsy a.a005-*,* (=outprc) go process output subop 725 00441 1 03 030 0 726 ldx2 t.sfcm,1 get sfcm address 00442 1 07 001 0 727 lda t.flg,1 check for output suspended 00443 0 31 073 536 728 cana l.b007-* =tfosus 00444 0 64 002 446 729 tnz bobret-* it is, wait for resume char 00445 4 10 627 274 730 tsy a.a006-*,* (=seticw) else set up the icw's 731 00446 732 bobret return bldobf all done assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 48 bldibf - build input buffers 00450 734 bldibf subr bib,(x1,x2,x3) 735 736 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 737 * 738 * bldibf 739 * 740 * this subroutine builds input buffers from dcw 741 * list. called by hdcw. 742 * 743 * upon entry: 744 * x1 - virtual tib address 745 * t.dcwa - addr of dcw list 746 * t.dcwl - length of dcw list 747 * 748 * returns: 749 * a pair of input buffers to connect to. 750 * 751 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 752 00464 1 03 030 0 753 ldx2 t.sfcm,1 pick up sfcm addr 00465 2 41 000 0 754 ldx3 sf.hcm,2 pick up addr of hwcm 755 00466 373 000 0 756 iacx3 h.ric0 add in offset 00467 0 50 035 524 757 stx3 bibicw-* save ptr to icw 00470 1 41 030 0 758 ldx3 t.sfcm,1 get ptr to sfcm again 00471 373 006 0 759 iacx3 sf.ib0 add in offset of ib1 00472 0 50 031 523 760 stx3 bibibp-* and save taht too 761 00473 2 07 005 0 762 lda sf.flg,2 get sfcm flags end of binary card 00000014 00474 222 002 0 763 icana sffcii which icw is active? 00475 0 74 005 502 764 tze bib010-* primary, use it first 765 00476 673 002 0 766 ila h.ric1-h.ric0 get diff 00477 0 16 025 524 767 asa bibicw-* add to save to get right one 00500 673 001 0 768 ila sf.ib1-sf.ib0 get other diff 00501 0 16 022 523 769 asa bibibp-* and update ptr 770 00502 0 10 055 557 771 bib010 tsy rboibf-* setup old input buffer 772 00503 673 002 0 773 ila sfhmk pick up icw mask 00504 0 62 020 524 774 ersa bibicw-* switch icw ptr to alt 00505 673 001 0 775 ila sfbfmk pick up buffer mask 00506 0 62 015 523 776 ersa bibibp-* 777 00507 1 07 002 0 778 lda t.flg2,1 get tib flags 00510 0 31 036 546 779 cana l.b015-* (=tfcrcv) control rcv mode? 00511 0 74 007 520 780 tze bib020-* no, need another buffer 781 00512 4 56 011 523 782 stz bibibp-*,* zero input buffer ptr assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 49 bldibf - build input buffers 00513 0 41 011 524 783 ldx3 bibicw-* get icw addr 00514 0 07 042 556 784 lda a.b009-* (=bnispc) get addr of spare word 00515 0 47 022 537 785 ldq l.b008-* (=450000) get exhausted tally 00516 3 14 000 0 786 staq 0,3 set icw 00517 0 71 002 521 787 tra bibret-* done 788 00520 0 10 165 705 789 bib020 tsy bnibuf-* build a new input buffer 790 00521 791 bibret return bldibf all done in here 792 793 794 00523 795 bibibp bss 1 (altrd) ptr to sf.ib0/1 00524 796 bibicw bss 1 (altrd) ptr to icw1/2 00525 797 bibcnt bss 1 (altrd) count for cct copy 00526 798 bibabs bss 1 (altrd) absolute ptr to reused buffer 00527 799 bibvir bss 1 (altrd) virtual pointer to reused buffer 800 801 00530 700000 0 802 l.b001 vfd 18/bufsmk buffer size code mask 00531 0 00040 0 803 l.b002 zero minsiz 00532 010000 0 804 l.b003 vfd 18/sffsyn 00533 040000 0 805 l.b004 vfd 18/tffrmi 00534 3 00000 0 806 l.b005 zero 0,b.1 00535 000040 0 807 l.b006 vfd 18/tfifc 00536 400000 0 808 l.b007 vfd 18/tfosus 00537 450000 0 809 l.b008 oct 450000 00540 040000 0 810 l.b009 vfd 18/bfflst 00541 2 00000 0 811 l.b010 ind 0,b.0 00542 000777 0 812 l.b011 vfd 18/buftmk 00543 233100 0 00544 813 even 814 *l.b012 unused 00544 001000 0 815 l.b013 vfd 18/tfabf0 00545 010000 0 816 l.b014 vfd 18/tfabf1 end of binary card 00000015 00546 010000 0 817 l.b015 vfd 18/tfcrcv 00547 020000 0 818 l.b016 vfd 18/tfmrcv 00550 100000 0 819 l.b017 vfd 18/tffip 820 821 00551 0 22000 3 822 a.b001 ind getbfh 00552 0 34000 3 823 a.b002 ind setbpt 00553 0 00753 1 824 a.b003 ind bldicw 00554 0 00702 0 825 a.b004 ind .crpte 826 *a.b005 00555 0 01051 1 827 a.b006 ind ghibuf 828 *a.b007 unused 829 *a.b008 00556 0 00752 1 830 a.b009 ind bnispc assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 50 rboibf - rebuild old input buffer 00557 832 rboibf subr rbo,(x1) 833 834 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 835 * 836 * rboibf 837 * 838 * this routines checks for a partially filled 839 * input buffer. if one is found it is setup as the 840 * current input buffer, with correct icw and buffer 841 * tallies. if none is found bnibuf is called to allocate 842 * a fresh one. 843 * 844 * upon entry: 845 * x1 - virtual tib address 846 * x2 - virtual sfcm address 847 * bibibp - ind word to sf.ib0/1 848 * bibicw - ind word to h.ric0/1 849 * 850 * returns: 851 * icw and sf.ib0/1 setup 852 * 853 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 854 00565 2 07 005 0 855 lda sf.flg,2 synchronous line? 00566 0 31 744 532 856 cana l.b003-* =sffsyn 00567 0 74 112 701 857 tze rbo050-* no, don't reuse old buffer 858 00570 1 20 005 0 859 szn t.icp,1 any input chain now? 00571 0 74 110 701 860 tze rbo050-* nope, no need to reuse any 861 00572 1 07 006 0 862 lda t.ilst,1 get ptr to last buffer 00573 0 17 733 526 863 sta bibabs-* 00574 4 10 756 552 864 tsy a.b002-*,* (setbpt) convert to virtual 00575 4333 00 0 865 cax3 00576 3 07 001 0 866 lda bf.tly,3 get tally 00577 0 34 743 542 867 ana l.b011-* (=buftmk) leave only tally 00600 0 17 725 525 868 sta bibcnt-* save it 00601 3 07 001 0 869 lda bf.siz,3 get buffer size code 00602 2337 17 0 870 arl 15 right adjust 00603 0336 06 0 871 als bufshf+1 convert to chars 00604 773 073 0 872 iaa hbfnch one buffer, less overhead 00605 0 27 720 525 873 cmpa bibcnt-* is buffer full (tally = size)? 00606 0 74 073 701 874 tze rbo050-* yes, can't add to it 00607 0 17 075 704 875 sta rbotly-* save max tally 876 00610 1 07 002 0 877 lda t.flg2,1 get tib flags 00611 0 31 736 547 878 cana l.b016-* (=tfmrcv) message rcv mode ? 00612 0 74 004 616 879 tze rbo005-* no, continue 00613 0 07 725 540 880 lda l.b009-* (=bfflst) end of binary card 00000016 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 51 rboibf - rebuild old input buffer 00614 3 72 001 0 881 orsa bf.flg,3 set buffer last flag 00615 0 71 064 701 882 tra rbo050-* get a shiny new buffer 883 00616 0 50 711 527 884 rbo005 stx3 bibvir-* save buffer ptr 00617 1 07 005 0 885 lda t.icp,1 get ptr to head of chain 00620 6333 00 0 886 caq save it 00621 4 10 731 552 887 tsy a.b002-*,* setbpt 00622 4333 00 0 888 cax3 get virtual address 00623 0 67 703 526 889 cmpq bibabs-* same as tail? 00624 0 64 004 630 890 tnz rbo010-* no 891 00625 1 56 005 0 892 stz t.icp,1 zero all chain ptrs now 00626 1 56 006 0 893 stz t.ilst,1 00627 0 71 013 642 894 tra rbo030-* 895 00630 3 07 000 0 896 rbo010 lda bf.nxt,3 get the next ptr 00631 0 27 675 526 897 cmpa bibabs-* does it point to last? 00632 0 74 006 640 898 tze rbo020-* yes, steal off chain 00633 3 07 000 0 899 lda bf.nxt,3 bump to next on chain 00634 6333 00 0 900 caq hang on to absolute address 00635 4 10 715 552 901 tsy a.b002-*,* setbpt 00636 4333 00 0 902 cax3 get virtual in x3 00637 0 71 771 630 903 tra rbo010-* loop 904 00640 3 56 000 0 905 rbo020 stz bf.nxt,3 clobber next pointer 00641 1 57 006 0 906 stq t.ilst,1 make as new last 907 00642 3 07 001 0 908 rbo030 lda bf.siz,3 get buffer size code 00643 2337 17 0 909 arl 15 right adjust 00644 322 777 0 910 iera -1 add one and negate 00645 1 16 007 0 911 asa t.icpl,1 decrement chain length 912 00646 0 07 660 526 913 lda bibabs-* get ptr to buffer we will use 00647 4 17 654 523 914 sta bibibp-*,* put ptr into sfcm 00650 4 10 702 552 915 tsy a.b002-*,* setbpt 00651 4333 00 0 916 cax3 00652 3 56 000 0 917 stz bf.nxt,3 make next ptr zero 00653 0 07 655 530 918 lda l.b001-* get size code mask 00654 3 32 001 0 919 ansa bf.tly,3 leave only size code 00655 0 07 027 704 920 lda rbotly-* get max tally 00656 3 72 001 0 921 orsa bf.tly,3 put tally in buffer 922 00657 0 07 646 525 923 lda bibcnt-* get tally in buffer 00660 0337 01 0 924 ars 1 divide to get word count 00661 0 06 660 541 925 ada l.b010-* (=0,b.0) add in addr bits 00662 773 002 0 926 iaa bf.dta add offset of data end of binary card 00000017 00663 0 16 644 527 927 asa bibvir-* add into address of buffer 00664 0 07 641 525 928 lda bibcnt-* get tally again 00665 222 001 0 929 icana 1 is it odd? assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 52 rboibf - rebuild old input buffer 00666 0 74 004 672 930 tze rbo040-* no 931 00667 0 41 640 527 932 ldx3 bibvir-* get addr 00670 373 300 0 933 iacx3 0,b.1 bump up 00671 0 50 636 527 934 stx3 bibvir-* put it back 00672 0 07 012 704 935 rbo040 lda rbotly-* get whole tally 00673 0 26 632 525 936 sba bibcnt-* leave icw tally 00674 6333 00 0 937 caq put into q 00675 0 07 632 527 938 lda bibvir-* get virtual addr 00676 0 41 626 524 939 ldx3 bibicw-* get ptr to icw 00677 4 10 654 553 940 tsy a.b003-*,* (bldicw) fill in icw now 00700 0 71 002 702 941 tra rboret-* 942 00701 943 rbo050 null no partial input buffer 00701 0 10 004 705 944 tsy bnibuf-* allocate a new one 945 00702 946 rboret return rboibf 947 00704 948 rbotly bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 53 bnibuf - build a new input buffer for the current icw 00705 950 bnibuf subr bni,(x1) 951 952 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 953 * 954 * bnibuf 955 * 956 * this routine allocates a new input buffer 957 * for the current icw and sets the tally. 958 * 959 * upon entry: 960 * x1 - virtual tib address 961 * x2 - virtual sfcm address 962 * bibibp - ind word to sf.ib0/1 963 * bibicw - ind word to h.ric0/1 964 * 965 * returns: 966 * icw and bf.tly setup 967 * 968 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 969 00713 4 10 642 555 970 tsy a.b006-*,* (=ghibuf) get input buffer 00714 0 71 002 716 971 tra 2 error, no buffer 00715 0 71 007 724 972 tra bni030-* got buffer, continue 973 974 failed to get buffer, best we can 975 do now is to set exhaust bit in icw 00716 4 56 605 523 976 stz bibibp-*,* zero input buffer ptr 00717 0 41 605 524 977 ldx3 bibicw-* get icw addr 00720 0 07 636 556 978 lda a.b009-* (=bnispc) get addr of spare word 00721 0 47 616 537 979 ldq l.b008-* (=450000) get exhausted tally 00722 3 14 000 0 980 staq 0,3 set icw 00723 0 71 025 750 981 tra bniret-* better luck next time 982 00724 4 20 577 523 983 bni030 szn bibibp-*,* be sure no old buffer left 00725 0 74 002 727 984 tze 2 00726 985 die 9 986 00727 4 17 574 523 987 sta bibibp-*,* store addr in sfcm ib1/2 end of binary card 00000018 00730 2 07 005 0 988 lda sf.flg,2 synchronous line? 00731 0 31 601 532 989 cana l.b003-* =sffsyn 00732 0 64 004 736 990 tnz bni040-* yes, this buffer will go into an input chain 00733 3333 00 0 991 cx3a no, this is a "pseudo-buffer" 00734 0 37 600 534 992 ora l.b005-* (0,b.1) data starts in 2nd character 00735 0 71 004 741 993 tra bni050-* 994 00736 373 002 0 995 bni040 iacx3 bf.dta add in offset of start of data 00737 3333 00 0 996 cx3a 00740 0 37 601 541 997 ora l.b010-* (=0,b.0) get the character addressing flags 998 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 54 bnibuf - build a new input buffer for the current icw 00741 0 41 563 524 999 bni050 ldx3 bibicw-* get ptr to icw 00742 0 10 011 753 1000 tsy bldicw-* set it up 00743 2 07 005 0 1001 lda sf.flg,2 sync line? 00744 0 31 566 532 1002 cana l.b003-* =sffsyn 00745 0 74 003 750 1003 tze bniret-* no, don't bother with buffer size stuff 00746 2 47 016 0 1004 ldq sf.bsz,2 *get current buffer size 00747 0 10 034 1003 1005 tsy cbufsz-* *set sync prebuffer if needed 1006 00750 1007 bniret return bnibuf 1008 00752 1009 bnispc bss 1 space to store char on tally runout assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 55 bldicw - build a data icw 1011 ********************************************************************** 1012 * 1013 * bldicw: sets up a data icw for transfer to/from extended 1014 * memory. translates an old-style 32k icw into extended form. 1015 * 1016 * input: 1017 * a - character address (assumes buffer pte correct) 1018 * q - tally 1019 * x3 - address of icw 1020 * 1021 * output: 1022 * an icw of the following form: 1023 * word 0: 18-bit address 1024 * word 1: bit 0 = 1 1025 * bit 1 = 0 1026 * bits 2-4: character addressing code 1027 * bit 5 = 0 1028 * bits 6-17 = tally 1029 * 1030 ********************************************************************** 1031 00753 1032 bldicw subr bic,(inh,a,q) 00770 0 34 060 1050 1033 ana l.v005-* (o077777) get word part alone 00771 4 10 052 1043 1034 tsy a.v003-*,* (cvabs) convert to absolute 00772 3 17 000 0 1035 sta 0,3 put it in icw 00773 0 07 773 766 1036 lda bicsa-* get address back in a 00774 0 34 052 1046 1037 ana l.v003-* (o700000) get character code alone 00775 2337 02 0 1038 arl 2 move it to bits 2-4 00776 0 37 051 1047 1039 ora l.v004-* (o400000) get 18-bit address flag end of binary card 00000019 00777 0 37 770 767 1040 ora bicsq-* or in tally 01000 3 17 001 0 1041 sta 1,3 this is second word 01001 1042 return bldicw assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 56 cbufsz - change buffer size 1044 ********************************************************************** 1045 * 1046 * cbufsz - change buffer size in sfcm 1047 * 1048 * this subroutine sets up the preallocated 1049 * buffer chain queue for a given buffer size. 1050 * q -- new size 1051 * x1 -- tib address 1052 * 1053 * written for icw switching problem by 1054 * d. w. cousins on march 24,1981 1055 * 1056 *********************************************************************** 01003 1057 cbufsz subr cbu,(x1,x2,x3) 01017 1 03 030 0 1058 ldx2 t.sfcm,1 *load sfcm 01020 0 74 017 1037 1059 tze cburet-* *problem no sfcm 01021 7333 00 0 1060 cqa *set some indicators 01022 422 040 0 1061 icmpa 32 01023 0 75 003 1026 1062 tmi cbu010-* *not if less then 32 words 01024 0 27 020 1044 1063 cmpa l.v001-* *(=401)check for max 01025 0 75 002 1027 1064 tmi 2 *within range 01026 0 47 017 1045 1065 cbu010 ldq l.v002-* *(=400)set to max 01027 2 57 016 0 1066 stq sf.bsz,2 *ok store it 01030 4337 05 0 1067 qrs 5 *set up table index 01031 573 777 0 1068 iaq -1 * 01032 7333 00 0 1069 cqa 01033 4333 00 0 1070 cax3 01034 673 004 0 1071 ila 4 01035 4 17 004 1041 1072 sta a.v001-*,* *=pbfmax,3 set max buffer count 01036 4 10 004 1042 1073 tsy a.v002-*,* *=albchs 01037 1074 cburet return cbufsz 01041 3 04050 1 1075 a.v001 ind pbfmax,3 max buffer count for this pool 01042 0 04060 1 1076 a.v002 ind albchs allocated buffer check 01043 0 03000 3 1077 a.v003 ind cvabs 1078 01044 000401 0 1079 l.v001 oct 000401 max buffer + 1 in octal words 01045 000400 0 1080 l.v002 oct 000400 max in octal words for buffer 01046 700000 0 1081 l.v003 oct 700000 end of binary card 00000020 01047 400000 0 1082 l.v004 oct 400000 01050 077777 0 1083 l.v005 oct 077777 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 57 ghibuf - get hsla input buffer 01051 1085 ghibuf subr ghi 1086 1087 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1088 * 1089 * ghibuf 1090 * 1091 * allocates an hsla input buffer of the proper size 1092 * 1093 * upon entry: 1094 * x1 - virtual tib address 1095 * x2 - virtual sfcm address 1096 * 1097 * return 1: 1098 * no more buffers can/should be allocated 1099 * 1100 * return 2: 1101 * virtual buffer addr in x3, with size code and tally 1102 * set up if appropriate 1103 * absolute buffer address in a 1104 * buffer tally in q 1105 * 1106 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1107 01054 473 040 0 1108 ilq bufsiz buffer size for control rcv mode 01055 1 07 002 0 1109 lda t.flg2,1 get tib flags 01056 0 31 470 546 1110 cana l.b015-* control rcv mode? 01057 0 64 110 1167 1111 tnz ghi025-* yes 1112 01060 2 47 016 0 1113 ldq sf.bsz,2 get regular buffer size 01061 0 31 466 547 1114 cana l.b016-* (=tfmrcv) message rcv mode ? 01062 0 64 060 1142 1115 tnz ghi015-* yes, get size 01063 2 07 005 0 1116 lda sf.flg,2 synchronous line? 01064 0 31 446 532 1117 cana l.b003-* =sffsyn 01065 0 64 102 1167 1118 tnz ghi025-* yes, use full size 01066 1 07 002 0 1119 lda t.flg2,1 no, are we in a frame? 01067 2 47 017 0 1120 ldq sf.fbs,2 if so, use frame buffer size 01070 0 31 460 550 1121 cana l.b017-* =tffip 01071 0 64 007 1100 1122 tnz ghi010-* we are 01072 0 31 443 535 1123 cana l.b006-* =tfifc 01073 0 64 005 1100 1124 tnz ghi010-* likewise if input flow control 01074 2 47 016 0 1125 ldq sf.bsz,2 but if in blk_xfer, use intermediate size 01075 0 31 436 533 1126 cana l.b004-* =tffrmi 01076 0 64 002 1100 1127 tnz ghi010-* that's it 01077 0 47 432 531 1128 ldq l.b002-* (=minsiz) else use minimum size 01100 1129 ghi010 null here to allocate asynchronous pseudo-buffer 01100 0 67 431 531 1130 cmpq l.b002-* (=minsiz) is buffer nore than minimum size? 01101 0 74 002 1103 1131 tze 2 equal isn't larger 01102 0 65 023 1125 1132 tpl ghi012-* larger is 01103 0 07 441 544 1133 lda l.b013-* (tfabf0) use one of the permanent ones 01104 1 31 036 0 1134 cana t.flg3,1 first one available? assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 58 ghibuf - get hsla input buffer 01105 0 74 004 1111 1135 tze ghi011-* no, use second 01106 1 41 053 0 1136 ldx3 t.abf0,1 yes, get it 01107 1 62 036 0 1137 ersa t.flg3,1 turn flag off 01110 0 71 006 1116 1138 tra ghi01a-* 01111 0 07 434 545 1139 ghi011 lda l.b014-* tfabf1 01112 1 31 036 0 1140 cana t.flg3,1 is other one available? 01113 0 74 012 1125 1141 tze ghi012-* no, we'll have to allocate 01114 1 41 054 0 1142 ldx3 t.abf1,1 yes, get other permanent buffer 01115 1 62 036 0 1143 ersa t.flg3,1 mark it unavailable end of binary card 00000021 01116 3333 00 0 1144 ghi01a cx3a convert address to virtual 01117 0 17 077 1216 1145 sta ghiadr-* butr save it first 01120 4 10 432 552 1146 tsy a.b002-*,* setbpt 01121 4333 00 0 1147 cax3 back to x3 01122 3 47 000 0 1148 ldq 0,3 get size (in upper half) 01123 6337 10 0 1149 qrl 8 convert to chars in lower half 01124 0 71 012 1136 1150 tra ghi014-* 01125 1151 ghi012 null have to really allocate 01125 4 10 424 551 1152 tsy a.b001-*,* getbfh 01126 0 71 057 1205 1153 tra ghi040-* couldn't get it 01127 0 17 067 1216 1154 sta ghiadr-* hang on to absolute address (virtual is in x3) 01130 7333 00 0 1155 cqa we have to store size in first char 01131 0336 11 0 1156 als 9 01132 3 17 000 0 1157 sta 0,3 01133 3 56 001 0 1158 stz 1,3 get rid of supposed size code 01134 2 57 020 0 1159 stq sf.csz,2 keep it here, too 01135 4336 01 0 1160 qls 1 convert to characters 01136 0 07 060 1216 1161 ghi014 lda ghiadr-* get address back 01137 573 775 0 1162 iaq -3 size char. and ***two*** extra char. at end 01140 0 76 711 1051 1163 aos ghibuf-* for successful return 01141 0 71 042 1203 1164 tra ghiret-* done 1165 01142 1166 ghi015 null here for message receive mode 01142 2 20 020 0 1167 szn sf.mms,2 test max message size 01143 0 74 024 1167 1168 tze ghi025-* zero, ignore it 1169 01144 2 07 021 0 1170 lda sf.rms,2 get residual message size 01145 0 74 036 1203 1171 tze ghiret-* zero, don't want buffer 01146 0 75 035 1203 1172 tmi ghiret-* negative, don't want buffer 01147 773 006 0 1173 iaa 6 buffer overhead + round-up 01150 0337 01 0 1174 ars 1 convert to words 01151 0 17 044 1215 1175 sta ghitmp-* put in temporary 01152 0 67 043 1215 1176 cmpq ghitmp-* compare with buffer size 01153 0 75 002 1155 1177 tmi ghi020-* buffer size is smaller, use it 01154 6333 00 0 1178 caq use message size instead 1179 01155 4 10 301 1456 1180 ghi020 tsy a.z007-*,* (=getbfh) get a buffer 01156 0 71 027 1205 1181 tra ghi040-* failed, make error return 01157 0 17 037 1216 1182 sta ghiadr-* succeeded, save absolute address 1183 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 59 ghibuf - get hsla input buffer 01160 4336 01 0 1184 qls 1 convert buffer size to characters 01161 573 773 0 1185 iaq -5 subtract overhead 01162 7333 00 0 1186 cqa move to a 01163 322 777 0 1187 iera -1 negate a 01164 773 001 0 1188 iaa 1 end of binary card 00000022 01165 2 16 021 0 1189 asa sf.rms,2 decrement residual message size 01166 0 71 004 1172 1190 tra ghi030-* done 1191 01167 4 10 267 1456 1192 ghi025 tsy a.z007-*,* (=getbfh) get a buffer 01170 0 71 015 1205 1193 tra ghi040-* failed, make error return 01171 0 17 025 1216 1194 sta ghiadr-* save absolute address 1195 01172 0 76 657 1051 1196 ghi030 aos ghibuf-* setup normal return 01173 3 56 000 0 1197 stz bf.nxt,3 init the next ptr 01174 3 07 001 0 1198 lda bf.siz,3 get buffer size code 01175 2337 17 0 1199 arl 15 right adjust 01176 0336 06 0 1200 als bufshf+1 convert to chars 01177 773 073 0 1201 iaa hbfnch one buffer, less overhead 01200 3 72 001 0 1202 orsa bf.tly,3 put tally in buffer 01201 6333 00 0 1203 caq save tally in q 01202 0 07 014 1216 1204 lda ghiadr-* get absolute address back 1205 01203 1206 ghiret return ghibuf 1207 01205 1208 ghi040 null allocation failed, meter it 01205 1209 cmeter mincs,m.inaf,l.z017-* 01214 0 71 767 1203 1210 tra ghiret-* 1211 01215 1212 ghitmp bss 1 01216 1213 ghiadr bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 60 makcct - make cct based on modes 1216 ************************************************************************ 1217 * 1218 * subroutine to compute a cct for an ascii line. 1219 * all modes (crecho,lfecho,tabecho,echoplex, etc.) 1220 * are taken into account to compute the proper cct. 1221 * 1222 * called with: 1223 * x1 - virtual tib address 1224 * 1225 ************************************************************************ 1226 01217 1227 makcct subr mct,(x1,x2,x3,a,q) 1228 1229 * first, get memory for cct 1230 end of binary card 00000023 01241 473 100 0 1231 ilq 64 normal ones are 64 words 01242 0 56 157 1421 1232 stz mctsbx-* initialize indicator 01243 1 07 002 0 1233 lda t.flg2,1 01244 0 31 213 1457 1234 cana l.z001-* =tffrmi, check for blk_xfer mode 01245 0 74 010 1255 1235 tze mct060-* no 01246 1 07 040 0 1236 lda t.frmc,1 any framing chars? 01247 0 74 006 1255 1237 tze mct060-* no 01250 2337 11 0 1238 arl 9 is there a start char? 01251 0 64 003 1254 1239 tnz mct059-* yes 01252 0 76 147 1421 1240 aos mctsbx-* indicate single cct with block xfer 01253 0 71 002 1255 1241 tra mct060-* 01254 573 100 0 1242 mct059 iaq 64 must use double size 01255 0 57 142 1417 1243 mct060 stq mctsz-* remember size 01256 4 10 172 1450 1244 tsy a.z001-*,* =getmem 01257 1245 die 9 01260 0 50 140 1420 1246 stx3 mctad-* save address 1247 1248 * fill in default for all character positions. 1249 * this is: 1250 * ct.ncs for most modes 1251 * ct.mrk for echoplex & breakall 1252 01261 0 47 177 1460 1253 ldq l.z002-* =vfd 9/ct.ncs,9/ct.ncs 01262 0 20 137 1421 1254 szn mctsbx-* single cct with block xfer? 01263 0 64 011 1274 1255 tnz mct005-* yes, ignore other modes 01264 1 07 001 0 1256 lda t.flg,1 01265 0 31 174 1461 1257 cana l.z003-* =tfecpx, in echoplex mode? 01266 0 74 002 1270 1258 tze 2 no 01267 0 47 173 1462 1259 ldq l.z004-* =vfd 9/ct.mrk,9/ct.mrk use marker for echoplex 01270 1 07 036 0 1260 lda t.flg3,1 01271 0 31 172 1463 1261 cana l.z005-* =tfbral, in breakall mode 01272 0 74 002 1274 1262 tze 2 no 01273 0 47 167 1462 1263 ldq l.z004-* =vfd 9/ct.mrk,9/ct.mrk marker on all characters 01274 673 100 0 1264 mct005 ila 64 store 64 copies assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 61 makcct - make cct based on modes 01275 3 57 000 0 1265 mct010 stq 0,3 01276 373 001 0 1266 iacx3 1 01277 773 777 0 1267 iaa -1 01300 0 64 775 1275 1268 tnz mct010-* 1269 1270 * if double cct, second half is filled with 1271 * ct.ncs + ct.tb1 (to stay in second cct when entered) 1272 01301 0 07 116 1417 1273 lda mctsz-* get size 01302 422 100 0 1274 icmpa 64 01303 0 74 007 1312 1275 tze mct020-* standard size 01304 0 47 161 1465 1276 ldq l.z007-* =vfd 9/ct.ncs+ct.tb1,9/ct.ncs+ct.tb1 01305 673 100 0 1277 ila 64 store 64 copies 01306 3 57 000 0 1278 mct030 stq 0,3 01307 373 001 0 1279 iacx3 1 end of binary card 00000024 01310 773 777 0 1280 iaa -1 01311 0 64 775 1306 1281 tnz mct030-* 1282 1283 * fill in special character codes 1284 01312 0 41 106 1420 1285 mct020 ldx3 mctad-* cct address 01313 0 20 106 1421 1286 szn mctsbx-* single cct with block xfer? 01314 0 64 037 1353 1287 tnz mct055-* yes, skip this stuff 01315 1 07 036 0 1288 lda t.flg3,1 check for breakall mode 01316 0 31 145 1463 1289 cana l.z005-* =tfbral 01317 0 64 023 1342 1290 tnz mct050-* skip for breakall mode, 01320 673 012 0 1291 ila nl break on newline 01321 473 007 0 1292 ilq ct.mrk 01322 0 10 100 1422 1293 tsy mctstr-* 01323 673 014 0 1294 ila ff break on formfeed 01324 0 10 076 1422 1295 tsy mctstr-* 01325 673 003 0 1296 ila etx break on etx 01326 0 10 074 1422 1297 tsy mctstr-* 01327 1 07 001 0 1298 lda t.flg,1 break on cr, if lfecho 01330 0 31 137 1467 1299 cana l.z009-* =tflfec 01331 0 74 003 1334 1300 tze 3 01332 673 015 0 1301 ila cr 01333 0 10 067 1422 1302 tsy mctstr-* 01334 473 007 0 1303 ilq ct.mrk 01335 1 07 001 0 1304 lda t.flg,1 marker on tab, if tabecho 01336 0 31 130 1466 1305 cana l.z008-* =tftbec 01337 0 74 003 1342 1306 tze 3 01340 673 011 0 1307 ila tab 01341 0 10 061 1422 1308 tsy mctstr-* 1309 1310 * fill in codes for blk_xfer mode 1311 01342 1 07 002 0 1312 mct050 lda t.flg2,1 01343 0 31 114 1457 1313 cana l.z001-* =tffrmi assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 62 makcct - make cct based on modes 01344 0 74 014 1360 1314 tze mct040-* 01345 1 07 040 0 1315 lda t.frmc,1 get framing chars 01346 0 74 012 1360 1316 tze mct040-* none, skip 01347 473 100 0 1317 ilq ct.tb1 switch to second cct 01350 0337 11 0 1318 ars 9 start char 01351 0 10 051 1422 1319 tsy mctstr-* 01352 373 100 0 1320 iacx3 64 switch to second cct 01353 1 07 040 0 1321 mct055 lda t.frmc,1 get framing chars 01354 0 34 114 1470 1322 ana l.z010-* =o777 01355 473 007 0 1323 ilq ct.mrk 01356 0 10 044 1422 1324 tsy mctstr-* end of binary card 00000025 01357 0 41 041 1420 1325 ldx3 mctad-* get pointer to first cct back 01360 1 07 002 0 1326 mct040 lda t.flg2,1 check for input flow control 01361 0 31 103 1464 1327 cana l.z006-* =tfifc 01362 0 74 007 1371 1328 tze mct080-* 01363 1 07 045 0 1329 lda t.ifch,1 yes 01364 2337 11 0 1330 arl 9 get suspend char 01365 0 74 003 1370 1331 tze mct070-* never mind, there is none 01366 473 007 0 1332 ilq ct.mrk set marker for it 01367 0 10 033 1422 1333 tsy mctstr-* 01370 1 07 002 0 1334 mct070 lda t.flg2,1 recover flag word 01371 0 31 104 1475 1335 mct080 cana l.z015-* (=tfofc) check output flow control 01372 0 74 013 1405 1336 tze mct100-* 01373 0 31 103 1476 1337 cana l.z016-* (=tfblak) yes, block acknowledge also? 01374 0 64 005 1401 1338 tnz mct090-* yes, marker on ack char only 01375 1 07 046 0 1339 lda t.ofch,1 otherwise for both characters 01376 2337 11 0 1340 arl 9 get suspend char 01377 473 007 0 1341 ilq ct.mrk marker in cct 01400 0 10 022 1422 1342 tsy mctstr-* 01401 1 07 046 0 1343 mct090 lda t.ofch,1 nopw get resume char (or ack) 01402 0 34 066 1470 1344 ana l.z010-* =o777 01403 473 007 0 1345 ilq ct.mrk 01404 0 10 016 1422 1346 tsy mctstr-* 1347 1348 * cct now ready, so store it 1349 01405 0 41 013 1420 1350 mct100 ldx3 mctad-* its address 01406 0 47 011 1417 1351 ldq mctsz-* its size 01407 0 10 071 1500 1352 tsy shrcct-* 01410 4 10 041 1451 1353 tsy a.z002-*,* and release temp memory 1354 01411 0 20 010 1421 1355 szn mctsbx-* single cct with block xfer? 01412 0 74 003 1415 1356 tze mctret-* no 01413 0 07 061 1474 1357 lda l.z014-* (=tffip) get frame in progress bit 01414 1 72 002 0 1358 orsa t.flg2,1 always on for this cct 1359 01415 1360 mctret return makcct 1361 01417 1362 mctsz bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 63 makcct - make cct based on modes 01420 1363 mctad bss 1 01421 1364 mctsbx bss 1 1365 1366 1367 * subroutine to store 1 cct character 1368 01422 1369 mctstr subr cst,(a,q) end of binary card 00000026 01433 0337 01 0 1370 ars 1 get word offset 01434 0 50 013 1447 1371 stx3 csttmp-* cct address 01435 0 06 012 1447 1372 ada csttmp-* word address 01436 0 37 033 1471 1373 ora l.z011-* =0,b.0 - make character addressing 01437 0332 00 0 1374 cax2 01440 0 07 771 1431 1375 lda cstsa-* get character again 01441 022 001 0 1376 iana 1 isolate last bit 01442 0 74 002 1444 1377 tze 2 even 01443 273 300 0 1378 iacx2 0,b.1 go to odd address 01444 2 57 200 0 1379 stq 0,2,b.0 update cct 01445 1380 return mctstr 1381 01447 1382 csttmp bss 1 1383 01450 0 25000 3 1384 a.z001 ind getmem 01451 0 21000 3 1385 a.z002 ind fremem 01452 0 00676 0 1386 a.z003 ind .crcct 01453 0 23000 3 1387 a.z004 ind getbuf 01454 0 17000 3 1388 a.z005 ind frebuf 01455 0 01217 1 1389 a.z006 ind makcct 01456 0 22000 3 1390 a.z007 ind getbfh 1391 01457 040000 0 1392 l.z001 vfd o18/tffrmi 01460 000000 0 1393 l.z002 vfd 9/ct.ncs,9/ct.ncs 01461 200000 0 1394 l.z003 vfd o18/tfecpx 01462 007007 0 1395 l.z004 vfd 9/ct.mrk,9/ct.mrk 01463 000020 0 1396 l.z005 vfd o18/tfbral 01464 000040 0 1397 l.z006 vfd o18/tfifc 01465 100100 0 1398 l.z007 vfd 9/ct.ncs+ct.tb1,9/ct.ncs+ct.tb1 01466 004000 0 1399 l.z008 vfd o18/tftbec 01467 001000 0 1400 l.z009 vfd o18/tflfec 01470 000777 0 1401 l.z010 oct 777 01471 2 00000 0 1402 l.z011 ind 0,b.0 01472 000200 0 1403 l.z012 vfd o18/sffdct 01473 000020 0 1404 l.z013 vfd o18/sffsct 01474 100000 0 1405 l.z014 vfd o18/tffip end of binary card 00000027 01475 000100 0 1406 l.z015 vfd o18/tfofc 01476 004000 0 1407 l.z016 vfd o18/tfblak 01477 000001 0 1408 l.z017 dec 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 64 shrcct - subroutine to share and store ccts 1411 ************************************************************************ 1412 * 1413 * subroutine to store and share ccts 1414 * 1415 * it is called with: 1416 * x3 -> cct 1417 * q = size (0 for no new cct) 1418 * 1419 * the channel is update to use this cct, freeing the old cct 1420 * if necessary. the new cct is shared with an existing cct if possible. 1421 * 1422 ************************************************************************ 1423 01500 1424 shrcct subr sct,(a,q,x1,x2,x3) 1425 1426 * first, find the length of the cct. if the length is given 1427 * as 64, check to see if a short cct can be used 1428 01522 0 57 235 1757 1429 stq sctsz-* size as given 01523 7333 00 0 1430 cqa 01524 0 74 044 1570 1431 tze sct010-* no new cct 01525 422 100 0 1432 icmpa 64 single cct? 01526 0 64 012 1540 1433 tnz sct020-* no, cant use short cct 01527 773 760 0 1434 iaa -16 check 64-16 words 01530 0 47 730 1460 1435 ldq l.z002-* =vfd 9/ct.ncs,9/ct.ncs 01531 3 67 020 0 1436 sct030 cmpq 16,3 check all cct words 01532 0 64 006 1540 1437 tnz sct020-* cant use short cct 01533 373 001 0 1438 iacx3 1 01534 773 777 0 1439 iaa -1 01535 0 64 774 1531 1440 tnz sct030-* loop 01536 673 020 0 1441 ila 16 test passes - use short cct 01537 0 17 220 1757 1442 sta sctsz-* 1443 1444 * now try to locate an existing cct that matches the new one 1445 01540 0 56 221 1761 1446 sct020 stz sctnds-* pointer to new descriptor 01541 4 43 711 1452 1447 ldx1 a.z003-*,* addr of first descriptor 01542 0 74 026 1570 1448 tze sct010-* none, no existing cct to share 01543 0 07 214 1757 1449 sct060 lda sctsz-* size of new cct 01544 1 27 003 0 1450 cmpa cct.sz,1 match against existing cct 01545 0 64 021 1566 1451 tnz sct040-* sizes dont match, skip word check 01546 0 03 753 1521 1452 ldx2 sctsx3-* addr of callers cct end of binary card 00000028 01547 1 41 002 0 1453 ldx3 cct.ad,1 address of existing cct 01550 2 47 000 0 1454 sct050 ldq 0,2 word to compare 01551 3 67 000 0 1455 cmpq 0,3 01552 0 64 014 1566 1456 tnz sct040-* no match 01553 273 001 0 1457 iacx2 1 01554 373 001 0 1458 iacx3 1 01555 773 777 0 1459 iaa -1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 65 shrcct - subroutine to share and store ccts 01556 0 64 772 1550 1460 tnz sct050-* 01557 0 53 202 1761 1461 stx1 sctnds-* found matching cct in use 01560 1 07 002 0 1462 lda cct.ad,1 address of good cct 01561 0 43 736 1517 1463 ldx1 sctsx1-* get tib address 01562 1 03 030 0 1464 ldx2 t.sfcm,1 01563 2 27 013 0 1465 cmpa sf.cct,2 is this the cct already in use? 01564 0 74 171 1755 1466 tze sctret-* yes, all done 01565 0 71 003 1570 1467 tra sct010-* 01566 1 43 000 0 1468 sct040 ldx1 cct.nx,1 step to next cct descriptor 01567 0 64 754 1543 1469 tnz sct060-* 1470 1471 * locate old cct descriptor and decrement usage 1472 01570 0 56 170 1760 1473 sct010 stz sctods-* pointer to old descriptor 01571 0 43 726 1517 1474 ldx1 sctsx1-* get tib address 01572 1 03 030 0 1475 ldx2 t.sfcm,1 01573 2 07 005 0 1476 lda sf.flg,2 01574 0 31 676 1472 1477 cana l.z012-* =sffdct, useing dynamic cct? 01575 0 74 012 1607 1478 tze sct070-* no old cct to locate 01576 4 43 654 1452 1479 ldx1 a.z003-*,* =.crcct 01577 0 64 002 1601 1480 sct090 tnz 2 01600 1481 die 6 cant find cct descriptor 01601 1 41 002 0 1482 ldx3 cct.ad,1 cct pointed to by this descrip 01602 2 61 013 0 1483 cmpx3 sf.cct,2 this channels cct? 01603 0 74 003 1606 1484 tze sct080-* yes 01604 1 43 000 0 1485 ldx1 cct.nx,1 keep looking 01605 0 71 772 1577 1486 tra sct090-* 01606 0 53 152 1760 1487 sct080 stx1 sctods-* save address 1488 1489 * setup descriptor for new cct if needed 1490 01607 0 20 150 1757 1491 sct070 szn sctsz-* is there new cct? 01610 0 64 004 1614 1492 tnz sct160-* yes 01611 673 000 0 1493 ila 0 addr of no cct 01612 473 000 0 1494 ilq 0 not short flag 01613 0 71 065 1700 1495 tra sct110-* 01614 0 43 145 1761 1496 sct160 ldx1 sctnds-* new descriptor address 01615 0 64 054 1671 1497 tnz sct170-* all setup already end of binary card 00000029 01616 473 005 0 1498 ilq cct.ln allocate space for new descriptor 01617 4 10 631 1450 1499 tsy a.z001-*,* =getmem 01620 1500 die 9 01621 0 50 140 1761 1501 stx3 sctnds-* 01622 0 43 137 1761 1502 ldx1 sctnds-* 01623 4 41 627 1452 1503 ldx3 a.z003-*,* =.crcct, addr of first cct desc 01624 0 74 002 1626 1504 tze 2 new one is only desc 01625 3 53 001 0 1505 stx1 cct.pr,3 make second desc point at first 01626 4 53 624 1452 1506 stx1 a.z003-*,* new desc to head of chain 01627 1 50 000 0 1507 stx3 cct.nx,1 make first point to second 01630 1 56 001 0 1508 stz cct.pr,1 no previous pointer assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 66 shrcct - subroutine to share and store ccts 1509 1510 * allocate memory for new cct and copy it. memory must be 64-word aligned 1511 01631 0 47 665 1516 1512 ldq sctsq-* origional size 01632 573 040 0 1513 iaq 32 allocate extra 32 words to force alignment 01633 4 10 620 1453 1514 tsy a.z004-*,* =getbuf 01634 1515 die 9 01635 3333 00 0 1516 cx3a allocate address? 01636 222 077 0 1517 icana =o77 on 64-word boundry? 01637 0 74 004 1643 1518 tze sct120-* yes 01640 773 040 0 1519 iaa 32 this will get to 64-word boundry 01641 1 17 002 0 1520 sta cct.ad,1 for the real cct 01642 0 71 003 1645 1521 tra sct130-* 01643 1 17 002 0 1522 sct120 sta cct.ad,1 allocated address is aligned ok 01644 0 40 652 1516 1523 adcx3 sctsq-* get addr of 32 words at end to free 01645 473 040 0 1524 sct130 ilq 32 free the extra 32 words 01646 4 10 606 1454 1525 tsy a.z005-*,* =frebuf 01647 0 07 110 1757 1526 lda sctsz-* set size 01650 1 17 003 0 1527 sta cct.sz,1 01651 422 020 0 1528 icmpa 16 is this 16 word cct 01652 0 64 005 1657 1529 tnz sct140-* no 01653 1 41 002 0 1530 ldx3 cct.ad,1 can free last 32 words of 64 word buffer 01654 373 040 0 1531 iacx3 32 01655 473 040 0 1532 ilq 32 01656 4 10 576 1454 1533 tsy a.z005-*,* =frebuf 01657 1 03 002 0 1534 sct140 ldx2 cct.ad,1 setup to copy cct 01660 0 41 641 1521 1535 ldx3 sctsx3-* 01661 1 07 003 0 1536 lda cct.sz,1 01662 3 47 000 0 1537 sct150 ldq 0,3 copy loop 01663 2 57 000 0 1538 stq 0,2 01664 273 001 0 1539 iacx2 1 end of binary card 00000030 01665 373 001 0 1540 iacx3 1 01666 773 777 0 1541 iaa -1 01667 0 64 773 1662 1542 tnz sct150-* 01670 1 56 004 0 1543 stz cct.rc,1 zero reference count 01671 1 76 004 0 1544 sct170 aos cct.rc,1 new user of this cct 01672 473 000 0 1545 ilq 0 flag meaning not short cct 01673 1 07 003 0 1546 lda cct.sz,1 01674 422 020 0 1547 icmpa 16 01675 0 64 002 1677 1548 tnz 2 01676 473 001 0 1549 ilq 1 it is short cct 01677 1 07 002 0 1550 lda cct.ad,1 address of cct 1551 1552 * make channel use the new cct (it maybe 0) 1553 * a -> cct, q = short cct switch 1554 * a descriptor cannot be referenced here (there may not be one) 1555 01700 0 43 617 1517 1556 sct110 ldx1 sctsx1-* tib address 01701 1 03 030 0 1557 ldx2 t.sfcm,1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 67 shrcct - subroutine to share and store ccts 01702 2 17 013 0 1558 sta sf.cct,2 record cct address 01703 0 07 567 1472 1559 lda l.z012-* =sffdct, dynamic cct bit 01704 2 20 013 0 1560 szn sf.cct,2 is there cct 01705 0 64 002 1707 1561 tnz 2 01706 673 000 0 1562 ila 0 reset bit 01707 2 35 005 0 1563 era sf.flg,2 get bit into word 01710 0 34 562 1472 1564 ana l.z012-* =sffdct 01711 2 62 005 0 1565 ersa sf.flg,2 01712 0 07 561 1473 1566 lda l.z013-* short cct bit 01713 573 000 0 1567 iaq 0 test flag, is it short? 01714 0 64 002 1716 1568 tnz 2 01715 673 000 0 1569 ila 0 not short 01716 2 35 005 0 1570 era sf.flg,2 store in flag word 01717 0 34 554 1473 1571 ana l.z013-* =sffsct 01720 2 62 005 0 1572 ersa sf.flg,2 01721 2 41 000 0 1573 ldx3 sf.hcm,2 update hardware comm region too 01722 2 07 013 0 1574 lda sf.cct,2 01723 0336 03 0 1575 als 3 01724 573 000 0 1576 iaq 0 short cct? 01725 0 74 002 1727 1577 tze 2 no 01726 122 100 0 1578 iora =o100 set short flag 01727 3 17 010 0 1579 sta h.baw,3 this effects he change officially 1580 1581 * all done with old cct for this line, free it if last user 1582 01730 0 43 030 1760 1583 ldx1 sctods-* old descriptor address 01731 0 74 024 1755 1584 tze sctret-* no old one 01732 673 777 0 1585 ila -1 decrement usage count 01733 1 16 004 0 1586 asa cct.rc,1 end of binary card 00000031 01734 0 64 021 1755 1587 tnz sctret-* no 01735 1 47 003 0 1588 ldq cct.sz,1 free the cct first 01736 1 41 002 0 1589 ldx3 cct.ad,1 01737 4 10 515 1454 1590 tsy a.z005-*,* =frebuf 01740 1 03 001 0 1591 ldx2 cct.pr,1 unthread descriptor 01741 1 41 000 0 1592 ldx3 cct.nx,1 01742 0 74 002 1744 1593 tze 2 01743 3 13 001 0 1594 stx2 cct.pr,3 make next point to previous 01744 273 000 0 1595 iacx2 0 is there a previous? 01745 0 74 003 1750 1596 tze 3 no 01746 2 50 000 0 1597 stx3 cct.nx,2 make prev point at next 01747 0 71 002 1751 1598 tra 2 01750 4 50 502 1452 1599 stx3 a.z003-*,* =.crcct, make next first 01751 2332 00 0 1600 cx1a free descriptor 01752 4333 00 0 1601 cax3 01753 473 005 0 1602 ilq cct.ln 01754 4 10 475 1451 1603 tsy a.z002-*,* =fremem 1604 01755 1605 sctret return shrcct 1606 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 68 shrcct - subroutine to share and store ccts 01757 1607 sctsz bss 1 size of cct 01760 1608 sctods bss 1 old descriptor address 01761 1609 sctnds bss 1 new descriptor address assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 69 setcct - implements the setcct opblock 1611 1612 ************************************************************************ 1613 * 1614 * subroutine use by the interpreter when it encounters a setcct opblock 1615 * 1616 * x1 - virtual tib address 1617 * a = arg to opblock 1618 * 1619 ************************************************************************ 1620 01762 1621 setcct subr cct,(a,q,x2,x3) 1622 02001 1 03 030 0 1623 ldx2 t.sfcm,1 02002 2 41 000 0 1624 ldx3 sf.hcm,2 1625 02003 422 000 0 1626 icmpa scc.dl delete cct? 02004 0 74 013 2017 1627 tze cct010-* 02005 422 001 0 1628 icmpa scc.df set default cct? end of binary card 00000032 02006 0 74 014 2022 1629 tze cct020-* 02007 422 002 0 1630 icmpa scc.bs set to base of cct? 02010 0 74 014 2024 1631 tze cct030-* 1632 1633 * argument is real cct address 1634 02011 473 000 0 1635 ilq 0 release dynamic cct, if any 02012 0 10 466 1500 1636 tsy shrcct-* 02013 2 17 013 0 1637 sta sf.cct,2 02014 0336 03 0 1638 als 3 align for baw 02015 3 17 010 0 1639 sta h.baw,3 02016 0 71 015 2033 1640 tra cctret-* 1641 1642 * process various coded requests 1643 02017 473 000 0 1644 cct010 ilq 0 delete current cct 02020 0 10 460 1500 1645 tsy shrcct-* 02021 0 71 012 2033 1646 tra cctret-* 02022 4 10 433 1455 1647 cct020 tsy a.z006-*,* build cct from modes 02023 0 71 010 2033 1648 tra cctret-* 02024 2 47 013 0 1649 cct030 ldq sf.cct,2 set to base cct 02025 4336 03 0 1650 qls 3 02026 2 07 005 0 1651 lda sf.flg,2 get flags 02027 0 31 444 1473 1652 cana l.z013-* =sffsct, short cct? 02030 0 74 002 2032 1653 tze 2 no 02031 573 100 0 1654 iaq =o100 short cct bit for h.baw 02032 3 57 010 0 1655 stq h.baw,3 1656 02033 1657 cctret return setcct assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 70 hbreak - entry point to change break list 1659 * hbreak subr brk,(x1,x3) 1660 1661 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1662 * 1663 * hbreak 1664 * 1665 * entry to change the break list. causes 1666 * hsla_man to build a new cct for the line. 1667 * 1668 * upon entry: 1669 * x1 - virtual tib address 1670 * x3 - points to change break command data 1671 * 1672 * returns: 1673 * 1674 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1675 1676 1677 * well that is all for now 1678 1679 * return hbreak assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 71 hgeti - entry to collect input from current buffer 02035 1681 hgeti subr hgi,(x2,x3) 1682 1683 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1684 * 1685 * hgeti 1686 * 1687 * obtains a ptr to the unscanned portion of the current input buffer 1688 * (if any) 1689 * and the number of unscanned characters in the buffer. 1690 * 1691 * upon entry: 1692 * x1 - virtual tib address 1693 * x3 - points to 2 words (returned) 1694 * 1695 * returns: 1696 * x3 -> 1st: virtual ptr to first unscanned character of buffer 1697 * 2nd: tally 1698 * buffer page table entry set up 1699 * 1700 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1701 02046 1 03 030 0 1702 ldx2 t.sfcm,1 get virtual sfcm addr 02047 0 10 047 2116 1703 tsy gettly-* get current buffer addr & tally 02050 773 000 0 1704 iaa 0 is there a buffer at all? 02051 0 74 036 2107 1705 tze hgi020-* no, done 02052 2 20 021 0 1706 szn sf.nic,2 any scanning done in this buffer? 02053 0 74 034 2107 1707 tze hgi020-* no, use as is 02054 0 17 040 2114 1708 sta hgitly-* save buffer tally temporarily end of binary card 00000033 02055 2 61 021 0 1709 cmpx3 sf.nic,2 scan pointer at beginning? 02056 0 74 027 2105 1710 tze hgi010-* yes, nothing new 02057 3333 00 0 1711 cx3a convert current buffer pointer to word addr 02060 0 34 135 2215 1712 ana l.r007-* =o077777 02061 0 17 034 2115 1713 sta hgibp-* save 02062 2 07 021 0 1714 lda sf.nic,2 get scan pointer 02063 0 34 132 2215 1715 ana l.r007-* (=o077777) convert to word address 02064 0 26 031 2115 1716 sba hgibp-* number of words already scanned 02065 6333 00 0 1717 caq 02066 4336 01 0 1718 qls 1 convert to characters 02067 3333 00 0 1719 cx3a started at odd character? 02070 0 31 126 2216 1720 cana l.r008-* =o100000 02071 0 74 002 2073 1721 tze 2 no 02072 573 777 0 1722 iaq -1 yes, one character less 02073 2 07 021 0 1723 lda sf.nic,2 stopped at odd character? 02074 0 31 122 2216 1724 cana l.r008-* =o100000 02075 0 74 002 2077 1725 tze 2 no 02076 573 001 0 1726 iaq 1 yes, one character more 02077 2 41 021 0 1727 ldx3 sf.nic,2 point to first unscanned char 02100 0 07 014 2114 1728 lda hgitly-* get original tally 02101 0 57 013 2114 1729 stq hgitly-* this is number already scanned assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 72 hgeti - entry to collect input from current buffer 02102 0 26 012 2114 1730 sba hgitly-* result is number remaining 02103 0 74 002 2105 1731 tze hgi010-* none 02104 0 65 003 2107 1732 tpl hgi020-* negative would mean none 02105 673 000 0 1733 hgi010 ila 0 return zero tally 02106 4333 00 0 1734 cax3 and zero buffer address 02107 4 50 736 2045 1735 hgi020 stx3 hgisx3-*,* return buffer addr 02110 0 41 735 2045 1736 ldx3 hgisx3-* restore x3 02111 3 17 001 0 1737 sta 1,3 return tally 1738 02112 1739 return hgeti 1740 02114 1741 hgitly bss 1 02115 1742 hgibp bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 73 gettly - get the addr and tally of the current input buff 02116 1744 gettly subr gtl,(x2,inh) end of binary card 00000034 1745 1746 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1747 * 1748 * gettly 1749 * 1750 * computes the tally of, i.e. the number of chars in, 1751 * the current input buffer. if the buffer is active 1752 * (icw active), the tally is given by the difference 1753 * between the max buffer tally and the icw tally. 1754 * if not active, the tally is given by the tally 1755 * field of the buffer. 1756 * 1757 * upon entry: 1758 * x1 - virtual tib address 1759 * 1760 * returns: 1761 * x3 - points to first char. current buffer (or zero if none) 1762 * a - contains buffer tally (or zero if none) 1763 * 1764 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1765 02130 1 03 030 0 1766 ldx2 t.sfcm,1 get virtual sfcm address 02131 2 07 005 0 1767 lda sf.flg,2 get sfcm flags 02132 2 47 006 0 1768 ldq sf.ib0,2 get primary buffer addr 02133 222 002 0 1769 icana sffcii alt buffer in use 02134 0 74 002 2136 1770 tze 2 no 02135 2 47 007 0 1771 ldq sf.ib1,2 get alt buffer addr 1772 02136 573 000 0 1773 iaq 0 do we have a buffer ? 02137 0 64 004 2143 1774 tnz gtl010-* yes, continue 02140 673 000 0 1775 ila 0 return zero tally 02141 4333 00 0 1776 cax3 return zero buffer addr 02142 0 71 041 2203 1777 tra gtlret-* 1778 02143 2 41 000 0 1779 gtl010 ldx3 sf.hcm,2 get hwcm addr 02144 373 000 0 1780 iacx3 h.ric0 get primary rcv icw addr 02145 222 002 0 1781 icana sffcii alt icw active ? 02146 0 74 002 2150 1782 tze 2 no 02147 373 002 0 1783 iacx3 h.ric1-h.ric0 get alt rcv icw addr 1784 02150 7333 00 0 1785 cqa move buffer addr to a 02151 4 10 035 2206 1786 tsy a.r001-*,* setbpt 02152 3 47 001 0 1787 ldq 1,3 get icw tally 02153 4333 00 0 1788 cax3 move (virtual) buffer addr to x3 02154 2 07 005 0 1789 lda sf.flg,2 synchronous line? 02155 0 31 035 2212 1790 cana l.r004-* =sffsyn 02156 0 64 010 2166 1791 tnz gtl020-* yes, regular buffer 02157 3333 00 0 1792 cx3a no, point to second char. of block assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 74 gettly - get the addr and tally of the current input buff 02160 0 06 034 2214 1793 ada l.r006-* 0,b.1 02161 4333 00 0 1794 cax3 02162 3 07 377 0 1795 lda -1,3,b.1 pick up size from first char. 02163 0336 01 0 1796 als 1 convert to chars (allow for ***two*** at end) 02164 773 775 0 1797 iaa -3 a now contains max. tally 02165 0 71 010 2175 1798 tra gtl030-* 1799 02166 1800 gtl020 null 02166 3 07 001 0 1801 lda bf.tly,3 get buffer tally word 02167 0 34 020 2207 1802 ana l.r001-* (=buftmk) leave only tally 02170 0 17 015 2205 1803 sta gtltmp-* hang on to max. tally 02171 3333 00 0 1804 cx3a update pointer to first data char. 02172 0 06 021 2213 1805 ada l.r005-* =bf.dta,b.0 end of binary card 00000035 02173 4333 00 0 1806 cax3 back to x3 02174 0 07 011 2205 1807 lda gtltmp-* restore tally 1808 02175 1809 gtl030 null 02175 4336 05 0 1810 qls 5 get rid of character addressing bits 02176 6337 05 0 1811 qrl 5 02177 0 67 011 2210 1812 cmpq l.r002-* (=010000) icw tally exhausted ? 02200 0 74 003 2203 1813 tze gtlret-* yes, done 1814 02201 0 57 004 2205 1815 stq gtltmp-* put icw tally in temp 02202 0 26 003 2205 1816 sba gtltmp-* subtract from max buffer tally 1817 02203 1818 gtlret return gettly 1819 02205 1820 gtltmp bss 1 1821 02206 0 34000 3 1822 a.r001 ind setbpt 1823 02207 000777 0 1824 l.r001 vfd 18/buftmk 02210 010000 0 1825 l.r002 oct 010000 02211 777000 0 1826 l.r003 vfd o18/777000 02212 010000 0 1827 l.r004 vfd 18/sffsyn 02213 2 00002 0 1828 l.r005 zero bf.dta,b.0 02214 3 00000 0 1829 l.r006 zero 0,b.1 02215 077777 0 1830 l.r007 oct 077777 02216 100000 0 1831 l.r008 oct 100000 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 75 hcfg - entry point to change configuration of channel 02217 1833 hcfg subr cfg,(x1,x2,x3) 1834 1835 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1836 * 1837 * hcfg 1838 * 1839 * entry to change to the configuration of the channel 1840 * the current config pcw (stored in the sfcm at sf.cfg) is 1841 * is modified according to the sub-op's in the config list 1842 * and a pcw type 2 is issued, the new current config pcw 1843 * is stored in the sfcm. 1844 * 1845 * upon entry: 1846 * x1 - virtual tib address 1847 * x2 - points to first config sub-op 1848 * 1849 * returns: 1850 * x2 - points to opblock after sub-ops 1851 * 1852 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1853 02233 1 03 030 0 1854 ldx2 t.sfcm,1 get addr of sfcm 02234 2 04 024 0 1855 ldaq sf.cfg,2 get current config pcw 02235 0 14 131 2366 1856 staq newcfg-* newcfg will be modified 02236 0 41 773 2231 1857 ldx3 cfgsx2-* get address of first sub-op 1858 02237 1859 cfg010 null start of sub-op decoding loop 02237 3 07 000 0 1860 lda 0,3 pick up sub-op 02240 0 34 751 2211 1861 ana l.r003-* =777000 02241 0 27 750 2211 1862 cmpa l.r003-* is this opblock, not a sub-op end of binary card 00000036 02242 0 74 114 2356 1863 tze cfg070-* yes, done 02243 673 000 0 1864 ila 0 zero a 02244 3 47 000 0 1865 ldq 0,3 get sub-op 02245 0334 03 0 1866 lls 3 isolate sub-op code in a 02246 6337 03 0 1867 qrl 3 right justify sub-op data 02247 422 003 0 1868 icmpa fg.bd changing the baud rate? 02250 0 74 037 2307 1869 tze cfg050-* go process baud sub-op 1870 1871 mode sub-op (smode or rmode) 1872 find specified entry in cfgtab 02251 2334 22 0 1873 llr 18 swap a and q 1874 sub-op code is in q 1875 sub-op data is in a 02252 0 17 116 2370 1876 sta cfgsub-* 02253 0 03 120 2373 1877 cfg019 ldx2 a.q001-* get addr of config table (=cfgtab) 02254 2 31 000 0 1878 cfg020 cana 0,2 compare sub-op data with cfgtab entry 02255 0 74 026 2303 1879 tze cfg041-* tra if desired bit not set 02256 2 07 000 0 1880 lda 0,2 bit that just matched 02257 0 35 122 2401 1881 era l.q002-* (=777777) invert all bits assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 76 hcfg - entry point to change configuration of channel 02260 0 32 110 2370 1882 ansa cfgsub-* turn off in arg - this bit done 1883 02261 2 20 003 0 1884 szn 3,2 check for subr 02262 0 74 002 2264 1885 tze 2 skip if no subr 02263 6 10 003 0 1886 tsy 3,2* call subr (subr must maintain x1, x2, 1887 x3, and q) 1888 02264 2 07 001 0 1889 lda 1,2 get first word of pcw mask 02265 0 67 113 2400 1890 cmpq l.q001-* check for rmode 02266 0 64 007 2275 1891 tnz cfg030-* transfer if smode 1892 1893 reset a mode bit 02267 0 35 112 2401 1894 era l.q002-* invert the bits 02270 0 32 076 2366 1895 ansa newcfg-* reset the bit 02271 2 07 002 0 1896 lda 2,2 get 2nd word of mask 02272 0 35 107 2401 1897 era l.q002-* 02273 0 32 074 2367 1898 ansa newcfg-*+1 02274 0 71 004 2300 1899 tra cfg040-* 1900 02275 1901 cfg030 null set a mode bit 02275 0 72 071 2366 1902 orsa newcfg-* set the bit in the new config pcw 02276 2 07 002 0 1903 lda 2,2 02277 0 72 070 2367 1904 orsa newcfg-*+1 1905 02300 1906 cfg040 null 02300 0 07 070 2370 1907 lda cfgsub-* 02301 0 74 053 2354 1908 tze cfg060-* all bits processed 02302 0 71 751 2253 1909 tra cfg019-* back to next bit 1910 02303 273 004 0 1911 cfg041 iacx2 cfglen next cfgtab entry 02304 0 23 070 2374 1912 cmpx2 a.q002-* end of table? 02305 0 64 747 2254 1913 tnz cfg020-* nope, try again 02306 0 71 046 2354 1914 tra cfg060-* next config list entry 1915 02307 1916 cfg050 null change baud rate 02307 4336 00 0 1917 qls 0 baud rate given? 02310 0 64 002 2312 1918 tnz 2 yes end of binary card 00000037 02311 1 47 035 0 1919 ldq t.cntr,1 if not in control table, it is here 02312 0 03 064 2376 1920 ldx2 a.q004-* (=cfgbds) addr of baud table 02313 2 67 000 0 1921 cfg052 cmpq 0,2 does it match baud given 02314 0 74 005 2321 1922 tze cfg051-* yes 02315 273 001 0 1923 iacx2 1 step to next entry 02316 0 23 061 2377 1924 cmpx2 a.q005-* (cfgbds+cfgbdl) at end of table? 02317 0 64 774 2313 1925 tnz cfg052-* no 02320 1926 die 2 1927 02321 0 56 051 2372 1928 cfg051 stz cfgsvf-* this will be setting of ebcdic bit in sfcm 02322 0 67 073 2415 1929 cmpq bd133-* setting to 133 baud? 02323 0 64 003 2326 1930 tnz cfg053-* no assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 77 hcfg - entry point to change configuration of channel 02324 0 07 065 2411 1931 lda l.q010-* (=sffebd) ebcdic bit for sfcm 02325 0 17 045 2372 1932 sta cfgsvf-* 02326 0 07 054 2402 1933 cfg053 lda l.q003-* mask for pcw baud bits 02327 0 32 040 2367 1934 ansa newcfg-*+1 turn off current bits 02330 2 07 015 0 1935 lda cfgflg-cfgbds,2 get pcw bits to set baud rate 02331 0 72 036 2367 1936 orsa newcfg-*+1 and store in pcw 02332 0 13 037 2371 1937 stx2 cfgtmp-* save baud table index 02333 1 03 030 0 1938 ldx2 t.sfcm,1 get addr of sfcm from tib 02334 0 07 056 2412 1939 lda l.q011-* (=^sffebd) 02335 2 32 005 0 1940 ansa sf.flg,2 turn off ebcdic bit 02336 0 07 034 2372 1941 lda cfgsvf-* get new value 02337 2 72 005 0 1942 orsa sf.flg,2 and set it 02340 2 03 015 0 1943 ldx2 sf.hsl,2 get hsla table addr from sfcm 02341 0 07 046 2407 1944 lda l.q008-* mask to turn off speed field 02342 2 32 000 0 1945 ansa ht.flg,2 02343 0 07 026 2371 1946 lda cfgtmp-* retreive baud table index 02344 0 26 032 2376 1947 sba a.q004-* get offset in table 02345 773 001 0 1948 iaa 1 this gives final baud index 02346 2 72 000 0 1949 orsa ht.flg,2 save in hsla table 1950 1951 check that pcw is type 2 02347 0 07 017 2366 1952 lda newcfg-* 02350 0 34 035 2405 1953 ana l.q006-* zero all but pcw type code 02351 0 27 035 2406 1954 cmpa l.q007-* check for right type 02352 0 74 002 2354 1955 tze cfg060-* 02353 1956 die 2 1957 02354 1958 cfg060 null 02354 373 001 0 1959 iacx3 1 next entry in config list 02355 0 71 662 2237 1960 tra cfg010-* go back for another entry 1961 02356 0 50 653 2231 1962 cfg070 stx3 cfgsx2-* all done, return bumbed addr to caller 02357 1 03 030 0 1963 ldx2 t.sfcm,1 get sfcm addr again 1964 end of binary card 00000038 02360 0 04 006 2366 1965 ldaq newcfg-* get new config pcw 02361 2 14 024 0 1966 staq sf.cfg,2 save it in sfcm 1967 1968 now select channel and do cioc 1969 02362 0 10 160 2542 1970 tsy sndcfg-* 02363 1971 return hcfg done 1972 02365 233100 0 02366 1973 even 02366 1974 newcfg bss 2 (altrd) pcw temp for new config pcw 02370 1975 cfgsub bss 1 (altrd) copy of sub-op data 02371 1976 cfgtmp bss 1 02372 1977 cfgsvf bss 1 1978 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 78 hcfg - entry point to change configuration of channel 02373 0 02445 1 1979 a.q001 ind cfgtab 02374 0 02521 1 1980 a.q002 ind cfgend 02375 0 03147 1 1981 a.q003 ind cioc 02376 0 02413 1 1982 a.q004 ind cfgbds 02377 0 02430 1 1983 a.q005 ind cfgbds+cfgbdl 1984 02400 000002 0 1985 l.q001 vfd 18/fg.rmd 02401 777777 0 1986 l.q002 vfd o18/777777 02402 777400 0 1987 l.q003 vfd o18/777400 mask to zero baud bits 02403 073 000 0 1988 l.q004 sel *-* template select instruction 02404 070000 0 1989 l.q005 vfd 18/p.ssiw 02405 600000 0 1990 l.q006 vfd o18/600000 02406 400000 0 1991 l.q007 vfd o18/pcw.2 02407 777760 0 1992 l.q008 vfd o18//htfspd 02410 607777 0 1993 l.q009 vfd o18//p2.mbt 02411 000040 0 1994 l.q010 vfd o18/sffebd 02412 777737 0 1995 l.q011 vfd o18//sffebd 1996 02413 000113 0 1997 cfgbds dec 75 tables of bauds that can be configured 02414 000156 0 1998 dec 110 02415 000205 0 1999 bd133 dec 133 02416 000226 0 2000 dec 150 02417 000454 0 2001 dec 300 02420 001130 0 2002 dec 600 02421 002032 0 2003 dec 1050 shouldn't be here but dia_man understands 02422 002260 0 2004 dec 1200 02423 003410 0 2005 dec 1800 02424 004540 0 2006 dec 2400 02425 011300 0 2007 dec 4800 02426 016040 0 2008 dec 7200 filler to index into baud_rates properly 02427 022600 0 2009 dec 9600 000015 2010 cfgbdl equ *-cfgbds 2011 pcw bits to set each baud 02430 000021 0 2012 cfgflg oct 021 75 baud 02431 000200 0 2013 oct 200 110 baud end of binary card 00000039 02432 000100 0 2014 oct 100 133 baud 02433 000040 0 2015 oct 040 150 baud 02434 000020 0 2016 oct 020 300 baud 02435 000161 0 2017 oct 161 600 baud 02436 000010 0 2018 oct 010 1050 baud 02437 000004 0 2019 oct 004 1200 baud 02440 000002 0 2020 oct 002 1800 baud 02441 000301 0 2021 oct 301 2400 baud 02442 000321 0 2022 oct 321 4800 baud 02443 000000 0 2023 oct 000 7200 baud (for indexing into baud_rates) 02444 000341 0 2024 oct 341 9600 baud 2025 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 79 config mode bits lookup table 02445 2027 cfgtab null 02445 2028 cfgtab fg.icw,p2.icw,0,cfgicw icw bit is in first word of pcw 02451 2029 cfgtab fg.lpr,p2.lpr,0,0 02455 2030 cfgtab fg.lps,p2.lps,0,0 02461 2031 cfgtab fg.lpo,p2.lpo,0,0 02465 2032 cfgtab fg.5bt,p2.5bt,0,cfgrsc 02471 2033 cfgtab fg.6bt,p2.6bt,0,cfgrsc 02475 2034 cfgtab fg.7bt,p2.7bt,0,cfgrsc 02501 2035 cfgtab fg.8bt,p2.8bt,0,cfgrsc end of binary card 00000040 02505 2036 cfgtab fg.beb,0,p3.beb,0 02511 2037 cfgtab fg.btr,0,p3.btr,0 02515 2038 cfgtab fg.cct,p2.cct,0,0 002521 2039 cfgend equ * 2040 000004 2041 cfglen equ 4 2042 02521 2043 cfgicw subr icw 2044 2045 this subroutine is called when the number 2046 of send icw's is being changed. 2047 we always make sure that the channel is set to 2048 use the primary send icw. 2049 02524 2 07 005 0 2050 lda sf.flg,2 get tib flags 02525 222 004 0 2051 icana sffcoi are we currently using alternate? 02526 0 74 003 2531 2052 tze icwbak-* transfer if not 2053 02527 0 07 655 2404 2054 lda l.q005-* switch send icw pcw op-code 02530 4 10 645 2375 2055 tsy a.q003-*,* (=cioc) do a connect 02531 2056 icwbak null 02531 2057 return cfgicw done 2058 2059 * subroutine to turn off the character size field in the pcw 2060 02533 2061 cfgrsc subr rsc 02536 0 07 652 2410 2062 lda l.q009-* (=^p2.mbt) 02537 0 32 627 2366 2063 ansa newcfg-* 02540 2064 return cfgrsc 2065 2066 * subroutine to send the config pcw 2067 02542 2068 sndcfg subr snd,(x1,x2,x3) end of binary card 00000041 02556 1 07 004 0 2069 lda t.line,1 get line no 02557 0337 06 0 2070 ars 6 02560 022 007 0 2071 iana 7 turn off "is_hsla" bit 02561 773 006 0 2072 iaa h1ch add in base hsla chan no to 2073 get iom chan no 6, 7, or 8 02562 0 37 621 2403 2074 ora l.q004-* (=sel 0) or in sel instruction assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 80 config mode bits lookup table 02563 0 17 001 2564 2075 sta 1 make a the next instruction 02564 073 000 0 2076 sel *-* (patched) select correct channel 2077 02565 2 41 015 0 2078 ldx3 sf.hsl,2 get pointer to hsla table entry 02566 3 41 001 0 2079 ldx3 ht.tib,3 get real tib address for trace 02567 2080 trace tt.pcw,ts.pcw,(x3,newcfg,newcfg+1) 2081 02604 2 60 024 0 2082 cioc sf.cfg,2 hit the channel with the pcw 02605 2083 return sndcfg assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 81 hmode - entry point to change modes 02607 2085 hmode subr mod,(x1,x2,x3) 2086 2087 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2088 * 2089 * hmode 2090 * 2091 * entry to notify us that certain mode bits 2092 * have been changed, including those having to do 2093 * with echoing, flow control, or parity. 2094 * 2095 * upon entry: 2096 * x1 - virtual tib address 2097 * 2098 * returns: 2099 * 2100 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2101 end of binary card 00000042 02623 1 03 030 0 2102 ldx2 t.sfcm,1 get virtual sfcm address 02624 0 74 077 2723 2103 tze modret-* no sfcm, forget it 02625 2 07 005 0 2104 lda sf.flg,2 check for ebcd type 02626 0 31 130 2756 2105 cana l.p013-* =sffebd 02627 0 64 002 2631 2106 tnz 2 don't touch cct if it is 02630 4 10 076 2726 2107 tsy a.p001-*,* =makcct, select proper cct 2108 02631 1 07 002 0 2109 lda t.flg2,1 find out if entered or left framei 02632 0 34 110 2742 2110 ana l.p001-* isolate tffrmi 02633 2 35 005 0 2111 era sf.flg,2 compare it against sffofr (same bit position) 02634 0 34 106 2742 2112 ana l.p001-* isolate relevant bit 02635 0 74 011 2646 2113 tze mod010-* not changed 02636 2 62 005 0 2114 ersa sf.flg,2 it is, change it in sfcm 02637 0 07 110 2747 2115 lda l.p006-* =sffnib 02640 2 72 005 0 2116 orsa sf.flg,2 we'll need a new input buffer 2117 02641 1 07 002 0 2118 lda t.flg2,1 get tib flags 02642 0 31 100 2742 2119 cana l.p001-* (=tffrmi) frame input mode ? 02643 0 64 003 2646 2120 tnz mod010-* yes 02644 0 07 102 2746 2121 lda l.p005-* (=/tffip) cannot be frame in progress 02645 1 32 002 0 2122 ansa t.flg2,1 so turn off tffip 2123 02646 1 07 002 0 2124 mod010 lda t.flg2,1 check for input flow control 02647 0 31 101 2750 2125 cana l.p007-* =tfifc 02650 0 74 003 2653 2126 tze mod020-* no 02651 0 07 076 2747 2127 lda l.p006-* =sffnib 02652 2 72 005 0 2128 orsa sf.flg,2 yes, we'll need a new input buffer 02653 0 07 102 2755 2129 mod020 lda l.p012-* p2.lps, on initially 02654 0 17 051 2725 2130 sta tstcfg-* we're going to see if we have to 02655 1 07 036 0 2131 lda t.flg3,1 change parity configuration 02656 0 34 073 2751 2132 ana l.p008-* tfoddp 02657 2337 05 0 2133 arl lposhf line it up on p2.lpo assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 82 hmode - entry point to change modes 02660 0 72 045 2725 2134 orsa tstcfg-* if on in tib, on in pcw 02661 1 07 036 0 2135 lda t.flg3,1 get flags again 02662 0 34 070 2752 2136 ana l.p009-* =tf8out 02663 2337 03 0 2137 arl lpsshf line it up on p2.lps 02664 0 62 041 2725 2138 ersa tstcfg-* on in tib => off in pcw, and vice versa 02665 2 07 024 0 2139 lda sf.cfg,2 02666 0 34 065 2753 2140 ana l.p010-* p2.lpo+p2.lps 02667 0 27 036 2725 2141 cmpa tstcfg-* have we changed either of these bits? 02670 0 74 006 2676 2142 tze mod030-* no, don't bother with new pcw 02671 0 07 063 2754 2143 lda l.p011-* ^(p2.lpo+p2.lps) end of binary card 00000043 02672 2 32 024 0 2144 ansa sf.cfg,2 turn them off so we can start clean 02673 0 07 032 2725 2145 lda tstcfg-* get new values 02674 2 72 024 0 2146 orsa sf.cfg,2 02675 0 10 645 2542 2147 tsy sndcfg-* now set the pcw 2148 02676 1 07 002 0 2149 mod030 lda t.flg2,1 check if we left oflow with output suspended 02677 0 31 066 2765 2150 cana l.p020-* =tfofc 02700 0 64 005 2705 2151 tnz mod040-* mode is on, never mind 02701 1 07 001 0 2152 lda t.flg,1 is output suspended now? 02702 0 31 064 2766 2153 cana l.p021-* =tfosus 02703 0 74 002 2705 2154 tze mod040-* no, no problem 02704 4 10 035 2741 2155 tsy a.p012-*,* (resout) yes, resume it 2156 02705 1 07 001 0 2157 mod040 lda t.flg,1 get the tib flags 02706 0 31 035 2743 2158 cana l.p002-* (=tfcrec+lfec+tbec+ecpx) any echoing modes on? 02707 0 74 014 2723 2159 tze modret-* 2160 02710 1 20 025 0 2161 szn t.echo,1 is there an echo buffer? 02711 0 64 012 2723 2162 tnz modret-* yes, done 2163 02712 473 040 0 2164 ilq bufsiz allocate a buffer 02713 4 10 014 2727 2165 tsy a.p002-*,* (=getbfh) 02714 0 71 007 2723 2166 tra modret-* if couldn't get it, tough 2167 02715 1 17 025 0 2168 sta t.echo,1 set absolute ptr to echo buffer 02716 3333 00 0 2169 cx3a put virtual addr into a 02717 0 06 025 2744 2170 ada l.p003-* (=eb.dta,b.1) make ptr to data 02720 3 17 000 0 2171 sta eb.inp,3 set in ptr 02721 3 17 001 0 2172 sta eb.otp,3 set out ptr 02722 3 56 002 0 2173 stz eb.tly,3 zero the tallytoo 2174 02723 2175 modret return hmode 2176 02725 2177 tstcfg bss 1 place for temporary parity bits 2178 02726 0 01217 1 2179 a.p001 ind makcct 02727 0 22000 3 2180 a.p002 ind getbfh 02730 0 01000 3 2181 a.p003 ind denq 02731 0 10000 3 2182 a.p004 ind maskr restart wait block in control_tables assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 83 hmode - entry point to change modes 02732 0 03147 1 2183 a.p005 ind cioc 02733 0 20000 3 2184 a.p006 ind frelbf 02734 0 17000 3 2185 a.p007 ind frebuf 02735 0 34000 3 2186 a.p008 ind setbpt 02736 0 05342 1 2187 a.p009 ind fribuf 02737 0 21000 3 2188 a.p010 ind fremem end of binary card 00000044 02740 0 07000 3 2189 a.p011 ind itest 02741 0 07407 1 2190 a.p012 ind resout 2191 02742 040000 0 2192 l.p001 vfd 18/tffrmi 02743 207000 0 2193 l.p002 vfd 18/tfcrec+tflfec+tftbec+tfecpx 02744 3 00002 0 2194 l.p003 ind eb.dta,b.1 02745 200000 0 2195 l.p004 vfd 18/tfecpx 02746 677777 0 2196 l.p005 vfd o18//tffip 02747 100000 0 2197 l.p006 vfd 18/sffnib 02750 000040 0 2198 l.p007 vfd 18/tfifc 02751 000400 0 2199 l.p008 vfd 18/tfoddp 02752 000200 0 2200 l.p009 vfd 18/tf8out 02753 000030 0 2201 l.p010 vfd 18/p2.lpo+p2.lps 02754 777747 0 2202 l.p011 vfd o18//p2.lpo*/p2.lps 02755 000020 0 2203 l.p012 vfd 18/p2.lps 02756 000040 0 2204 l.p013 vfd 18/sffebd 02757 777677 0 2205 l.p014 vfd o18//tflisn 02760 020000 0 2206 l.p015 vfd 18/tfmask 02761 050000 0 2207 l.p016 vfd 18/p.rmsk 02762 000266 0 2208 l.p017 vfd 18/sffsct+sffebd+sffdct+sffcii+sffcoi 02763 412000 0 2209 l.p018 vfd 18/sffbsc+sffsyn+sffhdl 02764 010000 0 2210 l.p019 oct 010000 icw exhaust bit 02765 000100 0 2211 l.p020 vfd 18/tfofc 02766 400000 0 2212 l.p021 vfd 18/tfosus assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 84 subroutines for masking/unmasking channel 2214 2215 mskchn is called by the status processor when it discovers 2216 that the interrupt handler masked a channel because of 2217 excessive interrupts. its job is to report this to the 2218 host (via denq), set a flag in the tib, and force the 2219 channel to its starting point in the control tables. the 2220 channel should remain dormant until the host sends a new 2221 listen order. 2222 2223 x1 contains virtual tib address as usual 2224 x2 contains virtual sfcm address 2225 02767 2226 mskchn subr msk,(x3) 02775 473 103 0 2227 ilq linmsk 02776 4 10 732 2730 2228 tsy a.p003-*,* denq 02777 0 07 760 2757 2229 lda l.p014-* =^tflisn 03000 1 32 001 0 2230 ansa t.flg,1 force listen flag off 03001 0 07 757 2760 2231 lda l.p015-* =tfmask 03002 1 72 036 0 2232 orsa t.flg3,1 and masked flag on 2233 now clear out all buffers (except t.dcp, 2234 which is dia_man's problem) 03003 0 56 143 3146 2235 stz mocur-* initialize ocur flag 03004 1 07 012 0 2236 lda t.ocp,1 03005 0 74 013 3020 2237 tze msk010-* end of binary card 00000045 03006 1 27 013 0 2238 msk005 cmpa t.ocur,1 is t.ocur included in t.ocp? 03007 0 74 006 3015 2239 tze msk007-* yes 03010 4 10 725 2735 2240 tsy a.p008-*,* (setbpt) not this one, look at next 03011 4333 00 0 2241 cax3 03012 3 07 000 0 2242 lda bf.nxt,3 pointer to next buffer 03013 0 64 773 3006 2243 tnz msk005-* if any 03014 0 71 002 3016 2244 tra msk008-* else no match, proceed 03015 0 76 131 3146 2245 msk007 aos mocur-* set flag to indicate overlap 03016 1 07 012 0 2246 msk008 lda t.ocp,1 get original pointer back 03017 4 10 714 2733 2247 tsy a.p006-*,* frelbf 03020 1 07 013 0 2248 msk010 lda t.ocur,1 03021 0 74 005 3026 2249 tze msk020-* 03022 0 20 124 3146 2250 szn mocur-* was t.ocur chain subset of t.ocp chain? 03023 0 64 002 3025 2251 tnz msk015-* yes, it's already been freed 03024 4 10 707 2733 2252 tsy a.p006-*,* frelbf 03025 1 56 013 0 2253 msk015 stz t.ocur,1 03026 1 56 012 0 2254 msk020 stz t.ocp,1 03027 2 56 010 0 2255 stz sf.ob0,2 03030 2 56 011 0 2256 stz sf.ob1,2 03031 1 56 016 0 2257 stz t.ocnt,1 all output buffers flushed now 03032 1 07 005 0 2258 lda t.icp,1 03033 0 74 004 3037 2259 tze msk050-* 03034 4 10 677 2733 2260 tsy a.p006-*,* frelbf 03035 1 56 005 0 2261 stz t.icp,1 03036 1 56 007 0 2262 stz t.icpl,1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 85 subroutines for masking/unmasking channel 03037 2 07 006 0 2263 msk050 lda sf.ib0,2 03040 0 74 005 3045 2264 tze msk060-* 03041 4 10 674 2735 2265 tsy a.p008-*,* (setbpt) fribuf wants virtual address 03042 4333 00 0 2266 cax3 in x3 03043 4 10 673 2736 2267 tsy a.p009-*,* fribuf 03044 2 56 006 0 2268 stz sf.ib0,2 03045 2 07 007 0 2269 msk060 lda sf.ib1,2 03046 0 74 005 3053 2270 tze msk070-* 03047 4 10 666 2735 2271 tsy a.p008-*,* (setbpt) fribuf wants virtual address 03050 4333 00 0 2272 cax3 in x3 03051 4 10 665 2736 2273 tsy a.p009-*,* fribuf 03052 2 56 007 0 2274 stz sf.ib1,2 03053 2275 msk070 null buffers all gone, wipe out temporary sfcm flags 03053 0 07 707 2762 2276 lda l.p017-* sfcm flags that should stay around 03054 0 37 707 2763 2277 ora l.p018-* and more of the same end of binary card 00000046 03055 2 32 005 0 2278 ansa sf.flg,2 turning off any others that are on 03056 2 41 000 0 2279 ldx3 sf.hcm,2 ruin all icws 03057 673 000 0 2280 ila 0 03060 0 47 704 2764 2281 ldq l.p019-* =010000, exhaust bit 03061 3 14 000 0 2282 staq h.ric0,3 03062 3 14 002 0 2283 staq h.ric1,3 03063 3 14 004 0 2284 staq h.sic0,3 03064 3 14 006 0 2285 staq h.sic1,3 03065 2 56 021 0 2286 stz sf.nic,2 don't keep old character pointers 2287 03066 1 07 017 0 2288 lda t.type,1 ascii or other? 03067 422 001 0 2289 icmpa ttasci 03070 0 64 006 3076 2290 tnz msk075-* non-ascii, check for tib extension 03071 1 07 011 0 2291 lda t.rcp,1 else check for replay chain 03072 0 74 012 3104 2292 tze msk080-* none, we're finished 03073 4 10 640 2733 2293 tsy a.p006-*,* (frelbf) free it 03074 1 56 011 0 2294 stz t.rcp,1 not there any more 03075 0 71 007 3104 2295 tra msk080-* done now 2296 03076 1 41 011 0 2297 msk075 ldx3 t.elnk,1 get address of tib extension to free it 03077 0 74 005 3104 2298 tze msk080-* none, do nothing 03100 1 56 011 0 2299 stz t.elnk,1 no longer has ext 03101 3 47 000 0 2300 ldq 0,3 length 03102 573 001 0 2301 iaq 1 plus control word 03103 4 10 634 2737 2302 tsy a.p010-*,* =fremem 2303 03104 1 56 022 0 2304 msk080 stz t.reta,1 03105 0 07 624 2731 2305 lda a.p004-* address of restarting op block 03106 1 17 003 0 2306 sta t.cur,1 make channel start there next time 03107 4 10 631 2740 2307 tsy a.p011-*,* (itest) poke it so it goes to right tables 03110 2308 return mskchn 2309 2310 2311 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 86 subroutines for masking/unmasking channel 2312 hunmsk is called by dia_man when a listen order is 2313 received for a channel with tfmask on (i.e., that has 2314 previously been masked). it resets the various masked bits, 2315 re-establishes the sfcm status queue pointers, and unmasks 2316 the channel. 2317 2318 03112 2319 hunmsk subr unm,(inh,x2) end of binary card 00000047 03124 1 03 030 0 2320 ldx2 t.sfcm,1 we'll need the sfcm 03125 2 07 012 0 2321 lda sf.pcw,2 03126 222 001 0 2322 icana pb.msk did we mask it, in fact? 03127 0 74 012 3141 2323 tze unm010-* no 03130 3332 00 0 2324 cx2a get (virtual) address of 03131 773 056 0 2325 iaa sf.waq software status queue 03132 2 17 002 0 2326 sta sf.nxp,2 and store it 03133 2 17 001 0 2327 sta sf.nxa,2 in sfcm 03134 2 07 023 0 2328 lda sf.ssl,2 get length of queue 03135 2 17 003 0 2329 sta sf.tly,2 initialize this too 03136 2 56 012 0 2330 stz sf.pcw,2 clear out the "masked" bit 03137 0 07 622 2761 2331 lda l.p016-* (=p.rmsk) get "reset mask" opcode 03140 4 10 572 2732 2332 tsy a.p005-*,* cioc 03141 0 07 617 2760 2333 unm010 lda l.p015-* =tfmask 03142 322 777 0 2334 iera -1 complement tib "masked" bit 03143 1 32 036 0 2335 ansa t.flg3,1 so as to turn it off 03144 2336 return hunmsk 2337 2338 2339 03146 2340 mocur bss 1 indicator for whether t.ocp and t.ocur 2341 chains overlap assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 87 cioc - connect subroutine 03147 2343 cioc subr cio,(x1,x2,x3,inh) 2344 2345 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2346 * 2347 * cioc 2348 * 2349 * subroutine to perform a connect to a hsla 2350 * subchannel. a pcw type 1 is issued with the pcw 2351 * broadside bits in the sfcm. 2352 * 2353 * upon entry: 2354 * a - contains pcw op-code to use 2355 * x1 - virtual tib address 2356 * 2357 * returns: 2358 * 2359 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2360 03167 0 17 043 3232 2361 sta ciopcw-* save the pcw op-code 03170 0 07 201 3371 2362 lda l.c006-* (=pcw.1) get command type code 03171 0 72 041 3232 2363 orsa ciopcw-* and put it into pcw 03172 1 07 004 0 2364 lda t.line,1 get the line number 03173 022 037 0 2365 iana 31 (=o37) leave just subch number end of binary card 00000048 03174 0336 06 0 2366 als 6 position it for pcw 03175 0 72 035 3232 2367 orsa ciopcw-* put into pcw 2368 03176 1 03 030 0 2369 ldx2 t.sfcm,1 get ptr to sfcm 03177 2 07 012 0 2370 lda sf.pcw,2 get pcw broadside bits 03200 0 17 033 3233 2371 sta ciopcw+1-* put them into pcw, too 2372 2373 pcw model setup, select chan and do cioc 2374 03201 1 07 004 0 2375 lda t.line,1 get line no again 03202 0337 06 0 2376 ars 6 03203 022 007 0 2377 iana 7 turn off "is_hsla" bit 03204 773 006 0 2378 iaa h1ch add in base hsla chan no 2379 to get iom chan no 6, 7 or 8 03205 0 37 165 3372 2380 ora l.c007-* (=sel 0) or in select instruction 03206 0 17 001 3207 2381 sta 1 put it down to execute 03207 073 000 0 2382 sel 0 (patched) select the right chan 2383 03210 2 41 015 0 2384 ldx3 sf.hsl,2 get pointer to hsla table entry 03211 3 41 001 0 2385 ldx3 ht.tib,3 get real tib address for trace 03212 2386 trace tt.pcw,ts.pcw,(x3,ciopcw,ciopcw+1) 2387 03227 0 60 003 3232 2388 cioc ciopcw-* hit channel with pcw 03230 2389 return cioc 03232 2390 even 03232 2391 ciopcw bss 2 (altrd) pcw temp for cioc assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 88 seticw - setup the output icw's 03234 2393 seticw subr sic,(x1,x2,x3) end of binary card 00000049 2394 2395 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2396 * 2397 * seticw 2398 * 2399 * seticw setups the output icw's for the 2400 * buffer chain pointed to by t.ocur. it assumes no 2401 * active output icw and stores into both. 2402 * 2403 * upon entry: 2404 * x1 - virtual tib address 2405 * 2406 * returns: 2407 * both output icw's setup 2408 * 2409 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2410 03250 1 03 030 0 2411 ldx2 t.sfcm,1 get addr of sfcm 03251 2 41 000 0 2412 ldx3 sf.hcm,2 get addr of hwcm region 2413 03252 373 004 0 2414 iacx3 h.sic0 add in offset 03253 0 50 105 3360 2415 stx3 sicicw-* save it away 03254 1 41 030 0 2416 ldx3 t.sfcm,1 get ptr to sfcm 03255 373 010 0 2417 iacx3 sf.ob0 add in other offset 03256 0 50 103 3361 2418 stx3 sicobp-* save it also 2419 03257 2 07 005 0 2420 lda sf.flg,2 get sfcm flag word 03260 222 004 0 2421 icana sffcoi which icw is active? 03261 0 74 005 3266 2422 tze sic010-* primary, use it first 2423 03262 673 002 0 2424 ila h.sic1-h.sic0 get difference 03263 0 16 075 3360 2425 asa sicicw-* update ind word 03264 673 001 0 2426 ila sf.ob1-sf.ob0 get other difference 03265 0 16 074 3361 2427 asa sicobp-* save it also 2428 03266 1 07 013 0 2429 sic010 lda t.ocur,1 pick up ptr to next output buffer 03267 4 17 072 3361 2430 sta sicobp-*,* put into the sfcm 03270 4 10 112 3402 2431 tsy a.c005-*,* setbpt 03271 4333 00 0 2432 cax3 get virtual address 03272 0 50 072 3364 2433 stx3 sicbuf-* hang on to it 03273 3333 00 0 2434 sic020 cx3a get ptr into the a 03274 0 74 062 3356 2435 tze sicret-* no buffer 03275 773 002 0 2436 iaa bf.dta get offset of data 03276 0 37 072 3370 2437 ora l.c005-* (=0,b.0) or in the character addressing 03277 6333 00 0 2438 caq hide it away 2439 03300 3 07 001 0 2440 lda bf.tly,3 get the buffer tally 03301 0 34 065 3366 2441 ana l.c001-* (=buftmk) isolate the tally assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 89 seticw - setup the output icw's 03302 2334 22 0 2442 llr 18 switch a and q 03303 0 50 060 3363 2443 stx3 settmp-* 03304 0 41 054 3360 2444 ldx3 sicicw-* get ptr to icw words 03305 4 10 076 3403 2445 tsy a.c006-*,* (bldicw) set up icw 2446 03306 0 41 055 3363 2447 ldx3 settmp-* get the buffer addr again 03307 4 10 070 3377 2448 tsy a.c002-*,* (=oscan) scan the buffer 2449 03310 4 10 066 3376 2450 tsy a.c001-*,* (=outpar) output parity for ebcdic 2451 03311 3 07 001 0 2452 sic030 lda bf.flg,3 get buffer flag bits 03312 0 31 055 3367 2453 cana l.c002-* (=bfflst) last buffer in msg? 03313 0 64 036 3351 2454 tnz sic050-* yes, pretty much done 2455 end of binary card 00000050 03314 3 20 000 0 2456 szn bf.nxt,3 is there any more chain? 03315 0 74 041 3356 2457 tze sicret-* nope, all done here 2458 03316 673 002 0 2459 ila sfhmk get mask to switch icw ptr 03317 0 62 041 3360 2460 ersa sicicw-* 03320 673 001 0 2461 ila sfbfmk get mask to switch buffer ptrs 03321 0 62 040 3361 2462 ersa sicobp-* 2463 03322 3 07 000 0 2464 lda bf.nxt,3 get addr of next guy in chain 03323 4 17 036 3361 2465 sta sicobp-*,* and into sfcm 03324 4 10 056 3402 2466 tsy a.c005-*,* (setbpt) get virtual address 03325 4333 00 0 2467 cax3 we'll need it in x3 too 03326 773 002 0 2468 iaa bf.dta get offset of data 03327 0 37 041 3370 2469 ora l.c005-* (=0,b.0) or in char addressing bits 03330 6333 00 0 2470 caq hang on to address 2471 03331 3 07 001 0 2472 lda bf.tly,3 get the tally 03332 0 34 034 3366 2473 ana l.c001-* (=buftmk) isolate tally 03333 2334 22 0 2474 llr 18 switch a and q 03334 0 41 024 3360 2475 ldx3 sicicw-* get ptr to icw 03335 4 10 046 3403 2476 tsy a.c006-*,* (bldicw) put into icw 2477 03336 1 07 013 0 2478 lda t.ocur,1 get ptr to first buffer 03337 4 10 043 3402 2479 tsy a.c005-*,* setbpt 03340 4333 00 0 2480 cax3 03341 3 07 000 0 2481 lda bf.nxt,3 get next buffer addr 03342 4 10 040 3402 2482 tsy a.c005-*,* setbpt 03343 4333 00 0 2483 cax3 03344 4 10 033 3377 2484 tsy a.c002-*,* (=oscan) scan the buffer 03345 4 10 031 3376 2485 tsy a.c001-*,* (=outpar) output parity for ebcdic 2486 03346 3 07 001 0 2487 lda bf.flg,3 get buffer flags 03347 0 31 020 3367 2488 cana l.c002-* (=bfflst) last buffer ? 03350 0 74 006 3356 2489 tze sicret-* no 2490 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 90 seticw - setup the output icw's 03351 0 07 024 3375 2491 sic050 lda l.c010-* (=sffhdl) is it hdlc? 03352 2 31 005 0 2492 cana sf.flg,2 03353 0 74 003 3356 2493 tze sicret-* no 03354 0 07 017 3373 2494 lda l.c008-* (=tsftre) get tally runout enable bit 03355 1 72 000 0 2495 orsa t.stat,1 turn it on in tib status 2496 2497 03356 2498 sicret return seticw 2499 2500 03360 2501 sicicw bss 1 (altrd) icw ptr 03361 2502 sicobp bss 1 (altrd) sf.ob0/1 ptr 03362 2503 oddchr bss 1 03363 2504 settmp bss 1 03364 2505 sicbuf bss 1 virtual pointer to current buffer 03365 2506 sicnoc bss 1 local address of next output character 2507 03366 000777 0 2508 l.c001 vfd 18/buftmk end of binary card 00000051 03367 040000 0 2509 l.c002 vfd 18/bfflst 2510 *l.c003 unused 2511 *l.c004 unused 03370 2 00000 0 2512 l.c005 ind 0,b.0 03371 200000 0 2513 l.c006 vfd 18/pcw.1 pcw type 1 03372 073 000 0 2514 l.c007 sel 0 select instruction 03373 004000 0 2515 l.c008 vfd 18/tsftre 03374 777776 0 2516 l.c009 vfd o18//tfwrit 03375 400000 0 2517 l.c010 vfd 18/sffhdl 2518 03376 0 06531 1 2519 a.c001 ind outpar 03377 0 06567 1 2520 a.c002 ind oscan 03400 0 10134 1 2521 a.c003 ind freout 03401 0 05000 3 2522 a.c004 ind g3wjt 03402 0 34000 3 2523 a.c005 ind setbpt 03403 0 00753 1 2524 a.c006 ind bldicw assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 91 hintr - hsla interrupt handler 03404 2526 hintr null 2527 2528 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2529 * 2530 * hintr 2531 * 2532 * this routine handles interrupts for all of 2533 * the hsla subchannels, and takes status from the 2534 * hardware status buffer and queues it for process- 2535 * ing by the scheduled status processor, hstprc. hstprc 2536 * will be scheduled to process the status queue if it is 2537 * not already scheduled. 2538 * 2539 * upon entry: 2540 * a call to g3jwt will return the third word of 2541 * the jump table, as follows: 2542 * 2543 * bits 0-3 iom channel number 2544 * bits 4-5 hsla number(1-3) 2545 * bits 6-10 subchannel number(0-31) 2546 * bits 11-17 module number of hsla_man 2547 * 2548 * returns: 2549 * entries queued for hstprc 2550 * 2551 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2552 03404 4 10 775 3401 2553 tsy a.c004-*,* (=g3jwt) get third word of jump table 03405 0 57 341 3746 2554 stq intjtw-* save the result 2555 03406 2556 trace tt.int,ts.int,(intjtw) 03416 0 47 330 3746 2557 ldq intjtw-* 03417 7333 00 0 2558 cqa put copy into the a 03420 0337 14 0 2559 ars 12 shift down to get hsla number 03421 022 003 0 2560 iana 3 leave only the hsla number 03422 773 777 0 2561 iaa -1 subtract one to get 0-2 03423 0 37 342 3765 2562 ora l.d001-* (=000010) turn on is_hsla bit 03424 0336 06 0 2563 als 6 shift back into proper position 03425 0 17 335 3762 2564 sta intlno-* save as part of line number 2565 03426 7333 00 0 2566 cqa get another copy 03427 0337 07 0 2567 ars 7 shift down subchannel number 03430 022 037 0 2568 iana 31 leave only subchan number 03431 0 72 331 3762 2569 orsa intlno-* put into line number 2570 03432 0 07 330 3762 2571 lda intlno-* pick it up for call 03433 4 10 363 4016 2572 tsy a.d005-*,* (=gettib) get the tib addr 03434 773 000 0 2573 iaa 0 set the indicators end of binary card 00000052 03435 0 74 307 3744 2574 tze intret-* no tib, ignore interrupt assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 92 hintr - hsla interrupt handler 2575 03436 0 17 314 3752 2576 sta intrtb-* save real tib address for dspqur 03437 4 10 363 4022 2577 tsy a.d010-*,* (setptw) virtualize real tib address 03440 0 17 313 3753 2578 sta intvtb-* save for easy reference 03441 4332 00 0 2579 cax1 put virtual tib address into x1 03442 1 03 030 0 2580 ldx2 t.sfcm,1 get the virtual sfcm address 03443 0 64 002 3445 2581 tnz 2 should be non-zero 03444 2582 die 10 nope, die 2583 03445 2 07 023 0 2584 lda sf.ssl,2 figure out current number of pending status 03446 2 26 003 0 2585 sba sf.tly,2 to meter it 03447 0 17 276 3745 2586 sta intcnt-* 03450 2587 cmeter mupdat,m.nst,intcnt-* 2588 03457 0 56 270 3747 2589 stz inthqf-* clear status exhaust indicator 03460 0 56 303 3763 2590 stz intsqo-* clear status queue overflow switch 03461 673 006 0 2591 ila hpri get basic priority 03462 0 17 274 3756 2592 sta intskd-* set in sked words 2593 03463 2 41 000 0 2594 ldx3 sf.hcm,2 get hardware comm region address 03464 3 07 015 0 2595 lda h.aicw+1,3 get second word of status icw 03465 0 31 301 3766 2596 cana l.d002-* is it exhausted? 03466 0 74 002 3470 2597 tze int002-* no 03467 0 76 260 3747 2598 aos inthqf-* indicate that is so for later 2599 03470 1 07 030 0 2600 int002 lda t.sfcm,1 get address of sfcm 03471 773 026 0 2601 iaa sf.sta add in the queue offset 03472 0 17 257 3751 2602 sta intcrp-* first status if primary 2603 03473 2 07 005 0 2604 lda sf.flg,2 get sfcm flag word 03474 0 31 314 4010 2605 cana l.d019-* (=sffcai) is hardware alt buffer being used 03475 0 64 006 3503 2606 tnz int004-* yes 2607 03476 0 07 312 4010 2608 lda l.d019-* (=sffcai) or in alt hardware status 03477 2 72 005 0 2609 orsa sf.flg,2 03500 0 07 251 3751 2610 lda intcrp-* get back address of status queu 03501 773 014 0 2611 iaa sf.shq-sf.sta add in the difference 03502 0 71 007 3511 2612 tra int006-* 2613 03503 0 07 306 4011 2614 int004 lda l.d020-* (=^sffcai) end of binary card 00000053 03504 2 32 005 0 2615 ansa sf.flg,2 turn off alt indicator 03505 0 47 244 3751 2616 ldq intcrp-* get current position 03506 673 014 0 2617 ila sf.shq-sf.sta delta of hardware queue 03507 0 16 242 3751 2618 asa intcrp-* adjust first status pointer 03510 7333 00 0 2619 cqa get back orginal address for status 2620 03511 0 17 244 3755 2621 int006 sta intvir-* temporarily save virtual address 03512 4 10 306 4020 2622 tsy a.d007-*,* (cvabs) get absolute address for icw 03513 0 47 245 3760 2623 ldq intsai-* second word of status icw assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 93 hintr - hsla interrupt handler 03514 3 14 014 0 2624 int007 staq h.aicw,3 store icw now 03515 2331 00 0 2625 nop buy some time 03516 3 27 014 0 2626 cmpa h.aicw,3 see if we change it 03517 0 74 006 3525 2627 tze int008-* yes all done 03520 0 41 235 3755 2628 ldx3 intvir-* set to point to first status of this queue 03521 3 20 000 0 2629 szn 0,3 set indicators 03522 0 64 003 3525 2630 tnz int008-* new status all done 03523 2 41 000 0 2631 ldx3 sf.hcm,2 get hcm address 03524 0 71 770 3514 2632 tra int007-* try again 2633 03525 0 07 224 3751 2634 int008 lda intcrp-* get first status to process 03526 773 014 0 2635 iaa sfhsiz*2+2 calc end of queue 03527 0 17 221 3750 2636 sta intend-* for later processing 03530 0 41 221 3751 2637 ldx3 intcrp-* set to point to first status 2638 03531 2 07 005 0 2639 lda sf.flg,2 get sfcm flags 03532 222 010 0 2640 icana sffisc inactive subchannel? 03533 0 64 161 3714 2641 tnz int050-* yes, get out of here 2642 03534 3 07 000 0 2643 int010 lda 0,3 is this status word zero? 03535 0 74 157 3714 2644 tze int050-* yes, all done 03536 0 31 241 3777 2645 cana l.d010-* (=hs.rcs) rcv status ? 03537 0 74 045 3604 2646 tze int014-* no 2647 03540 0 31 230 3770 2648 cana l.d004-* (=hs.tro) tally runout ? 03541 0 74 004 3545 2649 tze int011-* no 2650 2651 tally runout means we just dropped out of 2652 rcv mode. make sure we stay out. 2653 03542 0 07 236 4000 2654 lda l.d011-* (=/pb.rcv) 03543 2 32 012 0 2655 ansa sf.pcw,2 turn off pcw rcv bit 03544 0 71 047 3613 2656 tra int020-* 2657 03545 0 31 227 3774 2658 int011 cana l.d007-* (=hs.siw) switching icw ? 03546 0 74 045 3613 2659 tze int020-* no, continue 2660 03547 0 50 202 3751 2661 stx3 intcrp-* save status queue addr 03550 6333 00 0 2662 caq put status word in q 2663 03551 2 41 000 0 2664 ldx3 sf.hcm,2 get hwcm addr 03552 373 000 0 2665 iacx3 h.ric0 get primary rcv icw addr end of binary card 00000054 03553 0 31 222 3775 2666 cana l.d008-* (=hs.aiw) alt icw active ? 03554 0 74 002 3556 2667 tze 2 no 03555 373 002 0 2668 iacx3 h.ric1-h.ric0 get alt rcv icw addr 2669 03556 3 07 001 0 2670 lda 1,3 get icw tally 03557 0 34 217 3776 2671 ana l.d009-* (=007777) leave only tally 03560 0 17 204 3764 2672 sta inttly-* save it assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 94 hintr - hsla interrupt handler 2673 03561 0 07 226 4007 2674 lda l.d018-* (=410000) get exhausted tally 03562 3 17 001 0 2675 sta 1,3 put it in icw 2676 03563 2 07 005 0 2677 lda sf.flg,2 synchronous? 03564 0 31 205 3771 2678 cana l.d005-* =sffsyn 03565 0 64 003 3570 2679 tnz int012-* yes 03566 7333 00 0 2680 cqa no, get first word of status again 03567 0 71 014 3603 2681 tra int013-* skip tally manipulation 03570 7333 00 0 2682 int012 cqa get status back in a 03571 2 41 006 0 2683 ldx3 sf.ib0,2 get primary buffer addr 03572 0 31 203 3775 2684 cana l.d008-* (=hs.aiw) alt. icw active ? 03573 0 74 002 3575 2685 tze 2 no 03574 2 41 007 0 2686 ldx3 sf.ib1,2 get alt buffer addr 03575 3333 00 0 2687 cx3a virtualize it 03576 4 10 214 4012 2688 tsy a.d001-*,* setbpt 03577 4333 00 0 2689 cax3 2690 03600 3 47 001 0 2691 ldq bf.tly,3 get max buffer tally 03601 0 66 163 3764 2692 sbq inttly-* subtract icw tally 03602 3 57 001 0 2693 stq bf.tly,3 put actual tally in buffer 2694 03603 0 41 146 3751 2695 int013 ldx3 intcrp-* restore status queue addr 2696 03604 0 31 170 3774 2697 int014 cana l.d007-* (=hs.siw) switching icw ? 03605 0 74 006 3613 2698 tze int020-* no, process status at normal priority 2699 2700 * lda sf.flg,2 get sfcm flags 2701 * cana l.d005-* synchronous line ? 2702 * tze int015-* no, use priority 3 2703 * rem 2704 * ldx2 sf.hsl,2 get address of hsla table 2705 * lda ht.flg,2 pick up word with speed 2706 * ldx2 t.sfcm,1 restore x2 2707 * iana htfspd leave only the channel speed 2708 * icmpa 8 is it more than 9600 baud? 2709 * tmi int015-* no, use priority 3 2710 * rem 2711 * ila hprip2 use real high priority 2712 * tra 2 2713 03606 673 003 0 2714 int015 ila hprip3 get priority 3 for sked 03607 0 17 147 3756 2715 sta intskd-* reset scheduler priority 2716 03610 0 07 173 4003 2717 lda l.d014-* =sffmsp 03611 322 777 0 2718 iera -1 if switching icws, turn it off 03612 2 32 005 0 2719 ansa sf.flg,2 2720 03613 2 20 003 0 2721 int020 szn sf.tly,2 any room in status queue? 03614 0 64 007 3623 2722 tnz int025-* yes, continue assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 95 hintr - hsla interrupt handler 2723 03615 0 20 146 3763 2724 szn intsqo-* status overflow occurred already ? 03616 0 64 003 3621 2725 tnz int024-* yes, skip it 2726 03617 4 10 210 4027 2727 tsy a.d015-*,* handle status queue overflow 03620 0 76 143 3763 2728 aos intsqo-* remember it 2729 03621 3 56 000 0 2730 int024 stz 0,3 zero the ignored status end of binary card 00000055 03622 0 71 056 3700 2731 tra int030-* leave here 2732 03623 2 07 005 0 2733 int025 lda sf.flg,2 synchronous? 03624 0 31 145 3771 2734 cana l.d005-* =sffsyn 03625 0 64 021 3646 2735 tnz int028-* yes, skip the marker test 03626 3 07 000 0 2736 lda 0,3 get first word of status 03627 0 31 153 4002 2737 cana l.d013-* (=hs.nms) marker status? 03630 0 74 016 3646 2738 tze int028-* nope 03631 2 07 005 0 2739 lda sf.flg,2 yes, is one already pending 03632 0 31 151 4003 2740 cana l.d014-* (=sffmsp) 03633 0 74 006 3641 2741 tze int027-* no, we'll have to store this one 03634 3 07 000 0 2742 lda 0,3 (get first word of status back) 03635 0 31 147 4004 2743 cana l.d015-* yes, but are there any other interesting ones? 03636 0 64 003 3641 2744 tnz int027-* yep 03637 3 56 000 0 2745 stz 0,3 ignore this status 03640 0 71 051 3711 2746 tra int040-* 2747 03641 3 07 000 0 2748 int027 lda 0,3 get first word of status again 03642 0 31 132 3774 2749 cana l.d007-* (=hs.siw) switching icws? 03643 0 64 003 3646 2750 tnz int028-* then don't set flag 03644 0 07 137 4003 2751 lda l.d014-* =sffmsp 03645 2 72 005 0 2752 orsa sf.flg,2 turn it on 03646 2753 int028 null 03646 3 04 000 0 2754 ldaq 0,3 get the current status words 03647 6 14 001 0 2755 staq sf.nxa,2* put into the software queue 03650 3 56 000 0 2756 stz 0,3 zero the current status 2757 03651 0 31 123 3774 2758 cana l.d007-* *is it hs.siw for switching 03652 0 74 007 3661 2759 tze int28a-* *no continue 03653 0 31 124 3777 2760 cana l.d010-* *is it hs.rcv recieve only 03654 0 74 005 3661 2761 tze int28a-* *no again 03655 2 07 005 0 2762 lda sf.flg,2 03656 0 31 130 4006 2763 cana l.d017-* *(sffhdl+sffbsc) is it bsc or hdlc? 03657 0 74 002 3661 2764 tze int28a-* no 03660 4 10 146 4026 2765 tsy a.d014-*,* *(swphic) switch buffer now 2766 03661 673 777 0 2767 int28a ila -1 decrement the tally 03662 2 16 003 0 2768 asa sf.tly,2 03663 673 004 0 2769 ila 4 increment the next available 03664 2 16 001 0 2770 asa sf.nxa,2 pointer 2771 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 96 hintr - hsla interrupt handler 03665 2 07 023 0 2772 lda sf.ssl,2 get length of status queue 03666 0336 02 0 2773 als 2 in words 03667 0 17 065 3754 2774 sta intsql-* 03670 3332 00 0 2775 cx2a put sfcm ptr into a end of binary card 00000056 03671 773 056 0 2776 iaa sf.waq 03672 0 06 062 3754 2777 ada intsql-* get ptr to end of status queue 03673 2 27 001 0 2778 cmpa sf.nxa,2 are we at end of queue? 03674 0 64 004 3700 2779 tnz int030-* nope, continue 2780 03675 3332 00 0 2781 cx2a copy sfcm ptr to a 03676 773 056 0 2782 iaa sf.waq get ptr to beginning of queue 03677 2 17 001 0 2783 sta sf.nxa,2 put into q ptr, wrapping q 2784 03700 2 07 005 0 2785 int030 lda sf.flg,2 get the sfcm flags 03701 222 001 0 2786 icana sffskd is the status processor scheduled? 03702 0 64 007 3711 2787 tnz int040-* yes, continue 2788 03703 673 001 0 2789 ila sffskd get flag bit 03704 2 72 005 0 2790 orsa sf.flg,2 turn it on now 2791 03705 0 43 045 3752 2792 ldx1 intrtb-* get real tib address for dspqur 03706 0 04 050 3756 2793 ldaq intskd-* (queue element) 03707 4 10 104 4013 2794 tsy a.d002-*,* (=dspqur) queue hstprc to process status 2795 note: x1 contains real tib address 03710 0 43 043 3753 2796 ldx1 intvtb-* restore virtual tib address to x1 2797 03711 373 002 0 2798 int040 iacx3 2 bump to next status 03712 0 61 036 3750 2799 cmpx3 intend-* are we at end of buffer? 03713 0 64 621 3534 2800 tnz int010-* no, continue 2801 03714 0 20 047 3763 2802 int050 szn intsqo-* did we overflow? 03715 0 64 014 3731 2803 tnz int060-* yes and we process it 03716 0 20 031 3747 2804 szn inthqf-* hardware overflow? 03717 0 74 012 3731 2805 tze int060-* no 2806 03720 2807 cmeter mincs,m.hsqo,l.d016-* 2808 03727 0 10 304 4233 2809 tsy sqovfl-* handle status queue overflow 03730 0 76 033 3763 2810 aos intsqo-* now process hardware the same as software 2811 03731 2812 int060 null 03731 0 20 032 3763 2813 int070 szn intsqo-* did we get another status queue overflow? 03732 0 74 012 3744 2814 tze intret-* no, all is well 2815 03733 2 76 014 0 2816 aos sf.rct,2 bump the repeat count 03734 2 07 014 0 2817 lda sf.rct,2 get the new value 03735 422 024 0 2818 icmpa 20 compare to some random number 03736 0 75 006 3744 2819 tmi intret-* no there yet, let channel run a bit more 2820 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 97 hintr - hsla interrupt handler 03737 1 03 030 0 2821 ldx2 t.sfcm,1 reset sfcm ptr end of binary card 00000057 03740 673 001 0 2822 ila pb.msk set software "mask" bit 03741 2 17 012 0 2823 sta sf.pcw,2 in pcw, and zero other bits (like dtr!!) 03742 0 07 025 3767 2824 lda l.d003-* (=p.msk) get mask op 03743 4 10 056 4021 2825 tsy a.d009-*,* (=cioc) connect to channel 2826 03744 4 71 051 4015 2827 intret tra a.d004-*,* (=mdisp) return to master dispatcher 2828 2829 03745 2830 intcnt bss 1 used for count of pending status 03746 2831 intjtw bss 1 (altrd) 3rd word of jump table 03747 2832 inthqf bss 1 hardware queue overflow 03750 2833 intend bss 1 (altrd) end of hardware status buffer 03751 2834 intcrp bss 1 (altrd) current hardware status ptr 03752 2835 intrtb bss 1 save for real tib address 03753 2836 intvtb bss 1 save for virtual tib address 03754 2837 intsql bss 1 length of software status queue 03755 2838 intvir bss 1 virtual address of head of hardware status queue 2839 03756 2840 even 03756 0 00006 0 2841 intskd zero hpri priority of hstprc 03757 0 04301 1 2842 ind hstprc routine to be run 03760 2843 intsai amicwo w.2,sfhsiz,0 2844 2845 following two words must be together for error message 03761 000004 0 2846 interr dec 4 error code 03762 2847 intlno bss 1 (altrd) line number - tib type 2848 03763 2849 intsqo bss 1 03764 2850 inttly bss 1 2851 2852 03765 000010 0 2853 l.d001 vfd o18/000010 is_hsla bit 03766 010000 0 2854 l.d002 vfd o18/010000 03767 040000 0 2855 l.d003 vfd 18/p.msk 03770 004000 0 2856 l.d004 vfd 18/hs.tro 03771 010000 0 2857 l.d005 vfd 18/sffsyn 03772 000130 0 2858 l.d006 oct 000130,000110 03773 000110 0 03774 010000 0 2859 l.d007 vfd 18/hs.siw 03775 020000 0 2860 l.d008 vfd 18/hs.aiw 03776 007777 0 2861 l.d009 oct 007777 03777 400000 0 2862 l.d010 vfd 18/hs.rcs 04000 777377 0 2863 l.d011 vfd o18//pb.rcv 04001 004000 0 2864 l.d012 vfd 18/sffsqo 04002 200000 0 2865 l.d013 vfd 18/hs.nms 04003 020000 0 2866 l.d014 vfd 18/sffmsp 04004 016200 0 2867 l.d015 vfd 18/hs.siw+hs.ptr+hs.tro+hs.dss 04005 000001 0 2868 l.d016 dec 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 98 hintr - hsla interrupt handler 04006 402000 0 2869 l.d017 vfd 18/sffhdl+sffbsc 04007 410000 0 2870 l.d018 oct 410000 exhausted icw with 18-bit addressing on 04010 001000 0 2871 l.d019 vfd 18/sffcai altenate status buffer 04011 776777 0 2872 l.d020 vfd o18//sffcai and mask for turning off alt status 2873 04012 0 34000 3 2874 a.d001 ind setbpt 04013 0 15000 3 2875 a.d002 ind dspqur 04014 1 00000 0 2876 a.d003 ind 0,w.2 04015 0 11000 3 2877 a.d004 ind mdisp 04016 0 26000 3 2878 a.d005 ind gettib end of binary card 00000058 04017 0 00702 0 2879 a.d006 ind .crpte pointer to variable cpu page table word 04020 0 03000 3 2880 a.d007 ind cvabs 2881 *a.d008 unused 04021 0 03147 1 2882 a.d009 ind cioc 04022 0 35000 3 2883 a.d010 ind setptw set up page table word 04023 0 04602 1 2884 a.d011 ind stpcnt 04024 0 05243 1 2885 a.d012 ind stpret 04025 0 04576 1 2886 a.d013 ind stpswd 04026 0 05632 1 2887 a.d014 ind swphic 04027 0 04233 1 2888 a.d015 ind sqovfl assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 99 preallocated buffer tables 2890 2891 preallocated chain table 2892 a pointer to the preallocated buffer pool. 2893 04030 000000 0 2894 pchtbl oct 000000 04031 000000 0 2895 oct 000000 04032 000000 0 2896 oct 000000 04033 000000 0 2897 oct 000000 04034 000000 0 2898 oct 000000 04035 000000 0 2899 oct 000000 04036 000000 0 2900 oct 000000 04037 000000 0 2901 oct 000000 2902 2903 preallocated chain left table 2904 the number of buffers in the preallocated chain 2905 04040 000000 0 2906 pchlft oct 000000 04041 000000 0 2907 oct 000000 04042 000000 0 2908 oct 000000 04043 000000 0 2909 oct 000000 04044 000000 0 2910 oct 000000 04045 000000 0 2911 oct 000000 04046 000000 0 2912 oct 000000 04047 000000 0 2913 oct 000000 2914 2915 preallocated buffer max count table 2916 04050 000000 0 2917 pbfmax oct 000000 04051 000000 0 2918 oct 000000 04052 000000 0 2919 oct 000000 04053 000000 0 2920 oct 000000 04054 000000 0 2921 oct 000000 04055 000000 0 2922 oct 000000 04056 000000 0 2923 oct 000000 04057 000000 0 2924 oct 000000 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 100 albchs - allocate buffer check 2926 ****************************************************************************** 2927 * 2928 * albchs - alocate buffer check 2929 * 2930 * this will check and allocate the preallocated buffer 2931 * chains for any high speed sync lines. 2932 * if no buffer can be allocated, 2933 * the icw switching code will handle it when the time comes 2934 * as an exhaust condition. 2935 * coded for switching icw problem by 2936 * d. w. cousins on march 24, 1981 2937 * 2938 ***************************************************************************** 04060 2939 albchs subr alb,(a,q,x1,x2,x3) end of binary card 00000059 04102 673 000 0 2940 ila 0 *set up index for table 04103 0332 00 0 2941 cax2 04104 422 010 0 2942 alb010 icmpa 8 *is it max yet 04105 0 74 041 4146 2943 tze albret-* *finish 04106 4 07 046 4154 2944 lda a.w003-*,* *(pbfmax,2) get max buffer for this line 04107 0 74 034 4143 2945 tze alb040-* *if zero no allocate 04110 0 17 040 4150 2946 sta pamax-* *store it temp for compare 04111 4 07 042 4153 2947 alb020 lda a.w002-*,* *(pchlft,2) number of buffer left 04112 0 27 036 4150 2948 cmpa pamax-* *compare number left to max 04113 0 74 030 4143 2949 tze alb040-* *already full 04114 0 65 027 4143 2950 tpl alb040-* *that all for now 04115 3332 00 0 2951 cx2a *calc the bufer size 04116 773 001 0 2952 iaa 1 04117 0336 05 0 2953 als 5 04120 6333 00 0 2954 caq *put it in q for getubf 04121 4 10 034 4155 2955 tsy a.w004-*,* *=getubf 04122 0 71 021 4143 2956 tra alb030-* *error no buffer 04123 0 17 026 4151 2957 sta albabs-* save absolute address 04124 3 07 001 0 2958 lda bf.siz,3 *get it real size 04125 2337 17 0 2959 arl 15 04126 0336 06 0 2960 als bufshf+1 04127 773 073 0 2961 iaa hbfnch 04130 3 72 001 0 2962 orsa bf.tly,3 04131 0 41 020 4151 2963 ldx3 albabs-* get absolute address again 04132 0 10 030 4162 2964 tsy adtopa-* *add it to the chain 2965 04133 2966 smeter mincd,.mbfpa,l.w002-* end of binary card 00000060 2967 04142 0 71 747 4111 2968 tra alb020-* *go again 04143 2969 alb030 null *allocation failed it ok now 04143 273 001 0 2970 alb040 iacx2 1 *inc the counter for next buffer 04144 3332 00 0 2971 cx2a *get it to a for max test 04145 0 71 737 4104 2972 tra alb010-* *check again 04146 2973 albret return albchs assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 101 albchs - allocate buffer check 2974 04150 2975 pamax bss 1 04151 2976 albabs bss 1 2977 04152 2 04030 1 2978 a.w001 ind pchtbl,2 prellocated buffer chain 04153 2 04040 1 2979 a.w002 ind pchlft,2 number of buffer left in chain 04154 2 04050 1 2980 a.w003 ind pbfmax,2 max number of buffer in a chain 04155 0 22000 3 2981 a.w004 ind getbfh get user buffer 04156 0 16000 3 2982 a.w005 ind frebfh free buffer 04157 0 34000 3 2983 a.w006 ind setbpt virtualize buffer address 2984 04160 402000 0 2985 l.w001 vfd 18/sffhdl+sffbsc 04161 000001 0 2986 l.w002 dec 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 102 adtopa - add to preallocated chain 2988 *********************************************************************** 2989 * adtopa - add to preallocated chain 2990 * 2991 * this inhibited code adds a buffer to the 2992 * preallocated chain for a particular buffer size. 2993 * 2994 * x2 contains offset into buffer-size tables for the 2995 * given size. 2996 * 2997 * this is to help icw switching problem 2998 * coded by d. w. cousins on march 24, 1981 2999 * 3000 ********************************************************************* 04162 3001 adtopa subr adt,(x1,inh) 04174 4 07 756 4152 3002 lda a.w001-*,* (pchtbl,2) get head of chain 04175 0 74 006 4203 3003 tze adt020-* *may be finish 04176 4 10 761 4157 3004 adt010 tsy a.w006-*,* setbpt 04177 4332 00 0 3005 cax1 *ok we got the virtual address 04200 1 07 000 0 3006 lda bf.nxt,1 *get the next address 04201 0 74 004 4205 3007 tze adt030-* *good we arrive 04202 0 71 774 4176 3008 tra adt010-* *again 04203 4 50 747 4152 3009 adt020 stx3 a.w001-*,* *(pchtbl,2) store the address at the head 04204 0 71 002 4206 3010 tra adt040-* *all done 04205 1 50 000 0 3011 adt030 stx3 bf.nxt,1 *store it in the buffer 04206 4 76 745 4153 3012 adt040 aos a.w002-*,* *(pchlft,2) add one to number of buffer in chain 04207 3013 return adtopa *all done end of binary card 00000061 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 103 dumsbf - dump store buffer 3015 ******************************************************************* 3016 * 3017 * dumsbf - dump store buffer 3018 * 3019 * icw switching stored the buffer address with the software 3020 * status in the sfcm for bsc and hdlc channels. this will dump it. 3021 * 3022 * written by d. w. cousins on april 13, 1981 for sicw problem 3023 * 3024 ******************************************************************* 3025 04211 3026 dumsbf subr dsf,(x2) 04217 1 03 030 0 3027 ldx2 t.sfcm,1 *some basic check 04220 2 07 005 0 3028 lda sf.flg,2 04221 0 31 737 4160 3029 cana l.w001-* * (sffhdl+sffbsc) is it bsc or hdlc? 04222 0 74 005 4227 3030 tze dsfret-* *no 04223 473 000 0 3031 ilq 0 *going to tell frebuf to use buffer size 04224 0 07 006 4232 3032 lda bftsa-* *get the buffer 04225 0 74 002 4227 3033 tze dsfret-* *zero buffer address 04226 4 10 730 4156 3034 tsy a.w005-*,* *=frebfh 04227 3035 dsfret return dumsbf 3036 04231 3037 bftx3 bss 1 04232 3038 bftsa bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 104 sqovfl - status queue overflow 04233 3040 sqovfl subr sqo(x2) 3041 3042 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3043 * 3044 * sqovfl 3045 * 3046 * finds the last status stored in the software 3047 * status queue and turns on the sqo bit. also, 3048 * takes the channel out of receive mode. 3049 * 3050 * upon entry: 3051 * x1 - virtual tib address 3052 * x2 - virtual sfcm address 3053 * 3054 * returns: 3055 * 3056 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3057 04241 3058 cmeter mincs,m.ssqo,l.d016-* 3059 04250 0 07 531 4001 3060 lda l.d012-* (=sffsqo) 04251 2 31 005 0 3061 cana sf.flg,2 status queue overflow pending ? 04252 0 64 024 4276 3062 tnz sqoret-* yes, done 04253 2 72 005 0 3063 orsa sf.flg,2 indicate status queue overflow 3064 end of binary card 00000062 04254 0 07 524 4000 3065 lda l.d011-* (=/pb.rcv) 04255 2 32 012 0 3066 ansa sf.pcw,2 turn off pcw rcv bit 04256 673 000 0 3067 ila p.nop get pcw nop command 04257 4 10 542 4021 3068 tsy a.d009-*,* (cioc) exit rcv mode 3069 04260 2 07 023 0 3070 lda sf.ssl,2 get length of status queue 04261 4336 04 0 3071 qls 4 in words 04262 0 17 016 4300 3072 sta sqosql-* 04263 3332 00 0 3073 cx2a put sfcm addr in a 04264 773 056 0 3074 iaa sf.waq get start of status queue addr 04265 2 27 001 0 3075 cmpa sf.nxa,2 next status at start of queue ? 04266 0 64 003 4271 3076 tnz sqo010-* no 04267 0 06 011 4300 3077 ada sqosql-* get end of queue addr 04270 0 71 002 4272 3078 tra sqo020-* 3079 04271 3080 sqo010 null 04271 2 07 001 0 3081 lda sf.nxa,2 get next status addr 3082 04272 3083 sqo020 null 04272 773 774 0 3084 iaa -4 back up to last status 04273 0332 00 0 3085 cax2 put in x2 3086 04274 673 010 0 3087 ila hs.sqo get status queue overflow bit 04275 2 72 000 0 3088 orsa 0,2 set sqo in last status assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 105 sqovfl - status queue overflow 3089 04276 3090 sqoret return sqovfl 3091 04300 3092 sqosql bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 106 hstprc - hsla status processor 04301 3094 hstprc null transfered to by secondary dispatcher 3095 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3096 * 3097 * hstprc 3098 * 3099 * this routine is the main guts of hsla_man. 3100 * it is the scheduled status processor, which processes 3101 * the status queued for it by hintr, the interrupt 3102 * handling routine. all queued status for a line is processed 3103 * by hstprc before it returns. some of this processing 3104 * may result in the dcw interpreter or the control 3105 * table interpreter being called. 3106 * 3107 * upon entry: 3108 * x1 - real tib address 3109 * 3110 * returns: 3111 * 3112 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3113 04301 2332 00 0 3114 cx1a get real tib address in a 04302 0 17 302 4604 3115 sta stptib-* save for use with dspqur and trace 04303 4 10 517 4022 3116 tsy a.d010-*,* (setptw) virtualize real tib address 04304 4332 00 0 3117 cax1 virtual tib address goes in x1 04305 1 03 030 0 3118 ldx2 t.sfcm,1 get virtual sfcm address 3119 04306 2 07 023 0 3120 lda sf.ssl,2 figure out current number of pending status 04307 2 26 003 0 3121 sba sf.tly,2 to meter it 04310 4 17 513 4023 3122 sta a.d011-*,* (stpcnt) 04311 3123 cmeter mupdat,m.nst,(a.d011-*(*)) 3124 04320 2 07 003 0 3125 lda sf.tly,2 get queue tally 04321 2 27 023 0 3126 cmpa sf.ssl,2 is it at max? end of binary card 00000063 04322 4 74 336 4660 3127 tze a.e019-*,* (stp210) yes, no work to be done here 3128 04323 4 56 500 4023 3129 stz a.d011-*,* (stpcnt) zero status processed counter 3130 04324 2 07 012 0 3131 stp010 lda sf.pcw,2 check to see if channel is masked 04325 222 001 0 3132 icana pb.msk 04326 0 74 007 4335 3133 tze stp012-* it isn't, proceed 04327 4 10 340 4667 3134 tsy a.e026-*,* (mskchn) it is, report it 04330 673 001 0 3135 ila sffskd through processing status 04331 322 777 0 3136 iera -1 so turn off "scheduled" bit 04332 2 32 005 0 3137 ansa sf.flg,2 04333 2 56 014 0 3138 stz sf.rct,2 04334 4 71 334 4670 3139 tra a.e027-*,* (stpret) all finished 04335 4 76 466 4023 3140 stp012 aos a.d011-*,* (stpcnt) bump counter of number processed 04336 4 07 465 4023 3141 lda a.d011-*,* (stpcnt) get counter value 04337 422 003 0 3142 icmpa 3 have we done to many in a row? assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 107 hstprc - hsla status processor 04340 0 75 006 4346 3143 tmi stp015-* no 3144 04341 0 43 243 4604 3145 ldx1 stptib-* yes. get real tib address 04342 673 006 0 3146 ila hpri get default scheduling priority 04343 0 47 414 3757 3147 ldq intskd-*+1 (=hstprc) get addr of status processor 04344 4 10 447 4013 3148 tsy a.d002-*,* (=dspqur) reschedule status processor 04345 4 71 457 4024 3149 tra a.d012-*,* (=stpret) done for now 3150 04346 4 10 316 4664 3151 stp015 tsy a.e023-*,* (=albchs) 04347 6 04 002 0 3152 ldaq sf.nxp,2* pick up the next status to be processed 04350 4 14 455 4025 3153 staq a.d013-*,* (=stpswd) save it away 04351 2 41 002 0 3154 ldx3 sf.nxp,2 *get address of current status 04352 3 07 002 0 3155 lda 2,3 *get the buffer address 04353 0 17 657 4232 3156 sta bftsa-* *store it now 04354 0 50 655 4231 3157 stx3 bftx3-* *save the address to it 04355 3158 trace tt.sta,ts.sta,(stptib,stpswd,stpswd+1) 3159 end of binary card 00000064 04373 2 76 003 0 3160 aos sf.tly,2 increment the tally 04374 673 004 0 3161 ila 4 and also the next ptr 04375 2 16 002 0 3162 asa sf.nxp,2 to the status q 3163 04376 2 07 023 0 3164 lda sf.ssl,2 get size of status queue 04377 0336 02 0 3165 als 2 in words 04400 0 17 206 4606 3166 sta stpsql-* 04401 3332 00 0 3167 cx2a put x2 into a 04402 773 056 0 3168 iaa sf.waq get ptr to end of queue 04403 0 06 203 4606 3169 ada stpsql-* 04404 2 27 002 0 3170 cmpa sf.nxp,2 are we at the end? 04405 0 64 004 4411 3171 tnz stp020-* no, continue 3172 04406 3332 00 0 3173 cx2a put sfcm into a again 04407 773 056 0 3174 iaa sf.waq make ptr to head of queue 04410 2 17 002 0 3175 sta sf.nxp,2 and reset ptr, wraping queue 3176 04411 0 56 172 4603 3177 stp020 stz stpmrk-* init saved status 04412 0 07 164 4576 3178 lda stpswd-* get the first word of status 04413 0 31 174 4607 3179 cana l.e001-* (=hs.rcs) input status? 04414 4 74 245 4661 3180 tze a.e020-*,* (=stp100) no, output status assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 108 hstprc - hsla status processor 3182 input status processor 3183 04415 1 07 000 0 3184 lda t.stat,1 04416 0 34 176 4614 3185 ana l.e006-* (tsfst+tsfmrk+tsftrm) isolate requested status 04417 0 17 164 4603 3186 sta stpmrk-* save it for later 04420 322 777 0 3187 iera -1 04421 1 32 000 0 3188 ansa t.stat,1 turn off the tib flags 3189 04422 0 07 155 4577 3190 lda stpswd+1-* get the 2nd status word 04423 2337 01 0 3191 arl 1 line up with tib rcv status bit 04424 1 37 000 0 3192 ora t.stat,1 or in tib status 04425 0 34 163 4610 3193 ana l.e002-* (=tsfrcv) leave only that, rcv mode? 04426 0 64 010 4436 3194 tnz stp030-* yes, continue 3195 04427 4 10 207 4636 3196 tsy a.e001-*,* (=dmpbuf) dump any input buffers 04430 0 10 561 4211 3197 tsy dumsbf-* dump tempory store buffer 3198 04431 0 07 145 4576 3199 lda stpswd-* get the first word of status 04432 0 31 163 4615 3200 cana l.e007-* (=hs.dss) any data set status changes? 04433 0 74 365 5020 3201 tze stp080-* no, skip rest of hardware status 3202 04434 4 10 212 4646 3203 tsy a.e009-*,* (=ipdss) process the data set changes 3204 04435 4 71 230 4665 3205 tra a.e024-*,* (stp095) 3206 04436 0 07 140 4576 3207 stp030 lda stpswd-* get the status word 04437 0337 14 0 3208 ars 12 shift into line with the other bit 04440 2 35 005 0 3209 era sf.flg,2 x-or the other one in 04441 222 002 0 3210 icana sffcii are the two bits the same? end of binary card 00000065 04442 0 74 030 4472 3211 tze stp040-* yes, all ok 3212 04443 2 07 005 0 3213 lda sf.flg,2 *must check for bsc and hdlc 04444 0 31 160 4624 3214 cana l.e014-* *(sffhdl+sffbsc) bsc or hdlc? already got buffer 04445 0 64 025 4472 3215 tnz stp040-* 3216 04446 3217 trace tt.ira,ts.sta,(stptib) trace recovery try 3218 04456 2 41 006 0 3219 ldx3 sf.ib0,2 get ptr to first input buffer 04457 2 07 005 0 3220 lda sf.flg,2 get sfcm flag bits 04460 222 002 0 3221 icana sffcii are we in alt buffer? 04461 0 74 002 4463 3222 tze 2 no 04462 2 41 007 0 3223 ldx3 sf.ib1,2 get it here 3224 04463 3333 00 0 3225 cx3a any buffer? 04464 0 74 004 4470 3226 tze stp035-* no buffer 3227 3228 need virtual address 04465 4 10 201 4666 3229 tsy a.e025-*,* setbpt 04466 4333 00 0 3230 cax3 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 109 hstprc - hsla status processor 04467 4 10 163 4652 3231 tsy a.e013-*,* (=ipterm) simulate terminate interrupt 3232 04470 673 002 0 3233 stp035 ila sffcii get bit 04471 2 62 005 0 3234 ersa sf.flg,2 invert it, we are right now? 3235 04472 2 07 005 0 3236 stp040 lda sf.flg,2 *check line type 04473 0 31 131 4624 3237 cana l.e014-* *(sffhdl+sffbsc) is it bsc or hdlc? 04474 0 74 006 4502 3238 tze stp045-* *no 04475 0 07 101 4576 3239 lda stpswd-* switched icws? 04476 0 31 137 4635 3240 cana l.e024-* =hs.siw 04477 0 74 003 4502 3241 tze stp045-* no, buffer isn't stored with status 04500 0 41 532 4232 3242 ldx3 bftsa-* *load the buffer address 04501 0 71 006 4507 3243 tra stp050-* *go to next step 04502 2 41 006 0 3244 stp045 ldx3 sf.ib0,2 get primary buffer prt 04503 2 07 005 0 3245 lda sf.flg,2 get the sfcm flags 04504 222 002 0 3246 icana sffcii alternate icw? 04505 0 74 002 4507 3247 tze stp050-* no, continue 04506 2 41 007 0 3248 ldx3 sf.ib1,2 get the secondary buf ptr 3249 04507 0 50 071 4600 3250 stp050 stx3 stpbuf-* indicate which buffer end of binary card 00000066 04510 373 000 0 3251 iacx3 0 zero buffer address ? 04511 0 64 005 4516 3252 tnz stp051-* no 04512 0 07 116 4630 3253 lda l.e018-* get mask for status word 0 04513 0 32 063 4576 3254 ansa stpswd-* turn off bits that imply a buffer 04514 0 07 115 4631 3255 lda l.e019-* get mask for status word 1 04515 0 32 062 4577 3256 ansa stpswd+1-* turn off bits that imply a buffer 3257 04516 0 07 106 4624 3258 stp051 lda l.e014-* (=sffbsc+sffhdl) 04517 2 31 005 0 3259 cana sf.flg,2 is it bisync or hdlc? 04520 0 74 237 4757 3260 tze stp060-* no 3261 3262 check bisync and hdlc status conditions 3263 04521 0 07 055 4576 3264 stp052 lda stpswd-* get first status word 04522 0 31 073 4615 3265 cana l.e007-* (=hs.dss), data set status change? 04523 0 74 002 4525 3266 tze 2 no 04524 4 10 122 4646 3267 tsy a.e009-*,* (=ipdss), process it first 3268 04525 0 07 051 4576 3269 lda stpswd-* *load status word 04526 0 31 064 4612 3270 cana l.e004-* =hs.siw 04527 0 74 006 4535 3271 tze stp053-* *not switching yet 04530 0 07 502 4232 3272 lda bftsa-* *load the buffer address 04531 0 74 004 4535 3273 tze stp053-* *no buffer get out 04532 4 10 134 4666 3274 tsy a.e025-*,* setbpt 04533 4333 00 0 3275 cax3 get virtual address in x3 04534 4 10 120 4654 3276 tsy a.e015-*,* *(=ipbfsw) switch buffers 3277 04535 0 56 044 4601 3278 stp053 stz stptra-* zero status accumulation 04536 0 07 076 4634 3279 lda l.e023-* (=sffhdl) assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 110 hstprc - hsla status processor 04537 2 31 005 0 3280 cana sf.flg,2 hdlc line? 04540 0 64 005 4545 3281 tnz stp05a-* yes 3282 04541 0 41 114 4655 3283 ldx3 a.e016-* get bsc status map ptr 04542 0 07 114 4656 3284 lda a.e017-* get bsc status map end ptr 04543 0 17 042 4605 3285 sta stpend-* save it 04544 0 71 004 4550 3286 tra stp05b-* 3287 04545 0 41 115 4662 3288 stp05a ldx3 a.e021-* get hdlc status map ptr 04546 0 07 115 4663 3289 lda a.e022-* get hdlc status map end ptr 04547 0 17 036 4605 3290 sta stpend-* save it 3291 04550 0 07 026 4576 3292 stp05b lda stpswd-* get first status word 04551 3 31 000 0 3293 stp054 cana 0,3 isolate interesting bits 04552 0 64 010 4562 3294 tnz stp057-* if on, set them 3295 04553 373 002 0 3296 stp056 iacx3 2 bump table ptr 04554 0 61 031 4605 3297 cmpx3 stpend-* end of table ? 04555 0 74 012 4567 3298 tze stp058-* yes 3299 04556 3 20 000 0 3300 szn 0,3 switch words ? end of binary card 00000067 04557 0 64 772 4551 3301 tnz stp054-* not yet 3302 04560 0 07 017 4577 3303 lda stpswd+1-* get second status word 04561 0 71 772 4553 3304 tra stp056-* 3305 04562 6333 00 0 3306 stp057 caq save status word 04563 3 07 001 0 3307 lda 1,3 get status bits 04564 0 72 015 4601 3308 orsa stptra-* turn them on 04565 7333 00 0 3309 cqa restore status word 04566 0 71 765 4553 3310 tra stp056-* 3311 04567 0 07 012 4601 3312 stp058 lda stptra-* check for any new status bits 04570 0 74 230 5020 3313 tze stp080-* none - try usual case 3314 04571 1 07 000 0 3315 lda t.stat,1 get tib status flags 04572 022 017 0 3316 iana s.dss leave only common bits 04573 0 37 006 4601 3317 ora stptra-* add interesting bits 04574 4 10 045 4641 3318 tsy a.e004-*,* (=istat) call interp to process status 04575 0 71 215 5012 3319 tra stp075-* continue 3320 04576 3321 even 04576 3322 stpswd bss 2 save area for status word 04600 3323 stpbuf bss 1 ptr to current buffer 04601 3324 stptra bss 1 addr of routine to run 04602 3325 stpcnt bss 1 count of processed status this call 04603 3326 stpmrk bss 1 saved copy of tsfst+tsfmrk+tsftrm 04604 3327 stptib bss 1 saved value of real tib address 04605 3328 stpend bss 1 set to bscend or hdcend assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 111 hstprc - hsla status processor 04606 3329 stpsql bss 1 length of software status queue 3330 3331 3332 04607 400000 0 3333 l.e001 vfd 18/hs.rcs 04610 000200 0 3334 l.e002 vfd 18/tsfrcv 04611 777757 0 3335 l.e003 vfd o18//tsfst 04612 010000 0 3336 l.e004 vfd 18/hs.siw 04613 000140 0 3337 l.e005 vfd 18/tsfmrk+tsftrm 04614 000160 0 3338 l.e006 vfd 18/tsfst+tsfmrk+tsftrm 04615 000200 0 3339 l.e007 vfd 18/hs.dss 04616 410000 0 3340 l.e008 vfd o18/410000 04617 000400 0 3341 l.e009 vfd 18/sffstp 04620 200000 0 3342 l.e010 vfd 18/hs.nms 04621 002000 0 3343 l.e011 vfd 18/hs.ptr 04622 000020 0 3344 l.e012 vfd 18/tsfst 04623 773777 0 3345 l.e013 vfd o18//sffsqo 04624 402000 0 3346 l.e014 vfd 18/sffhdl+sffbsc 04625 000400 0 3347 l.e015 vfd 18/hs.rcv 04626 000200 0 3348 l.e016 vfd 18/hs.xmt 04627 020000 0 3349 l.e017 vfd 18/s.xte 04630 434777 0 3350 l.e018 vfd o18//hs.nms*/hs.dms*/hs.trm*/hs.ptr*/hs.per 04631 776773 0 3351 l.e019 vfd o18//hs.rbt*/hs.crc 04632 001000 0 3352 l.e020 vfd 18/hs.per 04633 010000 0 3353 l.e021 vfd 18/s.prty 3354 *l.e022 unused 04634 400000 0 3355 l.e023 vfd 18/sffhdl end of binary card 00000068 04635 010000 0 3356 l.e024 vfd 18/hs.siw 3357 04636 0 05244 1 3358 a.e001 ind dmpbuf 04637 0 04671 1 3359 a.e002 ind istats 04640 0 04705 1 3360 a.e003 ind iends 04641 0 06000 3 3361 a.e004 ind istat 04642 0 04705 1 3362 a.e005 ind ostats 04643 0 04713 1 3363 a.e006 ind oends 04644 0 00012 1 3364 a.e007 ind hdcw 04645 0 33000 3 3365 a.e008 ind secdsp 04646 0 06076 1 3366 a.e009 ind ipdss 04647 0 06011 1 3367 a.e010 ind ipptro 04650 0 06173 1 3368 a.e011 ind dssflg 04651 0 07267 1 3369 a.e012 ind echock 04652 0 05523 1 3370 a.e013 ind ipterm 04653 0 07440 1 3371 a.e014 ind opptro 04654 0 05615 1 3372 a.e015 ind ipbfsw 04655 0 04713 1 3373 a.e016 ind bscsts 04656 0 04737 1 3374 a.e017 ind bscend 04657 0 04324 1 3375 a.e018 ind stp010 04660 0 05214 1 3376 a.e019 ind stp210 04661 0 05113 1 3377 a.e020 ind stp100 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 112 hstprc - hsla status processor 04662 0 04737 1 3378 a.e021 ind hdcsts 04663 0 04757 1 3379 a.e022 ind hdcend 04664 0 04060 1 3380 a.e023 ind albchs 04665 0 05051 1 3381 a.e024 ind stp095 04666 0 34000 3 3382 a.e025 ind setbpt 04667 0 02767 1 3383 a.e026 ind mskchn 04670 0 05243 1 3384 a.e027 ind stpret 3385 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 113 status lookup tables for hstprc 3387 3388 input status table 3389 04671 3390 istats stats hs.tro,iptro 04673 3391 stats hs.trm,ipterm 04675 3392 stats hs.nms,ipmark 04677 3393 stats hs.ptr,ipptro 04701 3394 stats hs.xte,ipxte 04703 3395 stats hs.dss,ipdss end of binary card 00000069 004705 3396 iends equ * 3397 3398 output status table 3399 04705 3400 ostats stats hs.ptr,opptro 04707 3401 stats hs.tro,optro 04711 3402 stats hs.xte,opxte 004713 3403 oends equ * 3404 3405 table to map bisync status to wait block status 3406 04713 3407 bscsts smap hs.trm,s.brch 04715 3408 smap hs.nms,s.bmk 04717 3409 smap hs.dms,s.bdmk 04721 3410 smap hs.xte,s.xte 04723 3411 smap hs.per,s.prty 04725 3412 smap hs.tro,s.xte 04727 3413 smap 0,0 04731 3414 smap hs.rbt,s.rbt 04733 3415 smap hs.crc,s.prty 04735 3416 smap hs.rto,s.rto 004737 3417 bscend equ * 3418 3419 table to map hdlc status to wait block status 3420 04737 3421 hdcsts smap hs.tro,s.exh 04741 3422 smap hs.isd,s.isd 04743 3423 smap hs.xte,s.xte 04745 3424 smap hs.fce,s.fcse 04747 3425 smap hs.rab,s.rabt 04751 3426 smap 0,0 04753 3427 smap hs.byt,s.pbyt end of binary card 00000070 04755 3428 smap hs.rbt,s.rbt 004757 3429 hdcend equ * assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 114 hstprc - hsla status processor 04757 0 07 617 4576 3432 stp060 lda stpswd-* get status word 04760 0 31 652 4632 3433 cana l.e020-* (=hs.per) parity error ? 04761 0 74 005 4766 3434 tze stp062-* no 3435 04762 1 07 000 0 3436 lda t.stat,1 get tib status 04763 022 017 0 3437 iana s.dss leave only interesting bits 04764 0 37 647 4633 3438 ora l.e021-* (=s.prty) set parity error status 04765 4 10 654 4641 3439 tsy a.e004-*,* (=istat) call interpreter 3440 04766 0 41 651 4637 3441 stp062 ldx3 a.e002-* (=istats) get status table ptr 04767 0 07 607 4576 3442 lda stpswd-* get the status word 04770 3 31 000 0 3443 stp065 cana 0,3 is this status bit on? 04771 0 64 005 4776 3444 tnz stp070-* yes, call that routine 3445 04772 373 002 0 3446 iacx3 2 bump the ptr to next entry 04773 0 61 645 4640 3447 cmpx3 a.e003-* (=iends) end of table? 04774 0 64 774 4770 3448 tnz stp065-* no, continue loop 3449 04775 0 71 023 5020 3450 tra stp080-* continue status processing 3451 04776 3 07 001 0 3452 stp070 lda 1,3 get the routine to call 04777 0 17 602 4601 3453 sta stptra-* save this addr 05000 0 07 600 4600 3454 lda stpbuf-* get pointer to the current buffer 05001 4 10 665 4666 3455 tsy a.e025-*,* setbpt 05002 4333 00 0 3456 cax3 05003 4 10 576 4601 3457 tsy stptra-*,* go call that routine 3458 05004 0 07 572 4576 3459 lda stpswd-* get status word 05005 0 31 613 4620 3460 cana l.e010-* (=hs.nms) was it marker status? 05006 0 74 004 5012 3461 tze stp075-* no, continue 3462 05007 0 31 612 4621 3463 cana l.e011-* (=hs.ptr) ptro status also? 05010 0 74 002 5012 3464 tze stp075-* no 3465 05011 4 10 636 4647 3466 tsy a.e010-*,* (=ipptro) process the ptro 3467 05012 0 07 564 4576 3468 stp075 lda stpswd-* get the status word 05013 0 31 577 4612 3469 cana l.e004-* (=hs.siw) switching icw's? 05014 0 74 035 5051 3470 tze stp095-* no, continue 3471 05015 673 002 0 3472 ila sffcii get the icw indicator bit 05016 2 62 005 0 3473 ersa sf.flg,2 and flip the bit in flag word 05017 0 71 032 5051 3474 tra stp095-* finish the status processing 3475 05020 0 07 577 4617 3476 stp080 lda l.e009-* (=sffstp) get the stop channel bit 05021 2 31 005 0 3477 cana sf.flg,2 did we just reset xmit mode? end of binary card 00000071 05022 0 74 011 5033 3478 tze stp090-* no, done 3479 05023 322 777 0 3480 iera -1 invert the bit assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 115 hstprc - hsla status processor 05024 2 32 005 0 3481 ansa sf.flg,2 and turn it off in the sfcm 3482 05025 2 56 010 0 3483 stz sf.ob0,2 zero ptrs in case we 05026 2 56 011 0 3484 stz sf.ob1,2 just did a stop channel 3485 05027 2 41 000 0 3486 ldx3 sf.hcm,2 get ptr to hwcm 05030 0 07 566 4616 3487 lda l.e008-* (=410000) get the exhaust bit 05031 3 17 005 0 3488 sta h.sic0+1,3 store in both icws to 05032 3 17 007 0 3489 sta h.sic1+1,3 make sure hsla does not use again 3490 05033 0 07 543 4576 3491 stp090 lda stpswd-* get the status word 05034 0 31 556 4612 3492 cana l.e004-* (=hs.siw) are we switching icw's? 05035 0 74 003 5040 3493 tze stp092-* no, continue 3494 05036 673 002 0 3495 ila sffcii get the icw bit 05037 2 62 005 0 3496 ersa sf.flg,2 invert it now 3497 05040 2 07 005 0 3498 stp092 lda sf.flg,2 get sfcm flag bits 05041 222 100 0 3499 icana sffech is echo in progress now? 05042 0 64 007 5051 3500 tnz stp095-* yes, skip it 3501 05043 2 07 012 0 3502 lda sf.pcw,2 get pcw bits 05044 222 200 0 3503 icana pb.xmt are we in xmit mode? 05045 0 64 004 5051 3504 tnz stp095-* yes, can't echo now 3505 05046 4 10 603 4651 3506 tsy a.e012-*,* (=echock) check about echoing now 05047 0 71 002 5051 3507 tra stp095-* win, we started to echo 05050 0 71 001 5051 3508 tra stp095-* but who cares anyway. 3509 05051 0 07 532 4603 3510 stp095 lda stpmrk-* any requested status? 05052 0 74 124 5176 3511 tze stp200-* no, continue 05053 0 31 540 4613 3512 cana l.e005-* (=tsfmrk+tsftrm) marker or terminate? 05054 0 74 026 5102 3513 tze stp096-* no 3514 3515 * only do terminate and/or marker status if hardware status agrees 3516 * with tib status with respect to recieve and transmit modes 3517 05055 1 07 000 0 3518 lda t.stat,1 pick up tib status 05056 0336 01 0 3519 als 1 line up tib rcv bit with hw rcv bit 05057 0 35 520 4577 3520 era stpswd+1-* get xor of rcv bits 05060 0 34 545 4625 3521 ana l.e015-* (=hs.rcv) isolate result 05061 0 64 021 5102 3522 tnz stp096-* bits were different 05062 1 07 000 0 3523 lda t.stat,1 get tib status bits again 05063 0337 01 0 3524 ars 1 line up xmt bits 05064 0 35 513 4577 3525 era stpswd+1-* 05065 0 34 541 4626 3526 ana l.e016-* isolate xor of xmt bits 05066 0 64 014 5102 3527 tnz stp096-* bits were different 3528 05067 1 07 000 0 3529 lda t.stat,1 get tib status 05070 022 017 0 3530 iana s.dss but only the ones we want assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 116 hstprc - hsla status processor end of binary card 00000072 05071 0 37 512 4603 3531 ora stpmrk-* get requested status bits 05072 0 34 517 4611 3532 ana l.e003-* (=/tsfst) but turn off this one 05073 6333 00 0 3533 caq save status bits 05074 0 07 517 4613 3534 lda l.e005-* (=tsfmrk+tsftrm) 05075 322 777 0 3535 iera -1 invert bits 05076 0 32 505 4603 3536 ansa stpmrk-* turn off marker and terminate 05077 7333 00 0 3537 cqa get saved status back in a 3538 05100 4 10 541 4641 3539 tsy a.e004-*,* (=istat) call intrp to process status 05101 0 71 075 5176 3540 tra stp200-* done with rcv status 3541 05102 0 07 501 4603 3542 stp096 lda stpmrk-* 05103 0 31 517 4622 3543 cana l.e012-* (=tsfst) requested status? 05104 0 74 072 5176 3544 tze stp200-* no, all done with status 3545 05105 0 07 515 4622 3546 lda l.e012-* (=tsfst) get the bit 05106 322 777 0 3547 iera -1 invert it 05107 0 32 474 4603 3548 ansa stpmrk-* turn it off 3549 05110 4 76 540 4650 3550 aos a.e011-*,* (=dssflg) set flag to ipdss 3551 to indicate requested status 05111 4 10 535 4646 3552 tsy a.e009-*,* (=ipdss) process status 05112 0 71 064 5176 3553 tra stp200-* done assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 117 hstprc - hsla status processor 3555 output status processor 3556 05113 0 07 463 4576 3557 stp100 lda stpswd-* get the status word 05114 0337 13 0 3558 ars 11 align the icw bits 05115 2 35 005 0 3559 era sf.flg,2 leave only the one we want 05116 222 004 0 3560 icana sffcoi should not be on! 05117 0 74 026 5145 3561 tze stp105-* good, all ok 3562 05120 3563 trace tt.ira,ts.sta,(stptib) trace recovery try 3564 05130 2 41 010 0 3565 ldx3 sf.ob0,2 recover output buffers 05131 2 07 005 0 3566 lda sf.flg,2 get flags 05132 222 004 0 3567 icana sffcoi alt output bfr? 05133 0 74 002 5135 3568 tze 2 no 05134 2 41 011 0 3569 ldx3 sf.ob1,2 yes, get it 3570 05135 3333 00 0 3571 cx3a set indicators 05136 0 74 005 5143 3572 tze stp101-* no buffer 3573 end of binary card 00000073 05137 4 10 527 4666 3574 tsy a.e025-*,* setbpt 05140 4333 00 0 3575 cax3 now we have virtual address 05141 4 10 512 4653 3576 tsy a.e014-*,* (=opptro) simulate ptro on buffer 05142 0 71 003 5145 3577 tra stp105-* it flipped indicator for us 3578 05143 673 004 0 3579 stp101 ila sffcoi get bit 05144 2 62 005 0 3580 ersa sf.flg,2 flip it 3581 05145 2 41 010 0 3582 stp105 ldx3 sf.ob0,2 get the current output buffer ptr 05146 2 07 005 0 3583 lda sf.flg,2 get the sfcm flags 05147 222 004 0 3584 icana sffcoi are we using alternate icw? 05150 0 74 002 5152 3585 tze stp110-* no, primary in use 05151 2 41 011 0 3586 ldx3 sf.ob1,2 get the alternate buf ptr 3587 05152 0 50 426 4600 3588 stp110 stx3 stpbuf-* save the buffer ptr 05153 0 41 467 4642 3589 ldx3 a.e005-* (=ostats) get ptr to table of status 3590 05154 0 07 422 4576 3591 stp120 lda stpswd-* get the status word 05155 3 31 000 0 3592 cana 0,3 is this bit on? 05156 0 64 012 5170 3593 tnz stp130-* yes, call routine 3594 05157 373 002 0 3595 iacx3 2 increment ptr 05160 0 61 463 4643 3596 cmpx3 a.e006-* (=oends) end of table? 05161 0 64 773 5154 3597 tnz stp120-* no, loop more 3598 05162 0 07 414 4576 3599 lda stpswd-* get status word 05163 0 31 427 4612 3600 cana l.e004-* (=hs.siw) are we switching send icw's? 05164 0 74 003 5167 3601 tze 3 skip if not 05165 673 004 0 3602 ila sffcoi get bit 05166 2 62 005 0 3603 ersa sf.flg,2 flip it assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 118 hstprc - hsla status processor 05167 0 71 007 5176 3604 tra stp200-* yes, all done 3605 05170 3 07 001 0 3606 stp130 lda 1,3 get addr of routine to call 05171 0 17 410 4601 3607 sta stptra-* save it 05172 0 07 406 4600 3608 lda stpbuf-* get buffer addr 05173 4 10 473 4666 3609 tsy a.e025-*,* setbpt 05174 4333 00 0 3610 cax3 now we have virtual address 05175 4 10 404 4601 3611 tsy stptra-*,* go to routine 3612 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 119 hstprc - hsla status processor 05176 673 010 0 3614 stp200 ila hs.sqo 05177 4 31 226 5425 3615 cana a.f008-*,* (stpswd) status queue overflow ? 05200 0 74 007 5207 3616 tze stp205-* no 3617 05201 0 07 422 4623 3618 lda l.e013-* (=/sffsqo) 05202 2 32 005 0 3619 ansa sf.flg,2 turn off status queue overflow flag 3620 05203 1 07 000 0 3621 lda t.stat,1 get tib status bits 05204 022 017 0 3622 iana s.dss but only the ones we want 05205 0 37 422 4627 3623 ora l.e017-* (=s.xte) set xte status end of binary card 00000074 05206 4 10 433 4641 3624 tsy a.e004-*,* (=istat) call interpreter 3625 05207 4 07 217 5426 3626 stp205 lda a.f009-*,* (stpmrk) in case requested status not performed 05210 1 72 000 0 3627 orsa t.stat,1 put back for next time 05211 2 07 003 0 3628 lda sf.tly,2 get the wrap around queue tally 05212 2 27 023 0 3629 cmpa sf.ssl,2 is queue empty? 05213 4 64 444 4657 3630 tnz a.e018-*,* (stp010) no, more status to be processed 3631 05214 673 001 0 3632 stp210 ila sffskd get the scked flag 05215 322 777 0 3633 iera -1 invert it 05216 2 32 005 0 3634 ansa sf.flg,2 and store it into sfcm 3635 05217 2 07 003 0 3636 lda sf.tly,2 tally still at max? 05220 2 27 023 0 3637 cmpa sf.ssl,2 well? 05221 4 64 436 4657 3638 tnz a.e018-*,* (=stp010) nope, process more status 05222 2 56 014 0 3639 stz sf.rct,2 zero sqo repeat count 3640 05223 4 07 202 5425 3641 lda a.f008-*,* (=stpswd) get the status word 05224 0 31 165 5411 3642 cana l.f008-* (=hs.rcs) is this receive status? 05225 0 74 016 5243 3643 tze stpret-* nope, done 3644 05226 2 20 010 0 3645 szn sf.ob0,2 are both of the output buffers gone yet? 05227 0 64 014 5243 3646 tnz stpret-* not first one 05230 2 20 011 0 3647 szn sf.ob1,2 second? 05231 0 64 012 5243 3648 tnz stpret-* nope, done 3649 05232 1 07 001 0 3650 lda t.flg,1 is output suspended? 05233 0 31 162 5415 3651 cana l.f012-* =tfosus 05234 0 64 007 5243 3652 tnz stpret-* yes, we'l pick up rest of dcw list later 3653 05235 0 07 155 5412 3654 lda l.f009-* (=sffhdl) 05236 2 31 005 0 3655 cana sf.flg,2 skip this for hdlc lines 05237 0 64 004 5243 3656 tnz stpret-* 3657 05240 1 07 024 0 3658 lda t.dcwl,1 is there a dcw list? 05241 0 74 002 5243 3659 tze stpret-* nope, done 3660 05242 4 10 166 5430 3661 tsy a.f011-*,* (=hdcw) call the dcw list processor 3662 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 120 hstprc - hsla status processor 05243 4 71 166 5431 3663 stpret tra a.f012-*,* (=secdsp) return to secondary dispatcher 3664 3665 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 121 dmpbuf - proc to dump input buffers when we exit rcv 05244 3667 dmpbuf subr dmp,(x1,x2,x3) 3668 3669 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3670 * 3671 * dmpbuf 3672 * 3673 * proc to dump the input buffers when we leave 3674 * receive mode. if there is any input in the current 3675 * input buffer, we will chain it onto the input 3676 * chain, otherwise we will just free the buffers. 3677 * 3678 * upon entry: 3679 * x1 - virtual tib address 3680 * x2 - virtual sfcm address 3681 * 3682 * returns: 3683 * 3684 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3685 end of binary card 00000075 05260 2 20 006 0 3686 szn sf.ib0,2 look to see if the buffers are already gone. 05261 0 64 003 5264 3687 tnz dmp005-* first one isn't, proceed 05262 2 20 007 0 3688 szn sf.ib1,2 it is, what about second? 05263 0 74 055 5340 3689 tze dmpret-* yes, all done 3690 05264 4 10 135 5421 3691 dmp005 tsy a.f004-*,* (=gettly) get current buffer tally & addr 05265 0 17 114 5401 3692 sta dmptmp-* save buffer tally 05266 3333 00 0 3693 cx3a is there a buffer ? 05267 0 74 034 5323 3694 tze dmp050-* no, skip null buffer 05270 2 07 005 0 3695 lda sf.flg,2 synchronous line? 05271 0 31 116 5407 3696 cana l.f006-* sffsyn 05272 0 74 005 5277 3697 tze dmp010-* no 05273 3333 00 0 3698 cx3a yes, back to beginning of buffer 05274 0 26 114 5410 3699 sba l.f007-* bf.dta,b.0 05275 4333 00 0 3700 cax3 05276 0 71 004 5302 3701 tra dmp020-* 05277 3702 dmp010 null asynchronous pseudo-buffer 05277 3333 00 0 3703 cx3a just wipe out char. addressing 05300 0 34 102 5402 3704 ana l.f001-* =o077777 05301 4333 00 0 3705 cax3 05302 0 20 077 5401 3706 dmp020 szn dmptmp-* zero tally? 05303 0 74 017 5322 3707 tze dmp040-* yes, free buffer 3708 05304 2 07 005 0 3709 lda sf.flg,2 synchronous? 05305 0 31 102 5407 3710 cana l.f006-* =sffsyn 05306 0 64 004 5312 3711 tnz dmp030-* yes, copy to input chain 05307 4 10 111 5420 3712 tsy a.f003-*,* (=scan) else scan chars 05310 2 56 021 0 3713 stz sf.nic,2 make sure next scan starts clean 05311 0 71 011 5322 3714 tra dmp040-* scan took care of copying to input chain 3715 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 122 dmpbuf - proc to dump input buffers when we exit rcv 05312 0 07 071 5403 3716 dmp030 lda l.f002-* (=buftmk) get tally mask 05313 322 777 0 3717 iera -1 invert mask 05314 3 32 001 0 3718 ansa bf.tly,3 zero tally field 05315 0 07 064 5401 3719 lda dmptmp-* get back buffer tally 05316 3 72 001 0 3720 orsa bf.tly,3 put tally in buffer 3721 05317 4 10 100 5417 3722 tsy a.f002-*,* (=parity) strip off parity bits 3723 05320 4 10 102 5422 3724 tsy a.f005-*,* (=ichain) put buffer on input chain 05321 0 71 002 5323 3725 tra dmp050-* free second buffer 3726 05322 0 10 020 5342 3727 dmp040 tsy fribuf-* 3728 05323 3333 00 0 3729 dmp050 cx3a 05324 4 10 100 5424 3730 tsy a.f007-*,* cvabs 3731 we need absolute address for this 05325 2 27 006 0 3732 cmpa sf.ib0,2 primary buffer addr in x3 ? 05326 0 74 003 5331 3733 tze 3 yes end of binary card 00000076 05327 2 07 006 0 3734 lda sf.ib0,2 no, get primary buffer addr 05330 0 71 002 5332 3735 tra 2 05331 2 07 007 0 3736 lda sf.ib1,2 get alt. buffer addr 05332 0 74 004 5336 3737 tze dmp060-* skip null buffer 05333 4 10 074 5427 3738 tsy a.f010-*,* setbpt 05334 4333 00 0 3739 cax3 fribuf wants virtual address 05335 0 10 005 5342 3740 tsy fribuf-* free the buffer 3741 05336 2 56 006 0 3742 dmp060 stz sf.ib0,2 zero the buffer ptrs 05337 2 56 007 0 3743 stz sf.ib1,2 3744 05340 3745 dmpret return dmpbuf all done 3746 3747 3748 3749 05342 3750 fribuf subr fri,(x3) free an input buffer for dmpbuf 3751 05350 2 07 005 0 3752 lda sf.flg,2 synchronous? 05351 0 31 036 5407 3753 cana l.f006-* =sffsyn 05352 0 74 004 5356 3754 tze fri005-* no 05353 3333 00 0 3755 cx3a yes, get absolute address 05354 4 10 050 5424 3756 tsy a.f007-*,* cvabs 05355 0 71 020 5375 3757 tra fri030-* and free it 05356 3333 00 0 3758 fri005 cx3a else find out if it's one of the permanent ones 05357 4 10 045 5424 3759 tsy a.f007-*,* cvabs 05360 1 27 053 0 3760 cmpa t.abf0,1 is it first one? 05361 0 64 004 5365 3761 tnz fri010-* no 05362 0 07 031 5413 3762 lda l.f010-* (tfabf0) yes 05363 1 72 036 0 3763 orsa t.flg3,1 mark it available 05364 0 71 013 5377 3764 tra fribak-* done assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 123 dmpbuf - proc to dump input buffers when we exit rcv 05365 1 27 054 0 3765 fri010 cmpa t.abf1,1 is it the other one? 05366 0 64 004 5372 3766 tnz fri020-* no, free it 05367 0 07 025 5414 3767 lda l.f011-* tfabf1 05370 1 72 036 0 3768 orsa t.flg3,1 mark 2nd one available 05371 0 71 006 5377 3769 tra fribak-* 05372 3 47 000 0 3770 fri020 ldq 0,3 else get size out of buffer 05373 6337 11 0 3771 qrl 9 05374 0 71 002 5376 3772 tra fri040-* 3773 end of binary card 00000077 05375 473 000 0 3774 fri030 ilq 0 let frebfh determine size 05376 4 10 020 5416 3775 fri040 tsy a.f001-*,* frebfh 05377 3776 fribak return fribuf 3777 3778 05401 3779 dmptmp bss 1 3780 3781 05402 077777 0 3782 l.f001 oct 077777 05403 000777 0 3783 l.f002 vfd 18/buftmk 05404 007000 0 3784 l.f003 vfd 18/tflfec+tfcrec+tftbec 05405 000200 0 3785 l.f004 vfd 18/s.prex 05406 004000 0 3786 l.f005 vfd 18/s.exh 05407 010000 0 3787 l.f006 vfd 18/sffsyn 05410 2 00002 0 3788 l.f007 zero bf.dta,b.0 05411 400000 0 3789 l.f008 vfd 18/hs.rcs 05412 400000 0 3790 l.f009 vfd 18/sffhdl 05413 001000 0 3791 l.f010 vfd 18/tfabf0 05414 010000 0 3792 l.f011 vfd 18/tfabf1 05415 400000 0 3793 l.f012 vfd 18/tfosus 3794 05416 0 16000 3 3795 a.f001 ind frebfh 05417 0 06444 1 3796 a.f002 ind parity 05420 0 06753 1 3797 a.f003 ind scan 05421 0 02116 1 3798 a.f004 ind gettly 05422 0 05465 1 3799 a.f005 ind ichain 05423 0 06000 3 3800 a.f006 ind istat 05424 0 03000 3 3801 a.f007 ind cvabs 05425 0 04576 1 3802 a.f008 ind stpswd 05426 0 04603 1 3803 a.f009 ind stpmrk 05427 0 34000 3 3804 a.f010 ind setbpt 05430 0 00012 1 3805 a.f011 ind hdcw 05431 0 33000 3 3806 a.f012 ind secdsp assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 124 addbuf - add buffer to input chain 05432 3808 addbuf subr abf 3809 3810 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3811 * 3812 * addbuf 3813 * 3814 * adds a buffer to the end of the input chain and 3815 * signals pre-exhaust and/or exhaust status if 3816 * appropriate. 3817 * 3818 * upon entry: 3819 * x1 - virtual tib address 3820 * x2 - virtual sfcm address 3821 * x3 - buffer to be added to input chain 3822 * 3823 * returns: 3824 * 3825 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3826 05435 0 10 030 5465 3827 tsy ichain-* thread buffer onto input chain 3828 05436 2 07 005 0 3829 lda sf.flg,2 get sfcm flags 05437 0 31 750 5407 3830 cana l.f006-* (=sffsyn) synch line ? 05440 0 64 010 5450 3831 tnz abf010-* yes, don't check pre-exhaust 3832 05441 1 07 007 0 3833 lda t.icpl,1 get input chain length 05442 422 012 0 3834 icmpa 10 at pre-exhaust limit ? end of binary card 00000078 05443 0 75 011 5454 3835 tmi abf011-* no 3836 05444 1 07 000 0 3837 lda t.stat,1 get tib status 05445 022 017 0 3838 iana s.dss relevant bits only 05446 0 37 737 5405 3839 ora l.f004-* (=s.prex) set pre-exhaust status 05447 4 10 754 5423 3840 tsy a.f006-*,* (=istat) call interpreter 3841 05450 3842 abf010 null 05450 0 07 742 5412 3843 lda l.f009-* (=sffhdl) 05451 2 31 005 0 3844 cana sf.flg,2 is it hdlc? 05452 0 64 011 5463 3845 tnz abfret-* don't check for exaust 3846 05453 1 07 007 0 3847 lda t.icpl,1 get input chain length again 05454 1 06 041 0 3848 abf011 ada t.dcpl,1 get total input buffer usage 05455 422 050 0 3849 icmpa 40 at exhaust limit ? 05456 0 75 005 5463 3850 tmi abfret-* no, done 3851 05457 1 07 000 0 3852 lda t.stat,1 get tib status 05460 022 017 0 3853 iana s.dss relevant bits only 05461 0 37 725 5406 3854 ora l.f005-* (=s.exh) set exhaust status 05462 4 10 741 5423 3855 tsy a.f006-*,* (=istat) call interpreter 3856 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 125 addbuf - add buffer to input chain 05463 3857 abfret return addbuf assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 126 ichain - thread buffer onto input chain 05465 3859 ichain subr ich,(x2,x3) 3860 3861 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3862 * 3863 * ichain 3864 * 3865 * threads a buffer onto the end of the input chain 3866 * and updates the chain length (t.icpl) 3867 * 3868 * upon entry: 3869 * x1 - virtual tib address 3870 * x3 - virtual address of buffer to be threaded 3871 * onto input chain 3872 * 3873 * returns: 3874 * 3875 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3876 05476 3333 00 0 3877 cx3a 05477 4 10 072 5571 3878 tsy a.g006-*,* (cvabs) get absolute address 05500 1 20 006 0 3879 szn t.ilst,1 any input chain ? 05501 0 64 004 5505 3880 tnz ich010-* yes 3881 05502 1 17 005 0 3882 sta t.icp,1 start a new chain 05503 1 17 006 0 3883 sta t.ilst,1 end a new chain 05504 0 71 011 5515 3884 tra ich020-* 3885 05505 6333 00 0 3886 ich010 caq safe store 05506 1 07 006 0 3887 lda t.ilst,1 get addr of last buffer 05507 4 10 063 5572 3888 tsy a.g007-*,* setbpt 05510 0332 00 0 3889 cax2 virtual address into x2 05511 2 57 000 0 3890 stq bf.nxt,2 thread on new last buffer end of binary card 00000079 05512 1 57 006 0 3891 stq t.ilst,1 update last ptr 05513 7333 00 0 3892 cqa set up pte for last buffer again 05514 4 10 056 5572 3893 tsy a.g007-*,* (address is already in x3) 3894 05515 3 07 001 0 3895 ich020 lda bf.siz,3 get buffer size code 05516 2337 17 0 3896 arl 15 right adjust 05517 773 001 0 3897 iaa 1 get true block count 05520 1 16 007 0 3898 asa t.icpl,1 update input chain length 3899 05521 3900 return ichain assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 127 ipterm - process input terminate status 05523 3902 ipterm subr trm,(x1,x2,x3) 3903 3904 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3905 * 3906 * ipterm 3907 * 3908 * process the input terminate status. this will 3909 * be stored as a result of a user typing nis break 3910 * character, and can only mean that it is time to 3911 * ship his data to the cs. 3912 * 3913 * upon entry: 3914 * x1 - virtual tib address 3915 * x2 - virtual sfcm address 3916 * x3 - points to the current buffer 3917 * 3918 * returns: 3919 * 3920 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3921 05537 0 07 022 5561 3922 lda l.g001-* (=bffbrk) get the break bit 05540 3 72 001 0 3923 orsa bf.flg,3 turn it on in the buffer 3924 05541 2 07 005 0 3925 lda sf.flg,2 synchronous line? 05542 0 31 022 5564 3926 cana l.g004-* =sffsyn 05543 0 64 002 5545 3927 tnz trm010-* no, don't bother scanning 3928 05544 4 10 024 5570 3929 tsy a.g005-*,* (=scan) scan the input 3930 05545 4 10 021 5566 3931 trm010 tsy a.g002-*,* (=setnib) setup new input buffer 3932 05546 2 07 005 0 3933 lda sf.flg,2 synchronous? 05547 0 31 015 5564 3934 cana l.g004-* =sffsyn 05550 0 74 003 5553 3935 tze trm020-* no, scan took care of input chain 05551 4 10 016 5567 3936 tsy a.g003-*,* (=parity) strip off parity 05552 4 10 021 5573 3937 tsy a.g008-*,* (=addbuf) add buffer to input chain 3938 05553 1 07 000 0 3939 trm020 lda t.stat,1 get the tib status bits 05554 022 017 0 3940 iana s.dss but only the ones we want 05555 0 37 005 5562 3941 ora l.g002-* s.brch 05556 4 10 007 5565 3942 tsy a.g001-*,* (=istat) call status processor 3943 05557 3944 return ipterm 3945 05561 020000 0 3946 l.g001 vfd 18/bffbrk end of binary card 00000080 05562 001000 0 3947 l.g002 vfd 18/s.brch 05563 757777 0 3948 l.g003 vfd o18//sffmsp 05564 010000 0 3949 l.g004 vfd 18/sffsyn 3950 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 128 ipterm - process input terminate status 05565 0 06000 3 3951 a.g001 ind istat 05566 0 06236 1 3952 a.g002 ind setnib 05567 0 06444 1 3953 a.g003 ind parity 05570 0 06753 1 3954 a.g005 ind scan 05571 0 03000 3 3955 a.g006 ind cvabs 05572 0 34000 3 3956 a.g007 ind setbpt 05573 0 05432 1 3957 a.g008 ind addbuf assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 129 ipmark - process input marker status 05574 3959 ipmark subr mrk,(x1,x2,x3) 3960 3961 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3962 * 3963 * ipmark 3964 * 3965 * process input marker status indicating one or more 3966 * of the following events: 3967 * 3968 * - any char received in echoplex or breakall mode 3969 * 3970 * - tab received in tabecho mode 3971 * 3972 * - frame begin char received in frame input mode 3973 * 3974 * - any break character received 3975 * 3976 * upon entry: 3977 * x1 - virtual tib address 3978 * x2 - virtual sfcm address 3979 * x3 - points to buffer 3980 * 3981 * returns: 3982 * 3983 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3984 05610 0 07 753 5563 3985 lda l.g003-* =^sffmsp 05611 2 32 005 0 3986 ansa sf.flg,2 indicate no marker pending 3987 05612 4 10 756 5570 3988 tsy a.g005-*,* (=scan) scan the input 3989 05613 3990 return ipmark 3991 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 130 ipbfsw - process buffer switch for bisync and hdlc 05615 3993 ipbfsw subr bsw 3994 3995 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3996 * 3997 * ipbfsw 3998 * 3999 * process buffer switch for bisync and hdlc channels 4000 * 4001 * upon entry: 4002 * x1 - points to tib 4003 * x2 - points to sfcm 4004 * x3 - points to the current buffer (virtual address) 4005 * 4006 * returns: 4007 * 4008 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4009 05620 4 10 254 6074 4010 tsy a.i008-*,* (=parity) strip all parity 4011 05621 4 10 254 6075 4012 tsy a.i009-*,* (=addbuf) add buffer to input chain 05622 4 56 006 5630 4013 stz a.x001-*,* *=bftsa all finished, clear it 05623 4 41 006 5631 4014 ldx3 a.x002-*,* *=bftx3 buffer address pointer 05624 3 56 002 0 4015 stz 2,3 05625 4 56 004 5631 4016 stz a.x002-*,* *=bftx3 clear up old buffer address 4017 05626 4018 bswret return ipbfsw 05630 0 04232 1 4019 a.x001 ind bftsa 05631 0 04231 1 4020 a.x002 ind bftx3 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 131 swphic - switch preallocated icw s 4022 ********************************************************************** 4023 * 4024 * swphic - switch with preallocated buffer for icw 4025 * 4026 * this routine will start the icw switching process using 4027 * the preallocated buffer pools. it sets up the registers 4028 * and other variables to complete the switch. it will store 4029 * the buffer in the software com area; it will not add it to 4030 * the input chain in the tib. 4031 * 4032 * upon entry: 4033 * x1 - tib 4034 * x2 - sfcm 4035 * 4036 * returns: 4037 * 4038 * coded by d. w. cousins for icw switch problem 4039 * 4040 ********************************************************************** 05632 4041 swphic subr swp,(i,x2,x3) end of binary card 00000081 05646 3332 00 0 4042 cx2a *get address of sfcm into a 05647 6333 00 0 4043 caq *place it into q 05650 573 006 0 4044 iaq sf.ib0 *add in offset 05651 2 07 005 0 4045 lda sf.flg,2 *get software flags 05652 0 17 114 5766 4046 sta sfflag-* *store them for later 05653 0 34 110 5763 4047 ana l.y001-* *=^sfcii mask 05654 2 17 005 0 4048 sta sf.flg,2 05655 6 07 001 0 4049 lda sf.nxa,2* *load the status word 05656 2337 14 0 4050 arl 12 05657 022 002 0 4051 iana sffcii *mask all bits ecept alt icw 05660 2 72 005 0 4052 orsa sf.flg,2 *this should work 05661 2 07 005 0 4053 lda sf.flg,2 *get the flags for test 05662 222 002 0 4054 icana sffcii *alternate buffer 05663 0 74 002 5665 4055 tze 2 *no 05664 573 001 0 4056 iaq sf.ib1-sf.ib0 *change offset 05665 0 57 102 5767 4057 stq sfptr-* *save it tempory 05666 4 47 101 5767 4058 ldq sfptr-*,* *load the buffer address 05667 2 41 001 0 4059 ldx3 sf.nxa,2 *load current ptr to status 05670 3 57 002 0 4060 stq 2,3 *store buffer after the status 05671 2 07 016 0 4061 lda sf.bsz,2 *get this line buffer size 05672 0337 05 0 4062 ars 5 *get table index 05673 773 777 0 4063 iaa -1 05674 0332 00 0 4064 cax2 05675 3331 00 0 4065 inh 05676 4 47 062 5760 4066 ldq a.y001-*,* (=pchtbl,2) get the buffer address 05677 0 74 036 5735 4067 tze swp010-* no buffer 05700 673 777 0 4068 ila -1 05701 4 16 060 5761 4069 asa a.y002-*,* (=pchlft,2) reduce buffer total end of binary card 00000082 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 132 swphic - switch preallocated icw s 05702 7333 00 0 4070 cqa 05703 0 17 066 5771 4071 sta swpabs-* save it for later 05704 4 10 056 5762 4072 tsy a.y003-*,* (setbpt) 05705 4333 00 0 4073 cax3 place virtual address into x3 05706 3 47 000 0 4074 ldq bf.nxt,3 get next address 05707 4 57 051 5760 4075 stq a.y001-*,* (=pchtbl,2) put it as the head 05710 0 44 733 5643 4076 ldi swpsi-* 05711 3 56 000 0 4077 stz bf.nxt,3 zero next buffer pointer 05712 3 07 001 0 4078 lda bf.tly,3 get it tally 05713 0 34 470 5403 4079 ana l.f002-* =buftmk mask the tally 05714 6333 00 0 4080 caq place it in q 05715 1 03 030 0 4081 ldx2 t.sfcm,1 get sfcm again 05716 0 07 046 5764 4082 lda l.y002-* =sffnib 05717 322 777 0 4083 iera -1 05720 2 32 005 0 4084 ansa sf.flg,2 05721 0 32 045 5766 4085 ansa sfflag-* *save it here also 05722 0 07 047 5771 4086 lda swpabs-* get absolute address back 05723 4 17 044 5767 4087 sta sfptr-*,* 4088 05724 0 57 044 5770 4089 stq swpq-* hang on to size 05725 4090 smeter mincd,.mupab,l.y003-* 05734 0 71 016 5752 4091 tra swp020-* 4092 05735 673 000 0 4093 swp010 ila 0 05736 1 03 030 0 4094 ldx2 t.sfcm,1 get sfcm again 05737 0 44 704 5643 4095 ldi swpsi-* restore interrupt state 05740 4 56 027 5767 4096 stz sfptr-*,* 05741 4333 00 0 4097 cax3 4098 05742 0 57 026 5770 4099 stq swpq-* hang on to size 05743 4100 smeter mincd,.mpanf,l.y003-* end of binary card 00000083 4101 05752 0 47 016 5770 4102 swp020 ldq swpq-* 05753 0 10 374 6347 4103 tsy nibicw-* 05754 0 07 012 5766 4104 lda sfflag-* *return old sf.flg 05755 2 17 005 0 4105 sta sf.flg,2 05756 4106 return swphic 4107 05760 2 04030 1 4108 a.y001 ind pchtbl,2 05761 2 04040 1 4109 a.y002 ind pchlft,2 05762 0 34000 3 4110 a.y003 ind setbpt 4111 05763 777775 0 4112 l.y001 vfd o18//sffcii 05764 100000 0 4113 l.y002 vfd 18/sffnib 05765 000001 0 4114 l.y003 dec 1 4115 05766 4116 sfflag bss 1 05767 4117 sfptr bss 1 05770 4118 swpq bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 133 swphic - switch preallocated icw s 05771 4119 swpabs bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 134 ipxte - process input transfer timing error 05772 4121 ipxte subr ixt,(x1,x2,x3) 4122 4123 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4124 * 4125 * ipxte 4126 * 4127 * process transfer timing errors. currently we 4128 * will not expect these, and will crash on any. 4129 * 4130 * upon entry: 4131 * 4132 * returns: 4133 * 4134 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4135 06006 4136 die 4 4137 06007 4138 return ipxte assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 135 ipptro - process input pre-tally runout 06011 4140 ipptro subr ipt,(x1,x2,x3) 4141 4142 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4143 * 4144 * ipptro 4145 * 4146 * process input pre-tally runout status. this 4147 * status is stored just before we switch to a new input 4148 * buffer, and the old one should be put onto the input 4149 * chain. 4150 * 4151 * upon entry: 4152 * x1 - virtual tib address 4153 * x2 - virtual sfcm address 4154 * x3 - points to the buffer 4155 * 4156 * returns: 4157 * with a new input buffer setup 4158 * 4159 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4160 end of binary card 00000084 06025 2 07 005 0 4161 lda sf.flg,2 synchronous line? 06026 0 31 037 6065 4162 cana l.i001-* =sffsyn 06027 0 64 003 6032 4163 tnz ipt010-* yes, copy buffer directly to chain 4164 06030 4 10 041 6071 4165 tsy a.i001-*,* (=scan) scan rest of input data 06031 0 71 003 6034 4166 tra ipt030-* 4167 06032 4 10 042 6074 4168 ipt010 tsy a.i008-*,* (=parity) remove parity bits 06033 4 10 042 6075 4169 tsy a.i009-*,* (=addbuf) add buffer to input chain 4170 06034 4 10 037 6073 4171 ipt030 tsy a.i005-*,* (=setnib) setup new input buffer 4172 06035 4173 return ipptro bye assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 136 iptro - process input tally runout 06037 4175 iptro subr itr,(x1,x2,x3) 4176 4177 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4178 * 4179 * iptro 4180 * 4181 * processs input tally runout status. this indicates 4182 * an attempt to use an exhausted icw. this could occur 4183 * either because there was not enough time to set up a new 4184 * buffer or because no buffer was available. the latter 4185 * case is indicated by a zero buffer address. in this case, 4186 * we signal exhaust status to the interpreter. in the 4187 * former case, we signal transfer timing error (xte) status. 4188 * 4189 * upon entry: 4190 * x1 - virtual tib address 4191 * x2 - virtual sfcm address 4192 * x3 - points to buffer 4193 * 4194 * returns: 4195 * 4196 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4197 06053 1 07 000 0 4198 lda t.stat,1 get tib status bits 06054 022 017 0 4199 iana s.dss but only the ones we want 4200 06055 373 000 0 4201 iacx3 0 do we have a buffer? 06056 0 74 003 6061 4202 tze 3 no 06057 0 37 007 6066 4203 ora l.i003-* (=s.xte) set xte status 06060 0 71 002 6062 4204 tra 2 06061 0 37 007 6070 4205 ora l.i009-* (=s.exh) set exhaust status 4206 06062 4 10 010 6072 4207 tsy a.i004-*,* (=istat) call interpreter 4208 06063 4209 return iptro all done 4210 4211 06065 010000 0 4212 l.i001 vfd 18/sffsyn 4213 *l.i002 06066 020000 0 4214 l.i003 vfd 18/s.xte 4215 *l.i004 4216 *l.i005 unused 06067 204000 0 4217 l.i006 vfd 18/tfecpx+tftbec 4218 *l.i007 unused 06070 004000 0 4219 l.i009 vfd 18/s.exh assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 137 iptro - process input tally runout 06071 0 06753 1 4221 a.i001 ind scan 4222 *a.i002 4223 *a.i003 06072 0 06000 3 4224 a.i004 ind istat 06073 0 06236 1 4225 a.i005 ind setnib 4226 *a.i007 06074 0 06444 1 4227 a.i008 ind parity end of binary card 00000085 06075 0 05432 1 4228 a.i009 ind addbuf assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 138 ipdss - process data set status change 06076 4230 ipdss subr ids,(x1,x2,x3) 4231 4232 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4233 * 4234 * ipdss 4235 * 4236 * process data set status changes. record the 4237 * change and inform the control_tables. 4238 * 4239 * upon entry: 4240 * x1 - virtual tib address 4241 * x2 - virtual sfcm address 4242 * lower 18 bits of status in stpswd+1 4243 * 4244 * returns: 4245 * 4246 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4247 06112 0 56 060 6172 4248 stz idsst-* zero current status word 06113 0 41 114 6227 4249 ldx3 a.j002-* (=hstat) get the address of the table 4250 06114 1 07 002 0 4251 lda t.flg2,1 are we dialing out? 06115 0 31 104 6221 4252 cana l.j002-* =tfacu 06116 0 64 005 6123 4253 tnz ids010-* yes 4254 else we'll have to mask off acu bits 06117 0 07 103 6222 4255 lda l.j003-* ^hs.dlo & ^hs.pwi 06120 4 32 113 6233 4256 ansa a.j006-*,* =stpswd 06121 0 07 102 6223 4257 lda l.j004-* ^hs.ads & ^hs.acr 06122 4 32 104 6226 4258 ansa a.j001-*,* =stpswd+1 4259 06123 4 07 103 6226 4260 ids010 lda a.j001-*,* (=stpswd+1) get the status word 06124 3 31 000 0 4261 cana 0,3 is this a match? 06125 0 74 003 6130 4262 tze ids020-* no, keep looking 4263 06126 3 07 001 0 4264 lda 1,3 get the bit to set 06127 0 72 043 6172 4265 orsa idsst-* or into saved status 4266 06130 373 002 0 4267 ids020 iacx3 2 increment to next entry 06131 0 61 077 6230 4268 cmpx3 a.j003-* (=ehstat) end of table? 06132 0 64 771 6123 4269 tnz ids010-* no, continue 4270 06133 0 41 077 6232 4271 ldx3 a.j005-* (=h1stat) get the address of the table for first 4272 06134 4 07 077 6233 4273 ids030 lda a.j006-*,* (=stpswd) get the status word 06135 3 31 000 0 4274 cana 0,3 is this a match 06136 0 74 003 6141 4275 tze ids040-* no, skip it 4276 06137 3 07 001 0 4277 lda 1,3 get the bit to set 06140 0 72 032 6172 4278 orsa idsst-* or into saved status 4279 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 139 ipdss - process data set status change 06141 373 002 0 4280 ids040 iacx3 2 increment to next entry 06142 0 61 072 6234 4281 cmpx3 a.j007-* (=endh1) end of table? 06143 0 64 771 6134 4282 tnz ids030-* no, continue 4283 06144 673 000 0 4284 ila 0 zero the a reg end of binary card 00000086 06145 0 20 026 6173 4285 szn dssflg-* requested status? 06146 0 74 002 6150 4286 tze 2 no 4287 06147 0 07 051 6220 4288 lda l.j001-* (=s.st) get status bit 06150 0 56 023 6173 4289 stz dssflg-* clear flag 4290 06151 0 37 021 6172 4291 ora idsst-* get new data set status 06152 4 10 057 6231 4292 tsy a.j004-*,* (=istat) call interpreter w/status 4293 4294 if this was line break, and output is suspended, 4295 resume it 06153 0 07 017 6172 4296 lda idsst-* get status flags 06154 0 31 050 6224 4297 cana l.j005-* =s.brk 06155 0 74 005 6162 4298 tze ids050-* wasn't line break, never mind 06156 1 07 001 0 4299 lda t.flg,1 was output suspended? 06157 0 31 046 6225 4300 cana l.j006-* =tfosus 06160 0 74 002 6162 4301 tze ids050-* no, don't worry about it 06161 4 10 054 6235 4302 tsy a.j008-*,* (resout) start output going again 06162 4303 ids050 null 06162 673 017 0 4304 ila 15 (=o17) mask for common bits 4305 cd+cts+dsr+src 06163 0 32 007 6172 4306 ansa idsst-* leave only those bits now 06164 322 777 0 4307 iera -1 flip over the mask 06165 1 32 000 0 4308 ansa t.stat,1 turn off the bits in the tib 4309 06166 0 07 004 6172 4310 lda idsst-* get the real status bits 06167 1 72 000 0 4311 orsa t.stat,1 and turn only those on in the tib 4312 06170 4313 return ipdss all done 4314 4315 06172 4316 idsst bss 1 (altrd) loc for current dataset status 06173 000000 0 4317 dssflg oct 0 (altrd) flag to indicate requested status 4318 06174 4319 hstat smap hs.dsr,s.dsr 06176 4320 smap hs.cts,s.cts 06200 4321 smap hs.cd,s.cd 06202 4322 smap hs.src,s.sprc 06204 4323 smap hs.ri,s.ring 06206 4324 smap hs.brk,s.brk 06210 4325 smap hs.acr,s.acr 06212 4326 smap hs.ads,s.ads end of binary card 00000087 006214 4327 ehstat equ * assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 140 ipdss - process data set status change 4328 06214 4329 h1stat smap hs.dlo,s.dlo 06216 4330 smap hs.pwi,s.pwi 006220 4331 endh1 equ * 4332 4333 06220 000020 0 4334 l.j001 vfd 18/s.st 06221 000020 0 4335 l.j002 vfd 18/tfacu 06222 777774 0 4336 l.j003 vfd o18//hs.dlo*/hs.pwi ^(acu bits in first word) 06223 747777 0 4337 l.j004 vfd o18//hs.acr*/hs.ads ^(acu bits in second word) 06224 000400 0 4338 l.j005 vfd 18/s.brk 06225 400000 0 4339 l.j006 vfd 18/tfosus 4340 06226 0 04577 1 4341 a.j001 ind stpswd+1 status save word 06227 0 06174 1 4342 a.j002 ind hstat 06230 0 06214 1 4343 a.j003 ind ehstat 06231 0 06000 3 4344 a.j004 ind istat 06232 0 06214 1 4345 a.j005 ind h1stat 06233 0 04576 1 4346 a.j006 ind stpswd 06234 0 06220 1 4347 a.j007 ind endh1 06235 0 07407 1 4348 a.j008 ind resout assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 141 setnib - setup new input buffer 06236 4350 setnib subr snb,(x1,x2,x3) 4351 4352 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4353 * 4354 * setnib 4355 * 4356 * setup a new input buffer for the channel. the 4357 * buffer will be allocated, and the icw setup 4358 * ready to be used by the channel. 4359 * 4360 * upon entry: 4361 * x1 - virtual tib address 4362 * x2 - virtual sfcm address 4363 * 4364 * returns: 4365 * 4366 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4367 06252 4 41 167 6441 4368 ldx3 a.h004-*,* .crbpe 06253 3 07 000 0 4369 lda 0,3 have to save buffer pte 06254 0 17 072 6346 4370 sta snbpte-* 4371 06255 3332 00 0 4372 cx2a get sfcm addr into a 06256 6333 00 0 4373 caq now into the q 06257 573 006 0 4374 iaq sf.ib0 add in offset 4375 06260 2 07 005 0 4376 lda sf.flg,2 get the flags 06261 222 002 0 4377 icana sffcii alternate buffer? 06262 0 74 002 6264 4378 tze snb010-* no, 4379 end of binary card 00000088 06263 573 001 0 4380 iaq sf.ib1-sf.ib0 change offset 4381 06264 0 57 061 6345 4382 snb010 stq snbptr-* save the ptr 4383 06265 2 07 005 0 4384 lda sf.flg,2 synchronous line? 06266 0 31 141 6427 4385 cana l.h001-* =sffsyn 06267 0 64 036 6325 4386 tnz snb030-* yes, always allocate afresh 06270 2 56 021 0 4387 stz sf.nic,2 async, clear current char. pointer 06271 4 07 054 6345 4388 lda snbptr-*,* is there one now? 06272 0 74 033 6325 4389 tze snb030-* no, we'll have to allocate one 06273 4 10 145 6440 4390 tsy a.h003-*,* (setbpt) yes, get virtual address 06274 4333 00 0 4391 cax3 06275 2 07 005 0 4392 lda sf.flg,2 get flag word back 06276 0 31 133 6431 4393 cana l.h003-* (sffnib) are we supposed to allocate one anyway? 06277 0 64 010 6307 4394 tnz snb020-* yes 06300 3 47 000 0 4395 ldq 0,3 get size of current one 06301 6337 11 0 4396 qrl 9 06302 2 67 020 0 4397 cmpq sf.csz,2 is it correct? 06303 0 64 006 6311 4398 tnz snb025-* no assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 142 setnib - setup new input buffer 06304 4336 01 0 4399 qls 1 yes, convert it to characters 06305 573 775 0 4400 iaq -3 allow for overhead (***two*** at end) 06306 0 71 031 6337 4401 tra snb050-* 4402 06307 3 47 000 0 4403 snb020 ldq 0,3 make sure we have the size 06310 6337 11 0 4404 qrl 9 06311 4 07 034 6345 4405 snb025 lda snbptr-*,* find out if it's a permanent one 06312 1 27 053 0 4406 cmpa t.abf0,1 06313 0 64 004 6317 4407 tnz snb027-* not first one 06314 0 07 117 6433 4408 lda l.h005-* (tfabf0) yes, mark it available 06315 1 72 036 0 4409 orsa t.flg3,1 06316 0 71 007 6325 4410 tra snb030-* 06317 1 27 054 0 4411 snb027 cmpa t.abf1,1 second one? 06320 0 64 004 6324 4412 tnz snb028-* no, it's allocated 06321 0 07 113 6434 4413 lda l.h006-* tfabf1 06322 1 72 036 0 4414 orsa t.flg3,1 mark it available 06323 0 71 002 6325 4415 tra snb030-* get new one 06324 4 10 112 6436 4416 snb028 tsy a.h001-*,* (frebfh) free the old one 4417 06325 4 10 115 6442 4418 snb030 tsy a.h007-*,* (=ghibuf) get input buffer 06326 0 71 006 6334 4419 tra snb040-* error, cannot get buffer 4420 06327 4 17 016 6345 4421 sta snbptr-*,* store the buffer ptr 4422 06330 0 07 101 6431 4423 lda l.h003-* =sffnib 06331 322 777 0 4424 iera -1 turn it off end of binary card 00000089 06332 2 32 005 0 4425 ansa sf.flg,2 06333 0 71 004 6337 4426 tra snb050-* continue 4427 06334 4 56 011 6345 4428 snb040 stz snbptr-*,* no buffer, zero buffer ptr 06335 673 000 0 4429 ila 0 06336 4333 00 0 4430 cax3 and x3 too 4431 06337 0 10 010 6347 4432 snb050 tsy nibicw-* setup icw 4433 06340 4 41 101 6441 4434 ldx3 a.h004-*,* .crbpe 06341 0 07 005 6346 4435 lda snbpte-* get saved pte back 06342 3 17 000 0 4436 sta 0,3 restore it 06343 4437 return setnib 4438 06345 4439 snbptr bss 1 (altrd) pointer to current buf ptr 06346 4440 snbpte bss 1 saved copy of buffer pte assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 143 nibicw - setup new input icw 06347 4442 nibicw subr nib,(inh,q,x1,x2,x3) 4443 4444 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4445 * 4446 * nibicw 4447 * 4448 * setup new icw for the input buffer which is 4449 * being setup. the buffer addr is in x3, and sffcii 4450 * tells us which icw to setup. 4451 * 4452 * upon entry: 4453 * x1 - virtual tib address 4454 * x2 - virtual sfcm address 4455 * x3 - virtual buffer address 4456 * q - contains buffer tally 4457 * 4458 * returns: 4459 * 4460 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4461 06372 2 07 000 0 4462 lda sf.hcm,2 get the hwcm ptr 4463 06373 773 000 0 4464 iaa h.ric0 get ptr to icw 06374 0 17 032 6426 4465 sta nibiwp-* save it in temp 4466 06375 2 07 005 0 4467 lda sf.flg,2 get the flags 06376 222 002 0 4468 icana sffcii alternate buffer? 06377 0 74 004 6403 4469 tze nib010-* no, go 4470 06400 0 07 026 6426 4471 lda nibiwp-* get the ptr 06401 773 002 0 4472 iaa h.ric1-h.ric0 add offset 06402 0 17 024 6426 4473 sta nibiwp-* save it in temp 4474 06403 0 41 766 6371 4475 nib010 ldx3 nibsx3-* restor buffer ptr to x3 end of binary card 00000090 06404 0 74 015 6421 4476 tze nib020-* zero buffer addr, special case 4477 06405 2 07 005 0 4478 lda sf.flg,2 synchronous? 06406 0 31 021 6427 4479 cana l.h001-* =sffsyn 06407 0 74 004 6413 4480 tze nib015-* no 06410 3333 00 0 4481 cx3a get buffer ptr into a reg 06411 0 06 017 6430 4482 ada l.h002-* bf.dta,b.0 06412 0 71 003 6415 4483 tra nib016-* 06413 3333 00 0 4484 nib015 cx3a get buffer ptr into a reg 06414 0 37 016 6432 4485 ora l.h004-* (=0,b.1) async, start at second char 06415 0 41 011 6426 4486 nib016 ldx3 nibiwp-* get ptr to icw in x3 4487 06416 0 47 750 6366 4488 ldq nibsq-* get buffer tally 06417 4 10 020 6437 4489 tsy a.h002-*,* (bldicw) and store into icw 06420 0 71 004 6424 4490 tra nibret-* done assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 144 nibicw - setup new input icw 4491 06421 0 07 022 6443 4492 nib020 lda a.h008-* (=bnispc) get addr of spare word 06422 0 47 013 6435 4493 ldq l.h007-* (=450000) get exhausted tally 06423 4 14 003 6426 4494 staq nibiwp-*,* set icw 4495 06424 4496 nibret return nibicw 4497 06426 4498 nibiwp bss 1 (altrd) icw ptr assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 145 nibicw - setup new input icw 4500 06427 010000 0 4501 l.h001 vfd 18/sffsyn 06430 2 00002 0 4502 l.h002 ind bf.dta,b.0 06431 100000 0 4503 l.h003 vfd 18/sffnib 06432 3 00000 0 4504 l.h004 zero 0,b.1 06433 001000 0 4505 l.h005 vfd 18/tfabf0 06434 010000 0 4506 l.h006 vfd 18/tfabf1 06435 450000 0 4507 l.h007 oct 450000 4508 06436 0 16000 3 4509 a.h001 ind frebfh 06437 0 00753 1 4510 a.h002 ind bldicw 06440 0 34000 3 4511 a.h003 ind setbpt 06441 0 00710 0 4512 a.h004 ind .crbpe 4513 *a.h005 4514 *a.h006 06442 0 01051 1 4515 a.h007 ind ghibuf 06443 0 00752 1 4516 a.h008 ind bnispc assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 146 parity - strip parity bits off input characters 06444 4518 parity subr par,(x1,x2,x3) end of binary card 00000091 4519 4520 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4521 * 4522 * parity 4523 * 4524 * parity will remove the parity bits from the 4525 * input data. status will have noted any parity errors 4526 * for us. 4527 * 4528 * upon entry: 4529 * x1 - virtual tib address 4530 * x2 - virtual sfcm address 4531 * x3 - virtual buffer address 4532 * 4533 * returns: 4534 * 4535 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4536 06460 1 07 036 0 4537 lda t.flg3,1 see if we should bother 06461 0 31 044 6525 4538 cana l.m007-* =tf8in 06462 0 64 032 6514 4539 tnz par030-* no, keeping all 8 bits 4540 06463 3333 00 0 4541 cx3a 06464 0 27 043 6527 4542 cmpa l.m009-* (=1000(8)) bad? 06465 0 65 002 6467 4543 tpl 2 no, continue 06466 4544 die 1 gotcha 4545 06467 1 07 036 0 4546 lda t.flg3,1 see if parity should be kept 06470 0 31 040 6530 4547 cana l.m010-* =tfkpar 06471 0 64 023 6514 4548 tnz par030-* dont strip parity 4549 06472 0 47 025 6517 4550 ldq l.m001-* (=177177) get parity bits 4551 06473 2 07 005 0 4552 lda sf.flg,2 get sfcm flags 06474 222 040 0 4553 icana sffebd ebcdic characters? 06475 0 74 002 6477 4554 tze par010-* no, 4555 06476 0 47 022 6520 4556 ldq l.m002-* (=077077) get the ebcdic parity mask 4557 06477 3 07 001 0 4558 par010 lda bf.tly,3 get the buffer tally 06500 0 34 021 6521 4559 ana l.m003-* (=buftmk) leave only tally 06501 773 001 0 4560 iaa 1 add one 06502 0337 01 0 4561 ars 1 divide by two 06503 0 17 013 6516 4562 sta parcnt-* store it here 06504 673 000 0 4563 ila 0 get a zero 06505 0 36 011 6516 4564 ssa parcnt-* makes it negative 4565 06506 373 002 0 4566 iacx3 bf.dta point to data in buffer assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 147 parity - strip parity bits off input characters 06507 7333 00 0 4567 cqa put parity mask into a reg 4568 06510 3 32 000 0 4569 par020 ansa 0,3 mask parity bits 06511 373 001 0 4570 iacx3 1 bump ptr 06512 0 76 004 6516 4571 aos parcnt-* decrement count 06513 0 75 775 6510 4572 tmi par020-* loop 4573 06514 4574 par030 return parity 4575 06516 4576 parcnt bss 1 4577 06517 177177 0 4578 l.m001 vfd o18/177177 06520 077077 0 4579 l.m002 vfd o18/077077 end of binary card 00000092 06521 000777 0 4580 l.m003 vfd 18/buftmk 06522 001000 0 4581 l.m004 vfd 18/tflfec 06523 2 00000 0 4582 l.m005 ind 0,b.0 06524 004000 0 4583 l.m006 vfd 18/tftbec 06525 000100 0 4584 l.m007 vfd 18/tf8in 06526 100000 0 4585 l.m008 vfd 18/tffip 06527 001000 0 4586 l.m009 oct 1000 06530 000004 0 4587 l.m010 vfd 18/tfkpar 4588 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 148 outpar - output parity for ebcdic terminals 06531 4590 outpar subr opr,(x3) 4591 4592 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4593 * 4594 * outpar 4595 * 4596 * outpar generates parity bits on 6-bit ebcdic 4597 * data. odd parity only. 4598 * 4599 * upon entry: 4600 * x2 - virtual sfcm address 4601 * x3 - virtual buffer address 4602 * 4603 * returns: 4604 * parity bits in buffer 4605 * 4606 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4607 06537 2 07 005 0 4608 lda sf.flg,2 get the sfcm flag bits 06540 222 040 0 4609 icana sffebd edcbic data? 06541 0 74 023 6564 4610 tze oprret-* no 4611 06542 3 07 001 0 4612 lda bf.tly,3 get the buffer tally 06543 0 34 756 6521 4613 ana l.m003-* (=buftmk) leave only tally 06544 0 17 022 6566 4614 sta oprcnt-* save 06545 673 000 0 4615 ila 0 06546 0 36 020 6566 4616 ssa oprcnt-* make negative 4617 06547 0 07 767 6536 4618 lda oprsx3-* reload x3 value 06550 0 37 753 6523 4619 ora l.m005-* (=char bits) 06551 773 002 0 4620 iaa bf.dta point at data 06552 4333 00 0 4621 cax3 put into x3 4622 06553 3 07 200 0 4623 opr010 lda 0,3,b.0 pick up char 06554 022 077 0 4624 iana 63 drop to 6 bits 06555 3336 22 0 4625 alp 18 get the parity on it 06556 0 64 002 6560 4626 tnz 2 all ok now 06557 122 100 0 4627 iora 64 or in 7th bit for odd-parity 06560 3 17 200 0 4628 sta 0,3,b.0 replace char 06561 373 300 0 4629 iacx3 0,3,b.1 bump ptr 06562 0 76 004 6566 4630 aos oprcnt-* decrement count 06563 0 75 770 6553 4631 tmi opr010-* loop for all chars 4632 06564 4633 oprret return outpar done 4634 06566 4635 oprcnt bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 149 oscan - scan the output to get t.pos 06567 4637 oscan subr scn,(x1,x2,x3,a) end of binary card 00000093 4638 4639 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4640 * 4641 * oscan 4642 * 4643 * scans an output buffer and updates the column 4644 * position in t.pos accordingly. 4645 * 4646 * upon entry: 4647 * x1 - virtual tib address 4648 * x3 - virtual buffer address 4649 * 4650 * returns: 4651 * updated column position in t.pos 4652 * 4653 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4654 06606 1 03 030 0 4655 ldx2 t.sfcm,1 get virtual sfcm address 06607 2 07 005 0 4656 lda sf.flg,2 asynchronous? 06610 0 31 327 7137 4657 cana l.n004-* =sffsyn 06611 0 64 140 6751 4658 tnz scnret-* no 4659 4660 see if output scan is needed 06612 1 07 001 0 4661 lda t.flg,1 get tib flags 06613 0 31 711 6524 4662 cana l.m006-* (=tftbec) tabecho mode ? 06614 0 64 007 6623 4663 tnz scn010-* yes, must scan 06615 0 31 331 7146 4664 cana l.n011-* (=tfecpx+tfcrec) echoplex or crecho mode? 06616 0 74 133 6751 4665 tze scnret-* no, skip scan 4666 06617 1 03 037 0 4667 ldx2 t.dtp,1 any delay table ? 06620 0 74 131 6751 4668 tze scnret-* no, skip scan 06621 2 20 004 0 4669 szn dl.cr,2 any cr delays ? 06622 0 74 127 6751 4670 tze scnret-* no, skip scan 4671 06623 3 07 001 0 4672 scn010 lda bf.tly,3 get buffer tally 06624 0 34 311 7135 4673 ana l.n002-* (=buftmk) leave only tally 06625 773 000 0 4674 iaa 0 anything to scan ? 06626 0 74 123 6751 4675 tze scnret-* nope 06627 0 75 122 6751 4676 tmi scnret-* be serious 06630 0 17 273 7123 4677 sta scntly-* save tally 4678 06631 3333 00 0 4679 cx3a put buffer addr in a 06632 773 002 0 4680 iaa bf.dta get addr of data 06633 0 37 301 7134 4681 ora l.n001-* (=0,b.0) make char address 06634 4333 00 0 4682 cax3 put it in x3 06635 4 10 324 7161 4683 tsy a.o003-*,* =getcmt, get the addr of cmt in x2 06636 0 13 263 7121 4684 stx2 scncmt-* save addr 4685 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 150 oscan - scan the output to get t.pos 06637 0 03 262 7121 4686 scn020 ldx2 scncmt-* get cmt addr end of binary card 00000094 06640 0 56 262 7122 4687 stz scnidx-* zero index 4688 06641 473 003 0 4689 ilq 4-1 set max cmt table size 06642 1 07 002 0 4690 lda t.flg2,1 get tib flags 06643 0 31 276 7141 4691 cana l.n006-* (=tfsftr) is this one a shifter? 06644 0 74 002 6646 4692 tze 2 nope 06645 573 002 0 4693 iaq 2 extend cmt, look at shifts 4694 06646 3 07 200 0 4695 lda 0,3,b.0 get the char we are interested in 06647 0 34 273 7142 4696 ana l.n007-* (=000177) mask out parity 06650 0 17 254 7124 4697 sta scnchr-* save it 06651 2 27 200 0 4698 scn030 cmpa 0,2,b.0 is it a special char? 06652 0 74 030 6702 4699 tze scn040-* yes, process 4700 06653 0 67 247 7122 4701 cmpq scnidx-* at max yet? 06654 0 74 004 6660 4702 tze scn031-* yes, character not found in cmt 4703 06655 0 76 245 7122 4704 aos scnidx-* bump index word 06656 273 300 0 4705 iacx2 0,b.1 bump cmt ptr 06657 0 71 772 6651 4706 tra scn030-* loop processing more cmt chars 4707 4708 not in cmt, must be regular char 4709 06660 1 07 002 0 4710 scn031 lda t.flg2,1 get the tib flag bits 06661 0 31 260 7141 4711 cana l.n006-* (=tfsftr) shifty device? 06662 0 74 010 6672 4712 tze scn035-* no 4713 06663 1 07 002 0 4714 lda t.flg2,1 06664 0 31 254 7140 4715 cana l.n005-* (=tfupsf) in upshift now? 06665 0 74 010 6675 4716 tze scn037-* no 06666 3 07 200 0 4717 lda 0,3,b.0 get the char 06667 122 100 0 4718 iora 64 set 100 bit 06670 3 17 200 0 4719 sta 0,3,b.0 replace char 06671 0 71 004 6675 4720 tra scn037-* 4721 06672 0 07 232 7124 4722 scn035 lda scnchr-* get current character again 06673 422 040 0 4723 icmpa 32 is it a printing char? 06674 0 75 051 6745 4724 tmi scn200-* no, get out 4725 06675 1 07 033 0 4726 scn037 lda t.pos,1 get current position 06676 422 377 0 4727 icmpa 255 over limit ? 06677 0 65 046 6745 4728 tpl scn200-* yes, don't increment 4729 06700 1 76 033 0 4730 aos t.pos,1 increment position 06701 0 71 044 6745 4731 tra scn200-* continue 4732 06702 0 03 220 7122 4733 scn040 ldx2 scnidx-* get the index value 06703 4 71 247 7152 4734 tra a.n001-*,* (=scntbl,2*) go to right routine assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 151 oscan - scan the output to get t.pos 4735 06704 0 06712 1 4736 scntbl ind scn050 line-feed 06705 0 06714 1 4737 ind scn060 carriage return 06706 0 06716 1 4738 ind scn070 tab end of binary card 00000095 06707 0 06732 1 4739 ind scn080 backspace 06710 0 06737 1 4740 ind scn090 upshift 06711 0 06742 1 4741 ind scn100 downshift 4742 06712 4743 scn050 null linefeed 06712 1 56 033 0 4744 stz t.pos,1 reset column position 06713 0 71 032 6745 4745 tra scn200-* 4746 06714 4747 scn060 null carriage return 06714 1 56 033 0 4748 stz t.pos,1 reset column position 06715 0 71 030 6745 4749 tra scn200-* 4750 06716 4751 scn070 null tab 06716 1 47 033 0 4752 ldq t.pos,1 get current position 06717 673 000 0 4753 ila 0 prepare to divide aq 06720 4754 dvd l.n003-* (=10) divide by 10 06722 0 57 176 7120 4755 stq scntmp-* save remainder 4756 06723 673 012 0 4757 ila 10 get max cols per tab 06724 0 26 174 7120 4758 sba scntmp-* get cols moved 06725 1 06 033 0 4759 ada t.pos,1 this will be new column position 06726 422 377 0 4760 icmpa 255 over limit ? 06727 0 65 016 6745 4761 tpl scn200-* yes, don't increment 06730 1 17 033 0 4762 sta t.pos,1 update column position 06731 0 71 014 6745 4763 tra scn200-* 4764 06732 1 07 033 0 4765 scn080 lda t.pos,1 backspace 06733 0 74 012 6745 4766 tze scn200-* already in column 0, do nothing 06734 773 777 0 4767 iaa -1 otherwise decrement column position 06735 1 17 033 0 4768 sta t.pos,1 06736 0 71 007 6745 4769 tra scn200-* done 4770 06737 0 07 201 7140 4771 scn090 lda l.n005-* (=tfupsf) set bit on 06740 1 72 002 0 4772 orsa t.flg2,1 in tib, we are upshifted now 06741 0 71 004 6745 4773 tra scn200-* 4774 06742 0 07 176 7140 4775 scn100 lda l.n005-* (=tfupsf) get bit 06743 322 777 0 4776 iera -1 complement it 06744 1 32 002 0 4777 ansa t.flg2,1 turn it off in tib 4778 06745 373 300 0 4779 scn200 iacx3 0,b.1 bump buffer ptr 4780 06746 673 777 0 4781 ila -1 decrement 06747 0 16 154 7123 4782 asa scntly-* the scan tally 06750 0 64 667 6637 4783 tnz scn020-* loop for more assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 152 oscan - scan the output to get t.pos 4784 06751 4785 scnret return oscan 4786 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 153 scan - scan and process an input buffer 06753 4788 scan subr isc,(x1,x2,x3) end of binary card 00000096 4789 4790 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4791 * 4792 * scan 4793 * 4794 * calls inproc to scan an input buffer, update the column 4795 * position in t.pos accordingly, perform echoing and 4796 * beginning of frame detection when scanning the current 4797 * input buffer. 4798 * 4799 * upon entry: 4800 * x1 - virtual tib address 4801 * x3 - virtual buffer address 4802 * 4803 * returns: 4804 * updated column position in t.pos 4805 * 4806 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4807 06767 4 03 170 7157 4808 ldx2 a.n006-*,* .crbpe 06770 2 07 000 0 4809 lda 0,2 save buffer pte 06771 0 17 142 7133 4810 sta iscpte-* which callers count on being preserved 4811 06772 1 03 030 0 4812 ldx2 t.sfcm,1 get virtual sfcm address 06773 2 07 005 0 4813 lda sf.flg,2 asynchronous? 06774 0 31 143 7137 4814 cana l.n004-* =sffsyn 06775 0 64 116 7113 4815 tnz iscret-* no 4816 06776 1 07 002 0 4817 lda t.flg2,1 save tffip for later comparison 06777 0 34 150 7147 4818 ana l.n012-* =tffip 07000 0 17 125 7125 4819 sta scnfrm-* 4820 07001 2 41 000 0 4821 ldx3 sf.hcm,2 get hwcm address 07002 2 07 021 0 4822 lda sf.nic,2 get addr of next char to process 07003 0 64 003 7006 4823 tnz isc010-* if any 07004 0 07 762 6766 4824 lda iscsx3-* otherwise, use beginning of buffer 07005 0 37 141 7146 4825 ora l.n011-* 0,b.1 4826 07006 0 17 120 7126 4827 isc010 sta fstchr-* temp store begin point 07007 0 34 134 7143 4828 ana l.n008-* (=o077777) make it word address 07010 0 17 117 7127 4829 sta fstwrd-* 07011 2 07 005 0 4830 lda sf.flg,2 now find out which icw we're on 07012 222 002 0 4831 icana sffcii 07013 0 74 002 7015 4832 tze 2 07014 373 002 0 4833 iacx3 h.ric1-h.ric0 07015 0 07 116 7133 4834 lda iscpte-* get page base address 07016 022 400 0 4835 iana -256 mask down to address only 07017 0 17 113 7132 4836 sta iscbas-* assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 154 scan - scan and process an input buffer 07020 3 04 000 0 4837 ldaq 0,3 get address of hardware's next char 4838 make sure it's in high memory 07021 0 75 003 7024 4839 tmi isc013-* high-order bit is on, it is 07022 0 27 127 7151 4840 cmpa l.n014-* (bwndow) 07023 0 75 003 7026 4841 tmi isc015-* below buffer window, so skip page address 4842 manipulation 07024 0 26 106 7132 4843 isc013 sba iscbas-* get offset within page 07025 0 06 124 7151 4844 ada l.n014-* (bwndow) buffer window base address end of binary card 00000097 07026 0 17 103 7131 4845 isc015 sta nxtwrd-* this is word part of next address 07027 2334 22 0 4846 llr 18 switch a and q 07030 0336 02 0 4847 als 2 shift out 18-bit addressing flag 07031 2337 17 0 4848 arl 15 get character addressing flag in low 3 bits 07032 4336 03 0 4849 qls 3 move word address up next to it 07033 2335 03 0 4850 lrl 3 now whole thing is in the q 07034 0 57 074 7130 4851 stq nxtchr-* save it 07035 0 07 074 7131 4852 lda nxtwrd-* get word address 07036 6333 00 0 4853 caq 07037 0 66 070 7127 4854 sbq fstwrd-* find word difference 07040 4336 01 0 4855 qls 1 convert to chars 07041 0 07 103 7144 4856 lda l.n009-* =o100000 07042 0 31 064 7126 4857 cana fstchr-* started on odd char? 07043 0 74 002 7045 4858 tze 2 no 07044 573 777 0 4859 iaq -1 yes, one character less 07045 0 31 063 7130 4860 cana nxtchr-* ended on odd char? 07046 0 74 002 7050 4861 tze 2 no 07047 573 001 0 4862 iaq 1 yes, one character more 07050 573 000 0 4863 iaq 0 is total any chars at all? 07051 0 74 042 7113 4864 tze iscret-* no 07052 0 75 041 7113 4865 tmi iscret-* and no 4866 07053 2 07 005 0 4867 lda sf.flg,2 get ebcdic bit for inproc 07054 022 040 0 4868 iana sffebd 07055 0 41 051 7126 4869 ldx3 fstchr-* get address 07056 4 10 075 7153 4870 tsy a.n002-*,* inproc 07057 0 41 051 7130 4871 ldx3 nxtchr-* update scan pointer now 07060 2 50 021 0 4872 stx3 sf.nic,2 07061 0 17 037 7120 4873 sta scntmp-* hang on to returned flags 07062 1 07 002 0 4874 lda t.flg2,1 did we enter or leave a frame? 07063 0 34 064 7147 4875 ana l.n012-* =tffip 07064 0 27 041 7125 4876 cmpa scnfrm-* same as before? 07065 0 74 003 7070 4877 tze isc020-* yes 07066 0 07 062 7150 4878 lda l.n013-* (=sffnib) no, we'll need a different buffer size 07067 2 72 005 0 4879 orsa sf.flg,2 07070 0 07 030 7120 4880 isc020 lda scntmp-* get returned flags 07071 222 002 0 4881 icana retsus output_suspend char? 07072 0 74 003 7075 4882 tze isc030-* no 07073 4 10 062 7155 4883 tsy a.n004-*,* (susout) yes, manipulate icws 07074 0 71 017 7113 4884 tra iscret-* and done end of binary card 00000098 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 155 scan - scan and process an input buffer 07075 222 004 0 4885 isc030 icana retres output_resume char? 07076 0 74 003 7101 4886 tze isc040-* no 07077 4 10 057 7156 4887 tsy a.n005-*,* (resout) yes, restore icws 07100 0 71 013 7113 4888 tra iscret-* done 07101 222 001 0 4889 isc040 icana reteco inproc added char(s) to echo buffer? 07102 0 74 011 7113 4890 tze iscret-* no 07103 2 07 005 0 4891 lda sf.flg,2 get sfcm flag bits 07104 222 100 0 4892 icana sffech echoing on now? 07105 0 64 006 7113 4893 tnz iscret-* yes, done 4894 07106 2 07 012 0 4895 lda sf.pcw,2 look at pcw bits 07107 222 200 0 4896 icana pb.xmt are we already xmiting? 07110 0 64 003 7113 4897 tnz iscret-* yes, done 4898 07111 4 10 043 7154 4899 tsy a.n003-*,* (=echock) try to do echoing 07112 0 71 001 7113 4900 tra iscret-* echoing started 4901 07113 4 03 044 7157 4902 iscret ldx2 a.n006-*,* .crbpe 07114 0 07 017 7133 4903 lda iscpte-* restore original pte 07115 2 17 000 0 4904 sta 0,2 07116 4905 return scan 4906 4907 07120 4908 scntmp bss 1 07121 4909 scncmt bss 1 07122 4910 scnidx bss 1 07123 4911 scntly bss 1 07124 4912 scnchr bss 1 07125 4913 scnfrm bss 1 07126 4914 fstchr bss 1 07127 4915 fstwrd bss 1 07130 4916 nxtchr bss 1 07131 4917 nxtwrd bss 1 07132 4918 iscbas bss 1 07133 4919 iscpte bss 1 4920 07134 2 00000 0 4921 l.n001 ind 0,b.0 07135 000777 0 4922 l.n002 vfd 18/buftmk 07136 000012 0 4923 l.n003 dec 10 07137 010000 0 4924 l.n004 vfd 18/sffsyn 07140 000200 0 4925 l.n005 vfd 18/tfupsf 07141 200000 0 4926 l.n006 vfd 18/tfsftr 07142 000177 0 4927 l.n007 oct 000177 07143 077777 0 4928 l.n008 oct 077777 07144 100000 0 4929 l.n009 oct 100000 07145 002000 0 4930 l.n010 vfd 18/tfcrec 07146 3 00000 0 4931 l.n011 ind 0,b.1 07147 100000 0 4932 l.n012 vfd 18/tffip 07150 100000 0 4933 l.n013 vfd 18/sffnib 07151 077000 0 4934 l.n014 vfd 18/bwndow assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 156 scan - scan and process an input buffer 4935 07152 6 06704 1 4936 a.n001 ind scntbl,2* 07153 0 27000 3 4937 a.n002 ind inproc 07154 0 07267 1 4938 a.n003 ind echock 07155 0 07357 1 4939 a.n004 ind susout end of binary card 00000099 07156 0 07407 1 4940 a.n005 ind resout 07157 0 00710 0 4941 a.n006 ind .crbpe 4942 4943 000001 4944 reteco bool 000001 000002 4945 retsus bool 000002 000004 4946 retres bool 000004 4947 4948 07160 0 34000 3 4949 a.o001 ind setbpt 4950 *a.o002 07161 0 24000 3 4951 a.o003 ind getcmt 4952 4953 *l.o001 4954 *l.o002 07162 3 00002 0 4955 l.o003 ind eb.dta,b.1 4956 *l.o004 4957 *l.o005 4958 *l.o006 4959 *l.o007 4960 *l.o008 4961 *l.o009 07163 001000 0 4962 l.o010 vfd 18/tfrpon assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 157 geteb - get chars from the echo buffer 07164 4964 geteb subr geb,(x1,x2,x3) 4965 4966 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4967 * 4968 * geteb 4969 * 4970 * subroutine to get the pointer and tally of 4971 * chars in the echo buffer which are to be 4972 * echoed now. 4973 * 4974 * input: 4975 * x1 - virtual tib address 4976 * x2 - virtual sfcm address 4977 * 4978 * output: 4979 * a - char address of data 4980 * q - tally in chars 4981 * 4982 * calling sequence: 4983 * tsy geteb-* 4984 * tra fail-* no more to echo 4985 * tra good-* got some chars 4986 * 4987 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4988 07200 1 41 025 0 4989 ldx3 t.echo,1 get ptr to echo buffer 07201 0 74 012 7213 4990 tze geb005-* none 4991 07202 1 07 002 0 4992 lda t.flg2,1 get tib flag bits 07203 0 31 760 7163 4993 cana l.o010-* (=tfrpon) replay on? 07204 0 64 007 7213 4994 tnz geb005-* yes, inhibit removal from echo buffer 4995 07205 3333 00 0 4996 cx3a convert echo buffer address 07206 4 10 752 7160 4997 tsy a.o001-*,* (setbpt) to virtual 07207 4333 00 0 4998 cax3 07210 3 07 002 0 4999 lda eb.tly,3 get the echo buffer tally 07211 0337 11 0 5000 ars 9 shift 07212 0 64 003 7215 5001 tnz geb010-* we have some 5002 07213 0334 44 0 5003 geb005 lls 36 zero aq 07214 0 71 045 7261 5004 tra gebret-* return, fail exit 5005 07215 3 07 001 0 5006 geb010 lda eb.otp,3 get ptr to chars to be echoed 07216 0336 03 0 5007 als 3 07217 2337 03 0 5008 arl 3 drop char addressing 07220 0 17 044 7264 5009 sta gebadr-* save 07221 3333 00 0 5010 cx3a get echo buf ptr again 07222 773 040 0 5011 iaa 32 point to end 07223 0 26 041 7264 5012 sba gebadr-* get difference 07224 0336 01 0 5013 als 1 multiply by two assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 158 geteb - get chars from the echo buffer 07225 0 17 040 7265 5014 sta gebtly-* save 5015 end of binary card 00000100 07226 3 07 001 0 5016 lda eb.otp,3 get outptr 07227 0337 17 0 5017 ars 15 leave only char bits 07230 222 001 0 5018 icana 1 is it odd char? 07231 0 74 004 7235 5019 tze geb020-* no, ok 5020 07232 0 07 033 7265 5021 lda gebtly-* fix up the tally 07233 773 777 0 5022 iaa -1 07234 0 17 031 7265 5023 sta gebtly-* 5024 07235 3 03 001 0 5025 geb020 ldx2 eb.otp,3 get ptr 07236 0 13 026 7264 5026 stx2 gebadr-* save it 07237 3 07 002 0 5027 lda eb.tly,3 get the real tally 07240 0335 11 0 5028 lrs 9 into lower a 07241 0 27 024 7265 5029 cmpa gebtly-* compare against max possible 07242 0 65 004 7246 5030 tpl geb030-* more, use tally to end of buffer 5031 07243 0 17 022 7265 5032 sta gebtly-* less, use real tally 07244 3 03 000 0 5033 ldx2 eb.inp,3 advance otp to inp 07245 0 71 006 7253 5034 tra geb040-* 5035 07246 0 17 020 7266 5036 geb030 sta gebtmp-* save value of a reg 07247 3333 00 0 5037 cx3a get ptr to base of buffer 07250 0 06 712 7162 5038 ada l.o003-* (=eb.dta,b.1) point to start of data 07251 0332 00 0 5039 cax2 put into x2 now 07252 0 07 014 7266 5040 lda gebtmp-* get back saved a reg 5041 07253 0 26 012 7265 5042 geb040 sba gebtly-* get new tally 07254 0334 11 0 5043 lls 9 get back into position 07255 3 17 002 0 5044 sta eb.tly,3 put back into eb 5045 07256 3 13 001 0 5046 stx2 eb.otp,3 reset otp now 5047 07257 0 76 705 7164 5048 aos geteb-* bump return addr to good 07260 0 04 004 7264 5049 ldaq gebadr-* get return args 5050 07261 5051 gebret return geteb 5052 07263 233100 0 07264 5053 even 07264 5054 gebadr bss 1 07265 5055 gebtly bss 1 5056 07266 5057 gebtmp bss 1 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 159 echock - check to see if any echoing to do 07267 5059 echock subr eck,(x3) 5060 5061 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5062 * 5063 * echock 5064 * 5065 * subroutine to test if any chars in echo buf 5066 * and start echoing if there are. 5067 * 5068 * upon entry: 5069 * x1 - virtual tib address 5070 * x2 - virtual sfcm address 5071 * 5072 * returns: 5073 * +1 - if echoing started 5074 * +2 - if no echoing to do 5075 * 5076 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5077 end of binary card 00000101 07275 1 07 000 0 5078 lda t.stat,1 make sure data set leads are up 07276 0 34 040 7336 5079 ana l.t001-* =tsfdtr+tsfdsr+tsfcts+tsfcd 07277 0 27 037 7336 5080 cmpa l.t001-* they must all be on 07300 0 64 026 7326 5081 tnz eck020-* we won't echo to a dead line 5082 07301 1 07 001 0 5083 lda t.flg,1 nor to one whose output is suspended 07302 0 31 036 7340 5084 cana l.t003-* =tfosus 07303 0 64 023 7326 5085 tnz eck020-* 5086 07304 0 10 660 7164 5087 tsy geteb-* check the echo buffer 07305 0 71 021 7326 5088 tra eck020-* none, return +2 5089 07306 0 14 024 7332 5090 staq eckicw-* save icw for now 5091 07307 2 41 000 0 5092 ldx3 sf.hcm,2 get ptr to hwcm region 07310 373 004 0 5093 iacx3 h.sic0 point at primary icw 5094 07311 2 07 005 0 5095 lda sf.flg,2 get flags 07312 222 004 0 5096 icana sffcoi alternate icw? 07313 0 74 002 7315 5097 tze eck010-* no 5098 07314 373 002 0 5099 iacx3 h.sic1-h.sic0 bump up to alt 07315 0 04 015 7332 5100 eck010 ldaq eckicw-* get the icw to use 07316 4 10 017 7335 5101 tsy a.t002-*,* (bldicw) put into icw 5102 07317 673 100 0 5103 ila sffech get flag for echo 07320 2 72 005 0 5104 orsa sf.flg,2 turn it on 5105 07321 673 200 0 5106 ila pb.xmt get xmit mode for pcw 07322 2 72 012 0 5107 orsa sf.pcw,2 turn it on too assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 160 echock - check to see if any echoing to do 5108 07323 0 07 014 7337 5109 lda l.t002-* (=p.nop) get pcw command 07324 4 10 010 7334 5110 tsy a.t001-*,* (=cioc) connect to channel 5111 07325 0 71 002 7327 5112 tra eckret-* done 5113 07326 0 76 741 7267 5114 eck020 aos echock-* bump return addr 5115 07327 5116 eckret return echock return to caller 07331 233100 0 07332 5117 even 07332 5118 eckicw bss 2 5119 5120 07334 0 03147 1 5121 a.t001 ind cioc 07335 0 00753 1 5122 a.t002 ind bldicw 5123 5124 07336 002007 0 5125 l.t001 vfd 18/tsfdtr+tsfdsr+tsfcts+tsfcd 07337 000000 0 5126 l.t002 vfd 18/p.nop 07340 400000 0 5127 l.t003 vfd 18/tfosus assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 161 hcheck - start echoing if not in xmit 5129 5130 5131 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5132 * 5133 * this routine is called by the inproc subroutine of the 5134 * utilities in order to make sure echoing starts before sending 5135 * status to the control tables. 5136 * 5137 * upon entry: 5138 * x1 - virtual tib address 5139 * 5140 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5141 07341 5142 hcheck subr hch,(x2) end of binary card 00000102 07347 1 03 030 0 5143 ldx2 t.sfcm,1 07350 2 07 012 0 5144 lda sf.pcw,2 find out if in xmit now 07351 222 200 0 5145 icana pb.xmt 07352 0 64 003 7355 5146 tnz hchret-* we are, deal with echoing later 07353 0 10 714 7267 5147 tsy echock-* else start it now 07354 0 71 001 7355 5148 tra hchret-* if there is any 07355 5149 hchret return hcheck assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 162 subroutines to suspend and resume output 5151 5152 5153 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5154 * 5155 * this routine is called by scan if inproc returns an indication 5156 * that an output_suspend character was received. it will turn off 5157 * the transmitter by cioc with a pcw with ^pb.xmt off. if a 5158 * tally runout occurs, it will not process it now but later when 5159 * resume is performed. if pre-tally runout occurs, it will be 5160 * processed normally and t.ocur will reflect the changes. 5161 * upon entry: 5162 * x1 - tib address 5163 * x2 - sfcm address 5164 * 5165 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5166 07357 5167 susout subr sus,(x3,i) 07370 1 07 001 0 5168 lda t.flg,1 suspend already in progress? 07371 0 31 042 7433 5169 cana l.s005-* (=tfosus) 07372 0 64 013 7405 5170 tnz susret-* yes, punt for now 07373 2 07 012 0 5171 lda sf.pcw,2 in transmit at the moment? 07374 222 200 0 5172 icana pb.xmt 07375 0 74 006 7403 5173 tze sus010-* no, skip pcw manipulation 5174 * 5175 * note: inh is not really needed, but make a smooth 5176 * transaction and insure minimum amount of output 5177 * being transmitted at this time 5178 * 07376 3331 00 0 5179 inh <+><+><+><+><+><+><+><+><+><+> 07377 0 07 032 7431 5180 lda l.s002-* (=^pb.xmt) load mask to flip xmt 07400 2 32 012 0 5181 ansa sf.pcw,2 set xmt off in pcw 07401 0 07 034 7435 5182 lda l.s007-* =p.nop 07402 4 10 034 7436 5183 tsy a.s002-*,* cioc 07403 0 07 030 7433 5184 sus010 lda l.s005-* (=tfosus) 07404 1 72 001 0 5185 orsa t.flg,1 mark tib to show output suspended 07405 5186 susret return susout assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 163 subroutines to suspend and resume output 5188 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5189 * 5190 * this subroutine is called when inproc detects an output_resume 5191 * character. it turns off the "output suspended" flag, then checks 5192 * to see if anything is on t.ocur; if so it will restart the output 5193 * channel by pcw connect, else it will simulate output tro by 5194 * calling the optro routine. 5195 * upon entry: 5196 * x1 - tib address 5197 * x2 - sfcm address 5198 * 5199 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5200 5201 07407 5202 resout subr res end of binary card 00000103 07412 1 07 001 0 5203 lda t.flg,1 suspended? 07413 0 31 020 7433 5204 cana l.s005-* tfosus 07414 0 74 013 7427 5205 tze resret-* no, return 07415 0 07 017 7434 5206 lda l.s006-* ^tfosus 07416 1 32 001 0 5207 ansa t.flg,1 turn the flag off 07417 1 20 013 0 5208 szn t.ocur,1 any pending output chain? 07420 0 74 006 7426 5209 tze res010-* no, simulate tro 07421 673 200 0 5210 ila pb.xmt else go back into transmit 07422 2 72 012 0 5211 orsa sf.pcw,2 07423 0 07 012 7435 5212 lda l.s007-* =p.nop 07424 4 10 012 7436 5213 tsy a.s002-*,* cioc 07425 0 71 002 7427 5214 tra resret-* done 5215 07426 4 10 011 7437 5216 res010 tsy a.s003-*,* optro 07427 5217 resret return resout 5218 5219 5220 5221 *l.s001 unused 07431 777577 0 5222 l.s002 vfd o18//pb.xmt revert xmit pcw mask 5223 *l.s003 unused 07432 010000 0 5224 l.s004 oct 010000 icw exhaust and 0 tally 07433 400000 0 5225 l.s005 vfd 18/tfosus 07434 377777 0 5226 l.s006 vfd o18//tfosus 07435 000000 0 5227 l.s007 vfd 18/p.nop pcw no-op command 5228 *l.s008 unused 5229 *l.s009 unused 5230 *l.s010 unused 5231 5232 5233 *a.s001 unused 07436 0 03147 1 5234 a.s002 ind cioc 07437 0 07771 1 5235 a.s003 ind optro 5236 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 164 opptro - output pre-tally runout status 07440 5238 opptro subr opt,(x1,x2,x3) 5239 5240 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5241 * 5242 * opptro 5243 * 5244 * process the pre-tally runout status. this 5245 * is stored as the hsla picks up the last char from 5246 * the buffer and therefore we will setup a new output 5247 * buffer and icw. 5248 * 5249 * upon entry: 5250 * x1 - virtual tib address 5251 * x2 - virtual sfcm address 5252 * x3 - virtual buffer address 5253 * 5254 * returns: 5255 * 5256 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5257 07454 2 07 005 0 5258 lda sf.flg,2 get the sfcm flafs 07455 222 100 0 5259 icana sffech is a tab, cr, lf, echo in progress? 07456 0 64 064 7542 5260 tnz optret-* yes, all done here 5261 07457 4 41 307 7766 5262 ldx3 a.k009-*,* .crbpe 07460 3 07 000 0 5263 lda 0,3 get current page base address 07461 0 17 070 7551 5264 sta optpte-* save it end of binary card 00000104 07462 1 07 013 0 5265 lda t.ocur,1 get t.ocur, points to buffer just finished 07463 0 74 043 7526 5266 tze opt015-* somebody dumped while we weren't looking 07464 4 10 300 7764 5267 tsy a.k007-*,* setbpt 07465 4333 00 0 5268 cax3 virtual version of t.ocur 07466 3 07 001 0 5269 lda bf.flg,3 get buffer flags 07467 0 31 252 7741 5270 cana l.k009-* check hold output buffer flag 07470 0 74 005 7475 5271 tze opt006-* no - as usual 07471 0 31 251 7742 5272 cana l.k010-* check last buffer in message flag 07472 0 74 003 7475 5273 tze opt006-* no - as usual 07473 1 56 013 0 5274 stz t.ocur,1 break chain here 07474 0 71 003 7477 5275 tra opt008-* 07475 5276 opt006 null 07475 3 07 000 0 5277 lda bf.nxt,3 get the next ptr 07476 1 17 013 0 5278 sta t.ocur,1 update t.ocur 5279 07477 5280 opt008 null 07477 2 07 005 0 5281 lda sf.flg,2 get sfcm flag word 07500 222 004 0 5282 icana sffcoi are we using alternate? 07501 0 74 002 7503 5283 tze 2 nope, continue 07502 273 001 0 5284 iacx2 sf.ob1-sf.ob0 add offset of alternate 07503 2 56 010 0 5285 stz sf.ob0,2 zero correct buffer ptr (note use of x2) 07504 1 03 030 0 5286 ldx2 t.sfcm,1 restore sfcm ptr assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 165 opptro - output pre-tally runout status 5287 07505 1 20 013 0 5288 szn t.ocur,1 any more buffers left 07506 0 74 014 7522 5289 tze opt010-* no, zero last ptr also 5290 07507 1 07 013 0 5291 lda t.ocur,1 get ptr to first 07510 4 10 254 7764 5292 tsy a.k007-*,* (setbpt) 07511 4333 00 0 5293 cax3 in virtual form 07512 3 07 001 0 5294 lda bf.flg,3 get buffer flags 07513 0 31 227 7742 5295 cana l.k010-* (=bfflst) last buffer in msg? 07514 0 64 012 7526 5296 tnz opt015-* yes, leave here 5297 07515 3 20 000 0 5298 szn bf.nxt,3 look at next ptr in first 07516 0 74 010 7526 5299 tze opt015-* no more, all done 5300 07517 673 000 0 5301 ila 0 indicate sffcoi is inactive now 07520 4 10 240 7760 5302 tsy a.k003-*,* (=nobicw) setup new output icw 5303 07521 0 71 013 7534 5304 tra opt020-* all done 5305 07522 1 56 014 0 5306 opt010 stz t.olst,1 zero the last pointer 5307 07523 0 07 225 7750 5308 lda l.k018-* (=tfwrit) get flag bit 07524 322 777 0 5309 iera -1 flip it over 07525 1 32 001 0 5310 ansa t.flg,1 and turn it off in tib 5311 07526 2 41 000 0 5312 opt015 ldx3 sf.hcm,2 we will now zero address field of icw 07527 2 07 005 0 5313 lda sf.flg,2 find out which one 07530 222 004 0 5314 icana sffcoi end of binary card 00000105 07531 0 74 002 7533 5315 tze 2 07532 373 002 0 5316 iacx3 h.sic1-h.sic0 adjust x3 accordingly 07533 3 56 004 0 5317 stz h.sic0,3 this will be correct icw 5318 07534 4 41 232 7766 5319 opt020 ldx3 a.k009-*,* .crbpe 07535 0 07 014 7551 5320 lda optpte-* get original pte back 07536 3 17 000 0 5321 sta 0,3 restore it 07537 0 41 714 7453 5322 ldx3 optsx3-* get ptr to buffer just finished 07540 0 74 002 7542 5323 tze optret-* someone did a stpchn, don't bother 07541 4 10 216 7757 5324 tsy a.k002-*,* (freout) free it and update count 07542 5325 optret null 07542 4 07 223 7765 5326 lda a.k008-*,* get saved status word 07543 0 31 174 7737 5327 cana l.k007-* (=hs.siw) are we switching icw's? 07544 0 74 003 7547 5328 tze 3 don't change sffcoi in not 07545 673 004 0 5329 ila sffcoi get the current icw switch 07546 2 62 005 0 5330 ersa sf.flg,2 flip it over in flag word 5331 07547 5332 optfin return opptro 5333 07551 5334 optpte bss 1 safe store for buffer pte assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 166 houtav - hsla output available entry 07552 5336 houtav subr hav,(x1,x2,x3) 5337 5338 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5339 * 5340 * houtav 5341 * 5342 * routine to setup icws for output which may 5343 * arrive at the right time from a send_output 5344 * op to the cs. 5345 * 5346 * upon entry: 5347 * x1 - virtual tib address 5348 * 5349 * returns: 5350 * 5351 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5352 07566 1 03 030 0 5353 ldx2 t.sfcm,1 get ptr to sfcm for this guy 07567 0 74 037 7626 5354 tze havret-* none, forget it 07570 2 41 000 0 5355 ldx3 sf.hcm,2 get ptr to hwcm 5356 07571 3 07 005 0 5357 lda h.sic0+1,3 get tally word of first 07572 3 37 007 0 5358 ora h.sic1+1,3 get tally word of second 07573 0 31 137 7732 5359 cana l.k002-* (=010000) is either exhaust bit on? 07574 0 74 032 7626 5360 tze havret-* no, made in plenty of time 5361 07575 1 07 001 0 5362 lda t.flg,1 is output suspended? 07576 0 31 140 7736 5363 cana l.k006-* tfosus 07577 0 64 027 7626 5364 tnz havret-* yes, don't interfere 5365 end of binary card 00000106 07600 3 07 005 0 5366 lda h.sic0+1,3 get first again 07601 3 34 007 0 5367 ana h.sic1+1,3 get the second 07602 0 31 130 7732 5368 cana l.k002-* (=010000) are they both on? 07603 0 64 023 7626 5369 tnz havret-* yes, return, too late to act 5370 07604 3 07 005 0 5371 lda h.sic0+1,3 get first yet again 07605 0 31 125 7732 5372 cana l.k002-* (=010000) was this the one? 07606 0 74 005 7613 5373 tze hav010-* no 07607 2 07 005 0 5374 lda sf.flg,2 yes, see if software thinks it's active 07610 0 31 121 7731 5375 cana l.k001-* =sffcoi 07611 0 74 015 7626 5376 tze havret-* it does, there's status pending 07612 0 71 004 7616 5377 tra hav020-* go ahead 07613 2 07 005 0 5378 hav010 lda sf.flg,2 alternate was exhausted 07614 0 31 115 7731 5379 cana l.k001-* (=sffcoi) did we think it was active? 07615 0 64 011 7626 5380 tnz havret-* yes, there must be status pending 5381 07616 1 07 013 0 5382 hav020 lda t.ocur,1 get ptr to t.ocur 07617 4 10 145 7764 5383 tsy a.k007-*,* setbpt 07620 4333 00 0 5384 cax3 virtual assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 167 houtav - hsla output available entry 07621 3 20 000 0 5385 szn bf.nxt,3 check to make sure all is ok 07622 0 64 002 7624 5386 tnz 2 yes 07623 5387 die 12 no bad error 5388 07624 673 001 0 5389 ila 1 indicate that sffcoi is active now 07625 4 10 133 7760 5390 tsy a.k003-*,* (=nobicw) go setup icws 5391 07626 5392 havret return houtav assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 168 nobicw - new output buffer icw setup 07630 5394 nobicw subr nob,(a,x1,x2,x3) 5395 5396 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5397 * 5398 * nobicw 5399 * 5400 * setup the output icw and buffer for the 5401 * next output buffer in the chain. 5402 * 5403 * upon entry: 5404 * x1 - virtual tib address 5405 * x2 - virtual sfcm address 5406 * a = 0 sffcoi points to inactive icw 5407 * 1 sffcoi points to active icw 5408 * 5409 * returns: 5410 * 5411 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5412 07647 2 47 000 0 5413 ldq sf.hcm,2 get addr of hwcm 07650 1 07 030 0 5414 lda t.sfcm,1 get addr of sfcm also 5415 end of binary card 00000107 07651 573 004 0 5416 iaq h.sic0 get offset of icw 0 07652 773 010 0 5417 iaa sf.ob0 and buf0 07653 0 17 053 7726 5418 sta nobibp-* save it away 07654 0 57 053 7727 5419 stq nobiwp-* and this also 5420 07655 2 07 005 0 5421 lda sf.flg,2 get the flags 07656 0 20 765 7643 5422 szn nobsa-* check input arg 07657 0 74 002 7661 5423 tze 2 normal, sffcoi points to inactive one 07660 322 004 0 5424 iera sffcoi invert meaning of sffcoi 5425 07661 222 004 0 5426 icana sffcoi alt? 07662 0 74 005 7667 5427 tze nob010-* nope, continue 5428 07663 673 002 0 5429 ila h.sic1-h.sic0 get the diff 07664 0 16 043 7727 5430 asa nobiwp-* update word 07665 673 001 0 5431 ila sf.ob1-sf.ob0 get other diff 07666 0 16 040 7726 5432 asa nobibp-* update word 5433 07667 1 07 013 0 5434 nob010 lda t.ocur,1 get the current buffer ptr 07670 4 10 074 7764 5435 tsy a.k007-*,* setbpt 07671 4333 00 0 5436 cax3 07672 3 07 000 0 5437 lda bf.nxt,3 get the next guy 07673 4 17 033 7726 5438 sta nobibp-*,* put into sfcm 07674 4 10 070 7764 5439 tsy a.k007-*,* setbpt 07675 4333 00 0 5440 cax3 hang on to virtual address 07676 0 50 032 7730 5441 stx3 nobbuf-* save it away as well 5442 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 169 nobicw - new output buffer icw setup 07677 773 002 0 5443 iaa bf.dta add in offset of data 07700 0 37 033 7733 5444 ora l.k003-* (=0,b.0) get char addressing flags 07701 6333 00 0 5445 caq hang on to it 5446 07702 3 07 001 0 5447 lda bf.tly,3 get the tally from buffer 07703 0 34 031 7734 5448 ana l.k004-* (=buftmk) isolate tally 07704 2334 22 0 5449 llr 18 switch a and q 07705 0 41 022 7727 5450 ldx3 nobiwp-* get the icw ptr 07706 4 10 061 7767 5451 tsy a.k010-*,* (bldicw) store icw 5452 07707 0 41 021 7730 5453 ldx3 nobbuf-* get latest buffer pointer back 07710 0 07 037 7747 5454 lda l.k016-* (=sffhdl) 07711 2 31 005 0 5455 cana sf.flg,2 is it hdlc? 07712 0 74 010 7722 5456 tze nob020-* no 07713 3 07 001 0 5457 lda bf.flg,3 get buffer flags 07714 0 31 026 7742 5458 cana l.k010-* (=bfflst) last buffer ? 07715 0 74 005 7722 5459 tze nob020-* no 5460 07716 0 07 030 7746 5461 lda l.k014-* (=pb.tre) get tally runout enable bit 07717 2 72 012 0 5462 orsa sf.pcw,2 turn it on in saved pcw end of binary card 00000108 07720 0 07 025 7745 5463 lda l.k013-* (=p.ris) get pcw opcode 07721 4 10 047 7770 5464 tsy a.k011-*,* (=cioc) connect 5465 07722 4 10 040 7762 5466 nob020 tsy a.k005-*,* (=oscan) scan output buffer 07723 4 10 033 7756 5467 tsy a.k001-*,* (=outpar) put parity on ebcdic 5468 07724 5469 nobret return nobicw 5470 07726 5471 nobibp bss 1 07727 5472 nobiwp bss 1 07730 5473 nobbuf bss 1 5474 5475 5476 07731 000004 0 5477 l.k001 vfd 18/sffcoi 07732 010000 0 5478 l.k002 vfd o18/010000 07733 2 00000 0 5479 l.k003 ind 0,b.0 07734 000777 0 5480 l.k004 vfd 18/buftmk 07735 000000 0 5481 l.k005 vfd 18/p.nop 07736 400000 0 5482 l.k006 vfd 18/tfosus 07737 010000 0 5483 l.k007 vfd 18/hs.siw 07740 002000 0 5484 l.k008 vfd 18/bffctl 07741 001000 0 5485 l.k009 vfd 18/bffhld hold output buffer flag 07742 040000 0 5486 l.k010 vfd 18/bfflst last buffer in message flag 07743 001042 0 5487 l.k011 vfd 18/c.rrec+c.rdtr+c.sbrk 07744 000020 0 5488 l.k012 vfd 18/tfacu 07745 010000 0 5489 l.k013 vfd 18/p.ris 07746 000004 0 5490 l.k014 vfd 18/pb.tre 5491 *l.k015 see below assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 170 nobicw - new output buffer icw setup 07747 400000 0 5492 l.k016 vfd 18/sffhdl 5493 *l.k017 unused 07750 000001 0 5494 l.k018 vfd 18/tfwrit 07751 233100 0 07752 5495 even 07752 000000 0 5496 l.k015 oct 0,1 for adding 1 to doubleword 07753 000001 0 07754 5497 even 07754 5498 havcnt bss 2 5499 5500 07756 0 06531 1 5501 a.k001 ind outpar 07757 0 10134 1 5502 a.k002 ind freout 07760 0 07630 1 5503 a.k003 ind nobicw 07761 0 01000 3 5504 a.k004 ind denq 07762 0 06567 1 5505 a.k005 ind oscan 07763 0 07267 1 5506 a.k006 ind echock 07764 0 34000 3 5507 a.k007 ind setbpt 07765 0 04576 1 5508 a.k008 ind stpswd status save word 07766 0 00710 0 5509 a.k009 ind .crbpe 07767 0 00753 1 5510 a.k010 ind bldicw end of binary card 00000109 07770 0 03147 1 5511 a.k011 ind cioc assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 171 optro - output tally runout status 07771 5513 optro subr otr,(x1,x2,x3) 5514 5515 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5516 * 5517 * optro 5518 * 5519 * process the tally runout status, this means 5520 * that the output is finished, or that we didnt 5521 * reconnect the next buffer in time. 5522 * 5523 * note: if output is in suspend state, this routine will 5524 * be no-op by a tra to otrret. 5525 * 5526 * upon entry: 5527 * x1 & x2 -as usual 5528 * 5529 * returns: 5530 * 5531 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5532 10005 1 07 001 0 5533 lda t.flg,1 was output suspended? 10006 0 31 113 10121 5534 cana l.l003-* tfosus 10007 0 74 002 10011 5535 tze otr050-* no, normal processing 5536 10010 0 71 043 10053 5537 tra otrret-* no processing for now 5538 10011 1 20 024 0 5539 otr050 szn t.dcwl,1 any dcw list to do? 10012 0 74 011 10023 5540 tze otr060-* no, check echo 5541 10013 1 41 023 0 5542 ldx3 t.dcwa,1 get addr of said list 10014 3 07 000 0 5543 lda 0,3 get the dcw 10015 2337 17 0 5544 arl 15 get op type 10016 422 001 0 5545 icmpa dl.cmd is it cmd dcw? 10017 0 64 004 10023 5546 tnz otr060-* no, not so important 5547 10020 3 07 000 0 5548 lda 0,3 reload dcw 10021 0 31 722 7743 5549 cana l.k011-* (=c.rrec+c.rdtr+c.sbrk) ? 10022 0 64 004 10026 5550 tnz otr070-* yes, process dcw first 5551 10023 4 10 740 7763 5552 otr060 tsy a.k006-*,* (=echock) test for echoing 10024 0 71 027 10053 5553 tra otrret-* good, there was some 10025 0 71 001 10026 5554 tra otr070-* no, cleanup the remains 5555 10026 2 07 005 0 5556 otr070 lda sf.flg,2 get the sfcm flags 10027 222 100 0 5557 icana sffech is a tab, cr, lf, echo in progress? 10030 0 74 007 10037 5558 tze otr080-* no, cleanup 5559 10031 673 100 0 5560 ila sffech get the echo flag 10032 322 777 0 5561 iera -1 invert the word 10033 2 32 005 0 5562 ansa sf.flg,2 and turn it off in sfcm assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 172 optro - output tally runout status 5563 10034 673 200 0 5564 ila pb.xmt get the xmt bit 10035 322 777 0 5565 iera -1 10036 2 32 012 0 5566 ansa sf.pcw,2 and turn it off in the pcw 5567 10037 1 07 024 0 5568 otr080 lda t.dcwl,1 any dcw list? end of binary card 00000110 10040 0 74 013 10053 5569 tze otrret-* nope, done 10041 422 001 0 5570 icmpa 1 exactly one dcw left? 10042 0 64 010 10052 5571 tnz otr100-* no, process it like any other 10043 1 41 023 0 5572 ldx3 t.dcwa,1 otherwise see if it's a normal end-of-output 10044 3 07 000 0 5573 lda 0,3 get the subop 10045 0 27 010 10055 5574 cmpa otrdc1-* =(cmd rxmit+sterm) 10046 0 64 004 10052 5575 tnz otr100-* no, check for one other special 10047 1 56 024 0 5576 stz t.dcwl,1 we're going to take care of dcwlist now 10050 0 10 024 10074 5577 tsy gentrm-* do terminate status 10051 0 71 002 10053 5578 tra otrret-* done 5579 check for same but also turning off rts 10052 4 10 057 10131 5580 otr100 tsy a.l003-*,* (=hdcw) call dcw processor 5581 10053 5582 otrret return optro 5583 5584 10055 5585 otrdc1 cmd c.rxmt+c.strm 10056 5586 otrdc2 cmd c.rxmt+c.rrqs+c.strm 10057 5587 otrdc3 cmd c.rrqs assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 173 opxte - output transfer timing error status 10060 5589 opxte subr oxt,(x1) 5590 5591 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5592 * 5593 * opxte 5594 * 5595 * output transfer timming errors are very 5596 * unusual, and in debugging mode we will 5597 * die on them, otherwise ctrl tables will 5598 * be poked with status 5599 * 5600 * upon entry: 5601 * x1 - virtual tib address 5602 * x2 - virtual sfcm address 5603 * 5604 * returns: 5605 * 5606 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5607 10066 1 07 000 0 5608 lda t.stat,1 get the tib status bits 10067 022 017 0 5609 iana s.dss but only the ones we want 10070 0 37 030 10120 5610 ora l.l002-* (=s.xte) get the xte status 10071 4 10 041 10132 5611 tsy a.l004-*,* (=istat) call intrp 5612 5615 10072 5616 return opxte assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 174 gentrm - subroutine to generate output terminate status 5618 5619 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5620 * 5621 * gentrm 5622 * 5623 * this subroutine is called by optro to generate terminate 5624 * status and clean up after exiting transmit mode 5625 * 5626 * upon entry: 5627 * x1 - virtual tib address 5628 * x2 - virtual sfcm address 5629 * 5630 * 5631 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5632 10074 5633 gentrm subr gen 10077 2 56 010 0 5634 stz sf.ob0,2 xmit is down, no buffers now 10100 2 56 011 0 5635 stz sf.ob1,2 10101 2 41 000 0 5636 ldx3 sf.hcm,2 get hardware comm address 10102 0 07 021 10123 5637 lda l.l006-* =o410000 10103 3 17 005 0 5638 sta h.sic0+1,3 mark both send icws exhausted 10104 3 17 007 0 5639 sta h.sic1+1,3 10105 0 07 017 10124 5640 lda l.l007-* =^tsfxmt end of binary card 00000111 10106 1 32 000 0 5641 ansa t.stat,1 not in xmit now 10107 673 200 0 5642 ila pb.xmt mark sf.pcw also 10110 322 777 0 5643 iera -1 10111 2 32 012 0 5644 ansa sf.pcw,2 10112 1 07 000 0 5645 lda t.stat,1 get current status 10113 022 017 0 5646 iana s.dss interesting part 10114 0 37 011 10125 5647 ora l.l008-* (=s.term) set terminate status 10115 4 10 015 10132 5648 tsy a.l004-*,* istat 10116 5649 return gentrm 5650 5651 5652 5653 *l.l001 unused 10120 020000 0 5654 l.l002 vfd 18/s.xte 10121 400000 0 5655 l.l003 vfd 18/tfosus 10122 000004 0 5656 l.l004 vfd 18/sffcoi 5657 *l.l005 unused 10123 410000 0 5658 l.l006 oct 410000 exhausted icw tally word 10124 777377 0 5659 l.l007 vfd o18//tsfxmt 10125 000100 0 5660 l.l008 vfd 18/s.term 5661 *l.l009 unused 5662 *l.l010 unused 10126 377777 0 5663 l.l011 vfd o18//tfosus 5664 10127 0 10057 1 5665 a.l001 ind otrdc3 10130 0 34000 3 5666 a.l002 ind setbpt assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 175 gentrm - subroutine to generate output terminate status 10131 0 00012 1 5667 a.l003 ind hdcw 10132 0 06000 3 5668 a.l004 ind istat 10133 0 07407 1 5669 a.l005 ind resout assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 176 freout subroutine, frees output buffer 5671 5672 this subroutine is called when output from a buffer is 5673 finished. its job is to free the buffer (unless its 5674 bffhld flag is on), decrement t.ocnt, and issue a send_output 5675 request if appropriate 5676 5677 at entry: 5678 x1 cpntains virtual tib address 5679 x3 contains virtual address of buffer 5680 5681 10134 5682 freout subr fre,(x3) 5683 10142 3 07 001 0 5684 lda bf.flg,3 get buffer flags 10143 0 31 031 10174 5685 cana l.u001-* check hold output buffer flag 10144 0 64 023 10167 5686 tnz freret-* yes - dont free the buffer 5687 10145 0 31 030 10175 5688 cana l.u002-* (=bffctl) control info in this buffer? 10146 0 64 015 10163 5689 tnz fre010-* yes, don't decrement count 5690 10147 673 777 0 5691 ila -1 get the minus one 10150 1 16 016 0 5692 asa t.ocnt,1 decrement counter 5693 10151 1 07 002 0 5694 lda t.flg2,1 get 2nd word of tib flags 10152 0 31 024 10176 5695 cana l.u003-* check if we just used acu 10153 0 64 010 10163 5696 tnz fre010-* there's no output to ask for 5697 end of binary card 00000112 10154 1 07 016 0 5698 lda t.ocnt,1 get new value of count 10155 422 002 0 5699 icmpa bufthr are we at the threshold? 10156 0 64 005 10163 5700 tnz fre010-* no, continue 5701 10157 1 20 012 0 5702 szn t.ocp,1 is there more output in the fnp already? 10160 0 64 003 10163 5703 tnz fre010-* yes, don't ask for more yet 5704 10161 473 105 0 5705 ilq sndout get the "send_output" op-code 10162 4 10 007 10171 5706 tsy a.u001-*,* (=denq) queue it up 5707 10163 3333 00 0 5708 fre010 cx3a 10164 4 10 007 10173 5709 tsy a.u003-*,* (cvabs) get absolute address of buffer 10165 473 000 0 5710 ilq 0 let frebfh get buffer size 10166 4 10 004 10172 5711 tsy a.u002-*,* (=frebfh) free the spent buffer 5712 10167 5713 freret return freout 5714 5715 10171 0 01000 3 5716 a.u001 ind denq 10172 0 16000 3 5717 a.u002 ind frebfh 10173 0 03000 3 5718 a.u003 ind cvabs 5719 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 177 freout subroutine, frees output buffer 10174 001000 0 5720 l.u001 vfd 18/bffhld 10175 002000 0 5721 l.u002 vfd 18/bffctl 10176 000020 0 5722 l.u003 vfd 18/tfacu assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 178 hsla jump tables 5724 5725 macro to create jump tables 5726 5727 jmptbl macro 5728 crsm on 5729 idrp #1 5730 #3#1 ind invp interrupt processor (sked$invp) 5731 zero 0 5732 tsy #3#1-*,* 5733 #2#1 vfd 4/h1ch+#1-1,2/#1,5/0,7/schdmn 5734 dup 5,31 5735 zero 0 5736 tsy #3#1-*,* 5737 subch set *-#2#1 5738 subch set subch/3 5739 vfd 4/h1ch+#1-1,2/#1,5/subch,7/schdmn 5740 idrp 5741 endm jmptbl 5742 5743 5744 5745 5746 ********************************************************* 5747 * 5748 * a jump table consists of a three word vector. 5749 * a jump table is transferred to by the hardware upon an 5750 * interrupt for this device. 5751 * 5752 * word 0 is tsy'ed to by the hardware and thus contains 5753 * the ic at the time of the interrupt 5754 * word 1 contains the instruction tsy scheduler$invp 5755 * word 2 contains a packed representation of the device 5756 * which interrupted -- it has: 5757 * 4 bits of iom chan #, 5758 * 2 bits device # (1 - 3 for hsla's), 5759 * 5 bits subchannel # (0 - 37(8) for hsla's) 5760 * 7 bits module # for the scheduler. 5761 * 5762 ********************************************************* 5763 5764 10177 5765 hslajt null 5766 10177 5767 jmptbl (1,2,3) end of binary card 00000119 5768 end of binary card 00000120 5769 end 10642 is the next available location. 355map version/assembly dates gmpa 801215/123080 gmpb 801215/123080 gmpc 801215/123080 assm 01 09-20-88 14.559 hsla_man - multics/fnp (mcs) hsla manager page 179 hsla jump tables there were no warning flags in the above assembly assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 180 octal symbol references by sequence no. 5450 abf010 3842 3831 3842 5454 abf011 3848 3835 3848 5463 abfret 3857 3845 3850 3857 5432 addbuf 3808 3808 3857 3957 4228 4176 adt010 3004 3004 3008 4203 adt020 3009 3003 3009 4205 adt030 3011 3007 3011 4206 adt040 3012 3010 3012 4162 adtopa 3001 2964 3001 3013 267 a.a001 589 456 589 270 a.a002 590 458 590 271 a.a003 591 529 591 272 a.a004 592 541 592 273 a.a005 593 593 724 274 a.a006 594 594 730 275 a.a007 595 551 595 276 a.a008 596 407 419 596 277 a.a011 598 472 598 300 a.a012 599 474 599 551 a.b001 822 822 1152 552 a.b002 823 823 864 887 901 915 1146 553 a.b003 824 824 940 555 a.b006 827 827 970 556 a.b009 830 784 830 978 3376 a.c001 2519 2450 2485 2519 3377 a.c002 2520 2448 2484 2520 3401 a.c004 2522 2522 2553 3402 a.c005 2523 2431 2466 2479 2482 2523 3403 a.c006 2524 2445 2476 2524 4012 a.d001 2874 2688 2874 4013 a.d002 2875 2794 2875 3148 4015 a.d004 2877 2827 2877 4016 a.d005 2878 2572 2878 4020 a.d007 2880 2622 2880 4021 a.d009 2882 2825 2882 3068 4022 a.d010 2883 2577 2883 3116 4023 a.d011 2884 2884 3122 3123 3129 3140 3141 4024 a.d012 2885 2885 3149 4025 a.d013 2886 2886 3153 4026 a.d014 2887 2765 2887 4027 a.d015 2888 2727 2888 4636 a.e001 3358 3196 3358 4637 a.e002 3359 3359 3441 4640 a.e003 3360 3360 3447 4641 a.e004 3361 3318 3361 3439 3539 3624 4642 a.e005 3362 3362 3589 4643 a.e006 3363 3363 3596 4646 a.e009 3366 3203 3267 3366 3552 4647 a.e010 3367 3367 3466 4650 a.e011 3368 3368 3550 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 181 octal symbol references by sequence no. 4651 a.e012 3369 3369 3506 4652 a.e013 3370 3231 3370 4653 a.e014 3371 3371 3576 4654 a.e015 3372 3276 3372 4655 a.e016 3373 3283 3373 4656 a.e017 3374 3284 3374 4657 a.e018 3375 3375 3630 3638 4660 a.e019 3376 3127 3376 4661 a.e020 3377 3180 3377 4662 a.e021 3378 3288 3378 4663 a.e022 3379 3289 3379 4664 a.e023 3380 3151 3380 4665 a.e024 3381 3205 3381 4666 a.e025 3382 3229 3274 3382 3455 3574 3609 4667 a.e026 3383 3134 3383 4670 a.e027 3384 3139 3384 5416 a.f001 3795 3775 3795 5417 a.f002 3796 3722 3796 5420 a.f003 3797 3712 3797 5421 a.f004 3798 3691 3798 5422 a.f005 3799 3724 3799 5423 a.f006 3800 3800 3840 3855 5424 a.f007 3801 3730 3756 3759 3801 5425 a.f008 3802 3615 3641 3802 5426 a.f009 3803 3626 3803 5427 a.f010 3804 3738 3804 5430 a.f011 3805 3661 3805 5431 a.f012 3806 3663 3806 5565 a.g001 3951 3942 3951 5566 a.g002 3952 3931 3952 5567 a.g003 3953 3936 3953 5570 a.g005 3954 3929 3954 3988 5571 a.g006 3955 3878 3955 5572 a.g007 3956 3888 3893 3956 5573 a.g008 3957 3937 3957 6436 a.h001 4509 4416 4509 6437 a.h002 4510 4489 4510 6440 a.h003 4511 4390 4511 6441 a.h004 4512 4368 4434 4512 6442 a.h007 4515 4418 4515 6443 a.h008 4516 4492 4516 6071 a.i001 4221 4165 4221 6072 a.i004 4224 4207 4224 6073 a.i005 4225 4171 4225 6074 a.i008 4227 4010 4168 4227 6075 a.i009 4228 4012 4169 4228 6226 a.j001 4341 4258 4260 4341 6227 a.j002 4342 4249 4342 6230 a.j003 4343 4268 4343 6231 a.j004 4344 4292 4344 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 182 octal symbol references by sequence no. 6232 a.j005 4345 4271 4345 6233 a.j006 4346 4256 4273 4346 6234 a.j007 4347 4281 4347 6235 a.j008 4348 4302 4348 7756 a.k001 5501 5467 5501 7757 a.k002 5502 5324 5502 7760 a.k003 5503 5302 5390 5503 7762 a.k005 5505 5466 5505 7763 a.k006 5506 5506 5552 7764 a.k007 5507 5267 5292 5383 5435 5439 5507 7765 a.k008 5508 5326 5508 7766 a.k009 5509 5262 5319 5509 7767 a.k010 5510 5451 5510 7770 a.k011 5511 5464 5511 10131 a.l003 5667 5580 5667 10132 a.l004 5668 5611 5648 5668 7152 a.n001 4936 4734 4936 7153 a.n002 4937 4870 4937 7154 a.n003 4938 4899 4938 7155 a.n004 4939 4883 4939 7156 a.n005 4940 4887 4940 7157 a.n006 4941 4808 4902 4941 7160 a.o001 4949 4949 4997 7161 a.o003 4951 4683 4951 2726 a.p001 2179 2107 2179 2727 a.p002 2180 2165 2180 2730 a.p003 2181 2181 2228 2731 a.p004 2182 2182 2305 2732 a.p005 2183 2183 2332 2733 a.p006 2184 2184 2247 2252 2260 2293 2735 a.p008 2186 2186 2240 2265 2271 2736 a.p009 2187 2187 2267 2273 2737 a.p010 2188 2188 2302 2740 a.p011 2189 2189 2307 2741 a.p012 2190 2155 2190 2373 a.q001 1979 1877 1979 2374 a.q002 1980 1912 1980 2375 a.q003 1981 1981 2055 2376 a.q004 1982 1920 1947 1982 2377 a.q005 1983 1924 1983 2206 a.r001 1822 1786 1822 7436 a.s002 5234 5183 5213 5234 7437 a.s003 5235 5216 5235 7334 a.t001 5121 5110 5121 7335 a.t002 5122 5101 5122 10171 a.u001 5716 5706 5716 10172 a.u002 5717 5711 5717 10173 a.u003 5718 5709 5718 1041 a.v001 1075 1072 1075 1042 a.v002 1076 1073 1076 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 183 octal symbol references by sequence no. 1043 a.v003 1077 1034 1077 4152 a.w001 2978 2978 3002 3009 4153 a.w002 2979 2947 2979 3012 4154 a.w003 2980 2944 2980 4155 a.w004 2981 2955 2981 4156 a.w005 2982 2982 3034 4157 a.w006 2983 2983 3004 5630 a.x001 4019 4013 4019 5631 a.x002 4020 4014 4016 4020 5760 a.y001 4108 4066 4075 4108 5761 a.y002 4109 4069 4109 5762 a.y003 4110 4072 4110 1450 a.z001 1384 1244 1384 1499 1451 a.z002 1385 1353 1385 1603 1452 a.z003 1386 1386 1447 1479 1503 1506 1599 1453 a.z004 1387 1387 1514 1454 a.z005 1388 1388 1525 1533 1590 1455 a.z006 1389 1389 1647 1456 a.z007 1390 1180 1192 1390 4104 alb010 2942 2942 2972 4111 alb020 2947 2947 2968 4143 alb030 2969 2956 2969 4143 alb040 2970 2945 2949 2950 2970 4151 albabs 2976 2957 2963 2976 4060 albchs 2939 1076 2939 2973 3380 4146 albret 2973 2943 2973 2415 bd133 1999 1929 1999 20000 bffbrk 94 94 3946 2000 bffctl 94 94 5484 5721 1000 bffhld 94 94 5485 5720 40000 bfflst 94 94 810 2509 5486 2 bf.dta 94 94 926 995 1828 2436 2468 3788 4502 4566 4620 4680 5443 1 bf.flg 94 94 881 2452 2487 3923 5269 5294 5457 5684 0 bf.nxt 94 94 896 899 905 917 1197 2242 2456 2464 2481 3006 3011 3890 4074 4077 5277 5298 5385 5437 1 bf.siz 94 94 869 908 1198 2958 3895 1 bf.tly 94 94 866 919 921 1202 1801 2440 2472 2691 2693 2962 3718 3720 4078 4558 4612 4672 5447 4232 bftsa 3038 3032 3038 3156 3242 3272 4019 4231 bftx3 3037 3037 3157 4020 502 bib010 771 764 771 520 bib020 789 780 789 526 bibabs 798 798 863 889 897 913 525 bibcnt 797 797 868 873 923 928 936 523 bibibp 795 760 769 776 782 795 914 976 983 987 524 bibicw 796 757 767 774 783 796 939 977 999 521 bibret 791 787 791 527 bibvir 799 799 884 927 932 934 938 766 bicsa 1032 1032 1036 767 bicsq 1032 1032 1040 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 184 octal symbol references by sequence no. 2 b.0 811 1379 1402 1828 2512 3788 4502 4582 4623 4628 4695 4698 4717 4719 4921 5479 3 b.1 806 933 1378 1795 1829 2194 4504 4705 4779 4931 4955 450 bldibf 734 490 734 791 753 bldicw 1032 824 1000 1032 1042 2524 4510 5122 5510 415 bldobf 696 445 505 696 732 724 bni030 983 972 983 736 bni040 995 990 995 741 bni050 999 993 999 705 bnibuf 950 789 944 950 1007 750 bniret 1007 981 1003 1007 752 bnispc 1009 830 1009 4516 446 bobret 732 716 722 729 732 4737 bscend 3417 3374 3417 4713 bscsts 3407 3373 3407 5 bufshf 94 94 871 1200 2960 40 bufsiz 94 94 96 252 294 1108 2164 700000 bufsmk 94 94 802 2 bufthr 94 94 5699 777 buftmk 94 94 812 1824 2508 3783 4580 4922 5480 77000 bwndow 269 269 4934 1026 cbu010 1065 1062 1065 1003 cbufsz 1057 116 1005 1057 1074 1037 cburet 1074 1059 1074 2017 cct010 1644 1627 1644 2022 cct020 1647 1629 1647 2024 cct030 1649 1631 1649 2 cct.ad 280 280 1453 1462 1482 1520 1522 1530 1534 1550 1589 5 cct.ln 283 283 1498 1602 0 cct.nx 278 278 1468 1485 1507 1592 1597 1 cct.pr 279 279 1505 1508 1591 1594 4 cct.rc 282 282 1543 1544 1586 3 cct.sz 281 281 1450 1527 1536 1546 1588 2033 cctret 1657 1640 1646 1648 1657 2237 cfg010 1859 1859 1960 2253 cfg019 1877 1877 1909 2254 cfg020 1878 1878 1913 2275 cfg030 1901 1891 1901 2300 cfg040 1906 1899 1906 2303 cfg041 1911 1879 1911 2307 cfg050 1916 1869 1916 2321 cfg051 1928 1922 1928 2313 cfg052 1921 1921 1925 2326 cfg053 1933 1930 1933 2354 cfg060 1958 1908 1914 1955 1958 2356 cfg070 1962 1863 1962 15 cfgbdl 2010 1983 2010 2413 cfgbds 1997 1935 1982 1983 1997 2010 2521 cfgend 2039 1980 2039 2430 cfgflg 2012 1935 2012 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 185 octal symbol references by sequence no. 2521 cfgicw 2043 2028 2043 2057 4 cfglen 2041 1911 2041 2533 cfgrsc 2061 2032 2033 2034 2035 2061 2064 2370 cfgsub 1975 1876 1882 1907 1975 2372 cfgsvf 1977 1928 1932 1941 1977 2231 cfgsx2 1833 1833 1857 1962 2445 cfgtab 2027 1979 2027 2371 cfgtmp 1976 1937 1946 1976 3147 cioc 2343 595 1981 2183 2343 2389 2882 5121 5234 5511 3232 ciopcw 2391 2361 2363 2367 2371 2386 2388 2391 1 c.off 630 607 609 611 613 619 624 630 0 c.on 629 606 608 610 612 614 615 616 617 618 623 629 2 c.rcrq 92 92 624 40 c.rdtr 92 92 611 5487 2 c.rrec 92 92 607 5487 20000 c.rrqs 92 92 619 5586 5587 200 c.rsup 92 92 613 10 c.rxmt 92 92 609 5585 5586 1000 c.sbrk 92 92 615 5487 1 c.scrq 92 92 623 20 c.sdtr 92 92 610 2000 c.smrk 92 92 616 1 c.srec 92 92 606 10000 c.srqs 92 92 618 100 c.ssup 92 92 612 400 c.stat 92 92 614 4000 c.strm 92 92 617 5585 5586 4 c.sxmt 92 92 608 335 cmdend 620 590 620 414 cmdle 694 459 475 684 694 2 cmdlen 627 627 683 413 cmdls 693 457 473 665 693 355 cmdprc 645 460 476 645 691 301 cmdtab 605 589 605 367 cpr010 666 666 685 401 cpr020 680 673 680 403 cpr030 683 669 678 683 15 cr 265 265 1301 1431 cstsa 1369 1369 1375 1447 csttmp 1382 1371 1372 1382 7 ct.mrk 102 102 1292 1303 1323 1332 1341 1345 1395 0 ct.ncs 102 102 1393 1398 100 ct.tb1 102 102 1317 1398 3 cvabs 137 1077 2880 3801 3955 5718 44 dcw002 410 402 410 54 dcw004 421 396 421 57 dcw005 425 425 564 114 dcw010 449 437 449 142 dcw020 478 463 470 478 154 dcw025 490 486 490 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 186 octal symbol references by sequence no. 160 dcw030 496 482 496 171 dcw035 508 498 501 503 508 201 dcw040 518 506 512 518 210 dcw050 528 520 528 214 dcw055 533 533 542 221 dcw060 540 535 540 231 dcw070 550 546 550 247 dcwpcw 569 450 523 550 556 569 245 dcwret 566 408 440 443 447 554 558 566 250 dcwst 570 454 478 511 570 1 denq 138 2181 5504 5716 4 derrq 139 1 dl.cmd 220 220 436 563 5545 4 dl.cr 100 100 4669 2 dl.in 221 221 439 3 dl.out 222 222 721 4 dl.rdt 223 223 442 5 dl.sup 224 224 469 5264 dmp005 3691 3687 3691 5277 dmp010 3702 3697 3702 5302 dmp020 3706 3701 3706 5312 dmp030 3716 3711 3716 5322 dmp040 3727 3707 3714 3727 5323 dmp050 3729 3694 3725 3729 5336 dmp060 3742 3737 3742 5244 dmpbuf 3667 3358 3667 3745 5340 dmpret 3745 3689 3745 5401 dmptmp 3779 3692 3706 3719 3779 4227 dsfret 3035 3030 3033 3035 15 dspqur 127 2875 6173 dssflg 4317 3368 4285 4289 4317 4211 dumsbf 3026 3026 3035 3197 2 eb.dta 292 292 2194 4955 0 eb.inp 289 289 2171 5033 1 eb.otp 290 290 2172 5006 5016 5025 5046 2 eb.tly 291 291 2173 4999 5027 5044 7267 echock 5059 3369 4938 5059 5114 5116 5147 5506 7315 eck010 5100 5097 5100 7326 eck020 5114 5081 5085 5088 5114 7332 eckicw 5118 5090 5100 5118 7327 eckret 5116 5112 5116 6214 ehstat 4327 4327 4343 6220 endh1 4331 4331 4347 3 etx 267 267 1296 14 ff 264 264 1294 20 fg.5bt 92 92 2032 40 fg.6bt 92 92 2033 100 fg.7bt 92 92 2034 200 fg.8bt 92 92 2035 3 fg.bd 230 230 1868 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 187 octal symbol references by sequence no. 400 fg.beb 92 92 2036 1000 fg.btr 92 92 2037 2000 fg.cct 92 92 2038 1 fg.icw 92 92 2028 10 fg.lpo 92 92 2031 2 fg.lpr 92 92 2029 4 fg.lps 92 92 2030 2 fg.rmd 229 229 1985 10163 fre010 5708 5689 5696 5700 5703 5708 16 frebfh 134 2982 3795 4509 5717 17 frebuf 133 1388 2185 20 frelbf 135 2184 21 fremem 142 1385 2188 10134 freout 5682 2521 5502 5682 5713 10167 freret 5713 5686 5713 5356 fri005 3758 3754 3758 5365 fri010 3765 3761 3765 5372 fri020 3770 3766 3770 5375 fri030 3774 3757 3774 5376 fri040 3775 3772 3775 5377 fribak 3776 3764 3769 3776 5342 fribuf 3750 2187 3727 3740 3750 3776 7126 fstchr 4914 4827 4857 4869 4914 7127 fstwrd 4915 4829 4854 4915 5 g3wjt 126 2522 7213 geb005 5003 4990 4994 5003 7215 geb010 5006 5001 5006 7235 geb020 5025 5019 5025 7246 geb030 5036 5030 5036 7253 geb040 5042 5034 5042 7264 gebadr 5054 5009 5012 5026 5049 5054 7261 gebret 5051 5004 5051 7265 gebtly 5055 5014 5021 5023 5029 5032 5042 5055 7266 gebtmp 5057 5036 5040 5057 10074 gentrm 5633 5577 5633 5649 22 getbfh 132 822 1390 2180 2981 23 getbuf 131 1387 24 getcmt 143 4951 7164 geteb 4964 4964 5048 5051 5087 25 getmem 141 1384 26 gettib 130 2878 2116 gettly 1744 1703 1744 1818 3798 1100 ghi010 1129 1122 1124 1127 1129 1111 ghi011 1139 1135 1139 1125 ghi012 1151 1132 1141 1151 1136 ghi014 1161 1150 1161 1142 ghi015 1166 1115 1166 1116 ghi01a 1144 1138 1144 1155 ghi020 1180 1177 1180 1167 ghi025 1192 1111 1118 1168 1192 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 188 octal symbol references by sequence no. 1172 ghi030 1196 1190 1196 1205 ghi040 1208 1153 1181 1193 1208 1216 ghiadr 1213 1145 1154 1161 1182 1194 1204 1213 1051 ghibuf 1085 827 1085 1163 1196 1206 4515 1203 ghiret 1206 1164 1171 1172 1206 1210 1215 ghitmp 1212 1175 1176 1212 2143 gtl010 1779 1774 1779 2166 gtl020 1800 1791 1800 2175 gtl030 1809 1798 1809 2203 gtlret 1818 1777 1813 1818 2205 gtltmp 1820 1803 1807 1815 1816 1820 6 h1ch 247 247 2072 2378 5767 6214 h1stat 4329 4329 4345 7613 hav010 5378 5373 5378 7616 hav020 5382 5377 5382 7626 havret 5392 5354 5360 5364 5369 5376 5380 5392 73 hbfnch 96 96 872 1201 2961 2217 hcfg 1833 111 1833 1971 7341 hcheck 5142 115 5142 5149 7355 hchret 5149 5146 5148 5149 4757 hdcend 3429 3379 3429 4737 hdcsts 3421 3378 3421 12 hdcw 375 105 375 566 3364 3805 5667 2035 hgeti 1681 108 1681 1739 2105 hgi010 1733 1710 1731 1733 2107 hgi020 1735 1705 1707 1732 1735 2115 hgibp 1742 1713 1716 1742 2045 hgisx3 1681 1681 1735 1736 2114 hgitly 1741 1708 1728 1729 1730 1741 3404 hintr 2526 106 2526 14 h.aicw 87 87 2595 2624 2626 10 h.baw 87 87 1579 1639 1655 0 h.ric0 87 87 756 766 1780 1783 2282 2665 2668 4464 4472 4833 2 h.ric1 87 87 766 1783 2283 2668 4472 4833 4 h.sic0 87 87 2284 2414 2424 3488 5093 5099 5316 5317 5357 5366 5371 5416 5429 5638 6 h.sic1 87 87 2285 2424 3489 5099 5316 5358 5367 5429 5639 2607 hmode 2085 109 2085 2175 7552 houtav 5336 110 5336 5392 6 hpri 257 257 2591 2841 3146 3 hprip3 258 258 2714 20000 hs.acr 154 154 4325 4337 10000 hs.ads 154 154 4326 4337 20000 hs.aiw 154 154 2860 2000 hs.brk 154 154 4324 2000 hs.byt 154 154 3427 100000 hs.cd 154 154 4321 4 hs.crc 154 154 3351 3415 200000 hs.cts 154 154 4320 2 hs.dlo 154 154 4329 4336 100000 hs.dms 154 154 3350 3409 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 189 octal symbol references by sequence no. 400000 hs.dsr 154 154 4319 200 hs.dss 154 154 2867 3339 3395 20 hs.fce 154 154 3424 100 hs.isd 154 154 3422 200000 hs.nms 154 154 2865 3342 3350 3392 3408 1000 hs.per 154 154 3350 3352 3411 2000 hs.ptr 154 154 2867 3343 3350 3393 3400 1 hs.pwi 154 154 4330 4336 4 hs.rab 154 154 3425 1000 hs.rbt 154 154 3351 3414 3428 400000 hs.rcs 154 154 2862 3333 3789 400 hs.rcv 154 154 3347 4000 hs.ri 154 154 4323 2 hs.rto 154 154 3416 10000 hs.siw 154 154 2859 2867 3336 3356 5483 10 hs.sqo 154 154 3087 3614 40000 hs.src 154 154 4322 40000 hs.trm 154 154 3350 3391 3407 4000 hs.tro 154 154 2856 2867 3390 3401 3412 3421 200 hs.xmt 154 154 3348 40 hs.xte 154 154 3394 3402 3410 3423 0 hsla 152 104 152 153 10177 hslajt 5765 112 5765 6174 hstat 4319 4319 4342 4301 hstprc 3094 2842 3094 17 htfspd 91 91 1992 0 ht.flg 91 91 1945 1949 1 ht.tib 91 91 430 2079 2385 3112 hunmsk 2319 117 2319 2336 5505 ich010 3886 3880 3886 5515 ich020 3895 3884 3895 5465 ichain 3859 3799 3827 3859 3900 2531 icwbak 2056 2052 2056 6123 ids010 4260 4253 4260 4269 6130 ids020 4267 4262 4267 6134 ids030 4273 4273 4282 6141 ids040 4280 4275 4280 6162 ids050 4303 4298 4301 4303 6172 idsst 4316 4248 4265 4278 4291 4296 4306 4310 4316 4705 iends 3396 3360 3396 27 inproc 144 4937 3470 int002 2600 2597 2600 3503 int004 2614 2606 2614 3511 int006 2621 2612 2621 3514 int007 2624 2624 2632 3525 int008 2634 2627 2630 2634 3534 int010 2643 2643 2800 3545 int011 2658 2649 2658 3570 int012 2682 2679 2682 3603 int013 2695 2681 2695 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 190 octal symbol references by sequence no. 3604 int014 2697 2646 2697 3613 int020 2721 2656 2659 2698 2721 3621 int024 2730 2725 2730 3623 int025 2733 2722 2733 3641 int027 2748 2741 2744 2748 3646 int028 2753 2735 2738 2750 2753 3700 int030 2785 2731 2779 2785 3711 int040 2798 2746 2787 2798 3714 int050 2802 2641 2644 2802 3731 int060 2812 2803 2805 2812 3661 int28a 2767 2759 2761 2764 2767 3745 intcnt 2830 2586 2587 2830 3751 intcrp 2834 2602 2610 2616 2618 2634 2637 2661 2695 2834 3750 intend 2833 2636 2799 2833 3747 inthqf 2832 2589 2598 2804 2832 3746 intjtw 2831 2554 2556 2557 2831 3762 intlno 2847 2564 2569 2571 2847 3744 intret 2827 2574 2814 2819 2827 3752 intrtb 2835 2576 2792 2835 3760 intsai 2843 2623 2843 3756 intskd 2841 2592 2715 2793 2841 3147 3754 intsql 2837 2774 2777 2837 3763 intsqo 2849 2590 2724 2728 2802 2810 2813 2849 3764 inttly 2850 2672 2692 2850 3755 intvir 2838 2621 2628 2838 3753 intvtb 2836 2578 2796 2836 2 invp 125 5767 5615 ipbfsw 3993 3372 3993 4018 6076 ipdss 4230 3366 3395 4230 4313 5574 ipmark 3959 3392 3959 3990 6011 ipptro 4140 3367 3393 4140 4173 6032 ipt010 4168 4163 4168 6034 ipt030 4171 4166 4171 5523 ipterm 3902 3370 3391 3902 3944 6037 iptro 4175 3390 4175 4209 5772 ipxte 4121 3394 4121 4138 7006 isc010 4827 4823 4827 7024 isc013 4843 4839 4843 7026 isc015 4845 4841 4845 7070 isc020 4880 4877 4880 7075 isc030 4885 4882 4885 7101 isc040 4889 4886 4889 7132 iscbas 4918 4836 4843 4918 7133 iscpte 4919 4810 4834 4903 4919 7113 iscret 4902 4815 4864 4865 4884 4888 4890 4893 4897 4900 4902 6766 iscsx3 4788 4788 4824 6 istat 122 3361 3800 3951 4224 4344 5668 4671 istats 3390 3359 3390 7 itest 124 2189 710 .crbpe 98 98 4512 4941 5509 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 191 octal symbol references by sequence no. 676 .crcct 98 98 1386 702 .crpte 98 98 825 2879 742 .mbfpa 89 89 2966 746 .mpanf 89 89 4100 744 .mupab 89 89 4090 103 linmsk 238 238 2227 251 l.a001 573 453 573 252 l.a002 574 574 672 253 l.a003 575 479 480 575 254 l.a004 576 497 509 510 576 255 l.a005 577 449 577 256 l.a006 578 522 557 578 257 l.a007 579 518 579 260 l.a008 580 514 580 261 l.a009 581 581 667 262 l.a010 582 485 582 263 l.a011 583 492 583 264 l.a012 584 545 584 265 l.a013 585 547 585 266 l.a014 586 530 586 530 l.b001 802 802 918 531 l.b002 803 803 1128 1130 532 l.b003 804 804 856 989 1002 1117 533 l.b004 805 805 1126 534 l.b005 806 806 992 535 l.b006 807 807 1123 536 l.b007 808 728 808 537 l.b008 809 785 809 979 540 l.b009 810 810 880 541 l.b010 811 811 925 997 542 l.b011 812 812 867 544 l.b013 815 815 1133 545 l.b014 816 816 1139 546 l.b015 817 779 817 1110 547 l.b016 818 818 878 1114 550 l.b017 819 819 1121 3366 l.c001 2508 2441 2473 2508 3367 l.c002 2509 2453 2488 2509 3370 l.c005 2512 2437 2469 2512 3371 l.c006 2513 2362 2513 3372 l.c007 2514 2380 2514 3373 l.c008 2515 2494 2515 3375 l.c010 2517 2491 2517 3765 l.d001 2853 2562 2853 3766 l.d002 2854 2596 2854 3767 l.d003 2855 2824 2855 3770 l.d004 2856 2648 2856 3771 l.d005 2857 2678 2734 2857 3774 l.d007 2859 2658 2697 2749 2758 2859 3775 l.d008 2860 2666 2684 2860 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 192 octal symbol references by sequence no. 3776 l.d009 2861 2671 2861 3777 l.d010 2862 2645 2760 2862 4000 l.d011 2863 2654 2863 3065 4001 l.d012 2864 2864 3060 4002 l.d013 2865 2737 2865 4003 l.d014 2866 2717 2740 2751 2866 4004 l.d015 2867 2743 2867 4005 l.d016 2868 2807 2868 3058 4006 l.d017 2869 2763 2869 4007 l.d018 2870 2674 2870 4010 l.d019 2871 2605 2608 2871 4011 l.d020 2872 2614 2872 4607 l.e001 3333 3179 3333 4610 l.e002 3334 3193 3334 4611 l.e003 3335 3335 3532 4612 l.e004 3336 3270 3336 3469 3492 3600 4613 l.e005 3337 3337 3512 3534 4614 l.e006 3338 3185 3338 4615 l.e007 3339 3200 3265 3339 4616 l.e008 3340 3340 3487 4617 l.e009 3341 3341 3476 4620 l.e010 3342 3342 3460 4621 l.e011 3343 3343 3463 4622 l.e012 3344 3344 3543 3546 4623 l.e013 3345 3345 3618 4624 l.e014 3346 3214 3237 3258 3346 4625 l.e015 3347 3347 3521 4626 l.e016 3348 3348 3526 4627 l.e017 3349 3349 3623 4630 l.e018 3350 3253 3350 4631 l.e019 3351 3255 3351 4632 l.e020 3352 3352 3433 4633 l.e021 3353 3353 3438 4634 l.e023 3355 3279 3355 4635 l.e024 3356 3240 3356 5402 l.f001 3782 3704 3782 5403 l.f002 3783 3716 3783 4079 5405 l.f004 3785 3785 3839 5406 l.f005 3786 3786 3854 5407 l.f006 3787 3696 3710 3753 3787 3830 5410 l.f007 3788 3699 3788 5411 l.f008 3789 3642 3789 5412 l.f009 3790 3654 3790 3843 5413 l.f010 3791 3762 3791 5414 l.f011 3792 3767 3792 5415 l.f012 3793 3651 3793 5561 l.g001 3946 3922 3946 5562 l.g002 3947 3941 3947 5563 l.g003 3948 3948 3985 5564 l.g004 3949 3926 3934 3949 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 193 octal symbol references by sequence no. 6427 l.h001 4501 4385 4479 4501 6430 l.h002 4502 4482 4502 6431 l.h003 4503 4393 4423 4503 6432 l.h004 4504 4485 4504 6433 l.h005 4505 4408 4505 6434 l.h006 4506 4413 4506 6435 l.h007 4507 4493 4507 6065 l.i001 4212 4162 4212 6066 l.i003 4214 4203 4214 6070 l.i009 4219 4205 4219 6220 l.j001 4334 4288 4334 6221 l.j002 4335 4252 4335 6222 l.j003 4336 4255 4336 6223 l.j004 4337 4257 4337 6224 l.j005 4338 4297 4338 6225 l.j006 4339 4300 4339 7731 l.k001 5477 5375 5379 5477 7732 l.k002 5478 5359 5368 5372 5478 7733 l.k003 5479 5444 5479 7734 l.k004 5480 5448 5480 7736 l.k006 5482 5363 5482 7737 l.k007 5483 5327 5483 7741 l.k009 5485 5270 5485 7742 l.k010 5486 5272 5295 5458 5486 7743 l.k011 5487 5487 5549 7745 l.k013 5489 5463 5489 7746 l.k014 5490 5461 5490 7747 l.k016 5492 5454 5492 7750 l.k018 5494 5308 5494 10120 l.l002 5654 5610 5654 10121 l.l003 5655 5534 5655 10123 l.l006 5658 5637 5658 10124 l.l007 5659 5640 5659 10125 l.l008 5660 5647 5660 6517 l.m001 4578 4550 4578 6520 l.m002 4579 4556 4579 6521 l.m003 4580 4559 4580 4613 6523 l.m005 4582 4582 4619 6524 l.m006 4583 4583 4662 6525 l.m007 4584 4538 4584 6527 l.m009 4586 4542 4586 6530 l.m010 4587 4547 4587 7134 l.n001 4921 4681 4921 7135 l.n002 4922 4673 4922 7136 l.n003 4923 4754 4923 7137 l.n004 4924 4657 4814 4924 7140 l.n005 4925 4715 4771 4775 4925 7141 l.n006 4926 4691 4711 4926 7142 l.n007 4927 4696 4927 7143 l.n008 4928 4828 4928 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 194 octal symbol references by sequence no. 7144 l.n009 4929 4856 4929 7146 l.n011 4931 4664 4825 4931 7147 l.n012 4932 4818 4875 4932 7150 l.n013 4933 4878 4933 7151 l.n014 4934 4840 4844 4934 7162 l.o003 4955 4955 5038 7163 l.o010 4962 4962 4993 2742 l.p001 2192 2110 2112 2119 2192 2743 l.p002 2193 2158 2193 2744 l.p003 2194 2170 2194 2746 l.p005 2196 2121 2196 2747 l.p006 2197 2115 2127 2197 2750 l.p007 2198 2125 2198 2751 l.p008 2199 2132 2199 2752 l.p009 2200 2136 2200 2753 l.p010 2201 2140 2201 2754 l.p011 2202 2143 2202 2755 l.p012 2203 2129 2203 2756 l.p013 2204 2105 2204 2757 l.p014 2205 2205 2229 2760 l.p015 2206 2206 2231 2333 2761 l.p016 2207 2207 2331 2762 l.p017 2208 2208 2276 2763 l.p018 2209 2209 2277 2764 l.p019 2210 2210 2281 2765 l.p020 2211 2150 2211 2766 l.p021 2212 2153 2212 2400 l.q001 1985 1890 1985 2401 l.q002 1986 1881 1894 1897 1986 2402 l.q003 1987 1933 1987 2403 l.q004 1988 1988 2074 2404 l.q005 1989 1989 2054 2405 l.q006 1990 1953 1990 2406 l.q007 1991 1954 1991 2407 l.q008 1992 1944 1992 2410 l.q009 1993 1993 2062 2411 l.q010 1994 1931 1994 2412 l.q011 1995 1939 1995 2207 l.r001 1824 1802 1824 2210 l.r002 1825 1812 1825 2211 l.r003 1826 1826 1861 1862 2212 l.r004 1827 1790 1827 2213 l.r005 1828 1805 1828 2214 l.r006 1829 1793 1829 2215 l.r007 1830 1712 1715 1830 2216 l.r008 1831 1720 1724 1831 7431 l.s002 5222 5180 5222 7433 l.s005 5225 5169 5184 5204 5225 7434 l.s006 5226 5206 5226 7435 l.s007 5227 5182 5212 5227 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 195 octal symbol references by sequence no. 7336 l.t001 5125 5079 5080 5125 7337 l.t002 5126 5109 5126 7340 l.t003 5127 5084 5127 10174 l.u001 5720 5685 5720 10175 l.u002 5721 5688 5721 10176 l.u003 5722 5695 5722 1044 l.v001 1079 1063 1079 1045 l.v002 1080 1065 1080 1046 l.v003 1081 1037 1081 1047 l.v004 1082 1039 1082 1050 l.v005 1083 1033 1083 4160 l.w001 2985 2985 3029 4161 l.w002 2986 2966 2986 5763 l.y001 4112 4047 4112 5764 l.y002 4113 4082 4113 5765 l.y003 4114 4090 4100 4114 1457 l.z001 1392 1234 1313 1392 1460 l.z002 1393 1253 1393 1435 1461 l.z003 1394 1257 1394 1462 l.z004 1395 1259 1263 1395 1463 l.z005 1396 1261 1289 1396 1464 l.z006 1397 1327 1397 1465 l.z007 1398 1276 1398 1466 l.z008 1399 1305 1399 1467 l.z009 1400 1299 1400 1470 l.z010 1401 1322 1344 1401 1471 l.z011 1402 1373 1402 1472 l.z012 1403 1403 1477 1559 1564 1473 l.z013 1404 1404 1566 1571 1652 1474 l.z014 1405 1357 1405 1475 l.z015 1406 1335 1406 1476 l.z016 1407 1337 1407 1477 l.z017 1408 1209 1408 5 lposhf 243 243 2133 3 lpsshf 244 244 2137 1 macwk1 5682 375 566 645 691 696 732 734 791 832 946 950 1007 1032 1042 1057 1074 1085 1206 1227 1360 1369 1380 1424 1605 1621 1657 1681 1739 1744 1818 1833 1971 2043 2057 2061 2064 2068 2083 2085 2175 2226 2308 2319 2336 2343 2389 2393 2498 2939 2973 3001 3013 3026 3035 3040 3090 3667 3745 3750 3776 3808 3857 3859 3900 3902 3944 3959 3990 3993 4018 4041 4106 4121 4138 4140 4173 4175 4209 4230 4313 4350 4437 4442 4496 4518 4574 4590 4633 4637 4785 4788 4905 4964 5051 5059 5116 5142 5149 5167 5186 5202 5217 5238 5332 5336 5392 5394 5469 5513 5582 5589 5616 5633 5649 5682 5713 3 macwk2 5682 375 645 696 734 832 950 1032 1057 1085 1227 1369 1424 1621 1681 1744 1833 2043 2061 2068 2085 2226 2319 2343 2393 2939 3001 3026 3040 3667 3750 3808 3859 3902 3959 3993 4041 4121 4140 4175 4230 4350 4442 4518 4590 4637 4788 4964 5059 5142 5167 5202 5238 5336 5394 5513 5589 5633 5682 1 macwk3 3563 431 2080 2386 2556 3158 3217 3563 5 macwk4 3563 431 2080 2386 2556 3158 3217 3563 1217 makcct 1227 1227 1360 1389 2179 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 196 octal symbol references by sequence no. 10 maskr 123 2182 1274 mct005 1264 1255 1264 1275 mct010 1265 1265 1268 1312 mct020 1285 1275 1285 1306 mct030 1278 1278 1281 1360 mct040 1326 1314 1316 1326 1342 mct050 1312 1290 1312 1353 mct055 1321 1287 1321 1254 mct059 1242 1239 1242 1255 mct060 1243 1235 1237 1241 1243 1370 mct070 1334 1331 1334 1371 mct080 1335 1328 1335 1401 mct090 1343 1338 1343 1405 mct100 1350 1336 1350 1420 mctad 1363 1246 1285 1325 1350 1363 1415 mctret 1360 1356 1360 1421 mctsbx 1364 1232 1240 1254 1286 1355 1364 1422 mctstr 1369 1293 1295 1297 1302 1308 1319 1324 1333 1342 1346 1369 1380 1417 mctsz 1362 1243 1273 1351 1362 11 mdisp 128 2877 30 meterc 140 596 12 mincd 147 2966 4090 4100 13 mincs 146 1209 2807 3058 40 minsiz 252 252 803 13 m.hsqo 89 89 2807 14 m.inaf 89 89 1209 4 m.nst 89 89 2587 3123 12 m.ssqo 89 89 3058 3146 mocur 2340 2235 2245 2250 2340 2646 mod010 2124 2113 2120 2124 2653 mod020 2129 2126 2129 2676 mod030 2149 2142 2149 2705 mod040 2157 2151 2154 2157 6 modnum 153 153 427 431 985 1245 1481 1500 1515 1926 1956 2080 2386 2556 2582 3158 3217 3563 4136 4544 5387 2723 modret 2175 2103 2159 2162 2166 2175 3006 msk005 2238 2238 2243 3015 msk007 2245 2239 2245 3016 msk008 2246 2244 2246 3020 msk010 2248 2237 2248 3025 msk015 2253 2251 2253 3026 msk020 2254 2249 2254 3037 msk050 2263 2259 2263 3045 msk060 2269 2264 2269 3053 msk070 2275 2270 2275 3076 msk075 2297 2290 2297 3104 msk080 2304 2292 2295 2298 2304 2767 mskchn 2226 2226 2308 3383 31 mupdat 148 2587 3123 40 mxntty 254 254 255 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 197 octal symbol references by sequence no. 2366 newcfg 1974 1856 1895 1898 1902 1904 1934 1936 1952 1965 1974 2063 2080 6403 nib010 4475 4469 4475 6413 nib015 4484 4480 4484 6415 nib016 4486 4483 4486 6421 nib020 4492 4476 4492 6347 nibicw 4442 4103 4432 4442 4496 6426 nibiwp 4498 4465 4471 4473 4486 4494 4498 6424 nibret 4496 4490 4496 6366 nibsq 4442 4442 4488 6371 nibsx3 4442 4442 4475 12 nl 263 263 1291 7667 nob010 5434 5427 5434 7722 nob020 5466 5456 5459 5466 7730 nobbuf 5473 5441 5453 5473 7726 nobibp 5471 5418 5432 5438 5471 7630 nobicw 5394 5394 5469 5503 7727 nobiwp 5472 5419 5430 5450 5472 7643 nobsa 5394 5394 5422 7130 nxtchr 4916 4851 4860 4871 4916 7131 nxtwrd 4917 4845 4852 4917 4713 oends 3403 3363 3403 7440 opptro 5238 3371 3400 5238 5332 6553 opr010 4623 4623 4631 6566 oprcnt 4635 4614 4616 4630 4635 6564 oprret 4633 4610 4633 6536 oprsx3 4590 4590 4618 7475 opt006 5276 5271 5273 5276 7477 opt008 5280 5275 5280 7522 opt010 5306 5289 5306 7526 opt015 5312 5266 5296 5299 5312 7534 opt020 5319 5304 5319 7551 optpte 5334 5264 5320 5334 7542 optret 5325 5260 5323 5325 7771 optro 5513 3401 5235 5513 5582 7453 optsx3 5238 5238 5322 10060 opxte 5589 3402 5589 5616 6567 oscan 4637 2520 4637 4785 5505 4705 ostats 3400 3362 3400 10011 otr050 5539 5535 5539 10023 otr060 5552 5540 5546 5552 10026 otr070 5556 5550 5554 5556 10037 otr080 5568 5558 5568 10052 otr100 5580 5571 5575 5580 10055 otrdc1 5585 5574 5585 10057 otrdc3 5587 5587 5665 10053 otrret 5582 5537 5553 5569 5578 5582 6531 outpar 4590 2519 4590 4633 5501 32 outprc 121 593 140000 p2.5bt 198 198 2032 150000 p2.6bt 199 199 2033 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 198 octal symbol references by sequence no. 160000 p2.7bt 200 200 2034 170000 p2.8bt 201 201 2035 2 p2.cct 207 207 2038 4 p2.icw 206 206 2028 10 p2.lpo 205 205 2031 2201 2202 40 p2.lpr 203 203 2029 20 p2.lps 204 204 2030 2201 2202 2203 170000 p2.mbt 202 202 1993 400 p3.beb 214 214 2036 200 p3.btr 215 215 2037 4150 pamax 2975 2946 2948 2975 6477 par010 4558 4554 4558 6510 par020 4569 4569 4572 6514 par030 4574 4539 4548 4574 6516 parcnt 4576 4562 4564 4571 4576 6444 parity 4518 3796 3953 4227 4518 4574 4050 pbfmax 2917 1075 2917 2980 2 pb.crq 193 193 640 40 pb.dtr 188 188 637 1 pb.msk 194 194 586 2322 2822 3132 400 pb.rcv 185 185 635 2863 20 pb.rts 189 189 638 4 pb.sxt 191 191 639 4 pb.tre 192 192 5490 200 pb.xmt 186 186 414 585 636 3503 4896 5106 5145 5172 5210 5222 5564 5642 4040 pchlft 2906 2906 2979 4109 4030 pchtbl 2894 2894 2978 4108 355 pcwend 641 592 641 200000 pcw.1 160 160 2513 400000 pcw.2 161 161 1991 2 pcwlen 643 540 643 341 pcwtab 634 591 634 40000 p.msk 170 170 2855 0 p.nop 166 166 3067 5126 5227 5481 10000 p.ris 167 167 577 5489 50000 p.rmsk 171 171 2207 70000 p.ssiw 173 173 1989 150000 p.tlbk 179 179 578 616 rbo005 884 879 884 630 rbo010 896 890 896 903 640 rbo020 905 898 905 642 rbo030 908 894 908 672 rbo040 935 930 935 701 rbo050 943 857 860 874 882 943 557 rboibf 832 771 832 946 702 rboret 946 941 946 704 rbotly 948 875 920 935 948 7426 res010 5216 5209 5216 7407 resout 5202 2190 4348 4940 5202 5217 5669 7427 resret 5217 5205 5214 5217 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 199 octal symbol references by sequence no. 1 reteco 4944 4889 4944 4 retres 4946 4885 4946 2 retsus 4945 4881 4945 6753 scan 4788 3797 3954 4221 4788 4905 2 scc.bs 102 102 1630 1 scc.df 102 102 1628 0 scc.dl 102 102 1626 4 schdmn 250 250 5767 6623 scn010 4672 4663 4672 6637 scn020 4686 4686 4783 6651 scn030 4698 4698 4706 6660 scn031 4710 4702 4710 6672 scn035 4722 4712 4722 6675 scn037 4726 4716 4720 4726 6702 scn040 4733 4699 4733 6712 scn050 4743 4736 4743 6714 scn060 4747 4737 4747 6716 scn070 4751 4738 4751 6732 scn080 4765 4739 4765 6737 scn090 4771 4740 4771 6742 scn100 4775 4741 4775 6745 scn200 4779 4724 4728 4731 4745 4749 4761 4763 4766 4769 4773 4779 7124 scnchr 4912 4697 4722 4912 7121 scncmt 4909 4684 4686 4909 7125 scnfrm 4913 4819 4876 4913 7122 scnidx 4910 4687 4701 4704 4733 4910 6751 scnret 4785 4658 4665 4668 4670 4675 4676 4785 6704 scntbl 4736 4736 4936 7123 scntly 4911 4677 4782 4911 7120 scntmp 4908 4755 4758 4873 4880 4908 1570 sct010 1473 1431 1448 1467 1473 1540 sct020 1446 1433 1437 1446 1531 sct030 1436 1436 1440 1566 sct040 1468 1451 1456 1468 1550 sct050 1454 1454 1460 1543 sct060 1449 1449 1469 1607 sct070 1491 1478 1491 1606 sct080 1487 1484 1487 1577 sct090 1480 1480 1486 1700 sct110 1556 1495 1556 1643 sct120 1522 1518 1522 1645 sct130 1524 1521 1524 1657 sct140 1534 1529 1534 1662 sct150 1537 1537 1542 1614 sct160 1496 1492 1496 1671 sct170 1544 1497 1544 1761 sctnds 1609 1446 1461 1496 1501 1502 1609 1760 sctods 1608 1473 1487 1583 1608 1755 sctret 1605 1466 1584 1587 1605 1516 sctsq 1424 1424 1512 1523 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 200 octal symbol references by sequence no. 1517 sctsx1 1424 1424 1463 1474 1556 1521 sctsx3 1424 1424 1452 1535 1757 sctsz 1607 1429 1442 1449 1491 1526 1607 33 secdsp 129 3365 3806 34 setbpt 136 823 1822 2186 2523 2874 2983 3382 3804 3956 4110 4511 4949 5507 5666 1762 setcct 1621 113 1621 1657 3234 seticw 2393 594 2393 2498 6236 setnib 4350 3952 4225 4350 4437 35 setptw 145 2883 3363 settmp 2504 2443 2447 2504 1 sfbfmk 84 84 775 2461 2000 sffbsc 84 84 2209 2869 2985 3346 1000 sffcai 84 84 2871 2872 2 sffcii 84 84 763 1769 1781 2208 3210 3221 3233 3246 3472 3495 4051 4054 4112 4377 4468 4831 4 sffcoi 84 84 2051 2208 2421 3560 3567 3579 3584 3602 5096 5282 5314 5329 5424 5426 5477 5656 200 sffdct 84 84 1403 2208 40 sffebd 84 84 1994 1995 2204 2208 4553 4609 4868 100 sffech 84 84 395 410 3499 4892 5103 5259 5557 5560 400000 sffhdl 84 84 2209 2517 2869 2985 3346 3355 3790 5492 10 sffisc 84 84 2640 5766 sfflag 4116 4046 4085 4104 4116 20000 sffmsp 84 84 2866 3948 100000 sffnib 84 84 2197 4113 4503 4933 20 sffsct 84 84 1404 2208 1 sffskd 84 84 2786 2789 3135 3632 4000 sffsqo 84 84 2864 3345 400 sffstp 84 84 580 3341 10000 sffsyn 84 84 582 804 1827 2209 2857 3787 3949 4212 4501 4924 2 sfhmk 84 84 773 2459 5 sfhsiz 84 84 2635 2843 16 sf.bsz 84 84 1004 1066 1113 1125 4061 13 sf.cct 84 84 1465 1483 1558 1560 1574 1637 1649 24 sf.cfg 84 84 1855 1966 2082 2139 2144 2146 20 sf.csz 84 84 1159 4397 17 sf.fbs 84 84 1120 5 sf.flg 84 84 394 412 484 516 762 855 988 1001 1116 1476 1563 1565 1570 1572 1651 1767 1789 1940 1942 2050 2104 2111 2114 2116 2128 2278 2420 2492 2604 2609 2615 2639 2677 2719 2733 2739 2752 2762 2785 2790 3028 3061 3063 3137 3209 3213 3220 3234 3236 3245 3259 3280 3473 3477 3481 3496 3498 3559 3566 3580 3583 3603 3619 3634 3655 3695 3709 3752 3829 3844 3925 3933 3986 4045 4048 4052 4053 4084 4105 4161 4376 4384 4392 4425 4467 4478 4552 4608 4656 4813 4830 4867 4879 4891 5095 5104 5258 5281 5313 5330 5374 5378 5421 5455 5556 5562 0 sf.hcm 84 84 754 1573 1624 1779 2279 2412 2594 2631 2664 3486 4462 4821 5092 5312 5355 5413 5636 15 sf.hsl 84 84 429 1943 2078 2384 6 sf.ib0 84 84 759 768 1768 2263 2268 2683 3219 3244 3686 3732 3734 3742 4044 4056 4374 4380 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 201 octal symbol references by sequence no. 7 sf.ib1 84 84 768 1771 2269 2274 2686 3223 3248 3688 3736 3743 4056 4380 20 sf.mms 84 84 487 1167 21 sf.nic 84 84 1706 1709 1714 1723 1727 2286 3713 4387 4822 4872 1 sf.nxa 84 84 2327 2755 2770 2778 2783 3075 3081 4049 4059 2 sf.nxp 84 84 2326 3152 3154 3162 3170 3175 10 sf.ob0 84 84 500 2255 2417 2426 3483 3565 3582 3645 5284 5285 5417 5431 5634 11 sf.ob1 84 84 502 2256 2426 3484 3569 3586 3647 5284 5431 5635 12 sf.pcw 84 84 416 531 538 548 2321 2330 2370 2655 2823 3066 3131 3502 4895 5107 5144 5171 5181 5211 5462 5566 5644 14 sf.rct 84 84 2816 2817 3138 3639 21 sf.rms 84 84 488 1170 1189 42 sf.shq 84 84 2611 2617 23 sf.ssl 84 84 2328 2584 2772 3070 3120 3126 3164 3629 3637 26 sf.sta 84 84 2601 2611 2617 3 sf.tly 84 84 2329 2585 2721 2768 3121 3125 3160 3628 3636 56 sf.waq 84 84 2325 2776 2782 3074 3168 3174 5767 sfptr 4117 4057 4058 4087 4096 4117 1500 shrcct 1424 114 1352 1424 1605 1636 1645 3266 sic010 2429 2422 2429 3351 sic050 2491 2454 2491 3364 sicbuf 2505 2433 2505 3360 sicicw 2501 2415 2425 2444 2460 2475 2501 3361 sicobp 2502 2418 2427 2430 2462 2465 2502 3356 sicret 2498 2435 2457 2489 2493 2498 200000 s.acr 92 92 4325 400000 s.ads 92 92 4326 400000 s.bdmk 92 92 3409 200000 s.bmk 92 92 3408 1000 s.brch 92 92 3407 3947 400 s.brk 92 92 4324 4338 1 s.cd 92 92 4321 2 s.cts 92 92 4320 100000 s.dlo 92 92 4329 4 s.dsr 92 92 4319 17 s.dss 92 92 3316 3437 3530 3622 3838 3853 3940 4199 5609 5646 4000 s.exh 92 92 3421 3786 4219 10000 s.fcse 92 92 3424 40000 s.isd 92 92 3422 400000 s.pbyt 92 92 3427 200 s.prex 92 92 3785 10000 s.prty 92 92 3353 3411 3415 40000 s.pwi 92 92 4330 200000 s.rabt 92 92 3425 100000 s.rbt 92 92 3414 3428 2000 s.ring 92 92 4323 40000 s.rto 92 92 3416 10 s.sprc 92 92 4322 20 s.st 92 92 4334 100 s.term 92 92 5660 20000 s.xte 92 92 3349 3410 3412 3423 4214 5654 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 202 octal symbol references by sequence no. 6264 snb010 4382 4378 4382 6307 snb020 4403 4394 4403 6311 snb025 4405 4398 4405 6317 snb027 4411 4407 4411 6324 snb028 4416 4412 4416 6325 snb030 4418 4386 4389 4410 4415 4418 6334 snb040 4428 4419 4428 6337 snb050 4432 4401 4426 4432 6346 snbpte 4440 4370 4435 4440 6345 snbptr 4439 4382 4388 4405 4421 4428 4439 2542 sndcfg 2068 1970 2068 2083 2147 105 sndout 239 239 5705 4271 sqo010 3080 3076 3080 4272 sqo020 3083 3078 3083 4276 sqoret 3090 3062 3090 4300 sqosql 3092 3072 3077 3092 4233 sqovfl 3040 2809 2888 3040 3090 4324 stp010 3131 3131 3375 4335 stp012 3140 3133 3140 4346 stp015 3151 3143 3151 4411 stp020 3177 3171 3177 4436 stp030 3207 3194 3207 4470 stp035 3233 3226 3233 4472 stp040 3236 3211 3215 3236 4502 stp045 3244 3238 3241 3244 4507 stp050 3250 3243 3247 3250 4516 stp051 3258 3252 3258 4535 stp053 3278 3271 3273 3278 4551 stp054 3293 3293 3301 4553 stp056 3296 3296 3304 3310 4562 stp057 3306 3294 3306 4567 stp058 3312 3298 3312 4545 stp05a 3288 3281 3288 4550 stp05b 3292 3286 3292 4757 stp060 3432 3260 3432 4766 stp062 3441 3434 3441 4770 stp065 3443 3443 3448 4776 stp070 3452 3444 3452 5012 stp075 3468 3319 3461 3464 3468 5020 stp080 3476 3201 3313 3450 3476 5033 stp090 3491 3478 3491 5040 stp092 3498 3493 3498 5051 stp095 3510 3381 3470 3474 3500 3504 3507 3508 3510 5102 stp096 3542 3513 3522 3527 3542 5113 stp100 3557 3377 3557 5143 stp101 3579 3572 3579 5145 stp105 3582 3561 3577 3582 5152 stp110 3588 3585 3588 5154 stp120 3591 3591 3597 5170 stp130 3606 3593 3606 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 203 octal symbol references by sequence no. 5176 stp200 3614 3511 3540 3544 3553 3604 3614 5207 stp205 3626 3616 3626 5214 stp210 3632 3376 3632 4600 stpbuf 3323 3250 3323 3454 3588 3608 4602 stpcnt 3325 2884 3325 4605 stpend 3328 3285 3290 3297 3328 4603 stpmrk 3326 3177 3186 3326 3510 3531 3536 3542 3548 3803 5243 stpret 3663 2885 3384 3643 3646 3648 3652 3656 3659 3663 4606 stpsql 3329 3166 3169 3329 4576 stpswd 3322 2886 3158 3178 3190 3199 3207 3239 3254 3256 3264 3269 3292 3303 3322 3432 3442 3459 3468 3491 3520 3525 3557 3591 3599 3802 4341 4346 5508 4604 stptib 3327 3115 3145 3158 3217 3327 3563 4601 stptra 3324 3278 3308 3312 3317 3324 3453 3457 3607 3611 341 supend 625 599 625 335 suptab 622 598 622 7403 sus010 5184 5173 5184 7357 susout 5167 4939 5167 5186 7405 susret 5186 5170 5186 0 sw.dbg 261 261 5613 5735 swp010 4093 4067 4093 5752 swp020 4102 4091 4102 5771 swpabs 4119 4071 4086 4119 5632 swphic 4041 2887 4041 4106 5770 swpq 4118 4089 4099 4102 4118 5643 swpsi 4041 4041 4076 4095 11 tab 266 266 1307 100 tf8in 82 82 4584 200 tf8out 82 82 2200 1000 tfabf0 82 82 815 3791 4505 10000 tfabf1 82 82 816 3792 4506 20 tfacu 82 82 4335 5488 5722 4000 tfblak 82 82 1407 20 tfbral 82 82 1396 10000 tfcrcv 82 82 583 817 2000 tfcrec 82 82 2193 3784 4930 200000 tfecpx 82 82 1394 2193 2195 4217 100000 tffip 82 82 819 1405 2196 4585 4932 40000 tffrmi 82 82 805 1392 2192 40 tfifc 82 82 807 1397 2198 4 tfkpar 82 82 4587 1000 tflfec 82 82 1400 2193 3784 4581 100 tflisn 82 82 2205 20000 tfmask 82 82 2206 20000 tfmrcv 82 82 818 400 tfoddp 82 82 2199 100 tfofc 82 82 1406 2211 400000 tfosus 82 82 584 808 2212 3793 4339 5127 5225 5226 5482 5655 5663 1000 tfrpon 82 82 4962 200000 tfsftr 82 82 4926 4000 tftbec 82 82 1399 2193 3784 4217 4583 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 204 octal symbol references by sequence no. 200 tfupsf 82 82 4925 1 tfwrit 82 82 2516 5494 53 t.abf0 82 82 1136 3760 4406 54 t.abf1 82 82 1142 3765 4411 35 t.cntr 82 82 1919 3 t.cur 82 82 2306 41 t.dcpl 82 82 3848 23 t.dcwa 82 82 431 433 465 560 687 718 5542 5572 24 t.dcwl 82 82 398 405 423 425 431 462 553 689 715 3658 5539 5568 5576 37 t.dtp 82 82 4667 25 t.echo 82 82 2161 2168 4989 11 t.elnk 82 82 2297 2299 2 t.flg2 82 82 494 778 877 1109 1119 1233 1312 1326 1334 1358 2109 2118 2122 2124 2149 4251 4690 4710 4714 4772 4777 4817 4874 4992 5694 36 t.flg3 82 82 1134 1137 1140 1143 1260 1288 2131 2135 2232 2335 3763 3768 4409 4414 4537 4546 1 t.flg 82 82 544 727 1256 1298 1304 2152 2157 2230 3650 4299 4661 5083 5168 5185 5203 5207 5310 5362 5533 40 t.frmc 82 82 1236 1315 1321 5 t.icp 82 82 859 885 892 2258 2261 3882 7 t.icpl 82 82 911 2262 3833 3847 3898 45 t.ifch 82 82 1329 6 t.ilst 82 82 862 893 906 3879 3883 3887 3891 4 t.line 82 82 2069 2364 2375 52 t.metr 82 82 1209 2587 2807 3058 3123 16 t.ocnt 82 82 2257 5692 5698 12 t.ocp 82 82 2236 2246 2254 5702 13 t.ocur 82 82 2238 2248 2253 2429 2478 5208 5265 5274 5278 5288 5291 5382 5434 46 t.ofch 82 82 1339 1343 14 t.olst 82 82 5306 33 t.pos 82 82 4726 4730 4744 4748 4752 4759 4762 4765 4768 11 t.rcp 82 82 2291 2294 22 t.reta 82 82 2304 30 t.sfcm 82 82 393 515 528 726 753 758 1058 1464 1475 1557 1623 1702 1766 1854 1938 1963 2102 2320 2369 2411 2416 2580 2600 2821 3027 3118 4081 4094 4655 4812 5143 5286 5353 5414 0 t.stat 82 82 452 481 496 508 519 526 533 676 681 2495 3184 3188 3192 3315 3436 3518 3523 3529 3621 3627 3837 3852 3939 4198 4308 4311 5078 5608 5641 5645 17 t.type 82 82 2288 14 trace 120 431 2080 2386 2556 3158 3217 3563 5545 trm010 3931 3927 3931 5553 trm020 3939 3935 3939 1000 tsfbrk 82 82 579 615 1 tsfcd 82 82 5125 20000 tsfcrq 82 82 623 624 640 2 tsfcts 82 82 5125 4 tsfdsr 82 82 5125 2000 tsfdtr 82 82 610 611 637 5125 40 tsfmrk 82 82 616 3337 3338 assm 01 09-20-88 14.568 hsla_man - multics/fnp (mcs) hsla manager page 205 octal symbol references by sequence no. 200 tsfrcv 82 82 573 575 606 607 635 3334 10000 tsfrts 82 82 618 619 638 20 tsfst 82 82 614 3335 3338 3344 4000 tsfsxt 82 82 612 613 639 4000 tsftre 82 82 2515 100 tsftrm 82 82 617 3337 3338 400 tsfxmt 82 82 573 576 608 609 636 5659 2 ts.dcw 304 304 431 10 ts.int 306 306 2556 4 ts.pcw 305 305 2080 2386 20 ts.sta 307 307 3158 3217 3563 2725 tstcfg 2177 2130 2134 2138 2141 2145 2177 1 ttasci 236 236 2289 1 tt.dcw 297 297 431 3 tt.int 299 299 2556 5 tt.ira 301 301 3217 3563 2 tt.pcw 298 298 2080 2386 4 tt.sta 300 300 3158 3141 unm010 2333 2323 2333 1 w.2 2843 2876 49965 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