assm 01 12-10-82 16.086 vip_tables page 1 preface this program will be loaded mod 64 program break 1124 common length 0 v count bits 5 primary symdef entry vip 0 vstart 235 cct.9 200 secondary symdef entry .chain 0 block length symref 1 begin 2 error 3 hungup 4 stpchn end of binary card 00000001 assm 01 12-10-82 16.086 vip_tables page 2 1 ****************************************************** 2 * * 3 * * 4 * copyright (c) 1972 by massachusetts institute of * 5 * technology and honeywell information systems, inc. * 6 * * 7 * * 8 ****************************************************** 9 10 lbl ,vip_tables assm 01 12-10-82 16.086 vip_tables page 3 15 pcc off 16 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 17 * 18 * 19 * vip_tables, vip 20 * 21 * control tables for a vip terminal, hardwired or on 201c modem 22 * 23 * written 07/12/76 by robert s. coren 24 * 25 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 26 27 00000 28 vip null 29 symdef vip 30 symdef vstart 31 symdef cct.9 32 33 symref begin 34 symref hungup 35 symref error 36 37 00000 38 start vip 00012 40 tib assm 01 12-10-82 16.089 vip_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 12-10-82 16.089 vip_tables page 5 terminal information block (tib) 000030 t.sfcm equ t.ftse pointer to sfcm for hsla lines 000031 t.bcnt equ t.ftse+1 counting temporary 000032 t.brkp equ t.bcnt+1 pointer to current break list 000033 t.pos equ t.brkp+1 current carriage position 000034 t.char equ t.pos+1 pending line control char (lsla only) 000034 t.ecch equ t.char address of current echo char (hsla only) 000035 t.cntr equ t.char+1 counter for control tables 000036 t.flg3 equ t.cntr+1 third word of flags 000037 t.dtp equ t.flg3+1 pointer to delay table for this line 000040 t.frmc equ t.dtp+1 framing chars (2 chars) 000041 t.dcpl equ t.frmc+1 number of buffers in dcp chain 000042 t.scll equ t.dcpl+1 screenline length left, for echo neg. 000043 t.sncc equ t.scll+1 echo negotiation sync ctr. 000044 t.entp equ t.sncc+1 echo negotiation break table ptr 000045 t.ifch equ t.entp+1 input flow control characters 000046 t.ofch equ t.ifch+1 output flow control characters 000047 t.omct equ t.ofch+1 output message count (for flow control) 000050 t.itim equ t.omct+1 time of last call to inproc (2 words) 000052 t.metr equ t.itim+2 address of metering area 000053 t.leng equ t.metr+1 length of a tib ******************************** * t.stat bits ******************************** 000001 tsfcd bool 000001 carrier detect 000002 tsfcts bool 000002 clear to send 000004 tsfdsr bool 000004 data set ready assm 01 12-10-82 16.089 vip_tables page 6 terminal information block (tib) 000010 tsfsrc bool 000010 supervisory receive 000020 tsfst bool 000020 store status 000040 tsfmrk bool 000040 send marker status 000100 tsftrm bool 000100 send terminate status 000200 tsfrcv bool 000200 receive mode 000400 tsfxmt bool 000400 transmit mode 001000 tsfbrk bool 001000 send line break 002000 tsfdtr bool 002000 data terminal ready 004000 tsfsxt bool 004000 supervisory transmit 004000 tsftre bool 004000 tally runout enable (hdlc) 010000 tsfrts bool 010000 request to send 020000 tsfcrq bool 020000 acu call request ******************************** * tib flags -- t.flg ******************************** 000001 tfwrit bool 000001 output chain present 000002 tfbel bool 000002 send bell as next echoed character 000004 tffdpx bool 000004 full duplex mode 000010 tfkybd bool 000010 keyboard addressed 000020 tfprtr bool 000020 printer addressed 000040 tfhang bool 000040 hangup this line 000100 tflisn bool 000100 answer the phone 000200 tfquit bool 000200 send nl on line break 000400 tfctrl bool 000400 do kybd/printer addressing 001000 tflfec bool 001000 do lf echo on cr 002000 tfcrec bool 002000 do cr echo on lf assm 01 12-10-82 16.089 vip_tables page 7 terminal information block (tib) 004000 tftbec bool 004000 do space echo on tab 010000 tfwabt bool 010000 do write abort 020000 tfauto bool 020000 this is hsla autobaud line 040000 tfeotx bool 040000 eot expected from 2741 100000 tfisus bool 100000 input suspended 200000 tfecpx bool 200000 echoplex mode 400000 tfosus bool 400000 output suspended ******************************** * second word of tib flags ******************************** 000001 tfxhld bool 000001 hold transmit on 000002 tfdild bool 000002 terminal is dialed up 000004 tfercv bool 000004 enter receive mode 000010 tfrabt bool 000010 do read abort 000020 tfacu bool 000020 do dial out 000040 tfifc bool 000040 input flow control mode 000100 tfofc bool 000100 output flow control mode 000200 tfupsf bool 000200 terminal is upshifted now 000400 tfrply bool 000400 replay mode 001000 tfrpon bool 001000 replay is occurring now 002000 tfplit bool 002000 polite mode 004000 tfblak bool 004000 asynchronous block acknowledgement 010000 tfcrcv bool 010000 'control' receive mode 020000 tfmrcv bool 020000 'message' receive mode 040000 tffrmi bool 040000 frame mode 100000 tffip bool 100000 frame in progress assm 01 12-10-82 16.089 vip_tables page 8 terminal information block (tib) 200000 tfsftr bool 200000 terminal is shifting device 400000 tfpfnl bool 400000 line is in prefixnl mode ********************************* * third word of tib flags ********************************* 000001 tfbkpt bool 000001 line is stopped at breakpoint 000002 tfitim bool 000002 timeout if input stops 000004 tfkpar bool 000004 keep parity bits 000010 tfecho bool 000010 echoing has priority over output (lsla) 000020 tfbral bool 000020 break on all characters 000040 tfsked bool 000040 input timeout routine scheduled 000100 tf8in bool 000100 don't strip input parity 000200 tf8out bool 000200 don't strip output parity 000400 tfoddp bool 000400 odd parity 002000 tfsoip bool 002000 suspension of output in progress 004000 tforp bool 004000 output resume pending (waiting until tro) ********************************* * redefined tib flags in t.flg ********************************* 000020 tfdlup equ tfprtr line is on dialup modem 00012 41 csbits assm 01 12-10-82 16.089 vip_tables page 9 control and status bits control bits 000001 c.srec bool 000001 set receive mode 000002 c.rrec bool 000002 reset receive mode 000004 c.sxmt bool 000004 set transmit mode 000010 c.rxmt bool 000010 reset transmit mode 000020 c.sdtr bool 000020 set data terminal ready 000040 c.rdtr bool 000040 reset data terminal ready 000100 c.ssup bool 000100 set supervisory transmit mode 000100 c.stre bool 000100 set tally runout enable (hdlc) 000200 c.rsup bool 000200 reset supervisory transmit mode 000200 c.rtre bool 000200 reset tally runout enable (hdlc) 000400 c.stat bool 000400 store status 001000 c.sbrk bool 001000 send line break 002000 c.smrk bool 002000 store marker status 004000 c.strm bool 004000 store terminate status 010000 c.srqs bool 010000 set request to send 020000 c.rrqs bool 020000 reset request to send 040000 c.pad bool 040000 unused 100000 c.cmd bool 100000 indicates cmd subop 400000 c.scmd bool 400000 indicates supplementary cmd subop the following must be used in the optional fields to the cmd (or contrl) macros in the control_tables 000001 c.scrq bool 000001 set call request 000002 c.rcrq bool 000002 reset call request assm 01 12-10-82 16.089 vip_tables page 10 control and status bits status bits 000001 s.cd bool 000001 carrier detect 000002 s.cts bool 000002 clear to send 000004 s.dsr bool 000004 data set ready 000010 s.sprc bool 000010 supervisory receive mode 000020 s.st bool 000020 status requested 000040 s.mark bool 000040 marker status 000100 s.term bool 000100 terminate status 000200 s.prex bool 000200 pre-exhaust 000400 s.brk bool 000400 line break received 001000 s.brch bool 001000 break character received 002000 s.ring bool 002000 ring 004000 s.exh bool 004000 exhaust status 010000 s.prty bool 010000 parity error 010000 s.fcse bool 010000 frame check sequence error (hdlc) 020000 s.xte bool 020000 transfer timing error 040000 s.pwi bool 040000 acu power indicator 100000 s.dlo bool 100000 acu data line occupied 200000 s.acr bool 200000 acu abandon call and retry 400000 s.ads bool 400000 acu raised data set status the following four bits share the values of acu status but can never be misinterpreted. 040000 s.rto bool 040000 receive time out (bsc) 040000 s.isd bool 040000 idle state detect (hdlc) 100000 s.rbt bool 100000 receive block termination (bsc & hdlc) assm 01 12-10-82 16.089 vip_tables page 11 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 00012 42 tconst assm 01 12-10-82 16.089 vip_tables page 12 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 12-10-82 16.089 vip_tables page 13 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 12-10-82 16.089 vip_tables page 14 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 12-10-82 16.089 vip_tables page 15 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 assm 01 12-10-82 16.089 vip_tables page 16 constants for vip_tables 000140 45 vipdsp bool 140 address display 46 47 48 char positions in tib extension 49 000460 50 intype bool 460 000461 51 outype bool 461 000462 52 fcode bool 462 000463 53 reason bool 463 000464 54 wbusy bool 464 55 56 wbusy values 57 000000 58 no bool 000 did not get busy message 000001 59 yes bool 001 did get busy message 60 61 62 output reason values 63 000001 64 wmsg bool 001 regular output message 000002 65 reply bool 002 ack or nak response 66 67 68 special status codes 69 000156 70 pgof bool 156 page overflow 000157 71 busy bool 157 busy, terminal offline 72 73 000177 74 quiet bool 177 fake message code for "quiescent" message 75 76 77 input scan control strings 78 00012 79 irnl chstr (rescan,search,etx,replac,nl) 00015 80 irff chstr (rescan,search,etx,replac,ff) 00020 81 ingood chstr (rescan,search,soh,replac,null,ignore,replac,null,ignore, 00020 82 etc movchr,intype,replac,null,ignore,movchr,fcode,replac,null 00020 83 etc ,ignore,replac,null,ignore,match,stx,replac,null) 00036 84 inlrc chstr (rescan,search,soh,ignore,strlrc,search,etx,ignore,cmplrc 00036 85 etc ,replac,null) 00044 86 issoh chstr (rescan,match,soh,ignore) 00047 87 iseot1 chstr (rescan,match,eot) end of binary card 00000002 00051 88 iseot2 chstr (match,eot) 89 90 91 output scan control strings 92 00053 93 setack chstr (rescan,search,soh,ignore,ignore,replac,outype) 00057 94 setlrc chstr (rescan,search,soh,ignore,strlrc,search,etx,ignore,outlrc assm 01 12-10-82 16.089 vip_tables page 17 constants for vip_tables 00057 95 etc ) 00064 96 setetx chstr (rescan,endchn,ignore,replac,etx) 00067 97 seteot chstr (rescan,search,etx,ignore,ignore,replac,syn,ignore,replac 00067 98 etc ,syn,ignore,replac,syn,ignore,replac,syn,ignore,replac,eo 00067 99 etc t) 100 assm 01 12-10-82 16.089 vip_tables page 18 vip cct 103 00101 104 cctdef cct control bit definitions 000000 ct.ncs bool 000 normal char store 000001 ct.t1s bool 001 store and terminate on next 000002 ct.t2s bool 002 store and terminate after 2 chars 000003 ct.t0s bool 003 store and terminate 000004 ct.dmk bool 004 store and marker delayed 000005 ct.mk1 bool 005 store and marker on next 000006 ct.ign bool 006 ignore, no store 000007 ct.mrk bool 007 store and marker 000020 ct.sw bool 020 switch icws 000040 ct.syn bool 040 resync channel 000100 ct.tb1 bool 100 switch to table 1 000200 ct.tb2 bool 200 switch to table 2 000300 ct.tb3 bool 300 switch to table 3 000400 ct.tb4 bool 400 switch to table 4 000023 ct.eol equ ct.sw+ct.t0s eol for regular tty 000061 ct.grt equ ct.sw+ct.syn+ct.t1s for etx plus bcc char 000421 ct.etx equ ct.t1s+ct.sw+ct.tb4 000423 ct.nak equ ct.t0s+ct.sw+ct.tb4 000005 ct.itb equ ct.mk1 000204 ct.stx equ ct.tb2+ct.dmk 000207 ct.mtb equ ct.mrk+ct.tb2 ** following codes are for setcct opblock 000000 scc.dl equ 0 delete current cct 000001 scc.df equ 1 set to default cct based on modes 000002 scc.bs equ 2 reset to base of current cct 105 000021 106 ct.vip equ ct.sw+ct.t1s 000063 107 ct.eom equ ct.sw+ct.t0s+ct.syn 108 109 00200 110 base 64 00200 111 cct.9 null * cct for vip, terminate on etx + bcc, resync on eot 112 00200 000000 0 113 vfd 9/ct.ncs,9/ct.ncs * 000 001 00201 000021 0 114 vfd 9/ct.ncs,9/ct.vip * 002 etx 00202 063000 0 115 vfd 9/ct.eom,9/ct.ncs * eot 005 00203 000000 0 116 vfd 9/ct.ncs,9/ct.ncs * 006 007 00204 000000 0 117 vfd 9/ct.ncs,9/ct.ncs * 010 011 00205 000000 0 118 vfd 9/ct.ncs,9/ct.ncs * 012 013 00206 000000 0 119 vfd 9/ct.ncs,9/ct.ncs * 014 015 00207 000000 0 120 vfd 9/ct.ncs,9/ct.ncs * 016 017 00210 000000 0 121 vfd 9/ct.ncs,9/ct.ncs * 020 021 assm 01 12-10-82 16.089 vip_tables page 19 vip cct 00211 000000 0 122 vfd 9/ct.ncs,9/ct.ncs * 022 023 end of binary card 00000003 00212 000000 0 123 vfd 9/ct.ncs,9/ct.ncs * 024 025 00213 006000 0 124 vfd 9/ct.ign,9/ct.ncs * syn 027 00214 000000 0 125 vfd 9/ct.ncs,9/ct.ncs * 030 031 00215 000000 0 126 vfd 9/ct.ncs,9/ct.ncs * 032 033 00216 000000 0 127 vfd 9/ct.ncs,9/ct.ncs * 034 035 00217 000000 0 128 vfd 9/ct.ncs,9/ct.ncs * 036 037 129 130 132 133 134 135 canned output messages 136 00220 137 ackmsg chstr (syn,syn,syn,syn,soh,vipdsp,null,space,space,stx,etx,sete 00220 138 etc om) 00227 139 outhdr chstr (syn,syn,syn,syn,soh,vipdsp,null,space,space,stx) assm 01 12-10-82 16.089 vip_tables page 20 dialup sequence 141 00235 142 vstart tstflg tflisn,vlisn 00241 143 wait 0,0,begin /* not listening,wait for further notice */ 144 00245 145 vlisn contrl sdtr+stat /* start seeing who's there */ 00247 146 tstflg tfdlup,vdial /* dialup or hardwired? */ 00253 147 wait 0,0,vtlisn /* hardwired, wait for it to happen */ 148 00257 149 status cd+dsr,0,dialed end of binary card 00000004 00263 150 vdial wait 0,0,vtlisn /* wait for someone to call */ 00267 151 status dsr,0,dialed 152 00273 153 vtlisn tstglb gbf6up,vtest1 /* told not to listen? */ 00276 154 goto hungup /* yes */ 155 00300 156 dialed getext 4,error /* get tib extension */ 00303 157 dumpin 00304 158 dmpout 00305 159 setchr wbusy,no 00307 160 signal dialup /* tell hardcore */ 00311 161 setcct cct.9 /* establisj the cct */ 162 /* fall through to main loop */ assm 01 12-10-82 16.089 vip_tables page 21 main loop and input processing 164 00313 165 what tstflg tfhang,vhang 00317 166 clrflg (tfwabt,tfrabt) /* start clean */ 00322 167 read tstwrt vwrite /* output pending? */ 00324 168 contrl srec+rxmit+rrts /* no, get set to read */ 00326 169 setime 0 /* see what happens next */ 00330 170 wait 0,vwrite,vtest end of binary card 00000005 00334 171 status 0,dsr,vhang3 /* lost dsr, it's all over */ 00340 172 status brkchr,0,vread /* input arrived */ 00344 173 status exh,0,stopc /* too much input */ 00350 174 status xte,0,stopc /* excess interrupts or something *? 00354 175 status parity,0,stopc 176 00360 177 vtest tstflg tfhang,vhang /* never mind, we're supposed to hang up */ 00364 178 waitm /* or if not, go back to what we were doing */ 179 00365 180 vtest1 tstflg tfhang,vhang2 /* hang up before dialup is even finished */ 00371 181 waitm 182 00372 183 stopc stpchn /* something blew, go back and start over */ 00374 184 dumpin 00375 185 goto what 186 00377 187 vread calsub chekin /* we have an input message, check it out */ end of binary card 00000006 00401 188 cmpchr intype,null,sndack /* regul 00404 189 dmpmsg /* no, what's it doing here */ 00405 190 cmpchr intype,nochar,sndnak /* bad i 00410 191 clrflg tfrabt /* so we can get next input */ 00413 192 waitm /* no, don't respond to it */ 00414 193 sndnak setchr outype,nak /* else send nak, try it again */ 00416 194 goto acknak 195 00420 196 sndack setchr outype,ack /* it's all right, say so */ 00422 197 cmpchr fcode,q,inquit /* nul message, was it quit? */ 00425 198 tstflg tfrabt,skip /* we're supposed to throw this away */ 00431 199 cmpchr fcode,l,inff /* or form-feed? */ 00434 200 inscan irnl,error /* replace etx with nl */ 00437 201 goto insend /* ship it */ 202 00441 203 inff inscan irff,error /* replace etx with ff */ 00444 204 insend sendin 205 00445 206 acknak setime 3 /* wait now for eot msg */ end of binary card 00000007 207 00447 208 wait aknkto,0,vtest /* if none, continue */ 00453 209 status 0,dsr,vhang3 /* died mid-stream */ 00457 210 status brkchr,0,aknkto /* got syn syn eot after text msg */ 00463 211 status exh,0,badeom /* whats this action? */ assm 01 12-10-82 16.089 vip_tables page 22 main loop and input processing 00467 212 status parity,0,badeom /* on one char?? */ 213 00473 214 badeom stpchn /* kill it now */ 215 00475 216 aknkto dumpin /* throw 00476 217 bldmsg ackmsg,error /* send ack or nak */ 00501 218 outscn setack,error 00504 219 outscn setlrc,error 00507 220 outscn seteot,error /put eot on the end of msg/ 00512 221 setchr reason,reply /* so after write is done we go to top */ 00514 222 goto write end of binary card 00000008 223 00516 224 skip dumpin /* read abort */ 00517 225 goto acknak /* acknowledge it anyway */ 226 00521 227 inquit stpchn /* simulated quit */ 00523 228 dumpin 00524 229 dmpout 00525 230 signal quit /* so do it */ 00527 231 contrl srec 00531 232 goto acknak /* have to acknowledge it */ assm 01 12-10-82 16.089 vip_tables page 23 output stuff 234 00533 235 vwrite tstflg tfwabt,nowrit /* sorry, changed our minds */ 00537 236 bldmsg outhdr,error /* attach standard output header to message */ 00542 237 outscn setetx,error /* put etx at end */ 00545 238 outscn setlrc,error /* and block check */ 00550 239 outscn seteot,error /place eot on msg/ 00553 240 rewrit setchr reason,wmsg /* so we'll know where to go after */ 241 00555 242 write holdot /* make sure we hold output */ 00556 243 tstflg tfdlup,wrdial /* here to do all output */ 00562 244 dcwlst /* hardwired output */ 00563 245 cmd sxmit+srec+srts 00564 246 output (outmsg) end of binary card 00000009 00566 247 cmd sterm+rxmit+rrts 00567 248 setime 0 00571 249 wait 0,0,tstdmp /* just wait for terminate */ 00575 250 status term,0,wdone 251 00601 252 wrdial contrl srts+rrec+rxmit+stat /* on di 00603 253 setime 3 /* it better not take that long */ 00605 254 wait wrdial,0,0 /* but if it does, we'll just try again */ 00611 255 status 0,dsr,vhang /* whoops, goodbye */ 00615 256 status cts,0,wxmit /* that's what we want to hear */ 257 00621 258 wxmit dcwlst 00622 259 cmd sxmit 00623 260 output (outmsg) 00625 261 cmd sterm+rxmit+rrts 00626 262 wait 0,0,tstdmp /* wait for terminate */ 00632 263 status 0,dsr,vhang /* all right, who hung us up now */ end of binary card 00000010 00636 264 status term,0,wdone /* output finished */ 00642 265 status 0,cts,wrdial /* lost cts, try again */ 266 00646 267 wdone tstflg tfhang,vhang /* hang up if we're supposed to */ 00652 268 cmpchr reason,reply,akdone /* find 00655 269 cmpchr reason,wmsg,getack 00660 270 punt 2 /* no known reason */ 271 00662 272 getack setime 10 /* allow plenty of time for ack */ 00664 273 contrl srec /* get into receive mode */ 00666 274 wait write,0,vtest /* if it doesn't come, send output again */ 00672 275 status 0,dsr,vhang3 /* how tiresome */ 00676 276 status brkchr,0,chkack /* we got something, go see what */ 00702 277 status exh,0,stopc /* be serious */ end of binary card 00000011 00706 278 status parity,0,stopc /* god help us */ 279 00712 280 chkack calsub chekin /* make sure it's a reasonable message */ 00714 281 cmpchr intype,ack,gotack /* good, assm 01 12-10-82 16.089 vip_tables page 24 output stuff 00717 282 cmpchr intype,nak,gotnak /* termi 00722 283 cmpchr intype,pgof,fulscr /* overf 00725 284 cmpchr intype,busy,offlin /* termi 285 00730 286 igmsg dmpmsg /* nothing we've ever seen, ignore it */ 00731 287 waitm /* try again */ 288 00732 289 gotack dmpmsg /* we don't want this for anything */ 00733 290 setchr wbusy,no /* not off line now */ 00735 291 dmpout /* through with output now */ 00736 292 goto what /* see what to do next */ 293 00740 294 akdone dmpout /* through with this now too */ 00741 295 cmpchr wbusy,yes,rewrit /* we go 00744 296 goto what /* otherwise wait around */ 297 00746 298 gotnak dumpin /* we lost */ 00747 299 goto write /* try it again */ 300 00751 301 nowrit dmpout /* told to throw output away */ end of binary card 00000012 00752 302 clrflg tfwabt 00755 303 setchr wbusy,no 00757 304 goto what 305 306 /* terminal offline or screen full */ 00761 307 fulscr dmpout /* can't handle this output, too big */ 00762 308 dmpmsg /* not interesting any more */ 00763 309 goto what /* start again */ 310 00765 311 offlin setchr wbusy,yes /* he was offline */ 00767 312 contrl srec+rxmit+stat /* we're going to wait to hear from him */ 00771 313 setime 3 /* check again every now and again */ 00773 314 wait write,0,tstdmp /* someone might change their mind about output * 00777 315 status 0,dsr,vhang3 01003 316 status brkchr,0,vread /* if we got input, things are going again */ 01007 317 status exh,0,ostopc /* unless we got too much */ 01013 318 status parity,0,ostopc /* ugh */ 319 01017 320 tstdmp tstflg tfwabt,nowrit /* changed our mind about output */ end of binary card 00000013 01023 321 waitm 322 01024 323 ostopc stpchn 01026 324 dumpin /* if we had parity, nothing's interesting */ 01027 325 goto write /* try output again */ assm 01 12-10-82 16.089 vip_tables page 25 hangup routine 01031 327 vhang retext /* return tib extension */ 01032 328 vhang2 contrl rxmit+rrec+rdtr /* hangup line */ 01034 329 tstflg tfdlup,vhang4 /* drop dtr and wait for dsr on dialup */ 01040 330 goto vhang1 /* but don't wait for hardwired */ 331 01042 332 vhang4 setime 5 /* wait 5 secs */ 01044 333 wait vhang1,0,0 /* if timeout, try again */ 01050 334 status 0,dsr,vhang1 /* dsr down */ 01054 335 vhang1 stpchn /* stop channel */ 01056 336 dmpout /* throw away any output */ 01057 337 dumpin /* throw away any input */ 01060 338 signal hangup /* tell 6180 about hangup */ 01062 339 clrflg (tflisn,tfhang) /* clear the listen and hangup flags */ 01065 340 goto hungup /* thats all folks */ 01067 341 vhang3 tstflg tfdlup,vhang /* right type, give up */ end of binary card 00000014 01073 342 waitm /* else wait till it comes back */ assm 01 12-10-82 16.089 vip_tables page 26 subroutine for checking input message 344 01074 345 chekin inscan iseot1,chksoh /* see if it's quiescent without soh */ 01077 346 goto nomsg /* yes, say so */ 01101 347 chksoh inscan issoh,inerr /* first char had better be soh */ 01104 348 inscan iseot2,chklrc /* if next character is eot, nothing here */ 01107 349 nomsg setchr intype,quiet /* call it quiescent */ 01111 350 retsub 351 01112 352 chklrc inscan inlrc,inerr /* see if checksum is any good */ 01115 353 inscan ingood,inerr /* and then rest of message */ 01120 354 retsub /* that's cool, ingood set message type */ 355 01121 356 inerr setchr intype,nochar /* mark message as unrecognizable */ 01123 357 retsub end of binary card 00000015 358 end 1124 is the next available location. 355map version/assembly dates gmpa 770711/071177 gmpb 770711/071177 gmpc 770711/071177 there were no warning flags in the above assembly assm 01 12-10-82 16.090 vip_tables page 27 octal symbol references by sequence no. 6 ack 42 42 196 281 220 ackmsg 137 137 217 445 acknak 206 194 206 225 232 740 akdone 294 268 294 475 aknkto 216 208 210 216 473 badeom 214 211 212 214 1 begin 33 143 1000 brkchr 42 42 172 210 276 316 157 busy 71 71 284 200 cct.9 111 31 111 161 1 cd 42 42 149 1074 chekin 345 187 280 345 0 chk 139 79 80 83 85 86 87 88 93 95 96 99 138 139 712 chkack 280 276 280 1112 chklrc 352 348 352 1101 chksoh 347 345 347 40 chval 139 79 80 83 85 86 87 88 93 95 96 99 138 139 2 c.rcrq 41 41 42 40 c.rdtr 41 41 42 2 c.rrec 41 41 42 20000 c.rrqs 41 41 42 200 c.rsup 41 41 42 200 c.rtre 41 41 42 10 c.rxmt 41 41 42 1000 c.sbrk 41 41 42 1 c.scrq 41 41 42 20 c.sdtr 41 41 42 2000 c.smrk 41 41 42 1 c.srec 41 41 42 10000 c.srqs 41 41 42 100 c.ssup 41 41 42 400 c.stat 41 41 42 100 c.stre 41 41 42 4000 c.strm 41 41 42 4 c.sxmt 41 41 42 513 cmplrc 42 42 85 63 ct.eom 107 107 115 6 ct.ign 104 104 124 0 ct.ncs 104 104 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 20 ct.sw 104 104 106 107 40 ct.syn 104 104 107 3 ct.t0s 104 104 107 1 ct.t1s 104 104 106 21 ct.vip 106 106 114 2 cts 42 42 256 265 300 dialed 156 149 151 156 100 dialup 42 42 160 4 dsr 42 42 149 151 171 209 255 263 275 315 334 505 endchn 42 42 96 4 eot 42 42 87 88 99 assm 01 12-10-82 16.090 vip_tables page 28 octal symbol references by sequence no. 2 error 35 156 200 203 217 218 219 220 236 237 238 239 3 etx 42 42 79 80 85 95 96 99 138 4000 exh 42 42 173 211 277 317 462 fcode 52 52 83 197 199 14 ff 42 42 80 761 fulscr 307 283 307 1 gbf6up 42 42 153 662 getack 272 269 272 732 gotack 289 281 289 746 gotnak 298 282 298 101 hangup 42 42 338 3 hungup 34 154 340 503 ignore 42 42 83 85 86 93 95 96 99 1121 inerr 356 347 352 353 356 441 inff 203 199 203 20 ingood 81 81 353 36 inlrc 84 84 352 521 inquit 227 197 227 444 insend 204 201 204 460 intype 50 50 83 188 190 281 282 283 284 349 356 15 irff 80 80 203 12 irnl 79 79 200 47 iseot1 87 87 345 51 iseot2 88 88 348 44 issoh 86 86 347 0 k 260 246 260 154 l 42 42 199 501 match 42 42 83 86 87 88 517 movchr 42 42 83 25 nak 42 42 193 282 12 nl 42 42 79 0 no 58 58 159 290 303 777 nochar 42 42 190 356 1107 nomsg 349 346 349 751 nowrit 301 235 301 320 0 null 42 42 83 85 138 139 188 765 offlin 311 284 311 1024 ostopc 323 317 318 323 227 outhdr 139 139 236 512 outlrc 42 42 95 403 outmsg 42 42 246 260 461 outype 51 51 93 193 196 10000 parity 42 42 175 212 278 318 156 pgof 70 70 283 161 q 42 42 197 177 quiet 74 74 349 113 quit 42 42 230 40 rdtr 42 42 328 463 reason 53 53 221 240 268 269 515 replac 42 42 79 80 83 85 93 96 99 2 reply 65 65 221 268 assm 01 12-10-82 16.090 vip_tables page 29 octal symbol references by sequence no. 510 rescan 42 42 79 80 83 85 86 87 93 95 96 99 553 rewrit 240 240 295 2 rrec 42 42 252 328 20000 rrts 42 42 168 247 261 10 rxmit 42 42 168 247 252 261 312 328 20 sdtr 42 42 145 502 search 42 42 79 80 83 85 93 95 99 53 setack 93 93 218 514 seteom 42 42 138 67 seteot 97 97 220 239 64 setetx 96 96 237 57 setlrc 94 94 219 238 200000 s.acr 41 41 42 400000 s.ads 41 41 42 400000 s.bdmk 41 41 42 200000 s.bmk 41 41 42 1000 s.brch 41 41 42 400 s.brk 41 41 42 1 s.cd 41 41 42 2 s.cts 41 41 42 100000 s.dlo 41 41 42 4 s.dsr 41 41 42 4000 s.exh 41 41 42 10000 s.fcse 41 41 42 40000 s.isd 41 41 42 40 s.mark 41 41 42 400000 s.pbyt 41 41 42 200 s.prex 41 41 42 10000 s.prty 41 41 42 40000 s.pwi 41 41 42 200000 s.rabt 41 41 42 100000 s.rbt 41 41 42 2000 s.ring 41 41 42 40000 s.rto 41 41 42 10 s.sprc 41 41 42 20 s.st 41 41 42 100 s.term 41 41 42 20000 s.xte 41 41 42 516 skip 224 198 224 420 sndack 196 188 196 414 sndnak 193 190 193 1 soh 42 42 83 85 86 93 95 138 139 40 space 42 42 138 139 1 srec 42 42 168 231 245 273 312 10000 srts 42 42 245 252 400 stat 42 42 145 252 312 4000 sterm 42 42 247 261 372 stopc 183 173 174 175 183 277 278 4 stpchn 183 214 227 323 335 511 strlrc 42 42 85 95 2 stx 42 42 83 138 139 assm 01 12-10-82 16.090 vip_tables page 30 octal symbol references by sequence no. 4 sxmit 42 42 245 259 26 syn 42 42 99 138 139 100 term 42 42 250 264 20 tfdlup 40 40 146 243 329 341 40 tfhang 40 40 165 177 180 267 339 100 tflisn 40 40 142 339 10 tfrabt 40 40 166 191 198 10000 tfwabt 40 40 166 235 302 320 20 tfwrd1 341 142 146 165 166 177 180 191 198 235 243 267 302 320 329 339 341 0 tfwrd2 341 142 146 165 166 177 180 191 198 235 243 267 302 320 329 339 341 1017 tstdmp 320 249 262 314 320 263 vdial 150 146 150 1054 vhang1 335 330 333 334 335 1032 vhang2 328 180 328 1067 vhang3 341 171 209 275 315 341 1042 vhang4 332 329 332 1031 vhang 327 165 177 255 263 267 327 341 0 vip 28 28 29 38 140 vipdsp 45 45 138 139 245 vlisn 145 142 145 377 vread 187 172 187 316 235 vstart 142 30 142 365 vtest1 180 153 180 360 vtest 177 170 177 208 274 273 vtlisn 153 147 150 153 533 vwrite 235 167 170 235 464 wbusy 54 54 159 290 295 303 311 646 wdone 267 250 264 267 313 what 165 165 185 292 296 304 309 1 wmsg 64 64 240 269 601 wrdial 252 243 252 254 265 555 write 242 222 242 274 299 314 325 621 wxmit 258 256 258 300 x 260 246 260 20000 xte 42 42 174 1 yes 59 59 295 311 ** 46682 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