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