assm 01 09-28-82 17.245 x25lap_tables page 1 preface program break 4166 common length 0 v count bits 5 primary symdef entry x25str 70 secondary symdef entry .chain 0 block length symref 1 begin 2 adbyte 3 cvaddr 4 hungup 5 stpchn end of binary card 00000001 assm 01 09-28-82 17.245 x25lap_tables page 2 1 * ************************************************************ 2 * * * 3 * * copyright, (c) honeywell information systems inc., 1982 * 4 * * * 5 * * copyright, (c) honeywell information systems inc., 1980. * 6 * * * 7 * ************************************************************ 8 9 lbl ,x25lap_tables assm 01 09-28-82 17.245 x25lap_tables page 3 14 pcc off 15 **************************************************************** 16 * 17 * x25lap_tables 18 * 19 * this module is designed to use the hdlc subchannel of 20 * the high-speed line adaptor to implement the link 21 * access procedure (lap) of ccitt recommendation x.25. this 22 * module supports the asynchronous response mode of operation. 23 * it does not support the asynchronous balanced mode known 24 * as lapb. 25 * 26 * coded august, 1979 by j. stern 27 * fixed for telenet may 1980 by c. hornig 28 * rnr problem fixed october 1980 by c. hornig 29 * metering and telenet compatibility added march 1981 by c. hornig 30 * bugs fixed and more telenet compatibility, january 1982, by c. hornig 31 * 32 **************************************************************** 33 00000 34 x25lap null 35 36 symdef x25str 37 38 symref begin 39 symref hungup 40 symref adbyte 41 symref cvaddr 42 00000 44 tib assm 01 09-28-82 17.253 x25lap_tables page 4 terminal information block (tib) 000000 t.stat equ 0 holds current line status 000001 t.flg equ t.stat+1 flag word 000002 t.flg2 equ t.flg+1 second word of flags 000003 t.cur equ t.flg2+1 current address in control table 000004 t.line equ t.cur+1 10 bit line number 000005 t.icp equ t.line+1 first buffer in input chain 000006 t.ilst equ t.icp+1 last buffer in input chain 000007 t.icpl equ t.ilst+1 count of buffers in icp chain 000010 t.icch equ t.icpl+1 address of next input character 000011 t.elnk equ t.icch+1 link to tib extension 000011 t.rcp equ t.elnk replay chain pointer (share t.elnk) 000012 t.ocp equ t.elnk+1 addr of output chain from cs 000013 t.ocur equ t.ocp+1 addr of current output buffer 000014 t.olst equ t.ocur+1 addr of last buffer in output chain 000015 t.occh equ t.olst+1 addr of next output character 000016 t.ocnt equ t.occh+1 count of buffers in t.ocur 000017 t.type equ t.ocnt+1 line type 000020 t.time equ t.type+1 time at which next timeout will occur 000022 t.reta equ t.time+2 return address from calsub 000023 t.dcwa equ t.reta+1 addr of dcw list to 'execute' 000024 t.dcwl equ t.dcwa+1 length of dcw list 000025 t.echo equ t.dcwl+1 echo buffer address 000026 t.dcp equ t.echo+1 addr of message chain for cs 000027 t.dlst equ t.dcp+1 last buffer in messge chain for cs 000030 t.ftse equ t.dlst+1 first time slot entry in lsla table assm 01 09-28-82 17.253 x25lap_tables page 5 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 09-28-82 17.253 x25lap_tables page 6 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 09-28-82 17.253 x25lap_tables page 7 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 09-28-82 17.253 x25lap_tables page 8 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 00000 45 sfcm hsla pcc save,off assm 01 09-28-82 17.253 x25lap_tables page 9 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 09-28-82 17.253 x25lap_tables page 10 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 09-28-82 17.253 x25lap_tables page 11 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 00000 46 csbits assm 01 09-28-82 17.253 x25lap_tables page 12 control and status bits control bits 000001 c.srec bool 000001 set receive mode 000002 c.rrec bool 000002 reset receive mode 000004 c.sxmt bool 000004 set transmit mode 000010 c.rxmt bool 000010 reset transmit mode 000020 c.sdtr bool 000020 set data terminal ready 000040 c.rdtr bool 000040 reset data terminal ready 000100 c.ssup bool 000100 set supervisory transmit mode 000100 c.stre bool 000100 set tally runout enable (hdlc) 000200 c.rsup bool 000200 reset supervisory transmit mode 000200 c.rtre bool 000200 reset tally runout enable (hdlc) 000400 c.stat bool 000400 store status 001000 c.sbrk bool 001000 send line break 002000 c.smrk bool 002000 store marker status 004000 c.strm bool 004000 store terminate status 010000 c.srqs bool 010000 set request to send 020000 c.rrqs bool 020000 reset request to send 040000 c.pad bool 040000 unused 100000 c.cmd bool 100000 indicates cmd subop 400000 c.scmd bool 400000 indicates supplementary cmd subop the following must be used in the optional fields to the cmd (or contrl) macros in the control_tables 000001 c.scrq bool 000001 set call request 000002 c.rcrq bool 000002 reset call request assm 01 09-28-82 17.253 x25lap_tables page 13 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 09-28-82 17.253 x25lap_tables page 14 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 47 buffer assm 01 09-28-82 17.253 x25lap_tables page 15 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 00000 48 comreg assm 01 09-28-82 17.253 x25lap_tables page 16 system communications region ********************************** * system communication region * ********************************** 000640 .crldt set 416 date and time of binding 000644 .crbdt set 420 date and time of bootloading 000650 .crbuf set 424 starting address of buffer area 000651 .crmem set 425 last location of memory 000652 .crnbf set 426 number of buffers available 000653 .criom set 427 start of iom table 000654 .crnhs set 428 number of hsla's configured 000655 .crnls set 429 number of lsla's configured 000656 .crcon set 430 console enabled flag 000657 .crmod set 431 starting address of module chain 000660 .crnxa set 432 ptr to next avaliable buffer 000661 .crtra set 433 trace entry enable mask 000662 .crtrb set 434 base address of trace table 000663 .crtrc set 435 next available location in trace table 000664 .crreg set 436 disaster fault register storage location 000665 .crttb set 437 location of tib table 000666 .crtte set 438 location of end of tib table 000667 .crdly set 439 head of delay table chain 000670 .crver set 440 mcs version number, 4 chars 000672 .crbrk set 442 addr of breakpoint control table 000673 .crtsw set 443 if non-zero, tracing will cease 000674 .crnxs set 444 next free small block 000675 .crnbs set 445 number of buffers devoted to small space 000676 .crcct set 446 address of first cct descriptor assm 01 09-28-82 17.253 x25lap_tables page 17 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 00000 49 tconst assm 01 09-28-82 17.253 x25lap_tables page 18 flag and control bit definitions 000001 gbf6up bool 000001 cs up global switch device types 000001 ttasci equ 1 ascii terminals, cdi, tty 33, 35, 37, etc 000002 tt1050 equ 2 ibm 1050 000003 tt2741 equ 3 ibm 2741, trendata, dura, etc. 000004 ttards equ 4 ards, tektronix 000005 ttsync equ 5 general sync devices 000006 ttg115 equ 6 remote computer interface, g115 000007 ttbsc equ 7 binary synchronous communications 000010 tt202c equ 8 ascii on 202c6 modem 000011 ttvip equ 9 vip terminal 000020 ttpvip equ 16 polled vip 000021 ttx25l equ 17 x.25 link access procedure (lap) 000023 ttcolt equ 19 colts (online t&d executive) signal types 000113 quit bool 113 dia cmd, break received 000100 dialup bool 100 dia cmd, accept new terminal 000101 hangup bool 101 dia cmd, disconnected line 000114 wrutim bool 114 dia cmd, wru timeout 000105 sndout bool 105 dia cmd, send output 000120 acupwi bool 120 dia cmd, no power to acu 000121 acudlo bool 121 dia cmd, data line occupied 000122 acuacr bool 122 dia cmd, dial out failed 000123 acung bool 123 dia cmd, request for acu is invalid control types 000001 srec equ c.srec set receive mode 000002 rrec equ c.rrec reset receive 000004 sxmit equ c.sxmt set xmit mode 000010 rxmit equ c.rxmt reset xmit 000020 sdtr equ c.sdtr set data terminal ready 000040 rdtr equ c.rdtr reset dtr 000100 ssup equ c.ssup set supervisory xmit 000200 rsup equ c.rsup reset supervisory xmit 000400 stat equ c.stat store status 001000 sbrk equ c.sbrk send line break 002000 smark equ c.smrk send marker status 004000 sterm equ c.strm send terminate status 010000 srts equ c.srqs set request to send 020000 rrts equ c.rrqs reset request to send 000001 scrq equ c.scrq set call request 000002 rcrq equ c.rcrq reset call request 000100 stroe equ c.stre set tally runout enable (hdlc) 000200 rtroe equ c.rtre reset tally runout enable (hdlc) assm 01 09-28-82 17.253 x25lap_tables page 19 flag and control bit definitions status bits 000001 cd equ s.cd carrier detect 000002 cts equ s.cts clear to send 000004 dsr equ s.dsr data set ready 000010 suprec equ s.sprc supervisory receive 000020 st equ s.st status requested 000400 break equ s.brk line break received 001000 brkchr equ s.brch break char received 002000 ring equ s.ring ring 000100 term equ s.term terminate status 000040 marker equ s.mark marker status 004000 exh equ s.exh exhaust status 000200 prexh equ s.prex pre-exhaust status 010000 parity equ s.prty parity error 020000 xte equ s.xte transfer timing error 040000 pwi equ s.pwi power indicator on acu 100000 dlo equ s.dlo data line occupied (acu) 400000 ads equ s.ads dialed station has answered data set is in data mode (acu) 200000 acr equ s.acr abandon call and retry (acu) 040000 rcvto equ s.rto rcv time out 100000 bscrcv equ s.rbt bsc terminate 200000 bscmrk equ s.bmk bsc marker 400000 bscdmk equ s.bdmk bsc delayed marker 010000 fcserr equ s.fcse frame check sequence error (hdlc) 040000 idlesd equ s.isd idle state detect (hdlc) 100000 rcvtrm equ s.rbt receive terminate (hdlc) 200000 rcvabt equ s.rabt receive abort (hdlc) 400000 parbyt equ s.pbyt partial byte (hdlc) assm 01 09-28-82 17.253 x25lap_tables page 20 flag and control bit definitions output types 000401 adprtr bool 401 insert printer addr string 000402 adkybd bool 402 insert keyboard addr string 000403 outmsg bool 403 insert output msg 000404 repeat bool 404 insert next char n times various characters matched and sent 000064 eoa bool 64 eoa from/to 2741/1050 000001 minus bool 1 minus char from 1050 000055 ibmnl bool 55 cr nl from/to 2741/1050 000075 ibmpad bool 75 2741/1050 pad character(idle) 000074 ibmeot bool 74 2741/1050 eot char 000174 eotshf bool 174 eot w/case shift 000035 ibmbs bool 35 backspace from 2741 000057 ibmtab bool 57 tab from 2741 000042 ibmsl bool 42 2741 slash 000024 ibm0 bool 24 2741 zero 000044 ibm9 bool 44 2741 nine 000076 ibmprf bool 76 2741 prefix code 000003 ibmpls bool 3 2741 plus sign 000034 ibmup bool 34 2741 upshift 000037 ibmdwn bool 37 2741 downshift 000012 nl bool 12 ascii new-line 000015 cr bool 15 ascii carriage return 000000 pad bool 0 ascii pad char 000020 dle bool 20 ascii data link escape 000004 eot bool 4 ascii end of transmission 000033 esc bool 33 ascii escape char 000014 ff bool 14 ascii form feed char 000011 tab bool 11 ascii tab char 000010 bs bool 10 ascii backspace 000040 space bool 40 ascii space 000005 awru bool 5 ascii "who are you?" 000000 null bool 0 nothing 000006 ack bool 6 ascii ack 000025 nak bool 25 ascii nak 000001 soh bool 1 ascii start of header 000026 syn bool 26 ascii syn character 000002 stx bool 2 ascii start of text char 000003 etx bool 3 ascii end of text char 000007 bel bool 007 ascii bell character 000150 h bool 150 ascii h (esc mtr on) 000154 l bool 154 ascii l (used by vip for ff) 000161 q bool 161 ascii q (used by vip for quit) 000100 atchar bool 100 ascii at sign (used to mark reset-read) 000777 nochar bool 777 used in cmt to match no character scan subop types assm 01 09-28-82 17.253 x25lap_tables page 21 flag and control bit definitions 000501 match bool 501 match the char exactly 000502 search bool 502 search until match 000503 ignore bool 503 skip to next char, block check unchanged 000504 sbcc bool 504 start the bcc computation 000505 endchn bool 505 point to last character in chain 000506 cbcc bool 506 compare current with bcc char 000507 cmask bool 507 compare char with mask 000510 rescan bool 510 reset scan position to first char in chai 000511 strlrc bool 511 start lrc computation 000512 outlrc bool 512 insert lrc into chain 000513 cmplrc bool 513 compare lrc accumulation vs current char 000514 seteom bool 514 set last buffer in message flag ( for bld 000515 replac bool 515 replace current char 000516 cmplst bool 516 compare current vs list of chars for equa 000517 movchr bool 517 move current char to tib extension 000520 movmsk bool 520 movchr with masking of current char 000521 count bool 521 count number of chars scanned 000522 serch2 bool 522 search for one of two chars 000523 setbit bool 523 turn on bits in current char 000524 offbit bool 524 turn off bits in current char 000525 chktrm bool 525 check the sync termination char 000526 mvlst2 bool 526 move last two chars to tib ext 000527 nxtchr bool 527 update block check and skip to next char 00000 50 meters assm 01 09-28-82 17.253 x25lap_tables page 22 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 09-28-82 17.253 x25lap_tables page 23 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 09-28-82 17.253 x25lap_tables page 24 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 52 00000 53 start x25lap,,w3x25m0a0000 assm 01 09-28-82 17.253 x25lap_tables page 25 x25 lap tib extension variables 00012 55 tibex locadr,char /* local sttion address */ 00012 56 tibex remadr,char /* remote station address */ 00012 57 tibex frmadr,char /* address from current input frame */ 00012 58 tibex pfmask,char /* p/f bit mask from current input frame */ 00012 59 tibex pmask,char /* p bit mask for command output */ 00012 60 tibex fmask,char /* f bit mask for response output */ 00012 61 tibex savrsp,char /* saved response control field */ 00012 62 tibex savcmd,char /* saved command control field */ 00012 63 tibex afield,char /* output frame address filed */ 00012 64 tibex cfield,char /* output frame control field */ 00012 65 tibex curseq,char /* current output sequence (switched at link rese 00012 66 tibex cmdrb1,char /* cmdr info field, byte 1 */ 00012 67 tibex cmdrb2,char /* cmdr info field, byte 2 */ 00012 68 tibex cmdrb3,char /* cmdr info field, byte 3 */ 00012 69 tibex iv.s,char 70 00012 71 tibex stat0,word /* line status/line control words */ 00012 72 tibex stat1,word 00012 73 tibex stat2,word 00012 74 tibex stat3,word 00012 75 tibex rc,word /* retry counter */ 00012 76 tibex v.s,word /* next n(s) to send */ 00012 77 tibex v.r,word /* next n(s) to receive */ 00012 78 tibex a.s,word /* last n(r) sent */ 00012 79 tibex a.r,word /* last n(r) received */ 00012 80 tibex xx,word /* saved value of v.s during timer recovery */ 81 00012 82 tibex flgwd1,word /* flag word 1 */ 000001 83 downsw bool 000001 /* on if link is down */ 000002 84 xmitsw bool 000002 /* on if transmitter busy */ 000004 85 rprtsw bool 000004 /* on to rprtsw state transition */ 000010 86 lsfgs bool 000010 /* link setup flag - got sarm */ 000020 87 lsfgua bool 000020 /* link setup flag - got ua */ 88 *unused 000040 000100 89 lsfss bool 000100 /* link setup flag - send sarm */ 000200 90 lsfsua bool 000200 /* link setup flag - send ua */ 000400 91 ldfgd bool 000400 /* link disc. flag - got disc */ 001000 92 ldfgua bool 001000 /* link disc. flag - got ua */ 93 *unused 002000 004000 94 ldfsd bool 004000 /* link disc. flag - send disc */ 010000 95 ldfsua bool 010000 /* link disc. flag - send ua */ 020000 96 rcvsw bool 020000 /* on if in receive mode */ 040000 97 oasw bool 040000 /* on if output arrived since last sndout */ 98 00012 99 tibex flgwd2,word /* flag word 2 */ 000001 100 treset bool 000001 /* on when in transmit reset state */ 000002 101 ttirec bool 000002 /* on when in transmit timer recovery state */ 000004 102 remrnr bool 000004 /* on when remote receiver not ready */ 000010 103 rreset bool 000010 /* on when in receive reset state */ 000020 104 rrej bool 000020 /* on when in receive reject state */ 000040 105 trej bool 000040 /* on when in transmit reject state */ assm 01 09-28-82 17.253 x25lap_tables page 26 x25 lap tib extension variables 000100 106 fifsw bool 000100 /* on to finish i-frame processing */ 000200 107 timesw bool 000200 /* on when long (t1) timer is running */ 000400 108 locrnr bool 000400 /* on when we have sent an rnr */ 00012 109 tibex retlbl,word /* label to return to after exhaust */ assm 01 09-28-82 17.253 x25lap_tables page 27 x25 lap constant symbols 111 * 112 * miscellaneous chars 113 * 000001 114 dceadr bool 001 /* dce address */ 000003 115 dteadr bool 003 /* dte address */ 000001 116 rr bool 001 /* rr frame type */ 000005 117 rnr bool 005 /* rnr frame tpye */ 000011 118 rej bool 011 /* rej frame type */ 000017 119 sarm bool 017 /* sarm frame type */ 000103 120 disc bool 103 /* disc frame type */ 000143 121 ua bool 143 /* ua frame type */ 000207 122 cmdr bool 207 /* cmdr frame type */ 000020 123 pfon bool 020 /* p/f bit mask */ 000400 124 eof bool 400 /* end of frame bit */ 125 * 126 * miscellaneous integers 127 * 000003 128 t1 equ 3 /* 3 second timeout interval */ 000036 129 t3 equ 30 /* 30 second timeout interval */ 000024 130 n2 equ 20 /* max number of retries */ 000002 131 dialim equ 2 /* max queued frames to dia */ 000000 132 seq0 equ 0 /* sequence number 0 */ 000001 133 seq1 equ 1 /* sequence number 1 */ 000007 134 kk equ 7 /* max number of outstanding unackked frames */ 135 * 136 * line control types 137 * 000001 138 lctact equ 1 /* activate link */ 000002 139 lctdea equ 2 /* deactivate link */ 000003 140 lctsu equ 3 /* setup link */ 000004 141 lctdis equ 4 /* disconnect link */ 142 * 143 * line status types 144 * 000000 145 lstifr equ 0 /* this is an i frame */ 000001 146 lstdwn equ 1 /* link is down */ 000002 147 lstup equ 2 /* link is up */ 000003 148 lsttir equ 3 /* timer recovery */ 000004 149 lstrej equ 4 /* reject condition */ 000005 150 lstnrm equ 5 /* normal state */ 000006 151 lsttlr equ 6 /* transmit link reset */ 000007 152 lstack equ 7 /* acknowlegement */ 153 * 154 * bldmsg control strings 155 * 00012 156 srmmsg chstr (remadr,sarm,seteom) 00014 157 dscmsg chstr (remadr,disc,seteom) 00016 158 uamsg chstr (locadr,ua,seteom) 00020 159 rspmsg chstr (locadr,cfield,seteom) 00022 160 cmdmsg chstr (remadr,savcmd,seteom) 00024 161 cmdrms chstr (locadr,cfield,cmdrb1,cmdrb2,cmdrb3,seteom) assm 01 09-28-82 17.253 x25lap_tables page 28 x25 lap constant symbols 162 * 163 * bldims control strings 164 * 00030 165 lupmsg chstr (lstup,seteom) 00032 166 ldnmsg chstr (lstdwn,seteom) 00034 167 tirmsg chstr (lsttir,iv.s,seteom) 00036 168 rejmsg chstr (lstrej,iv.s,seteom) 00040 169 nrmmsg chstr (lstnrm,iv.s,seteom) 00042 170 tlrmsg chstr (lsttlr,seteom) 00044 171 ackmsg chstr (lstack,iv.s,seteom) 172 * 173 * outscn control strings 174 * 00046 175 setp chstr (rescan,ignore,setbit,pmask) end of binary card 00000002 00051 176 setf chstr (rescan,ignore,setbit,fmask) 00054 177 whlfrm chstr (rescan,movchr,afield,ignore,movchr,cfield,endchn,cmask,e 00054 178 etc of,eof,seteom) 00062 179 setac chstr (rescan,replac,remadr,ignore,replac,cfield,setbit,pfmask, 00062 180 etc endchn,offbit,eof) 181 * 182 * meter definitions 183 * 184 *m.badi equ m.cnt1 000040 185 m.fce equ m.cnt2 000042 186 m.rab equ m.cnt3 187 *m.bad equ m.cnt4 000046 188 m.cr equ m.cnt5 000050 189 m.lr equ m.cnt6 000000 190 m.in equ 0 000001 191 m.out equ 1 assm 01 09-28-82 17.253 x25lap_tables page 29 physical connection phase 193 **************************************************************** 194 * 195 * wait for the line to dial up. 196 * 197 **************************************************************** 198 00070 199 x25str config /* set idle link state */ 00071 200 rmode fg.itf /* don't transmit flags */ 201 00072 202 tstflg tflisn,lisn /* told to listen ? */ 00076 203 wait 0,0,begin /* no, start over */ 204 00102 205 lisn contrl sdtr+srts+stat /* ready full duplex line */ 00104 206 wait 0,0,cklisn 00110 207 status cts+dsr+cd,0,ckdlup 208 00114 209 ckdlup setime 1 /* wait 1 sec for line to stabilize */ 00116 210 wait ckline,0,cklisn end of binary card 00000003 211 00122 212 ckline contrl stat /* find out if line is still up */ 213 00124 214 wait 0,0,cklisn 00130 215 status cts+dsr+cd,0,dialed 00134 216 status 0,dsr,hungup 00140 217 status 0,cd,hungup 218 00144 219 cklisn tstflg tfhang,hang /* told to hang up ? */ 00150 220 tstflg tflisn,golisn /* still listening ? */ 00154 221 goto hungup /* no */ 00156 222 golisn waitm 223 224 225 **************************************************************** 226 * 227 * the line has dialed up. 228 * 229 **************************************************************** 230 00157 231 dialed getext ,gopunt /* get tib extension */ 00162 232 signal dialup 00164 233 calasm cfgpcw /* set configuration pcw */ end of binary card 00000004 assm 01 09-28-82 17.253 x25lap_tables page 30 link activation phase 235 **************************************************************** 236 * 237 * wait for control order to activate link. 238 * 239 **************************************************************** 240 00167 241 actwt wait 0,badoa,actts 242 00173 243 actts tstflg tfhang,hang /* told to hang up ? */ 00177 244 linctl stat0,actwt /* get line control data */ 00202 245 tstlcl stat0,lctact,actts2 /* activate order ? */ 00206 246 goto actwt /* no, ignore anything else */ 247 00210 248 actts2 contrl srec /* enter receive mode */ 00212 249 setlcf flgwd1,rcvsw 00215 250 config /* set active link state */ 00216 251 smode fg.itf /* transmit flags */ 252 00217 253 clrlcf flgwd1,xmitsw /* xmit not busy */ 00222 254 goto down2 /* enter link down state */ 255 256 257 **************************************************************** 258 * 259 * come here to handle a deactivate control order. 260 * 261 **************************************************************** 262 00224 263 deact contrl rrec /* exit receive mode */ 00226 264 dumpin 00227 265 config /* set idle link state */ 00230 266 rmode fg.itf 00231 267 dmpout 00232 268 goto actwt assm 01 09-28-82 17.253 x25lap_tables page 31 link down phase 270 **************************************************************** 271 * 272 * come here to enter the link down state. send line status 273 * to indicate this transition. 274 * 275 **************************************************************** 276 00234 277 down tstlcf flgwd1,rprtsw,downst /* need to rprtsw state change ? */ end of binary card 00000005 00240 278 tstlcf flgwd1,downsw,down2 /* link already down ? */ 00244 279 downst bldims ldnmsg,gopunt /* tell cs link down */ 00247 280 sendin 00250 281 tstlcf flgwd1,xmitsw,down2 /* xmit busy ? */ 00254 282 dmpout /* no, flush any unsent output */ 283 284 285 **************************************************************** 286 * 287 * wait for link setup to begin, i.e., wait to receive a 288 * sarm or a setup control order. 289 * 290 **************************************************************** 291 00255 292 down2 setime 0 /* reset timer */ 00257 293 setlcf flgwd1,downsw /* indicate link down state */ 00262 294 clrlcf flgwd1,rprtsw /* don't rprtsw state transition */ 295 00265 296 dwnwt setlcl retlbl,dwnwt /* remember where we were */ 00270 297 wait 0,badoa,dwnts 00274 298 status 0,dsr,hang 00300 299 status 0,cd,hang end of binary card 00000006 00304 300 status exh,0,exhsta 00310 301 status fcserr,0,fcesta 00314 302 status rcvabt,0,rabsta 00320 303 status rcvtrm,0,dwnin 00324 304 status term,0,dwnoc 00330 305 status xte,0,xtesta 306 307 308 **************************************************************** 309 * 310 * got a control order. see which one. 311 * 312 **************************************************************** 313 00334 314 dwnts tstflg tfhang,hang /* hangup order ? */ 00340 315 linctl stat0,dwnwt /* get line control data */ 00343 316 tstlcl stat0,lctsu,dwnco /* setup order ? */ 00347 317 tstlcl stat0,lctdis,dwnco /* disconnect order ? */ end of binary card 00000007 assm 01 09-28-82 17.253 x25lap_tables page 32 link down phase 00353 318 tstlcl stat0,lctdea,deact /* deactivate order ? */ 00357 319 goto dwnwt /* ignore anything else */ 320 321 322 **************************************************************** 323 * 324 * got a setup or disconnect control order. we will assume 325 * the role of the dte. 326 * 327 **************************************************************** 328 00361 329 dwnco setchr locadr,dteadr /* local station is dte */ 00363 330 setchr remadr,dceadr /* remote station is dce */ 00365 331 setlcf flgwd1,rprtsw /* rprtsw next state transition */ 00370 332 tstlcl stat0,lctdis,idis /* initiate link disconnect */ 00374 333 goto isetup /* initiate link setup */ 334 335 336 **************************************************************** 337 * 338 * got an input frame. at this stage, we recognize only 339 * sarm and disc. 340 * 341 **************************************************************** 342 00376 343 dwnin calsub ckfrmd /* check the input frame */ 00400 344 dumpin 00401 345 tstlcl badfrm,1,dwnwt /* ignore a bad frame */ 00405 346 tstlcl ufrm,1,dwnin2 /* is it a u-frame ? */ 00411 347 goto dwnwt /* no, ignore it */ 348 00413 349 dwnin2 tstlcl fcn,sarm,rsetup /* respond to sarm */ 00417 350 tstlcl fcn,disc,rdis /* respond to disc */ end of binary card 00000008 00423 351 goto dwnwt /* ignore anything else */ 352 353 354 **************************************************************** 355 * 356 * previous output completed. discard it. 357 * 358 **************************************************************** 359 00425 360 dwnoc calsub outcmp /* handle output completion */ 00427 361 dmpout /* flush any unsent output */ 00430 362 goto dwnwt assm 01 09-28-82 17.253 x25lap_tables page 33 link setup phase 364 **************************************************************** 365 * 366 * come here to initiate link setup. 367 * 368 **************************************************************** 369 00432 370 isetup clrlcf flgwd1,lsfgs /* have not got sarm yet */ 00435 371 clrlcf flgwd1,lsfsua /* don't send ua yet */ 00440 372 goto setup 373 374 375 **************************************************************** 376 * 377 * come here to respond to a link setup request from the 378 * remote station. 379 * 380 **************************************************************** 381 382 00442 383 rsetup setlcf flgwd1,lsfgs /* indicate we got a sarm */ 00445 384 setlcf flgwd1,lsfsua /* and we should send ua */ 00450 385 calsub getmsk /* get p bit mask from sarm */ 00452 386 setchr fmask,pfmask /* f bit in next ua must match */ 387 388 389 **************************************************************** 390 * 391 * whether initiating or responding to link setup, we 392 * begin by sending a sarm. 393 * 394 **************************************************************** 395 00454 396 setup setime 0 /* reset timer */ 00456 397 clrlcf flgwd1,lsfgua /* have not got ua yet */ 00461 398 setchr pmask,null /* poll bit off in first sarm */ 00463 399 setlcl rc,0 /* init retry counter */ 400 00466 401 setlcf flgwd1,lsfss /* need to send a sarm */ end of binary card 00000009 00471 402 tstlcf flgwd1,xmitsw,lsuwt /* xmit busy ? */ 00475 403 goto lsuoc2 /* no, send the sarm now */ 404 405 406 **************************************************************** 407 * 408 * wait here for all events during link setup. 409 * 410 **************************************************************** 411 00477 412 lsuwt setlcl retlbl,lsuwt /* remember where we were */ 00502 413 wait lsuto,badoa,lsuts assm 01 09-28-82 17.253 x25lap_tables page 34 link setup phase 00506 414 status 0,dsr,hang 00512 415 status 0,cd,hang 00516 416 status exh,0,exhsta 00522 417 status fcserr,0,fcesta 00526 418 status rcvabt,0,rabsta 00532 419 status rcvtrm,0,lsuin 00536 420 status term,0,lsuoc end of binary card 00000010 00542 421 status xte,0,xtesta 422 423 424 **************************************************************** 425 * 426 * previous output completed. discard it and see if there 427 * is anything more to write. 428 * 429 **************************************************************** 430 00546 431 lsuoc calsub outcmp /* handle output completion */ 00550 432 tstlcf flgwd1,lsfss,lsuoc2 /* need to send sarm ? */ 00554 433 tstlcf flgwd1,lsfsua,lsuoc3 /* need to send ua ? */ 00560 434 goto lsuwt /* no, wait */ 435 00562 436 lsuoc2 bldmsg srmmsg,gopunt /* build a sarm message */ 00565 437 outscn setp,gopunt /* set p bit */ 00570 438 calsub write /* start xmit */ 00572 439 setime t1 /* response due before t1 seconds */ 00574 440 clrlcf flgwd1,lsfss /* reset send sarm indicator */ 00577 441 goto lsuwt 442 00601 443 lsuoc3 bldmsg uamsg,gopunt /* build ua message */ 00604 444 outscn setf,gopunt /* set f bit */ end of binary card 00000011 00607 445 calsub write /* start xmit */ 00611 446 clrlcf flgwd1,lsfsua /* reset send ua indicator */ 00614 447 tstlcf flgwd1,lsfgua,ixfr /* done with link setup ? */ 00620 448 goto lsuwt 449 450 451 **************************************************************** 452 * 453 * timer ran out. if we are waiting to receive a ua response, 454 * resend the sarm. otherwise, we timed out waiting to 455 * receive a sarm. in this case, give up and disconnect the 456 * link. 457 * 458 **************************************************************** 459 00622 460 lsuto tstlcf flgwd1,lsfgua,idis /* if got ua, disconnect link */ 00626 461 tstlcl rc,n2,idis /* likewise if too many retries */ 00632 462 addlcl rc,1 /* bump retry counter */ assm 01 09-28-82 17.253 x25lap_tables page 35 link setup phase 463 00635 464 setchr pmask,pfon /* turn p bit on in next sarm */ 00637 465 setlcf flgwd1,lsfss /* need to send sarm */ 00642 466 tstlcf flgwd1,xmitsw,lsuwt /* xmit busy ? */ 00646 467 goto lsuoc2 /* no, send sarm now */ 468 469 470 **************************************************************** 471 * 472 * input frame received. at this point, we are interested 473 * only in sarm, ua, or disc. 474 * 475 **************************************************************** 476 00650 477 lsuin calsub ckfrm /* check the input frame */ 00652 478 dumpin 00653 479 tstlcl badfrm,1,lsuwt /* ignore bad frame */ end of binary card 00000012 00657 480 tstlcl ufrm,1,lsuin2 /* is it a u-frame ? */ 00663 481 goto lsuwt /* no, wait */ 482 00665 483 lsuin2 tstlcl fcn,sarm,lsusr /* handle sarm command */ 00671 484 tstlcl fcn,ua,lsuua /* handle ua */ 00675 485 tstlcl fcn,disc,rdis /* handle disc command */ 00701 486 goto lsuwt /* ignore anything else */ 487 488 489 **************************************************************** 490 * 491 * got a sarm. respond with ua. 492 * 493 **************************************************************** 494 00703 495 lsusr setlcf flgwd1,lsfgs /* indicate we got a sarm */ 00706 496 calsub getmsk /* get p bit mask from sarm */ 00710 497 setchr fmask,pfmask /* next ua has matching f bit */ 498 499 00712 500 setlcf flgwd1,lsfsua /* need to send ua */ 00715 501 tstlcf flgwd1,xmitsw,lsuwt /* xmit busy ? */ 00721 502 goto lsuoc3 /* no, send ua now */ 503 504 505 **************************************************************** 506 * 507 * got a ua. make sure the final bit is correct. 508 * 509 **************************************************************** 510 00723 511 lsuua calsub getmsk /* get f bit mask from ua */ end of binary card 00000013 assm 01 09-28-82 17.253 x25lap_tables page 36 link setup phase 00725 512 cmpchr pmask,pfmask,lsuua2 /* does f bit match p bit ? */ 00730 513 goto lsuwt /* no, ignore ua */ 514 00732 515 lsuua2 setlcf flgwd1,lsfgua /* remember we got ua */ 516 517 518 **************************************************************** 519 * 520 * see if we finished link setup. we must have received 521 * a sarm and sent a ua. 522 * 523 **************************************************************** 524 00735 525 tstlcf flgwd1,lsfgs,lsuua4 /* got a sarm ? */ 00741 526 setime t3 /* no, wait at most t3 seconds */ 00743 527 goto lsuwt 528 00745 529 lsuua4 setime 0 /* not waiting for ua or sarm */ 00747 530 tstlcf flgwd1,lsfsua,lsuwt /* need to send ua ? */ 00753 531 goto ixfr /* no, enter info transfer phase */ 532 533 534 **************************************************************** 535 * 536 * got a control order. see if it is hangup or disconnect. 537 * 538 **************************************************************** 539 00755 540 lsuts tstflg tfhang,hang /* was it hangup ? */ 00761 541 linctl stat0,lsuwt /* get line control data */ 00764 542 tstlcl stat0,lctdis,idisrp /* disconnect order ? */ 00770 543 goto lsuwt /*ignore anything else */ assm 01 09-28-82 17.253 x25lap_tables page 37 link disconnect phase 545 **************************************************************** 546 * 547 * come here to initiate link disconnection. 548 * 549 **************************************************************** 550 00772 551 idisrp setlcf flgwd1,rprtsw /* rprtsw next state transition */ end of binary card 00000014 552 00775 553 idis setime 0 /* reset timer */ 00777 554 clrlcf flgwd1,ldfsua /* don't send ua yet */ 01002 555 idis1 cmpchr locadr,dceadr,idis2 /* are we the dce ? */ 556 557 558 **************************************************************** 559 * 560 * as dte, we must send and receive a disc and we must send 561 * and receive a ua. 562 * 563 **************************************************************** 564 01005 565 clrlcf flgwd1,ldfgd /* have not gotten disc yet */ 01010 566 goto dis1 567 568 569 **************************************************************** 570 * 571 * as dce, we simply send a disc and receive a ua. we 572 * do not expect to receive a disc in return. in order to 573 * share a common symmetric procedure, however, we pretend 574 * to have already received a disc and sent a ua. 575 * 576 **************************************************************** 577 01012 578 idis2 setlcf flgwd1,ldfgd /* pretend we got a disc */ 01015 579 goto dis1 580 581 582 **************************************************************** 583 * 584 * come here to respond to a disconnect request from the 585 * remote station. 586 * 587 **************************************************************** 588 01017 589 rdis setime 0 /* reset timer */ 01021 590 setlcf flgwd1,ldfgd /* we got a disc */ 01024 591 calsub getmsk /* get p bit mask from disc */ 01026 592 setchr fmask,pfmask /* make f bit of next ua match */ 01030 593 cmpchr locadr,dteadr,rdis2 /* are we the dte ? */ 594 assm 01 09-28-82 17.253 x25lap_tables page 38 link disconnect phase 595 596 **************************************************************** 597 * 598 * as dce, we must send a disc and we must send and 599 * receive a ua. 600 * 601 **************************************************************** 602 01033 603 setlcf flgwd1,ldfsua /* we should send a ua */ 01036 604 goto dis1 605 606 607 ***************************************************************** 608 * 609 * as dte, we need only send a ua. in order to share a 610 * common symmetric procedure, however, we pretend to have 611 * already sent a disc and received a ua. 612 * 613 ***************************************************************** 614 01040 615 rdis2 clrlcf flgwd1,ldfsd /* pretend we sent disc */ end of binary card 00000015 01043 616 setlcf flgwd1,ldfgua /* pretend we got ua */ 01046 617 setlcl rc,0 /* init retry counter */ 01051 618 goto dis2 619 620 621 ***************************************************************** 622 * 623 * begin by sending a disc command. 624 * 625 ***************************************************************** 626 01053 627 dis1 clrlcf flgwd1,ldfgua /* have not gotten ua */ 01056 628 setchr pmask,null /* p bit off in first disc */ 629 01060 630 setlcf flgwd1,ldfsd /* need to send disc */ 01063 631 tstlcf flgwd1,xmitsw,diswt /* xmit busy ? */ 01067 632 goto disoc1 /* no, send disc now */ 633 634 635 ***************************************************************** 636 * 637 * wait here for all events during link disconnect. 638 * 639 ***************************************************************** 640 01071 641 diswt setlcl retlbl,diswt /* remember where we were */ 01074 642 wait disto,badoa,dists 01100 643 status 0,dsr,hang 01104 644 status 0,cd,hang assm 01 09-28-82 17.253 x25lap_tables page 39 link disconnect phase 01110 645 status exh,0,exhsta end of binary card 00000016 01114 646 status fcserr,0,fcesta 01120 647 status rcvabt,0,rabsta 01124 648 status rcvtrm,0,disin 01130 649 status term,0,disoc 01134 650 status xte,0,xtesta 651 652 653 ***************************************************************** 654 * 655 * previous output completed. discard it and see if there 656 * is anything more to write. 657 * 658 ***************************************************************** 659 01140 660 disoc calsub outcmp /* handle output completion */ 01142 661 disoc1 null 01142 662 tstlcf flgwd1,ldfsua,disoc3 /* need to send ua ? */ 01146 663 tstlcf flgwd1,ldfsd,disoc2 /* need to send disc ? */ 01152 664 goto diswt /* no, wait */ 665 01154 666 disoc2 bldmsg dscmsg,gopunt /* build disc message */ 01157 667 outscn setp,gopunt /* set p bit */ end of binary card 00000017 01162 668 calsub write /* start xmit */ 01164 669 setime t1 /* response due before t1 seconds */ 01166 670 clrlcf flgwd1,ldfsd /* reset send disc indicator */ 01171 671 goto diswt 672 01173 673 disoc3 bldmsg uamsg,gopunt /* build ua message */ 01176 674 outscn setf,gopunt /* set f bit */ 01201 675 calsub write /* start xmit */ 01203 676 clrlcf flgwd1,ldfsua /* reset send ua indicator */ 01206 677 tstlcf flgwd1,ldfgua,down /* done with link disconnect ? */ 01212 678 goto diswt 679 680 681 ***************************************************************** 682 * 683 * timer ran out. if we are waiting to receive a ua, resend 684 * the disc. otherwise, we timed out waiting to receive a 685 * disc. in this case, give up and enter link down state. 686 * 687 ***************************************************************** 688 01214 689 disto null 690 * 691 * count discs here 692 * 01214 693 setchr pmask,pfon /* poll bit on in next disc */ assm 01 09-28-82 17.253 x25lap_tables page 40 link disconnect phase 01216 694 setlcf flgwd1,ldfsd /* need to send disc */ 01221 695 clrlcf flgwd1,ldfgua /* need another ua */ 01224 696 tstlcf flgwd1,xmitsw,diswt /* xmit busy ? */ end of binary card 00000018 01230 697 goto disoc2 /* no, send disc now */ 698 699 700 ***************************************************************** 701 * 702 * input frame received. at this point, we are interested 703 * only in ua or disc. 704 * 705 ***************************************************************** 706 01232 707 disin calsub ckfrm /* check the input frame */ 01234 708 dumpin 01235 709 tstlcl badfrm,1,diswt /* ignore a bad frame */ 01241 710 tstlcl ufrm,1,disin2 /* is it a u-frame ? */ 01245 711 waitm /* no, ignore */ 712 01246 713 disin2 tstlcl fcn,ua,disua /* handle ua response */ 01252 714 tstlcl fcn,disc,dis2 /* handle disc */ 01256 715 waitm /* ignore everything else */ 716 717 718 ***************************************************************** 719 * 720 * got a disc. respond with ua. 721 * 722 ***************************************************************** 723 01257 724 dis2 setlcf flgwd1,ldfgd /* indicate we got the disc */ 01262 725 calsub getmsk /* get p bit mask from disc */ 01264 726 setchr fmask,pfmask /* make f bit of next ua match */ 01266 727 setlcf flgwd1,ldfsua /* need to send ua */ 01271 728 tstlcf flgwd1,xmitsw,diswt /* xmit busy ? */ 01275 729 goto disoc3 /* no, send ua now */ end of binary card 00000019 730 731 732 ***************************************************************** 733 * 734 * got a ua. make sure the final bit is correct. 735 * 736 ***************************************************************** 737 01277 738 disua calsub getmsk /* get f bit mask from ua */ 01301 739 cmpchr pmask,pfmask,disua2 /* same as p bit mask ? */ 01304 740 waitm /* no, ignore ua */ 741 01305 742 disua2 setlcf flgwd1,ldfgua /* remember we got ua */ assm 01 09-28-82 17.253 x25lap_tables page 41 link disconnect phase 743 744 745 ***************************************************************** 746 * 747 * see if we finished link disconnect. we must have gotten 748 * a disc and sent a ua. 749 * 750 ***************************************************************** 751 01310 752 tstlcf flgwd1,ldfgd,disua4 /* got a disc ? */ 01314 753 setime t3 /* no, wait at most t3 seconds */ 01316 754 waitm 755 01317 756 disua4 setime 0 /* not waiting for ua or disc */ 01321 757 tstlcf flgwd1,ldfsua,diswt /* need to send ua ? */ 01325 758 goto down /* no, enter link down state */ 759 760 761 ***************************************************************** 762 * 763 * got a control order. at this time, we recognize only 764 * hangup and disconnect. 765 * 766 ***************************************************************** 767 01327 768 dists tstflg tfhang,hang /* was it hangup ? */ 01333 769 linctl stat0,diswt /* get line control data */ 01336 770 tstlcl stat0,lctdis,dists2 /* disconnect order ? */ 01342 771 waitm 772 01343 773 dists2 setlcf flgwd1,rprtsw /* rprtsw user-requested state change */ end of binary card 00000020 01346 774 waitm assm 01 09-28-82 17.253 x25lap_tables page 42 information transfer phase 776 ***************************************************************** 777 * 778 * come here to enter the information transfer phase. send 779 * line status to indicate that the link is up. 780 * 781 ***************************************************************** 782 01347 783 ixfr bldims lupmsg,gopunt /* send link up status */ 01352 784 sendin 01353 785 clrlcf flgwd1,downsw /* indicate link up */ 786 787 * clrflg tfcrcv /* into message mode now */ 01356 788 setlcl flgwd2,0 /* initialize a few things */ 01361 789 setchr savrsp,nochar 01363 790 setchr savcmd,nochar 01365 791 setchr pmask,null 01367 792 setchr fmask,null 01371 793 setchr curseq,seq0 794 01373 795 setlcl v.s,0 01376 796 setlcl v.r,0 01401 797 setlcl a.s,0 01404 798 setlcl a.r,0 01407 799 setlcl rc,0 01412 800 clrlcf flgwd2,timesw end of binary card 00000021 01415 801 setime 0 802 01417 803 tstlcf flgwd1,oasw,ixfr2 /* output arrived since last sndout ? */ 01423 804 goto ixfwt /* no */ 01425 805 ixfr2 signal sndout /* yes, solicit more output */ 01427 806 clrlcf flgwd1,oasw 807 808 809 ***************************************************************** 810 * 811 * wait here for all events during the information transfer 812 * phase. 813 * 814 ***************************************************************** 815 01432 816 ixfwt setlcl retlbl,ixfwt /* remember where we were */ 01435 817 wait ixfto,ixfoa,ixfts 01441 818 status 0,dsr,hang 01445 819 status 0,cd,hang 01451 820 status exh,0,exhsta 01455 821 status fcserr,0,fcesta 01461 822 status rcvabt,0,rabsta end of binary card 00000022 01465 823 status rcvtrm,0,ixfin 01471 824 status term,0,ixfoc assm 01 09-28-82 17.253 x25lap_tables page 43 information transfer phase 01475 825 status xte,0,xtesta 826 827 828 ***************************************************************** 829 * 830 * got a control order. see if it is hangup or disconnect. 831 * 832 ***************************************************************** 833 01501 834 ixfts tstflg tfhang,hang /* was it hangup ? */ 01505 835 linctl stat0,ixfwt /* get line control data */ 01510 836 tstlcl stat0,lctdis,idisrp /* disconnect order ? */ 01514 837 waitm /* ignore anything else */ 838 839 840 ***************************************************************** 841 * 842 * new output has arrived. try to transmit it. 843 * 844 ***************************************************************** 845 01515 846 ixfoa setlcf flgwd1,oasw /* indicate output arrival */ 01520 847 calsub sndfrm /* try to send output frame */ 01522 848 waitm 849 850 851 ***************************************************************** 852 * 853 * previous output completed. discard it and see if there 854 * is something more to write. 855 * 856 ***************************************************************** 857 01523 858 ixfoc calsub outcmp /* handle output completion */ 01525 859 cmpchr savcmd,nochar,ixfoc2 /* saved command to send ? */ 01530 860 calsub sndsc /* yes, send it */ 01532 861 waitm end of binary card 00000023 862 01533 863 ixfoc2 cmpchr savrsp,nochar,ixfoc5 /* saved response to send ? */ 01536 864 calsub sndsr /* no, send it */ 01540 865 waitm 866 01541 867 ixfoc5 tstlcf flgwd2,locrnr,ixfre1 /* force 01545 868 tstlcf flgwd2,treset,ixfwt 869 01551 870 calsub sndfrm /* send i frame */ 01553 871 goto ixfre1 /* send a supervisory response */ 872 873 874 ***************************************************************** assm 01 09-28-82 17.253 x25lap_tables page 44 information transfer phase 875 * 876 * timer ran out. see if we should enter timer recovery, 877 * link reset, or link disconnect. 878 * 879 ***************************************************************** 880 01555 881 ixfto tstlcf flgwd2,timesw,ixfto1 /* long 01561 882 waitm /* no timers */ 883 01562 884 ixfto1 clrlcf flgwd2,timesw 01565 885 addlcl rc,1 /* bump retry counter */ 01570 886 tstlcf flgwd2,treset,ixfto4 /* transmit reset state ? */ 01574 887 tstlcf flgwd2,ttirec,ixfto3 /* transmit timer recovery state ? */ 888 01600 889 setlcf flgwd2,ttirec /* enter transmit timer recovery */ end of binary card 00000024 01603 890 setlcv xx,v.s /* save current v(s) */ 01606 891 ixfto2 setlcv v.s,a.r /* pretend last acked frame was last sent */ 892 01611 893 calasm cpvs 01614 894 bldims tirmsg,gopunt /* send timer recovery */ 01617 895 sendin 01620 896 calsub sndfrm /* dispose of unsent output */ 01622 897 waitm 898 01623 899 ixfto3 tstlcl rc,n2,ixflr /* reset link if too many retries */ 01627 900 goto ixfto2 /* send the same frame again */ 901 01631 902 ixfto4 tstlcl rc,n2,idis /* disconnect link if too may retries */ 01635 903 setchr savcmd,sarm /* prepare to send sarm (again) * / 01637 904 setchr pmask,pfon /* turn on poll bit */ 01641 905 calsub sndsc /* try to send it */ 01643 906 waitm 907 908 909 910 ***************************************************************** 911 * 912 * got an input frame. see what kind and make sure it is 913 * correct. 914 * 915 ***************************************************************** 916 01644 917 ixfin calasm valfrm /* validate input frame */ 01647 918 tstlcl badfrm,0,ixfin4 /* bad frame ? */ end of binary card 00000025 01653 919 dumpin /* yes, discard frame */ 01654 920 tstlcf flgwd2,treset,ixfwt 01660 921 tstlcl badadr,1,ixfwt /* yes, bad address ? */ 922 01664 923 cmpchr frmadr,locadr,ixfcr /* command reject for bad command */ assm 01 09-28-82 17.253 x25lap_tables page 45 information transfer phase 01667 924 goto ixflr 925 01671 926 ixfin4 cmpchr frmadr,locadr,ixfin5 /* local addr => command */ 01674 927 dumpin 01675 928 tstlcl cmdsw,1,ixflr /* command frame ? */ 01701 929 tstlcl sfrm,1,ixfsr /* go process s-frame response */ 01705 930 tstlcl ufrm,1,ixfur /* go process u-frame response */ 01711 931 punt 1 932 01713 933 ixfin5 null 01713 934 tstlcl ifrm,1,ixfic /* go process i-frame command */ 01717 935 dumpin end of binary card 00000026 01720 936 tstlcl sfrm,1,ixfsc /* s-frame command? */ 01724 937 tstlcl cmdsw,0,ixfcr /* command ? */ 01730 938 tstlcl ufrm,1,ixfuc /* go process u-frame command */ 01734 939 punt 1 940 941 942 ***************************************************************** 943 * 944 * process a supervisory response frame. 945 * 946 ***************************************************************** 947 01736 948 ixfsr tstlcf flgwd2,treset,ixfwt /* ignore if transmit reset state */ 01742 949 tstlcf flgwd2,ttirec,ixtsr /* timer recovery ? */ 01746 950 tstlcl pf,1,ixflr /* no, final bit on ? */ 951 01752 952 ixfsc null 01752 953 tstlcf flgwd2,treset,ixfwt 954 01756 955 ixfsr2 calsub prcn.r /* process n(r) */ 01760 956 tstlcl fcn,rr,ixfsr4 /* is it rr ? */ 01764 957 tstlcl fcn,rej,ixfsr3 /* is it rej ? */ end of binary card 00000027 01770 958 tstlcl fcn,rnr,ixfsr5 /* is it rnr ? */ 01774 959 punt 1 /* none of the above */ 960 01776 961 ixfsr3 tstlcf flgwd2,trej,ixfsr4 /* already in transmit reject state ? */ 962 02002 963 tstlcv v.s,a.r,ixfsr4 /* need to back up v(s) ? */ 02006 964 setlcv v.s,a.r /* yes, restart from last acked frame */ 02011 965 calasm cpvs 02014 966 bldims rejmsg,gopunt /* send rej to cs */ 02017 967 sendin 02020 968 setlcf flgwd2,trej /* indicate transmit reject state */ 969 02023 970 ixfsr4 clrlcf flgwd2,remrnr /* clear rnr condition (if any) */ 02026 971 goto ixfsr6 972 assm 01 09-28-82 17.253 x25lap_tables page 46 information transfer phase 02030 973 ixfsr5 setlcf flgwd2,remrnr /* remote receiver not ready */ 02033 974 setlcl rc,0 /* reset retry count */ end of binary card 00000028 975 02036 976 ixfsr6 calsub setclk /* set timer */ 02040 977 calsub sndfrm /* send frame and/or solicit new one */ 02042 978 cmpchr frmadr,locadr,ixfre /* that' 02045 979 waitm 980 981 982 **************************************************************** 983 * 984 * process a supervisory response frame while in timer 985 * recovery state. 986 * 987 **************************************************************** 988 02046 989 ixtsr calsub prcn.r /* process n(r) */ 02050 990 tstlcl fcn,rr,ixtsr2 /* is it rr ? */ 02054 991 tstlcl fcn,rej,ixtsr2 /* is it rej ? */ 02060 992 tstlcl fcn,rnr,ixtsr3 /* is it rnr ? */ 02064 993 punt 1 994 02066 995 ixtsr2 clrlcf flgwd2,remrnr /* clear rnr condition (if any) */ 02071 996 goto ixtsr4 997 02073 998 ixtsr3 setlcf flgwd2,remrnr /* remote receiver not ready */ 999 02076 1000 ixtsr4 setlcv v.s,n.r /* update v(s) */ 02101 1001 tstlcl pf,0,ixtsr6 /* final bit on ? */ end of binary card 00000029 02105 1002 clrlcf flgwd2,ttirec /* yes, exit timer recovery */ 02110 1003 setlcl rc,0 /* reset retry counter */ 1004 02113 1005 calasm cpvs 02116 1006 bldims nrmmsg,gopunt /* send normal to cs */ 02121 1007 sendin 02122 1008 goto ixtsr6 1009 02124 1010 ixtsr6 calsub setclk /* set timer */ 02126 1011 calsub sndfrm 02130 1012 waitm 1013 1014 1015 ***************************************************************** 1016 * 1017 * process an information frame. 1018 * 1019 ***************************************************************** 1020 02131 1021 ixfic null assm 01 09-28-82 17.253 x25lap_tables page 47 information transfer phase 02131 1022 tstlcf flgwd2,treset,ixfic7 /* ignor 02135 1023 calsub prcn.r /* process n(r) */ 02137 1024 calsub setclk /* set timer */ 02141 1025 tstlcf flgwd2,rreset,ixfic6 /* if rcv reset state, issue cmdr */ 02145 1026 tstlcv n.s,v.r,ixfic5 /* sequence error ? */ 02151 1027 dumpin /* yes, dump frame */ 02152 1028 setlcf flgwd2,rrej /* must send a rej later */ end of binary card 00000030 02155 1029 goto ixfre0 1030 02157 1031 ixfic7 dumpin /* dump frame for xmit reset */ 02160 1032 waitm 1033 02161 1034 ixfic6 dumpin /* send cmdr */ 02162 1035 goto ixfcr 1036 02164 1037 ixfic5 clrlcf flgwd2,rrej /* no need to send rej */ 02167 1038 setlcv amarg1,v.r /* get v(r) */ 02172 1039 setlcl amarg2,1 /* prepare to add 1 */ 02175 1040 calasm admod8 /* add modulo 8 */ 02200 1041 setlcv v.r,amarg2 /* update v(r) */ 02203 1042 meterm m.in 1043 02205 1044 calasm setbrk /* turn on break flag in last buffer */ 02210 1045 sendin /* ship the input frame */ 1046 02211 1047 ixfre0 tstlcf flgwd2,treset,ixfwt 1048 02215 1049 ixfre tstlcl pf,1,ixfre4 /* look at p bit */ 02221 1050 ixfre1 setchr fmask,null /* reset f bit */ end of binary card 00000031 02223 1051 tstlcf flgwd2,rrej,ixfre5 /* send 02227 1052 tstlcf flgwd2,locrnr,ixfre6 /* force 02233 1053 tstlcv a.s,v.r,ixfwt /* any outstanding frames? */ 02237 1054 ixfre6 null 02237 1055 clrlcf flgwd2,locrnr /* assume no rnr */ 02242 1056 calasm ckrnr /* yes, respond normally */ 02245 1057 tstlcl rnrflg,0,ixfre2 /* must send rnr? */ 02251 1058 setlcf flgwd2,locrnr /* remember to send rr someday */ 02254 1059 setchr savrsp,rnr /* yes */ 02256 1060 goto ixfre3 02260 1061 ixfre2 setchr savrsp,rr /* no, send rr */ 02262 1062 ixfre3 calsub sndsr /* send the frame */ 02264 1063 setchr savrsp,nochar /* recompute next time */ 02266 1064 waitm 1065 02267 1066 ixfre4 setchr fmask,pfon /* f bit on */ 02271 1067 tstlcf flgwd2,rrej,ixfre5 /* rej n end of binary card 00000032 02275 1068 goto ixfre6 /* no, send rr or rnr */ 1069 assm 01 09-28-82 17.253 x25lap_tables page 48 information transfer phase 02277 1070 ixfre5 clrlcf flgwd2,rrej 02302 1071 setchr savrsp,rej /* send a rej */ 02304 1072 goto ixfre3 1073 1074 1075 ***************************************************************** 1076 * 1077 * process an unnumbered response frame. 1078 * 1079 ***************************************************************** 1080 02306 1081 ixfur tstlcl pf,0,ixfur1 /* was final bit off ? */ 02312 1082 tstlcf flgwd2,treset,ixfur1 /* no, transmit reset state ? */ 02316 1083 goto ixflr /* no, initiate link reset */ 1084 02320 1085 ixfur1 tstlcl fcn,ua,ixfur2 /* was it ua ? */ 02324 1086 tstlcl fcn,cmdr,ixflr /* cmdr => link reset */ 02330 1087 punt 1 1088 02332 1089 ixfur2 tstlcf flgwd2,treset,ixfur3 /* transmit reset state ? */ 02336 1090 waitm /* no, ignore ua */ 1091 02337 1092 ixfur3 tstlcl pf,0,ixfur4 /* final bit off ? */ end of binary card 00000033 02343 1093 tstlcl rc,0,ixfwt /* no, rc > 0 ? */ 02347 1094 goto ixfur5 /* yes, continue */ 1095 02351 1096 ixfur4 tstlcl rc,0,ixfur5 /* rc = 0 ? */ 02355 1097 waitm /* no */ 1098 02356 1099 ixfur5 clrlcf flgwd2,ttirec /* link reset complete, init some stuff */ 02361 1100 clrlcf flgwd2,remrnr 02364 1101 clrlcf flgwd2,treset 02367 1102 clrlcf flgwd2,trej 1103 02372 1104 setlcl rc,0 02375 1105 setime 0 02377 1106 clrlcf flgwd2,timesw 1107 02402 1108 setlcl v.s,0 02405 1109 setlcl a.r,0 end of binary card 00000034 1110 02410 1111 bldims tlrmsg,gopunt /* reset to cs */ 02413 1112 sendin 1113 02414 1114 cmpchr curseq,seq0,ixfur6 /* is this sequence zero ? */ 02417 1115 setchr curseq,seq0 /* no, change to sequence zero */ 02421 1116 goto ixfur7 02423 1117 ixfur6 setchr curseq,seq1 /* change to sequence 1 */ 1118 assm 01 09-28-82 17.253 x25lap_tables page 49 information transfer phase 02425 1119 ixfur7 calsub sndfrm /* dump pending output and get more */ 02427 1120 waitm 1121 1122 1123 ***************************************************************** 1124 * 1125 * process an unnumbered command frame. 1126 * 1127 ***************************************************************** 1128 02430 1129 ixfuc tstlcl fcn,disc,rdis /* is it disc ? */ 02434 1130 tstlcl fcn,sarm,ixfuc2 /* is it a sarm ? */ 02440 1131 punt 1 /* neither */ 1132 02442 1133 ixfuc2 clrlcf flgwd2,rreset /* initialize for receiver link reset */ 02445 1134 clrlcf flgwd2,rrej 02450 1135 setlcl v.r,0 02453 1136 setlcl a.s,0 1137 02456 1138 setchr savrsp,ua /* prepare to send ua */ end of binary card 00000035 02460 1139 setchr fmask,null /* assume final bit off */ 02462 1140 tstlcl pf,0,ixfuc3 /* was poll bit off ? */ 02466 1141 setchr fmask,pfon /* no, turn poll bit on */ 1142 02470 1143 ixfuc3 calsub sndsr /* try to send it */ 02472 1144 waitm 1145 1146 1147 ***************************************************************** 1148 * 1149 * come here to initiate link reset. 1150 * 1151 ***************************************************************** 1152 02473 1153 ixflr tstlcf flgwd2,treset,ixfwt /* alrea 02477 1154 meter2 m.lr,1 02502 1155 setlcf flgwd2,treset /* no, enter it now */ 1156 02505 1157 setime 0 02507 1158 clrlcf flgwd2,timesw 02512 1159 setlcl rc,0 /* init retry counter */ 1160 02515 1161 setchr savcmd,sarm /* prepare to send a sarm */ 02517 1162 setchr pmask,null 02521 1163 calsub sndsc /* try to send it */ 02523 1164 waitm 1165 1166 1167 ***************************************************************** 1168 * assm 01 09-28-82 17.253 x25lap_tables page 50 information transfer phase 1169 * come here to issue a command reject. 1170 * 1171 ***************************************************************** 1172 02524 1173 ixfcr setlcf flgwd2,rreset /* enter rcv reset state */ end of binary card 00000036 02527 1174 meter2 m.cr,1 02532 1175 setchr savrsp,cmdr /* prepare to send command reject */ 02534 1176 setchr fmask,null /* assume final bit off */ 02536 1177 tstlcl pf,0,ixfcr2 /* was poll bit on ? */ 02542 1178 setchr fmask,pfon /* yes, turn final bit on */ 1179 02544 1180 ixfcr2 calasm cmdrif /* get rest of cmdr info field */ 1181 02547 1182 calsub sndsr /* try to send it */ 02551 1183 waitm assm 01 09-28-82 17.253 x25lap_tables page 51 abnormal status handlers 1185 ***************************************************************** 1186 * 1187 * got exhaust status. this means an input tally runout 1188 * occurred which resets receive mode. therefore, we must 1189 * set receive mode on again. unfortunately, we cannot do 1190 * this immediately if there is a pending output dcw list. 1191 * 1192 ***************************************************************** 1193 02552 1194 exhsta stpchn /* must do this to reset channel */ 02554 1195 clrlcf flgwd1,rcvsw /* out of rcv mode */ 02557 1196 meter2 m.exh,1 02562 1197 dumpin 02563 1198 tstlcf flgwd1,xmitsw,exhret /* xmit busy ? */ 02567 1199 contrl srec /* no, ok to set rcv mode now */ 02571 1200 setlcf flgwd1,rcvsw 02574 1201 exhret gotov retlbl /* go back to wherever we were */ end of binary card 00000037 1202 1203 1204 ***************************************************************** 1205 * 1206 * got a frame check sequence error, receive abort, or a 1207 * transfer timing error status. discard the input frame 1208 * and keep on truckin'. 1209 * 1210 ***************************************************************** 1211 02576 1212 fcesta meter2 m.fce,1 02601 1213 goto sta.1 1214 02603 1215 rabsta meter2 m.rab,1 02606 1216 goto sta.1 1217 02610 1218 xtesta meter1 m.xte,1 02613 1219 sta.1 dumpin 02614 1220 waitm 1221 1222 1223 ***************************************************************** 1224 * 1225 * output has arrived while not in information transfer 1226 * phase. flush it and remember to do a sndout later. 1227 * 1228 ***************************************************************** 1229 02615 1230 badoa setlcf flgwd1,oasw /* output arrived since last sndout */ 02620 1231 tstlcf flgwd1,xmitsw,badoa2 /* xmit busy ? */ 02624 1232 dmpout /* no, safe to flush output */ 02625 1233 badoa2 waitm 1234 assm 01 09-28-82 17.253 x25lap_tables page 52 abnormal status handlers 1235 1236 ***************************************************************** 1237 * 1238 * come here on "impossible" error. 1239 * 1240 ***************************************************************** 1241 02626 1242 gopunt punt 1 /* throw in the towel */ assm 01 09-28-82 17.253 x25lap_tables page 53 physical disconnection phase 1244 ***************************************************************** 1245 * 1246 * come here to hang up the line. 1247 * 1248 ***************************************************************** 1249 02630 1250 hang unwind /* in case we exited a subroutine */ 02631 1251 retext 02632 1252 stpchn 02634 1253 dumpin 02635 1254 hang2 dmpout 02636 1255 tstwrt hang2 1256 02640 1257 config /* set idle link state */ 02641 1258 rmode fg.itf 02642 1259 contrl rdtr /* drop dtr */ end of binary card 00000038 1260 02644 1261 clrflg (tflisn,tfhang) 02647 1262 signal hangup 02651 1263 goto hungup assm 01 09-28-82 17.253 x25lap_tables page 54 utility subroutines 1265 ***************************************************************** 1266 * 1267 * subroutine to start transmission of the current output 1268 * message. 1269 * 1270 ***************************************************************** 1271 02653 1272 write holdot /* hold the output */ 02654 1273 setlcf flgwd1,xmitsw /* indicate xmit busy */ 02657 1274 dcwlst 02660 1275 cmd sxmit+rtroe 02661 1276 output (outmsg) 02663 1277 cmd rxmit+sterm 02664 1278 retsub 1279 1280 1281 ***************************************************************** 1282 * 1283 * subroutine to set pfmask according to p/f bit from the 1284 * last received input frame. 1285 * 1286 ***************************************************************** 1287 02665 1288 getmsk setchr pfmask,null /* assume p/f bit off */ 02667 1289 tstlcl pf,0,getmk2 /* p/f bit on in last frame ? */ 02673 1290 setchr pfmask,pfon /* yes, set mask accordingly */ 1291 02675 1292 getmk2 retsub 1293 1294 1295 ***************************************************************** 1296 * 1297 * subroutine to check the validity of an input frame 1298 * (called only during link down phase). the address in the 1299 * input frame is used to assign the local and remote 1300 * station addresses. 1301 * 1302 ***************************************************************** 1303 02676 1304 ckfrmd calasm valfrm /* validate the current input frame */ 02701 1305 tstlcl badfrm,1,cfdret /* ignore bad frame */ 02705 1306 tstlcl cmdsw,0,cfdret /* ignore response frame */ 1307 02711 1308 setchr locadr,frmadr /* take local addr from frame */ end of binary card 00000039 02713 1309 cmpchr frmadr,dteadr,cfd2 /* are we the dte ? */ 02716 1310 setchr remadr,dteadr /* no, remote station is dte */ 02720 1311 goto cfdret 1312 02722 1313 cfd2 setchr remadr,dceadr /* remote station is dce */ 1314 assm 01 09-28-82 17.253 x25lap_tables page 55 utility subroutines 02724 1315 cfdret retsub 1316 1317 1318 ***************************************************************** 1319 * 1320 * subroutine to check the validity of an input frame. it 1321 * verifies that command frames contain the local station 1322 * address and that response frames contain the remote 1323 * station address. 1324 * 1325 ***************************************************************** 1326 02725 1327 ckfrm calasm valfrm /* validate the input frame */ 02730 1328 tstlcl badfrm,1,cfmret /* ignore a bad frame */ 02734 1329 tstlcl cmdsw,1,cfm2 /* was it a command ? */ 1330 02740 1331 cmpchr frmadr,remadr,cfmret /* response has remote addr ? */ 02743 1332 setlcl badfrm,1 /* no, error */ 02746 1333 retsub 02747 1334 cfm2 cmpchr frmadr,locadr,cfmret /* command has local addr ? */ 02752 1335 setlcl badfrm,1 /* no, error */ 02755 1336 cfmret retsub 1337 1338 1339 **************************************************************** 1340 * 1341 * subroutine to handle common output completion chores. 1342 * 1343 **************************************************************** 1344 02756 1345 outcmp clrlcf flgwd1,xmitsw /* xmit not busy */ 02761 1346 dmpout /* discard the output */ end of binary card 00000040 1347 02762 1348 tstlcf flgwd1,rcvsw,outret /* in rcv mode ? */ 02766 1349 contrl srec /* no, turn it on */ 02770 1350 setlcf flgwd1,rcvsw 02773 1351 outret retsub 1352 1353 1354 ***************************************************************** 1355 * 1356 * subroutine to send the current output frame. 1357 * 1358 ***************************************************************** 1359 02774 1360 sndfrm tstwrt sndf02 /* anything to send ? */ 02776 1361 sndf01 retsub /* no */ 1362 02777 1363 sndf02 tstlcf flgwd1,xmitsw,sndf01 /* xmit busy ? */ 03003 1364 outscn whlfrm,sndf83 /* do we have a complete frame ? */ assm 01 09-28-82 17.253 x25lap_tables page 56 utility subroutines 1365 03006 1366 sndf10 tstlcf flgwd2,treset,sndf01 /* transmit reset state ? */ 03012 1367 cmpchr afield,curseq,sndf15 /* is this frame from current sequence ? */ 03015 1368 goto sndf80 1369 03017 1370 sndf15 calasm getn.s /* get n(s) from output frame */ 03022 1371 tstlcv outn.s,v.s,sndf20 /* is it the one we want ? */ 03026 1372 goto sndf80 /* go get next one */ 1373 03030 1374 sndf20 tstlcf flgwd2,remrnr,sndf21 /* remote receiver not ready ? */ end of binary card 00000041 03034 1375 goto sndf30 /* no */ 03036 1376 sndf21 tstlcv v.s,a.r,sndf30 /* any unacked frames ? */ 03042 1377 retsub /* yes, can't send more now */ 1378 03043 1379 sndf30 calsub outseq /* set up n(r) */ 1380 03045 1381 tstlcf flgwd2,ttirec,sndf31 /* transmit timer recovery ? */ 03051 1382 setchr pfmask,null /* no, turn poll bit off */ 03053 1383 goto sndf35 03055 1384 sndf31 setchr pfmask,pfon /* turn poll bit on */ 1385 03057 1386 sndf35 outscn setac,gopunt /* set addr and control fields */ 03062 1387 calsub write /* start xmit */ 03064 1388 meterm m.out 03066 1389 tstlcf flgwd2,timesw,sndf40 /* timer running ? */ 03072 1390 setlcf flgwd2,timesw 03075 1391 setime t1 /* no, start timer */ 1392 03077 1393 sndf40 clrlcf flgwd2,trej /* clear transmit reject condition */ end of binary card 00000042 03102 1394 signal sndout /* solicit next frame */ 03104 1395 clrlcf flgwd1,oasw /* clear output arrival indicator */ 1396 03107 1397 setlcv amarg1,v.s /* get v(s) */ 03112 1398 setlcl amarg2,1 /* prepare to add 1 */ 03115 1399 calasm admod8 /* add modulo 8 */ 03120 1400 setlcv v.s,amarg2 /* update v(s) */ 1401 03123 1402 tstlcf flgwd2,ttirec,sndf41 /* timer recovery ? */ 03127 1403 retsub /* no */ 03130 1404 sndf41 tstlcv xx,amarg1,sndf42 /* xx = prev value of v(s) ? */ 03134 1405 retsub /* no */ 03135 1406 sndf42 setlcv xx,amarg2 /* update xx also */ 03140 1407 retsub /* no */ 1408 1409 03141 1410 sndf80 holdot /* prevent dmpout from causing sndout */ 03142 1411 dmpout 1412 03143 1413 sndf83 tstlcf flgwd1,oasw,sndf84 /* output arrived since last sndout ? */ assm 01 09-28-82 17.253 x25lap_tables page 57 utility subroutines end of binary card 00000043 03147 1414 retsub /* no */ 03150 1415 sndf84 signal sndout /* yes, solicit more output */ 03152 1416 clrlcf flgwd1,oasw /* clear output arrival inidcator */ 03155 1417 retsub 1418 1419 1420 ***************************************************************** 1421 * 1422 * subroutine to send a saved command. 1423 * 1424 ***************************************************************** 1425 03156 1426 sndsc cmpchr savcmd,nochar,sndsc2 /* is there a saved command ? */ 03161 1427 tstlcf flgwd1,xmitsw,sndsc2 /* xmit busy */ 03165 1428 bldmsg cmdmsg,gopunt /* no, build command message */ 03170 1429 outscn setp,gopunt /* set poll bit */ 03173 1430 calsub write /* start xmit */ 03175 1431 setchr savcmd,nochar /* done with this command */ 1432 03177 1433 setlcf flgwd2,timesw /* set long timer */ 03202 1434 setime t1 /* response due in t1 seconds */ 1435 03204 1436 sndsc2 retsub 1437 1438 1439 ***************************************************************** 1440 * 1441 * subroutine to send a saved response. 1442 * 1443 ***************************************************************** 1444 03205 1445 sndsr cmpchr savrsp,nochar,sndsr5 /* is there a saved response ? */ 03210 1446 tstlcf flgwd1,xmitsw,sndsr5 /* xmit busy ? */ 1447 03214 1448 setchr cfield,savrsp /* get saved control field */ end of binary card 00000044 03216 1449 cmpchr cfield,ua,sndsr3 /* is it ua ? */ 03221 1450 cmpchr cfield,cmdr,sndsr6 /* is it cmdr ? */ 1451 03224 1452 calsub outseq /* get n(r) */ 1453 03226 1454 sndsr3 bldmsg rspmsg,gopunt /* build response message */ 03231 1455 sndsr4 outscn setf,gopunt /* set final bit */ 03234 1456 calsub write /* start xmit */ 1457 03236 1458 setchr savrsp,nochar 03240 1459 sndsr5 retsub 1460 03241 1461 sndsr6 bldmsg cmdrms,gopunt /* build cmdr message */ 03244 1462 goto sndsr4 assm 01 09-28-82 17.253 x25lap_tables page 58 utility subroutines 1463 1464 1465 ******************************************************************************** 1466 * 1467 * subroutine to put n(r) into sent frame 1468 * 1469 ******************************************************************************** 1470 03246 1471 outseq setlcv outn.r,v.r /* get current v(r) */ 03251 1472 calasm putn.r /* put n(r) in control field */ 03254 1473 setlcv a.s,outa.s /* remember most recent ack sent */ 03257 1474 retsub 1475 1476 1477 ***************************************************************** 1478 * 1479 * subroutine to process the n(r) value from an input frame. 1480 * 1481 ***************************************************************** 1482 03260 1483 prcn.r null 03260 1484 setlcv middle,n.r /* prepare to test n(r) bounds */ 03263 1485 setlcv low,a.r /* set lower bound for n(r) */ end of binary card 00000045 03266 1486 tstlcf flgwd2,ttirec,prc3 /* transmit timer recovery ? */ 1487 03272 1488 setlcv high,v.s /* set upper bound for n(r) */ 03275 1489 calasm chkrng /* check n(r) range */ 03300 1490 tstlcl badrng,1,prc6 /* out of range ? */ 03304 1491 goto prc5 1492 03306 1493 prc3 setlcv high,xx /* set upper bound for n(r) */ 03311 1494 calasm chkrng /* check n(r) range */ 03314 1495 tstlcl badrng,1,prc6 /* out of range ? */ 1496 03320 1497 prc5 tstlcv a.r,n.r,prcret /* any new frames acknowledged? */ 03324 1498 setlcv a.r,n.r /* yes, update last ack received */ 03327 1499 calasm savicp /* must save input frame */ 03332 1500 bldims ackmsg,gopunt /* ack to cs */ end of binary card 00000046 03335 1501 sendin 03336 1502 calasm resicp 1503 03341 1504 setlcl rc,0 /* reset retry counter */ 1505 03344 1506 prcret retsub 1507 03345 1508 prc6 unwind /* prepare for non-local goto */ 03346 1509 dumpin 03347 1510 goto ixflr /* initiate link reset */ 1511 assm 01 09-28-82 17.253 x25lap_tables page 59 utility subroutines 1512 1513 ***************************************************************** 1514 * 1515 * subroutine to set the timer as appropriate after 1516 * receiving acknowledgement. 1517 * 1518 ***************************************************************** 1519 03351 1520 setclk tstlcf flgwd2,ttirec,clk2 /* timer recovery ? */ 03355 1521 tstlcv v.s,a.r,clk3 /* any unacked frames ? */ 1522 03361 1523 clk2 setlcf flgwd2,timesw 03364 1524 setime t1 03366 1525 retsub 1526 03367 1527 clk3 clrlcf flgwd2,timesw 03372 1528 retsub assm 01 09-28-82 17.253 x25lap_tables page 60 assembler utility subroutines 1530 ***************************************************************** 1531 * 1532 * valfrm - validate frame 1533 * 1534 * validates the address and control fields of the current 1535 * input frame. also, validates that the presence of an 1536 * information field, if any, is appropriate for the type 1537 * of frame. 1538 * 1539 ***************************************************************** 1540 03373 1541 valfrm subr vfm,(x3) 1542 * 1543 * initialize a few things. 1544 * end of binary card 00000047 03401 0 56 161 3562 1545 stz cmdsw-* 03402 0 56 151 3553 1546 stz ifrm-* 03403 0 56 151 3554 1547 stz sfrm-* 03404 0 56 151 3555 1548 stz ufrm-* 03405 0 56 151 3556 1549 stz badfrm-* 03406 0 56 151 3557 1550 stz badadr-* 03407 0 56 151 3560 1551 stz badctl-* 03410 0 56 151 3561 1552 stz badi-* 1553 * 1554 * make sure frame contains at least two bytes. 1555 * 03411 1 41 005 0 1556 ldx3 t.icp,1 get addr of first input buffer 03412 0 74 126 3540 1557 tze vfm100-* is it zero? 03413 373 001 0 1558 iacx3 bf.tly get addr of buffer tally 03414 3 07 000 0 1559 lda 0,3 get buffer tally word 03415 0 34 155 3572 1560 ana l.a000-* (=buftmk) leave only tally 03416 422 002 0 1561 icmpa 2 at least 2 bytes? 03417 0 45 121 3540 1562 tnc vfm100-* no, error 03420 0 17 131 3551 1563 sta vfmtly-* save tally 1564 * 1565 * validate and save address field. 1566 * 03421 373 001 0 1567 iacx3 bf.dta-bf.tly get addr of first data word 03422 3 07 000 0 1568 lda 0,3 get first data word 03423 0 17 127 3552 1569 sta vfmdta-* save addr and control fields 1570 03424 2337 11 0 1571 arl 9 isolate address field 03425 422 001 0 1572 icmpa 1 is it 1? 03426 0 74 006 3434 1573 tze vfm010-* yes, good 03427 422 003 0 1574 icmpa 3 is it 3? 03430 0 74 004 3434 1575 tze vfm010-* yes, good 03431 0 76 126 3557 1576 aos badadr-* nope, bad address 03432 0 76 124 3556 1577 aos badfrm-* and therefore, bad frame 03433 0 71 007 3442 1578 tra vfm012-* 1579 assm 01 09-28-82 17.253 x25lap_tables page 61 assembler utility subroutines 03434 0 07 137 3573 1580 vfm010 lda l.a001-* (=frmadr) get addr of frmadr 03435 4 10 132 3567 1581 tsy a.a000-*,* (=adbyte) convert it 03436 000000 0 1582 oct 0 conversion failed, die 03437 0 07 113 3552 1583 lda vfmdta-* get address word 03440 2337 11 0 1584 arl 9 isolate address 03441 3 17 200 0 1585 sta 0,3,b.0 update frmadr 1586 * 1587 * see if this is an i-frame 1588 * 03442 0 07 110 3552 1589 vfm012 lda vfmdta-* get back control field 03443 0 31 132 3575 1590 cana l.a003-* (=000001) bit 1 on? 03444 0 64 021 3465 1591 tnz vfm020-* yes, not an i-frame 1592 03445 0 76 106 3553 1593 aos ifrm-* indicate i-frame 03446 0 76 114 3562 1594 aos cmdsw-* indicate command 03447 0 56 114 3563 1595 stz fcn-* indicate function 1596 end of binary card 00000048 03450 2337 01 0 1597 arl 1 shift out bit 1 03451 6333 00 0 1598 caq move result 03452 0 34 122 3574 1599 ana l.a002-* (=000007) isolate n(s) 03453 0 17 112 3565 1600 sta n.s-* save it 1601 03454 6337 03 0 1602 qrl 3 shift out n(s) 03455 7333 00 0 1603 vfm015 cqa move result 03456 0 34 117 3575 1604 ana l.a003-* (=000001) isolate p/f bit 03457 0 17 105 3564 1605 sta pf-* save it 1606 03460 6337 01 0 1607 qrl 1 shift out p/f bit 03461 7333 00 0 1608 cqa move result 03462 0 34 112 3574 1609 ana l.a002-* (=000007) isolate n(r) 03463 0 17 103 3566 1610 sta n.r-* save it 03464 0 71 063 3547 1611 tra vfmret-* done 1612 * 1613 * see if this is an s-frame. 1614 * 03465 0 07 065 3552 1615 vfm020 lda vfmdta-* get back control field 03466 2337 01 0 1616 arl 1 shift out bit 1 03467 0 31 106 3575 1617 cana l.a003-* (=000001) bit 2 on? 03470 0 64 015 3505 1618 tnz vfm030-* yes, not an s-frame 03471 0 76 063 3554 1619 aos sfrm-* indicate s-frame 1620 03472 0 07 060 3552 1621 lda vfmdta-* get control field 03473 0 34 103 3576 1622 ana l.a004-* (=000017) isolate bits 1-4 03474 422 015 0 1623 icmpa 13 invalid control field? 03475 0 74 046 3543 1624 tze vfm102-* yes 03476 0 17 065 3563 1625 sta fcn-* indicate function 1626 03477 0 07 052 3551 1627 lda vfmtly-* get back buffer tally 03500 422 002 0 1628 icmpa 2 more than 2 bytes? 03501 0 64 044 3545 1629 tnz vfm103-* yes, no good assm 01 09-28-82 17.253 x25lap_tables page 62 assembler utility subroutines 1630 03502 0 47 050 3552 1631 ldq vfmdta-* get control field 03503 6337 04 0 1632 qrl 4 shift out function bits 03504 0 71 751 3455 1633 tra vfm015-* go get p/f and n(r) 1634 * 1635 * see if this is a u-frame 1636 * 03505 0 76 050 3555 1637 vfm030 aos ufrm-* indicate u-frame 03506 0 07 044 3552 1638 lda vfmdta-* get control field 03507 0 56 055 3564 1639 stz pf-* assume p/f bit off 03510 0 31 067 3577 1640 cana l.a005-* (=000020) p/f bit on? 03511 0 74 002 3513 1641 tze 2 no 03512 0 76 052 3564 1642 aos pf-* yes 1643 03513 0 34 065 3600 1644 ana l.a006-* (=000357) leave only function bits 03514 0 17 047 3563 1645 sta fcn-* save it 1646 03515 422 207 0 1647 icmpa cmdr is this a cmdr frame? 03516 0 64 005 3523 1648 tnz vfm040-* no end of binary card 00000049 03517 0 07 032 3551 1649 lda vfmtly-* get buffer tally 03520 422 005 0 1650 icmpa 5 5 bytes? 03521 0 64 024 3545 1651 tnz vfm103-* no, error 03522 0 71 025 3547 1652 tra vfmret-* done 1653 03523 422 143 0 1654 vfm040 icmpa ua is this a ua frame? 03524 0 64 003 3527 1655 tnz vfm050-* no 03525 0 56 035 3562 1656 stz cmdsw-* yes, indicate response 03526 0 71 006 3534 1657 tra vfm060-* 1658 03527 0 76 033 3562 1659 vfm050 aos cmdsw-* indicate command 03530 422 017 0 1660 icmpa sarm is this a sarm frame? 03531 0 74 003 3534 1661 tze vfm060-* yes 03532 422 103 0 1662 icmpa disc is this a disc frame? 03533 0 64 010 3543 1663 tnz vfm102-* no, unrecognized 1664 03534 0 07 015 3551 1665 vfm060 lda vfmtly-* get buffer tally 03535 422 002 0 1666 icmpa 2 2 bytes? 03536 0 64 007 3545 1667 tnz vfm103-* no, error 03537 0 71 010 3547 1668 tra vfmret-* done 1669 * 1670 * handle error conditions here. 1671 * 03540 0 76 020 3560 1672 vfm100 aos badctl-* bad control field 03541 0 76 016 3557 1673 aos badadr-* bad address field 03542 0 71 004 3546 1674 tra vfm110-* 1675 03543 0 76 015 3560 1676 vfm102 aos badctl-* bad control field 03544 0 71 002 3546 1677 tra vfm110-* 1678 03545 0 76 014 3561 1679 vfm103 aos badi-* bad info field assm 01 09-28-82 17.253 x25lap_tables page 63 assembler utility subroutines 1680 03546 0 76 010 3556 1681 vfm110 aos badfrm-* at least one error 1682 * 1683 * finished. 1684 * 03547 1685 vfmret return valfrm 1686 1687 03551 1688 vfmtly bss 1 03552 1689 vfmdta bss 1 1690 03553 1691 ifrm bss 1 03554 1692 sfrm bss 1 03555 1693 ufrm bss 1 03556 1694 badfrm bss 1 03557 1695 badadr bss 1 03560 1696 badctl bss 1 03561 1697 badi bss 1 03562 1698 cmdsw bss 1 03563 1699 fcn bss 1 03564 1700 pf bss 1 03565 1701 n.s bss 1 03566 1702 n.r bss 1 1703 1704 03567 0 02000 3 1705 a.a000 ind adbyte 03570 0 03000 3 1706 a.a001 ind cvaddr 03571 0 00652 0 1707 a.a002 ind .crnbf 1708 03572 000777 0 1709 l.a000 vfd 18/buftmk 03573 000462 0 1710 l.a001 vfd 18/frmadr 03574 000007 0 1711 l.a002 oct 000007 03575 000001 0 1712 l.a003 oct 000001 03576 000017 0 1713 l.a004 oct 000017 03577 000020 0 1714 l.a005 oct 000020 03600 000357 0 1715 l.a006 oct 000357 03601 000471 0 1716 l.a007 vfd 18/cfield end of binary card 00000050 03602 777761 0 1717 l.a008 vfd 18/v.r 03603 777762 0 1718 l.a009 vfd 18/v.s 03604 000474 0 1719 l.a010 vfd 18/cmdrb2 03605 000475 0 1720 l.a011 vfd 18/cmdrb3 03606 020000 0 1721 l.a012 vfd 18/bffbrk 03607 777704 0 1722 l.a013 oct 777704 03610 000004 0 1723 l.a014 vfd 18/tfkpar 03611 000002 0 1724 l.a015 vfd 18/dialim 03612 000473 0 1725 l.a016 vfd 18/cmdrb1 03613 000476 0 1726 l.a017 vfd 18/iv.s 03614 777757 0 1727 l.a018 vfd 18/a.r 1728 1729 assm 01 09-28-82 17.253 x25lap_tables page 64 assembler utility subroutines 1730 ***************************************************************** 1731 * 1732 * getn.s - get n(s) 1733 * 1734 * a subroutine to obtain the n(s) value from the control 1735 * byte of the next output frame. 1736 * 1737 ***************************************************************** 1738 03615 1739 getn.s subr gns,(x3) 03623 0 07 756 3601 1740 lda l.a007-* (=cfield) get addr of cfield 03624 4 10 743 3567 1741 tsy a.a000-*,* (=adbyte) convert it 03625 000000 0 1742 oct 0 conversion failed, die 03626 3 07 200 0 1743 lda 0,3,b.0 get value of cfield 1744 03627 2337 01 0 1745 arl 1 right justify n(s) 03630 0 34 744 3574 1746 ana l.a002-* (=000007) isolate n(s) 03631 0 17 003 3634 1747 sta outn.s-* set return arg 1748 03632 1749 return getn.s 1750 03634 1751 outn.s bss 1 1752 1753 1754 ***************************************************************** 1755 * 1756 * cntqf - count queued frames 1757 * 1758 * a subroutine to count the number of frames on the dia 1759 * queue. 1760 * 1761 ***************************************************************** 1762 03635 1763 cntqf subr cqf,(x3) 03643 0 56 012 3655 1764 stz cqfcnt-* start count at zero 03644 1 41 026 0 1765 ldx3 t.dcp,1 get start of dia queue 03645 0 74 006 3653 1766 cqf010 tze cqf030-* end of queue? end of binary card 00000051 03646 3 07 002 0 1767 lda bf.dta,3 data frames have 2 zero bytes 03647 0 64 002 3651 1768 tnz cqf020-* 03650 0 76 005 3655 1769 aos cqfcnt-* yes, count another frame 03651 3 41 000 0 1770 cqf020 ldx3 bf.nxt,3 follow chain 03652 0 71 773 3645 1771 tra cqf010-* 1772 03653 1773 cqf030 return cntqf 1774 03655 1775 cqfcnt bss 1 count of frames 1776 1777 1778 ***************************************************************** 1779 * assm 01 09-28-82 17.253 x25lap_tables page 65 assembler utility subroutines 1780 * putn.r - put n(r) 1781 * 1782 * a subroutine to put the current n(r) value in the control 1783 * field of the next output frame. 1784 * 1785 ***************************************************************** 1786 03656 1787 putn.r subr pnr,(x3) 03664 0 07 015 3701 1788 lda outn.r-* get n(r) 03665 0 34 707 3574 1789 ana l.a002-* (=000007) 03666 0 17 014 3702 1790 sta outa.s-* save for caller 03667 0336 05 0 1791 als 5 shift into proper byte position 03670 0 17 013 3703 1792 sta pnrtmp-* save in temp 1793 03671 0 07 710 3601 1794 lda l.a007-* (=cfield) get addr of cfield 03672 4 10 675 3567 1795 tsy a.a000-*,* (=adbyte) convert it 03673 000000 0 1796 oct 0 conversion failed, die 03674 3 07 200 0 1797 lda 0,3,b.0 get value of cfield 1798 03675 0 37 006 3703 1799 ora pnrtmp-* drop n(r) into control field 03676 3 17 200 0 1800 sta 0,3,b.0 update cfield 1801 03677 1802 return putn.r 1803 03701 1804 outn.r bss 1 03702 1805 outa.s bss 1 03703 1806 pnrtmp bss 1 1807 1808 1809 ***************************************************************** 1810 * 1811 * chkrng - check range 1812 * 1813 * a subroutine to check that "middle" is within the range 1814 * specified by "low" and "high" as determined modulo 8. 1815 * 1816 ***************************************************************** 1817 03704 1818 chkrng subr ckr 1819 03707 0 07 025 3734 1820 lda high-* get upper bound 03710 0 27 025 3735 1821 cmpa low-* hi < low ? 03711 0 65 010 3721 1822 tpl ckr010-* no 03712 673 010 0 1823 ila 8 get modulus 03713 0 16 021 3734 1824 asa high-* advance upper bound 1825 end of binary card 00000052 03714 0 07 022 3736 1826 lda middle-* get middle 03715 0 27 020 3735 1827 cmpa low-* middle < low ? 03716 0 65 003 3721 1828 tpl ckr010-* no 03717 673 010 0 1829 ila 8 get modulus assm 01 09-28-82 17.253 x25lap_tables page 66 assembler utility subroutines 03720 0 16 016 3736 1830 asa middle-* advance middle 1831 03721 673 001 0 1832 ckr010 ila 1 03722 0 17 015 3737 1833 sta badrng-* assume out of range condition 1834 03723 0 07 013 3736 1835 lda middle-* get middle 03724 0 27 011 3735 1836 cmpa low-* less than lower bound ? 03725 0 75 005 3732 1837 tmi ckrret-* yes, error 1838 03726 0 07 006 3734 1839 lda high-* get upper bound 03727 0 27 007 3736 1840 cmpa middle-* less than middle ? 03730 0 75 002 3732 1841 tmi ckrret-* yes, error 1842 03731 0 56 006 3737 1843 stz badrng-* not out of range 03732 1844 ckrret return chkrng 1845 03734 1846 high bss 1 03735 1847 low bss 1 03736 1848 middle bss 1 03737 1849 badrng bss 1 1850 1851 1852 ***************************************************************** 1853 * 1854 * admod8 - add modulo 8 1855 * 1856 ***************************************************************** 1857 03740 1858 admod8 subr am8 1859 03743 0 07 006 3751 1860 lda amarg1-* get arg 1 03744 0 16 006 3752 1861 asa amarg2-* add to arg 2 03745 0 07 627 3574 1862 lda l.a002-* (=000007) get mod 8 mask 03746 0 32 004 3752 1863 ansa amarg2-* convert arg 2 to mod 8 1864 03747 1865 return admod8 1866 03751 1867 amarg1 bss 1 03752 1868 amarg2 bss 2 1869 1870 1871 ***************************************************************** 1872 * 1873 * cmdrif - command reject info field 1874 * 1875 ***************************************************************** 1876 03754 1877 cmdrif subr cif,(x3) 1878 03762 0 07 630 3612 1879 lda l.a016-* (=cmdrb1) get addr of cmdrdb 03763 4 10 604 3567 1880 tsy a.a000-*,* (=adbyte) convert it assm 01 09-28-82 17.253 x25lap_tables page 67 assembler utility subroutines 03764 000000 0 1881 oct 0 end of binary card 00000053 03765 0 07 565 3552 1882 lda vfmdta-* get addr/ctl fields 03766 3 17 200 0 1883 sta 0,3,b.0 save control field 1884 03767 0 41 613 3602 1885 ldx3 l.a008-* (=v.r) get addr of v.r 03770 4 10 600 3570 1886 tsy a.a001-*,* (=cvaddr) convert it 03771 3 07 000 0 1887 lda 0,3 get value of v.r 03772 0336 05 0 1888 als 5 shift into position 03773 0 17 035 4030 1889 sta ciftmp-* save it 1890 03774 0 41 607 3603 1891 ldx3 l.a009-* (=v.s) get addr of v.s 03775 4 10 573 3570 1892 tsy a.a001-*,* (=cvaddr) convert it 03776 3 07 000 0 1893 lda 0,3 get value of v.s 03777 0336 01 0 1894 als 1 shift into position 04000 0 72 030 4030 1895 orsa ciftmp-* combine with v.r 1896 04001 0 07 603 3604 1897 lda l.a010-* (=cmdrb2) get addr of cmdrb2 04002 4 10 565 3567 1898 tsy a.a000-*,* (=adbyte) convert it 04003 000000 0 1899 oct 0 conversion failed, die 04004 0 07 024 4030 1900 lda ciftmp-* 04005 3 17 200 0 1901 sta 0,3,b.0 update byte 2 1902 04006 0 07 577 3605 1903 lda l.a011-* (=cmdrb3) get addr of cmdrb3 04007 4 10 560 3567 1904 tsy a.a000-*,* (=adbyte) convert it 04010 000000 0 1905 oct 0 1906 04011 673 000 0 1907 ila 0 init byte 3 04012 0 20 545 3557 1908 szn badadr-* last input frame had bad address? 04013 0 74 003 4016 1909 tze cif010-* no 04014 122 001 0 1910 iora 1 yes, set "w" bit 04015 0 71 010 4025 1911 tra cif020-* 1912 04016 0 20 542 3560 1913 cif010 szn badctl-* last input had bad control field? 04017 0 74 003 4022 1914 tze cif015-* no 04020 122 001 0 1915 iora 1 yes, set "w" bit 04021 0 71 004 4025 1916 tra cif020-* 1917 04022 0 20 537 3561 1918 cif015 szn badi-* last input had bad i-field? 04023 0 74 002 4025 1919 tze cif020-* no 04024 122 003 0 1920 iora 3 yes, set "wx" bits 1921 04025 3 17 200 0 1922 cif020 sta 0,3,b.0 update byte 3 1923 04026 1924 return cmdrif 1925 04030 1926 ciftmp bss 1 1927 1928 1929 ***************************************************************** 1930 * assm 01 09-28-82 17.253 x25lap_tables page 68 assembler utility subroutines 1931 * setbrk - set break flag 1932 * 1933 * turns on the break flag in the last buffer of the current 1934 * input chain. also clears first two characters. 1935 * 1936 ***************************************************************** 1937 04031 1938 setbrk subr sbk,(x3) end of binary card 00000054 1939 04037 1 41 005 0 1940 ldx3 t.icp,1 get addr of first input buffer 04040 3 56 002 0 1941 stz bf.dta,3 clear first 2 bytes 04041 3 20 000 0 1942 sbk010 szn bf.nxt,3 is it the last buffer? 04042 0 74 003 4045 1943 tze sbk020-* yes 04043 3 41 000 0 1944 ldx3 bf.nxt,3 no, get addr of next buffer 04044 0 71 775 4041 1945 tra sbk010-* 1946 04045 0 07 541 3606 1947 sbk020 lda l.a012-* (=bffbrk) get the break bit 04046 3 72 001 0 1948 orsa bf.flg,3 turn it on in the buffer 1949 04047 1950 return setbrk 1951 1952 1953 ******************************************************************************** 1954 * 1955 * cfgpcw - set configuration pcw 1956 * 1957 * turns off unwanted bits in the configuration pcw. 1958 * 1959 ******************************************************************************** 1960 04051 1961 cfgpcw subr cfp,(x3) 1962 04057 0 07 531 3610 1963 lda l.a014-* (=tfkpar) get keep parity bit 04060 1 72 036 0 1964 orsa t.flg3,1 turn it on in the tib 1965 04061 1 41 030 0 1966 ldx3 t.sfcm,1 get addr of sfcm 04062 0 07 525 3607 1967 lda l.a013-* (=777704) get mask for word 1 of pcw 04063 3 32 024 0 1968 ansa sf.cfg,3 leave only wanted bits on in word 1 of pcw 04064 3 56 025 0 1969 stz sf.cfg+1,3 zero word 2 of pcw 1970 04065 1971 return cfgpcw 1972 1973 1974 ***************************************************************** 1975 * 1976 * ckrnr - check rnr 1977 * 1978 * determines whether a rnr response is appropriate due to 1979 * either of the following conditions: 1980 * assm 01 09-28-82 17.253 x25lap_tables page 69 assembler utility subroutines 1981 * 1. the total number of free buffers is less than the 1982 * sum of the reserved buffer count plus twice the channel 1983 * buffer size. 1984 * 1985 * 2. two or more frames belonging to this channel are already 1986 * queued for dia transfer. 1987 * 1988 ***************************************************************** 1989 04067 1990 ckrnr subr rnr,(x3) 1991 04075 0 10 540 3635 1992 tsy cntqf-* count queued frames 04076 0 07 557 3655 1993 lda cqfcnt-* get count end of binary card 00000055 04077 0 27 512 3611 1994 cmpa l.a015-* (=dialim) over limit? 04100 0 65 003 4103 1995 tpl rnr030-* yes, rnr required 1996 04101 0 56 006 4107 1997 stz rnrflg-* 04102 0 71 003 4105 1998 tra rnrret-* 1999 04103 673 001 0 2000 rnr030 ila 1 04104 0 17 003 4107 2001 sta rnrflg-* indicate rnr required 2002 04105 2003 rnrret return ckrnr 2004 04107 2005 rnrflg bss 1 2006 2007 * * * * * * * * * * * * * * * * * * * * * * 2008 * 2009 * cpvs: copy v.s into iv.s 2010 * 2011 * * * * * * * * * * * * * * * * * * * * * * 2012 04110 2013 cpvs subr cpv,(x3) 2014 04116 0 41 465 3603 2015 ldx3 l.a009-* (=v.s) 04117 4 10 451 3570 2016 tsy a.a001-*,* (=cvaddr) 04120 3 07 000 0 2017 lda 0,3 04121 0 17 010 4131 2018 sta vst-* 04122 0 07 471 3613 2019 lda l.a017-* (=iv.s) 04123 4 10 444 3567 2020 tsy a.a000-*,* (=adbyte) 04124 000000 0 2021 oct 0 04125 0 07 004 4131 2022 lda vst-* 04126 3 17 200 0 2023 sta 0,3,b.0 04127 2024 return cpvs 2025 04131 2026 vst bss 1 2027 2028 * * * * * * * * * * * * * * * * * * * * * * 2029 * 2030 * savicp: save t.icp somewhere assm 01 09-28-82 17.253 x25lap_tables page 70 assembler utility subroutines 2031 * 2032 * * * * * * * * * * * * * * * * * * * * * * 2033 04132 2034 savicp subr svi,(x3) 2035 04140 0 41 454 3614 2036 ldx3 l.a018-* (=a.r) 04141 4 10 427 3570 2037 tsy a.a001-*,* (=cvaddr) end of binary card 00000056 04142 3 07 000 0 2038 lda 0,3 04143 0 17 766 4131 2039 sta vst-* 04144 0 07 447 3613 2040 lda l.a017-* (=iv.s) 04145 4 10 422 3567 2041 tsy a.a000-*,* (=adbyte) 04146 000000 0 2042 oct 0 04147 0 07 762 4131 2043 lda vst-* 04150 3 17 200 0 2044 sta 0,3,b.0 2045 04151 1 07 005 0 2046 lda t.icp,1 04152 0 17 013 4165 2047 sta ticp-* 04153 1 56 005 0 2048 stz t.icp,1 04154 2049 return savicp 2050 2051 04156 2052 resicp subr rsi,() 2053 04161 0 07 004 4165 2054 lda ticp-* 04162 1 17 005 0 2055 sta t.icp,1 04163 2056 return resicp 2057 04165 2058 ticp bss 1 2059 end of binary card 00000057 2060 end 4166 is the next available location. 355map version/assembly dates gmpa 770711/071177 gmpb 770711/071177 gmpc 770711/071177 there were no warning flags in the above assembly assm 01 09-28-82 17.261 x25lap_tables page 71 octal symbol references by sequence no. 44 ackmsg 171 171 1500 210 actts2 248 245 248 173 actts 243 241 243 167 actwt 241 241 244 246 268 2 adbyte 40 1705 3740 admod8 1858 1040 1399 1858 1865 470 afield 63 63 178 1367 3567 a.a000 1705 1581 1705 1741 1795 1880 1898 1904 2020 2041 3570 a.a001 1706 1706 1886 1892 2016 2037 777757 a.r 79 79 798 891 963 964 1109 1376 1485 1497 1498 1521 1727 777760 a.s 78 78 797 1053 1136 1473 3751 amarg1 1867 1038 1397 1404 1860 1867 3752 amarg2 1868 1039 1041 1398 1400 1406 1861 1863 1868 3557 badadr 1695 921 1550 1576 1673 1695 1908 3560 badctl 1696 1551 1672 1676 1696 1913 3556 badfrm 1694 345 479 709 918 1305 1328 1332 1335 1549 1577 1681 1694 3561 badi 1697 1552 1679 1697 1918 2625 badoa2 1233 1231 1233 2615 badoa 1230 241 297 413 642 1230 3737 badrng 1849 1490 1495 1833 1843 1849 1 begin 38 203 20000 bffbrk 47 47 1721 2 bf.dta 47 47 1567 1767 1941 1 bf.flg 47 47 1948 0 bf.nxt 47 47 1770 1942 1944 1 bf.tly 47 47 1558 1567 2 b.0 1585 1743 1797 1800 1883 1901 1922 2023 2044 777 buftmk 47 47 1709 1 cd 49 49 207 215 217 299 415 644 819 2722 cfd2 1313 1309 1313 2724 cfdret 1315 1305 1306 1311 1315 4051 cfgpcw 1961 233 1961 1971 471 cfield 64 64 159 161 178 180 1448 1449 1450 1716 2747 cfm2 1334 1329 1334 2755 cfmret 1336 1328 1331 1334 1336 1 chk 180 156 157 158 159 160 161 165 166 167 168 169 170 171 175 176 178 180 3704 chkrng 1818 1489 1494 1818 1844 400 chval 180 156 157 158 159 160 161 165 166 167 168 169 170 171 175 176 178 180 4016 cif010 1913 1909 1913 4022 cif015 1918 1914 1918 4025 cif020 1922 1911 1916 1919 1922 4030 ciftmp 1926 1889 1895 1900 1926 2 c.rcrq 46 46 49 40 c.rdtr 46 46 49 2 c.rrec 46 46 49 20000 c.rrqs 46 46 49 200 c.rsup 46 46 49 200 c.rtre 46 46 49 10 c.rxmt 46 46 49 assm 01 09-28-82 17.261 x25lap_tables page 72 octal symbol references by sequence no. 1000 c.sbrk 46 46 49 1 c.scrq 46 46 49 20 c.sdtr 46 46 49 2000 c.smrk 46 46 49 1 c.srec 46 46 49 10000 c.srqs 46 46 49 100 c.ssup 46 46 49 400 c.stat 46 46 49 100 c.stre 46 46 49 4000 c.strm 46 46 49 4 c.sxmt 46 46 49 114 ckdlup 209 207 209 2725 ckfrm 1327 477 707 1327 2676 ckfrmd 1304 343 1304 122 ckline 212 210 212 144 cklisn 219 206 210 214 219 3721 ckr010 1832 1822 1828 1832 4067 ckrnr 1990 1056 1990 2003 3732 ckrret 1844 1837 1841 1844 3361 clk2 1523 1520 1523 3367 clk3 1527 1521 1527 507 cmask 49 49 178 22 cmdmsg 160 160 1428 207 cmdr 122 122 1086 1175 1450 1647 473 cmdrb1 66 66 161 1725 474 cmdrb2 67 67 161 1719 475 cmdrb3 68 68 161 1720 3754 cmdrif 1877 1180 1877 1924 24 cmdrms 161 161 1461 3562 cmdsw 1698 928 937 1306 1329 1545 1594 1656 1659 1698 3635 cntqf 1763 1763 1773 1992 4110 cpvs 2013 893 965 1005 2013 2024 3645 cqf010 1766 1766 1771 3651 cqf020 1770 1768 1770 3653 cqf030 1773 1766 1773 3655 cqfcnt 1775 1764 1769 1775 1993 2 cts 49 49 207 215 472 curseq 65 65 793 1114 1115 1117 1367 3 cvaddr 41 1706 1 dceadr 114 114 330 555 1313 224 deact 263 263 318 157 dialed 231 215 231 2 dialim 131 131 1724 100 dialup 49 49 232 1053 dis1 627 566 579 604 627 1257 dis2 724 618 714 724 103 disc 120 120 157 350 485 714 1129 1662 1246 disin2 713 710 713 1232 disin 707 648 707 1142 disoc1 661 632 661 1154 disoc2 666 663 666 697 assm 01 09-28-82 17.261 x25lap_tables page 73 octal symbol references by sequence no. 1173 disoc3 673 662 673 729 1140 disoc 660 649 660 1214 disto 689 642 689 1343 dists2 773 770 773 1327 dists 768 642 768 1305 disua2 742 739 742 1317 disua4 756 752 756 1277 disua 738 713 738 1071 diswt 641 631 641 664 671 678 696 709 728 757 769 255 down2 292 254 278 281 292 234 down 277 277 677 758 244 downst 279 277 279 1 downsw 83 83 278 293 785 14 dscmsg 157 157 666 4 dsr 49 49 207 215 216 298 414 643 818 3 dteadr 115 115 329 593 1309 1310 361 dwnco 329 316 317 329 413 dwnin2 349 346 349 376 dwnin 343 303 343 425 dwnoc 360 304 360 334 dwnts 314 297 314 265 dwnwt 296 296 315 319 345 347 351 362 505 endchn 49 49 178 180 400 eof 124 124 178 180 4000 exh 49 49 300 416 645 820 2574 exhret 1201 1198 1201 2552 exhsta 1194 300 416 645 820 1194 2576 fcesta 1212 301 417 646 821 1212 3563 fcn 1699 349 350 483 484 485 713 714 956 957 958 990 991 992 1085 1086 1129 1130 1595 1625 1645 1699 10000 fcserr 49 49 301 417 646 821 400 fg.itf 46 46 200 251 266 1258 777755 flgwd1 82 82 249 253 277 278 281 293 294 331 370 371 383 384 397 401 402 432 433 440 446 447 460 465 466 495 500 501 515 525 530 551 554 565 578 590 603 615 616 627 630 631 662 663 670 676 677 694 695 696 724 727 728 742 752 757 773 785 803 806 846 1195 1198 1200 1230 1231 1273 1345 1348 1350 1363 1395 1413 1416 1427 1446 777754 flgwd2 99 99 788 800 867 868 881 884 886 887 889 920 948 949 953 961 968 970 973 995 998 1002 1022 1025 1028 1037 1047 1051 1052 1055 1058 1067 1070 1082 1089 1099 1100 1101 1102 1106 1133 1134 1153 1155 1158 1173 1366 1374 1381 1389 1390 1393 1402 1433 1486 1520 1523 1527 465 fmask 60 60 176 386 497 592 726 792 1050 1066 1139 1141 1176 1178 462 frmadr 57 57 923 926 978 1308 1309 1331 1334 1710 2675 getmk2 1292 1289 1292 2665 getmsk 1288 385 496 511 591 725 738 1288 3615 getn.s 1739 1370 1739 1749 156 golisn 222 220 222 2626 gopunt 1242 231 279 436 437 443 444 666 667 673 674 783 894 966 1006 1111 1242 1386 1428 1429 1454 1455 1461 1500 2635 hang2 1254 1254 1255 2630 hang 1250 219 243 298 299 314 414 415 540 643 644 768 818 819 834 1250 assm 01 09-28-82 17.261 x25lap_tables page 74 octal symbol references by sequence no. 101 hangup 49 49 1262 3734 high 1846 1488 1493 1820 1824 1839 1846 4 hungup 39 216 217 221 1263 1012 idis2 578 555 578 775 idis 553 332 460 461 553 902 772 idisrp 551 542 551 836 3553 ifrm 1691 934 1546 1593 1691 503 ignore 49 49 175 176 178 180 432 isetup 370 333 370 476 iv.s 69 69 167 168 169 171 1726 2544 ixfcr2 1180 1177 1180 2524 ixfcr 1173 923 937 1035 1173 2164 ixfic5 1037 1026 1037 2161 ixfic6 1034 1025 1034 2157 ixfic7 1031 1022 1031 2131 ixfic 1021 934 1021 1671 ixfin4 926 918 926 1713 ixfin5 933 926 933 1644 ixfin 917 823 917 2473 ixflr 1153 899 924 928 950 1083 1086 1153 1510 1515 ixfoa 846 817 846 1533 ixfoc2 863 859 863 1541 ixfoc5 867 863 867 1523 ixfoc 858 824 858 1425 ixfr2 805 803 805 1347 ixfr 783 447 531 783 2211 ixfre0 1047 1029 1047 2221 ixfre1 1050 867 871 1050 2260 ixfre2 1061 1057 1061 2262 ixfre3 1062 1060 1062 1072 2267 ixfre4 1066 1049 1066 2277 ixfre5 1070 1051 1067 1070 2237 ixfre6 1054 1052 1054 1068 2215 ixfre 1049 978 1049 1752 ixfsc 952 936 952 1776 ixfsr3 961 957 961 2023 ixfsr4 970 956 961 963 970 2030 ixfsr5 973 958 973 2036 ixfsr6 976 971 976 1736 ixfsr 948 929 948 1562 ixfto1 884 881 884 1606 ixfto2 891 891 900 1623 ixfto3 899 887 899 1631 ixfto4 902 886 902 1555 ixfto 881 817 881 1501 ixfts 834 817 834 2442 ixfuc2 1133 1130 1133 2470 ixfuc3 1143 1140 1143 2430 ixfuc 1129 938 1129 2320 ixfur1 1085 1081 1082 1085 2332 ixfur2 1089 1085 1089 assm 01 09-28-82 17.261 x25lap_tables page 75 octal symbol references by sequence no. 2337 ixfur3 1092 1089 1092 2351 ixfur4 1096 1092 1096 2356 ixfur5 1099 1094 1096 1099 2423 ixfur6 1117 1114 1117 2425 ixfur7 1119 1116 1119 2306 ixfur 1081 930 1081 1432 ixfwt 816 804 816 835 868 920 921 948 953 1047 1053 1093 1153 2066 ixtsr2 995 990 991 995 2073 ixtsr3 998 992 998 2076 ixtsr4 1000 996 1000 2124 ixtsr6 1010 1001 1008 1010 2046 ixtsr 989 949 989 652 .crnbf 48 48 1707 1 lctact 138 138 245 2 lctdea 139 139 318 4 lctdis 141 141 317 332 542 770 836 3 lctsu 140 140 316 400 ldfgd 91 91 565 578 590 724 752 1000 ldfgua 92 92 616 627 677 695 742 4000 ldfsd 94 94 615 630 663 670 694 10000 ldfsua 95 95 554 603 662 676 727 757 32 ldnmsg 166 166 279 102 lisn 205 202 205 3572 l.a000 1709 1560 1709 3573 l.a001 1710 1580 1710 3574 l.a002 1711 1599 1609 1711 1746 1789 1862 3575 l.a003 1712 1590 1604 1617 1712 3576 l.a004 1713 1622 1713 3577 l.a005 1714 1640 1714 3600 l.a006 1715 1644 1715 3601 l.a007 1716 1716 1740 1794 3602 l.a008 1717 1717 1885 3603 l.a009 1718 1718 1891 2015 3604 l.a010 1719 1719 1897 3605 l.a011 1720 1720 1903 3606 l.a012 1721 1721 1947 3607 l.a013 1722 1722 1967 3610 l.a014 1723 1723 1963 3611 l.a015 1724 1724 1994 3612 l.a016 1725 1725 1879 3613 l.a017 1726 1726 2019 2040 3614 l.a018 1727 1727 2036 460 locadr 55 55 158 159 161 329 555 593 923 926 978 1308 1334 400 locrnr 108 108 867 1052 1055 1058 3735 low 1847 1485 1821 1827 1836 1847 10 lsfgs 86 86 370 383 495 525 20 lsfgua 87 87 397 447 460 515 100 lsfss 89 89 401 432 440 465 200 lsfsua 90 90 371 384 433 446 500 530 7 lstack 152 152 171 1 lstdwn 146 146 166 assm 01 09-28-82 17.261 x25lap_tables page 76 octal symbol references by sequence no. 5 lstnrm 150 150 169 4 lstrej 149 149 168 3 lsttir 148 148 167 6 lsttlr 151 151 170 2 lstup 147 147 165 665 lsuin2 483 480 483 650 lsuin 477 419 477 562 lsuoc2 436 403 432 436 467 601 lsuoc3 443 433 443 502 546 lsuoc 431 420 431 703 lsusr 495 483 495 622 lsuto 460 413 460 755 lsuts 540 413 540 732 lsuua2 515 512 515 745 lsuua4 529 525 529 723 lsuua 511 484 511 477 lsuwt 412 402 412 434 441 448 466 479 481 486 501 513 527 530 541 543 30 lupmsg 165 165 783 0 macwk1 2052 1541 1685 1739 1749 1763 1773 1787 1802 1818 1844 1858 1865 1877 1924 1938 1950 1961 1971 1990 2003 2013 2024 2034 2049 2052 2056 1 macwk2 2052 1541 1739 1763 1787 1818 1858 1877 1938 1961 1990 2013 2034 2052 3736 middle 1848 1484 1826 1830 1835 1840 1848 40 m.cnt2 50 50 185 42 m.cnt3 50 50 186 46 m.cnt5 50 50 188 50 m.cnt6 50 50 189 46 m.cr 188 188 1174 16 m.exh 50 50 1196 40 m.fce 185 185 1212 0 m.in 190 190 1042 50 m.lr 189 189 1154 1 m.out 191 191 1388 42 m.rab 186 186 1215 20 m.xte 50 50 1218 517 movchr 49 49 178 24 n2 130 130 461 899 902 3566 n.r 1702 1000 1484 1497 1498 1610 1702 3565 n.s 1701 1026 1600 1701 777 nochar 49 49 789 790 859 863 1063 1426 1431 1445 1458 40 nrmmsg 169 169 1006 0 null 49 49 398 628 791 792 1050 1139 1162 1176 1288 1382 40000 oasw 97 97 803 806 846 1230 1395 1413 1416 524 offbit 49 49 180 3702 outa.s 1805 1473 1790 1805 2756 outcmp 1345 360 431 660 858 1345 403 outmsg 49 49 1276 3701 outn.r 1804 1471 1788 1804 3634 outn.s 1751 1371 1747 1751 2773 outret 1351 1348 1351 3246 outseq 1471 1379 1452 1471 3564 pf 1700 950 1001 1049 1081 1092 1140 1177 1289 1605 1639 1642 1700 assm 01 09-28-82 17.261 x25lap_tables page 77 octal symbol references by sequence no. 463 pfmask 58 58 180 386 497 512 592 726 739 1288 1290 1382 1384 20 pfon 123 123 464 693 904 1066 1141 1178 1290 1384 464 pmask 59 59 175 398 464 512 628 693 739 791 904 1162 3703 pnrtmp 1806 1792 1799 1806 3306 prc3 1493 1486 1493 3320 prc5 1497 1491 1497 3345 prc6 1508 1490 1495 1508 3260 prcn.r 1483 955 989 1023 1483 3344 prcret 1506 1497 1506 3656 putn.r 1787 1472 1787 1802 2603 rabsta 1215 302 418 647 822 1215 777763 rc 75 75 399 461 462 617 799 885 899 902 974 1003 1093 1096 1104 1159 1504 200000 rcvabt 49 49 302 418 647 822 20000 rcvsw 96 96 249 1195 1200 1348 1350 100000 rcvtrm 49 49 303 419 648 823 1040 rdis2 615 593 615 1017 rdis 589 350 485 589 1129 40 rdtr 49 49 1259 11 rej 118 118 957 991 1071 36 rejmsg 168 168 966 461 remadr 56 56 156 157 160 180 330 1310 1313 1331 4 remrnr 102 102 970 973 995 998 1100 1374 515 replac 49 49 180 510 rescan 49 49 175 176 178 180 4156 resicp 2052 1502 2052 2056 777753 retlbl 109 109 296 412 641 816 1201 4103 rnr030 2000 1995 2000 5 rnr 117 117 958 992 1059 4107 rnrflg 2005 1057 1997 2001 2005 4105 rnrret 2003 1998 2003 4 rprtsw 85 85 277 294 331 551 773 1 rr 116 116 956 990 1061 2 rrec 49 49 263 20 rrej 104 104 1028 1037 1051 1067 1070 1134 10 rreset 103 103 1025 1133 1173 442 rsetup 383 349 383 20 rspmsg 159 159 1454 200 rtroe 49 49 1275 10 rxmit 49 49 1277 17 sarm 119 119 156 349 483 903 1130 1161 1660 467 savcmd 62 62 160 790 859 903 1161 1426 1431 4132 savicp 2034 1499 2034 2049 466 savrsp 61 61 789 863 1059 1061 1063 1071 1138 1175 1445 1448 1458 4041 sbk010 1942 1942 1945 4045 sbk020 1947 1943 1947 20 sdtr 49 49 205 0 seq0 132 132 793 1114 1115 1 seq1 133 133 1117 62 setac 179 179 1386 523 setbit 49 49 175 176 180 assm 01 09-28-82 17.261 x25lap_tables page 78 octal symbol references by sequence no. 4031 setbrk 1938 1044 1938 1950 3351 setclk 1520 976 1010 1024 1520 514 seteom 49 49 156 157 158 159 160 161 165 166 167 168 169 170 171 178 51 setf 176 176 444 674 1455 46 setp 175 175 437 667 1429 454 setup 396 372 396 24 sf.cfg 45 45 1968 1969 3554 sfrm 1692 929 936 1547 1619 1692 200000 s.acr 46 46 49 400000 s.ads 46 46 49 400000 s.bdmk 46 46 49 200000 s.bmk 46 46 49 1000 s.brch 46 46 49 400 s.brk 46 46 49 1 s.cd 46 46 49 2 s.cts 46 46 49 100000 s.dlo 46 46 49 4 s.dsr 46 46 49 4000 s.exh 46 46 49 10000 s.fcse 46 46 49 40000 s.isd 46 46 49 40 s.mark 46 46 49 400000 s.pbyt 46 46 49 200 s.prex 46 46 49 10000 s.prty 46 46 49 40000 s.pwi 46 46 49 200000 s.rabt 46 46 49 100000 s.rbt 46 46 49 2000 s.ring 46 46 49 40000 s.rto 46 46 49 10 s.sprc 46 46 49 20 s.st 46 46 49 100 s.term 46 46 49 20000 s.xte 46 46 49 2776 sndf01 1361 1361 1363 1366 2777 sndf02 1363 1360 1363 3017 sndf15 1370 1367 1370 3030 sndf20 1374 1371 1374 3036 sndf21 1376 1374 1376 3043 sndf30 1379 1375 1376 1379 3055 sndf31 1384 1381 1384 3057 sndf35 1386 1383 1386 3077 sndf40 1393 1389 1393 3130 sndf41 1404 1402 1404 3135 sndf42 1406 1404 1406 3141 sndf80 1410 1368 1372 1410 3143 sndf83 1413 1364 1413 3150 sndf84 1415 1413 1415 2774 sndfrm 1360 847 870 896 977 1011 1119 1360 105 sndout 49 49 805 1394 1415 3204 sndsc2 1436 1426 1427 1436 assm 01 09-28-82 17.261 x25lap_tables page 79 octal symbol references by sequence no. 3156 sndsc 1426 860 905 1163 1426 3226 sndsr3 1454 1449 1454 3231 sndsr4 1455 1455 1462 3240 sndsr5 1459 1445 1446 1459 3241 sndsr6 1461 1450 1461 3205 sndsr 1445 864 1062 1143 1182 1445 1 srec 49 49 248 1199 1349 12 srmmsg 156 156 436 10000 srts 49 49 205 2613 sta.1 1219 1213 1216 1219 777767 stat0 71 71 244 245 315 316 317 318 332 541 542 769 770 835 836 400 stat 49 49 205 212 4000 sterm 49 49 1277 5 stpchn 1194 1252 4 sxmit 49 49 1275 3 t1 128 128 439 669 1391 1434 1524 36 t3 129 129 526 753 100 term 49 49 304 420 649 824 40 tfhang 44 44 219 243 314 540 768 834 1261 4 tfkpar 44 44 1723 100 tflisn 44 44 202 220 1261 140 tfwrd1 1261 202 219 220 243 314 540 768 834 1261 0 tfwrd2 1261 202 219 220 243 314 540 768 834 1261 25 tibx.1 109 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 82 99 109 0 tibx.2 71 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 1 tibx.3 109 71 72 73 74 75 76 77 78 79 80 82 99 109 25 tibxsz 109 55 57 59 61 63 65 67 69 71 72 73 74 75 76 77 78 79 80 82 99 109 231 4165 ticp 2058 2047 2054 2058 200 timesw 107 107 800 881 884 1106 1158 1389 1390 1433 1523 1527 34 tirmsg 167 167 894 26 t.dcp 44 44 1765 36 t.flg3 44 44 1964 5 t.icp 44 44 1556 1940 2046 2048 2055 30 t.sfcm 44 44 1966 42 tlrmsg 170 170 1111 40 trej 105 105 961 968 1102 1393 1 treset 100 100 868 886 920 948 953 1022 1047 1082 1089 1101 1153 1155 1366 2 ttirec 101 101 887 889 949 1002 1099 1381 1402 1486 1520 143 ua 121 121 158 484 713 1085 1138 1449 1654 16 uamsg 158 158 443 673 3555 ufrm 1693 346 480 710 930 938 1548 1637 1693 3373 valfrm 1541 917 1304 1327 1541 1685 3434 vfm010 1580 1573 1575 1580 3442 vfm012 1589 1578 1589 3455 vfm015 1603 1603 1633 3465 vfm020 1615 1591 1615 3505 vfm030 1637 1618 1637 3523 vfm040 1654 1648 1654 assm 01 09-28-82 17.261 x25lap_tables page 80 octal symbol references by sequence no. 3527 vfm050 1659 1655 1659 3534 vfm060 1665 1657 1661 1665 3540 vfm100 1672 1557 1562 1672 3543 vfm102 1676 1624 1663 1676 3545 vfm103 1679 1629 1651 1667 1679 3546 vfm110 1681 1674 1677 1681 3552 vfmdta 1689 1569 1583 1589 1615 1621 1631 1638 1689 1882 3547 vfmret 1685 1611 1652 1668 1685 3551 vfmtly 1688 1563 1627 1649 1665 1688 777761 v.r 77 77 796 1026 1038 1041 1053 1135 1471 1717 777762 v.s 76 76 795 890 891 963 964 1000 1108 1371 1376 1397 1400 1488 1521 1718 4131 vst 2026 2018 2022 2026 2039 2043 54 whlfrm 177 177 1364 2653 write 1272 438 445 668 675 1272 1387 1430 1456 0 x25lap 34 34 53 70 x25str 199 36 199 2 xmitsw 84 84 253 281 402 466 501 631 696 728 1198 1231 1273 1345 1363 1427 1446 20000 xte 49 49 305 421 650 825 2610 xtesta 1218 305 421 650 825 1218 777756 xx 80 80 890 1404 1406 1493 ** 47542 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