assm 01 12-10-82 15.608 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 10152 common length 0 v count bits 5 primary symdef entry hsla 0 hdcw 12 hintr 3100 hgeti 1722 hmode 2457 houtav 7040 hcfg 2100 hslajt 7506 setcct 1647 shrcct 1365 end of binary card 00000001 hcheck 6624 hslms1 3372 cbufsz 733 secondary symdef entry .chain 0 x.002. 64 m.005. 1076 x.010. 2437 x.014. 2651 x.018. 3102 m.020. 3144 end of binary card 00000002 m.023. 3355 m.026. 3622 m.030. 3725 m.033. 3775 x.035. 4030 x.039. 4121 x.041. 4564 m.045. 5314 m.049. 5331 block length symref 1 ctrl end of binary card 00000003 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 2 hsla_man - multics/fnp (mcs) hsla manager 2 denq 3 invp 4 derrq 5 g3wjt 6 istat 7 mdisp 10 mincd 11 mincs 12 trace 13 dspqur end of binary card 00000004 14 frebuf 15 fremem 16 getbuf 17 getcmt 20 getmem 21 gettib 22 getubf 23 inproc 24 meterc 25 mupdat end of binary card 00000005 26 outprc 27 secdsp 30 setptw end of binary card 00000006 assm 01 12-10-82 15.608 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 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 4 hsla_man - multics/fnp (mcs) hsla manager 12 lbl ,hsla_man 15 pcc off 00000 16 base 8 17 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 18 * 19 * hsla_man, hsla 20 * 21 * this is hsla_man, the high speed line 22 * adaptor support routine for the multics/fnp 23 * communications system (mcs). it is driven by 24 * dcw lists supplied by the control_tables and 25 * interrupts from the various types of lines 26 * connected to the hsla subchannels. 27 * 28 * status from the interrupts is not 29 * processed at interrupt time, but is queued 30 * for later processing. this avoids problems of 31 * processing status for a line while the call side 32 * is changing parameters about that line. 33 * 34 * coded 9/5/74 by mike grady 35 * 36 * modified 79 jul 20 by art beattie to support dn6670 37 * extended memory. 38 * 39 * modified july 1981 by robert coren to incorporate 40 * dave cousins' code for faster icw switching. 41 * 42 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00000 43 tib assm 01 12-10-82 15.608 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 12-10-82 15.608 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.leng equ t.metr+1 length of a tib ******************************** * t.stat bits ******************************** 000001 tsfcd bool 000001 carrier detect 000002 tsfcts bool 000002 clear to send 000004 tsfdsr bool 000004 data set ready assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 7 terminal information block (tib) 000010 tsfsrc bool 000010 supervisory receive 000020 tsfst bool 000020 store status 000040 tsfmrk bool 000040 send marker status 000100 tsftrm bool 000100 send terminate status 000200 tsfrcv bool 000200 receive mode 000400 tsfxmt bool 000400 transmit mode 001000 tsfbrk bool 001000 send line break 002000 tsfdtr bool 002000 data terminal ready 004000 tsfsxt bool 004000 supervisory transmit 004000 tsftre bool 004000 tally runout enable (hdlc) 010000 tsfrts bool 010000 request to send 020000 tsfcrq bool 020000 acu call request ******************************** * tib flags -- t.flg ******************************** 000001 tfwrit bool 000001 output chain present 000002 tfbel bool 000002 send bell as next echoed character 000004 tffdpx bool 000004 full duplex mode 000010 tfkybd bool 000010 keyboard addressed 000020 tfprtr bool 000020 printer addressed 000040 tfhang bool 000040 hangup this line 000100 tflisn bool 000100 answer the phone 000200 tfquit bool 000200 send nl on line break 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 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 8 terminal information block (tib) 004000 tftbec bool 004000 do space echo on tab 010000 tfwabt bool 010000 do write abort 020000 tfauto bool 020000 this is hsla autobaud line 040000 tfeotx bool 040000 eot expected from 2741 100000 tfisus bool 100000 input suspended 200000 tfecpx bool 200000 echoplex mode 400000 tfosus bool 400000 output suspended ******************************** * second word of tib flags ******************************** 000001 tfxhld bool 000001 hold transmit on 000002 tfdild bool 000002 terminal is dialed up 000004 tfercv bool 000004 enter receive mode 000010 tfrabt bool 000010 do read abort 000020 tfacu bool 000020 do dial out 000040 tfifc bool 000040 input flow control mode 000100 tfofc bool 000100 output flow control mode 000200 tfupsf bool 000200 terminal is upshifted now 000400 tfrply bool 000400 replay mode 001000 tfrpon bool 001000 replay is occurring now 002000 tfplit bool 002000 polite mode 004000 tfblak bool 004000 asynchronous block acknowledgement 010000 tfcrcv bool 010000 'control' receive mode 020000 tfmrcv bool 020000 'message' receive mode 040000 tffrmi bool 040000 frame mode 100000 tffip bool 100000 frame in progress assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 9 terminal information block (tib) 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 002000 tfsoip bool 002000 suspension of output in progress 004000 tforp bool 004000 output resume pending (waiting until tro) ********************************* * redefined tib flags in t.flg ********************************* 000020 tfdlup equ tfprtr line is on dialup modem assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 10 software communications region, hsla 00000 45 sfcm hsla pcc save,off assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 11 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 char address of next asynchronous output 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 000005 sfhsiz equ 5 number of entries in hardware status buf room for 6 status words assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 12 sfcm for hsla 000042 sf.est equ sf.sta+sfhsiz*2+2 000042 sf.hln equ sf.est 000042 sf.waq equ sf.est 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) 000054 sf.sln equ sf.hln+sfssq 000066 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 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 040000 sffofr bool 040000 old setting of tffrmi (lines up on tffrmi 100000 sffnib bool 100000 need to allocate new input buffer(s) 200000 sffssb bool 200000 copied alternate buffer back to output ch 400000 sffhdl bool 400000 uses hdlc channel board assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 13 sfcm for hsla 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 46 47 00000 48 hwcm assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 14 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 49 00000 50 meters assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 15 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 000030 .mleng equ .mpanf+2-.mdilc length of system-wide meters assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 16 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 000027 m.maxi equ m.mini+1 maximum length of input message assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 17 per-channel meters 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 51 00000 52 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 53 csbits assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 18 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 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 19 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) 100000 s.rbt bool 100000 receive block termination (bsc & hdlc) assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 20 control and status bits 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 54 devtab assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 21 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 55 buffer assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 22 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 56 000073 57 hbfnch equ bufsiz*2-5 number of real spots in hsla input bfr assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 23 buffer format 58 00000 59 comreg assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 24 system communications region ********************************** * system communication region * ********************************** 000640 .crldt set 416 date and time of binding 000644 .crbdt set 420 date and time of bootloading 000650 .crbuf set 424 starting address of buffer area 000651 .crmem set 425 last location of memory 000652 .crnbf set 426 number of buffers available 000653 .criom set 427 start of iom table 000654 .crnhs set 428 number of hsla's configured 000655 .crnls set 429 number of lsla's configured 000656 .crcon set 430 console enabled flag 000657 .crmod set 431 starting address of module chain 000660 .crnxa set 432 ptr to next avaliable buffer 000661 .crtra set 433 trace entry enable mask 000662 .crtrb set 434 base address of trace table 000663 .crtrc set 435 next available location in trace table 000664 .crreg set 436 disaster fault register storage location 000665 .crttb set 437 location of tib table 000666 .crtte set 438 location of end of tib table 000667 .crdly set 439 head of delay table chain 000670 .crver set 440 mcs version number, 4 chars 000672 .crbrk set 442 addr of breakpoint control table 000673 .crtsw set 443 if non-zero, tracing will cease 000674 .crnxs set 444 next free small block 000675 .crnbs set 445 number of buffers devoted to small space 000676 .crcct set 446 address of first cct descriptor assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 25 system communications region 000677 .crskd set 447 address of scheduler data block 000700 .cretb set 448 list of echo-negotiation bit tables 000701 .crcpt set 449 address of cpu page table 000702 .crpte set 450 address of variable cpu page table entry 000703 .crtsz set 451 size of trace data buffer 000704 .crmet set 452 non-zero if metering enabled 000705 .crtdt set 453 address of tib for t&d executive channel 000706 .crbtm set 454 address of time meters for getbuf/frebuf 000760 .crcpr set 496 copyright notice 60 00000 61 dlytbl assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 26 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 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 27 00000 63 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 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 28 symrefs and symdefs 65 symdef hsla primary sysdef 66 symdef hdcw dcw list processor 67 symdef hintr interrupt processor 68 * symdef hbreak change break list 69 symdef hgeti get ptr and tally of input bfr 70 symdef hmode chnage modes entry 71 symdef houtav output has arrived entry 72 symdef hcfg change confiuration 73 symdef hslajt location of hsla jump tables 74 symdef setcct setcct opblock handler 75 symdef shrcct shared cct handler 76 symdef hcheck to start echoing if possible 77 symdef hslms1 hsla_man memory switch 78 symdef cbufsz change sf.bsz size for sync pre alloc buffer 79 80 81 symref trace 82 symref outprc processor for output sub-op 83 symref istat entry in intrp for status 84 symref ctrl control tables, for device tables 85 symref invp interrupt handler in scheduler 86 symref g3wjt entry to get interrupt info 87 symref dspqur secondary dispatcher 88 symref mdisp return to master dispatcher 89 symref secdsp return to secondary dispatcher 90 symref gettib entry to get the tib addr 91 symref getbuf entry to grab a buffer 92 symref getubf entry to grab an unreserved buffer 93 symref frebuf entry to free a buffer 94 symref denq queuer for dia man requests 95 symref derrq queuer for error messages to cs 96 symref meterc metering subroutine 97 symref getmem 98 symref fremem 99 symref getcmt get address of carriage mvmt tbl 100 symref inproc processes input chars for asynchronous lines 101 symref setptw set up page table word 102 symref mincs 103 symref mincd 104 symref mupdat metering subroutines 105 106 107 00000 108 hsla null 00000 109 start hsla,6 symdef -.chain 00000 even 000006 modnum equ 6 00000 000006 0 .chain dec 6 00001 306243 0 bci 2,hsla 00002 212020 0 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 29 symrefs and symdefs 00003 0 00000 1 ind hsla 00004 010201 0 date 00005 001002 0 00006 330000 0 bci 4,.001. 00007 013320 0 00010 202020 0 00011 202020 0 00012 110 hslast assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 30 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 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 31 hsla pcw op-codes and broadside commands 112 113 pcw command type codes 114 000000 115 pcw.0 bool 000000 command type 0 pcw 200000 116 pcw.1 bool 200000 cmd type 1 w/broadside 400000 117 pcw.2 bool 400000 config type 2 async 600000 118 pcw.3 bool 600000 config type 3 sync 119 120 op-codes 121 000000 122 p.nop bool 000000 no operation 010000 123 p.ris bool 010000 request input status 020000 124 p.ros bool 020000 request output status 030000 125 p.rcs bool 030000 request config status 040000 126 p.msk bool 040000 set subchannel mask bit 050000 127 p.rmsk bool 050000 reset subchannel mask bit 060000 128 p.sriw bool 060000 switch receive icw 070000 129 p.ssiw bool 070000 switch send icw 100000 130 p.init bool 100000 initialize 110000 131 p.smsk bool 110000 store subchannel mask register 120000 132 bool 120000 130000 133 bool 130000 140000 134 p.rsyn bool 140000 re-sync the subchannel 150000 135 p.tlbk bool 150000 transmit line break 160000 136 bool 160000 170000 137 bool 170000 138 139 broadside bits 140 000400 141 pb.rcv bool 000400 set receive mode 000200 142 pb.xmt bool 000200 set xmit mode 000100 143 pb.wam bool 000100 set wraparound mode 000040 144 pb.dtr bool 000040 set data terminal ready 000020 145 pb.rts bool 000020 set request to send 000010 146 pb.mby bool 000010 make busy 000004 147 pb.sxt bool 000004 set supervisory transmit 000004 148 pb.tre bool 000004 set tally runout enable (hdlc) 000002 149 pb.crq bool 000002 set call request(acu) 000001 150 bool 000001 151 152 pcw type 2 (asynch confiuration) mode bits 153 140000 154 p2.5bt bool 140000 5-bit characters 150000 155 p2.6bt bool 150000 6-bit characters 160000 156 p2.7bt bool 160000 7-bit characters 170000 157 p2.8bt bool 170000 8-bit characters 170000 158 p2.mbt bool 170000 mask for char size field 000040 159 p2.lpr bool 000040 lateral parity receive 000020 160 p2.lps bool 000020 lateral parity send 000010 161 p2.lpo bool 000010 lateral parity odd 000004 162 p2.icw bool 000004 two send icw's assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 32 hsla pcw op-codes and broadside commands 000002 163 p2.cct bool 000002 cct enable 000001 164 p2.spr bool 000001 165 166 167 pcw type 3 (sync config) 168 000400 169 p3.itf bool 000400 hdlc interframe time fill 000400 170 p3.beb bool 000400 bsc ebcdic mode 000200 171 p3.btr bool 000200 bsc transparent assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 33 random bits, flags, and definitions 173 174 sub-op types for dcw list 175 000001 176 dl.cmd equ 1 command sub-op 000002 177 dl.in equ 2 input sub-op 000003 178 dl.out equ 3 output sub-op 000004 179 dl.rdt equ 4 read tally sub-op 000005 180 dl.sup equ 5 additional command sub-op data 181 182 sub-op types for config list 183 000001 184 fg.smd equ 1 set mode bit 000002 185 fg.rmd equ 2 reset mode bit 000003 186 fg.bd equ 3 change baud rate 187 188 control tables and cct stuff 189 000001 190 ct.dev equ 1 offset of dev table ptr 191 000105 192 sndout bool 105 send output op for denq 000115 193 errmsg bool 115 error message op for derrq 194 195 000005 196 lposhf equ 5 amount to shift tfoddp to get p2.lpo 000003 197 lpsshf equ 3 amount to shift tf8out to get p2.lps 198 199 000006 200 h1ch equ 6 first hsla iom channel number 000010 201 h3ch equ 8 last hsla iom channel number 202 000004 203 schdmn equ 4 module number for scheduler invp 204 000010 205 minsiz equ 8 size of smallest asynchronous input pseudo-buffer 206 000040 207 mxntty equ 32 max number subchannels per hsla 000140 208 maxtty equ mxntty*3 max tty on hslas 209 000006 210 hpri equ 6 priority of hsla_man hstprc 000003 211 hprip3 equ 3 high priority for ptro status 000002 212 hprip2 equ 2 highest priority for >9600 ptro status 213 000000 214 sw.dbg equ 0 on if debugging the module 215 000012 216 nl bool 12 new-line 000014 217 ff bool 14 form-feed 000015 218 cr bool 15 carriage return 000011 219 tab bool 11 horizontal tab 000003 220 etx bool 3 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 34 random bits, flags, and definitions 222 ************************************************************************ 223 * 224 * format of cct descriptor entry 225 * one exists for each shared cct 226 * 227 ************************************************************************ 228 000000 229 cct.nx equ 0 pointer to next entry 000001 230 cct.pr equ 1 pointer to previous entry 000002 231 cct.ad equ 2 address of the cct 000003 232 cct.sz equ 3 length of the cct 000004 233 cct.rc equ 4 referenct count 000005 234 cct.ln equ 5 length of descriptor 235 236 237 238 equates for echo buffer things 239 000000 240 eb.inp equ 0 000001 241 eb.otp equ 1 000002 242 eb.tly equ 2 000002 243 eb.dta equ 2 244 000073 245 ebmax equ bufsiz*2-5 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 35 trace types and switches 247 000001 248 tt.dcw equ 1 trace hdcw calls 000002 249 tt.pcw equ 2 trace pcw connects 000003 250 tt.int equ 3 trace interrupts 000004 251 tt.sta equ 4 trace status 000005 252 tt.ira equ 5 trace icw recovery attempt 253 254 000002 255 ts.dcw bool 000002 000004 256 ts.pcw bool 000004 000010 257 ts.int bool 000010 000020 258 ts.sta bool 000020 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 36 macros for hsla_man 260 261 macro to generate command bit lookup 262 263 cmdtab macro 264 vfd 1/#2,17/#1 265 ife '#2','c.on',2 266 vfd 18/#3 267 ife 1,0,1 268 vfd o18//#3 269 endm 270 271 macro to generate pcw lookup table 272 273 pcwtab macro 274 vfd 18/#1 275 vfd 18/#2 276 endm 277 278 macro to generate config mode bit lookup table entry 279 280 cfgtab macro 281 vfd 18/#1 282 vfd 18/#2 283 vfd 18/#3 284 ind #4 285 endm 286 287 macro to generate status lookup tables 288 289 stats macro 290 vfd 18/#1 291 ind #2 292 endm 293 294 macro to setup status match table 295 296 smap macro 297 vfd 18/#1 298 vfd 18/#2 299 endm 300 301 macro to do real divide 302 303 dvd macro 304 qls 1 305 dvf #1 306 endm assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 37 macros for hsla_man 308 309 macro to do real multiply 310 311 mpy macro 312 mpf #1 313 lrl 1 314 endm 315 316 generates the odd word of a dn6670 paged data address icw 317 which allows iom to directly address 64k memory. 318 uses same format as icw pseudo-op except the address is 319 is not supplied and the third argument must be supplied. 320 321 amicwo macro 322 vfd 2/2,3/#1,1/#3,12/#2 323 endm amicwo assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 38 hdcw - hsla dcw list processor 00012 326 hdcw subr dcw,(x1,x2,x3) save the index regs 327 328 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 329 * 330 * hdcw 331 * 332 * subroutine called by interpreter to process 333 * a dcw list found in the control_tables. 334 * 335 * upon entry: 336 * x1 - virtual tib address 337 * t.dcwa - address of dcw list 338 * t.dcwl - dcw list length 339 * 340 * returns: 341 * 342 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 343 00026 1 03 030 0 344 ldx2 t.sfcm,1 get ptr to sfcm 00027 2 07 005 0 345 lda sf.flg,2 get sfcm flags 00030 222 100 0 346 icana sffech some echo now? 00031 0 74 023 54 347 tze dcw004-* no, go ahead 348 00032 1 07 024 0 349 lda t.dcwl,1 get count of times we've skipped out 00033 2335 11 0 350 lrl 9 it's in upper half of t.dcwl 00034 773 001 0 351 iaa 1 increment it 00035 422 074 0 352 icmpa 60 over limit? 00036 0 65 006 44 353 tpl dcw002-* yes, force it through 354 00037 0334 11 0 355 lls 9 restore lower half of word 00040 1 17 024 0 356 sta t.dcwl,1 update count 00041 473 007 0 357 ilq 7 meter delayed processing 00042 4 10 231 273 358 tsy a.a008-*,* meterc 00043 0 71 200 243 359 tra dcwret-* done here for now 360 00044 673 100 0 361 dcw002 ila sffech we're going to force this off 00045 322 777 0 362 iera -1 00046 2 32 005 0 363 ansa sf.flg,2 364 00047 673 200 0 365 ila pb.xmt transmit mode too end of binary card 00000007 00050 322 777 0 366 iera -1 00051 2 32 012 0 367 ansa sf.pcw,2 368 00052 473 010 0 369 ilq 8 meter overriding of sffech 00053 4 10 220 273 370 tsy a.a008-*,* meterc 371 00054 673 777 0 372 dcw004 ila -1 we're going to process dcw list 00055 2337 11 0 373 arl 9 wipe out count in upper half of t.dcwl 00056 1 32 024 0 374 ansa t.dcwl,1 375 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 39 hdcw - hsla dcw list processor 00057 1 07 024 0 376 dcw005 lda t.dcwl,1 look for real work to be done 00060 0 64 002 62 377 tnz 2 sure, go do it. 00061 378 die 8 379 00062 2 41 015 0 380 ldx3 sf.hsl,2 get pointer to hsla table entry 00063 3 41 001 0 381 ldx3 ht.tib,3 get real tib address for trace 00064 382 trace tt.dcw,ts.dcw,(x3,t.dcwa(1),t.dcwl(1)) 383 00101 1 41 023 0 384 ldx3 t.dcwa,1 get ponter to dcw list 00102 3 07 000 0 385 lda 0,3 get first dcw 00103 2337 17 0 386 arl 18-3 shift to get type 00104 422 001 0 387 icmpa dl.cmd is it a command dcw? 00105 0 74 007 114 388 tze dcw010-* yes, go process it 389 00106 422 002 0 390 icmpa dl.in is it input sub-op? 00107 0 74 134 243 391 tze dcwret-* yes, done 392 00110 422 004 0 393 icmpa dl.rdt is it a read tally sub-op? 00111 0 74 132 243 394 tze dcwret-* yes, done 395 00112 0 10 300 412 396 tsy bldobf-* look for output sub-op 397 00113 0 71 130 243 398 tra dcwret-* all done. 399 00114 0 47 137 253 400 dcw010 ldq l.a005-* (=p.ris) get request input status op 00115 0 57 130 245 401 stq dcwpcw-* save for later 402 00116 1 07 000 0 403 lda t.stat,1 pick up tib status 00117 0 34 130 247 404 ana l.a001-* (=tsfxmt&tsfrcv) isolate rcv and xmt end of binary card 00000008 00120 0 17 126 246 405 sta dcwst-* and save for later, also 406 00121 0 07 143 264 407 lda a.a001-* (=cmdtab) get addr of cmd table 00122 0 17 266 410 408 sta cmdls-* set for subr to use 00123 0 07 142 265 409 lda a.a002-* (=cmdend) get end of table addr 00124 0 17 265 411 410 sta cmdle-* also for subr 00125 0 10 225 352 411 tsy cmdprc-* process the command op 412 00126 1 20 024 0 413 szn t.dcwl,1 any more dcw list left? 00127 0 74 013 142 414 tze dcw020-* no, done 415 00130 1 41 023 0 416 ldx3 t.dcwa,1 yes, get addr of dcw list 00131 3 07 000 0 417 lda 0,3 get the dcw 00132 2337 17 0 418 arl 18-3 shift down to look at type 419 00133 422 005 0 420 icmpa dl.sup is it a supplemental cmd op? 00134 0 64 006 142 421 tnz dcw020-* no, continue 422 00135 0 07 137 274 423 lda a.a011-* (=suptab) get addr of sup table 00136 0 17 252 410 424 sta cmdls-* set for subr process 00137 0 07 136 275 425 lda a.a012-* (=supend) end of cmd table assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 40 hdcw - hsla dcw list processor 00140 0 17 251 411 426 sta cmdle-* set also for subr 00141 0 10 211 352 427 tsy cmdprc-* process sup cmd op 428 00142 0 07 104 246 429 dcw020 lda dcwst-* get the old rcv & xmt modes 00143 0 34 106 251 430 ana l.a003-* (=tsfrcv) old rcv mode only 00144 0 35 105 251 431 era l.a003-* (=tsfrcv) ^old rcv mode now 00145 1 31 000 0 432 cana t.stat,1 ^oldrcv&rcv, did we just enter rcv? 00146 0 74 012 160 433 tze dcw030-* no, continue... 434 00147 2 07 005 0 435 lda sf.flg,2 synchronous line? 00150 0 31 110 260 436 cana l.a010-* =sffsyn 00151 0 74 003 154 437 tze dcw025-* no, don't set message size 00152 2 47 020 0 438 ldq sf.mms,2 get max message size 00153 2 57 021 0 439 stq sf.rms,2 reset residual message size 440 00154 0 10 272 446 441 dcw025 tsy bldibf-* go setup rcv data 442 00155 0 07 104 261 443 lda l.a011-* get control rcv mask 00156 322 777 0 444 iera -1 invert bits 00157 1 32 002 0 445 ansa t.flg2,1 turn off control rcv 446 00160 1 07 000 0 447 dcw030 lda t.stat,1 get the tib status 00161 0 31 071 252 448 cana l.a004-* (=tsfxmt) in xmit mode? 00162 0 74 006 170 449 tze dcw035-* no 450 00163 2 07 010 0 451 lda sf.ob0,2 get addr of first output 00164 2 06 011 0 452 ada sf.ob1,2 add in second 00165 0 64 003 170 453 tnz dcw035-* output still ready, skip 454 00166 0 10 224 412 455 tsy bldobf-* yes, setup output buffers end of binary card 00000009 00167 0 71 011 200 456 tra dcw040-* done 457 00170 1 07 000 0 458 dcw035 lda t.stat,1 get new xmit mode setting 00171 0 34 061 252 459 ana l.a004-* (=tsfxmt) leave only xmit mode 00172 0 35 060 252 460 era l.a004-* (=tsfxmt) invert for ^xmit 00173 0 31 053 246 461 cana dcwst-* ^xmit&oldxmit, did we just leave xmit mode? 00174 0 74 004 200 462 tze dcw040-* no, continue 463 00175 0 07 061 256 464 lda l.a008-* (=sffstp) get bit to indicate this 00176 1 03 030 0 465 ldx2 t.sfcm,1 get ptr to sfcm and 00177 2 72 005 0 466 orsa sf.flg,2 turn it on in the sfcm 467 00200 0 07 055 255 468 dcw040 lda l.a007-* (=tsfbrk) shd we send line break? 00201 1 31 000 0 469 cana t.stat,1 line break? 00202 0 74 005 207 470 tze dcw050-* no, skip it 471 00203 0 47 051 254 472 ldq l.a006-* (=p.tlbk) transmit line break op 00204 0 57 041 245 473 stq dcwpcw-* reset default op code 474 00205 322 777 0 475 iera -1 complement tsfbrk assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 41 hdcw - hsla dcw list processor 00206 1 32 000 0 476 ansa t.stat,1 and turn it off in tib 477 00207 1 03 030 0 478 dcw050 ldx2 t.sfcm,1 get ptr to sfcm 00210 0 41 056 266 479 ldx3 a.a003-* (=pcwtab) get ptr to pcw table 00211 2 56 012 0 480 stz sf.pcw,2 init pcw to zero 481 00212 1 07 000 0 482 dcw055 lda t.stat,1 get tib status bits 00213 3 31 000 0 483 cana 0,3 is this one on in tib? 00214 0 74 003 217 484 tze dcw060-* no, jump out 485 00215 3 07 001 0 486 lda 1,3 get pcw broadside bit 00216 2 72 012 0 487 orsa sf.pcw,2 and or it into or pcw 488 00217 373 002 0 489 dcw060 iacx3 pcwlen add in table element size 00220 0 61 047 267 490 cmpx3 a.a004-* (=pcwend) at end of table? 00221 0 64 771 212 491 tnz dcw055-* no, loop 492 00222 1 07 001 0 493 lda t.flg,1 check for suspended output 00223 0 31 037 262 494 cana l.a012-* =tfosus 00224 0 74 003 227 495 tze dcw070-* not suspended, all is well 00225 0 07 036 263 496 lda l.a013-* =^pb.xmt 00226 2 32 012 0 497 ansa sf.pcw,2 if suspended we don't want xmit now 498 00227 0 07 016 245 499 dcw070 lda dcwpcw-* get the op-code 00230 4 10 042 272 500 tsy a.a007-*,* do a connect 501 00231 1 20 024 0 502 szn t.dcwl,1 any more dcw list now? 00232 0 74 011 243 503 tze dcwret-* no, done 504 00233 0 07 012 245 505 lda dcwpcw-* get pcw just sent 00234 0 27 020 254 506 cmpa l.a006-* (=p.tlbk) sent line break? 00235 0 64 006 243 507 tnz dcwret-* no, done 508 end of binary card 00000010 00236 1 41 023 0 509 ldx3 t.dcwa,1 get addr of dcw list 00237 3 07 000 0 510 lda 0,3 get the next dcw 00240 2337 17 0 511 arl 18-3 shift into position 00241 422 001 0 512 icmpa dl.cmd is it command? 00242 0 74 615 57 513 tze dcw005-* yes, process it now 514 00243 515 dcwret return hdcw all done, go back 516 517 00245 518 dcwpcw bss 1 (altrd) save pcw op-code for connect 00246 519 dcwst bss 1 (altrd) status save for old rcv and xmt 520 521 00247 000600 0 522 l.a001 vfd 18/tsfxmt+tsfrcv tib rcv and xmt 00250 400000 0 523 l.a002 vfd o18/400000 on/off bit in cmdtab 00251 000200 0 524 l.a003 vfd 18/tsfrcv tib receive alone 00252 000400 0 525 l.a004 vfd 18/tsfxmt tib transmit alone assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 42 hdcw - hsla dcw list processor 00253 010000 0 526 l.a005 vfd 18/p.ris request input status op-code 00254 150000 0 527 l.a006 vfd 18/p.tlbk transmit line break op-code 00255 001000 0 528 l.a007 vfd 18/tsfbrk tib transmit line break 00256 000400 0 529 l.a008 vfd 18/sffstp stop channel bit 00257 077777 0 530 l.a009 oct 077777 00260 010000 0 531 l.a010 vfd 18/sffsyn 00261 010000 0 532 l.a011 vfd 18/tfcrcv 00262 400000 0 533 l.a012 vfd 18/tfosus 00263 777577 0 534 l.a013 vfd o18//pb.xmt 535 536 00264 0 00276 1 537 a.a001 ind cmdtab command bit lookup table 00265 0 00332 1 538 a.a002 ind cmdend 00266 0 00336 1 539 a.a003 ind pcwtab pcw bit lookup table 00267 0 00352 1 540 a.a004 ind pcwend 00270 0 26000 3 541 a.a005 ind outprc output sub-op processor 00271 0 02674 1 542 a.a006 ind seticw setup icw's subr 00272 0 02606 1 543 a.a007 ind cioc connect routine 00273 0 24000 3 544 a.a008 ind meterc 545 *a.a009 unused 00274 0 00332 1 546 a.a011 ind suptab 00275 0 00336 1 547 a.a012 ind supend 548 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 43 command and pcw lookup tables 550 551 command table 552 00276 553 cmdtab null 00276 554 cmdtab c.srec,c.on,tsfrcv 00300 555 cmdtab c.rrec,c.off,tsfrcv 00302 556 cmdtab c.sxmt,c.on,tsfxmt 00304 557 cmdtab c.rxmt,c.off,tsfxmt end of binary card 00000011 00306 558 cmdtab c.sdtr,c.on,tsfdtr 00310 559 cmdtab c.rdtr,c.off,tsfdtr 00312 560 cmdtab c.ssup,c.on,tsfsxt 00314 561 cmdtab c.rsup,c.off,tsfsxt 00316 562 cmdtab c.stat,c.on,tsfst 00320 563 cmdtab c.sbrk,c.on,tsfbrk 00322 564 cmdtab c.smrk,c.on,tsfmrk 00324 565 cmdtab c.strm,c.on,tsftrm 00326 566 cmdtab c.srqs,c.on,tsfrts 00330 567 cmdtab c.rrqs,c.off,tsfrts 000332 568 cmdend equ * 569 00332 570 suptab null 00332 571 cmdtab c.scrq,c.on,tsfcrq 00334 572 cmdtab c.rcrq,c.off,tsfcrq 000336 573 supend equ * 574 000002 575 cmdlen equ 2 576 000000 577 c.on equ 0 000001 578 c.off equ 1 579 580 pcw table 581 00336 582 pcwtab null 00336 583 pcwtab tsfrcv,pb.rcv 00340 584 pcwtab tsfxmt,pb.xmt 00342 585 pcwtab tsfdtr,pb.dtr 00344 586 pcwtab tsfrts,pb.rts 00346 587 pcwtab tsfsxt,pb.sxt 00350 588 pcwtab tsfcrq,pb.crq 000352 589 pcwend equ * 590 000002 591 pcwlen equ 2 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 44 cmdprc - subr to process cmd op from list 00352 593 cmdprc subr cpr,(x1,x2) end of binary card 00000012 594 595 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 596 * 597 * cmdprc 598 * 599 * this subroutine is internal proc for hdcw 600 * which processes type 1 and 5 dcw cmd blocks. 601 * it is list driven. 602 * 603 * upon entry: 604 * x1 - virtual tib address 605 * cmdls - points to head of list 606 * cmdle - points to end of list 607 * 608 * returns: 609 * tib flags set 610 * 611 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 612 00363 0 03 025 410 613 ldx2 cmdls-* get addr of command table 00364 3 07 000 0 614 cpr010 lda 0,3 pick up cmd bits 00365 0 34 672 257 615 ana l.a009-* leave only the cmd bits 00366 2 31 000 0 616 cana 0,2 is this cmd bit on in dcw? 00367 0 74 011 400 617 tze cpr030-* no, continue loop 618 00370 2 07 000 0 619 lda 0,2 look at function bit 00371 0 31 657 250 620 cana l.a002-* (=400000) is it on? 00372 0 64 004 376 621 tnz cpr020-* yes, we want to turn bit off in tib 622 00373 2 07 001 0 623 lda 1,2 pick up t.stat bits 00374 1 72 000 0 624 orsa t.stat,1 and turn them on in the tib 625 00375 0 71 003 400 626 tra cpr030-* go look for more work 627 00376 2 07 001 0 628 cpr020 lda 1,2 get the correct bits 00377 1 32 000 0 629 ansa t.stat,1 and turn them off in the tib 630 00400 273 002 0 631 cpr030 iacx2 cmdlen increment table ptr 00401 0 23 010 411 632 cmpx2 cmdle-* at the end of table? 00402 0 64 762 364 633 tnz cpr010-* nope, go for more 634 00403 1 76 023 0 635 aos t.dcwa,1 increment dcw list addr 00404 673 777 0 636 ila -1 and decrement the dcw list 00405 1 16 024 0 637 asa t.dcwl,1 length word 638 00406 639 return cmdprc 640 00410 641 cmdls bss 1 00411 642 cmdle bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 45 bldobf - build output buffers from dcw list 00412 644 bldobf subr bob,(x1,x2,x3) 645 646 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 647 * 648 * bldobf 649 * 650 * subroutine to build output buffers from 651 * an output dcw. called by hdcw. 652 * 653 * upon entry: 654 * x1 - virtual tib address 655 * t.dcwa - addr of output dcw 656 * t.dcwl - length of dcw list 657 * 658 * returns: 659 * a pair of output buffers is ready to connect to. 660 * 661 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 662 end of binary card 00000013 00426 1 07 024 0 663 lda t.dcwl,1 is dcw list gone? 00427 0 74 015 444 664 tze bobret-* yes, exit 665 00430 1 41 023 0 666 ldx3 t.dcwa,1 get addr of first dcw 00431 3 07 000 0 667 lda 0,3 pick up that dcw 00432 2337 17 0 668 arl 18-3 get the sub-op type 00433 422 003 0 669 icmpa dl.out is it output? 00434 0 64 010 444 670 tnz bobret-* no, exit 671 00435 4 10 633 270 672 tsy a.a005-*,* (=outprc) go process output subop 673 00436 1 03 030 0 674 ldx2 t.sfcm,1 get sfcm address 00437 2 56 022 0 675 stz sf.noc,2 since we're starting fresh 00440 1 07 001 0 676 lda t.flg,1 check for output suspended 00441 0 31 072 533 677 cana l.b007-* =tfosus 00442 0 64 002 444 678 tnz bobret-* it is, wait for resume char 00443 4 10 626 271 679 tsy a.a006-*,* (=seticw) else set up the icw's 680 00444 681 bobret return bldobf all done assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 46 bldibf - build input buffers 00446 683 bldibf subr bib,(x1,x2,x3) 684 685 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 686 * 687 * bldibf 688 * 689 * this subroutine builds input buffers from dcw 690 * list. called by hdcw. 691 * 692 * upon entry: 693 * x1 - virtual tib address 694 * t.dcwa - addr of dcw list 695 * t.dcwl - length of dcw list 696 * 697 * returns: 698 * a pair of input buffers to connect to. 699 * 700 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 701 00462 1 03 030 0 702 ldx2 t.sfcm,1 pick up sfcm addr 00463 2 41 000 0 703 ldx3 sf.hcm,2 pick up addr of hwcm 704 00464 373 000 0 705 iacx3 h.ric0 add in offset 00465 0 50 035 522 706 stx3 bibicw-* save ptr to icw 00466 1 41 030 0 707 ldx3 t.sfcm,1 get ptr to sfcm again 00467 373 006 0 708 iacx3 sf.ib0 add in offset of ib1 00470 0 50 031 521 709 stx3 bibibp-* and save taht too 710 00471 2 07 005 0 711 lda sf.flg,2 get sfcm flags 00472 222 002 0 712 icana sffcii which icw is active? 00473 0 74 005 500 713 tze bib010-* primary, use it first 714 00474 673 002 0 715 ila h.ric1-h.ric0 get diff 00475 0 16 025 522 716 asa bibicw-* add to save to get right one end of binary card 00000014 00476 673 001 0 717 ila sf.ib1-sf.ib0 get other diff 00477 0 16 022 521 718 asa bibibp-* and update ptr 719 00500 0 10 050 550 720 bib010 tsy rboibf-* setup old input buffer 721 00501 673 002 0 722 ila sfhmk pick up icw mask 00502 0 62 020 522 723 ersa bibicw-* switch icw ptr to alt 00503 673 001 0 724 ila sfbfmk pick up buffer mask 00504 0 62 015 521 725 ersa bibibp-* 726 00505 1 07 002 0 727 lda t.flg2,1 get tib flags 00506 0 31 033 541 728 cana l.b015-* (=tfcrcv) control rcv mode? 00507 0 74 007 516 729 tze bib020-* no, need another buffer 730 00510 4 56 011 521 731 stz bibibp-*,* zero input buffer ptr 00511 0 41 011 522 732 ldx3 bibicw-* get icw addr assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 47 bldibf - build input buffers 00512 0 07 035 547 733 lda a.b009-* (=bnispc) get addr of spare word 00513 0 47 021 534 734 ldq l.b008-* (=010000) get exhausted tally 00514 3 14 000 0 735 staq 0,3 set icw 00515 0 71 002 517 736 tra bibret-* done 737 00516 0 10 145 663 738 bib020 tsy bnibuf-* build a new input buffer 739 00517 740 bibret return bldibf all done in here 741 742 743 00521 744 bibibp bss 1 (altrd) ptr to sf.ib0/1 00522 745 bibicw bss 1 (altrd) ptr to icw1/2 00523 746 bibcnt bss 1 (altrd) count for cct copy 00524 747 bibtmp bss 1 (altrd) temp ptr to reused buffer 748 749 00525 700000 0 750 l.b001 vfd 18/bufsmk buffer size code mask 00526 0 00010 0 751 l.b002 zero minsiz 00527 010000 0 752 l.b003 vfd 18/sffsyn 00530 040000 0 753 l.b004 vfd 18/tffrmi 00531 3 00000 0 754 l.b005 zero 0,b.1 00532 000040 0 755 l.b006 vfd 18/tfifc 00533 400000 0 756 l.b007 vfd 18/tfosus 00534 010000 0 757 l.b008 oct 10000 00535 040000 0 758 l.b009 vfd 18/bfflst 00536 2 00000 0 759 l.b010 ind 0,b.0 00537 000777 0 760 l.b011 vfd 18/buftmk 00540 761 even 00540 000001 0 762 l.b012 dec 1 763 *l.b013 00541 010000 0 764 l.b015 vfd 18/tfcrcv 00542 020000 0 765 l.b016 vfd 18/tfmrcv 00543 100000 0 766 l.b017 vfd 18/tffip 767 768 00544 0 20000 3 769 a.b001 ind getmem 770 *a.b002 771 *a.b004 772 *a.b005 00545 0 00775 1 773 a.b006 ind ghibuf 00546 0 22000 3 774 a.b007 ind getubf 775 *a.b008 end of binary card 00000015 00547 2 00732 1 776 a.b009 ind bnispc,b.0 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 48 rboibf - rebuild old input buffer 00550 778 rboibf subr rbo,(x1) 779 780 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 781 * 782 * rboibf 783 * 784 * this routines checks for a partially filled 785 * input buffer. if one is found it is setup as the 786 * current input buffer, with correct icw and buffer 787 * tallies. if none is found bnibuf is called to allocate 788 * a fresh one. 789 * 790 * upon entry: 791 * x1 - virtual tib address 792 * x2 - virtual sfcm address 793 * bibibp - ind word to sf.ib0/1 794 * bibicw - ind word to h.ric0/1 795 * 796 * returns: 797 * icw and sf.ib0/1 setup 798 * 799 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 800 00556 2 07 005 0 801 lda sf.flg,2 synchronous line? 00557 0 31 750 527 802 cana l.b003-* =sffsyn 00560 0 74 077 657 803 tze rbo050-* no, don't reuse old buffer 804 00561 1 20 005 0 805 szn t.icp,1 any input chain now? 00562 0 74 075 657 806 tze rbo050-* nope, no need to reuse any 807 00563 1 41 006 0 808 ldx3 t.ilst,1 get ptr to last buffer 00564 3 07 001 0 809 lda bf.tly,3 get tally 00565 0 34 752 537 810 ana l.b011-* (=buftmk) leave only tally 00566 0 17 735 523 811 sta bibcnt-* save it 00567 3 07 001 0 812 lda bf.siz,3 get buffer size code 00570 2337 17 0 813 arl 15 right adjust 00571 0336 06 0 814 als bufshf+1 convert to chars 00572 773 073 0 815 iaa hbfnch one buffer, less overhead 00573 0 27 730 523 816 cmpa bibcnt-* is buffer full (tally = size)? 00574 0 74 063 657 817 tze rbo050-* yes, can't add to it 00575 0 17 065 662 818 sta rbotly-* save max tally 819 00576 1 07 002 0 820 lda t.flg2,1 get tib flags 00577 0 31 743 542 821 cana l.b016-* (=tfmrcv) message rcv mode ? 00600 0 74 004 604 822 tze rbo005-* no, continue 00601 0 07 734 535 823 lda l.b009-* (=bfflst) 00602 3 72 001 0 824 orsa bf.flg,3 set buffer last flag 00603 0 71 054 657 825 tra rbo050-* get a shiny new buffer 826 00604 0 50 720 524 827 rbo005 stx3 bibtmp-* save buffer ptr 00605 1 41 005 0 828 ldx3 t.icp,1 get ptr to head of chain assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 49 rboibf - rebuild old input buffer 00606 0 61 716 524 829 cmpx3 bibtmp-* same as tail? 00607 0 64 004 613 830 tnz rbo010-* no 831 00610 1 56 005 0 832 stz t.icp,1 zero all chain ptrs now 00611 1 56 006 0 833 stz t.ilst,1 00612 0 71 010 622 834 tra rbo030-* 835 00613 3 07 000 0 836 rbo010 lda bf.nxt,3 get the next ptr 00614 0 27 710 524 837 cmpa bibtmp-* does it point to last? end of binary card 00000016 00615 0 74 003 620 838 tze rbo020-* yes, steal off chain 00616 3 41 000 0 839 ldx3 bf.nxt,3 bump to next on chain 00617 0 71 774 613 840 tra rbo010-* loop 841 00620 3 56 000 0 842 rbo020 stz bf.nxt,3 klobber next pointer 00621 1 50 006 0 843 stx3 t.ilst,1 make as new last 844 00622 3 07 001 0 845 rbo030 lda bf.siz,3 get buffer size code 00623 2337 17 0 846 arl 15 right adjust 00624 322 777 0 847 iera -1 add one and negate 00625 1 16 007 0 848 asa t.icpl,1 decrement chain length 849 00626 0 41 676 524 850 ldx3 bibtmp-* get ptr to buffer we will use 00627 4 50 672 521 851 stx3 bibibp-*,* put ptr into sfcm 00630 3 56 000 0 852 stz bf.nxt,3 make next ptr zero 00631 0 07 674 525 853 lda l.b001-* get size code mask 00632 3 32 001 0 854 ansa bf.tly,3 leave only size code 00633 0 07 027 662 855 lda rbotly-* get max tally 00634 3 72 001 0 856 orsa bf.tly,3 put tally in buffer 857 00635 0 07 666 523 858 lda bibcnt-* get tally in buffer 00636 0337 01 0 859 ars 1 divide to get word count 00637 0 06 677 536 860 ada l.b010-* (=0,b.0) add in addr bits 00640 773 002 0 861 iaa bf.dta add offset of data 00641 0 16 663 524 862 asa bibtmp-* add into address of buffer 00642 0 07 661 523 863 lda bibcnt-* get tally again 00643 222 001 0 864 icana 1 is it odd? 00644 0 74 004 650 865 tze rbo040-* no 866 00645 0 41 657 524 867 ldx3 bibtmp-* get addr 00646 373 300 0 868 iacx3 0,b.1 bump up 00647 0 50 655 524 869 stx3 bibtmp-* put it back 00650 0 07 012 662 870 rbo040 lda rbotly-* get whole tally 00651 0 26 652 523 871 sba bibcnt-* leave icw tally 00652 6333 00 0 872 caq put into q 00653 0 07 651 524 873 lda bibtmp-* get addr 00654 0 41 646 522 874 ldx3 bibicw-* get ptr to icw 00655 3 14 000 0 875 staq 0,3 fill in icw now 00656 0 71 002 660 876 tra rboret-* 877 00657 878 rbo050 null no partial input buffer assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 50 rboibf - rebuild old input buffer 00657 0 10 004 663 879 tsy bnibuf-* allocate a new one 880 00660 881 rboret return rboibf 882 00662 883 rbotly bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 51 bnibuf - build a new input buffer for the current icw 00663 885 bnibuf subr bni,(x1) end of binary card 00000017 886 887 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 888 * 889 * bnibuf 890 * 891 * this routine allocates a new input buffer 892 * for the current icw and sets the tally. 893 * 894 * upon entry: 895 * x1 - virtual tib address 896 * x2 - virtual sfcm address 897 * bibibp - ind word to sf.ib0/1 898 * bibicw - ind word to h.ric0/1 899 * 900 * returns: 901 * icw and bf.tly setup 902 * 903 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 904 00671 4 10 654 545 905 tsy a.b006-*,* (=ghibuf) get input buffer 00672 0 71 002 674 906 tra 2 error, no buffer 00673 0 71 007 702 907 tra bni030-* got buffer, continue 908 909 failed to get buffer, best we can 910 do now is to set exhaust bit in icw 00674 4 56 625 521 911 stz bibibp-*,* zero input buffer ptr 00675 0 41 625 522 912 ldx3 bibicw-* get icw addr 00676 0 07 651 547 913 lda a.b009-* (=bnispc) get addr of spare word 00677 0 47 635 534 914 ldq l.b008-* (=010000) get exhausted tally 00700 3 14 000 0 915 staq 0,3 set icw 00701 0 71 027 730 916 tra bniret-* better luck next time 917 00702 4 20 617 521 918 bni030 szn bibibp-*,* be sure no old buffer left 00703 0 74 002 705 919 tze 2 00704 920 die 9 921 00705 4 50 614 521 922 stx3 bibibp-*,* store addr in sfcm ib1/2 00706 2 07 005 0 923 lda sf.flg,2 synchronous line? 00707 0 31 620 527 924 cana l.b003-* =sffsyn 00710 0 64 005 715 925 tnz bni040-* yes, this buffer will go into an input chain 00711 3333 00 0 926 cx3a no, this is a "pseudo-buffer" 00712 0 37 617 531 927 ora l.b005-* 0,b.1 00713 4 17 607 522 928 sta bibicw-*,* data starts in 2nd character 00714 0 71 005 721 929 tra bni050-* 930 00715 373 002 0 931 bni040 iacx3 bf.dta add in offset of start of data 00716 4 50 604 522 932 stx3 bibicw-*,* and put into icw addr 00717 0 07 617 536 933 lda l.b010-* (=0,b.0) get the character addrssing flags 00720 4 72 602 522 934 orsa bibicw-*,* turn on character addressing flags assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 52 bnibuf - build a new input buffer for the current icw 935 00721 0 41 601 522 936 bni050 ldx3 bibicw-* get ptr to icw 00722 3 57 001 0 937 stq 1,3 put tally into icw 00723 2 07 005 0 938 lda sf.flg,2 sync line? 00724 0 31 603 527 939 cana l.b003-* =sffsyn 00725 0 74 003 730 940 tze bniret-* no, don't bother with buffer size stuff 00726 2 47 016 0 941 ldq sf.bsz,2 *get current buffer size 00727 0 10 004 733 942 tsy cbufsz-* *set sync prebuffer if needed 943 00730 944 bniret return bnibuf end of binary card 00000018 945 00732 946 bnispc bss 1 space to store char on tally runout assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 53 cbufsz - change buffer size 948 ********************************************************************** 949 * 950 * cbufsz - change buffer size in sfcm 951 * 952 * this subroutine sets up the preallocated 953 * buffer chain queue for a given buffer size. 954 * q -- new size 955 * x1 -- tib address 956 * 957 * written for icw switching problem by 958 * d. w. cousins on march 24,1981 959 * 960 *********************************************************************** 00733 961 cbufsz subr cbu,(x1,x2,x3) 00747 1 03 030 0 962 ldx2 t.sfcm,1 *load sfcm 00750 0 74 017 767 963 tze cburet-* *problem no sfcm 00751 7333 00 0 964 cqa *set some indicators 00752 422 040 0 965 icmpa 32 00753 0 75 003 756 966 tmi cbu010-* *not if less then 32 words 00754 0 27 017 773 967 cmpa l.v001-* *(=401)check for max 00755 0 75 002 757 968 tmi 2 *within range 00756 0 47 016 774 969 cbu010 ldq l.v002-* *(=400)set to max 00757 2 57 016 0 970 stq sf.bsz,2 *ok store it 00760 4337 05 0 971 qrs 5 *set up table index 00761 573 777 0 972 iaq -1 * 00762 7333 00 0 973 cqa 00763 4333 00 0 974 cax3 00764 673 004 0 975 ila 4 00765 4 17 004 771 976 sta a.v001-*,* *=pbfmax,3 set max buffer count 00766 4 10 004 772 977 tsy a.v002-*,* *=albchs 00767 978 cburet return cbufsz 00771 3 03541 1 979 a.v001 ind pbfmax,3 max buffer count for this pool 00772 0 03551 1 980 a.v002 ind albchs allocated buffer check 00773 000401 0 981 l.v001 oct 000401 max buffer + 1 in octal words 00774 000400 0 982 l.v002 oct 000400 max in octal words for buffer assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 54 ghibuf - get hsla input buffer 00775 984 ghibuf subr ghi 985 986 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 987 * 988 * ghibuf 989 * 990 * allocates an hsla input buffer of the proper size 991 * 992 * upon entry: 993 * x1 - virtual tib address 994 * x2 - virtual sfcm address 995 * 996 * return 1: 997 * no more buffers can/should be allocated 998 * 999 * return 2: 1000 * buffer addr in x3, with size code and tally set up if appropriate 1001 * buffer tally in q 1002 * 1003 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1004 end of binary card 00000019 01000 473 040 0 1005 ilq bufsiz buffer size for control rcv mode 01001 1 07 002 0 1006 lda t.flg2,1 get tib flags 01002 0 31 537 541 1007 cana l.b015-* control rcv mode? 01003 0 64 057 1062 1008 tnz ghi025-* yes 1009 01004 2 47 016 0 1010 ldq sf.bsz,2 get regular buffer size 01005 0 31 535 542 1011 cana l.b016-* (=tfmrcv) message rcv mode ? 01006 0 64 030 1036 1012 tnz ghi015-* yes, get size 01007 2 07 005 0 1013 lda sf.flg,2 synchronous line? 01010 0 31 517 527 1014 cana l.b003-* =sffsyn 01011 0 64 051 1062 1015 tnz ghi025-* yes, use full size 01012 1 07 002 0 1016 lda t.flg2,1 no, are we in a frame? 01013 2 47 017 0 1017 ldq sf.fbs,2 if so, use frame buffer size 01014 0 31 527 543 1018 cana l.b017-* =tffip 01015 0 64 007 1024 1019 tnz ghi010-* we are 01016 0 31 514 532 1020 cana l.b006-* =tfifc 01017 0 64 005 1024 1021 tnz ghi010-* likewise if input flow control 01020 2 47 016 0 1022 ldq sf.bsz,2 but if in blk_xfer, use intermediate size 01021 0 31 507 530 1023 cana l.b004-* =tffrmi 01022 0 64 002 1024 1024 tnz ghi010-* that's it 01023 0 47 503 526 1025 ldq l.b002-* (=minsiz) else use minimum size 01024 1026 ghi010 null here to allocate asynchronous pseudo-buffer 01024 4 10 520 544 1027 tsy a.b001-*,* getmem 01025 0 71 051 1076 1028 tra ghi040-* couldn't get it 01026 7333 00 0 1029 cqa we have to store size in first char 01027 0336 11 0 1030 als 9 01030 3 17 000 0 1031 sta 0,3 01031 2 57 020 0 1032 stq sf.csz,2 keep it here, too 01032 4336 01 0 1033 qls 1 convert to characters assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 55 ghibuf - get hsla input buffer 01033 573 776 0 1034 iaq -2 size char. and extra char. at end 01034 0 76 741 775 1035 aos ghibuf-* for successful return 01035 0 71 037 1074 1036 tra ghiret-* done 1037 01036 1038 ghi015 null here for message receive mode 01036 2 20 020 0 1039 szn sf.mms,2 test max message size 01037 0 74 023 1062 1040 tze ghi025-* zero, ignore it 1041 01040 2 07 021 0 1042 lda sf.rms,2 get residual message size 01041 0 74 033 1074 1043 tze ghiret-* zero, don't want buffer 01042 0 75 032 1074 1044 tmi ghiret-* negative, don't want buffer 01043 773 006 0 1045 iaa 6 buffer overhead + round-up 01044 0337 01 0 1046 ars 1 convert to words 01045 0 17 041 1106 1047 sta ghitmp-* put in temporary 01046 0 67 040 1106 1048 cmpq ghitmp-* compare with buffer size end of binary card 00000020 01047 0 75 002 1051 1049 tmi ghi020-* buffer size is smaller, use it 01050 6333 00 0 1050 caq use message size instead 1051 01051 4 10 475 546 1052 ghi020 tsy a.b007-*,* (=getubf) get a buffer 01052 0 71 024 1076 1053 tra ghi040-* failed, make error return 1054 01053 4336 01 0 1055 qls 1 convert buffer size to characters 01054 573 773 0 1056 iaq -5 subtract overhead 01055 7333 00 0 1057 cqa move to a 01056 322 777 0 1058 iera -1 negate a 01057 773 001 0 1059 iaa 1 01060 2 16 021 0 1060 asa sf.rms,2 decrement residual message size 01061 0 71 003 1064 1061 tra ghi030-* done 1062 01062 4 10 464 546 1063 ghi025 tsy a.b007-*,* (=getubf) get a buffer 01063 0 71 013 1076 1064 tra ghi040-* failed, make error return 1065 01064 0 76 711 775 1066 ghi030 aos ghibuf-* setup normal return 01065 3 56 000 0 1067 stz bf.nxt,3 init the next ptr 01066 3 07 001 0 1068 lda bf.siz,3 get buffer size code 01067 2337 17 0 1069 arl 15 right adjust 01070 0336 06 0 1070 als bufshf+1 convert to chars 01071 773 073 0 1071 iaa hbfnch one buffer, less overhead 01072 3 72 001 0 1072 orsa bf.tly,3 put tally in buffer 01073 6333 00 0 1073 caq save tally in q 1074 01074 1075 ghiret return ghibuf 1076 01076 1077 ghi040 null allocation failed, meter it 01076 1078 cmeter mincs,m.inaf,l.b012-* 01105 0 71 767 1074 1079 tra ghiret-* 1080 01106 1081 ghitmp bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 56 makcct - make cct based on modes 1084 ************************************************************************ 1085 * 1086 * subroutine to compute a cct for an ascii line. 1087 * all modes (crecho,lfecho,tabecho,echoplex, etc.) 1088 * are taken into account to compute the proper cct. 1089 * 1090 * called with: 1091 * x1 - virtual tib address 1092 * 1093 ************************************************************************ 1094 01107 1095 makcct subr mct,(x1,x2,x3,a,q) end of binary card 00000021 1096 1097 * first, get memory for cct 1098 01131 473 100 0 1099 ilq 64 normal ones are 64 words 01132 0 56 156 1310 1100 stz mctsbx-* initialize indicator 01133 1 07 002 0 1101 lda t.flg2,1 01134 0 31 211 1345 1102 cana l.z001-* =tffrmi, check for blk_xfer mode 01135 0 74 010 1145 1103 tze mct060-* no 01136 1 07 040 0 1104 lda t.frmc,1 any framing chars? 01137 0 74 006 1145 1105 tze mct060-* no 01140 2337 11 0 1106 arl 9 is there a start char? 01141 0 64 003 1144 1107 tnz mct059-* yes 01142 0 76 146 1310 1108 aos mctsbx-* indicate single cct with block xfer 01143 0 71 002 1145 1109 tra mct060-* 01144 573 100 0 1110 mct059 iaq 64 must use double size 01145 0 57 141 1306 1111 mct060 stq mctsz-* remember size 01146 4 10 171 1337 1112 tsy a.z001-*,* =getmem 01147 1113 die 9 01150 0 50 137 1307 1114 stx3 mctad-* save address 1115 1116 * fill in default for all character positions. 1117 * this is: 1118 * ct.ncs for most modes 1119 * ct.mrk for echoplex & breakall 1120 01151 0 47 175 1346 1121 ldq l.z002-* =vfd 9/ct.ncs,9/ct.ncs 01152 0 20 136 1310 1122 szn mctsbx-* single cct with block xfer? 01153 0 64 011 1164 1123 tnz mct005-* yes, ignore other modes 01154 1 07 001 0 1124 lda t.flg,1 01155 0 31 172 1347 1125 cana l.z003-* =tfecpx, in echoplex mode? 01156 0 74 002 1160 1126 tze 2 no 01157 0 47 171 1350 1127 ldq l.z004-* =vfd 9/ct.mrk,9/ct.mrk use marker for echoplex 01160 1 07 036 0 1128 lda t.flg3,1 01161 0 31 170 1351 1129 cana l.z005-* =tfbral, in breakall mode 01162 0 74 002 1164 1130 tze 2 no 01163 0 47 165 1350 1131 ldq l.z004-* =vfd 9/ct.mrk,9/ct.mrk marker on all characters 01164 673 100 0 1132 mct005 ila 64 store 64 copies 01165 3 57 000 0 1133 mct010 stq 0,3 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 57 makcct - make cct based on modes 01166 373 001 0 1134 iacx3 1 end of binary card 00000022 01167 773 777 0 1135 iaa -1 01170 0 64 775 1165 1136 tnz mct010-* 1137 1138 * if double cct, second half is filled with 1139 * ct.ncs + ct.tb1 (to stay in second cct when entered) 1140 01171 0 07 115 1306 1141 lda mctsz-* get size 01172 422 100 0 1142 icmpa 64 01173 0 74 007 1202 1143 tze mct020-* standard size 01174 0 47 157 1353 1144 ldq l.z007-* =vfd 9/ct.ncs+ct.tb1,9/ct.ncs+ct.tb1 01175 673 100 0 1145 ila 64 store 64 copies 01176 3 57 000 0 1146 mct030 stq 0,3 01177 373 001 0 1147 iacx3 1 01200 773 777 0 1148 iaa -1 01201 0 64 775 1176 1149 tnz mct030-* 1150 1151 * fill in special character codes 1152 01202 0 41 105 1307 1153 mct020 ldx3 mctad-* cct address 01203 0 20 105 1310 1154 szn mctsbx-* single cct with block xfer? 01204 0 64 037 1243 1155 tnz mct055-* yes, skip this stuff 01205 1 07 036 0 1156 lda t.flg3,1 check for breakall mode 01206 0 31 143 1351 1157 cana l.z005-* =tfbral 01207 0 64 023 1232 1158 tnz mct050-* skip for breakall mode, 01210 673 012 0 1159 ila nl break on newline 01211 473 007 0 1160 ilq ct.mrk 01212 0 10 077 1311 1161 tsy mctstr-* 01213 673 014 0 1162 ila ff break on formfeed 01214 0 10 075 1311 1163 tsy mctstr-* 01215 673 003 0 1164 ila etx break on etx 01216 0 10 073 1311 1165 tsy mctstr-* 01217 1 07 001 0 1166 lda t.flg,1 break on cr, if lfecho 01220 0 31 135 1355 1167 cana l.z009-* =tflfec 01221 0 74 003 1224 1168 tze 3 01222 673 015 0 1169 ila cr 01223 0 10 066 1311 1170 tsy mctstr-* 01224 473 007 0 1171 ilq ct.mrk 01225 1 07 001 0 1172 lda t.flg,1 marker on tab, if tabecho 01226 0 31 126 1354 1173 cana l.z008-* =tftbec 01227 0 74 003 1232 1174 tze 3 01230 673 011 0 1175 ila tab 01231 0 10 060 1311 1176 tsy mctstr-* 1177 1178 * fill in codes for blk_xfer mode 1179 01232 1 07 002 0 1180 mct050 lda t.flg2,1 01233 0 31 112 1345 1181 cana l.z001-* =tffrmi 01234 0 74 013 1247 1182 tze mct040-* 01235 1 07 040 0 1183 lda t.frmc,1 get framing chars assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 58 makcct - make cct based on modes end of binary card 00000023 01236 0 74 011 1247 1184 tze mct040-* none, skip 01237 473 100 0 1185 ilq ct.tb1 switch to second cct 01240 0337 11 0 1186 ars 9 start char 01241 0 10 050 1311 1187 tsy mctstr-* 01242 373 100 0 1188 iacx3 64 switch to second cct 01243 1 07 040 0 1189 mct055 lda t.frmc,1 get framing chars 01244 0 34 112 1356 1190 ana l.z010-* =o777 01245 473 007 0 1191 ilq ct.mrk 01246 0 10 043 1311 1192 tsy mctstr-* 01247 1 07 002 0 1193 mct040 lda t.flg2,1 check for input flow control 01250 0 31 102 1352 1194 cana l.z006-* =tfifc 01251 0 74 007 1260 1195 tze mct080-* 01252 1 07 045 0 1196 lda t.ifch,1 yes 01253 2337 11 0 1197 arl 9 get suspend char 01254 0 74 003 1257 1198 tze mct070-* never mind, there is none 01255 473 007 0 1199 ilq ct.mrk set marker for it 01256 0 10 033 1311 1200 tsy mctstr-* 01257 1 07 002 0 1201 mct070 lda t.flg2,1 recover flag word 01260 0 31 103 1363 1202 mct080 cana l.z015-* (=tfofc) check output flow control 01261 0 74 013 1274 1203 tze mct100-* 01262 0 31 102 1364 1204 cana l.z016-* (=tfblak) yes, block acknowledge also? 01263 0 64 005 1270 1205 tnz mct090-* yes, marker on ack char only 01264 1 07 046 0 1206 lda t.ofch,1 otherwise for both characters 01265 2337 11 0 1207 arl 9 get suspend char 01266 473 007 0 1208 ilq ct.mrk marker in cct 01267 0 10 022 1311 1209 tsy mctstr-* 01270 1 07 046 0 1210 mct090 lda t.ofch,1 nopw get resume char (or ack) 01271 0 34 065 1356 1211 ana l.z010-* =o777 01272 473 007 0 1212 ilq ct.mrk 01273 0 10 016 1311 1213 tsy mctstr-* 1214 1215 * cct now ready, so store it 1216 01274 0 41 013 1307 1217 mct100 ldx3 mctad-* its address 01275 0 47 011 1306 1218 ldq mctsz-* its size 01276 0 10 067 1365 1219 tsy shrcct-* 01277 4 10 041 1340 1220 tsy a.z002-*,* and release temp memory 1221 01300 0 20 010 1310 1222 szn mctsbx-* single cct with block xfer? 01301 0 74 003 1304 1223 tze mctret-* no 01302 0 07 060 1362 1224 lda l.z014-* (=tffip) get frame in progress bit 01303 1 72 002 0 1225 orsa t.flg2,1 always on for this cct 1226 01304 1227 mctret return makcct end of binary card 00000024 1228 01306 1229 mctsz bss 1 01307 1230 mctad bss 1 01310 1231 mctsbx bss 1 1232 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 59 makcct - make cct based on modes 1233 1234 * subroutine to store 1 cct character 1235 01311 1236 mctstr subr cst,(a,q) 01322 0337 01 0 1237 ars 1 get word offset 01323 0 50 013 1336 1238 stx3 csttmp-* cct address 01324 0 06 012 1336 1239 ada csttmp-* word address 01325 0 37 032 1357 1240 ora l.z011-* =0,b.0 - make character addressing 01326 0332 00 0 1241 cax2 01327 0 07 771 1320 1242 lda cstsa-* get character again 01330 022 001 0 1243 iana 1 isolate last bit 01331 0 74 002 1333 1244 tze 2 even 01332 273 300 0 1245 iacx2 0,b.1 go to odd address 01333 2 57 200 0 1246 stq 0,2,b.0 update cct 01334 1247 return mctstr 1248 01336 1249 csttmp bss 1 1250 01337 0 20000 3 1251 a.z001 ind getmem 01340 0 15000 3 1252 a.z002 ind fremem 01341 0 00676 0 1253 a.z003 ind .crcct 01342 0 16000 3 1254 a.z004 ind getbuf 01343 0 14000 3 1255 a.z005 ind frebuf 01344 0 01107 1 1256 a.z006 ind makcct 1257 01345 040000 0 1258 l.z001 vfd o18/tffrmi 01346 000000 0 1259 l.z002 vfd 9/ct.ncs,9/ct.ncs 01347 200000 0 1260 l.z003 vfd o18/tfecpx 01350 007007 0 1261 l.z004 vfd 9/ct.mrk,9/ct.mrk 01351 000020 0 1262 l.z005 vfd o18/tfbral 01352 000040 0 1263 l.z006 vfd o18/tfifc 01353 100100 0 1264 l.z007 vfd 9/ct.ncs+ct.tb1,9/ct.ncs+ct.tb1 end of binary card 00000025 01354 004000 0 1265 l.z008 vfd o18/tftbec 01355 001000 0 1266 l.z009 vfd o18/tflfec 01356 000777 0 1267 l.z010 oct 777 01357 2 00000 0 1268 l.z011 ind 0,b.0 01360 000200 0 1269 l.z012 vfd o18/sffdct 01361 000020 0 1270 l.z013 vfd o18/sffsct 01362 100000 0 1271 l.z014 vfd o18/tffip 01363 000100 0 1272 l.z015 vfd o18/tfofc 01364 004000 0 1273 l.z016 vfd o18/tfblak assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 60 shrcct - subroutine to share and store ccts 1276 ************************************************************************ 1277 * 1278 * subroutine to store and share ccts 1279 * 1280 * it is called with: 1281 * x3 -> cct 1282 * q = size (0 for no new cct) 1283 * 1284 * the channel is update to use this cct, freeing the old cct 1285 * if necessary. the new cct is shared with an existing cct if possible. 1286 * 1287 ************************************************************************ 1288 01365 1289 shrcct subr sct,(a,q,x1,x2,x3) 1290 1291 * first, find the length of the cct. if the length is given 1292 * as 64, check to see if a short cct can be used 1293 01407 0 57 235 1644 1294 stq sctsz-* size as given 01410 7333 00 0 1295 cqa 01411 0 74 044 1455 1296 tze sct010-* no new cct 01412 422 100 0 1297 icmpa 64 single cct? 01413 0 64 012 1425 1298 tnz sct020-* no, cant use short cct 01414 773 760 0 1299 iaa -16 check 64-16 words 01415 0 47 731 1346 1300 ldq l.z002-* =vfd 9/ct.ncs,9/ct.ncs 01416 3 67 020 0 1301 sct030 cmpq 16,3 check all cct words 01417 0 64 006 1425 1302 tnz sct020-* cant use short cct 01420 373 001 0 1303 iacx3 1 01421 773 777 0 1304 iaa -1 01422 0 64 774 1416 1305 tnz sct030-* loop 01423 673 020 0 1306 ila 16 test passes - use short cct 01424 0 17 220 1644 1307 sta sctsz-* 1308 1309 * now try to locate an existing cct that matches the new one 1310 01425 0 56 221 1646 1311 sct020 stz sctnds-* pointer to new descriptor end of binary card 00000026 01426 4 43 713 1341 1312 ldx1 a.z003-*,* addr of first descriptor 01427 0 74 026 1455 1313 tze sct010-* none, no existing cct to share 01430 0 07 214 1644 1314 sct060 lda sctsz-* size of new cct 01431 1 27 003 0 1315 cmpa cct.sz,1 match against existing cct 01432 0 64 021 1453 1316 tnz sct040-* sizes dont match, skip word check 01433 0 03 753 1406 1317 ldx2 sctsx3-* addr of callers cct 01434 1 41 002 0 1318 ldx3 cct.ad,1 address of existing cct 01435 2 47 000 0 1319 sct050 ldq 0,2 word to compare 01436 3 67 000 0 1320 cmpq 0,3 01437 0 64 014 1453 1321 tnz sct040-* no match 01440 273 001 0 1322 iacx2 1 01441 373 001 0 1323 iacx3 1 01442 773 777 0 1324 iaa -1 01443 0 64 772 1435 1325 tnz sct050-* assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 61 shrcct - subroutine to share and store ccts 01444 0 53 202 1646 1326 stx1 sctnds-* found matching cct in use 01445 1 07 002 0 1327 lda cct.ad,1 address of good cct 01446 0 43 736 1404 1328 ldx1 sctsx1-* get tib address 01447 1 03 030 0 1329 ldx2 t.sfcm,1 01450 2 27 013 0 1330 cmpa sf.cct,2 is this the cct already in use? 01451 0 74 171 1642 1331 tze sctret-* yes, all done 01452 0 71 003 1455 1332 tra sct010-* 01453 1 43 000 0 1333 sct040 ldx1 cct.nx,1 step to next cct descriptor 01454 0 64 754 1430 1334 tnz sct060-* 1335 1336 * locate old cct descriptor and decrement usage 1337 01455 0 56 170 1645 1338 sct010 stz sctods-* pointer to old descriptor 01456 0 43 726 1404 1339 ldx1 sctsx1-* get tib address 01457 1 03 030 0 1340 ldx2 t.sfcm,1 01460 2 07 005 0 1341 lda sf.flg,2 01461 0 31 677 1360 1342 cana l.z012-* =sffdct, useing dynamic cct? 01462 0 74 012 1474 1343 tze sct070-* no old cct to locate 01463 4 43 656 1341 1344 ldx1 a.z003-*,* =.crcct 01464 0 64 002 1466 1345 sct090 tnz 2 01465 1346 die 6 cant find cct descriptor 01466 1 41 002 0 1347 ldx3 cct.ad,1 cct pointed to by this descrip 01467 2 61 013 0 1348 cmpx3 sf.cct,2 this channels cct? 01470 0 74 003 1473 1349 tze sct080-* yes 01471 1 43 000 0 1350 ldx1 cct.nx,1 keep looking 01472 0 71 772 1464 1351 tra sct090-* 01473 0 53 152 1645 1352 sct080 stx1 sctods-* save address 1353 1354 * setup descriptor for new cct if needed 1355 01474 0 20 150 1644 1356 sct070 szn sctsz-* is there new cct? end of binary card 00000027 01475 0 64 004 1501 1357 tnz sct160-* yes 01476 673 000 0 1358 ila 0 addr of no cct 01477 473 000 0 1359 ilq 0 not short flag 01500 0 71 065 1565 1360 tra sct110-* 01501 0 43 145 1646 1361 sct160 ldx1 sctnds-* new descriptor address 01502 0 64 054 1556 1362 tnz sct170-* all setup already 01503 473 005 0 1363 ilq cct.ln allocate space for new descriptor 01504 4 10 633 1337 1364 tsy a.z001-*,* =getmem 01505 1365 die 9 01506 0 50 140 1646 1366 stx3 sctnds-* 01507 0 43 137 1646 1367 ldx1 sctnds-* 01510 4 41 631 1341 1368 ldx3 a.z003-*,* =.crcct, addr of first cct desc 01511 0 74 002 1513 1369 tze 2 new one is only desc 01512 3 53 001 0 1370 stx1 cct.pr,3 make second desc point at first 01513 4 53 626 1341 1371 stx1 a.z003-*,* new desc to head of chain 01514 1 50 000 0 1372 stx3 cct.nx,1 make first point to second 01515 1 56 001 0 1373 stz cct.pr,1 no previous pointer 1374 1375 * allocate memory for new cct and copy it. memory must be 64-word aligned assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 62 shrcct - subroutine to share and store ccts 1376 01516 0 47 665 1403 1377 ldq sctsq-* origional size 01517 573 040 0 1378 iaq 32 allocate extra 32 words to force alignment 01520 4 10 622 1342 1379 tsy a.z004-*,* =getbuf 01521 1380 die 9 01522 3333 00 0 1381 cx3a allocate address? 01523 222 077 0 1382 icana =o77 on 64-word boundry? 01524 0 74 004 1530 1383 tze sct120-* yes 01525 773 040 0 1384 iaa 32 this will get to 64-word boundry 01526 1 17 002 0 1385 sta cct.ad,1 for the real cct 01527 0 71 003 1532 1386 tra sct130-* 01530 1 17 002 0 1387 sct120 sta cct.ad,1 allocated address is aligned ok 01531 0 40 652 1403 1388 adcx3 sctsq-* get addr of 32 words at end to free 01532 473 040 0 1389 sct130 ilq 32 free the extra 32 words 01533 4 10 610 1343 1390 tsy a.z005-*,* =frebuf 01534 0 07 110 1644 1391 lda sctsz-* set size 01535 1 17 003 0 1392 sta cct.sz,1 01536 422 020 0 1393 icmpa 16 is this 16 word cct 01537 0 64 005 1544 1394 tnz sct140-* no 01540 1 41 002 0 1395 ldx3 cct.ad,1 can free last 32 words of 64 word buffer 01541 373 040 0 1396 iacx3 32 01542 473 040 0 1397 ilq 32 01543 4 10 600 1343 1398 tsy a.z005-*,* =frebuf end of binary card 00000028 01544 1 03 002 0 1399 sct140 ldx2 cct.ad,1 setup to copy cct 01545 0 41 641 1406 1400 ldx3 sctsx3-* 01546 1 07 003 0 1401 lda cct.sz,1 01547 3 47 000 0 1402 sct150 ldq 0,3 copy loop 01550 2 57 000 0 1403 stq 0,2 01551 273 001 0 1404 iacx2 1 01552 373 001 0 1405 iacx3 1 01553 773 777 0 1406 iaa -1 01554 0 64 773 1547 1407 tnz sct150-* 01555 1 56 004 0 1408 stz cct.rc,1 zero reference count 01556 1 76 004 0 1409 sct170 aos cct.rc,1 new user of this cct 01557 473 000 0 1410 ilq 0 flag meaning not short cct 01560 1 07 003 0 1411 lda cct.sz,1 01561 422 020 0 1412 icmpa 16 01562 0 64 002 1564 1413 tnz 2 01563 473 001 0 1414 ilq 1 it is short cct 01564 1 07 002 0 1415 lda cct.ad,1 address of cct 1416 1417 * make channel use the new cct (it maybe 0) 1418 * a -> cct, q = short cct switch 1419 * a descriptor cannot be referenced here (there may not be one) 1420 01565 0 43 617 1404 1421 sct110 ldx1 sctsx1-* tib address 01566 1 03 030 0 1422 ldx2 t.sfcm,1 01567 2 17 013 0 1423 sta sf.cct,2 record cct address 01570 0 07 570 1360 1424 lda l.z012-* =sffdct, dynamic cct bit 01571 2 20 013 0 1425 szn sf.cct,2 is there cct assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 63 shrcct - subroutine to share and store ccts 01572 0 64 002 1574 1426 tnz 2 01573 673 000 0 1427 ila 0 reset bit 01574 2 35 005 0 1428 era sf.flg,2 get bit into word 01575 0 34 563 1360 1429 ana l.z012-* =sffdct 01576 2 62 005 0 1430 ersa sf.flg,2 01577 0 07 562 1361 1431 lda l.z013-* short cct bit 01600 573 000 0 1432 iaq 0 test flag, is it short? 01601 0 64 002 1603 1433 tnz 2 01602 673 000 0 1434 ila 0 not short 01603 2 35 005 0 1435 era sf.flg,2 store in flag word 01604 0 34 555 1361 1436 ana l.z013-* =sffsct 01605 2 62 005 0 1437 ersa sf.flg,2 01606 2 41 000 0 1438 ldx3 sf.hcm,2 update hardware comm region too 01607 2 07 013 0 1439 lda sf.cct,2 01610 0336 03 0 1440 als 3 01611 573 000 0 1441 iaq 0 short cct? 01612 0 74 002 1614 1442 tze 2 no end of binary card 00000029 01613 122 100 0 1443 iora =o100 set short flag 01614 3 17 010 0 1444 sta h.baw,3 this effects he change officially 1445 1446 * all done with old cct for this line, free it if last user 1447 01615 0 43 030 1645 1448 ldx1 sctods-* old descriptor address 01616 0 74 024 1642 1449 tze sctret-* no old one 01617 673 777 0 1450 ila -1 decrement usage count 01620 1 16 004 0 1451 asa cct.rc,1 01621 0 64 021 1642 1452 tnz sctret-* no 01622 1 47 003 0 1453 ldq cct.sz,1 free the cct first 01623 1 41 002 0 1454 ldx3 cct.ad,1 01624 4 10 517 1343 1455 tsy a.z005-*,* =frebuf 01625 1 03 001 0 1456 ldx2 cct.pr,1 unthread descriptor 01626 1 41 000 0 1457 ldx3 cct.nx,1 01627 0 74 002 1631 1458 tze 2 01630 3 13 001 0 1459 stx2 cct.pr,3 make next point to previous 01631 273 000 0 1460 iacx2 0 is there a previous? 01632 0 74 003 1635 1461 tze 3 no 01633 2 50 000 0 1462 stx3 cct.nx,2 make prev point at next 01634 0 71 002 1636 1463 tra 2 01635 4 50 504 1341 1464 stx3 a.z003-*,* =.crcct, make next first 01636 2332 00 0 1465 cx1a free descriptor 01637 4333 00 0 1466 cax3 01640 473 005 0 1467 ilq cct.ln 01641 4 10 477 1340 1468 tsy a.z002-*,* =fremem 1469 01642 1470 sctret return shrcct 1471 01644 1472 sctsz bss 1 size of cct 01645 1473 sctods bss 1 old descriptor address 01646 1474 sctnds bss 1 new descriptor address assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 64 setcct - implements the setcct opblock 1476 1477 ************************************************************************ 1478 * 1479 * subroutine use by the interpreter when it encounters a setcct opblock 1480 * 1481 * x1 - virtual tib address 1482 * a = arg to opblock 1483 * 1484 ************************************************************************ 1485 01647 1486 setcct subr cct,(a,q,x2,x3) 1487 end of binary card 00000030 01666 1 03 030 0 1488 ldx2 t.sfcm,1 01667 2 41 000 0 1489 ldx3 sf.hcm,2 1490 01670 422 000 0 1491 icmpa scc.dl delete cct? 01671 0 74 013 1704 1492 tze cct010-* 01672 422 001 0 1493 icmpa scc.df set default cct? 01673 0 74 014 1707 1494 tze cct020-* 01674 422 002 0 1495 icmpa scc.bs set to base of cct? 01675 0 74 014 1711 1496 tze cct030-* 1497 1498 * argument is real cct address 1499 01676 473 000 0 1500 ilq 0 release dynamic cct, if any 01677 0 10 466 1365 1501 tsy shrcct-* 01700 2 17 013 0 1502 sta sf.cct,2 01701 0336 03 0 1503 als 3 align for baw 01702 3 17 010 0 1504 sta h.baw,3 01703 0 71 015 1720 1505 tra cctret-* 1506 1507 * process various coded requests 1508 01704 473 000 0 1509 cct010 ilq 0 delete current cct 01705 0 10 460 1365 1510 tsy shrcct-* 01706 0 71 012 1720 1511 tra cctret-* 01707 4 10 435 1344 1512 cct020 tsy a.z006-*,* build cct from modes 01710 0 71 010 1720 1513 tra cctret-* 01711 2 47 013 0 1514 cct030 ldq sf.cct,2 set to base cct 01712 4336 03 0 1515 qls 3 01713 2 07 005 0 1516 lda sf.flg,2 get flags 01714 0 31 445 1361 1517 cana l.z013-* =sffsct, short cct? 01715 0 74 002 1717 1518 tze 2 no 01716 573 100 0 1519 iaq =o100 short cct bit for h.baw 01717 3 57 010 0 1520 stq h.baw,3 1521 01720 1522 cctret return setcct assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 65 hbreak - entry point to change break list 1524 * hbreak subr brk,(x1,x3) 1525 1526 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1527 * 1528 * hbreak 1529 * 1530 * entry to change the break list. causes 1531 * hsla_man to build a new cct for the line. 1532 * 1533 * upon entry: 1534 * x1 - virtual tib address 1535 * x3 - points to change break command data 1536 * 1537 * returns: 1538 * 1539 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1540 1541 1542 * well that is all for now 1543 1544 * return hbreak assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 66 hgeti - entry to collect input from current buffer 01722 1546 hgeti subr hgi,(x2,x3) 1547 1548 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1549 * 1550 * hgeti 1551 * 1552 * obtains a ptr to the unscanned portion of the current input buffer 1553 * (if any) 1554 * and the number of unscanned characters in the buffer. 1555 * 1556 * upon entry: 1557 * x1 - virtual tib address 1558 * x3 - points to 2 words (returned) 1559 * 1560 * returns: 1561 * x3 -> 1st: ptr to first unscanned character of buffer 1562 * 2nd: tally 1563 * 1564 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1565 01733 1 03 030 0 1566 ldx2 t.sfcm,1 get virtual sfcm addr 01734 0 10 047 2003 1567 tsy gettly-* get current buffer addr & tally end of binary card 00000031 01735 773 000 0 1568 iaa 0 is there a buffer at all? 01736 0 74 036 1774 1569 tze hgi020-* no, done 01737 2 20 021 0 1570 szn sf.nic,2 any scanning done in this buffer? 01740 0 74 034 1774 1571 tze hgi020-* no, use as is 01741 0 17 040 2001 1572 sta hgitly-* save buffer tally temporarily 01742 2 61 021 0 1573 cmpx3 sf.nic,2 scan pointer at beginning? 01743 0 74 027 1772 1574 tze hgi010-* yes, nothing new 01744 3333 00 0 1575 cx3a convert current buffer pointer to word addr 01745 0 34 131 2076 1576 ana l.r007-* =o077777 01746 0 17 034 2002 1577 sta hgibp-* save 01747 2 07 021 0 1578 lda sf.nic,2 get scan pointer 01750 0 34 126 2076 1579 ana l.r007-* (=o077777) convert to word address 01751 0 26 031 2002 1580 sba hgibp-* number of words already scanned 01752 6333 00 0 1581 caq 01753 4336 01 0 1582 qls 1 convert to characters 01754 3333 00 0 1583 cx3a started at odd character? 01755 0 31 122 2077 1584 cana l.r008-* =o100000 01756 0 74 002 1760 1585 tze 2 no 01757 573 777 0 1586 iaq -1 yes, one character less 01760 2 07 021 0 1587 lda sf.nic,2 stopped at odd character? 01761 0 31 116 2077 1588 cana l.r008-* =o100000 01762 0 74 002 1764 1589 tze 2 no 01763 573 001 0 1590 iaq 1 yes, one character more 01764 2 41 021 0 1591 ldx3 sf.nic,2 point to first unscanned char 01765 0 07 014 2001 1592 lda hgitly-* get original tally 01766 0 57 013 2001 1593 stq hgitly-* this is number already scanned 01767 0 26 012 2001 1594 sba hgitly-* result is number remaining 01770 0 74 002 1772 1595 tze hgi010-* none assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 67 hgeti - entry to collect input from current buffer 01771 0 65 003 1774 1596 tpl hgi020-* negative would mean none 01772 673 000 0 1597 hgi010 ila 0 return zero tally 01773 4333 00 0 1598 cax3 and zero buffer address 01774 4 50 736 1732 1599 hgi020 stx3 hgisx3-*,* return buffer addr 01775 0 41 735 1732 1600 ldx3 hgisx3-* restore x3 01776 3 17 001 0 1601 sta 1,3 return tally 1602 01777 1603 return hgeti 1604 02001 1605 hgitly bss 1 02002 1606 hgibp bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 68 gettly - get the addr and tally of the current input buff 02003 1608 gettly subr gtl,(x2,inh) end of binary card 00000032 1609 1610 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1611 * 1612 * gettly 1613 * 1614 * computes the tally of, i.e. the number of chars in, 1615 * the current input buffer. if the buffer is active 1616 * (icw active), the tally is given by the difference 1617 * between the max buffer tally and the icw tally. 1618 * if not active, the tally is given by the tally 1619 * field of the buffer. 1620 * 1621 * upon entry: 1622 * x1 - virtual tib address 1623 * 1624 * returns: 1625 * x3 - points to first char. current buffer (or zero if none) 1626 * a - contains buffer tally (or zero if none) 1627 * 1628 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1629 02015 1 03 030 0 1630 ldx2 t.sfcm,1 get virtual sfcm address 02016 2 07 005 0 1631 lda sf.flg,2 get sfcm flags 02017 2 47 006 0 1632 ldq sf.ib0,2 get primary buffer addr 02020 222 002 0 1633 icana sffcii alt buffer in use 02021 0 74 002 2023 1634 tze 2 no 02022 2 47 007 0 1635 ldq sf.ib1,2 get alt buffer addr 1636 02023 573 000 0 1637 iaq 0 do we have a buffer ? 02024 0 64 004 2030 1638 tnz gtl010-* yes, continue 02025 673 000 0 1639 ila 0 return zero tally 02026 4333 00 0 1640 cax3 return zero buffer addr 02027 0 71 036 2065 1641 tra gtlret-* 1642 02030 2 41 000 0 1643 gtl010 ldx3 sf.hcm,2 get hwcm addr 02031 373 000 0 1644 iacx3 h.ric0 get primary rcv icw addr 02032 222 002 0 1645 icana sffcii alt icw active ? 02033 0 74 002 2035 1646 tze 2 no 02034 373 002 0 1647 iacx3 h.ric1-h.ric0 get alt rcv icw addr 1648 02035 7333 00 0 1649 cqa move buffer addr to a 02036 3 47 001 0 1650 ldq 1,3 get icw tally 02037 4333 00 0 1651 cax3 move buffer addr to x3 02040 2 07 005 0 1652 lda sf.flg,2 synchronous line? 02041 0 31 032 2073 1653 cana l.r004-* =sffsyn 02042 0 64 010 2052 1654 tnz gtl020-* yes, regular buffer 02043 3333 00 0 1655 cx3a no, point to second char. of block 02044 0 06 031 2075 1656 ada l.r006-* 0,b.1 02045 4333 00 0 1657 cax3 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 69 gettly - get the addr and tally of the current input buff 02046 3 07 377 0 1658 lda -1,3,b.1 pick up size from first char. 02047 0336 01 0 1659 als 1 convert to chars 02050 773 776 0 1660 iaa -2 a now contains max. tally 02051 0 71 010 2061 1661 tra gtl030-* 1662 02052 1663 gtl020 null 02052 3 07 001 0 1664 lda bf.tly,3 get buffer tally word end of binary card 00000033 02053 0 34 015 2070 1665 ana l.r001-* (=buftmk) leave only tally 02054 0 17 013 2067 1666 sta gtltmp-* hang on to max. tally 02055 3333 00 0 1667 cx3a update pointer to first data char. 02056 0 06 016 2074 1668 ada l.r005-* =bf.dta,b.0 02057 4333 00 0 1669 cax3 back to x3 02060 0 07 007 2067 1670 lda gtltmp-* restore tally 1671 02061 1672 gtl030 null 02061 0 67 010 2071 1673 cmpq l.r002-* (=010000) icw tally exhausted ? 02062 0 74 003 2065 1674 tze gtlret-* yes, done 1675 02063 0 57 004 2067 1676 stq gtltmp-* put icw tally in temp 02064 0 26 003 2067 1677 sba gtltmp-* subtract from max buffer tally 1678 02065 1679 gtlret return gettly 1680 02067 1681 gtltmp bss 1 1682 1683 *a.r001 02070 000777 0 1684 l.r001 vfd 18/buftmk 02071 010000 0 1685 l.r002 oct 010000 02072 777000 0 1686 l.r003 vfd o18/777000 02073 010000 0 1687 l.r004 vfd 18/sffsyn 02074 2 00002 0 1688 l.r005 zero bf.dta,b.0 02075 3 00000 0 1689 l.r006 zero 0,b.1 02076 077777 0 1690 l.r007 oct 077777 02077 100000 0 1691 l.r008 oct 100000 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 70 hcfg - entry point to change configuration of channel 02100 1693 hcfg subr cfg,(x1,x2,x3) 1694 1695 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1696 * 1697 * hcfg 1698 * 1699 * entry to change to the configuration of the channel 1700 * the current config pcw (stored in the sfcm at sf.cfg) is 1701 * is modified according to the sub-op's in the config list 1702 * and a pcw type 2 is issued, the new current config pcw 1703 * is stored in the sfcm. 1704 * 1705 * upon entry: 1706 * x1 - virtual tib address 1707 * x2 - points to first config sub-op 1708 * 1709 * returns: 1710 * x2 - points to opblock after sub-ops 1711 * 1712 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1713 02114 1 03 030 0 1714 ldx2 t.sfcm,1 get addr of sfcm 02115 2 04 024 0 1715 ldaq sf.cfg,2 get current config pcw 02116 0 14 130 2246 1716 staq newcfg-* newcfg will be modified 02117 0 41 773 2112 1717 ldx3 cfgsx2-* get address of first sub-op 1718 02120 1719 cfg010 null start of sub-op decoding loop 02120 3 07 000 0 1720 lda 0,3 pick up sub-op 02121 0 34 751 2072 1721 ana l.r003-* =777000 end of binary card 00000034 02122 0 27 750 2072 1722 cmpa l.r003-* is this opblock, not a sub-op 02123 0 74 114 2237 1723 tze cfg070-* yes, done 02124 673 000 0 1724 ila 0 zero a 02125 3 47 000 0 1725 ldq 0,3 get sub-op 02126 0334 03 0 1726 lls 3 isolate sub-op code in a 02127 6337 03 0 1727 qrl 3 right justify sub-op data 02130 422 003 0 1728 icmpa fg.bd changing the baud rate? 02131 0 74 037 2170 1729 tze cfg050-* go process baud sub-op 1730 1731 mode sub-op (smode or rmode) 1732 find specified entry in cfgtab 02132 2334 22 0 1733 llr 18 swap a and q 1734 sub-op code is in q 1735 sub-op data is in a 02133 0 17 115 2250 1736 sta cfgsub-* 02134 0 03 117 2253 1737 cfg019 ldx2 a.q001-* get addr of config table (=cfgtab) 02135 2 31 000 0 1738 cfg020 cana 0,2 compare sub-op data with cfgtab entry 02136 0 74 026 2164 1739 tze cfg041-* tra if desired bit not set 02137 2 07 000 0 1740 lda 0,2 bit that just matched 02140 0 35 121 2261 1741 era l.q002-* (=777777) invert all bits 02141 0 32 107 2250 1742 ansa cfgsub-* turn off in arg - this bit done assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 71 hcfg - entry point to change configuration of channel 1743 02142 2 20 003 0 1744 szn 3,2 check for subr 02143 0 74 002 2145 1745 tze 2 skip if no subr 02144 6 10 003 0 1746 tsy 3,2* call subr (subr must maintain x1, x2, 1747 x3, and q) 1748 02145 2 07 001 0 1749 lda 1,2 get first word of pcw mask 02146 0 67 112 2260 1750 cmpq l.q001-* check for rmode 02147 0 64 007 2156 1751 tnz cfg030-* transfer if smode 1752 1753 reset a mode bit 02150 0 35 111 2261 1754 era l.q002-* invert the bits 02151 0 32 075 2246 1755 ansa newcfg-* reset the bit 02152 2 07 002 0 1756 lda 2,2 get 2nd word of mask 02153 0 35 106 2261 1757 era l.q002-* 02154 0 32 073 2247 1758 ansa newcfg-*+1 02155 0 71 004 2161 1759 tra cfg040-* 1760 02156 1761 cfg030 null set a mode bit 02156 0 72 070 2246 1762 orsa newcfg-* set the bit in the new config pcw 02157 2 07 002 0 1763 lda 2,2 02160 0 72 067 2247 1764 orsa newcfg-*+1 1765 02161 1766 cfg040 null 02161 0 07 067 2250 1767 lda cfgsub-* 02162 0 74 053 2235 1768 tze cfg060-* all bits processed 02163 0 71 751 2134 1769 tra cfg019-* back to next bit 1770 02164 273 004 0 1771 cfg041 iacx2 cfglen next cfgtab entry 02165 0 23 067 2254 1772 cmpx2 a.q002-* end of table? 02166 0 64 747 2135 1773 tnz cfg020-* nope, try again 02167 0 71 046 2235 1774 tra cfg060-* next config list entry 1775 02170 1776 cfg050 null change baud rate 02170 4336 00 0 1777 qls 0 buad rate given? end of binary card 00000035 02171 0 64 002 2173 1778 tnz 2 yes 02172 1 47 035 0 1779 ldq t.cntr,1 if not in control table, it is here 02173 0 03 063 2256 1780 ldx2 a.q004-* (=cfgbds) addr of buad table 02174 2 67 000 0 1781 cfg052 cmpq 0,2 does it match baud given 02175 0 74 005 2202 1782 tze cfg051-* yes 02176 273 001 0 1783 iacx2 1 step to next entry 02177 0 23 060 2257 1784 cmpx2 a.q005-* at end of table? 02200 0 64 774 2174 1785 tnz cfg052-* no 02201 1786 die 2 1787 02202 0 56 050 2252 1788 cfg051 stz cfgsvf-* this will be setting of ebcdic bit in sfcm 02203 0 67 072 2275 1789 cmpq bd133-* setting to 133 baud? 02204 0 64 003 2207 1790 tnz cfg053-* no 02205 0 07 064 2271 1791 lda l.q010-* (=sffebd) ebcdic bit for sfcm 02206 0 17 044 2252 1792 sta cfgsvf-* assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 72 hcfg - entry point to change configuration of channel 02207 0 07 053 2262 1793 cfg053 lda l.q003-* mask for pcw baud bits 02210 0 32 037 2247 1794 ansa newcfg-*+1 turn off current bits 02211 2 07 011 0 1795 lda cfgflg-cfgbds,2 get pcw bits to set baud rate 02212 0 72 035 2247 1796 orsa newcfg-*+1 and store in pcw 02213 0 13 036 2251 1797 stx2 cfgtmp-* save baud table index 02214 1 03 030 0 1798 ldx2 t.sfcm,1 get addr of sfcm from tib 02215 0 07 055 2272 1799 lda l.q011-* (=^sffebd) 02216 2 32 005 0 1800 ansa sf.flg,2 turn off ebcdic bit 02217 0 07 033 2252 1801 lda cfgsvf-* get new value 02220 2 72 005 0 1802 orsa sf.flg,2 and set it 02221 2 03 015 0 1803 ldx2 sf.hsl,2 get hsla table addr from sfcm 02222 0 07 045 2267 1804 lda l.q008-* mask to turn off speed field 02223 2 32 000 0 1805 ansa ht.flg,2 02224 0 07 025 2251 1806 lda cfgtmp-* retreive baud table index 02225 0 26 031 2256 1807 sba a.q004-* get offset in table 02226 773 001 0 1808 iaa 1 this gives final baud index 02227 2 72 000 0 1809 orsa ht.flg,2 save in hsla table 1810 1811 check that pcw is type 2 02230 0 07 016 2246 1812 lda newcfg-* 02231 0 34 034 2265 1813 ana l.q006-* zero all but pcw type code 02232 0 27 034 2266 1814 cmpa l.q007-* check for right type 02233 0 74 002 2235 1815 tze cfg060-* 02234 1816 die 2 1817 02235 1818 cfg060 null 02235 373 001 0 1819 iacx3 1 next entry in config list 02236 0 71 662 2120 1820 tra cfg010-* go back for another entry 1821 02237 0 50 653 2112 1822 cfg070 stx3 cfgsx2-* all done, return bumbed addr to caller end of binary card 00000036 02240 1 03 030 0 1823 ldx2 t.sfcm,1 get sfcm addr again 1824 02241 0 04 005 2246 1825 ldaq newcfg-* get new config pcw 02242 2 14 024 0 1826 staq sf.cfg,2 save it in sfcm 1827 1828 now select channel and do cioc 1829 02243 0 10 147 2412 1830 tsy sndcfg-* 02244 1831 return hcfg done 1832 02246 1833 even 02246 1834 newcfg bss 2 (altrd) pcw temp for new config pcw 02250 1835 cfgsub bss 1 (altrd) copy of sub-op data 02251 1836 cfgtmp bss 1 02252 1837 cfgsvf bss 1 1838 02253 0 02315 1 1839 a.q001 ind cfgtab 02254 0 02371 1 1840 a.q002 ind cfgend 02255 0 02606 1 1841 a.q003 ind cioc 02256 0 02273 1 1842 a.q004 ind cfgbds assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 73 hcfg - entry point to change configuration of channel 02257 0 02304 1 1843 a.q005 ind cfgbds+cfgbdl 1844 02260 000002 0 1845 l.q001 vfd 18/fg.rmd 02261 777777 0 1846 l.q002 vfd o18/777777 02262 777400 0 1847 l.q003 vfd o18/777400 mask to zero baud bits 02263 073 000 0 1848 l.q004 sel *-* template select instruction 02264 070000 0 1849 l.q005 vfd 18/p.ssiw 02265 600000 0 1850 l.q006 vfd o18/600000 02266 400000 0 1851 l.q007 vfd o18/pcw.2 02267 777760 0 1852 l.q008 vfd o18//htfspd 02270 607777 0 1853 l.q009 vfd o18//p2.mbt 02271 000040 0 1854 l.q010 vfd o18/sffebd 02272 777737 0 1855 l.q011 vfd o18//sffebd 1856 02273 000113 0 1857 cfgbds dec 75 tables of bauds that can be configured 02274 000156 0 1858 dec 110 02275 000205 0 1859 bd133 dec 133 02276 000226 0 1860 dec 150 02277 000454 0 1861 dec 300 02300 001130 0 1862 dec 600 02301 002032 0 1863 dec 1050 02302 002260 0 1864 dec 1200 02303 003410 0 1865 dec 1800 000011 1866 cfgbdl equ *-cfgbds 1867 02304 000001 0 1868 cfgflg oct 001 pcw bits to set each baud 02305 000200 0 1869 oct 200 02306 000100 0 1870 oct 100 02307 000040 0 1871 oct 040 02310 000020 0 1872 oct 020 02311 000001 0 1873 oct 001 end of binary card 00000037 02312 000010 0 1874 oct 010 02313 000004 0 1875 oct 004 02314 000002 0 1876 oct 002 1877 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 74 config mode bits lookup table 02315 1879 cfgtab null 02315 1880 cfgtab fg.icw,p2.icw,0,cfgicw icw bit is in first word of pcw 02321 1881 cfgtab fg.lpr,p2.lpr,0,0 02325 1882 cfgtab fg.lps,p2.lps,0,0 02331 1883 cfgtab fg.lpo,p2.lpo,0,0 02335 1884 cfgtab fg.5bt,p2.5bt,0,cfgrsc 02341 1885 cfgtab fg.6bt,p2.6bt,0,cfgrsc 02345 1886 cfgtab fg.7bt,p2.7bt,0,cfgrsc 02351 1887 cfgtab fg.8bt,p2.8bt,0,cfgrsc 02355 1888 cfgtab fg.beb,0,p3.beb,0 02361 1889 cfgtab fg.btr,0,p3.btr,0 end of binary card 00000038 02365 1890 cfgtab fg.cct,p2.cct,0,0 002371 1891 cfgend equ * 1892 000004 1893 cfglen equ 4 1894 02371 1895 cfgicw subr icw 1896 1897 this subroutine is called when the number 1898 of send icw's is being changed. 1899 we always make sure that the channel is set to 1900 use the primary send icw. 1901 02374 2 07 005 0 1902 lda sf.flg,2 get tib flags 02375 222 004 0 1903 icana sffcoi are we currently using alternate? 02376 0 74 003 2401 1904 tze icwbak-* transfer if not 1905 02377 0 07 665 2264 1906 lda l.q005-* switch send icw pcw op-code 02400 4 10 655 2255 1907 tsy a.q003-*,* (=cioc) do a connect 02401 1908 icwbak null 02401 1909 return cfgicw done 1910 1911 * subroutine to turn off the character size field in the pcw 1912 02403 1913 cfgrsc subr rsc 02406 0 07 662 2270 1914 lda l.q009-* (=^p2.mbt) 02407 0 32 637 2246 1915 ansa newcfg-* 02410 1916 return cfgrsc 1917 1918 * subroutine to send the config pcw 1919 02412 1920 sndcfg subr snd,(x1,x2,x3) 02426 1 07 004 0 1921 lda t.line,1 get line no 02427 0337 06 0 1922 ars 6 02430 022 007 0 1923 iana 7 turn off "is_hsla" bit end of binary card 00000039 02431 773 006 0 1924 iaa h1ch add in base hsla chan no to 1925 get iom chan no 6, 7, or 8 02432 0 37 631 2263 1926 ora l.q004-* (=sel 0) or in sel instruction 02433 0 17 001 2434 1927 sta 1 make a the next instruction assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 75 config mode bits lookup table 02434 073 000 0 1928 sel *-* (patched) select correct channel 1929 02435 2 41 015 0 1930 ldx3 sf.hsl,2 get pointer to hsla table entry 02436 3 41 001 0 1931 ldx3 ht.tib,3 get real tib address for trace 02437 1932 trace tt.pcw,ts.pcw,(x3,newcfg,newcfg+1) 1933 02454 2 60 024 0 1934 cioc sf.cfg,2 hit the channel with the pcw 02455 1935 return sndcfg assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 76 hmode - entry point to change modes 02457 1937 hmode subr mod,(x1,x2,x3) 1938 1939 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1940 * 1941 * hmode 1942 * 1943 * entry to notify us that certain mode bits 1944 * have been changed, including those having to do 1945 * with echoing, flow control, or parity. 1946 * 1947 * upon entry: 1948 * x1 - virtual tib address 1949 * 1950 * returns: 1951 * 1952 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1953 02473 1 03 030 0 1954 ldx2 t.sfcm,1 get virtual sfcm address 02474 0 74 070 2564 1955 tze modret-* no sfcm, forget it 02475 2 07 005 0 1956 lda sf.flg,2 check for ebcd type 02476 0 31 107 2605 1957 cana l.p013-* =sffebd 02477 0 64 002 2501 1958 tnz 2 don't touch cct if it is 02500 4 10 067 2567 1959 tsy a.p001-*,* =makcct, select proper cct 1960 02501 1 07 002 0 1961 lda t.flg2,1 find out if entered or left framei end of binary card 00000040 02502 0 34 067 2571 1962 ana l.p001-* isolate tffrmi 02503 2 35 005 0 1963 era sf.flg,2 compare it against sffofr (same bit position) 02504 0 34 065 2571 1964 ana l.p001-* isolate relevant bit 02505 0 74 011 2516 1965 tze mod010-* not changed 02506 2 62 005 0 1966 ersa sf.flg,2 it is, change it in sfcm 02507 0 07 067 2576 1967 lda l.p006-* =sffnib 02510 2 72 005 0 1968 orsa sf.flg,2 we'll need a new input buffer 1969 02511 1 07 002 0 1970 lda t.flg2,1 get tib flags 02512 0 31 057 2571 1971 cana l.p001-* (=tffrmi) frame input mode ? 02513 0 64 003 2516 1972 tnz mod010-* yes 02514 0 07 061 2575 1973 lda l.p005-* (=/tffip) cannot be frame in progress 02515 1 32 002 0 1974 ansa t.flg2,1 so turn off tffip 1975 02516 1 07 002 0 1976 mod010 lda t.flg2,1 check for input flow control 02517 0 31 060 2577 1977 cana l.p007-* =tfifc 02520 0 74 003 2523 1978 tze mod020-* no 02521 0 07 055 2576 1979 lda l.p006-* =sffnib 02522 2 72 005 0 1980 orsa sf.flg,2 yes, we'll need a new input buffer 02523 0 07 061 2604 1981 mod020 lda l.p012-* p2.lps, on initially 02524 0 17 042 2566 1982 sta tstcfg-* we're going to see if we have to 02525 1 07 036 0 1983 lda t.flg3,1 change parity configuration 02526 0 34 052 2600 1984 ana l.p008-* tfoddp 02527 2337 05 0 1985 arl lposhf line it up on p2.lpo 02530 0 72 036 2566 1986 orsa tstcfg-* if on in tib, on in pcw assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 77 hmode - entry point to change modes 02531 1 07 036 0 1987 lda t.flg3,1 get flags again 02532 0 34 047 2601 1988 ana l.p009-* =tf8out 02533 2337 03 0 1989 arl lpsshf line it up on p2.lps 02534 0 62 032 2566 1990 ersa tstcfg-* on in tib => off in pcw, and vice versa 02535 2 07 024 0 1991 lda sf.cfg,2 02536 0 34 044 2602 1992 ana l.p010-* p2.lpo+p2.lps 02537 0 27 027 2566 1993 cmpa tstcfg-* have we changed either of these bits? 02540 0 74 006 2546 1994 tze mod030-* no, don't bother with new pcw 02541 0 07 042 2603 1995 lda l.p011-* ^(p2.lpo+p2.lps) 02542 2 32 024 0 1996 ansa sf.cfg,2 turn them off so we can start clean 02543 0 07 023 2566 1997 lda tstcfg-* get new values 02544 2 72 024 0 1998 orsa sf.cfg,2 02545 0 10 645 2412 1999 tsy sndcfg-* now set the pcw 2000 02546 1 07 001 0 2001 mod030 lda t.flg,1 get the tib flags 02547 0 31 023 2572 2002 cana l.p002-* (=tfcrec+lfec+tbec+ecpx) any echoing modes on? 02550 0 74 014 2564 2003 tze modret-* 2004 end of binary card 00000041 02551 1 20 025 0 2005 szn t.echo,1 is there an echo buffer? 02552 0 64 012 2564 2006 tnz modret-* yes, done 2007 02553 473 040 0 2008 ilq bufsiz allocate a buffer 02554 4 10 014 2570 2009 tsy a.p002-*,* (=getbuf) 02555 2010 die 9 2011 02556 1 50 025 0 2012 stx3 t.echo,1 set ptr to echo buffer 02557 3333 00 0 2013 cx3a put addr into a 02560 0 06 013 2573 2014 ada l.p003-* (=eb.dta,b.1) make ptr to data 02561 3 17 000 0 2015 sta eb.inp,3 set in ptr 02562 3 17 001 0 2016 sta eb.otp,3 set out ptr 02563 3 56 002 0 2017 stz eb.tly,3 zero the tallytoo 2018 02564 2019 modret return hmode 2020 02566 2021 tstcfg bss 1 place for temporary parity bits 2022 02567 0 01107 1 2023 a.p001 ind makcct 02570 0 16000 3 2024 a.p002 ind getbuf 2025 02571 040000 0 2026 l.p001 vfd 18/tffrmi 02572 207000 0 2027 l.p002 vfd 18/tfcrec+tflfec+tftbec+tfecpx 02573 3 00002 0 2028 l.p003 ind eb.dta,b.1 02574 200000 0 2029 l.p004 vfd 18/tfecpx 02575 677777 0 2030 l.p005 vfd o18//tffip 02576 100000 0 2031 l.p006 vfd 18/sffnib 02577 000040 0 2032 l.p007 vfd 18/tfifc 02600 000400 0 2033 l.p008 vfd 18/tfoddp 02601 000200 0 2034 l.p009 vfd 18/tf8out 02602 000030 0 2035 l.p010 vfd 18/p2.lpo+p2.lps 02603 777747 0 2036 l.p011 vfd o18//p2.lpo*/p2.lps assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 78 hmode - entry point to change modes 02604 000020 0 2037 l.p012 vfd 18/p2.lps 02605 000040 0 2038 l.p013 vfd 18/sffebd assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 79 cioc - connect subroutine 02606 2040 cioc subr cio,(x1,x2,x3,inh) end of binary card 00000042 2041 2042 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2043 * 2044 * cioc 2045 * 2046 * subroutine to perform a connect to a hsla 2047 * subchannel. a pcw type 1 is issued with the pcw 2048 * broadside bits in the sfcm. 2049 * 2050 * upon entry: 2051 * a - contains pcw op-code to use 2052 * x1 - virtual tib address 2053 * 2054 * returns: 2055 * 2056 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2057 02626 0 17 044 2672 2058 sta ciopcw-* save the pcw op-code 02627 0 07 240 3067 2059 lda l.c006-* (=pcw.1) get command type code 02630 0 72 042 2672 2060 orsa ciopcw-* and put it into pcw 02631 1 07 004 0 2061 lda t.line,1 get the line number 02632 022 037 0 2062 iana 31 (=o37) leave just subch number 02633 0336 06 0 2063 als 6 position it for pcw 02634 0 72 036 2672 2064 orsa ciopcw-* put into pcw 2065 02635 1 03 030 0 2066 ldx2 t.sfcm,1 get ptr to sfcm 02636 2 07 012 0 2067 lda sf.pcw,2 get pcw broadside bits 02637 0 17 034 2673 2068 sta ciopcw+1-* put them into pcw, too 2069 2070 pcw model setup, select chan and do cioc 2071 02640 1 07 004 0 2072 lda t.line,1 get line no again 02641 0337 06 0 2073 ars 6 02642 022 007 0 2074 iana 7 turn off "is_hsla" bit 02643 773 006 0 2075 iaa h1ch add in base hsla chan no 2076 to get iom chan no 6, 7 or 8 02644 0 37 224 3070 2077 ora l.c007-* (=sel 0) or in select instruction 02645 0 17 001 2646 2078 sta 1 put it down to execute 02646 073 000 0 2079 sel 0 (patched) select the right chan 2080 02647 2 41 015 0 2081 ldx3 sf.hsl,2 get pointer to hsla table entry 02650 3 41 001 0 2082 ldx3 ht.tib,3 get real tib address for trace 02651 2083 trace tt.pcw,ts.pcw,(x3,ciopcw,ciopcw+1) 2084 02666 0 60 004 2672 2085 cioc ciopcw-* hit channel with pcw 02667 2086 return cioc end of binary card 00000043 02671 233100 0 02672 2087 even assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 80 cioc - connect subroutine 02672 2088 ciopcw bss 2 (altrd) pcw temp for cioc assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 81 seticw - setup the output icw's 02674 2090 seticw subr sic,(x1,x2,x3) 2091 2092 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2093 * 2094 * seticw 2095 * 2096 * seticw setups the output icw's for the 2097 * buffer chain pointed to by t.ocur. it assumes no 2098 * active output icw and stores into both. 2099 * 2100 * upon entry: 2101 * x1 - virtual tib address 2102 * 2103 * returns: 2104 * both output icw's setup 2105 * 2106 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2107 02710 1 03 030 0 2108 ldx2 t.sfcm,1 get addr of sfcm 02711 2 41 000 0 2109 ldx3 sf.hcm,2 get addr of hwcm region 2110 02712 373 004 0 2111 iacx3 h.sic0 add in offset 02713 0 50 143 3056 2112 stx3 sicicw-* save it away 02714 1 41 030 0 2113 ldx3 t.sfcm,1 get ptr to sfcm 02715 373 010 0 2114 iacx3 sf.ob0 add in other offset 02716 0 50 141 3057 2115 stx3 sicobp-* save it also 2116 02717 2 07 005 0 2117 lda sf.flg,2 get sfcm flag word 02720 222 004 0 2118 icana sffcoi which icw is active? 02721 0 74 005 2726 2119 tze sic010-* primary, use it first 2120 02722 673 002 0 2121 ila h.sic1-h.sic0 get difference 02723 0 16 133 3056 2122 asa sicicw-* update ind word 02724 673 001 0 2123 ila sf.ob1-sf.ob0 get other difference 02725 0 16 132 3057 2124 asa sicobp-* save it also 2125 02726 1 41 013 0 2126 sic010 ldx3 t.ocur,1 pick up ptr to next output buffer 02727 4 50 130 3057 2127 stx3 sicobp-*,* put into the sfcm 02730 2 07 022 0 2128 lda sf.noc,2 did we stop in the middle? 02731 0 74 042 2773 2129 tze sic020-* no 02732 4 17 124 3056 2130 sta sicicw-*,* yes, this is where to pick up 02733 2 56 022 0 2131 stz sf.noc,2 we won't be stopped here next time 02734 2335 17 0 2132 lrl 15 02735 6337 03 0 2133 qrl 3 get the word address 02736 022 001 0 2134 iana 1 isolate odd-even char. bit in a 02737 0 17 121 3060 2135 sta oddchr-* save it 02740 1 66 013 0 2136 sbq t.ocur,1 words into buffer so far end of binary card 00000044 02741 573 776 0 2137 iaq -bf.dta don't include the header 02742 4336 01 0 2138 qls 1 get it in characters 02743 0 46 115 3060 2139 adq oddchr-* plus 1 maybe assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 82 seticw - setup the output icw's 02744 0 57 115 3061 2140 stq settmp-* save this (number of chars already output) 02745 3 07 001 0 2141 lda bf.tly,3 get original tally 02746 0 34 114 3062 2142 ana l.c001-* buftmk 02747 0 26 112 3061 2143 sba settmp-* subtract tally of already-sent chars 02750 0 64 017 2767 2144 tnz sic015-* make sure there are any left 02751 3 03 000 0 2145 ldx2 bf.nxt,3 there weren't 2146 free the old output buffer 02752 4 10 124 3076 2147 tsy a.c003-*,* freout 02753 3332 00 0 2148 cx2a get next buffer pointer 02754 4333 00 0 2149 cax3 02755 0 64 004 2761 2150 tnz sic013-* if there is none, 02756 1 56 014 0 2151 stz t.olst,1 make last pointer correct also 02757 0 07 113 3072 2152 lda l.c009-* =^tfwrit 02760 1 32 001 0 2153 ansa t.flg,1 make sure tfwrit is off 02761 1 50 013 0 2154 sic013 stx3 t.ocur,1 this is now head of chain 02762 4 50 075 3057 2155 stx3 sicobp-*,* and buffer to be put in icw 02763 1 03 030 0 2156 ldx2 t.sfcm,1 get sfcm address back 02764 0 07 101 3065 2157 lda l.c004-* (=^sffssb) we can't have two outstanding buffers 02765 2 32 005 0 2158 ansa sf.flg,2 02766 0 71 005 2773 2159 tra sic020-* proceed 02767 0 41 067 3056 2160 sic015 ldx3 sicicw-* resuming suspended buffer 02770 3 17 001 0 2161 sta 1,3 update tally with new value 02771 1 41 013 0 2162 ldx3 t.ocur,1 get buffer pointer back in x3 02772 0 71 015 3007 2163 tra sic030-* done with active icw 02773 3333 00 0 2164 sic020 cx3a get ptr into the a 02774 0 74 060 3054 2165 tze sicret-* no buffer 02775 773 002 0 2166 iaa bf.dta get offset of data 02776 0 37 070 3066 2167 ora l.c005-* (=0,b.0) or in the character addressing 02777 4 17 057 3056 2168 sta sicicw-*,* and store into the icw 2169 03000 3 07 001 0 2170 lda bf.tly,3 get the buffer tally 03001 0 34 061 3062 2171 ana l.c001-* (=buftmk) isolate the tally 03002 0 41 054 3056 2172 ldx3 sicicw-* get ptr to icw words 03003 3 17 001 0 2173 sta 1,3 put tally into icw 2174 03004 1 41 013 0 2175 ldx3 t.ocur,1 get the buffer addr again 03005 4 10 070 3075 2176 tsy a.c002-*,* (=oscan) scan the buffer 2177 03006 4 10 066 3074 2178 tsy a.c001-*,* (=outpar) output parity for ebcdic 2179 03007 2 56 022 0 2180 sic030 stz sf.noc,2 not suspended in middle now end of binary card 00000045 03010 3 07 001 0 2181 lda bf.flg,3 get buffer flag bits 03011 0 31 052 3063 2182 cana l.c002-* (=bfflst) last buffer in msg? 03012 0 64 035 3047 2183 tnz sic050-* yes, pretty much done 2184 03013 3 20 000 0 2185 szn bf.nxt,3 is there any more chain? 03014 0 74 040 3054 2186 tze sicret-* nope, all done here 2187 03015 673 002 0 2188 ila sfhmk get mask to switch icw ptr 03016 0 62 040 3056 2189 ersa sicicw-* assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 83 seticw - setup the output icw's 03017 673 001 0 2190 ila sfbfmk get mask to switch buffer ptrs 03020 0 62 037 3057 2191 ersa sicobp-* 2192 03021 3 41 000 0 2193 ldx3 bf.nxt,3 get addr of next guy in chain 03022 4 50 035 3057 2194 stx3 sicobp-*,* and into sfcm 03023 3333 00 0 2195 cx3a get ptr into the a 03024 773 002 0 2196 iaa bf.dta get offset of data 03025 0 37 041 3066 2197 ora l.c005-* (=0,b.0) or in char addressing bits 03026 4 17 030 3056 2198 sta sicicw-*,* and store into the icw 2199 03027 3 07 001 0 2200 lda bf.tly,3 get the tally 03030 0 34 032 3062 2201 ana l.c001-* (=buftmk) isolate tally 03031 0 41 025 3056 2202 ldx3 sicicw-* get ptr to icw 03032 3 17 001 0 2203 sta 1,3 put into icw tally 2204 03033 1 41 013 0 2205 ldx3 t.ocur,1 get ptr to first buffer 03034 3 41 000 0 2206 ldx3 bf.nxt,3 and then to this one 03035 0 07 027 3064 2207 lda l.c003-* =sffssb 03036 2 31 005 0 2208 cana sf.flg,2 find out if it's already been scanned 03037 0 74 003 3042 2209 tze sic040-* no, go ahead 03040 2 62 005 0 2210 ersa sf.flg,2 yes, turn off flag 03041 0 71 013 3054 2211 tra sicret-* and skip scan 03042 4 10 033 3075 2212 sic040 tsy a.c002-*,* (=oscan) scan the buffer 03043 4 10 031 3074 2213 tsy a.c001-*,* (=outpar) output parity for ebcdic 2214 03044 3 07 001 0 2215 lda bf.flg,3 get buffer flags 03045 0 31 016 3063 2216 cana l.c002-* (=bfflst) last buffer ? 03046 0 74 006 3054 2217 tze sicret-* no 2218 03047 0 07 024 3073 2219 sic050 lda l.c010-* (=sffhdl) is it hdlc? 03050 2 31 005 0 2220 cana sf.flg,2 03051 0 74 003 3054 2221 tze sicret-* no 03052 0 07 017 3071 2222 lda l.c008-* (=tsftre) get tally runout enable bit 03053 1 72 000 0 2223 orsa t.stat,1 turn it on in tib status 2224 2225 03054 2226 sicret return seticw 2227 2228 03056 2229 sicicw bss 1 (altrd) icw ptr 03057 2230 sicobp bss 1 (altrd) sf.ob0/1 ptr 03060 2231 oddchr bss 1 03061 2232 settmp bss 1 2233 end of binary card 00000046 03062 000777 0 2234 l.c001 vfd 18/buftmk 03063 040000 0 2235 l.c002 vfd 18/bfflst 03064 200000 0 2236 l.c003 vfd 18/sffssb 03065 577777 0 2237 l.c004 vfd o18//sffssb 03066 2 00000 0 2238 l.c005 ind 0,b.0 03067 200000 0 2239 l.c006 vfd 18/pcw.1 pcw type 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 84 seticw - setup the output icw's 03070 073 000 0 2240 l.c007 sel 0 select instruction 03071 004000 0 2241 l.c008 vfd 18/tsftre 03072 777776 0 2242 l.c009 vfd o18//tfwrit 03073 400000 0 2243 l.c010 vfd 18/sffhdl 2244 03074 0 06052 1 2245 a.c001 ind outpar 03075 0 06110 1 2246 a.c002 ind oscan 03076 0 07446 1 2247 a.c003 ind freout 03077 0 05000 3 2248 a.c004 ind g3wjt assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 85 hintr - hsla interrupt handler 03100 2250 hintr null 2251 2252 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2253 * 2254 * hintr 2255 * 2256 * this routine handles interrupts for all of 2257 * the hsla subchannels, and takes status from the 2258 * hardware status buffer and queues it for process- 2259 * ing by the scheduled status processor, hstprc. hstprc 2260 * will be scheduled to process the status queue if it is 2261 * not already scheduled. 2262 * 2263 * upon entry: 2264 * a call to g3jwt will return the third word of 2265 * the jump table, as follows: 2266 * 2267 * bits 0-3 iom channel number 2268 * bits 4-5 hsla number(1-3) 2269 * bits 6-10 subchannel number(0-31) 2270 * bits 11-17 module number of hsla_man 2271 * 2272 * returns: 2273 * entries queued for hstprc 2274 * 2275 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2276 03100 4 10 777 3077 2277 tsy a.c004-*,* (=g3jwt) get third word of jump table 03101 0 57 340 3441 2278 stq intjtw-* save the result 2279 03102 2280 trace tt.int,ts.int,(intjtw) 03112 0 47 327 3441 2281 ldq intjtw-* 03113 7333 00 0 2282 cqa put copy into the a 03114 0337 14 0 2283 ars 12 shift down to get hsla number 03115 022 003 0 2284 iana 3 leave only the hsla number 03116 773 777 0 2285 iaa -1 subtract one to get 0-2 03117 0 37 342 3461 2286 ora l.d001-* (=000010) turn on is_hsla bit 03120 0336 06 0 2287 als 6 shift back into proper position 03121 0 17 333 3454 2288 sta intlno-* save as part of line number 2289 03122 7333 00 0 2290 cqa get another copy 03123 0337 07 0 2291 ars 7 shift down subchannel number 03124 022 037 0 2292 iana 31 leave only subchan number 03125 0 72 327 3454 2293 orsa intlno-* put into line number 2294 03126 0 07 326 3454 2295 lda intlno-* pick it up for call 03127 4 10 357 3506 2296 tsy a.d005-*,* (=gettib) get the tib addr end of binary card 00000047 03130 773 000 0 2297 iaa 0 set the indicators 03131 0 74 306 3437 2298 tze intret-* no tib, ignore interrupt 2299 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 86 hintr - hsla interrupt handler 03132 0 17 313 3445 2300 sta intrtb-* save real tib address for dspqur 03133 4 10 360 3513 2301 tsy a.d010-*,* (setptw) virtualize real tib address 03134 0 17 312 3446 2302 sta intvtb-* save for easy reference 03135 4332 00 0 2303 cax1 put virtual tib address into x1 03136 1 03 030 0 2304 ldx2 t.sfcm,1 get the virtual sfcm address 03137 0 64 002 3141 2305 tnz 2 should be non-zero 03140 2306 die 10 nope, die 2307 03141 2 07 023 0 2308 lda sf.ssl,2 figure out current number of pending status 03142 2 26 003 0 2309 sba sf.tly,2 to meter it 03143 0 17 275 3440 2310 sta intcnt-* 03144 2311 cmeter mupdat,m.nst,intcnt-* 2312 03153 0 56 267 3442 2313 stz intrsw-* clear the icw reset switch 03154 0 56 303 3457 2314 stz intsqo-* clear status queue overflow switch 03155 673 006 0 2315 ila hpri get basic priority 03156 0 17 272 3450 2316 sta intskd-* set in sked words 2317 03157 2 07 005 0 2318 lda sf.flg,2 get the sfcm flag 03160 222 010 0 2319 icana sffisc inactive sub chan? 03161 0 64 165 3346 2320 tnz int050-* yes, get out of here 2321 03162 3332 00 0 2322 cx2a get ptr to sfcm 03163 773 042 0 2323 iaa sf.est point to end of hardware buffer 03164 0 17 257 3443 2324 sta intend-* save for compare 2325 03165 1 41 030 0 2326 ldx3 t.sfcm,1 get ptr to sfcm in x3 03166 373 026 0 2327 iacx3 sf.sta get addr of hardware status buffer 2328 03167 3 07 000 0 2329 int010 lda 0,3 is this status word zero? 03170 0 74 156 3346 2330 tze int050-* yes, all done 03171 0 31 302 3473 2331 cana l.d010-* (=hs.rcs) rcv status ? 03172 0 74 042 3234 2332 tze int014-* no 2333 03173 0 31 271 3464 2334 cana l.d004-* (=hs.tro) tally runout ? 03174 0 74 004 3200 2335 tze int011-* no 2336 2337 tally runout means we just dropped out of 2338 rcv mode. make sure we stay out. 2339 03175 0 07 277 3474 2340 lda l.d011-* (=/pb.rcv) 03176 2 32 012 0 2341 ansa sf.pcw,2 turn off pcw rcv bit end of binary card 00000048 03177 0 71 044 3243 2342 tra int020-* 2343 03200 0 31 270 3470 2344 int011 cana l.d007-* (=hs.siw) switching icw ? 03201 0 74 042 3243 2345 tze int020-* no, continue 2346 03202 0 50 242 3444 2347 stx3 intcrp-* save status queue addr 03203 6333 00 0 2348 caq put status word in q 2349 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 87 hintr - hsla interrupt handler 03204 2 41 000 0 2350 ldx3 sf.hcm,2 get hwcm addr 03205 373 000 0 2351 iacx3 h.ric0 get primary rcv icw addr 03206 0 31 263 3471 2352 cana l.d008-* (=hs.aiw) alt icw active ? 03207 0 74 002 3211 2353 tze 2 no 03210 373 002 0 2354 iacx3 h.ric1-h.ric0 get alt rcv icw addr 2355 03211 3 07 001 0 2356 lda 1,3 get icw tally 03212 0 34 260 3472 2357 ana l.d009-* (=007777) leave only tally 03213 0 17 245 3460 2358 sta inttly-* save it 2359 03214 0 07 246 3462 2360 lda l.d002-* (=010000) get exhausted tally 03215 3 17 001 0 2361 sta 1,3 put it in icw 2362 03216 2 07 005 0 2363 lda sf.flg,2 synchronous? 03217 0 31 246 3465 2364 cana l.d005-* =sffsyn 03220 0 64 003 3223 2365 tnz int012-* yes 03221 7333 00 0 2366 cqa no, get first word of status again 03222 0 71 011 3233 2367 tra int013-* skip tally manipulation 03223 7333 00 0 2368 int012 cqa get status back in a 03224 2 41 006 0 2369 ldx3 sf.ib0,2 get primary buffer addr 03225 0 31 244 3471 2370 cana l.d008-* (=hs.aiw) alt. icw active ? 03226 0 74 002 3230 2371 tze 2 no 03227 2 41 007 0 2372 ldx3 sf.ib1,2 get alt buffer addr 2373 03230 3 47 001 0 2374 ldq bf.tly,3 get max buffer tally 03231 0 66 227 3460 2375 sbq inttly-* subtract icw tally 03232 3 57 001 0 2376 stq bf.tly,3 put actual tally in buffer 2377 03233 0 41 211 3444 2378 int013 ldx3 intcrp-* restore status queue addr 2379 03234 0 31 234 3470 2380 int014 cana l.d007-* (=hs.siw) switching icw ? 03235 0 74 006 3243 2381 tze int020-* no, process status at normal priority 2382 2383 * lda sf.flg,2 get sfcm flags 2384 * cana l.d005-* synchronous line ? 2385 * tze int015-* no, use priority 3 2386 * rem 2387 * ldx2 sf.hsl,2 get address of hsla table 2388 * lda ht.flg,2 pick up word with speed 2389 * ldx2 t.sfcm,1 restore x2 2390 * iana htfspd leave only the channel speed 2391 * icmpa 8 is it more than 9600 baud? 2392 * tmi int015-* no, use priority 3 2393 * rem 2394 * ila hprip2 use real high priority 2395 * tra 2 2396 03236 673 003 0 2397 int015 ila hprip3 get priority 3 for sked 03237 0 17 211 3450 2398 sta intskd-* reset scheduler priority 2399 03240 0 07 237 3477 2400 lda l.d014-* =sffmsp assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 88 hintr - hsla interrupt handler 03241 322 777 0 2401 iera -1 if switching icws, turn it off 03242 2 32 005 0 2402 ansa sf.flg,2 2403 03243 2 20 003 0 2404 int020 szn sf.tly,2 any room in status queue? 03244 0 64 007 3253 2405 tnz int025-* yes, continue 2406 03245 0 20 212 3457 2407 szn intsqo-* status overflow occurred already ? end of binary card 00000049 03246 0 64 003 3251 2408 tnz int024-* yes, skip it 2409 03247 4 10 251 3520 2410 tsy a.d015-*,* handle status queue overflow 03250 0 76 207 3457 2411 aos intsqo-* remember it 2412 03251 3 56 000 0 2413 int024 stz 0,3 zero the ignored status 03252 0 71 056 3330 2414 tra int030-* leave here 2415 03253 2 07 005 0 2416 int025 lda sf.flg,2 synchronous? 03254 0 31 211 3465 2417 cana l.d005-* =sffsyn 03255 0 64 021 3276 2418 tnz int028-* yes, skip the marker test 03256 3 07 000 0 2419 lda 0,3 get first word of status 03257 0 31 217 3476 2420 cana l.d013-* (=hs.nms) marker status? 03260 0 74 016 3276 2421 tze int028-* nope 03261 2 07 005 0 2422 lda sf.flg,2 yes, is one already pending 03262 0 31 215 3477 2423 cana l.d014-* (=sffmsp) 03263 0 74 006 3271 2424 tze int027-* no, we'll have to store this one 03264 3 07 000 0 2425 lda 0,3 (get first word of status back) 03265 0 31 213 3500 2426 cana l.d015-* yes, but are there any other interesting ones? 03266 0 64 003 3271 2427 tnz int027-* yep 03267 3 56 000 0 2428 stz 0,3 ignore this status 03270 0 71 051 3341 2429 tra int040-* 2430 03271 3 07 000 0 2431 int027 lda 0,3 get first word of status again 03272 0 31 176 3470 2432 cana l.d007-* (=hs.siw) switching icws? 03273 0 64 003 3276 2433 tnz int028-* then don't set flag 03274 0 07 203 3477 2434 lda l.d014-* =sffmsp 03275 2 72 005 0 2435 orsa sf.flg,2 turn it on 03276 2436 int028 null 03276 3 04 000 0 2437 ldaq 0,3 get the current status words 03277 6 14 001 0 2438 staq sf.nxa,2* put into the software queue 03300 3 56 000 0 2439 stz 0,3 zero the current status 2440 03301 0 31 167 3470 2441 cana l.d007-* *is it hs.siw for switching 03302 0 74 007 3311 2442 tze int28a-* *no continue 03303 0 31 170 3473 2443 cana l.d010-* *is it hs.rcv recieve only 03304 0 74 005 3311 2444 tze int28a-* *no again 03305 2 07 005 0 2445 lda sf.flg,2 03306 0 31 174 3502 2446 cana l.d017-* *(sffhdl+sffbsc) is it bsc or hdlc? 03307 0 74 002 3311 2447 tze int28a-* no 03310 4 10 207 3517 2448 tsy a.d014-*,* *(swphic) switch buffer now 2449 03311 673 777 0 2450 int28a ila -1 decrement the tally assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 89 hintr - hsla interrupt handler 03312 2 16 003 0 2451 asa sf.tly,2 03313 673 004 0 2452 ila 4 increment the next available 03314 2 16 001 0 2453 asa sf.nxa,2 pointer 2454 end of binary card 00000050 03315 2 07 023 0 2455 lda sf.ssl,2 get length of status queue 03316 0336 02 0 2456 als 2 in words 03317 0 17 130 3447 2457 sta intsql-* 03320 3332 00 0 2458 cx2a put sfcm ptr into a 03321 773 042 0 2459 iaa sf.waq 03322 0 06 125 3447 2460 ada intsql-* get ptr to end of status queue 03323 2 27 001 0 2461 cmpa sf.nxa,2 are we at end of queue? 03324 0 64 004 3330 2462 tnz int030-* nope, continue 2463 03325 3332 00 0 2464 cx2a copy sfcm ptr to a 03326 773 042 0 2465 iaa sf.waq get ptr to beginning of queue 03327 2 17 001 0 2466 sta sf.nxa,2 put into q ptr, wrapping q 2467 03330 2 07 005 0 2468 int030 lda sf.flg,2 get the sfcm flags 03331 222 001 0 2469 icana sffskd is the status processor scheduled? 03332 0 64 007 3341 2470 tnz int040-* yes, continue 2471 03333 673 001 0 2472 ila sffskd get flag bit 03334 2 72 005 0 2473 orsa sf.flg,2 turn it on now 2474 03335 0 43 110 3445 2475 ldx1 intrtb-* get real tib address for dspqur 03336 0 04 112 3450 2476 ldaq intskd-* (queue element) 03337 4 10 144 3503 2477 tsy a.d002-*,* (=dspqur) queue hstprc to process status 2478 note: x1 contains real tib address 03340 0 43 106 3446 2479 ldx1 intvtb-* restore virtual tib address to x1 2480 03341 373 002 0 2481 int040 iacx3 2 bump to next status 03342 0 61 101 3443 2482 cmpx3 intend-* are we at end of buffer? 03343 0 64 624 3167 2483 tnz int010-* no, continue 03344 0 56 100 3444 2484 stz intcrp-* record the fact that we are at end 03345 0 71 002 3347 2485 tra 2 jump into there 2486 03346 0 50 076 3444 2487 int050 stx3 intcrp-* save ptr to current status 03347 0 20 073 3442 2488 szn intrsw-* is status icw reset yet? 03350 0 64 067 3437 2489 tnz intret-* yes, all done 2490 03351 2 41 000 0 2491 ldx3 sf.hcm,2 get ptr to hwcm 03352 3 07 015 0 2492 lda h.aicw+1,3 get second word of icw 03353 0 31 107 3462 2493 cana l.d002-* (=010000) exhaust bit on? 03354 0 74 014 3370 2494 tze int060-* no, all ok 2495 03355 2496 cmeter mincs,m.hsqo,l.d016-* 2497 end of binary card 00000051 03364 0 20 073 3457 2498 szn intsqo-* has status overflow occurred already ? 03365 0 64 003 3370 2499 tnz int060-* yes, skip it assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 90 hintr - hsla interrupt handler 2500 03366 0 10 331 3717 2501 tsy sqovfl-* handle status queue overflow 03367 0 76 070 3457 2502 aos intsqo-* remember it 2503 03370 2504 int060 null 03370 3 07 011 0 2505 lda h.sfcm,3 get real sfcm address 03371 773 026 0 2506 iaa sf.sta get ptr to status buffer 03372 0 71 003 3375 2507 hslms1 tra int062-* set to nop by init if 64k is configured 03373 0 47 057 3452 2508 ldq intsai-* get odd word of dn6670 status icw 03374 0 71 003 3377 2509 tra int064-* skip over non-pager code 2510 03375 2511 int062 null 03375 0 37 107 3504 2512 ora a.d003-* (=0,w.2) or in 36-bit mode 03376 473 005 0 2513 ilq sfhsiz get size of status buffer 2514 03377 2515 int064 null 03377 3 14 014 0 2516 staq h.aicw,3 deposit new icw!!! 03400 0 76 042 3442 2517 aos intrsw-* indicate it has been done 2518 03401 2 07 005 0 2519 lda sf.flg,2 get sfcm flag word 03402 222 010 0 2520 icana sffisc inactive sub chan? 03403 0 64 015 3420 2521 tnz int070-* yes, all done 2522 03404 0 20 040 3444 2523 szn intcrp-* are we at end of buffer? 03405 0 74 013 3420 2524 tze int070-* yes, all done 2525 03406 0 41 036 3444 2526 ldx3 intcrp-* get the current status ptr 03407 3 07 000 0 2527 lda 0,3 get the status 03410 0 74 010 3420 2528 tze int070-* none, done 2529 03411 1 07 030 0 2530 lda t.sfcm,1 we found status at end of queue 03412 773 026 0 2531 iaa sf.sta check beginning of q to see if 03413 4333 00 0 2532 cax3 it was stored after icw refresh 03414 3 07 000 0 2533 lda 0,3 load the status word 03415 0 64 003 3420 2534 tnz int070-* it was stored after icw refresh 2535 so we will come back here soon 2536 to process the whole thing in order 2537 03416 0 41 026 3444 2538 ldx3 intcrp-* it must have been a final status stored 03417 0 71 550 3167 2539 tra int010-* with old icw, so we will process it now 2540 03420 0 20 037 3457 2541 int070 szn intsqo-* did we get another status queue overflow? 03421 0 74 016 3437 2542 tze intret-* no, all is well 2543 03422 2 76 014 0 2544 aos sf.rct,2 bump the repeat count 03423 2 07 014 0 2545 lda sf.rct,2 get the new value 03424 422 024 0 2546 icmpa 20 compare to some random number 03425 0 75 012 3437 2547 tmi intret-* no there yet, let channel run a bit more 2548 03426 473 115 0 2549 ilq errmsg tell oper we are dropping channel 03427 0 03 062 3511 2550 ldx2 a.d008-* get ptr to error msg data assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 91 hintr - hsla interrupt handler 03430 0 07 024 3454 2551 lda intlno-* copy line number 03431 0 17 025 3456 2552 sta intln2-* into error area 03432 4 10 056 3510 2553 tsy a.d007-*,* (=derrq) queue error message 2554 end of binary card 00000052 03433 1 03 030 0 2555 ldx2 t.sfcm,1 reset sfcm ptr 03434 2 56 012 0 2556 stz sf.pcw,2 zero pcw bits (like dtr!!) 03435 0 07 026 3463 2557 lda l.d003-* (=p.msk) get mask op 03436 4 10 054 3512 2558 tsy a.d009-*,* (=cioc) connect to channel 2559 03437 4 71 046 3505 2560 intret tra a.d004-*,* (=mdisp) return to master dispatcher 2561 2562 03440 2563 intcnt bss 1 used for count of pending status 03441 2564 intjtw bss 1 (altrd) 3rd word of jump table 03442 2565 intrsw bss 1 (altrd) status icw reset switch 03443 2566 intend bss 1 (altrd) end of hardware status buffer 03444 2567 intcrp bss 1 (altrd) current hardware status ptr 03445 2568 intrtb bss 1 save for real tib address 03446 2569 intvtb bss 1 save for virtual tib address 03447 2570 intsql bss 1 length of software status queue 2571 03450 2572 even 03450 0 00006 0 2573 intskd zero hpri priority of hstprc 03451 0 03765 1 2574 ind hstprc routine to be run 03452 2575 intsai amicwo w.2,sfhsiz,0 2576 2577 following two words must be together for error message 03453 000004 0 2578 interr dec 4 error code 03454 2579 intlno bss 1 (altrd) line number - tib type 2580 03455 000006 0 2581 inter2 dec 6 03456 2582 intln2 bss 1 2583 03457 2584 intsqo bss 1 03460 2585 inttly bss 1 2586 2587 03461 000010 0 2588 l.d001 vfd o18/000010 is_hsla bit 03462 010000 0 2589 l.d002 vfd o18/010000 03463 040000 0 2590 l.d003 vfd 18/p.msk 03464 004000 0 2591 l.d004 vfd 18/hs.tro 03465 010000 0 2592 l.d005 vfd 18/sffsyn 03466 000130 0 2593 l.d006 oct 000130,000110 03467 000110 0 03470 010000 0 2594 l.d007 vfd 18/hs.siw 03471 020000 0 2595 l.d008 vfd 18/hs.aiw 03472 007777 0 2596 l.d009 oct 007777 03473 400000 0 2597 l.d010 vfd 18/hs.rcs 03474 777377 0 2598 l.d011 vfd o18//pb.rcv 03475 004000 0 2599 l.d012 vfd 18/sffsqo assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 92 hintr - hsla interrupt handler 03476 200000 0 2600 l.d013 vfd 18/hs.nms 03477 020000 0 2601 l.d014 vfd 18/sffmsp 03500 016200 0 2602 l.d015 vfd 18/hs.siw+hs.ptr+hs.tro+hs.dss 03501 000001 0 2603 l.d016 dec 1 03502 402000 0 2604 l.d017 vfd 18/sffhdl+sffbsc 2605 2606 *a.d001 unused 03503 0 13000 3 2607 a.d002 ind dspqur 03504 1 00000 0 2608 a.d003 ind 0,w.2 03505 0 07000 3 2609 a.d004 ind mdisp 03506 0 21000 3 2610 a.d005 ind gettib 03507 0 00702 0 2611 a.d006 ind .crpte pointer to variable cpu page table word end of binary card 00000053 03510 0 04000 3 2612 a.d007 ind derrq 03511 0 03455 1 2613 a.d008 ind inter2 03512 0 02606 1 2614 a.d009 ind cioc 03513 0 30000 3 2615 a.d010 ind setptw set up page table word 03514 0 04252 1 2616 a.d011 ind stpcnt 03515 0 04702 1 2617 a.d012 ind stpret 03516 0 04246 1 2618 a.d013 ind stpswd 03517 0 05224 1 2619 a.d014 ind swphic 03520 0 03717 1 2620 a.d015 ind sqovfl assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 93 preallocated buffer tables 2622 2623 preallocated chain table 2624 a pointer to the preallocated buffer pool. 2625 03521 000000 0 2626 pchtbl oct 000000 03522 000000 0 2627 oct 000000 03523 000000 0 2628 oct 000000 03524 000000 0 2629 oct 000000 03525 000000 0 2630 oct 000000 03526 000000 0 2631 oct 000000 03527 000000 0 2632 oct 000000 03530 000000 0 2633 oct 000000 2634 2635 preallocated chain left table 2636 the number of buffers in the preallocated chain 2637 03531 000000 0 2638 pchlft oct 000000 03532 000000 0 2639 oct 000000 03533 000000 0 2640 oct 000000 03534 000000 0 2641 oct 000000 03535 000000 0 2642 oct 000000 03536 000000 0 2643 oct 000000 03537 000000 0 2644 oct 000000 03540 000000 0 2645 oct 000000 2646 2647 preallocated buffer max count table 2648 03541 000000 0 2649 pbfmax oct 000000 03542 000000 0 2650 oct 000000 03543 000000 0 2651 oct 000000 03544 000000 0 2652 oct 000000 03545 000000 0 2653 oct 000000 03546 000000 0 2654 oct 000000 03547 000000 0 2655 oct 000000 03550 000000 0 2656 oct 000000 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 94 albchs - allocate buffer check 2658 ****************************************************************************** 2659 * 2660 * albchs - alocate buffer check 2661 * 2662 * this will check and allocate the preallocated buffer 2663 * chains for any high speed sync lines. 2664 * if no buffer can be allocated, 2665 * the icw switching code will handle it when the time comes 2666 * as an exhaust condition. 2667 * coded for switching icw problem by 2668 * d. w. cousins on march 24, 1981 2669 * 2670 ***************************************************************************** 03551 2671 albchs subr alb,(a,q,x1,x2,x3) end of binary card 00000054 03573 673 000 0 2672 ila 0 *set up index for table 03574 0332 00 0 2673 cax2 03575 422 010 0 2674 alb010 icmpa 8 *is it max yet 03576 0 74 037 3635 2675 tze albret-* *finish 03577 4 07 043 3642 2676 lda a.w003-*,* *(pbfmax,2) get max buffer for this line 03600 0 74 032 3632 2677 tze alb040-* *if zero no allocate 03601 0 17 036 3637 2678 sta pamax-* *store it temp for compare 03602 4 07 037 3641 2679 alb020 lda a.w002-*,* *(pchlft,2) number of buffer left 03603 0 27 034 3637 2680 cmpa pamax-* *compare number left to max 03604 0 74 026 3632 2681 tze alb040-* *already full 03605 0 65 025 3632 2682 tpl alb040-* *that all for now 03606 3332 00 0 2683 cx2a *calc the bufer size 03607 773 001 0 2684 iaa 1 03610 0336 05 0 2685 als 5 03611 6333 00 0 2686 caq *put it in q for getubf 03612 4 10 031 3643 2687 tsy a.w004-*,* *=getubf 03613 0 71 017 3632 2688 tra alb030-* *error no buffer 03614 3 07 001 0 2689 lda bf.siz,3 *get it real size 03615 2337 17 0 2690 arl 15 03616 0336 06 0 2691 als bufshf+1 03617 773 073 0 2692 iaa hbfnch 03620 3 72 001 0 2693 orsa bf.tly,3 03621 0 10 026 3647 2694 tsy adtopa-* *add it to the chain 2695 03622 2696 smeter mincd,.mbfpa,l.w002-* 2697 end of binary card 00000055 03631 0 71 751 3602 2698 tra alb020-* *go again 03632 2699 alb030 null *allocation failed it ok now 03632 273 001 0 2700 alb040 iacx2 1 *inc the counter for next buffer 03633 3332 00 0 2701 cx2a *get it to a for max test 03634 0 71 741 3575 2702 tra alb010-* *check again 03635 2703 albret return albchs 03637 2704 pamax bss 1 03640 2 03521 1 2705 a.w001 ind pchtbl,2 prellocated buffer chain 03641 2 03531 1 2706 a.w002 ind pchlft,2 number of buffer left in chain assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 95 albchs - allocate buffer check 03642 2 03541 1 2707 a.w003 ind pbfmax,2 max number of buffer in a chain 03643 0 22000 3 2708 a.w004 ind getubf get user buffer 03644 0 14000 3 2709 a.w005 ind frebuf free buffer 2710 03645 402000 0 2711 l.w001 vfd 18/sffhdl+sffbsc 03646 000001 0 2712 l.w002 dec 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 96 adtopa - add to preallocated chain 2714 *********************************************************************** 2715 * adtopa - add to preallocated chain 2716 * 2717 * this inhibited code adds a buffer to the 2718 * preallocated chain for a particular buffer size. 2719 * 2720 * x2 contains offset into buffer-size tables for the 2721 * given size. 2722 * 2723 * this is to help icw switching problem 2724 * coded by d. w. cousins on march 24, 1981 2725 * 2726 ********************************************************************* 03647 2727 adtopa subr adt,(x1,inh) 03661 4 07 757 3640 2728 lda a.w001-*,* (pchtbl,2) get head of chain 03662 0 74 005 3667 2729 tze adt020-* *may be finish 03663 4332 00 0 2730 adt010 cax1 *ok we got the address 03664 1 07 000 0 2731 lda bf.nxt,1 *get the next address 03665 0 74 004 3671 2732 tze adt030-* *good we arrive 03666 0 71 775 3663 2733 tra adt010-* *again 03667 4 50 751 3640 2734 adt020 stx3 a.w001-*,* *(pchtbl,2) store the address at the head 03670 0 71 002 3672 2735 tra adt040-* *all done 03671 1 50 000 0 2736 adt030 stx3 bf.nxt,1 *store it in the buffer 03672 4 76 747 3641 2737 adt040 aos a.w002-*,* *(pchlft,2) add one to number of buffer in chain 03673 2738 return adtopa *all done assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 97 dumsbf - dump store buffer 2740 ******************************************************************* 2741 * 2742 * dumsbf - dump store buffer 2743 * 2744 * icw switching stored the buffer address with the software 2745 * status in the sfcm for bsc and hdlc channels. this will dump it. 2746 * 2747 * written by d. w. cousins on april 13, 1981 for sicw problem 2748 * 2749 ******************************************************************* 2750 03675 2751 dumsbf subr dsf,(x2) end of binary card 00000056 03703 1 03 030 0 2752 ldx2 t.sfcm,1 *some basic check 03704 2 07 005 0 2753 lda sf.flg,2 03705 0 31 740 3645 2754 cana l.w001-* * (sffhdl+sffbsc) is it bsc or hdlc? 03706 0 74 005 3713 2755 tze dsfret-* *no 03707 473 000 0 2756 ilq 0 *going to tell frebuf to use buffer size 03710 0 41 006 3716 2757 ldx3 bftsa-* *get the buffer 03711 0 74 002 3713 2758 tze dsfret-* *zero buffer address 03712 4 10 732 3644 2759 tsy a.w005-*,* *=frebuf 03713 2760 dsfret return dumsbf 2761 03715 2762 bftx3 bss 1 03716 2763 bftsa bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 98 sqovfl - status queue overflow 03717 2765 sqovfl subr sqo(x2) 2766 2767 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2768 * 2769 * sqovfl 2770 * 2771 * finds the last status stored in the software 2772 * status queue and turns on the sqo bit. also, 2773 * takes the channel out of receive mode. 2774 * 2775 * upon entry: 2776 * x1 - virtual tib address 2777 * x2 - virtual sfcm address 2778 * 2779 * returns: 2780 * 2781 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2782 03725 2783 cmeter mincs,m.ssqo,l.d016-* 2784 03734 0 07 541 3475 2785 lda l.d012-* (=sffsqo) 03735 2 31 005 0 2786 cana sf.flg,2 status queue overflow pending ? 03736 0 64 024 3762 2787 tnz sqoret-* yes, done 03737 2 72 005 0 2788 orsa sf.flg,2 indicate status queue overflow 2789 03740 0 07 534 3474 2790 lda l.d011-* (=/pb.rcv) 03741 2 32 012 0 2791 ansa sf.pcw,2 turn off pcw rcv bit 03742 673 000 0 2792 ila p.nop get pcw nop command 03743 4 10 547 3512 2793 tsy a.d009-*,* (cioc) exit rcv mode 2794 end of binary card 00000057 03744 2 07 023 0 2795 lda sf.ssl,2 get length of status queue 03745 4336 04 0 2796 qls 4 in words 03746 0 17 016 3764 2797 sta sqosql-* 03747 3332 00 0 2798 cx2a put sfcm addr in a 03750 773 042 0 2799 iaa sf.waq get start of status queue addr 03751 2 27 001 0 2800 cmpa sf.nxa,2 next status at start of queue ? 03752 0 64 003 3755 2801 tnz sqo010-* no 03753 0 06 011 3764 2802 ada sqosql-* get end of queue addr 03754 0 71 002 3756 2803 tra sqo020-* 2804 03755 2805 sqo010 null 03755 2 07 001 0 2806 lda sf.nxa,2 get next status addr 2807 03756 2808 sqo020 null 03756 773 774 0 2809 iaa -4 back up to last status 03757 0332 00 0 2810 cax2 put in x2 2811 03760 673 010 0 2812 ila hs.sqo get status queue overflow bit 03761 2 72 000 0 2813 orsa 0,2 set sqo in last status 2814 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 99 sqovfl - status queue overflow 03762 2815 sqoret return sqovfl 2816 03764 2817 sqosql bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 100 hstprc - hsla status processor 03765 2819 hstprc null transfered to by secondary dispatcher 2820 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2821 * 2822 * hstprc 2823 * 2824 * this routine is the main guts of hsla_man. 2825 * it is the scheduled status processor, which processes 2826 * the status queued for it by hintr, the interrupt 2827 * handling routine. all queued status for a line is processed 2828 * by hstprc before it returns. some of this processing 2829 * may result in the dcw interpreter or the control 2830 * table interpreter being called. 2831 * 2832 * upon entry: 2833 * x1 - real tib address 2834 * 2835 * returns: 2836 * 2837 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2838 03765 2332 00 0 2839 cx1a get real tib address in a 03766 0 17 266 4254 2840 sta stptib-* save for use with dspqur and trace 03767 4 10 524 3513 2841 tsy a.d010-*,* (setptw) virtualize real tib address 03770 4332 00 0 2842 cax1 virtual tib address goes in x1 03771 1 03 030 0 2843 ldx2 t.sfcm,1 get virtual sfcm address 2844 03772 2 07 023 0 2845 lda sf.ssl,2 figure out current number of pending status 03773 2 26 003 0 2846 sba sf.tly,2 to meter it 03774 4 17 520 3514 2847 sta a.d011-*,* (stpcnt) 03775 2848 cmeter mupdat,m.nst,(a.d011-*(*)) 2849 04004 2 07 003 0 2850 lda sf.tly,2 get queue tally 04005 2 27 023 0 2851 cmpa sf.ssl,2 is it at max? 04006 4 74 323 4331 2852 tze a.e019-*,* (stp210) yes, no work to be done here 2853 04007 4 56 505 3514 2854 stz a.d011-*,* (stpcnt) zero status processed counter 2855 04010 4 76 504 3514 2856 stp010 aos a.d011-*,* (stpcnt) bump counter of number processed 04011 4 07 503 3514 2857 lda a.d011-*,* (stpcnt) get counter value end of binary card 00000058 04012 422 003 0 2858 icmpa 3 have we done to many in a row? 04013 0 75 006 4021 2859 tmi stp015-* no 2860 04014 0 43 240 4254 2861 ldx1 stptib-* yes. get real tib address 04015 673 006 0 2862 ila hpri get default scheduling priority 04016 0 47 433 3451 2863 ldq intskd-*+1 (=hstprc) get addr of status processor 04017 4 10 464 3503 2864 tsy a.d002-*,* (=dspqur) reschedule status processor 04020 4 71 475 3515 2865 tra a.d012-*,* (=stpret) done for now 2866 04021 4 10 314 4335 2867 stp015 tsy a.e023-*,* (=albchs) 04022 6 04 002 0 2868 ldaq sf.nxp,2* pick up the next status to be processed assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 101 hstprc - hsla status processor 04023 4 14 473 3516 2869 staq a.d013-*,* (=stpswd) save it away 04024 2 41 002 0 2870 ldx3 sf.nxp,2 *get address of current status 04025 3 07 002 0 2871 lda 2,3 *get the buffer address 04026 0 17 670 3716 2872 sta bftsa-* *store it now 04027 0 50 666 3715 2873 stx3 bftx3-* *save the address to it 04030 2874 trace tt.sta,ts.sta,(stptib,stpswd,stpswd+1) 2875 04046 2 76 003 0 2876 aos sf.tly,2 increment the tally 04047 673 004 0 2877 ila 4 and also the next ptr 04050 2 16 002 0 2878 asa sf.nxp,2 to the status q 2879 04051 2 07 023 0 2880 lda sf.ssl,2 get size of status queue 04052 0336 02 0 2881 als 2 in words 04053 0 17 203 4256 2882 sta stpsql-* 04054 3332 00 0 2883 cx2a put x2 into a 04055 773 042 0 2884 iaa sf.waq get ptr to end of queue 04056 0 06 200 4256 2885 ada stpsql-* 04057 2 27 002 0 2886 cmpa sf.nxp,2 are we at the end? 04060 0 64 004 4064 2887 tnz stp020-* no, continue 2888 04061 3332 00 0 2889 cx2a put sfcm into a again end of binary card 00000059 04062 773 042 0 2890 iaa sf.waq make ptr to head of queue 04063 2 17 002 0 2891 sta sf.nxp,2 and reset ptr, wraping queue 2892 04064 0 56 167 4253 2893 stp020 stz stpmrk-* init saved status 04065 0 07 161 4246 2894 lda stpswd-* get the first word of status 04066 0 31 171 4257 2895 cana l.e001-* (=hs.rcs) input status? 04067 4 74 243 4332 2896 tze a.e020-*,* (=stp100) no, output status assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 102 hstprc - hsla status processor 2898 input status processor 2899 04070 1 07 000 0 2900 lda t.stat,1 04071 0 34 173 4264 2901 ana l.e006-* (tsfst+tsfmrk+tsftrm) isolate requested status 04072 0 17 161 4253 2902 sta stpmrk-* save it for later 04073 322 777 0 2903 iera -1 04074 1 32 000 0 2904 ansa t.stat,1 turn off the tib flags 2905 04075 0 07 152 4247 2906 lda stpswd+1-* get the 2nd status word 04076 2337 01 0 2907 arl 1 line up with tib rcv status bit 04077 1 37 000 0 2908 ora t.stat,1 or in tib status 04100 0 34 160 4260 2909 ana l.e002-* (=tsfrcv) leave only that, rcv mode? 04101 0 64 010 4111 2910 tnz stp030-* yes, continue 2911 04102 4 10 205 4307 2912 tsy a.e001-*,* (=dmpbuf) dump any input buffers 04103 0 10 572 3675 2913 tsy dumsbf-* dump tempory store buffer 2914 04104 0 07 142 4246 2915 lda stpswd-* get the first word of status 04105 0 31 160 4265 2916 cana l.e007-* (=hs.dss) any data set status changes? 04106 0 74 356 4464 2917 tze stp080-* no, skip rest of hardware status 2918 04107 4 10 210 4317 2919 tsy a.e009-*,* (=ipdss) process the data set changes 2920 04110 4 71 226 4336 2921 tra a.e024-*,* (stp095) 2922 04111 0 07 135 4246 2923 stp030 lda stpswd-* get the status word 04112 0337 14 0 2924 ars 12 shift into line with the other bit 04113 2 35 005 0 2925 era sf.flg,2 x-or the other one in 04114 222 002 0 2926 icana sffcii are the two bits the same? 04115 0 74 026 4143 2927 tze stp040-* yes, all ok 2928 04116 2 07 005 0 2929 lda sf.flg,2 *must check for bsc and hdlc 04117 0 31 155 4274 2930 cana l.e014-* *(sffhdl+sffbsc) bsc or hdlc? already got buffer 04120 0 64 023 4143 2931 tnz stp040-* 2932 04121 2933 trace tt.ira,ts.sta,(stptib) trace recovery try 2934 end of binary card 00000060 04131 2 41 006 0 2935 ldx3 sf.ib0,2 get ptr to first input buffer 04132 2 07 005 0 2936 lda sf.flg,2 get sfcm flag bits 04133 222 002 0 2937 icana sffcii are we in alt buffer? 04134 0 74 002 4136 2938 tze 2 no 04135 2 41 007 0 2939 ldx3 sf.ib1,2 get it here 2940 04136 373 000 0 2941 iacx3 0 any buffer? 04137 0 74 002 4141 2942 tze stp035-* no buffer 2943 04140 4 10 163 4323 2944 tsy a.e013-*,* (=ipterm) simulate terminate interrupt 2945 04141 673 002 0 2946 stp035 ila sffcii get bit 04142 2 62 005 0 2947 ersa sf.flg,2 invert it, we are right now? assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 103 hstprc - hsla status processor 2948 04143 2 07 005 0 2949 stp040 lda sf.flg,2 *check line type 04144 0 31 130 4274 2950 cana l.e014-* *(sffhdl+sffbsc) is it bsc or hdlc? 04145 0 74 006 4153 2951 tze stp045-* *no 04146 0 07 100 4246 2952 lda stpswd-* switched icws? 04147 0 31 137 4306 2953 cana l.e024-* =hs.siw 04150 0 74 003 4153 2954 tze stp045-* no, buffer isn't stored with status 04151 0 41 545 3716 2955 ldx3 bftsa-* *load the buffer address 04152 0 71 006 4160 2956 tra stp050-* *go to next step 04153 2 41 006 0 2957 stp045 ldx3 sf.ib0,2 get primary buffer prt 04154 2 07 005 0 2958 lda sf.flg,2 get the sfcm flags 04155 222 002 0 2959 icana sffcii alternate icw? 04156 0 74 002 4160 2960 tze stp050-* no, continue 04157 2 41 007 0 2961 ldx3 sf.ib1,2 get the secondary buf ptr 2962 04160 0 50 070 4250 2963 stp050 stx3 stpbuf-* indicate which buffer 04161 373 000 0 2964 iacx3 0 zero buffer address ? 04162 0 64 005 4167 2965 tnz stp051-* no 04163 0 07 115 4300 2966 lda l.e018-* get mask for status word 0 04164 0 32 062 4246 2967 ansa stpswd-* turn off bits that imply a buffer 04165 0 07 114 4301 2968 lda l.e019-* get mask for status word 1 04166 0 32 061 4247 2969 ansa stpswd+1-* turn off bits that imply a buffer 2970 04167 0 07 105 4274 2971 stp051 lda l.e014-* (=sffbsc+sffhdl) 04170 2 31 005 0 2972 cana sf.flg,2 is it bisync or hdlc? 04171 0 74 234 4425 2973 tze stp060-* no 2974 2975 check bisync and hdlc status conditions 2976 04172 0 07 054 4246 2977 stp052 lda stpswd-* get first status word 04173 0 31 072 4265 2978 cana l.e007-* (=hs.dss), data set status change? 04174 0 74 002 4176 2979 tze 2 no 04175 4 10 122 4317 2980 tsy a.e009-*,* (=ipdss), process it first 2981 04176 0 07 050 4246 2982 lda stpswd-* *load status word 04177 0 31 063 4262 2983 cana l.e004-* =hs.siw end of binary card 00000061 04200 0 74 004 4204 2984 tze stp053-* *not switching yet 04201 0 41 515 3716 2985 ldx3 bftsa-* *load the buffer address 04202 0 74 002 4204 2986 tze stp053-* *no buffer get out 04203 4 10 122 4325 2987 tsy a.e015-*,* *(=ipbfsw) switch buffers 2988 04204 0 56 045 4251 2989 stp053 stz stptra-* zero status accumulation 04205 0 07 100 4305 2990 lda l.e023-* (=sffhdl) 04206 2 31 005 0 2991 cana sf.flg,2 hdlc line? 04207 0 64 005 4214 2992 tnz stp05a-* yes 2993 04210 0 41 116 4326 2994 ldx3 a.e016-* get bsc status map ptr 04211 0 07 116 4327 2995 lda a.e017-* get bsc status map end ptr 04212 0 17 043 4255 2996 sta stpend-* save it 04213 0 71 004 4217 2997 tra stp05b-* assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 104 hstprc - hsla status processor 2998 04214 0 41 117 4333 2999 stp05a ldx3 a.e021-* get hdlc status map ptr 04215 0 07 117 4334 3000 lda a.e022-* get hdlc status map end ptr 04216 0 17 037 4255 3001 sta stpend-* save it 3002 04217 0 07 027 4246 3003 stp05b lda stpswd-* get first status word 04220 3 31 000 0 3004 stp054 cana 0,3 isolate interesting bits 04221 0 64 010 4231 3005 tnz stp057-* if on, set them 3006 04222 373 002 0 3007 stp056 iacx3 2 bump table ptr 04223 0 61 032 4255 3008 cmpx3 stpend-* end of table ? 04224 0 74 012 4236 3009 tze stp058-* yes 3010 04225 3 20 000 0 3011 szn 0,3 switch words ? 04226 0 64 772 4220 3012 tnz stp054-* not yet 3013 04227 0 07 020 4247 3014 lda stpswd+1-* get second status word 04230 0 71 772 4222 3015 tra stp056-* 3016 04231 6333 00 0 3017 stp057 caq save status word 04232 3 07 001 0 3018 lda 1,3 get status bits 04233 0 72 016 4251 3019 orsa stptra-* turn them on 04234 7333 00 0 3020 cqa restore status word 04235 0 71 765 4222 3021 tra stp056-* 3022 04236 0 07 013 4251 3023 stp058 lda stptra-* check for any new status bits 04237 0 74 225 4464 3024 tze stp080-* none - try usual case 3025 04240 1 07 000 0 3026 lda t.stat,1 get tib status flags 04241 022 017 0 3027 iana s.dss leave only common bits 04242 0 37 007 4251 3028 ora stptra-* add interesting bits 04243 4 10 047 4312 3029 tsy a.e004-*,* (=istat) call interp to process status 04244 0 71 212 4456 3030 tra stp075-* continue 3031 04245 233100 0 04246 3032 even 04246 3033 stpswd bss 2 save area for status word 04250 3034 stpbuf bss 1 ptr to current buffer 04251 3035 stptra bss 1 addr of routine to run 04252 3036 stpcnt bss 1 count of processed status this call 04253 3037 stpmrk bss 1 saved copy of tsfst+tsfmrk+tsftrm 04254 3038 stptib bss 1 saved value of real tib address 04255 3039 stpend bss 1 set to bscend or hdcend 04256 3040 stpsql bss 1 length of software status queue 3041 3042 3043 end of binary card 00000062 04257 400000 0 3044 l.e001 vfd 18/hs.rcs 04260 000200 0 3045 l.e002 vfd 18/tsfrcv 04261 777757 0 3046 l.e003 vfd o18//tsfst assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 105 hstprc - hsla status processor 04262 010000 0 3047 l.e004 vfd 18/hs.siw 04263 000140 0 3048 l.e005 vfd 18/tsfmrk+tsftrm 04264 000160 0 3049 l.e006 vfd 18/tsfst+tsfmrk+tsftrm 04265 000200 0 3050 l.e007 vfd 18/hs.dss 04266 010000 0 3051 l.e008 vfd o18/010000 04267 000400 0 3052 l.e009 vfd 18/sffstp 04270 200000 0 3053 l.e010 vfd 18/hs.nms 04271 002000 0 3054 l.e011 vfd 18/hs.ptr 04272 000020 0 3055 l.e012 vfd 18/tsfst 04273 773777 0 3056 l.e013 vfd o18//sffsqo 04274 402000 0 3057 l.e014 vfd 18/sffhdl+sffbsc 04275 000400 0 3058 l.e015 vfd 18/hs.rcv 04276 000200 0 3059 l.e016 vfd 18/hs.xmt 04277 020000 0 3060 l.e017 vfd 18/s.xte 04300 434777 0 3061 l.e018 vfd o18//hs.nms*/hs.dms*/hs.trm*/hs.ptr*/hs.per 04301 776773 0 3062 l.e019 vfd o18//hs.rbt*/hs.crc 04302 001000 0 3063 l.e020 vfd 18/hs.per 04303 010000 0 3064 l.e021 vfd 18/s.prty 04304 400000 0 3065 l.e022 vfd 18/tfosus 04305 400000 0 3066 l.e023 vfd 18/sffhdl 04306 010000 0 3067 l.e024 vfd 18/hs.siw 3068 04307 0 04703 1 3069 a.e001 ind dmpbuf 04310 0 04337 1 3070 a.e002 ind istats 04311 0 04353 1 3071 a.e003 ind iends 04312 0 06000 3 3072 a.e004 ind istat 04313 0 04353 1 3073 a.e005 ind ostats 04314 0 04361 1 3074 a.e006 ind oends 04315 0 00012 1 3075 a.e007 ind hdcw 04316 0 27000 3 3076 a.e008 ind secdsp 04317 0 05462 1 3077 a.e009 ind ipdss 04320 0 05375 1 3078 a.e010 ind ipptro 04321 0 05550 1 3079 a.e011 ind dssflg 04322 0 06553 1 3080 a.e012 ind echock 04323 0 05116 1 3081 a.e013 ind ipterm 04324 0 06740 1 3082 a.e014 ind opptro 04325 0 05206 1 3083 a.e015 ind ipbfsw end of binary card 00000063 04326 0 04361 1 3084 a.e016 ind bscsts 04327 0 04405 1 3085 a.e017 ind bscend 04330 0 04010 1 3086 a.e018 ind stp010 04331 0 04654 1 3087 a.e019 ind stp210 04332 0 04557 1 3088 a.e020 ind stp100 04333 0 04405 1 3089 a.e021 ind hdcsts 04334 0 04425 1 3090 a.e022 ind hdcend 04335 0 03551 1 3091 a.e023 ind albchs 04336 0 04515 1 3092 a.e024 ind stp095 3093 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 106 status lookup tables for hstprc 3095 3096 input status table 3097 04337 3098 istats stats hs.tro,iptro 04341 3099 stats hs.trm,ipterm 04343 3100 stats hs.nms,ipmark 04345 3101 stats hs.ptr,ipptro 04347 3102 stats hs.xte,ipxte 04351 3103 stats hs.dss,ipdss 004353 3104 iends equ * 3105 3106 output status table 3107 04353 3108 ostats stats hs.ptr,opptro 04355 3109 stats hs.tro,optro 04357 3110 stats hs.xte,opxte 004361 3111 oends equ * 3112 3113 table to map bisync status to wait block status 3114 04361 3115 bscsts smap hs.trm,s.brch 04363 3116 smap hs.nms,s.bmk 04365 3117 smap hs.dms,s.bdmk 04367 3118 smap hs.xte,s.xte 04371 3119 smap hs.per,s.prty 04373 3120 smap hs.tro,s.xte 04375 3121 smap 0,0 end of binary card 00000064 04377 3122 smap hs.rbt,s.rbt 04401 3123 smap hs.crc,s.prty 04403 3124 smap hs.rto,s.rto 004405 3125 bscend equ * 3126 3127 table to map hdlc status to wait block status 3128 04405 3129 hdcsts smap hs.tro,s.exh 04407 3130 smap hs.isd,s.isd 04411 3131 smap hs.xte,s.xte 04413 3132 smap hs.fce,s.fcse 04415 3133 smap hs.rab,s.rabt 04417 3134 smap 0,0 04421 3135 smap hs.byt,s.pbyt 04423 3136 smap hs.rbt,s.rbt 004425 3137 hdcend equ * assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 107 hstprc - hsla status processor 04425 0 07 621 4246 3140 stp060 lda stpswd-* get status word 04426 0 31 654 4302 3141 cana l.e020-* (=hs.per) parity error ? 04427 0 74 005 4434 3142 tze stp062-* no 3143 04430 1 07 000 0 3144 lda t.stat,1 get tib status 04431 022 017 0 3145 iana s.dss leave only interesting bits 04432 0 37 651 4303 3146 ora l.e021-* (=s.prty) set parity error status 04433 4 10 657 4312 3147 tsy a.e004-*,* (=istat) call interpreter 3148 04434 0 41 654 4310 3149 stp062 ldx3 a.e002-* (=istats) get status table ptr 04435 0 07 611 4246 3150 lda stpswd-* get the status word 04436 3 31 000 0 3151 stp065 cana 0,3 is this status bit on? 04437 0 64 005 4444 3152 tnz stp070-* yes, call that routine 3153 04440 373 002 0 3154 iacx3 2 bump the ptr to next entry 04441 0 61 650 4311 3155 cmpx3 a.e003-* (=iends) end of table? 04442 0 64 774 4436 3156 tnz stp065-* no, continue loop 3157 04443 0 71 021 4464 3158 tra stp080-* continue status processing 3159 end of binary card 00000065 04444 3 07 001 0 3160 stp070 lda 1,3 get the routine to call 04445 0 17 604 4251 3161 sta stptra-* save this addr 04446 0 41 602 4250 3162 ldx3 stpbuf-* get pointer to the current buffer 04447 4 10 602 4251 3163 tsy stptra-*,* go call that routine 3164 04450 0 07 576 4246 3165 lda stpswd-* get status word 04451 0 31 617 4270 3166 cana l.e010-* (=hs.nms) was it marker status? 04452 0 74 004 4456 3167 tze stp075-* no, continue 3168 04453 0 31 616 4271 3169 cana l.e011-* (=hs.ptr) ptro status also? 04454 0 74 002 4456 3170 tze stp075-* no 3171 04455 4 10 643 4320 3172 tsy a.e010-*,* (=ipptro) process the ptro 3173 04456 0 07 570 4246 3174 stp075 lda stpswd-* get the status word 04457 0 31 603 4262 3175 cana l.e004-* (=hs.siw) switching icw's? 04460 0 74 035 4515 3176 tze stp095-* no, continue 3177 04461 673 002 0 3178 ila sffcii get the icw indicator bit 04462 2 62 005 0 3179 ersa sf.flg,2 and flip the bit in flag word 04463 0 71 032 4515 3180 tra stp095-* finish the status processing 3181 04464 0 07 603 4267 3182 stp080 lda l.e009-* (=sffstp) get the stop channel bit 04465 2 31 005 0 3183 cana sf.flg,2 did we just reset xmit mode? 04466 0 74 011 4477 3184 tze stp090-* no, done 3185 04467 322 777 0 3186 iera -1 invert the bit 04470 2 32 005 0 3187 ansa sf.flg,2 and turn it off in the sfcm 3188 04471 2 56 010 0 3189 stz sf.ob0,2 zero ptrs in case we assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 108 hstprc - hsla status processor 04472 2 56 011 0 3190 stz sf.ob1,2 just did a stop channel 3191 04473 2 41 000 0 3192 ldx3 sf.hcm,2 get ptr to hwcm 04474 0 07 572 4266 3193 lda l.e008-* (=010000) get the exhaust bit 04475 3 17 005 0 3194 sta h.sic0+1,3 store in both icws to 04476 3 17 007 0 3195 sta h.sic1+1,3 make sure hsla does not use again 3196 04477 0 07 547 4246 3197 stp090 lda stpswd-* get the status word 04500 0 31 562 4262 3198 cana l.e004-* (=hs.siw) are we switching icw's? 04501 0 74 003 4504 3199 tze stp092-* no, continue 3200 04502 673 002 0 3201 ila sffcii get the icw bit 04503 2 62 005 0 3202 ersa sf.flg,2 invert it now 3203 04504 2 07 005 0 3204 stp092 lda sf.flg,2 get sfcm flag bits 04505 222 100 0 3205 icana sffech is echo in progress now? 04506 0 64 007 4515 3206 tnz stp095-* yes, skip it 3207 04507 2 07 012 0 3208 lda sf.pcw,2 get pcw bits 04510 222 200 0 3209 icana pb.xmt are we in xmit mode? 04511 0 64 004 4515 3210 tnz stp095-* yes, can't echo now 3211 04512 4 10 610 4322 3212 tsy a.e012-*,* (=echock) check about echoing now end of binary card 00000066 04513 0 71 002 4515 3213 tra stp095-* win, we started to echo 04514 0 71 001 4515 3214 tra stp095-* but who cares anyway. 3215 04515 0 07 536 4253 3216 stp095 lda stpmrk-* any requested status? 04516 0 74 120 4636 3217 tze stp200-* no, continue 04517 0 31 544 4263 3218 cana l.e005-* (=tsfmrk+tsftrm) marker or terminate? 04520 0 74 026 4546 3219 tze stp096-* no 3220 3221 * only do terminate and/or marker status if hardware status agrees 3222 * with tib status with respect to recieve and transmit modes 3223 04521 1 07 000 0 3224 lda t.stat,1 pick up tib status 04522 0336 01 0 3225 als 1 line up tib rcv bit with hw rcv bit 04523 0 35 524 4247 3226 era stpswd+1-* get xor of rcv bits 04524 0 34 551 4275 3227 ana l.e015-* (=hs.rcv) isolate result 04525 0 64 021 4546 3228 tnz stp096-* bits were different 04526 1 07 000 0 3229 lda t.stat,1 get tib status bits again 04527 0337 01 0 3230 ars 1 line up xmt bits 04530 0 35 517 4247 3231 era stpswd+1-* 04531 0 34 545 4276 3232 ana l.e016-* isolate xor of xmt bits 04532 0 64 014 4546 3233 tnz stp096-* bits were different 3234 04533 1 07 000 0 3235 lda t.stat,1 get tib status 04534 022 017 0 3236 iana s.dss but only the ones we want 04535 0 37 516 4253 3237 ora stpmrk-* get requested status bits 04536 0 34 523 4261 3238 ana l.e003-* (=/tsfst) but turn off this one 04537 6333 00 0 3239 caq save status bits assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 109 hstprc - hsla status processor 04540 0 07 523 4263 3240 lda l.e005-* (=tsfmrk+tsftrm) 04541 322 777 0 3241 iera -1 invert bits 04542 0 32 511 4253 3242 ansa stpmrk-* turn off marker and terminate 04543 7333 00 0 3243 cqa get saved status back in a 3244 04544 4 10 546 4312 3245 tsy a.e004-*,* (=istat) call intrp to process status 04545 0 71 071 4636 3246 tra stp200-* done with rcv status 3247 04546 0 07 505 4253 3248 stp096 lda stpmrk-* 04547 0 31 523 4272 3249 cana l.e012-* (=tsfst) requested status? 04550 0 74 066 4636 3250 tze stp200-* no, all done with status 3251 04551 0 07 521 4272 3252 lda l.e012-* (=tsfst) get the bit 04552 322 777 0 3253 iera -1 invert it 04553 0 32 500 4253 3254 ansa stpmrk-* turn it off 3255 04554 4 76 545 4321 3256 aos a.e011-*,* (=dssflg) set flag to ipdss 3257 to indicate requested status 04555 4 10 542 4317 3258 tsy a.e009-*,* (=ipdss) process status 04556 0 71 060 4636 3259 tra stp200-* done assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 110 hstprc - hsla status processor 3261 output status processor 3262 04557 0 07 467 4246 3263 stp100 lda stpswd-* get the status word 04560 0337 13 0 3264 ars 11 align the icw bits 04561 2 35 005 0 3265 era sf.flg,2 leave only the one we want end of binary card 00000067 04562 222 004 0 3266 icana sffcoi should not be on! 04563 0 74 024 4607 3267 tze stp105-* good, all ok 3268 04564 3269 trace tt.ira,ts.sta,(stptib) trace recovery try 3270 04574 2 41 010 0 3271 ldx3 sf.ob0,2 recover output buffers 04575 2 07 005 0 3272 lda sf.flg,2 get flags 04576 222 004 0 3273 icana sffcoi alt output bfr? 04577 0 74 002 4601 3274 tze 2 no 04600 2 41 011 0 3275 ldx3 sf.ob1,2 yes, get it 3276 04601 373 000 0 3277 iacx3 0 set indicators 04602 0 74 003 4605 3278 tze stp101-* no buffer 3279 04603 4 10 521 4324 3280 tsy a.e014-*,* (=opptro) simulate ptro on buffer 04604 0 71 003 4607 3281 tra stp105-* it flipped indicator for us 3282 04605 673 004 0 3283 stp101 ila sffcoi get bit 04606 2 62 005 0 3284 ersa sf.flg,2 flip it 3285 04607 2 41 010 0 3286 stp105 ldx3 sf.ob0,2 get the current output buffer ptr 04610 2 07 005 0 3287 lda sf.flg,2 get the sfcm flags 04611 222 004 0 3288 icana sffcoi are we using alternate icw? 04612 0 74 002 4614 3289 tze stp110-* no, primary in use 04613 2 41 011 0 3290 ldx3 sf.ob1,2 get the alternate buf ptr 3291 04614 0 50 434 4250 3292 stp110 stx3 stpbuf-* save the buffer ptr 04615 0 41 476 4313 3293 ldx3 a.e005-* (=ostats) get ptr to table of status 3294 04616 0 07 430 4246 3295 stp120 lda stpswd-* get the status word 04617 3 31 000 0 3296 cana 0,3 is this bit on? 04620 0 64 012 4632 3297 tnz stp130-* yes, call routine 3298 04621 373 002 0 3299 iacx3 2 increment ptr 04622 0 61 472 4314 3300 cmpx3 a.e006-* (=oends) end of table? 04623 0 64 773 4616 3301 tnz stp120-* no, loop more 3302 04624 0 07 422 4246 3303 lda stpswd-* get status word 04625 0 31 435 4262 3304 cana l.e004-* (=hs.siw) are we switching send icw's? 04626 0 74 003 4631 3305 tze 3 skip if not 04627 673 004 0 3306 ila sffcoi get bit end of binary card 00000068 04630 2 62 005 0 3307 ersa sf.flg,2 flip it 04631 0 71 005 4636 3308 tra stp200-* yes, all done 3309 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 111 hstprc - hsla status processor 04632 3 07 001 0 3310 stp130 lda 1,3 get addr of routine to call 04633 0 17 416 4251 3311 sta stptra-* save it 04634 0 41 414 4250 3312 ldx3 stpbuf-* get buffer addr 04635 4 10 414 4251 3313 tsy stptra-*,* go to routine 3314 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 112 hstprc - hsla status processor 04636 673 010 0 3316 stp200 ila hs.sqo 04637 0 31 407 4246 3317 cana stpswd-* status queue overflow ? 04640 0 74 007 4647 3318 tze stp205-* no 3319 04641 0 07 432 4273 3320 lda l.e013-* (=/sffsqo) 04642 2 32 005 0 3321 ansa sf.flg,2 turn off status queue overflow flag 3322 04643 1 07 000 0 3323 lda t.stat,1 get tib status bits 04644 022 017 0 3324 iana s.dss but only the ones we want 04645 0 37 432 4277 3325 ora l.e017-* (=s.xte) set xte status 04646 4 10 444 4312 3326 tsy a.e004-*,* (=istat) call interpreter 3327 04647 0 07 404 4253 3328 stp205 lda stpmrk-* in case requested status not performed 04650 1 72 000 0 3329 orsa t.stat,1 put back for next time 04651 2 07 003 0 3330 lda sf.tly,2 get the wrap around queue tally 04652 2 27 023 0 3331 cmpa sf.ssl,2 is queue empty? 04653 4 64 455 4330 3332 tnz a.e018-*,* (stp010) no, more status to be processed 3333 04654 673 001 0 3334 stp210 ila sffskd get the scked flag 04655 322 777 0 3335 iera -1 invert it 04656 2 32 005 0 3336 ansa sf.flg,2 and store it into sfcm 3337 04657 2 07 003 0 3338 lda sf.tly,2 tally still at max? 04660 2 27 023 0 3339 cmpa sf.ssl,2 well? 04661 4 64 447 4330 3340 tnz a.e018-*,* (=stp010) nope, process more status 04662 2 56 014 0 3341 stz sf.rct,2 zero sqo repeat count 3342 04663 4 07 153 5036 3343 lda a.f008-*,* (=stpswd) get the status word 04664 0 31 141 5025 3344 cana l.f008-* (=hs.rcs) is this receive status? 04665 0 74 015 4702 3345 tze stpret-* nope, done 3346 04666 2 07 010 0 3347 lda sf.ob0,2 are both of the output buffers 04667 2 06 011 0 3348 ada sf.ob1,2 gone yet? 04670 0 64 012 4702 3349 tnz stpret-* nope, done 3350 04671 1 07 001 0 3351 lda t.flg,1 is output suspended? 04672 0 31 412 4304 3352 cana l.e022-* =tfosus 04673 0 64 007 4702 3353 tnz stpret-* yes, we'l pick up rest of dcw list later 3354 04674 0 07 411 4305 3355 lda l.e023-* (=sffhdl) 04675 2 31 005 0 3356 cana sf.flg,2 skip this for hdlc lines 04676 0 64 004 4702 3357 tnz stpret-* 3358 end of binary card 00000069 04677 1 07 024 0 3359 lda t.dcwl,1 is there a dcw list? 04700 0 74 002 4702 3360 tze stpret-* nope, done 3361 04701 4 10 414 4315 3362 tsy a.e007-*,* (=hdcw) call the dcw list processor 3363 04702 4 71 414 4316 3364 stpret tra a.e008-*,* (=secdsp) return to secondary dispatcher 3365 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 113 hstprc - hsla status processor 3366 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 114 dmpbuf - proc to dump input buffers when we exit rcv 04703 3368 dmpbuf subr dmp,(x1,x2,x3) 3369 3370 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3371 * 3372 * dmpbuf 3373 * 3374 * proc to dump the input buffers when we leave 3375 * receive mode. if there is any input in the current 3376 * input buffer, we will chain it onto the input 3377 * chain, otherwise we will just free the buffers. 3378 * 3379 * upon entry: 3380 * x1 - virtual tib address 3381 * x2 - virtual sfcm address 3382 * 3383 * returns: 3384 * 3385 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3386 04717 2 07 006 0 3387 lda sf.ib0,2 look to see if the buffers 04720 2 06 007 0 3388 ada sf.ib1,2 are already gone. 04721 0 74 051 4772 3389 tze dmpret-* yes, all done 3390 04722 4 10 110 5032 3391 tsy a.f004-*,* (=gettly) get current buffer tally & addr 04723 0 17 072 5015 3392 sta dmptmp-* save buffer tally 04724 3333 00 0 3393 cx3a is there a buffer ? 04725 0 74 034 4761 3394 tze dmp050-* no, skip null buffer 04726 2 07 005 0 3395 lda sf.flg,2 synchronous line? 04727 0 31 074 5023 3396 cana l.f006-* sffsyn 04730 0 74 005 4735 3397 tze dmp010-* no 04731 3333 00 0 3398 cx3a yes, back to beginning of buffer 04732 0 26 072 5024 3399 sba l.f007-* bf.dta,b.0 04733 4333 00 0 3400 cax3 04734 0 71 004 4740 3401 tra dmp020-* 04735 3402 dmp010 null asynchronous pseudo-buffer 04735 3333 00 0 3403 cx3a just wipe out char. addressing 04736 0 34 060 5016 3404 ana l.f001-* =o077777 04737 4333 00 0 3405 cax3 04740 0 20 055 5015 3406 dmp020 szn dmptmp-* zero tally? 04741 0 74 017 4760 3407 tze dmp040-* yes, free buffer 3408 04742 2 07 005 0 3409 lda sf.flg,2 synchronous? 04743 0 31 060 5023 3410 cana l.f006-* =sffsyn 04744 0 64 004 4750 3411 tnz dmp030-* yes, copy to input chain 04745 4 10 064 5031 3412 tsy a.f003-*,* (=scan) else scan chars 04746 2 56 021 0 3413 stz sf.nic,2 make sure next scan starts clean end of binary card 00000070 04747 0 71 011 4760 3414 tra dmp040-* scan took care of copying to input chain 3415 04750 0 07 047 5017 3416 dmp030 lda l.f002-* (=buftmk) get tally mask 04751 322 777 0 3417 iera -1 invert mask assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 115 dmpbuf - proc to dump input buffers when we exit rcv 04752 3 32 001 0 3418 ansa bf.tly,3 zero tally field 04753 0 07 042 5015 3419 lda dmptmp-* get back buffer tally 04754 3 72 001 0 3420 orsa bf.tly,3 put tally in buffer 3421 04755 4 10 053 5030 3422 tsy a.f002-*,* (=parity) strip off parity bits 3423 04756 4 10 055 5033 3424 tsy a.f005-*,* (=ichain) put buffer on input chain 04757 0 71 002 4761 3425 tra dmp050-* free second buffer 3426 04760 0 10 014 4774 3427 dmp040 tsy fribuf-* 3428 04761 2 61 006 0 3429 dmp050 cmpx3 sf.ib0,2 primary buffer addr in x3 ? 04762 0 74 003 4765 3430 tze 3 yes 04763 2 41 006 0 3431 ldx3 sf.ib0,2 no, get primary buffer addr 04764 0 71 002 4766 3432 tra 2 04765 2 41 007 0 3433 ldx3 sf.ib1,2 get alt. buffer addr 04766 0 74 002 4770 3434 tze dmp060-* skip null buffer 04767 0 10 005 4774 3435 tsy fribuf-* free the buffer 3436 04770 2 56 006 0 3437 dmp060 stz sf.ib0,2 zero the buffer ptrs 04771 2 56 007 0 3438 stz sf.ib1,2 3439 04772 3440 dmpret return dmpbuf all done 3441 3442 3443 3444 04774 3445 fribuf subr fri,(x3) free an input buffer for dmpbuf 3446 05002 2 07 005 0 3447 lda sf.flg,2 synchronous? 05003 0 31 020 5023 3448 cana l.f006-* =sffsyn 05004 0 64 005 5011 3449 tnz fri010-* yes, use frebuf 05005 3 47 000 0 3450 ldq 0,3 else get size out of buffer 05006 6337 11 0 3451 qrl 9 05007 4 10 026 5035 3452 tsy a.f007-*,* fremem 05010 0 71 003 5013 3453 tra fribak-* 3454 05011 473 000 0 3455 fri010 ilq 0 let frebuf determine size 05012 4 10 015 5027 3456 tsy a.f001-*,* frebuf 05013 3457 fribak return fribuf 3458 3459 05015 3460 dmptmp bss 1 3461 3462 end of binary card 00000071 05016 077777 0 3463 l.f001 oct 077777 05017 000777 0 3464 l.f002 vfd 18/buftmk 05020 007000 0 3465 l.f003 vfd 18/tflfec+tfcrec+tftbec 05021 000200 0 3466 l.f004 vfd 18/s.prex 05022 004000 0 3467 l.f005 vfd 18/s.exh assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 116 dmpbuf - proc to dump input buffers when we exit rcv 05023 010000 0 3468 l.f006 vfd 18/sffsyn 05024 2 00002 0 3469 l.f007 zero bf.dta,b.0 05025 400000 0 3470 l.f008 vfd 18/hs.rcs 05026 400000 0 3471 l.f009 vfd 18/sffhdl 3472 05027 0 14000 3 3473 a.f001 ind frebuf 05030 0 05765 1 3474 a.f002 ind parity 05031 0 06275 1 3475 a.f003 ind scan 05032 0 02003 1 3476 a.f004 ind gettly 05033 0 05072 1 3477 a.f005 ind ichain 05034 0 06000 3 3478 a.f006 ind istat 05035 0 15000 3 3479 a.f007 ind fremem 05036 0 04246 1 3480 a.f008 ind stpswd assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 117 addbuf - add buffer to input chain 05037 3482 addbuf subr abf 3483 3484 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3485 * 3486 * addbuf 3487 * 3488 * adds a buffer to the end of the input chain and 3489 * signals pre-exhaust and/or exhaust status if 3490 * appropriate. 3491 * 3492 * upon entry: 3493 * x1 - virtual tib address 3494 * x2 - virtual sfcm address 3495 * x3 - buffer to be added to input chain 3496 * 3497 * returns: 3498 * 3499 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3500 05042 0 10 030 5072 3501 tsy ichain-* thread buffer onto input chain 3502 05043 2 07 005 0 3503 lda sf.flg,2 get sfcm flags 05044 0 31 757 5023 3504 cana l.f006-* (=sffsyn) synch line ? 05045 0 64 010 5055 3505 tnz abf010-* yes, don't check pre-exhaust 3506 05046 1 07 007 0 3507 lda t.icpl,1 get input chain length 05047 422 012 0 3508 icmpa 10 at pre-exhaust limit ? 05050 0 75 011 5061 3509 tmi abf011-* no 3510 05051 1 07 000 0 3511 lda t.stat,1 get tib status 05052 022 017 0 3512 iana s.dss relevant bits only 05053 0 37 746 5021 3513 ora l.f004-* (=s.prex) set pre-exhaust status 05054 4 10 760 5034 3514 tsy a.f006-*,* (=istat) call interpreter 3515 05055 3516 abf010 null 05055 0 07 751 5026 3517 lda l.f009-* (=sffhdl) 05056 2 31 005 0 3518 cana sf.flg,2 is it hdlc? 05057 0 64 011 5070 3519 tnz abfret-* don't check for exaust 3520 05060 1 07 007 0 3521 lda t.icpl,1 get input chain length again 05061 1 06 041 0 3522 abf011 ada t.dcpl,1 get total input buffer usage 05062 422 050 0 3523 icmpa 40 at exhaust limit ? 05063 0 75 005 5070 3524 tmi abfret-* no, done 3525 05064 1 07 000 0 3526 lda t.stat,1 get tib status end of binary card 00000072 05065 022 017 0 3527 iana s.dss relevant bits only 05066 0 37 734 5022 3528 ora l.f005-* (=s.exh) set exhaust status 05067 4 10 745 5034 3529 tsy a.f006-*,* (=istat) call interpreter 3530 05070 3531 abfret return addbuf assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 118 ichain - thread buffer onto input chain 05072 3533 ichain subr ich,(x2) 3534 3535 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3536 * 3537 * ichain 3538 * 3539 * threads a buffer onto the end of the input chain 3540 * and updates the chain length (t.icpl) 3541 * 3542 * upon entry: 3543 * x1 - virtual tib address 3544 * x3 - buffer to be threaded onto input chain 3545 * 3546 * returns: 3547 * 3548 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3549 05100 1 20 006 0 3550 szn t.ilst,1 any input chain ? 05101 0 64 004 5105 3551 tnz ich010-* yes 3552 05102 1 50 005 0 3553 stx3 t.icp,1 start a new chain 05103 1 50 006 0 3554 stx3 t.ilst,1 end a new chain 05104 0 71 004 5110 3555 tra ich020-* 3556 05105 1 03 006 0 3557 ich010 ldx2 t.ilst,1 get addr of last buffer 05106 2 50 000 0 3558 stx3 bf.nxt,2 thread on new last buffer 05107 1 50 006 0 3559 stx3 t.ilst,1 update last ptr 3560 05110 3 07 001 0 3561 ich020 lda bf.siz,3 get buffer size code 05111 2337 17 0 3562 arl 15 right adjust 05112 773 001 0 3563 iaa 1 get true block count 05113 1 16 007 0 3564 asa t.icpl,1 update input chain length 3565 05114 3566 return ichain assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 119 ipterm - process input terminate status 05116 3568 ipterm subr trm,(x1,x2,x3) 3569 3570 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3571 * 3572 * ipterm 3573 * 3574 * process the input terminate status. this will 3575 * be stored as a result of a user typing nis break 3576 * character, and can only mean that it is time to 3577 * ship his data to the cs. 3578 * 3579 * upon entry: 3580 * x1 - virtual tib address 3581 * x2 - virtual sfcm address 3582 * x3 - points to the current buffer 3583 * 3584 * returns: 3585 * 3586 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3587 05132 0 07 022 5154 3588 lda l.g001-* (=bffbrk) get the break bit 05133 3 72 001 0 3589 orsa bf.flg,3 turn it on in the buffer 3590 end of binary card 00000073 05134 2 07 005 0 3591 lda sf.flg,2 synchronous line? 05135 0 31 022 5157 3592 cana l.g004-* =sffsyn 05136 0 64 002 5140 3593 tnz trm010-* no, don't bother scanning 3594 05137 4 10 024 5163 3595 tsy a.g005-*,* (=scan) scan the input 3596 05140 4 10 021 5161 3597 trm010 tsy a.g002-*,* (=setnib) setup new input buffer 3598 05141 2 07 005 0 3599 lda sf.flg,2 synchronous? 05142 0 31 015 5157 3600 cana l.g004-* =sffsyn 05143 0 74 003 5146 3601 tze trm020-* no, scan took care of input chain 05144 4 10 016 5162 3602 tsy a.g003-*,* (=parity) strip off parity 05145 4 10 017 5164 3603 tsy a.g008-*,* (=addbuf) add buffer to input chain 3604 05146 1 07 000 0 3605 trm020 lda t.stat,1 get the tib status bits 05147 022 017 0 3606 iana s.dss but only the ones we want 05150 0 37 005 5155 3607 ora l.g002-* s.brch 05151 4 10 007 5160 3608 tsy a.g001-*,* (=istat) call status processor 3609 05152 3610 return ipterm 3611 05154 020000 0 3612 l.g001 vfd 18/bffbrk 05155 001000 0 3613 l.g002 vfd 18/s.brch 05156 757777 0 3614 l.g003 vfd o18//sffmsp 05157 010000 0 3615 l.g004 vfd 18/sffsyn 3616 05160 0 06000 3 3617 a.g001 ind istat assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 120 ipterm - process input terminate status 05161 0 05610 1 3618 a.g002 ind setnib 05162 0 05765 1 3619 a.g003 ind parity 05163 0 06275 1 3620 a.g005 ind scan 3621 *a.g006 3622 *a.g007 05164 0 05037 1 3623 a.g008 ind addbuf assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 121 ipmark - process input marker status 05165 3625 ipmark subr mrk,(x1,x2,x3) 3626 3627 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3628 * 3629 * ipmark 3630 * 3631 * process input marker status indicating one or more 3632 * of the following events: 3633 * 3634 * - any char received in echoplex or breakall mode 3635 * 3636 * - tab received in tabecho mode 3637 * 3638 * - frame begin char received in frame input mode 3639 * 3640 * - any break character received 3641 * 3642 * upon entry: 3643 * x1 - virtual tib address 3644 * x2 - virtual sfcm address 3645 * x3 - points to buffer 3646 * 3647 * returns: 3648 * 3649 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3650 05201 0 07 755 5156 3651 lda l.g003-* =^sffmsp 05202 2 32 005 0 3652 ansa sf.flg,2 indicate no marker pending 3653 05203 4 10 760 5163 3654 tsy a.g005-*,* (=scan) scan the input 3655 05204 3656 return ipmark end of binary card 00000074 3657 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 122 ipbfsw - process buffer switch for bisync and hdlc 05206 3659 ipbfsw subr bsw 3660 3661 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3662 * 3663 * ipbfsw 3664 * 3665 * process buffer switch for bisync and hdlc channels 3666 * 3667 * upon entry: 3668 * x1 - points to tib 3669 * x2 - points to sfcm 3670 * x3 - points to the current buffer 3671 * 3672 * returns: 3673 * 3674 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3675 05211 4 41 011 5222 3676 ldx3 a.x001-*,* *=bftsa get buffer address 3677 05212 4 10 246 5460 3678 tsy a.i008-*,* (=parity) strip all parity 3679 05213 4 10 246 5461 3680 tsy a.i009-*,* (=addbuf) add buffer to input chain 05214 4 56 006 5222 3681 stz a.x001-*,* *=bftsa all finished, clear it 05215 4 41 006 5223 3682 ldx3 a.x002-*,* *=bftx3 buffer address pointer 05216 3 56 002 0 3683 stz 2,3 05217 4 56 004 5223 3684 stz a.x002-*,* *=bftx3 clear up old buffer address 3685 05220 3686 bswret return ipbfsw 05222 0 03716 1 3687 a.x001 ind bftsa 05223 0 03715 1 3688 a.x002 ind bftx3 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 123 swphic - switch preallocated icw s 3690 ********************************************************************** 3691 * 3692 * swphic - switch with preallocated buffer for icw 3693 * 3694 * this routine will start the icw switching process using 3695 * the preallocated buffer pools. it sets up the registers 3696 * and other variables to complete the switch. it will store 3697 * the buffer in the software com area; it will not add it to 3698 * the input chain in the tib. 3699 * 3700 * upon entry: 3701 * x1 - tib 3702 * x2 - sfcm 3703 * 3704 * returns: 3705 * 3706 * coded by d. w. cousins for icw switch problem 3707 * 3708 ********************************************************************** 05224 3709 swphic subr swp,(i,x2,x3) 05240 3332 00 0 3710 cx2a *get address of sfcm into a 05241 6333 00 0 3711 caq *place it into q 05242 573 006 0 3712 iaq sf.ib0 *add in offset 05243 2 07 005 0 3713 lda sf.flg,2 *get software flags 05244 0 17 107 5353 3714 sta sfflag-* *store them for later 05245 0 34 103 5350 3715 ana l.y001-* *=^sfcii mask 05246 2 17 005 0 3716 sta sf.flg,2 05247 6 07 001 0 3717 lda sf.nxa,2* *load the status word 05250 2337 14 0 3718 arl 12 05251 022 002 0 3719 iana sffcii *mask all bits ecept alt icw 05252 2 72 005 0 3720 orsa sf.flg,2 *this should work 05253 2 07 005 0 3721 lda sf.flg,2 *get the flags for test end of binary card 00000075 05254 222 002 0 3722 icana sffcii *alternate buffer 05255 0 74 002 5257 3723 tze 2 *no 05256 573 001 0 3724 iaq sf.ib1-sf.ib0 *change offset 05257 0 57 075 5354 3725 stq sfptr-* *save it tempory 05260 4 47 074 5354 3726 ldq sfptr-*,* *load the buffer address 05261 2 41 001 0 3727 ldx3 sf.nxa,2 *load current ptr to status 05262 3 57 002 0 3728 stq 2,3 *store buffer after the status 05263 2 07 016 0 3729 lda sf.bsz,2 *get this line buffer size 05264 0337 05 0 3730 ars 5 *get table index 05265 773 777 0 3731 iaa -1 05266 0332 00 0 3732 cax2 05267 3331 00 0 3733 inh 05270 4 47 056 5346 3734 ldq a.y001-*,* (=pchtbl,2) get the buffer address 05271 0 74 033 5324 3735 tze swp010-* no buffer 05272 673 777 0 3736 ila -1 05273 4 16 054 5347 3737 asa a.y002-*,* (=pchlft,2) reduce buffer total 05274 7333 00 0 3738 cqa 05275 4333 00 0 3739 cax3 place address into x3 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 124 swphic - switch preallocated icw s 05276 3 47 000 0 3740 ldq bf.nxt,3 get next address 05277 4 57 047 5346 3741 stq a.y001-*,* (=pchtbl,2) put it as the head 05300 0 44 735 5235 3742 ldi swpsi-* 05301 3 56 000 0 3743 stz bf.nxt,3 zero next buffer pointer 05302 3 07 001 0 3744 lda bf.tly,3 get it tally 05303 0 34 514 5017 3745 ana l.f002-* =buftmk mask the tally 05304 6333 00 0 3746 caq place it in q 05305 1 03 030 0 3747 ldx2 t.sfcm,1 get sfcm again 05306 0 07 043 5351 3748 lda l.y002-* =sffnib 05307 322 777 0 3749 iera -1 05310 2 32 005 0 3750 ansa sf.flg,2 05311 0 32 042 5353 3751 ansa sfflag-* *save it here also 05312 4 50 042 5354 3752 stx3 sfptr-*,* 3753 05313 0 57 042 5355 3754 stq swpq-* hang on to size 05314 3755 smeter mincd,.mupab,l.y003-* 3756 end of binary card 00000076 05323 0 71 015 5340 3757 tra swp020-* 05324 673 000 0 3758 swp010 ila 0 05325 0 44 710 5235 3759 ldi swpsi-* restore interrupt state 05326 4 56 026 5354 3760 stz sfptr-*,* 05327 4333 00 0 3761 cax3 3762 05330 0 57 025 5355 3763 stq swpq-* hang on to size 05331 3764 smeter mincd,.mpanf,l.y003-* 3765 05340 0 47 015 5355 3766 swp020 ldq swpq-* 05341 0 10 333 5674 3767 tsy nibicw-* 05342 0 07 011 5353 3768 lda sfflag-* *return old sf.flg 05343 2 17 005 0 3769 sta sf.flg,2 05344 3770 return swphic 3771 05346 2 03521 1 3772 a.y001 ind pchtbl,2 05347 2 03531 1 3773 a.y002 ind pchlft,2 3774 05350 777775 0 3775 l.y001 vfd o18//sffcii 05351 100000 0 3776 l.y002 vfd 18/sffnib 05352 000001 0 3777 l.y003 dec 1 3778 05353 3779 sfflag bss 1 05354 3780 sfptr bss 1 05355 3781 swpq bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 125 ipxte - process input transfer timing error 05356 3783 ipxte subr ixt,(x1,x2,x3) 3784 3785 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3786 * 3787 * ipxte 3788 * 3789 * process transfer timing errors. currently we 3790 * will not expect these, and will crash on any. 3791 * 3792 * upon entry: 3793 * 3794 * returns: 3795 * 3796 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3797 05372 3798 die 4 3799 05373 3800 return ipxte end of binary card 00000077 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 126 ipptro - process input pre-tally runout 05375 3802 ipptro subr ipt,(x1,x2,x3) 3803 3804 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3805 * 3806 * ipptro 3807 * 3808 * process input pre-tally runout status. this 3809 * status is stored just before we switch to a new input 3810 * buffer, and the old one should be put onto the input 3811 * chain. 3812 * 3813 * upon entry: 3814 * x1 - virtual tib address 3815 * x2 - virtual sfcm address 3816 * x3 - points to the buffer 3817 * 3818 * returns: 3819 * with a new input buffer setup 3820 * 3821 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3822 05411 2 07 005 0 3823 lda sf.flg,2 synchronous line? 05412 0 31 037 5451 3824 cana l.i001-* =sffsyn 05413 0 64 003 5416 3825 tnz ipt010-* yes, copy buffer directly to chain 3826 05414 4 10 041 5455 3827 tsy a.i001-*,* (=scan) scan rest of input data 05415 0 71 003 5420 3828 tra ipt030-* 3829 05416 4 10 042 5460 3830 ipt010 tsy a.i008-*,* (=parity) remove parity bits 05417 4 10 042 5461 3831 tsy a.i009-*,* (=addbuf) add buffer to input chain 3832 05420 4 10 037 5457 3833 ipt030 tsy a.i005-*,* (=setnib) setup new input buffer 3834 05421 3835 return ipptro bye assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 127 iptro - process input tally runout 05423 3837 iptro subr itr,(x1,x2,x3) 3838 3839 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3840 * 3841 * iptro 3842 * 3843 * processs input tally runout status. this indicates 3844 * an attempt to use an exhausted icw. this could occur 3845 * either because there was not enough time to set up a new 3846 * buffer or because no buffer was available. the latter 3847 * case is indicated by a zero buffer address. in this case, 3848 * we signal exhaust status to the interpreter. in the 3849 * former case, we signal transfer timing error (xte) status. 3850 * 3851 * upon entry: 3852 * x1 - virtual tib address 3853 * x2 - virtual sfcm address 3854 * x3 - points to buffer 3855 * 3856 * returns: 3857 * 3858 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3859 05437 1 07 000 0 3860 lda t.stat,1 get tib status bits 05440 022 017 0 3861 iana s.dss but only the ones we want 3862 05441 373 000 0 3863 iacx3 0 do we have a buffer? 05442 0 74 003 5445 3864 tze 3 no 05443 0 37 007 5452 3865 ora l.i003-* (=s.xte) set xte status 05444 0 71 002 5446 3866 tra 2 end of binary card 00000078 05445 0 37 007 5454 3867 ora l.i009-* (=s.exh) set exhaust status 3868 05446 4 10 010 5456 3869 tsy a.i004-*,* (=istat) call interpreter 3870 05447 3871 return iptro all done 3872 3873 05451 010000 0 3874 l.i001 vfd 18/sffsyn 3875 *l.i002 05452 020000 0 3876 l.i003 vfd 18/s.xte 3877 *l.i004 3878 *l.i005 unused 05453 204000 0 3879 l.i006 vfd 18/tfecpx+tftbec 3880 *l.i007 unused 05454 004000 0 3881 l.i009 vfd 18/s.exh assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 128 iptro - process input tally runout 05455 0 06275 1 3883 a.i001 ind scan 3884 *a.i002 3885 *a.i003 05456 0 06000 3 3886 a.i004 ind istat 05457 0 05610 1 3887 a.i005 ind setnib 3888 *a.i007 05460 0 05765 1 3889 a.i008 ind parity 05461 0 05037 1 3890 a.i009 ind addbuf assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 129 ipdss - process data set status change 05462 3892 ipdss subr ids,(x1,x2,x3) 3893 3894 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3895 * 3896 * ipdss 3897 * 3898 * process data set status changes. record the 3899 * change and inform the control_tables. 3900 * 3901 * upon entry: 3902 * x1 - virtual tib address 3903 * x2 - virtual sfcm address 3904 * lower 18 bits of status in stpswd+1 3905 * 3906 * returns: 3907 * 3908 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3909 05476 0 56 051 5547 3910 stz idsst-* zero current status word 05477 0 41 103 5602 3911 ldx3 a.j002-* (=hstat) get the address of the table 3912 05500 1 07 002 0 3913 lda t.flg2,1 are we dialing out? 05501 0 31 075 5576 3914 cana l.j002-* =tfacu 05502 0 64 005 5507 3915 tnz ids010-* yes 3916 else we'll have to mask off acu bits 05503 0 07 074 5577 3917 lda l.j003-* ^hs.dlo & ^hs.pwi 05504 4 32 102 5606 3918 ansa a.j006-*,* =stpswd 05505 0 07 073 5600 3919 lda l.j004-* ^hs.ads & ^hs.acr 05506 4 32 073 5601 3920 ansa a.j001-*,* =stpswd+1 3921 05507 4 07 072 5601 3922 ids010 lda a.j001-*,* (=stpswd+1) get the status word 05510 3 31 000 0 3923 cana 0,3 is this a match? 05511 0 74 003 5514 3924 tze ids020-* no, keep looking 3925 05512 3 07 001 0 3926 lda 1,3 get the bit to set 05513 0 72 034 5547 3927 orsa idsst-* or into saved status 3928 05514 373 002 0 3929 ids020 iacx3 2 increment to next entry end of binary card 00000079 05515 0 61 066 5603 3930 cmpx3 a.j003-* (=ehstat) end of table? 05516 0 64 771 5507 3931 tnz ids010-* no, continue 3932 05517 0 41 066 5605 3933 ldx3 a.j005-* (=h1stat) get the address of the table for first 3934 05520 4 07 066 5606 3935 ids030 lda a.j006-*,* (=stpswd) get the status word 05521 3 31 000 0 3936 cana 0,3 is this a match 05522 0 74 003 5525 3937 tze ids040-* no, skip it 3938 05523 3 07 001 0 3939 lda 1,3 get the bit to set 05524 0 72 023 5547 3940 orsa idsst-* or into saved status 3941 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 130 ipdss - process data set status change 05525 373 002 0 3942 ids040 iacx3 2 increment to next entry 05526 0 61 061 5607 3943 cmpx3 a.j007-* (=endh1) end of table? 05527 0 64 771 5520 3944 tnz ids030-* no, continue 3945 05530 673 000 0 3946 ila 0 zero the a reg 05531 0 20 017 5550 3947 szn dssflg-* requested status? 05532 0 74 002 5534 3948 tze 2 no 3949 05533 0 07 042 5575 3950 lda l.j001-* (=s.st) get status bit 05534 0 56 014 5550 3951 stz dssflg-* clear flag 3952 05535 0 37 012 5547 3953 ora idsst-* get new data set status 05536 4 10 046 5604 3954 tsy a.j004-*,* (=istat) call interpreter w/status 3955 05537 673 017 0 3956 ila 15 (=o17) mask for common bits 3957 cd+cts+dsr+src 05540 0 32 007 5547 3958 ansa idsst-* leave only those bits now 05541 322 777 0 3959 iera -1 flip over the mask 05542 1 32 000 0 3960 ansa t.stat,1 turn off the bits in the tib 3961 05543 0 07 004 5547 3962 lda idsst-* get the real status bits 05544 1 72 000 0 3963 orsa t.stat,1 and turn only those on in the tib 3964 05545 3965 return ipdss all done 3966 3967 05547 3968 idsst bss 1 (altrd) loc for current dataset status 05550 000000 0 3969 dssflg oct 0 (altrd) flag to indicate requested status 3970 05551 3971 hstat smap hs.dsr,s.dsr 05553 3972 smap hs.cts,s.cts 05555 3973 smap hs.cd,s.cd 05557 3974 smap hs.src,s.sprc 05561 3975 smap hs.ri,s.ring 05563 3976 smap hs.brk,s.brk end of binary card 00000080 05565 3977 smap hs.acr,s.acr 05567 3978 smap hs.ads,s.ads 005571 3979 ehstat equ * 3980 05571 3981 h1stat smap hs.dlo,s.dlo 05573 3982 smap hs.pwi,s.pwi 005575 3983 endh1 equ * 3984 3985 05575 000020 0 3986 l.j001 vfd 18/s.st 05576 000020 0 3987 l.j002 vfd 18/tfacu 05577 777774 0 3988 l.j003 vfd o18//hs.dlo*/hs.pwi ^(acu bits in first word) 05600 747777 0 3989 l.j004 vfd o18//hs.acr*/hs.ads ^(acu bits in second word) 3990 05601 0 04247 1 3991 a.j001 ind stpswd+1 status save word assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 131 ipdss - process data set status change 05602 0 05551 1 3992 a.j002 ind hstat 05603 0 05571 1 3993 a.j003 ind ehstat 05604 0 06000 3 3994 a.j004 ind istat 05605 0 05571 1 3995 a.j005 ind h1stat 05606 0 04246 1 3996 a.j006 ind stpswd 05607 0 05575 1 3997 a.j007 ind endh1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 132 setnib - setup new input buffer 05610 3999 setnib subr snb,(x1,x2,x3) 4000 4001 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4002 * 4003 * setnib 4004 * 4005 * setup a new input buffer for the channel. the 4006 * buffer will be allocated, and the icw setup 4007 * ready to be used by the channel. 4008 * 4009 * upon entry: 4010 * x1 - virtual tib address 4011 * x2 - virtual sfcm address 4012 * 4013 * returns: 4014 * 4015 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4016 05624 3332 00 0 4017 cx2a get sfcm addr into a 05625 6333 00 0 4018 caq now into the q 05626 573 006 0 4019 iaq sf.ib0 add in offset 4020 05627 2 07 005 0 4021 lda sf.flg,2 get the flags 05630 222 002 0 4022 icana sffcii alternate buffer? 05631 0 74 002 5633 4023 tze snb010-* no, 4024 05632 573 001 0 4025 iaq sf.ib1-sf.ib0 change offset 4026 end of binary card 00000081 05633 0 57 040 5673 4027 snb010 stq snbptr-* save the ptr 4028 05634 2 07 005 0 4029 lda sf.flg,2 synchronous line? 05635 0 31 120 5755 4030 cana l.h001-* =sffsyn 05636 0 64 020 5656 4031 tnz snb030-* yes, always allocate afresh 05637 2 56 021 0 4032 stz sf.nic,2 async, clear current char. pointer 05640 4 41 033 5673 4033 ldx3 snbptr-*,* is there one now? 05641 0 74 015 5656 4034 tze snb030-* no, we'll have to allocate one 05642 0 31 115 5757 4035 cana l.h003-* (sffnib) are we supposed to allocate one anyway? 05643 0 64 010 5653 4036 tnz snb020-* yes 05644 3 47 000 0 4037 ldq 0,3 get size of current one 05645 6337 11 0 4038 qrl 9 05646 2 67 020 0 4039 cmpq sf.csz,2 is it correct? 05647 0 64 006 5655 4040 tnz snb025-* no 05650 4336 01 0 4041 qls 1 yes, convert it to characters 05651 573 776 0 4042 iaq -2 allow for overhead 05652 0 71 016 5670 4043 tra snb050-* 4044 05653 3 47 000 0 4045 snb020 ldq 0,3 make sure we have the size 05654 6337 11 0 4046 qrl 9 05655 4 10 105 5762 4047 snb025 tsy a.h001-*,* (fremem) free the old one 4048 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 133 setnib - setup new input buffer 05656 4 10 105 5763 4049 snb030 tsy a.h007-*,* (=ghibuf) get input buffer 05657 0 71 006 5665 4050 tra snb040-* error, cannot get buffer 4051 05660 4 50 013 5673 4052 stx3 snbptr-*,* store the buffer ptr 4053 05661 0 07 076 5757 4054 lda l.h003-* =sffnib 05662 322 777 0 4055 iera -1 turn it off 05663 2 32 005 0 4056 ansa sf.flg,2 05664 0 71 004 5670 4057 tra snb050-* continue 4058 05665 4 56 006 5673 4059 snb040 stz snbptr-*,* no buffer, zero buffer ptr 05666 673 000 0 4060 ila 0 05667 4333 00 0 4061 cax3 and x3 too 4062 05670 0 10 004 5674 4063 snb050 tsy nibicw-* setup icw 4064 05671 4065 return setnib 4066 05673 4067 snbptr bss 1 (altrd) pointer to current buf ptr assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 134 nibicw - setup new input icw 05674 4069 nibicw subr nib,(inh,q,x1,x2,x3) end of binary card 00000082 4070 4071 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4072 * 4073 * nibicw 4074 * 4075 * setup new icw for the input buffer which is 4076 * being setup. the buffer addr is in x3, and sffcii 4077 * tells us which icw to setup. 4078 * 4079 * upon entry: 4080 * x1 - virtual tib address 4081 * x2 - virtual sfcm address 4082 * x3 - points to the buffer 4083 * q - contains buffer tally 4084 * 4085 * returns: 4086 * 4087 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4088 05717 2 07 000 0 4089 lda sf.hcm,2 get the hwcm ptr 4090 05720 773 000 0 4091 iaa h.ric0 get ptr to icw 05721 0 17 033 5754 4092 sta nibiwp-* save it in temp 4093 05722 2 07 005 0 4094 lda sf.flg,2 get the flags 05723 222 002 0 4095 icana sffcii alternate buffer? 05724 0 74 004 5730 4096 tze nib010-* no, go 4097 05725 0 07 027 5754 4098 lda nibiwp-* get the ptr 05726 773 002 0 4099 iaa h.ric1-h.ric0 add offset 05727 0 17 025 5754 4100 sta nibiwp-* save it in temp 4101 05730 0 41 766 5716 4102 nib010 ldx3 nibsx3-* restor buffer ptr to x3 05731 0 74 016 5747 4103 tze nib020-* zero buffer addr, special case 4104 05732 2 07 005 0 4105 lda sf.flg,2 synchronous? 05733 0 31 022 5755 4106 cana l.h001-* =sffsyn 05734 0 74 004 5740 4107 tze nib015-* no 05735 3333 00 0 4108 cx3a get buffer ptr into a reg 05736 0 06 020 5756 4109 ada l.h002-* bf.dta,b.0 05737 0 71 003 5742 4110 tra nib016-* 05740 3333 00 0 4111 nib015 cx3a get buffer ptr into a reg 05741 0 37 017 5760 4112 ora l.h004-* (=0,b.1) async, start at second char 05742 0 03 012 5754 4113 nib016 ldx2 nibiwp-* get ptr to icw in x2 05743 2 17 000 0 4114 sta 0,2 put into address part of icw 4115 05744 0 47 747 5713 4116 ldq nibsq-* get buffer tally 05745 2 57 001 0 4117 stq 1,2 and store into icw 05746 0 71 004 5752 4118 tra nibret-* done assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 135 nibicw - setup new input icw 4119 05747 0 07 015 5764 4120 nib020 lda a.h008-* (=bnispc) get addr of spare word 05750 0 47 011 5761 4121 ldq l.h007-* (=010000) get exhausted tally 05751 4 14 003 5754 4122 staq nibiwp-*,* set icw 4123 05752 4124 nibret return nibicw end of binary card 00000083 4125 05754 4126 nibiwp bss 1 (altrd) icw ptr assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 136 nibicw - setup new input icw 4128 05755 010000 0 4129 l.h001 vfd 18/sffsyn 05756 2 00002 0 4130 l.h002 ind bf.dta,b.0 05757 100000 0 4131 l.h003 vfd 18/sffnib 05760 3 00000 0 4132 l.h004 zero 0,b.1 4133 *l.h005 4134 *l.h006 05761 010000 0 4135 l.h007 oct 10000 4136 05762 0 15000 3 4137 a.h001 ind fremem 4138 *a.h002 4139 *a.h003 4140 *a.h004 4141 *a.h005 4142 *a.h006 05763 0 00775 1 4143 a.h007 ind ghibuf 05764 2 00732 1 4144 a.h008 ind bnispc,b.0 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 137 parity - strip parity bits off input characters 05765 4146 parity subr par,(x1,x2,x3) 4147 4148 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4149 * 4150 * parity 4151 * 4152 * parity will remove the parity bits from the 4153 * input data. status will have noted any parity errors 4154 * for us. 4155 * 4156 * upon entry: 4157 * x1 - virtual tib address 4158 * x2 - virtual sfcm address 4159 * x3 -> points to buffer 4160 * 4161 * returns: 4162 * 4163 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4164 06001 1 07 036 0 4165 lda t.flg3,1 see if we should bother 06002 0 31 044 6046 4166 cana l.m007-* =tf8in 06003 0 64 032 6035 4167 tnz par030-* no, keeping all 8 bits 4168 06004 3333 00 0 4169 cx3a 06005 0 27 043 6050 4170 cmpa l.m009-* (=1000(8)) bad? 06006 0 65 002 6010 4171 tpl 2 no, continue 06007 4172 die 1 gotcha 4173 06010 1 07 036 0 4174 lda t.flg3,1 see if parity should be kept 06011 0 31 040 6051 4175 cana l.m010-* =tfkpar 06012 0 64 023 6035 4176 tnz par030-* dont strip parity 4177 06013 0 47 025 6040 4178 ldq l.m001-* (=177177) get parity bits 4179 06014 2 07 005 0 4180 lda sf.flg,2 get sfcm flags 06015 222 040 0 4181 icana sffebd ebcdic characters? 06016 0 74 002 6020 4182 tze par010-* no, 4183 06017 0 47 022 6041 4184 ldq l.m002-* (=077077) get the ebcdic parity mask 4185 06020 3 07 001 0 4186 par010 lda bf.tly,3 get the buffer tally 06021 0 34 021 6042 4187 ana l.m003-* (=buftmk) leave only tally end of binary card 00000084 06022 773 001 0 4188 iaa 1 add one 06023 0337 01 0 4189 ars 1 divide by two 06024 0 17 013 6037 4190 sta parcnt-* store it here 06025 673 000 0 4191 ila 0 get a zero 06026 0 36 011 6037 4192 ssa parcnt-* makes it negative 4193 06027 373 002 0 4194 iacx3 bf.dta point to data in buffer 06030 7333 00 0 4195 cqa put parity mask into a reg assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 138 parity - strip parity bits off input characters 4196 06031 3 32 000 0 4197 par020 ansa 0,3 mask parity bits 06032 373 001 0 4198 iacx3 1 bump ptr 06033 0 76 004 6037 4199 aos parcnt-* decrement count 06034 0 75 775 6031 4200 tmi par020-* loop 4201 06035 4202 par030 return parity 4203 06037 4204 parcnt bss 1 4205 06040 177177 0 4206 l.m001 vfd o18/177177 06041 077077 0 4207 l.m002 vfd o18/077077 06042 000777 0 4208 l.m003 vfd 18/buftmk 06043 001000 0 4209 l.m004 vfd 18/tflfec 06044 2 00000 0 4210 l.m005 ind 0,b.0 06045 004000 0 4211 l.m006 vfd 18/tftbec 06046 000100 0 4212 l.m007 vfd 18/tf8in 06047 100000 0 4213 l.m008 vfd 18/tffip 06050 001000 0 4214 l.m009 oct 1000 06051 000004 0 4215 l.m010 vfd 18/tfkpar 4216 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 139 outpar - output parity for ebcdic terminals 06052 4218 outpar subr opr,(x3) 4219 4220 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4221 * 4222 * outpar 4223 * 4224 * outpar generates parity bits on 6-bit ebcdic 4225 * data. odd parity only. 4226 * 4227 * upon entry: 4228 * x2 - virtual sfcm address 4229 * x3 -> buffer 4230 * 4231 * returns: 4232 * parity bits in buffer 4233 * 4234 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4235 06060 2 07 005 0 4236 lda sf.flg,2 get the sfcm flag bits 06061 222 040 0 4237 icana sffebd edcbic data? 06062 0 74 023 6105 4238 tze oprret-* no 4239 06063 3 07 001 0 4240 lda bf.tly,3 get the buffer tally 06064 0 34 756 6042 4241 ana l.m003-* (=buftmk) leave only tally 06065 0 17 022 6107 4242 sta oprcnt-* save 06066 673 000 0 4243 ila 0 end of binary card 00000085 06067 0 36 020 6107 4244 ssa oprcnt-* make negative 4245 06070 0 07 767 6057 4246 lda oprsx3-* reload x3 value 06071 0 37 753 6044 4247 ora l.m005-* (=char bits) 06072 773 002 0 4248 iaa bf.dta point at data 06073 4333 00 0 4249 cax3 put into x3 4250 06074 3 07 200 0 4251 opr010 lda 0,3,b.0 pick up char 06075 022 077 0 4252 iana 63 drop to 6 bits 06076 3336 22 0 4253 alp 18 get the parity on it 06077 0 64 002 6101 4254 tnz 2 all ok now 06100 122 100 0 4255 iora 64 or in 7th bit for odd-parity 06101 3 17 200 0 4256 sta 0,3,b.0 replace char 06102 373 300 0 4257 iacx3 0,3,b.1 bump ptr 06103 0 76 004 6107 4258 aos oprcnt-* decrement count 06104 0 75 770 6074 4259 tmi opr010-* loop for all chars 4260 06105 4261 oprret return outpar done 4262 06107 4263 oprcnt bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 140 oscan - scan the output to get t.pos 06110 4265 oscan subr scn,(x1,x2,x3,a) 4266 4267 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4268 * 4269 * oscan 4270 * 4271 * scans an output buffer and updates the column 4272 * position in t.pos accordingly. 4273 * 4274 * upon entry: 4275 * x1 - virtual tib address 4276 * x3 - points to buffer 4277 * 4278 * returns: 4279 * updated column position in t.pos 4280 * 4281 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4282 06127 1 03 030 0 4283 ldx2 t.sfcm,1 get virtual sfcm address 06130 2 07 005 0 4284 lda sf.flg,2 asynchronous? 06131 0 31 301 6432 4285 cana l.n004-* =sffsyn 06132 0 64 141 6273 4286 tnz scnret-* no 4287 4288 see if output scan is needed 06133 1 07 001 0 4289 lda t.flg,1 get tib flags 06134 0 31 711 6045 4290 cana l.m006-* (=tftbec) tabecho mode ? 06135 0 64 007 6144 4291 tnz scn010-* yes, must scan 06136 0 31 303 6441 4292 cana l.n011-* (=tfecpx+tfcrec) echoplex or crecho mode? end of binary card 00000086 06137 0 74 134 6273 4293 tze scnret-* no, skip scan 4294 06140 1 03 037 0 4295 ldx2 t.dtp,1 any delay table ? 06141 0 74 132 6273 4296 tze scnret-* no, skip scan 06142 2 20 004 0 4297 szn dl.cr,2 any cr delays ? 06143 0 74 130 6273 4298 tze scnret-* no, skip scan 4299 06144 3 07 001 0 4300 scn010 lda bf.tly,3 get buffer tally 06145 0 34 263 6430 4301 ana l.n002-* (=buftmk) leave only tally 06146 773 000 0 4302 iaa 0 anything to scan ? 06147 0 74 124 6273 4303 tze scnret-* nope 06150 0 75 123 6273 4304 tmi scnret-* be serious 06151 0 17 250 6421 4305 sta scntly-* save tally 4306 06152 3333 00 0 4307 cx3a put buffer addr in a 06153 773 002 0 4308 iaa bf.dta get addr of data 06154 0 37 253 6427 4309 ora l.n001-* (=0,b.0) make char address 06155 4333 00 0 4310 cax3 put it in x3 06156 4 10 273 6451 4311 tsy a.o003-*,* =getcmt, get the addr of cmt in x2 06157 0 13 240 6417 4312 stx2 scncmt-* save addr 4313 06160 0 03 237 6417 4314 scn020 ldx2 scncmt-* get cmt addr assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 141 oscan - scan the output to get t.pos 06161 0 56 237 6420 4315 stz scnidx-* zero index 4316 06162 473 003 0 4317 ilq 4-1 set max cmt table size 06163 1 07 002 0 4318 lda t.flg2,1 get tib flags 06164 0 31 250 6434 4319 cana l.n006-* (=tfsftr) is this one a shifter? 06165 0 74 002 6167 4320 tze 2 nope 06166 573 002 0 4321 iaq 2 extend cmt, look at shifts 4322 06167 3 07 200 0 4323 lda 0,3,b.0 get the char we are interested in 06170 0 34 245 6435 4324 ana l.n007-* (=000177) mask out parity 06171 0 17 231 6422 4325 sta scnchr-* save it 06172 2 27 200 0 4326 scn030 cmpa 0,2,b.0 is it a special char? 06173 0 74 030 6223 4327 tze scn040-* yes, process 4328 06174 0 67 224 6420 4329 cmpq scnidx-* at max yet? 06175 0 74 004 6201 4330 tze scn031-* yes, character not found in cmt 4331 06176 0 76 222 6420 4332 aos scnidx-* bump index word 06177 273 300 0 4333 iacx2 0,b.1 bump cmt ptr 06200 0 71 772 6172 4334 tra scn030-* loop processing more cmt chars 4335 4336 not in cmt, must be regular char 4337 06201 1 07 002 0 4338 scn031 lda t.flg2,1 get the tib flag bits 06202 0 31 232 6434 4339 cana l.n006-* (=tfsftr) shifty device? 06203 0 74 010 6213 4340 tze scn035-* no 4341 06204 1 07 002 0 4342 lda t.flg2,1 06205 0 31 226 6433 4343 cana l.n005-* (=tfupsf) in upshift now? end of binary card 00000087 06206 0 74 010 6216 4344 tze scn037-* no 06207 3 07 200 0 4345 lda 0,3,b.0 get the char 06210 122 100 0 4346 iora 64 set 100 bit 06211 3 17 200 0 4347 sta 0,3,b.0 replace char 06212 0 71 004 6216 4348 tra scn037-* 4349 06213 0 07 207 6422 4350 scn035 lda scnchr-* get current character again 06214 422 040 0 4351 icmpa 32 is it a printing char? 06215 0 75 052 6267 4352 tmi scn200-* no, get out 4353 06216 1 07 033 0 4354 scn037 lda t.pos,1 get current position 06217 422 377 0 4355 icmpa 255 over limit ? 06220 0 65 047 6267 4356 tpl scn200-* yes, don't increment 4357 06221 1 76 033 0 4358 aos t.pos,1 increment position 06222 0 71 045 6267 4359 tra scn200-* continue 4360 06223 0 03 175 6420 4361 scn040 ldx2 scnidx-* get the index value 06224 4 71 220 6444 4362 tra a.n001-*,* (=scntbl,2*) go to right routine 4363 06225 0 06233 1 4364 scntbl ind scn050 line-feed assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 142 oscan - scan the output to get t.pos 06226 0 06235 1 4365 ind scn060 carriage return 06227 0 06237 1 4366 ind scn070 tab 06230 0 06254 1 4367 ind scn080 backspace 06231 0 06261 1 4368 ind scn090 upshift 06232 0 06264 1 4369 ind scn100 downshift 4370 06233 4371 scn050 null linefeed 06233 1 56 033 0 4372 stz t.pos,1 reset column position 06234 0 71 033 6267 4373 tra scn200-* 4374 06235 4375 scn060 null carriage return 06235 1 56 033 0 4376 stz t.pos,1 reset column position 06236 0 71 031 6267 4377 tra scn200-* 4378 06237 4379 scn070 null tab 06237 1 47 033 0 4380 ldq t.pos,1 get current position 06240 673 000 0 4381 ila 0 prepare to divide aq 06241 4382 dvd l.n003-* (=10) divide by 10 06243 0 57 153 6416 4383 stq scntmp-* save remainder 4384 06244 673 012 0 4385 ila 10 get max cols per tab 06245 0 26 151 6416 4386 sba scntmp-* get cols moved 06246 0 17 150 6416 4387 sta scntmp-* save it 4388 06247 0 07 147 6416 4389 lda scntmp-* get cols moved 06250 422 377 0 4390 icmpa 255 over limit ? 06251 0 65 016 6267 4391 tpl scn200-* yes, don't increment 06252 1 16 033 0 4392 asa t.pos,1 update column position 06253 0 71 014 6267 4393 tra scn200-* 4394 06254 1 07 033 0 4395 scn080 lda t.pos,1 backspace end of binary card 00000088 06255 0 74 012 6267 4396 tze scn200-* already in column 0, do nothing 06256 773 777 0 4397 iaa -1 otherwise decrement column position 06257 1 17 033 0 4398 sta t.pos,1 06260 0 71 007 6267 4399 tra scn200-* done 4400 06261 0 07 152 6433 4401 scn090 lda l.n005-* (=tfupsf) set bit on 06262 1 72 002 0 4402 orsa t.flg2,1 in tib, we are upshifted now 06263 0 71 004 6267 4403 tra scn200-* 4404 06264 0 07 147 6433 4405 scn100 lda l.n005-* (=tfupsf) get bit 06265 322 777 0 4406 iera -1 complement it 06266 1 32 002 0 4407 ansa t.flg2,1 turn it off in tib 4408 06267 373 300 0 4409 scn200 iacx3 0,b.1 bump buffer ptr 4410 06270 673 777 0 4411 ila -1 decrement 06271 0 16 130 6421 4412 asa scntly-* the scan tally 06272 0 64 666 6160 4413 tnz scn020-* loop for more 4414 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 143 oscan - scan the output to get t.pos 06273 4415 scnret return oscan 4416 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 144 scan - scan and process an input buffer 06275 4418 scan subr isc,(x1,x2,x3) 4419 4420 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4421 * 4422 * scan 4423 * 4424 * calls inproc to scan an input buffer, update the column 4425 * position in t.pos accordingly, perform echoing and 4426 * beginning of frame detection when scanning the current 4427 * input buffer. 4428 * 4429 * upon entry: 4430 * x1 - virtual tib address 4431 * x3 - points to buffer 4432 * 4433 * returns: 4434 * updated column position in t.pos 4435 * 4436 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4437 06311 1 03 030 0 4438 ldx2 t.sfcm,1 get virtual sfcm address 06312 2 07 005 0 4439 lda sf.flg,2 asynchronous? 06313 0 31 117 6432 4440 cana l.n004-* =sffsyn 06314 0 64 100 6414 4441 tnz iscret-* no 4442 06315 1 07 002 0 4443 lda t.flg2,1 save tffip for later comparison 06316 0 34 124 6442 4444 ana l.n012-* =tffip 06317 0 17 104 6423 4445 sta scnfrm-* 4446 06320 2 41 000 0 4447 ldx3 sf.hcm,2 get hwcm address 06321 2 07 021 0 4448 lda sf.nic,2 get addr of next char to process 06322 0 64 003 6325 4449 tnz isc010-* if any 06323 0 07 765 6310 4450 lda iscsx3-* otherwise, use beginning of buffer 06324 0 37 115 6441 4451 ora l.n011-* 0,b.1 4452 end of binary card 00000089 06325 0 17 077 6424 4453 isc010 sta fstchr-* temp store begin point 06326 0 34 110 6436 4454 ana l.n008-* (=o077777) make it word address 06327 0 17 076 6425 4455 sta fstwrd-* 06330 2 07 005 0 4456 lda sf.flg,2 now find out which icw we're on 06331 222 002 0 4457 icana sffcii 06332 0 74 002 6334 4458 tze 2 06333 373 002 0 4459 iacx3 h.ric1-h.ric0 06334 3 07 000 0 4460 lda 0,3 get address of hardware's next char 06335 0 17 071 6426 4461 sta nxtchr-* save it 06336 0 34 100 6436 4462 ana l.n008-* (=o077777) get word address 06337 6333 00 0 4463 caq 06340 0 66 065 6425 4464 sbq fstwrd-* find word difference 06341 4336 01 0 4465 qls 1 convert to chars 06342 0 07 075 6437 4466 lda l.n009-* =o100000 06343 0 31 061 6424 4467 cana fstchr-* started on odd char? assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 145 scan - scan and process an input buffer 06344 0 74 002 6346 4468 tze 2 no 06345 573 777 0 4469 iaq -1 yes, one character less 06346 0 31 060 6426 4470 cana nxtchr-* ended on odd char? 06347 0 74 002 6351 4471 tze 2 no 06350 573 001 0 4472 iaq 1 yes, one character more 06351 573 000 0 4473 iaq 0 is total any chars at all? 06352 0 74 042 6414 4474 tze iscret-* no 06353 0 75 041 6414 4475 tmi iscret-* and no 4476 06354 2 07 005 0 4477 lda sf.flg,2 get ebcdic bit for inproc 06355 022 040 0 4478 iana sffebd 06356 0 41 046 6424 4479 ldx3 fstchr-* get address 06357 4 10 066 6445 4480 tsy a.n002-*,* inproc 06360 0 41 046 6426 4481 ldx3 nxtchr-* update scan pointer now 06361 2 50 021 0 4482 stx3 sf.nic,2 06362 0 17 034 6416 4483 sta scntmp-* hang on to returned flags 06363 1 07 002 0 4484 lda t.flg2,1 did we enter or leave a frame? 06364 0 34 056 6442 4485 ana l.n012-* =tffip 06365 0 27 036 6423 4486 cmpa scnfrm-* same as before? 06366 0 74 003 6371 4487 tze isc020-* yes 06367 0 07 054 6443 4488 lda l.n013-* (=sffnib) no, we'll need a different buffer size 06370 2 72 005 0 4489 orsa sf.flg,2 06371 0 07 025 6416 4490 isc020 lda scntmp-* get returned flags 06372 222 002 0 4491 icana retsus output_suspend char? 06373 0 74 003 6376 4492 tze isc030-* no end of binary card 00000090 06374 4 10 053 6447 4493 tsy a.n004-*,* (susout) yes, manipulate icws 06375 0 71 017 6414 4494 tra iscret-* and done 06376 222 004 0 4495 isc030 icana retres output_resume char? 06377 0 74 003 6402 4496 tze isc040-* no 06400 4 10 050 6450 4497 tsy a.n005-*,* (resout) yes, restore icws 06401 0 71 013 6414 4498 tra iscret-* done 06402 222 001 0 4499 isc040 icana reteco inproc added char(s) to echo buffer? 06403 0 74 011 6414 4500 tze iscret-* no 06404 2 07 005 0 4501 lda sf.flg,2 get sfcm flag bits 06405 222 100 0 4502 icana sffech echoing on now? 06406 0 64 006 6414 4503 tnz iscret-* yes, done 4504 06407 2 07 012 0 4505 lda sf.pcw,2 look at pcw bits 06410 222 200 0 4506 icana pb.xmt are we already xmiting? 06411 0 64 003 6414 4507 tnz iscret-* yes, done 4508 06412 4 10 034 6446 4509 tsy a.n003-*,* (=echock) try to do echoing 06413 0 71 001 6414 4510 tra iscret-* echoing started 4511 06414 4512 iscret return scan 4513 4514 06416 4515 scntmp bss 1 06417 4516 scncmt bss 1 06420 4517 scnidx bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 146 scan - scan and process an input buffer 06421 4518 scntly bss 1 06422 4519 scnchr bss 1 06423 4520 scnfrm bss 1 06424 4521 fstchr bss 1 06425 4522 fstwrd bss 1 06426 4523 nxtchr bss 1 4524 06427 2 00000 0 4525 l.n001 ind 0,b.0 06430 000777 0 4526 l.n002 vfd 18/buftmk 06431 000012 0 4527 l.n003 dec 10 06432 010000 0 4528 l.n004 vfd 18/sffsyn 06433 000200 0 4529 l.n005 vfd 18/tfupsf 06434 200000 0 4530 l.n006 vfd 18/tfsftr 06435 000177 0 4531 l.n007 oct 000177 06436 077777 0 4532 l.n008 oct 077777 06437 100000 0 4533 l.n009 oct 100000 06440 002000 0 4534 l.n010 vfd 18/tfcrec 06441 3 00000 0 4535 l.n011 ind 0,b.1 06442 100000 0 4536 l.n012 vfd 18/tffip 06443 100000 0 4537 l.n013 vfd 18/sffnib 4538 06444 6 06225 1 4539 a.n001 ind scntbl,2* 06445 0 23000 3 4540 a.n002 ind inproc 06446 0 06553 1 4541 a.n003 ind echock 06447 0 06642 1 4542 a.n004 ind susout 06450 0 06676 1 4543 a.n005 ind resout 4544 4545 000001 4546 reteco bool 000001 000002 4547 retsus bool 000002 000004 4548 retres bool 000004 4549 4550 4551 *a.o001 4552 *a.o002 06451 0 17000 3 4553 a.o003 ind getcmt 4554 4555 *l.o001 4556 *l.o002 end of binary card 00000091 06452 3 00002 0 4557 l.o003 ind eb.dta,b.1 4558 *l.o004 4559 *l.o005 4560 *l.o006 4561 *l.o007 4562 *l.o008 4563 *l.o009 06453 001000 0 4564 l.o010 vfd 18/tfrpon assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 147 geteb - get chars from the echo buffer 06454 4566 geteb subr geb,(x1,x2,x3) 4567 4568 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4569 * 4570 * geteb 4571 * 4572 * subroutine to get the pointer and tally of 4573 * chars in the echo buffer which are to be 4574 * echoed now. 4575 * 4576 * input: 4577 * x1 - virtual tib address 4578 * x2 - virtual sfcm address 4579 * 4580 * output: 4581 * a - char address of data 4582 * q - tally in chars 4583 * 4584 * calling sequence: 4585 * tsy geteb-* 4586 * tra fail-* no more to echo 4587 * tra good-* got some chars 4588 * 4589 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4590 06470 1 41 025 0 4591 ldx3 t.echo,1 get ptr to echo buffer 06471 0 74 007 6500 4592 tze geb005-* none 4593 06472 1 07 002 0 4594 lda t.flg2,1 get tib flag bits 06473 0 31 760 6453 4595 cana l.o010-* (=tfrpon) replay on? 06474 0 64 004 6500 4596 tnz geb005-* yes, inhibit removal from echo buffer 4597 06475 3 07 002 0 4598 lda eb.tly,3 get the echo buffer tally 06476 0337 11 0 4599 ars 9 shift 06477 0 64 003 6502 4600 tnz geb010-* we have some 4601 06500 0334 44 0 4602 geb005 lls 36 zero aq 06501 0 71 045 6546 4603 tra gebret-* return, fail exit 4604 06502 3 07 001 0 4605 geb010 lda eb.otp,3 get ptr to chars to be echoed 06503 0336 03 0 4606 als 3 06504 2337 03 0 4607 arl 3 drop char addressing 06505 0 17 043 6550 4608 sta gebadr-* save 06506 1 07 025 0 4609 lda t.echo,1 get echo buf ptr again 06507 773 040 0 4610 iaa 32 point to end 06510 0 26 040 6550 4611 sba gebadr-* get difference 06511 0336 01 0 4612 als 1 multiply by two 06512 0 17 037 6551 4613 sta gebtly-* save 4614 06513 3 07 001 0 4615 lda eb.otp,3 get outptr 06514 0337 17 0 4616 ars 15 leave only char bits assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 148 geteb - get chars from the echo buffer 06515 222 001 0 4617 icana 1 is it odd char? 06516 0 74 004 6522 4618 tze geb020-* no, ok 4619 06517 0 07 032 6551 4620 lda gebtly-* fix up the tally 06520 773 777 0 4621 iaa -1 06521 0 17 030 6551 4622 sta gebtly-* 4623 end of binary card 00000092 06522 3 03 001 0 4624 geb020 ldx2 eb.otp,3 get ptr 06523 0 13 025 6550 4625 stx2 gebadr-* save it 06524 3 07 002 0 4626 lda eb.tly,3 get the real tally 06525 0335 11 0 4627 lrs 9 into lower a 06526 0 27 023 6551 4628 cmpa gebtly-* compare against max possible 06527 0 65 004 6533 4629 tpl geb030-* more, use tally to end of buffer 4630 06530 0 17 021 6551 4631 sta gebtly-* less, use real tally 06531 3 03 000 0 4632 ldx2 eb.inp,3 advance otp to inp 06532 0 71 006 6540 4633 tra geb040-* 4634 06533 0 17 017 6552 4635 geb030 sta gebtmp-* save value of a reg 06534 1 07 025 0 4636 lda t.echo,1 get ptr to base of buffer 06535 0 06 715 6452 4637 ada l.o003-* (=eb.dta,b.1) point to start of data 06536 0332 00 0 4638 cax2 put into x2 now 06537 0 07 013 6552 4639 lda gebtmp-* get back saved a reg 4640 06540 0 26 011 6551 4641 geb040 sba gebtly-* get new tally 06541 0334 11 0 4642 lls 9 get back into position 06542 3 17 002 0 4643 sta eb.tly,3 put back into eb 4644 06543 3 13 001 0 4645 stx2 eb.otp,3 reset otp now 4646 06544 0 76 710 6454 4647 aos geteb-* bump return addr to good 06545 0 04 003 6550 4648 ldaq gebadr-* get return args 4649 06546 4650 gebret return geteb 4651 06550 4652 even 06550 4653 gebadr bss 1 06551 4654 gebtly bss 1 4655 06552 4656 gebtmp bss 1 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 149 echock - check to see if any echoing to do 06553 4658 echock subr eck,(x3) 4659 4660 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4661 * 4662 * echock 4663 * 4664 * subroutine to test if any chars in echo buf 4665 * and start echoing if there are. 4666 * 4667 * upon entry: 4668 * x1 - virtual tib address 4669 * x2 - virtual sfcm address 4670 * 4671 * returns: 4672 * +1 - if echoing started 4673 * +2 - if no echoing to do 4674 * 4675 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4676 06561 1 07 000 0 4677 lda t.stat,1 make sure data set leads are up 06562 0 34 037 6621 4678 ana l.t001-* =tsfdtr+tsfdsr+tsfcts+tsfcd 06563 0 27 036 6621 4679 cmpa l.t001-* they must all be on 06564 0 64 026 6612 4680 tnz eck020-* we won't echo to a dead line 4681 06565 1 07 001 0 4682 lda t.flg,1 nor to one whose output is suspended 06566 0 31 035 6623 4683 cana l.t003-* =tfosus 06567 0 64 023 6612 4684 tnz eck020-* 4685 06570 0 10 664 6454 4686 tsy geteb-* check the echo buffer end of binary card 00000093 06571 0 71 021 6612 4687 tra eck020-* none, return +2 4688 06572 0 14 024 6616 4689 staq eckicw-* save icw for now 4690 06573 2 41 000 0 4691 ldx3 sf.hcm,2 get ptr to hwcm region 06574 373 004 0 4692 iacx3 h.sic0 point at primary icw 4693 06575 2 07 005 0 4694 lda sf.flg,2 get flags 06576 222 004 0 4695 icana sffcoi alternate icw? 06577 0 74 002 6601 4696 tze eck010-* no 4697 06600 373 002 0 4698 iacx3 h.sic1-h.sic0 bump up to alt 06601 0 04 015 6616 4699 eck010 ldaq eckicw-* get the icw to use 06602 3 14 000 0 4700 staq 0,3 put into icw 4701 06603 673 100 0 4702 ila sffech get flag for echo 06604 2 72 005 0 4703 orsa sf.flg,2 turn it on 4704 06605 673 200 0 4705 ila pb.xmt get xmit mode for pcw 06606 2 72 012 0 4706 orsa sf.pcw,2 turn it on too 4707 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 150 echock - check to see if any echoing to do 06607 0 07 013 6622 4708 lda l.t002-* (=p.nop) get pcw command 06610 4 10 010 6620 4709 tsy a.t001-*,* (=cioc) connect to channel 4710 06611 0 71 002 6613 4711 tra eckret-* done 4712 06612 0 76 741 6553 4713 eck020 aos echock-* bump return addr 4714 06613 4715 eckret return echock return to caller 06615 233100 0 06616 4716 even 06616 4717 eckicw bss 2 4718 4719 06620 0 02606 1 4720 a.t001 ind cioc 4721 4722 06621 002007 0 4723 l.t001 vfd 18/tsfdtr+tsfdsr+tsfcts+tsfcd 06622 000000 0 4724 l.t002 vfd 18/p.nop 06623 400000 0 4725 l.t003 vfd 18/tfosus assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 151 hcheck - start echoing if not in xmit 4727 4728 4729 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4730 * 4731 * this routine is called by the inproc subroutine of the 4732 * utilities in order to make sure echoing starts before sending 4733 * status to the control tables. 4734 * 4735 * upon entry: 4736 * x1 - virtual tib address 4737 * 4738 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4739 06624 4740 hcheck subr hch,(x2) 06632 1 03 030 0 4741 ldx2 t.sfcm,1 06633 2 07 012 0 4742 lda sf.pcw,2 find out if in xmit now 06634 222 200 0 4743 icana pb.xmt 06635 0 64 003 6640 4744 tnz hchret-* we are, deal with echoing later 06636 0 10 715 6553 4745 tsy echock-* else start it now end of binary card 00000094 06637 0 71 001 6640 4746 tra hchret-* if there is any 06640 4747 hchret return hcheck assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 152 subroutines to suspend and resume output 4749 4750 4751 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4752 * 4753 * this routine is called by scan if inproc returns an indication 4754 * that an output_suspend character was received. it adjusts the 4755 * output icws to force tally runout in the near future; output 4756 * is not resumed until an output_resume character is received. 4757 * at tally runout, the current output buffer(s) are copied back 4758 * to the t.ocur chain. 4759 * upon entry: 4760 * x1 - tib address 4761 * x2 - sfcm address 4762 * 4763 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4764 06642 4765 susout subr sus,(x3,i) 06653 1 07 001 0 4766 lda t.flg,1 suspend already in progress? 06654 0 31 054 6730 4767 cana l.s005-* (=tfosus) 06655 0 64 017 6674 4768 tnz susret-* yes, punt for now 06656 2 07 012 0 4769 lda sf.pcw,2 in transmit at the moment? 06657 222 200 0 4770 icana pb.xmt 06660 0 74 012 6672 4771 tze sus040-* no, skip icw manipulation 06661 2 41 000 0 4772 ldx3 sf.hcm,2 get hwcm address 06662 0 47 045 6727 4773 ldq l.s004-* exhaust bit and zero tally 06663 3331 00 0 4774 inh <+><+><+><+><+><+><+><+><+><+> 06664 3 57 005 0 4775 stq h.sic0+1,3 deactivate icw's 06665 3 57 007 0 4776 stq h.sic1+1,3 06666 3 57 005 0 4777 stq h.sic0+1,3 do it again in case hardware was 06667 3 57 007 0 4778 stq h.sic1+1,3 updating it at that very moment 06670 0 07 043 6733 4779 lda l.s009-* (=tfsoip) 06671 1 72 036 0 4780 orsa t.flg3,1 indicate suspend in progress now 06672 0 07 036 6730 4781 sus040 lda l.s005-* (=tfosus) 06673 1 72 001 0 4782 orsa t.flg,1 mark tib to show output suspended 06674 4783 susret return susout assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 153 subroutines to suspend and resume output 4785 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4786 * 4787 * this subroutine is called when inproc detects an output_resume 4788 * character. it turns off the "output suspended" flag, and calls 4789 * seticw to reestablish the output icws. if there is no output chain, 4790 * it simulates output tally runout so that the control tables can 4791 * be kicked off as if output had completed. 4792 * upon entry: 4793 * x1 - tib address 4794 * x2 - sfcm address 4795 * 4796 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4797 4798 06676 4799 resout subr res 06701 1 07 001 0 4800 lda t.flg,1 suspended? 06702 0 31 026 6730 4801 cana l.s005-* tfosus 06703 0 74 022 6725 4802 tze resret-* no, return 06704 1 07 036 0 4803 lda t.flg3,1 finished processing suspend? 06705 0 31 026 6733 4804 cana l.s009-* tfsoip end of binary card 00000095 06706 0 74 004 6712 4805 tze res005-* yes, go ahead 06707 0 07 025 6734 4806 lda l.s010-* tforp 06710 1 72 036 0 4807 orsa t.flg3,1 else indicate resume pending 06711 0 71 014 6725 4808 tra resret-* and don't try to do it now 06712 0 07 017 6731 4809 res005 lda l.s006-* ^tfosus 06713 1 32 001 0 4810 ansa t.flg,1 turn the flag off 06714 1 20 013 0 4811 szn t.ocur,1 ny pending output chain? 06715 0 74 007 6724 4812 tze res010-* no, simulate tro 06716 4 10 017 6735 4813 tsy a.s001-*,* (seticw) yes, set up icws 06717 673 200 0 4814 ila pb.xmt and go back into transmit 06720 2 72 012 0 4815 orsa sf.pcw,2 06721 0 07 011 6732 4816 lda l.s007-* =p.nop 06722 4 10 014 6736 4817 tsy a.s002-*,* cioc 06723 0 71 002 6725 4818 tra resret-* done 4819 06724 4 10 013 6737 4820 res010 tsy a.s003-*,* optro 06725 4821 resret return resout 4822 4823 4824 4825 *l.s001 unused 4826 *l.s002 unused 4827 *l.s003 unused 06727 010000 0 4828 l.s004 oct 010000 icw exhaust and 0 tally 06730 400000 0 4829 l.s005 vfd 18/tfosus 06731 377777 0 4830 l.s006 vfd o18//tfosus 06732 000000 0 4831 l.s007 vfd 18/p.nop pcw no-op command 4832 *l.s008 unused 06733 002000 0 4833 l.s009 vfd 18/tfsoip 06734 004000 0 4834 l.s010 vfd 18/tforp assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 154 subroutines to suspend and resume output 4835 4836 06735 0 02674 1 4837 a.s001 ind seticw 06736 0 02606 1 4838 a.s002 ind cioc 06737 0 07244 1 4839 a.s003 ind optro 4840 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 155 opptro - output pre-tally runout status 06740 4842 opptro subr opt,(x1,x2,x3) 4843 4844 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4845 * 4846 * opptro 4847 * 4848 * process the pre-tally runout status. this 4849 * is stored as the hsla picks up the last char from 4850 * the buffer and therefore we will setup a new output 4851 * buffer and icw. 4852 * 4853 * upon entry: 4854 * x1 - virtual tib address 4855 * x2 - virtual sfcm address 4856 * x3 - points to buffer 4857 * 4858 * returns: 4859 * 4860 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4861 06754 2 07 005 0 4862 lda sf.flg,2 get the sfcm flafs 06755 222 100 0 4863 icana sffech is a tab, cr, lf, echo in progress? end of binary card 00000096 06756 0 64 053 7031 4864 tnz optret-* yes, all done here 4865 06757 2 56 022 0 4866 stz sf.noc,2 not suspended in the middle of a buffer now 06760 1 41 013 0 4867 ldx3 t.ocur,1 get t.ocur, points to buffer just finished 06761 0 74 037 7020 4868 tze opt015-* somebody dumped while we weren't looking 06762 3 07 001 0 4869 lda bf.flg,3 get buffer flags 06763 0 31 235 7220 4870 cana l.k009-* check hold output buffer flag 06764 0 74 005 6771 4871 tze opt006-* no - as usual 06765 0 31 234 7221 4872 cana l.k010-* check last buffer in message flag 06766 0 74 003 6771 4873 tze opt006-* no - as usual 06767 1 56 013 0 4874 stz t.ocur,1 break chain here 06770 0 71 003 6773 4875 tra opt008-* 06771 4876 opt006 null 06771 3 07 000 0 4877 lda bf.nxt,3 get the next ptr 06772 1 17 013 0 4878 sta t.ocur,1 update t.ocur 4879 06773 4880 opt008 null 06773 2 07 005 0 4881 lda sf.flg,2 get sfcm flag word 06774 222 004 0 4882 icana sffcoi are we using alternate? 06775 0 74 002 6777 4883 tze 2 nope, continue 06776 273 001 0 4884 iacx2 sf.ob1-sf.ob0 add offset of alternate 06777 2 56 010 0 4885 stz sf.ob0,2 zero correct buffer ptr (note use of x2) 07000 1 03 030 0 4886 ldx2 t.sfcm,1 restore sfcm ptr 4887 07001 1 20 013 0 4888 szn t.ocur,1 any more buffers left 07002 0 74 012 7014 4889 tze opt010-* no, zero last ptr also 4890 07003 1 41 013 0 4891 ldx3 t.ocur,1 get ptr to first assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 156 opptro - output pre-tally runout status 07004 3 07 001 0 4892 lda bf.flg,3 get buffer flags 07005 0 31 214 7221 4893 cana l.k010-* (=bfflst) last buffer in msg? 07006 0 64 012 7020 4894 tnz opt015-* yes, leave here 4895 07007 3 20 000 0 4896 szn bf.nxt,3 look at next ptr in first 07010 0 74 010 7020 4897 tze opt015-* no more, all done 4898 07011 673 000 0 4899 ila 0 indicate sffcoi is inactive now 07012 4 10 224 7236 4900 tsy a.k003-*,* (=nobicw) setup new output icw 4901 07013 0 71 013 7026 4902 tra opt020-* all done 4903 07014 1 56 014 0 4904 opt010 stz t.olst,1 zero the last pointer 4905 07015 0 07 212 7227 4906 lda l.k018-* (=tfwrit) get flag bit 07016 322 777 0 4907 iera -1 flip it over 07017 1 32 001 0 4908 ansa t.flg,1 and turn it off in tib 4909 07020 2 41 000 0 4910 opt015 ldx3 sf.hcm,2 we will now zero address field of icw 07021 2 07 005 0 4911 lda sf.flg,2 find out which one 07022 222 004 0 4912 icana sffcoi 07023 0 74 002 7025 4913 tze 2 07024 373 002 0 4914 iacx3 h.sic1-h.sic0 adjust x3 accordingly end of binary card 00000097 07025 3 56 004 0 4915 stz h.sic0,3 this will be correct icw 4916 07026 0 41 725 6753 4917 opt020 ldx3 optsx3-* get ptr to buffer just finished 07027 0 74 002 7031 4918 tze optret-* someone did a stpchn, don't bother 07030 4 10 205 7235 4919 tsy a.k002-*,* (freout) free it and update count 07031 4920 optret null 07031 4 07 211 7242 4921 lda a.k008-*,* get saved status word 07032 0 31 164 7216 4922 cana l.k007-* (=hs.siw) are we switching icw's? 07033 0 74 003 7036 4923 tze 3 don't change sffcoi in not 07034 673 004 0 4924 ila sffcoi get the current icw switch 07035 2 62 005 0 4925 ersa sf.flg,2 flip it over in flag word 4926 07036 4927 optfin return opptro assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 157 houtav - hsla output available entry 07040 4929 houtav subr hav,(x1,x2,x3) 4930 4931 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4932 * 4933 * houtav 4934 * 4935 * routine to setup icws for output which may 4936 * arrive at the right time from a send_output 4937 * op to the cs. 4938 * 4939 * upon entry: 4940 * x1 - virtual tib address 4941 * 4942 * returns: 4943 * 4944 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4945 07054 1 03 030 0 4946 ldx2 t.sfcm,1 get ptr to sfcm for this guy 07055 0 74 035 7112 4947 tze havret-* none, forget it 07056 2 41 000 0 4948 ldx3 sf.hcm,2 get ptr to hwcm 4949 07057 3 07 005 0 4950 lda h.sic0+1,3 get tally word of first 07060 3 37 007 0 4951 ora h.sic1+1,3 get tally word of second 07061 0 31 130 7211 4952 cana l.k002-* (=010000) is either exhaust bit on? 07062 0 74 030 7112 4953 tze havret-* no, made in plenty of time 4954 07063 1 07 001 0 4955 lda t.flg,1 is output suspended? 07064 0 31 131 7215 4956 cana l.k006-* tfosus 07065 0 64 025 7112 4957 tnz havret-* yes, don't interfere 4958 07066 3 07 005 0 4959 lda h.sic0+1,3 get first again 07067 3 34 007 0 4960 ana h.sic1+1,3 get the second 07070 0 31 121 7211 4961 cana l.k002-* (=010000) are they both on? 07071 0 64 021 7112 4962 tnz havret-* yes, return, too late to act 4963 07072 3 07 005 0 4964 lda h.sic0+1,3 get first yet again 07073 0 31 116 7211 4965 cana l.k002-* (=010000) was this the one? 07074 0 74 005 7101 4966 tze hav010-* no end of binary card 00000098 07075 2 07 005 0 4967 lda sf.flg,2 yes, see if software thinks it's active 07076 0 31 112 7210 4968 cana l.k001-* =sffcoi 07077 0 74 013 7112 4969 tze havret-* it does, there's status pending 07100 0 71 004 7104 4970 tra hav020-* go ahead 07101 2 07 005 0 4971 hav010 lda sf.flg,2 alternate was exhausted 07102 0 31 106 7210 4972 cana l.k001-* (=sffcoi) did we think it was active? 07103 0 64 007 7112 4973 tnz havret-* yes, there must be status pending 4974 07104 1 41 013 0 4975 hav020 ldx3 t.ocur,1 get ptr to t.ocur 07105 3 20 000 0 4976 szn bf.nxt,3 check to make sure all is ok 07106 0 64 002 7110 4977 tnz 2 yes 07107 4978 die 12 no bad error assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 158 houtav - hsla output available entry 4979 07110 673 001 0 4980 ila 1 indicate that sffcoi is active now 07111 4 10 125 7236 4981 tsy a.k003-*,* (=nobicw) go setup icws 4982 07112 4983 havret return houtav assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 159 nobicw - new output buffer icw setup 07114 4985 nobicw subr nob,(a,x1,x2,x3) 4986 4987 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4988 * 4989 * nobicw 4990 * 4991 * setup the output icw and buffer for the 4992 * next output buffer in the chain. 4993 * 4994 * upon entry: 4995 * x1 - virtual tib address 4996 * x2 - virtual sfcm address 4997 * a = 0 sffcoi points to inactive icw 4998 * 1 sffcoi points to active icw 4999 * 5000 * returns: 5001 * 5002 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5003 07133 2 47 000 0 5004 ldq sf.hcm,2 get addr of hwcm 07134 1 07 030 0 5005 lda t.sfcm,1 get addr of sfcm also 5006 07135 573 004 0 5007 iaq h.sic0 get offset of icw 0 07136 773 010 0 5008 iaa sf.ob0 and buf0 07137 0 17 047 7206 5009 sta nobibp-* save it away 07140 0 57 047 7207 5010 stq nobiwp-* and this also 5011 07141 2 07 005 0 5012 lda sf.flg,2 get the flags 07142 0 20 765 7127 5013 szn nobsa-* check input arg 07143 0 74 002 7145 5014 tze 2 normal, sffcoi points to inactive one 07144 322 004 0 5015 iera sffcoi invert meaning of sffcoi 5016 07145 222 004 0 5017 icana sffcoi alt? end of binary card 00000099 07146 0 74 005 7153 5018 tze nob010-* nope, continue 5019 07147 673 002 0 5020 ila h.sic1-h.sic0 get the diff 07150 0 16 037 7207 5021 asa nobiwp-* update word 07151 673 001 0 5022 ila sf.ob1-sf.ob0 get other diff 07152 0 16 034 7206 5023 asa nobibp-* update word 5024 07153 1 41 013 0 5025 nob010 ldx3 t.ocur,1 get the current buffer ptr 07154 3 07 000 0 5026 lda bf.nxt,3 get the next guy 07155 4 17 031 7206 5027 sta nobibp-*,* put into sfcm 5028 07156 773 002 0 5029 iaa bf.dta add in offset of data 07157 0 37 033 7212 5030 ora l.k003-* (=0,b.0) get char addressing flags 07160 4 17 027 7207 5031 sta nobiwp-*,* and into hwcm 5032 07161 3 41 000 0 5033 ldx3 bf.nxt,3 get pointer to new buffer 07162 3 07 001 0 5034 lda bf.tly,3 get the tally from buffer assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 160 nobicw - new output buffer icw setup 07163 0 34 030 7213 5035 ana l.k004-* (=buftmk) isolate tally 07164 0 41 023 7207 5036 ldx3 nobiwp-* get the icw ptr 07165 3 17 001 0 5037 sta 1,3 store tally into icw 5038 07166 1 41 013 0 5039 ldx3 t.ocur,1 get ptr to first 07167 3 41 000 0 5040 ldx3 bf.nxt,3 get ptr to second 5041 07170 0 07 036 7226 5042 lda l.k016-* (=sffhdl) 07171 2 31 005 0 5043 cana sf.flg,2 is it hdlc? 07172 0 74 010 7202 5044 tze nob020-* no 07173 3 07 001 0 5045 lda bf.flg,3 get buffer flags 07174 0 31 025 7221 5046 cana l.k010-* (=bfflst) last buffer ? 07175 0 74 005 7202 5047 tze nob020-* no 5048 07176 0 07 027 7225 5049 lda l.k014-* (=pb.tre) get tally runout enable bit 07177 2 72 012 0 5050 orsa sf.pcw,2 turn it on in saved pcw 07200 0 07 024 7224 5051 lda l.k013-* (=p.ris) get pcw opcode 07201 4 10 042 7243 5052 tsy a.k011-*,* (=cioc) connect 5053 07202 4 10 036 7240 5054 nob020 tsy a.k005-*,* (=oscan) scan output buffer 07203 4 10 031 7234 5055 tsy a.k001-*,* (=outpar) put parity on ebcdic 5056 07204 5057 nobret return nobicw 5058 07206 5059 nobibp bss 1 07207 5060 nobiwp bss 1 5061 5062 5063 07210 000004 0 5064 l.k001 vfd 18/sffcoi 07211 010000 0 5065 l.k002 vfd o18/010000 07212 2 00000 0 5066 l.k003 ind 0,b.0 07213 000777 0 5067 l.k004 vfd 18/buftmk 07214 000000 0 5068 l.k005 vfd 18/p.nop end of binary card 00000100 07215 400000 0 5069 l.k006 vfd 18/tfosus 07216 010000 0 5070 l.k007 vfd 18/hs.siw 07217 002000 0 5071 l.k008 vfd 18/bffctl 07220 001000 0 5072 l.k009 vfd 18/bffhld hold output buffer flag 07221 040000 0 5073 l.k010 vfd 18/bfflst last buffer in message flag 07222 001042 0 5074 l.k011 vfd 18/c.rrec+c.rdtr+c.sbrk 07223 000020 0 5075 l.k012 vfd 18/tfacu 07224 010000 0 5076 l.k013 vfd 18/p.ris 07225 000004 0 5077 l.k014 vfd 18/pb.tre 5078 *l.k015 see below 07226 400000 0 5079 l.k016 vfd 18/sffhdl 5080 *l.k017 unused 07227 000001 0 5081 l.k018 vfd 18/tfwrit 07230 5082 even 07230 000000 0 5083 l.k015 oct 0,1 for adding 1 to doubleword 07231 000001 0 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 161 nobicw - new output buffer icw setup 07232 5084 even 07232 5085 havcnt bss 2 5086 5087 07234 0 06052 1 5088 a.k001 ind outpar 07235 0 07446 1 5089 a.k002 ind freout 07236 0 07114 1 5090 a.k003 ind nobicw 07237 0 02000 3 5091 a.k004 ind denq 07240 0 06110 1 5092 a.k005 ind oscan 07241 0 06553 1 5093 a.k006 ind echock 5094 *a.k007 07242 0 04246 1 5095 a.k008 ind stpswd status save word 5096 *a.k009 unused 5097 *a.k010 unused 07243 0 02606 1 5098 a.k011 ind cioc assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 162 optro - output tally runout status 07244 5100 optro subr otr,(x1,x2,x3) 5101 5102 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5103 * 5104 * optro 5105 * 5106 * process the tally runout status, this means 5107 * that the output is finished, or that we didnt 5108 * reconnect the next buffer in time. 5109 * 5110 * upon entry: 5111 * x1 & x2 -as usual 5112 * 5113 * returns: 5114 * 5115 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5116 07260 1 07 001 0 5117 lda t.flg,1 was output suspended? 07261 0 31 147 7430 5118 cana l.l003-* tfosus 07262 0 74 036 7320 5119 tze otr050-* no, normal processing 5120 07263 2 07 005 0 5121 lda sf.flg,2 find out which icw is active 07264 2 41 000 0 5122 ldx3 sf.hcm,2 we'll need hwcm address end of binary card 00000101 07265 0 31 144 7431 5123 cana l.l004-* =sffcoi 07266 0 74 004 7272 5124 tze otr010-* primary 07267 3 07 006 0 5125 lda h.sic1,3 alternate 07270 2 41 011 0 5126 ldx3 sf.ob1,2 get pointer to "next" buffer 07271 0 71 003 7274 5127 tra otr020-* 07272 5128 otr010 null same stuff but with buffers reversed 07272 3 07 004 0 5129 lda h.sic0,3 primary 07273 2 41 010 0 5130 ldx3 sf.ob0,2 get "other" buffer address 07274 5131 otr020 null x3 points to buffer we were just working on 07274 2 17 022 0 5132 sta sf.noc,2 save pointer to next char 07275 3333 00 0 5133 cx3a check second buffer 07276 0 74 003 7301 5134 tze otr030-* not any 07277 0 07 133 7432 5135 lda l.l005-* sffssb 07300 2 72 005 0 5136 orsa sf.flg,2 note that second buffer has been scanned 07301 0 07 136 7437 5137 otr030 lda l.l010-* ^tfsoip 07302 1 32 036 0 5138 ansa t.flg3,1 suspend not in progress any more 07303 0 07 133 7436 5139 lda l.l009-* tforp 07304 1 31 036 0 5140 cana t.flg3,1 is a resume pending? 07305 0 74 055 7362 5141 tze otrret-* no, all done 07306 1 62 036 0 5142 ersa t.flg3,1 otherwise, turn flag off 07307 1 20 013 0 5143 szn t.ocur,1 anything to resume? 07310 0 74 003 7313 5144 tze otr040-* no, wrap it up 07311 4 10 134 7445 5145 tsy a.l005-*,* (resout) else process it now 07312 0 71 050 7362 5146 tra otrret-* 5147 07313 0 07 125 7440 5148 otr040 lda l.l011-* ^tfosus 07314 1 32 001 0 5149 ansa t.flg,1 turn flag off now assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 163 optro - output tally runout status 07315 0 07 124 7441 5150 lda l.l012-* ^sffssb 07316 2 32 005 0 5151 ansa sf.flg,2 this one too 07317 2 56 022 0 5152 stz sf.noc,2 make sure we start clean next time 5153 07320 1 20 024 0 5154 otr050 szn t.dcwl,1 any dcw list to do? 07321 0 74 011 7332 5155 tze otr060-* no, check echo 5156 07322 1 41 023 0 5157 ldx3 t.dcwa,1 get addr of said list 07323 3 07 000 0 5158 lda 0,3 get the dcw 07324 2337 17 0 5159 arl 15 get op type 07325 422 001 0 5160 icmpa dl.cmd is it cmd dcw? 07326 0 64 004 7332 5161 tnz otr060-* no, not so important 5162 07327 3 07 000 0 5163 lda 0,3 reload dcw 07330 0 31 672 7222 5164 cana l.k011-* (=c.rrec+c.rdtr+c.sbrk) ? 07331 0 64 004 7335 5165 tnz otr070-* yes, process dcw first 5166 07332 4 10 707 7241 5167 otr060 tsy a.k006-*,* (=echock) test for echoing 07333 0 71 027 7362 5168 tra otrret-* good, there was some end of binary card 00000102 07334 0 71 001 7335 5169 tra otr070-* no, cleanup the remains 5170 07335 2 07 005 0 5171 otr070 lda sf.flg,2 get the sfcm flags 07336 222 100 0 5172 icana sffech is a tab, cr, lf, echo in progress? 07337 0 74 007 7346 5173 tze otr080-* no, cleanup 5174 07340 673 100 0 5175 ila sffech get the echo flag 07341 322 777 0 5176 iera -1 invert the word 07342 2 32 005 0 5177 ansa sf.flg,2 and turn it off in sfcm 5178 07343 673 200 0 5179 ila pb.xmt get the xmt bit 07344 322 777 0 5180 iera -1 07345 2 32 012 0 5181 ansa sf.pcw,2 and turn it off in the pcw 5182 07346 1 07 024 0 5183 otr080 lda t.dcwl,1 any dcw list? 07347 0 74 013 7362 5184 tze otrret-* nope, done 07350 422 001 0 5185 icmpa 1 exactly one dcw left? 07351 0 64 010 7361 5186 tnz otr100-* no, process it like any other 07352 1 41 023 0 5187 ldx3 t.dcwa,1 otherwise see if it's a normal end-of-output 07353 3 07 000 0 5188 lda 0,3 get the subop 07354 0 27 010 7364 5189 cmpa otrdc1-* =(cmd rxmit+sterm) 07355 0 64 004 7361 5190 tnz otr100-* no, check for one other special 07356 1 56 024 0 5191 stz t.dcwl,1 we're going to take care of dcwlist now 07357 0 10 024 7403 5192 tsy gentrm-* do terminate status 07360 0 71 002 7362 5193 tra otrret-* done 5194 check for same but also turning off rts 07361 4 10 062 7443 5195 otr100 tsy a.l003-*,* (=hdcw) call dcw processor 5196 07362 5197 otrret return optro 5198 5199 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 164 optro - output tally runout status 07364 5200 otrdc1 cmd c.rxmt+c.strm 07365 5201 otrdc2 cmd c.rxmt+c.rrqs+c.strm 07366 5202 otrdc3 cmd c.rrqs assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 165 opxte - output transfer timing error status 07367 5204 opxte subr oxt,(x1) 5205 5206 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5207 * 5208 * opxte 5209 * 5210 * output transfer timming errors are very 5211 * unusual, and in debugging mode we will 5212 * die on them, otherwise ctrl tables will 5213 * be poked with status 5214 * 5215 * upon entry: 5216 * x1 - virtual tib address 5217 * x2 - virtual sfcm address 5218 * 5219 * returns: 5220 * 5221 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5222 07375 1 07 000 0 5223 lda t.stat,1 get the tib status bits 07376 022 017 0 5224 iana s.dss but only the ones we want 07377 0 37 030 7427 5225 ora l.l002-* (=s.xte) get the xte status 07400 4 10 044 7444 5226 tsy a.l004-*,* (=istat) call intrp 5227 5230 07401 5231 return opxte end of binary card 00000103 assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 166 gentrm - subroutine to generate output terminate status 5233 5234 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5235 * 5236 * gentrm 5237 * 5238 * this subroutine is called by optro to generate terminate 5239 * status and clean up after exiting transmit mode 5240 * 5241 * upon entry: 5242 * x1 - virtual tib address 5243 * x2 - virtual sfcm address 5244 * 5245 * 5246 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5247 07403 5248 gentrm subr gen 07406 2 56 010 0 5249 stz sf.ob0,2 xmit is down, no buffers now 07407 2 56 011 0 5250 stz sf.ob1,2 07410 2 41 000 0 5251 ldx3 sf.hcm,2 get hardware comm address 07411 0 07 022 7433 5252 lda l.l006-* =o010000 07412 3 17 005 0 5253 sta h.sic0+1,3 mark both send icws exhausted 07413 3 17 007 0 5254 sta h.sic1+1,3 07414 0 07 020 7434 5255 lda l.l007-* =^tsfxmt 07415 1 32 000 0 5256 ansa t.stat,1 not in xmit now 07416 673 200 0 5257 ila pb.xmt mark sf.pcw also 07417 322 777 0 5258 iera -1 07420 2 32 012 0 5259 ansa sf.pcw,2 07421 1 07 000 0 5260 lda t.stat,1 get current status 07422 022 017 0 5261 iana s.dss interesting part 07423 0 37 012 7435 5262 ora l.l008-* (=s.term) set terminate status 07424 4 10 020 7444 5263 tsy a.l004-*,* istat 07425 5264 return gentrm 5265 5266 5267 5268 *l.l001 unused 07427 020000 0 5269 l.l002 vfd 18/s.xte 07430 400000 0 5270 l.l003 vfd 18/tfosus 07431 000004 0 5271 l.l004 vfd 18/sffcoi 07432 200000 0 5272 l.l005 vfd 18/sffssb 07433 010000 0 5273 l.l006 oct 010000 exhausted icw tally word 07434 777377 0 5274 l.l007 vfd o18//tsfxmt 07435 000100 0 5275 l.l008 vfd 18/s.term 07436 004000 0 5276 l.l009 vfd 18/tforp 07437 775777 0 5277 l.l010 vfd o18//tfsoip 07440 377777 0 5278 l.l011 vfd o18//tfosus 07441 577777 0 5279 l.l012 vfd o18//sffssb 5280 07442 0 07366 1 5281 a.l001 ind otrdc3 5282 *a.l002 unused 07443 0 00012 1 5283 a.l003 ind hdcw assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 167 gentrm - subroutine to generate output terminate status 07444 0 06000 3 5284 a.l004 ind istat 07445 0 06676 1 5285 a.l005 ind resout assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 168 freout subroutine, frees output buffer 5287 5288 this subroutine is called when output from a buffer is 5289 finished. its job is to free the buffer (unless its 5290 bffhld flag is on), decrement t.ocnt, and issue a send_output 5291 request if appropriate 5292 5293 at entry: 5294 x1 cpntains virtual tib address 5295 x3 contains address of buffer 5296 5297 07446 5298 freout subr fre,(x3) end of binary card 00000104 5299 07454 3 07 001 0 5300 lda bf.flg,3 get buffer flags 07455 0 31 026 7503 5301 cana l.u001-* check hold output buffer flag 07456 0 64 021 7477 5302 tnz freret-* yes - dont free the buffer 5303 07457 0 31 025 7504 5304 cana l.u002-* (=bffctl) control info in this buffer? 07460 0 64 015 7475 5305 tnz fre010-* yes, don't decrement count 5306 07461 673 777 0 5307 ila -1 get the minus one 07462 1 16 016 0 5308 asa t.ocnt,1 decrement counter 5309 07463 1 07 002 0 5310 lda t.flg2,1 get 2nd word of tib flags 07464 0 31 021 7505 5311 cana l.u003-* check if we just used acu 07465 0 64 010 7475 5312 tnz fre010-* there's no output to ask for 5313 07466 1 07 016 0 5314 lda t.ocnt,1 get new value of count 07467 422 002 0 5315 icmpa bufthr are we at the threshold? 07470 0 64 005 7475 5316 tnz fre010-* no, continue 5317 07471 1 20 012 0 5318 szn t.ocp,1 is there more output in the fnp already? 07472 0 64 003 7475 5319 tnz fre010-* yes, don't ask for more yet 5320 07473 473 105 0 5321 ilq sndout get the "send_output" op-code 07474 4 10 005 7501 5322 tsy a.u001-*,* (=denq) queue it up 5323 07475 473 000 0 5324 fre010 ilq 0 let frebuf get buffer size 07476 4 10 004 7502 5325 tsy a.u002-*,* (=frebuf) free the spent buffer 5326 07477 5327 freret return freout 5328 5329 07501 0 02000 3 5330 a.u001 ind denq 07502 0 14000 3 5331 a.u002 ind frebuf 5332 07503 001000 0 5333 l.u001 vfd 18/bffhld 07504 002000 0 5334 l.u002 vfd 18/bffctl 07505 000020 0 5335 l.u003 vfd 18/tfacu assm 01 12-10-82 15.608 hsla_man - multics/fnp (mcs) hsla manager page 169 hsla jump tables 5337 5338 macro to create jump tables 5339 5340 jmptbl macro 5341 crsm on 5342 idrp #1 5343 #3#1 ind invp interrupt processor (sked$invp) 5344 zero 0 5345 tsy #3#1-*,* 5346 #2#1 vfd 4/h1ch+#1-1,2/#1,5/0,7/schdmn 5347 dup 5,31 5348 zero 0 5349 tsy #3#1-*,* 5350 subch set *-#2#1 5351 subch set subch/3 5352 vfd 4/h1ch+#1-1,2/#1,5/subch,7/schdmn 5353 idrp 5354 endm jmptbl 5355 5356 5357 5358 5359 ********************************************************* 5360 * 5361 * a jump table consists of a three word vector. 5362 * a jump table is transferred to by the hardware upon an 5363 * interrupt for this device. 5364 * 5365 * word 0 is tsy'ed to by the hardware and thus contains 5366 * the ic at the time of the interrupt 5367 * word 1 contains the instruction tsy scheduler$invp 5368 * word 2 contains a packed representation of the device 5369 * which interrupted -- it has: 5370 * 4 bits of iom chan #, 5371 * 2 bits device # (1 - 3 for hsla's), 5372 * 5 bits subchannel # (0 - 37(8) for hsla's) 5373 * 7 bits module # for the scheduler. 5374 * 5375 ********************************************************* 5376 5377 07506 5378 hslajt null 5379 07506 5380 jmptbl (1,2,3) end of binary card 00000112 5381 end of binary card 00000113 5382 end 10152 is the next available location. 355map version/assembly dates gmpa 770711/071177 gmpb 770711/071177 gmpc 770711/071177 there were no warning flags in the above assembly assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 170 octal symbol references by sequence no. 5055 abf010 3516 3505 3516 5061 abf011 3522 3509 3522 5070 abfret 3531 3519 3524 3531 5037 addbuf 3482 3482 3531 3623 3890 3663 adt010 2730 2730 2733 3667 adt020 2734 2729 2734 3671 adt030 2736 2732 2736 3672 adt040 2737 2735 2737 3647 adtopa 2727 2694 2727 2738 264 a.a001 537 407 537 265 a.a002 538 409 538 266 a.a003 539 479 539 267 a.a004 540 490 540 270 a.a005 541 541 672 271 a.a006 542 542 679 272 a.a007 543 500 543 273 a.a008 544 358 370 544 274 a.a011 546 423 546 275 a.a012 547 425 547 544 a.b001 769 769 1027 545 a.b006 773 773 905 546 a.b007 774 774 1052 1063 547 a.b009 776 733 776 913 3074 a.c001 2245 2178 2213 2245 3075 a.c002 2246 2176 2212 2246 3076 a.c003 2247 2147 2247 3077 a.c004 2248 2248 2277 3503 a.d002 2607 2477 2607 2864 3504 a.d003 2608 2512 2608 3505 a.d004 2609 2560 2609 3506 a.d005 2610 2296 2610 3510 a.d007 2612 2553 2612 3511 a.d008 2613 2550 2613 3512 a.d009 2614 2558 2614 2793 3513 a.d010 2615 2301 2615 2841 3514 a.d011 2616 2616 2847 2848 2854 2856 2857 3515 a.d012 2617 2617 2865 3516 a.d013 2618 2618 2869 3517 a.d014 2619 2448 2619 3520 a.d015 2620 2410 2620 4307 a.e001 3069 2912 3069 4310 a.e002 3070 3070 3149 4311 a.e003 3071 3071 3155 4312 a.e004 3072 3029 3072 3147 3245 3326 4313 a.e005 3073 3073 3293 4314 a.e006 3074 3074 3300 4315 a.e007 3075 3075 3362 4316 a.e008 3076 3076 3364 4317 a.e009 3077 2919 2980 3077 3258 4320 a.e010 3078 3078 3172 4321 a.e011 3079 3079 3256 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 171 octal symbol references by sequence no. 4322 a.e012 3080 3080 3212 4323 a.e013 3081 2944 3081 4324 a.e014 3082 3082 3280 4325 a.e015 3083 2987 3083 4326 a.e016 3084 2994 3084 4327 a.e017 3085 2995 3085 4330 a.e018 3086 3086 3332 3340 4331 a.e019 3087 2852 3087 4332 a.e020 3088 2896 3088 4333 a.e021 3089 2999 3089 4334 a.e022 3090 3000 3090 4335 a.e023 3091 2867 3091 4336 a.e024 3092 2921 3092 5027 a.f001 3473 3456 3473 5030 a.f002 3474 3422 3474 5031 a.f003 3475 3412 3475 5032 a.f004 3476 3391 3476 5033 a.f005 3477 3424 3477 5034 a.f006 3478 3478 3514 3529 5035 a.f007 3479 3452 3479 5036 a.f008 3480 3343 3480 5160 a.g001 3617 3608 3617 5161 a.g002 3618 3597 3618 5162 a.g003 3619 3602 3619 5163 a.g005 3620 3595 3620 3654 5164 a.g008 3623 3603 3623 5762 a.h001 4137 4047 4137 5763 a.h007 4143 4049 4143 5764 a.h008 4144 4120 4144 5455 a.i001 3883 3827 3883 5456 a.i004 3886 3869 3886 5457 a.i005 3887 3833 3887 5460 a.i008 3889 3678 3830 3889 5461 a.i009 3890 3680 3831 3890 5601 a.j001 3991 3920 3922 3991 5602 a.j002 3992 3911 3992 5603 a.j003 3993 3930 3993 5604 a.j004 3994 3954 3994 5605 a.j005 3995 3933 3995 5606 a.j006 3996 3918 3935 3996 5607 a.j007 3997 3943 3997 7234 a.k001 5088 5055 5088 7235 a.k002 5089 4919 5089 7236 a.k003 5090 4900 4981 5090 7240 a.k005 5092 5054 5092 7241 a.k006 5093 5093 5167 7242 a.k008 5095 4921 5095 7243 a.k011 5098 5052 5098 7443 a.l003 5283 5195 5283 7444 a.l004 5284 5226 5263 5284 7445 a.l005 5285 5145 5285 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 172 octal symbol references by sequence no. 6444 a.n001 4539 4362 4539 6445 a.n002 4540 4480 4540 6446 a.n003 4541 4509 4541 6447 a.n004 4542 4493 4542 6450 a.n005 4543 4497 4543 6451 a.o003 4553 4311 4553 2567 a.p001 2023 1959 2023 2570 a.p002 2024 2009 2024 2253 a.q001 1839 1737 1839 2254 a.q002 1840 1772 1840 2255 a.q003 1841 1841 1907 2256 a.q004 1842 1780 1807 1842 2257 a.q005 1843 1784 1843 6735 a.s001 4837 4813 4837 6736 a.s002 4838 4817 4838 6737 a.s003 4839 4820 4839 6620 a.t001 4720 4709 4720 7501 a.u001 5330 5322 5330 7502 a.u002 5331 5325 5331 771 a.v001 979 976 979 772 a.v002 980 977 980 3640 a.w001 2705 2705 2728 2734 3641 a.w002 2706 2679 2706 2737 3642 a.w003 2707 2676 2707 3643 a.w004 2708 2687 2708 3644 a.w005 2709 2709 2759 5222 a.x001 3687 3676 3681 3687 5223 a.x002 3688 3682 3684 3688 5346 a.y001 3772 3734 3741 3772 5347 a.y002 3773 3737 3773 1337 a.z001 1251 1112 1251 1364 1340 a.z002 1252 1220 1252 1468 1341 a.z003 1253 1253 1312 1344 1368 1371 1464 1342 a.z004 1254 1254 1379 1343 a.z005 1255 1255 1390 1398 1455 1344 a.z006 1256 1256 1512 3575 alb010 2674 2674 2702 3602 alb020 2679 2679 2698 3632 alb030 2699 2688 2699 3632 alb040 2700 2677 2681 2682 2700 3551 albchs 2671 980 2671 2703 3091 3635 albret 2703 2675 2703 2275 bd133 1859 1789 1859 20000 bffbrk 55 55 3612 2000 bffctl 55 55 5071 5334 1000 bffhld 55 55 5072 5333 40000 bfflst 55 55 758 2235 5073 2 bf.dta 55 55 861 931 1688 2137 2166 2196 3469 4130 4194 4248 4308 5029 1 bf.flg 55 55 824 2181 2215 3589 4869 4892 5045 5300 0 bf.nxt 55 55 836 839 842 852 1067 2145 2185 2193 2206 2731 2736 3558 3740 3743 4877 4896 4976 5026 5033 5040 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 173 octal symbol references by sequence no. 1 bf.siz 55 55 812 845 1068 2689 3561 1 bf.tly 55 55 809 854 856 1072 1664 2141 2170 2200 2374 2376 2693 3418 3420 3744 4186 4240 4300 5034 3716 bftsa 2763 2757 2763 2872 2955 2985 3687 3715 bftx3 2762 2762 2873 3688 500 bib010 720 713 720 516 bib020 738 729 738 523 bibcnt 746 746 811 816 858 863 871 521 bibibp 744 709 718 725 731 744 851 911 918 922 522 bibicw 745 706 716 723 732 745 874 912 928 932 934 936 517 bibret 740 736 740 524 bibtmp 747 747 827 829 837 850 862 867 869 873 2 b.0 759 776 1246 1268 1688 2238 3469 4130 4144 4210 4251 4256 4323 4326 4345 4347 4525 5066 3 b.1 754 868 1245 1658 1689 2028 4132 4333 4409 4535 4557 446 bldibf 683 441 683 740 412 bldobf 644 396 455 644 681 702 bni030 918 907 918 715 bni040 931 925 931 721 bni050 936 929 936 663 bnibuf 885 738 879 885 944 730 bniret 944 916 940 944 732 bnispc 946 776 946 4144 444 bobret 681 664 670 678 681 4405 bscend 3125 3085 3125 4361 bscsts 3115 3084 3115 5 bufshf 55 55 814 1070 2691 40 bufsiz 55 55 57 245 1005 2008 700000 bufsmk 55 55 750 2 bufthr 55 55 5315 777 buftmk 55 55 760 1684 2234 3464 4208 4526 5067 756 cbu010 969 966 969 733 cbufsz 961 78 942 961 978 767 cburet 978 963 978 1704 cct010 1509 1492 1509 1707 cct020 1512 1494 1512 1711 cct030 1514 1496 1514 2 cct.ad 231 231 1318 1327 1347 1385 1387 1395 1399 1415 1454 5 cct.ln 234 234 1363 1467 0 cct.nx 229 229 1333 1350 1372 1457 1462 1 cct.pr 230 230 1370 1373 1456 1459 4 cct.rc 233 233 1408 1409 1451 3 cct.sz 232 232 1315 1392 1401 1411 1453 1720 cctret 1522 1505 1511 1513 1522 2120 cfg010 1719 1719 1820 2134 cfg019 1737 1737 1769 2135 cfg020 1738 1738 1773 2156 cfg030 1761 1751 1761 2161 cfg040 1766 1759 1766 2164 cfg041 1771 1739 1771 2170 cfg050 1776 1729 1776 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 174 octal symbol references by sequence no. 2202 cfg051 1788 1782 1788 2174 cfg052 1781 1781 1785 2207 cfg053 1793 1790 1793 2235 cfg060 1818 1768 1774 1815 1818 2237 cfg070 1822 1723 1822 11 cfgbdl 1866 1843 1866 2273 cfgbds 1857 1795 1842 1843 1857 1866 2371 cfgend 1891 1840 1891 2304 cfgflg 1868 1795 1868 2371 cfgicw 1895 1880 1895 1909 4 cfglen 1893 1771 1893 2403 cfgrsc 1913 1884 1885 1886 1887 1913 1916 2250 cfgsub 1835 1736 1742 1767 1835 2252 cfgsvf 1837 1788 1792 1801 1837 2112 cfgsx2 1693 1693 1717 1822 2315 cfgtab 1879 1839 1879 2251 cfgtmp 1836 1797 1806 1836 2606 cioc 2040 543 1841 2040 2086 2614 4720 4838 5098 2672 ciopcw 2088 2058 2060 2064 2068 2083 2085 2088 1 c.off 578 555 557 559 561 567 572 578 0 c.on 577 554 556 558 560 562 563 564 565 566 571 577 2 c.rcrq 53 53 572 40 c.rdtr 53 53 559 5074 2 c.rrec 53 53 555 5074 20000 c.rrqs 53 53 567 5201 5202 200 c.rsup 53 53 561 10 c.rxmt 53 53 557 5200 5201 1000 c.sbrk 53 53 563 5074 1 c.scrq 53 53 571 20 c.sdtr 53 53 558 2000 c.smrk 53 53 564 1 c.srec 53 53 554 10000 c.srqs 53 53 566 100 c.ssup 53 53 560 400 c.stat 53 53 562 4000 c.strm 53 53 565 5200 5201 4 c.sxmt 53 53 556 332 cmdend 568 538 568 411 cmdle 642 410 426 632 642 2 cmdlen 575 575 631 410 cmdls 641 408 424 613 641 352 cmdprc 593 411 427 593 639 276 cmdtab 553 537 553 364 cpr010 614 614 633 376 cpr020 628 621 628 400 cpr030 631 617 626 631 15 cr 218 218 1169 1320 cstsa 1236 1236 1242 1336 csttmp 1249 1238 1239 1249 7 ct.mrk 63 63 1160 1171 1191 1199 1208 1212 1261 0 ct.ncs 63 63 1259 1264 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 175 octal symbol references by sequence no. 100 ct.tb1 63 63 1185 1264 1 ctrl 84 44 dcw002 361 353 361 54 dcw004 372 347 372 57 dcw005 376 376 513 114 dcw010 400 388 400 142 dcw020 429 414 421 429 154 dcw025 441 437 441 160 dcw030 447 433 447 170 dcw035 458 449 453 458 200 dcw040 468 456 462 468 207 dcw050 478 470 478 212 dcw055 482 482 491 217 dcw060 489 484 489 227 dcw070 499 495 499 245 dcwpcw 518 401 473 499 505 518 243 dcwret 515 359 391 394 398 503 507 515 246 dcwst 519 405 429 461 519 2 denq 94 5091 5330 4 derrq 95 2612 1 dl.cmd 176 176 387 512 5160 4 dl.cr 61 61 4297 2 dl.in 177 177 390 3 dl.out 178 178 669 4 dl.rdt 179 179 393 5 dl.sup 180 180 420 4735 dmp010 3402 3397 3402 4740 dmp020 3406 3401 3406 4750 dmp030 3416 3411 3416 4760 dmp040 3427 3407 3414 3427 4761 dmp050 3429 3394 3425 3429 4770 dmp060 3437 3434 3437 4703 dmpbuf 3368 3069 3368 3440 4772 dmpret 3440 3389 3440 5015 dmptmp 3460 3392 3406 3419 3460 3713 dsfret 2760 2755 2758 2760 13 dspqur 87 2607 5550 dssflg 3969 3079 3947 3951 3969 3675 dumsbf 2751 2751 2760 2913 2 eb.dta 243 243 2028 4557 0 eb.inp 240 240 2015 4632 1 eb.otp 241 241 2016 4605 4615 4624 4645 2 eb.tly 242 242 2017 4598 4626 4643 6553 echock 4658 3080 4541 4658 4713 4715 4745 5093 6601 eck010 4699 4696 4699 6612 eck020 4713 4680 4684 4687 4713 6616 eckicw 4717 4689 4699 4717 6613 eckret 4715 4711 4715 5571 ehstat 3979 3979 3993 5575 endh1 3983 3983 3997 115 errmsg 193 193 2549 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 176 octal symbol references by sequence no. 3 etx 220 220 1164 14 ff 217 217 1162 20 fg.5bt 53 53 1884 40 fg.6bt 53 53 1885 100 fg.7bt 53 53 1886 200 fg.8bt 53 53 1887 3 fg.bd 186 186 1728 400 fg.beb 53 53 1888 1000 fg.btr 53 53 1889 2000 fg.cct 53 53 1890 1 fg.icw 53 53 1880 10 fg.lpo 53 53 1883 2 fg.lpr 53 53 1881 4 fg.lps 53 53 1882 2 fg.rmd 185 185 1845 7475 fre010 5324 5305 5312 5316 5319 5324 14 frebuf 93 1255 2709 3473 5331 15 fremem 98 1252 3479 4137 7446 freout 5298 2247 5089 5298 5327 7477 freret 5327 5302 5327 5011 fri010 3455 3449 3455 5013 fribak 3457 3453 3457 4774 fribuf 3445 3427 3435 3445 3457 6424 fstchr 4521 4453 4467 4479 4521 6425 fstwrd 4522 4455 4464 4522 5 g3wjt 86 2248 6500 geb005 4602 4592 4596 4602 6502 geb010 4605 4600 4605 6522 geb020 4624 4618 4624 6533 geb030 4635 4629 4635 6540 geb040 4641 4633 4641 6550 gebadr 4653 4608 4611 4625 4648 4653 6546 gebret 4650 4603 4650 6551 gebtly 4654 4613 4620 4622 4628 4631 4641 4654 6552 gebtmp 4656 4635 4639 4656 7403 gentrm 5248 5192 5248 5264 16 getbuf 91 1254 2024 17 getcmt 99 4553 6454 geteb 4566 4566 4647 4650 4686 20 getmem 97 769 1251 21 gettib 90 2610 2003 gettly 1608 1567 1608 1679 3476 22 getubf 92 774 2708 1024 ghi010 1026 1019 1021 1024 1026 1036 ghi015 1038 1012 1038 1051 ghi020 1052 1049 1052 1062 ghi025 1063 1008 1015 1040 1063 1064 ghi030 1066 1061 1066 1076 ghi040 1077 1028 1053 1064 1077 775 ghibuf 984 773 984 1035 1066 1075 4143 1074 ghiret 1075 1036 1043 1044 1075 1079 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 177 octal symbol references by sequence no. 1106 ghitmp 1081 1047 1048 1081 2030 gtl010 1643 1638 1643 2052 gtl020 1663 1654 1663 2061 gtl030 1672 1661 1672 2065 gtlret 1679 1641 1674 1679 2067 gtltmp 1681 1666 1670 1676 1677 1681 6 h1ch 200 200 1924 2075 5380 5571 h1stat 3981 3981 3995 7101 hav010 4971 4966 4971 7104 hav020 4975 4970 4975 7112 havret 4983 4947 4953 4957 4962 4969 4973 4983 73 hbfnch 57 57 815 1071 2692 2100 hcfg 1693 72 1693 1831 6624 hcheck 4740 76 4740 4747 6640 hchret 4747 4744 4746 4747 4425 hdcend 3137 3090 3137 4405 hdcsts 3129 3089 3129 12 hdcw 326 66 326 515 3075 5283 1722 hgeti 1546 69 1546 1603 1772 hgi010 1597 1574 1595 1597 1774 hgi020 1599 1569 1571 1596 1599 2002 hgibp 1606 1577 1580 1606 1732 hgisx3 1546 1546 1599 1600 2001 hgitly 1605 1572 1592 1593 1594 1605 3100 hintr 2250 67 2250 14 h.aicw 48 48 2492 2516 10 h.baw 48 48 1444 1504 1520 0 h.ric0 48 48 705 715 1644 1647 2351 2354 4091 4099 4459 2 h.ric1 48 48 715 1647 2354 4099 4459 11 h.sfcm 48 48 2505 4 h.sic0 48 48 2111 2121 3194 4692 4698 4775 4777 4914 4915 4950 4959 4964 5007 5020 5129 5253 6 h.sic1 48 48 2121 3195 4698 4776 4778 4914 4951 4960 5020 5125 5254 2457 hmode 1937 70 1937 2019 7040 houtav 4929 71 4929 4983 6 hpri 210 210 2315 2573 2862 3 hprip3 211 211 2397 20000 hs.acr 110 110 3977 3989 10000 hs.ads 110 110 3978 3989 20000 hs.aiw 110 110 2595 2000 hs.brk 110 110 3976 2000 hs.byt 110 110 3135 100000 hs.cd 110 110 3973 4 hs.crc 110 110 3062 3123 200000 hs.cts 110 110 3972 2 hs.dlo 110 110 3981 3988 100000 hs.dms 110 110 3061 3117 400000 hs.dsr 110 110 3971 200 hs.dss 110 110 2602 3050 3103 20 hs.fce 110 110 3132 100 hs.isd 110 110 3130 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 178 octal symbol references by sequence no. 200000 hs.nms 110 110 2600 3053 3061 3100 3116 1000 hs.per 110 110 3061 3063 3119 2000 hs.ptr 110 110 2602 3054 3061 3101 3108 1 hs.pwi 110 110 3982 3988 4 hs.rab 110 110 3133 1000 hs.rbt 110 110 3062 3122 3136 400000 hs.rcs 110 110 2597 3044 3470 400 hs.rcv 110 110 3058 4000 hs.ri 110 110 3975 2 hs.rto 110 110 3124 10000 hs.siw 110 110 2594 2602 3047 3067 5070 10 hs.sqo 110 110 2812 3316 40000 hs.src 110 110 3974 40000 hs.trm 110 110 3061 3099 3115 4000 hs.tro 110 110 2591 2602 3098 3109 3120 3129 200 hs.xmt 110 110 3059 40 hs.xte 110 110 3102 3110 3118 3131 0 hsla 108 65 108 109 7506 hslajt 5378 73 5378 3372 hslms1 2507 77 2507 5551 hstat 3971 3971 3992 3765 hstprc 2819 2574 2819 17 htfspd 52 52 1852 0 ht.flg 52 52 1805 1809 1 ht.tib 52 52 381 1931 2082 5105 ich010 3557 3551 3557 5110 ich020 3561 3555 3561 5072 ichain 3533 3477 3501 3533 3566 2401 icwbak 1908 1904 1908 5507 ids010 3922 3915 3922 3931 5514 ids020 3929 3924 3929 5520 ids030 3935 3935 3944 5525 ids040 3942 3937 3942 5547 idsst 3968 3910 3927 3940 3953 3958 3962 3968 4353 iends 3104 3071 3104 23 inproc 100 4540 3167 int010 2329 2329 2483 2539 3200 int011 2344 2335 2344 3223 int012 2368 2365 2368 3233 int013 2378 2367 2378 3234 int014 2380 2332 2380 3243 int020 2404 2342 2345 2381 2404 3251 int024 2413 2408 2413 3253 int025 2416 2405 2416 3271 int027 2431 2424 2427 2431 3276 int028 2436 2418 2421 2433 2436 3330 int030 2468 2414 2462 2468 3341 int040 2481 2429 2470 2481 3346 int050 2487 2320 2330 2487 3370 int060 2504 2494 2499 2504 3375 int062 2511 2507 2511 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 179 octal symbol references by sequence no. 3377 int064 2515 2509 2515 3420 int070 2541 2521 2524 2528 2534 2541 3311 int28a 2450 2442 2444 2447 2450 3440 intcnt 2563 2310 2311 2563 3444 intcrp 2567 2347 2378 2484 2487 2523 2526 2538 2567 3443 intend 2566 2324 2482 2566 3455 inter2 2581 2581 2613 3441 intjtw 2564 2278 2280 2281 2564 3456 intln2 2582 2552 2582 3454 intlno 2579 2288 2293 2295 2551 2579 3437 intret 2560 2298 2489 2542 2547 2560 3442 intrsw 2565 2313 2488 2517 2565 3445 intrtb 2568 2300 2475 2568 3452 intsai 2575 2508 2575 3450 intskd 2573 2316 2398 2476 2573 2863 3447 intsql 2570 2457 2460 2570 3457 intsqo 2584 2314 2407 2411 2498 2502 2541 2584 3460 inttly 2585 2358 2375 2585 3446 intvtb 2569 2302 2479 2569 3 invp 85 5380 5206 ipbfsw 3659 3083 3659 3686 5462 ipdss 3892 3077 3103 3892 3965 5165 ipmark 3625 3100 3625 3656 5375 ipptro 3802 3078 3101 3802 3835 5416 ipt010 3830 3825 3830 5420 ipt030 3833 3828 3833 5116 ipterm 3568 3081 3099 3568 3610 5423 iptro 3837 3098 3837 3871 5356 ipxte 3783 3102 3783 3800 6325 isc010 4453 4449 4453 6371 isc020 4490 4487 4490 6376 isc030 4495 4492 4495 6402 isc040 4499 4496 4499 6414 iscret 4512 4441 4474 4475 4494 4498 4500 4503 4507 4510 4512 6310 iscsx3 4418 4418 4450 6 istat 83 3072 3478 3617 3886 3994 5284 4337 istats 3098 3070 3098 676 .crcct 59 59 1253 702 .crpte 59 59 2611 742 .mbfpa 50 50 2696 746 .mpanf 50 50 3764 744 .mupab 50 50 3755 247 l.a001 522 404 522 250 l.a002 523 523 620 251 l.a003 524 430 431 524 252 l.a004 525 448 459 460 525 253 l.a005 526 400 526 254 l.a006 527 472 506 527 255 l.a007 528 468 528 256 l.a008 529 464 529 257 l.a009 530 530 615 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 180 octal symbol references by sequence no. 260 l.a010 531 436 531 261 l.a011 532 443 532 262 l.a012 533 494 533 263 l.a013 534 496 534 525 l.b001 750 750 853 526 l.b002 751 751 1025 527 l.b003 752 752 802 924 939 1014 530 l.b004 753 753 1023 531 l.b005 754 754 927 532 l.b006 755 755 1020 533 l.b007 756 677 756 534 l.b008 757 734 757 914 535 l.b009 758 758 823 536 l.b010 759 759 860 933 537 l.b011 760 760 810 540 l.b012 762 762 1078 541 l.b015 764 728 764 1007 542 l.b016 765 765 821 1011 543 l.b017 766 766 1018 3062 l.c001 2234 2142 2171 2201 2234 3063 l.c002 2235 2182 2216 2235 3064 l.c003 2236 2207 2236 3065 l.c004 2237 2157 2237 3066 l.c005 2238 2167 2197 2238 3067 l.c006 2239 2059 2239 3070 l.c007 2240 2077 2240 3071 l.c008 2241 2222 2241 3072 l.c009 2242 2152 2242 3073 l.c010 2243 2219 2243 3461 l.d001 2588 2286 2588 3462 l.d002 2589 2360 2493 2589 3463 l.d003 2590 2557 2590 3464 l.d004 2591 2334 2591 3465 l.d005 2592 2364 2417 2592 3470 l.d007 2594 2344 2380 2432 2441 2594 3471 l.d008 2595 2352 2370 2595 3472 l.d009 2596 2357 2596 3473 l.d010 2597 2331 2443 2597 3474 l.d011 2598 2340 2598 2790 3475 l.d012 2599 2599 2785 3476 l.d013 2600 2420 2600 3477 l.d014 2601 2400 2423 2434 2601 3500 l.d015 2602 2426 2602 3501 l.d016 2603 2496 2603 2783 3502 l.d017 2604 2446 2604 4257 l.e001 3044 2895 3044 4260 l.e002 3045 2909 3045 4261 l.e003 3046 3046 3238 4262 l.e004 3047 2983 3047 3175 3198 3304 4263 l.e005 3048 3048 3218 3240 4264 l.e006 3049 2901 3049 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 181 octal symbol references by sequence no. 4265 l.e007 3050 2916 2978 3050 4266 l.e008 3051 3051 3193 4267 l.e009 3052 3052 3182 4270 l.e010 3053 3053 3166 4271 l.e011 3054 3054 3169 4272 l.e012 3055 3055 3249 3252 4273 l.e013 3056 3056 3320 4274 l.e014 3057 2930 2950 2971 3057 4275 l.e015 3058 3058 3227 4276 l.e016 3059 3059 3232 4277 l.e017 3060 3060 3325 4300 l.e018 3061 2966 3061 4301 l.e019 3062 2968 3062 4302 l.e020 3063 3063 3141 4303 l.e021 3064 3064 3146 4304 l.e022 3065 3065 3352 4305 l.e023 3066 2990 3066 3355 4306 l.e024 3067 2953 3067 5016 l.f001 3463 3404 3463 5017 l.f002 3464 3416 3464 3745 5021 l.f004 3466 3466 3513 5022 l.f005 3467 3467 3528 5023 l.f006 3468 3396 3410 3448 3468 3504 5024 l.f007 3469 3399 3469 5025 l.f008 3470 3344 3470 5026 l.f009 3471 3471 3517 5154 l.g001 3612 3588 3612 5155 l.g002 3613 3607 3613 5156 l.g003 3614 3614 3651 5157 l.g004 3615 3592 3600 3615 5755 l.h001 4129 4030 4106 4129 5756 l.h002 4130 4109 4130 5757 l.h003 4131 4035 4054 4131 5760 l.h004 4132 4112 4132 5761 l.h007 4135 4121 4135 5451 l.i001 3874 3824 3874 5452 l.i003 3876 3865 3876 5454 l.i009 3881 3867 3881 5575 l.j001 3986 3950 3986 5576 l.j002 3987 3914 3987 5577 l.j003 3988 3917 3988 5600 l.j004 3989 3919 3989 7210 l.k001 5064 4968 4972 5064 7211 l.k002 5065 4952 4961 4965 5065 7212 l.k003 5066 5030 5066 7213 l.k004 5067 5035 5067 7215 l.k006 5069 4956 5069 7216 l.k007 5070 4922 5070 7220 l.k009 5072 4870 5072 7221 l.k010 5073 4872 4893 5046 5073 7222 l.k011 5074 5074 5164 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 182 octal symbol references by sequence no. 7224 l.k013 5076 5051 5076 7225 l.k014 5077 5049 5077 7226 l.k016 5079 5042 5079 7227 l.k018 5081 4906 5081 7427 l.l002 5269 5225 5269 7430 l.l003 5270 5118 5270 7431 l.l004 5271 5123 5271 7432 l.l005 5272 5135 5272 7433 l.l006 5273 5252 5273 7434 l.l007 5274 5255 5274 7435 l.l008 5275 5262 5275 7436 l.l009 5276 5139 5276 7437 l.l010 5277 5137 5277 7440 l.l011 5278 5148 5278 7441 l.l012 5279 5150 5279 6040 l.m001 4206 4178 4206 6041 l.m002 4207 4184 4207 6042 l.m003 4208 4187 4208 4241 6044 l.m005 4210 4210 4247 6045 l.m006 4211 4211 4290 6046 l.m007 4212 4166 4212 6050 l.m009 4214 4170 4214 6051 l.m010 4215 4175 4215 6427 l.n001 4525 4309 4525 6430 l.n002 4526 4301 4526 6431 l.n003 4527 4382 4527 6432 l.n004 4528 4285 4440 4528 6433 l.n005 4529 4343 4401 4405 4529 6434 l.n006 4530 4319 4339 4530 6435 l.n007 4531 4324 4531 6436 l.n008 4532 4454 4462 4532 6437 l.n009 4533 4466 4533 6441 l.n011 4535 4292 4451 4535 6442 l.n012 4536 4444 4485 4536 6443 l.n013 4537 4488 4537 6452 l.o003 4557 4557 4637 6453 l.o010 4564 4564 4595 2571 l.p001 2026 1962 1964 1971 2026 2572 l.p002 2027 2002 2027 2573 l.p003 2028 2014 2028 2575 l.p005 2030 1973 2030 2576 l.p006 2031 1967 1979 2031 2577 l.p007 2032 1977 2032 2600 l.p008 2033 1984 2033 2601 l.p009 2034 1988 2034 2602 l.p010 2035 1992 2035 2603 l.p011 2036 1995 2036 2604 l.p012 2037 1981 2037 2605 l.p013 2038 1957 2038 2260 l.q001 1845 1750 1845 2261 l.q002 1846 1741 1754 1757 1846 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 183 octal symbol references by sequence no. 2262 l.q003 1847 1793 1847 2263 l.q004 1848 1848 1926 2264 l.q005 1849 1849 1906 2265 l.q006 1850 1813 1850 2266 l.q007 1851 1814 1851 2267 l.q008 1852 1804 1852 2270 l.q009 1853 1853 1914 2271 l.q010 1854 1791 1854 2272 l.q011 1855 1799 1855 2070 l.r001 1684 1665 1684 2071 l.r002 1685 1673 1685 2072 l.r003 1686 1686 1721 1722 2073 l.r004 1687 1653 1687 2074 l.r005 1688 1668 1688 2075 l.r006 1689 1656 1689 2076 l.r007 1690 1576 1579 1690 2077 l.r008 1691 1584 1588 1691 6727 l.s004 4828 4773 4828 6730 l.s005 4829 4767 4781 4801 4829 6731 l.s006 4830 4809 4830 6732 l.s007 4831 4816 4831 6733 l.s009 4833 4779 4804 4833 6734 l.s010 4834 4806 4834 6621 l.t001 4723 4678 4679 4723 6622 l.t002 4724 4708 4724 6623 l.t003 4725 4683 4725 7503 l.u001 5333 5301 5333 7504 l.u002 5334 5304 5334 7505 l.u003 5335 5311 5335 773 l.v001 981 967 981 774 l.v002 982 969 982 3645 l.w001 2711 2711 2754 3646 l.w002 2712 2696 2712 5350 l.y001 3775 3715 3775 5351 l.y002 3776 3748 3776 5352 l.y003 3777 3755 3764 3777 1345 l.z001 1258 1102 1181 1258 1346 l.z002 1259 1121 1259 1300 1347 l.z003 1260 1125 1260 1350 l.z004 1261 1127 1131 1261 1351 l.z005 1262 1129 1157 1262 1352 l.z006 1263 1194 1263 1353 l.z007 1264 1144 1264 1354 l.z008 1265 1173 1265 1355 l.z009 1266 1167 1266 1356 l.z010 1267 1190 1211 1267 1357 l.z011 1268 1240 1268 1360 l.z012 1269 1269 1342 1424 1429 1361 l.z013 1270 1270 1431 1436 1517 1362 l.z014 1271 1224 1271 1363 l.z015 1272 1202 1272 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 184 octal symbol references by sequence no. 1364 l.z016 1273 1204 1273 5 lposhf 196 196 1985 3 lpsshf 197 197 1989 1 macwk1 5298 326 515 593 639 644 681 683 740 778 881 885 944 961 978 984 1075 1095 1227 1236 1247 1289 1470 1486 1522 1546 1603 1608 1679 1693 1831 1895 1909 1913 1916 1920 1935 1937 2019 2040 2086 2090 2226 2671 2703 2727 2738 2751 2760 2765 2815 3368 3440 3445 3457 3482 3531 3533 3566 3568 3610 3625 3656 3659 3686 3709 3770 3783 3800 3802 3835 3837 3871 3892 3965 3999 4065 4069 4124 4146 4202 4218 4261 4265 4415 4418 4512 4566 4650 4658 4715 4740 4747 4765 4783 4799 4821 4842 4927 4929 4983 4985 5057 5100 5197 5204 5231 5248 5264 5298 5327 3 macwk2 5298 326 593 644 683 778 885 961 984 1095 1236 1289 1486 1546 1608 1693 1895 1913 1920 1937 2040 2090 2671 2727 2751 2765 3368 3445 3482 3533 3568 3625 3659 3709 3783 3802 3837 3892 3999 4069 4146 4218 4265 4418 4566 4658 4740 4765 4799 4842 4929 4985 5100 5204 5248 5298 1 macwk3 3269 382 1932 2083 2280 2874 2933 3269 5 macwk4 3269 382 1932 2083 2280 2874 2933 3269 1107 makcct 1095 1095 1227 1256 2023 1164 mct005 1132 1123 1132 1165 mct010 1133 1133 1136 1202 mct020 1153 1143 1153 1176 mct030 1146 1146 1149 1247 mct040 1193 1182 1184 1193 1232 mct050 1180 1158 1180 1243 mct055 1189 1155 1189 1144 mct059 1110 1107 1110 1145 mct060 1111 1103 1105 1109 1111 1257 mct070 1201 1198 1201 1260 mct080 1202 1195 1202 1270 mct090 1210 1205 1210 1274 mct100 1217 1203 1217 1307 mctad 1230 1114 1153 1217 1230 1304 mctret 1227 1223 1227 1310 mctsbx 1231 1100 1108 1122 1154 1222 1231 1311 mctstr 1236 1161 1163 1165 1170 1176 1187 1192 1200 1209 1213 1236 1247 1306 mctsz 1229 1111 1141 1218 1229 7 mdisp 88 2609 24 meterc 96 544 10 mincd 103 2696 3755 3764 11 mincs 102 1078 2496 2783 10 minsiz 205 205 751 13 m.hsqo 50 50 2496 14 m.inaf 50 50 1078 4 m.nst 50 50 2311 2848 12 m.ssqo 50 50 2783 2516 mod010 1976 1965 1972 1976 2523 mod020 1981 1978 1981 2546 mod030 2001 1994 2001 6 modnum 109 109 378 382 920 1113 1346 1365 1380 1786 1816 1932 2010 2083 2280 2306 2874 2933 3269 3798 4172 4978 2564 modret 2019 1955 2003 2006 2019 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 185 octal symbol references by sequence no. 25 mupdat 104 2311 2848 40 mxntty 207 207 208 2246 newcfg 1834 1716 1755 1758 1762 1764 1794 1796 1812 1825 1834 1915 1932 5730 nib010 4102 4096 4102 5740 nib015 4111 4107 4111 5742 nib016 4113 4110 4113 5747 nib020 4120 4103 4120 5674 nibicw 4069 3767 4063 4069 4124 5754 nibiwp 4126 4092 4098 4100 4113 4122 4126 5752 nibret 4124 4118 4124 5713 nibsq 4069 4069 4116 5716 nibsx3 4069 4069 4102 12 nl 216 216 1159 7153 nob010 5025 5018 5025 7202 nob020 5054 5044 5047 5054 7206 nobibp 5059 5009 5023 5027 5059 7114 nobicw 4985 4985 5057 5090 7207 nobiwp 5060 5010 5021 5031 5036 5060 7127 nobsa 4985 4985 5013 6426 nxtchr 4523 4461 4470 4481 4523 3060 oddchr 2231 2135 2139 2231 4361 oends 3111 3074 3111 6740 opptro 4842 3082 3108 4842 4927 6074 opr010 4251 4251 4259 6107 oprcnt 4263 4242 4244 4258 4263 6105 oprret 4261 4238 4261 6057 oprsx3 4218 4218 4246 6771 opt006 4876 4871 4873 4876 6773 opt008 4880 4875 4880 7014 opt010 4904 4889 4904 7020 opt015 4910 4868 4894 4897 4910 7026 opt020 4917 4902 4917 7031 optret 4920 4864 4918 4920 7244 optro 5100 3109 4839 5100 5197 6753 optsx3 4842 4842 4917 7367 opxte 5204 3110 5204 5231 6110 oscan 4265 2246 4265 4415 5092 4353 ostats 3108 3073 3108 7272 otr010 5128 5124 5128 7274 otr020 5131 5127 5131 7301 otr030 5137 5134 5137 7313 otr040 5148 5144 5148 7320 otr050 5154 5119 5154 7332 otr060 5167 5155 5161 5167 7335 otr070 5171 5165 5169 5171 7346 otr080 5183 5173 5183 7361 otr100 5195 5186 5190 5195 7364 otrdc1 5200 5189 5200 7366 otrdc3 5202 5202 5281 7362 otrret 5197 5141 5146 5168 5184 5193 5197 6052 outpar 4218 2245 4218 4261 5088 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 186 octal symbol references by sequence no. 26 outprc 82 541 140000 p2.5bt 154 154 1884 150000 p2.6bt 155 155 1885 160000 p2.7bt 156 156 1886 170000 p2.8bt 157 157 1887 2 p2.cct 163 163 1890 4 p2.icw 162 162 1880 10 p2.lpo 161 161 1883 2035 2036 40 p2.lpr 159 159 1881 20 p2.lps 160 160 1882 2035 2036 2037 170000 p2.mbt 158 158 1853 400 p3.beb 170 170 1888 200 p3.btr 171 171 1889 3637 pamax 2704 2678 2680 2704 6020 par010 4186 4182 4186 6031 par020 4197 4197 4200 6035 par030 4202 4167 4176 4202 6037 parcnt 4204 4190 4192 4199 4204 5765 parity 4146 3474 3619 3889 4146 4202 3541 pbfmax 2649 979 2649 2707 2 pb.crq 149 149 588 40 pb.dtr 144 144 585 400 pb.rcv 141 141 583 2598 20 pb.rts 145 145 586 4 pb.sxt 147 147 587 4 pb.tre 148 148 5077 200 pb.xmt 142 142 365 534 584 3209 4506 4705 4743 4770 4814 5179 5257 3531 pchlft 2638 2638 2706 3773 3521 pchtbl 2626 2626 2705 3772 352 pcwend 589 540 589 200000 pcw.1 116 116 2239 400000 pcw.2 117 117 1851 2 pcwlen 591 489 591 336 pcwtab 582 539 582 40000 p.msk 126 126 2590 0 p.nop 122 122 2792 4724 4831 5068 10000 p.ris 123 123 526 5076 70000 p.ssiw 129 129 1849 150000 p.tlbk 135 135 527 604 rbo005 827 822 827 613 rbo010 836 830 836 840 620 rbo020 842 838 842 622 rbo030 845 834 845 650 rbo040 870 865 870 657 rbo050 878 803 806 817 825 878 550 rboibf 778 720 778 881 660 rboret 881 876 881 662 rbotly 883 818 855 870 883 6712 res005 4809 4805 4809 6724 res010 4820 4812 4820 6676 resout 4799 4543 4799 4821 5285 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 187 octal symbol references by sequence no. 6725 resret 4821 4802 4808 4818 4821 1 reteco 4546 4499 4546 4 retres 4548 4495 4548 2 retsus 4547 4491 4547 6275 scan 4418 3475 3620 3883 4418 4512 2 scc.bs 63 63 1495 1 scc.df 63 63 1493 0 scc.dl 63 63 1491 4 schdmn 203 203 5380 6144 scn010 4300 4291 4300 6160 scn020 4314 4314 4413 6172 scn030 4326 4326 4334 6201 scn031 4338 4330 4338 6213 scn035 4350 4340 4350 6216 scn037 4354 4344 4348 4354 6223 scn040 4361 4327 4361 6233 scn050 4371 4364 4371 6235 scn060 4375 4365 4375 6237 scn070 4379 4366 4379 6254 scn080 4395 4367 4395 6261 scn090 4401 4368 4401 6264 scn100 4405 4369 4405 6267 scn200 4409 4352 4356 4359 4373 4377 4391 4393 4396 4399 4403 4409 6422 scnchr 4519 4325 4350 4519 6417 scncmt 4516 4312 4314 4516 6423 scnfrm 4520 4445 4486 4520 6420 scnidx 4517 4315 4329 4332 4361 4517 6273 scnret 4415 4286 4293 4296 4298 4303 4304 4415 6225 scntbl 4364 4364 4539 6421 scntly 4518 4305 4412 4518 6416 scntmp 4515 4383 4386 4387 4389 4483 4490 4515 1455 sct010 1338 1296 1313 1332 1338 1425 sct020 1311 1298 1302 1311 1416 sct030 1301 1301 1305 1453 sct040 1333 1316 1321 1333 1435 sct050 1319 1319 1325 1430 sct060 1314 1314 1334 1474 sct070 1356 1343 1356 1473 sct080 1352 1349 1352 1464 sct090 1345 1345 1351 1565 sct110 1421 1360 1421 1530 sct120 1387 1383 1387 1532 sct130 1389 1386 1389 1544 sct140 1399 1394 1399 1547 sct150 1402 1402 1407 1501 sct160 1361 1357 1361 1556 sct170 1409 1362 1409 1646 sctnds 1474 1311 1326 1361 1366 1367 1474 1645 sctods 1473 1338 1352 1448 1473 1642 sctret 1470 1331 1449 1452 1470 1403 sctsq 1289 1289 1377 1388 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 188 octal symbol references by sequence no. 1404 sctsx1 1289 1289 1328 1339 1421 1406 sctsx3 1289 1289 1317 1400 1644 sctsz 1472 1294 1307 1314 1356 1391 1472 27 secdsp 89 3076 1647 setcct 1486 74 1486 1522 2674 seticw 2090 542 2090 2226 4837 5610 setnib 3999 3618 3887 3999 4065 30 setptw 101 2615 3061 settmp 2232 2140 2143 2232 1 sfbfmk 45 45 724 2190 2000 sffbsc 45 45 2604 2711 3057 2 sffcii 45 45 712 1633 1645 2926 2937 2946 2959 3178 3201 3719 3722 3775 4022 4095 4457 4 sffcoi 45 45 1903 2118 3266 3273 3283 3288 3306 4695 4882 4912 4924 5015 5017 5064 5271 200 sffdct 45 45 1269 40 sffebd 45 45 1854 1855 2038 4181 4237 4478 100 sffech 45 45 346 361 3205 4502 4702 4863 5172 5175 400000 sffhdl 45 45 2243 2604 2711 3057 3066 3471 5079 10 sffisc 45 45 2319 2520 5353 sfflag 3779 3714 3751 3768 3779 20000 sffmsp 45 45 2601 3614 100000 sffnib 45 45 2031 3776 4131 4537 20 sffsct 45 45 1270 1 sffskd 45 45 2469 2472 3334 4000 sffsqo 45 45 2599 3056 200000 sffssb 45 45 2236 2237 5272 5279 400 sffstp 45 45 529 3052 10000 sffsyn 45 45 531 752 1687 2592 3468 3615 3874 4129 4528 2 sfhmk 45 45 722 2188 5 sfhsiz 45 45 2513 2575 16 sf.bsz 45 45 941 970 1010 1022 3729 13 sf.cct 45 45 1330 1348 1423 1425 1439 1502 1514 24 sf.cfg 45 45 1715 1826 1934 1991 1996 1998 20 sf.csz 45 45 1032 4039 42 sf.est 45 45 2323 17 sf.fbs 45 45 1017 5 sf.flg 45 45 345 363 435 466 711 801 923 938 1013 1341 1428 1430 1435 1437 1516 1631 1652 1800 1802 1902 1956 1963 1966 1968 1980 2117 2158 2208 2210 2220 2318 2363 2402 2416 2422 2435 2445 2468 2473 2519 2753 2786 2788 2925 2929 2936 2947 2949 2958 2972 2991 3179 3183 3187 3202 3204 3265 3272 3284 3287 3307 3321 3336 3356 3395 3409 3447 3503 3518 3591 3599 3652 3713 3716 3720 3721 3750 3769 3823 4021 4029 4056 4094 4105 4180 4236 4284 4439 4456 4477 4489 4501 4694 4703 4862 4881 4911 4925 4967 4971 5012 5043 5121 5136 5151 5171 5177 0 sf.hcm 45 45 703 1438 1489 1643 2109 2350 2491 3192 4089 4447 4691 4772 4910 4948 5004 5122 5251 15 sf.hsl 45 45 380 1803 1930 2081 6 sf.ib0 45 45 708 717 1632 2369 2935 2957 3387 3429 3431 3437 3712 3724 4019 4025 7 sf.ib1 45 45 717 1635 2372 2939 2961 3388 3433 3438 3724 4025 20 sf.mms 45 45 438 1039 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 189 octal symbol references by sequence no. 21 sf.nic 45 45 1570 1573 1578 1587 1591 3413 4032 4448 4482 22 sf.noc 45 45 675 2128 2131 2180 4866 5132 5152 1 sf.nxa 45 45 2438 2453 2461 2466 2800 2806 3717 3727 2 sf.nxp 45 45 2868 2870 2878 2886 2891 10 sf.ob0 45 45 451 2114 2123 3189 3271 3286 3347 4884 4885 5008 5022 5130 5249 11 sf.ob1 45 45 452 2123 3190 3275 3290 3348 4884 5022 5126 5250 12 sf.pcw 45 45 367 480 487 497 2067 2341 2556 2791 3208 4505 4706 4742 4769 4815 5050 5181 5259 14 sf.rct 45 45 2544 2545 3341 21 sf.rms 45 45 439 1042 1060 23 sf.ssl 45 45 2308 2455 2795 2845 2851 2880 3331 3339 26 sf.sta 45 45 2327 2506 2531 3 sf.tly 45 45 2309 2404 2451 2846 2850 2876 3330 3338 42 sf.waq 45 45 2459 2465 2799 2884 2890 5354 sfptr 3780 3725 3726 3752 3760 3780 1365 shrcct 1289 75 1219 1289 1470 1501 1510 2726 sic010 2126 2119 2126 2761 sic013 2154 2150 2154 2767 sic015 2160 2144 2160 2773 sic020 2164 2129 2159 2164 3007 sic030 2180 2163 2180 3042 sic040 2212 2209 2212 3047 sic050 2219 2183 2219 3056 sicicw 2229 2112 2122 2130 2160 2168 2172 2189 2198 2202 2229 3057 sicobp 2230 2115 2124 2127 2155 2191 2194 2230 3054 sicret 2226 2165 2186 2211 2217 2221 2226 200000 s.acr 53 53 3977 400000 s.ads 53 53 3978 400000 s.bdmk 53 53 3117 200000 s.bmk 53 53 3116 1000 s.brch 53 53 3115 3613 400 s.brk 53 53 3976 1 s.cd 53 53 3973 2 s.cts 53 53 3972 100000 s.dlo 53 53 3981 4 s.dsr 53 53 3971 17 s.dss 53 53 3027 3145 3236 3324 3512 3527 3606 3861 5224 5261 4000 s.exh 53 53 3129 3467 3881 10000 s.fcse 53 53 3132 40000 s.isd 53 53 3130 400000 s.pbyt 53 53 3135 200 s.prex 53 53 3466 10000 s.prty 53 53 3064 3119 3123 40000 s.pwi 53 53 3982 200000 s.rabt 53 53 3133 100000 s.rbt 53 53 3122 3136 2000 s.ring 53 53 3975 40000 s.rto 53 53 3124 10 s.sprc 53 53 3974 20 s.st 53 53 3986 100 s.term 53 53 5275 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 190 octal symbol references by sequence no. 20000 s.xte 53 53 3060 3118 3120 3131 3876 5269 5633 snb010 4027 4023 4027 5653 snb020 4045 4036 4045 5655 snb025 4047 4040 4047 5656 snb030 4049 4031 4034 4049 5665 snb040 4059 4050 4059 5670 snb050 4063 4043 4057 4063 5673 snbptr 4067 4027 4033 4052 4059 4067 2412 sndcfg 1920 1830 1920 1935 1999 105 sndout 192 192 5321 3755 sqo010 2805 2801 2805 3756 sqo020 2808 2803 2808 3762 sqoret 2815 2787 2815 3764 sqosql 2817 2797 2802 2817 3717 sqovfl 2765 2501 2620 2765 2815 4010 stp010 2856 2856 3086 4021 stp015 2867 2859 2867 4064 stp020 2893 2887 2893 4111 stp030 2923 2910 2923 4141 stp035 2946 2942 2946 4143 stp040 2949 2927 2931 2949 4153 stp045 2957 2951 2954 2957 4160 stp050 2963 2956 2960 2963 4167 stp051 2971 2965 2971 4204 stp053 2989 2984 2986 2989 4220 stp054 3004 3004 3012 4222 stp056 3007 3007 3015 3021 4231 stp057 3017 3005 3017 4236 stp058 3023 3009 3023 4214 stp05a 2999 2992 2999 4217 stp05b 3003 2997 3003 4425 stp060 3140 2973 3140 4434 stp062 3149 3142 3149 4436 stp065 3151 3151 3156 4444 stp070 3160 3152 3160 4456 stp075 3174 3030 3167 3170 3174 4464 stp080 3182 2917 3024 3158 3182 4477 stp090 3197 3184 3197 4504 stp092 3204 3199 3204 4515 stp095 3216 3092 3176 3180 3206 3210 3213 3214 3216 4546 stp096 3248 3219 3228 3233 3248 4557 stp100 3263 3088 3263 4605 stp101 3283 3278 3283 4607 stp105 3286 3267 3281 3286 4614 stp110 3292 3289 3292 4616 stp120 3295 3295 3301 4632 stp130 3310 3297 3310 4636 stp200 3316 3217 3246 3250 3259 3308 3316 4647 stp205 3328 3318 3328 4654 stp210 3334 3087 3334 4250 stpbuf 3034 2963 3034 3162 3292 3312 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 191 octal symbol references by sequence no. 4252 stpcnt 3036 2616 3036 4255 stpend 3039 2996 3001 3008 3039 4253 stpmrk 3037 2893 2902 3037 3216 3237 3242 3248 3254 3328 4702 stpret 3364 2617 3345 3349 3353 3357 3360 3364 4256 stpsql 3040 2882 2885 3040 4246 stpswd 3033 2618 2874 2894 2906 2915 2923 2952 2967 2969 2977 2982 3003 3014 3033 3140 3150 3165 3174 3197 3226 3231 3263 3295 3303 3317 3480 3991 3996 5095 4254 stptib 3038 2840 2861 2874 2933 3038 3269 4251 stptra 3035 2989 3019 3023 3028 3035 3161 3163 3311 3313 336 supend 573 547 573 332 suptab 570 546 570 6672 sus040 4781 4771 4781 6642 susout 4765 4542 4765 4783 6674 susret 4783 4768 4783 0 sw.dbg 214 214 5228 5324 swp010 3758 3735 3758 5340 swp020 3766 3757 3766 5224 swphic 3709 2619 3709 3770 5355 swpq 3781 3754 3763 3766 3781 5235 swpsi 3709 3709 3742 3759 11 tab 219 219 1175 100 tf8in 43 43 4212 200 tf8out 43 43 2034 20 tfacu 43 43 3987 5075 5335 4000 tfblak 43 43 1273 20 tfbral 43 43 1262 10000 tfcrcv 43 43 532 764 2000 tfcrec 43 43 2027 3465 4534 200000 tfecpx 43 43 1260 2027 2029 3879 100000 tffip 43 43 766 1271 2030 4213 4536 40000 tffrmi 43 43 753 1258 2026 40 tfifc 43 43 755 1263 2032 4 tfkpar 43 43 4215 1000 tflfec 43 43 1266 2027 3465 4209 20000 tfmrcv 43 43 765 400 tfoddp 43 43 2033 100 tfofc 43 43 1272 4000 tforp 43 43 4834 5276 400000 tfosus 43 43 533 756 3065 4725 4829 4830 5069 5270 5278 1000 tfrpon 43 43 4564 200000 tfsftr 43 43 4530 2000 tfsoip 43 43 4833 5277 4000 tftbec 43 43 1265 2027 3465 3879 4211 200 tfupsf 43 43 4529 1 tfwrit 43 43 2242 5081 35 t.cntr 43 43 1779 41 t.dcpl 43 43 3522 23 t.dcwa 43 43 382 384 416 509 635 666 5157 5187 24 t.dcwl 43 43 349 356 374 376 382 413 502 637 663 3359 5154 5183 5191 37 t.dtp 43 43 4295 25 t.echo 43 43 2005 2012 4591 4609 4636 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 192 octal symbol references by sequence no. 2 t.flg2 43 43 445 727 820 1006 1016 1101 1180 1193 1201 1225 1961 1970 1974 1976 3913 4318 4338 4342 4402 4407 4443 4484 4594 5310 36 t.flg3 43 43 1128 1156 1983 1987 4165 4174 4780 4803 4807 5138 5140 5142 1 t.flg 43 43 493 676 1124 1166 1172 2001 2153 3351 4289 4682 4766 4782 4800 4810 4908 4955 5117 5149 40 t.frmc 43 43 1104 1183 1189 5 t.icp 43 43 805 828 832 3553 7 t.icpl 43 43 848 3507 3521 3564 45 t.ifch 43 43 1196 6 t.ilst 43 43 808 833 843 3550 3554 3557 3559 4 t.line 43 43 1921 2061 2072 52 t.metr 43 43 1078 2311 2496 2783 2848 16 t.ocnt 43 43 5308 5314 12 t.ocp 43 43 5318 13 t.ocur 43 43 2126 2136 2154 2162 2175 2205 4811 4867 4874 4878 4888 4891 4975 5025 5039 5143 46 t.ofch 43 43 1206 1210 14 t.olst 43 43 2151 4904 33 t.pos 43 43 4354 4358 4372 4376 4380 4392 4395 4398 30 t.sfcm 43 43 344 465 478 674 702 707 962 1329 1340 1422 1488 1566 1630 1714 1798 1823 1954 2066 2108 2113 2156 2304 2326 2530 2555 2752 2843 3747 4283 4438 4741 4886 4946 5005 0 t.stat 43 43 403 432 447 458 469 476 482 624 629 2223 2900 2904 2908 3026 3144 3224 3229 3235 3323 3329 3511 3526 3605 3860 3960 3963 4677 5223 5256 5260 12 trace 81 382 1932 2083 2280 2874 2933 3269 5140 trm010 3597 3593 3597 5146 trm020 3605 3601 3605 1000 tsfbrk 43 43 528 563 1 tsfcd 43 43 4723 20000 tsfcrq 43 43 571 572 588 2 tsfcts 43 43 4723 4 tsfdsr 43 43 4723 2000 tsfdtr 43 43 558 559 585 4723 40 tsfmrk 43 43 564 3048 3049 200 tsfrcv 43 43 522 524 554 555 583 3045 10000 tsfrts 43 43 566 567 586 20 tsfst 43 43 562 3046 3049 3055 4000 tsfsxt 43 43 560 561 587 4000 tsftre 43 43 2241 100 tsftrm 43 43 565 3048 3049 400 tsfxmt 43 43 522 525 556 557 584 5274 2 ts.dcw 255 255 382 10 ts.int 257 257 2280 4 ts.pcw 256 256 1932 2083 20 ts.sta 258 258 2874 2933 3269 2566 tstcfg 2021 1982 1986 1990 1993 1997 2021 1 tt.dcw 248 248 382 3 tt.int 250 250 2280 5 tt.ira 252 252 2933 3269 2 tt.pcw 249 249 1932 2083 assm 01 12-10-82 15.646 hsla_man - multics/fnp (mcs) hsla manager page 193 octal symbol references by sequence no. 4 tt.sta 251 251 2874 1 w.2 2575 2608 ** 49042 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