assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 1 system communications region preface program break 4134 common length 0 v count bits 5 primary symdef entry intp 0 itmout 230 itest 13 iwrite 61 istat 127 istbrk 261 globsw 12 cvaddr 1742 adbyte 3767 getcmt 2246 end of binary card 00000001 intend 4134 secondary symdef entry mcall 2221 mcal2 2231 .chain 0 x.002. 40 x.004. 106 x.006. 155 x.009. 207 x.012. 234 x.014. 375 end of binary card 00000002 block length symref 1 ctrl 2 denq 3 hcfg 4 hdcw 5 ldcw 6 mmsg 7 cvabs 10 hgeti 11 mincd 12 mincs end of binary card 00000003 13 trace 14 brkhit assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 2 system communications region 15 frebfh 16 frebuf 17 frelbf 20 fremem 21 getbfh 22 getbuf 23 getmem 24 gettib end of binary card 00000004 25 lctlck 26 meterc 27 mupdat 30 puteco 31 secdsp 32 setbpt 33 setcct 34 setime 35 setptw end of binary card 00000005 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 3 system communications region 1 * *********************************************************** 2 * * * 3 * * copyright, (c) honeywell information systems inc., 1982 * 4 * * * 5 * * copyright (c) 1972 by massachusetts institute of * 6 * * technology and honeywell information systems, inc. * 7 * * * 8 * *********************************************************** 9 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 4 system communications region 11 lbl ,interpreter 12 13 ******************************************************************************** 14 * 15 * modified 79 jul 29 by art beattie to use real tib address in trace calls 16 * and call 'setptw' in 'itmout' routine. 17 * modified 81 jan 16 by robert coren to add metering op blocks 18 * 19 ******************************************************************************** 20 21 22 pcc on 23 pmc off 24 editp on 25 symdef intp 26 symdef itmout,itest,iwrite,istat,istbrk 27 symdef globsw 28 symdef cvaddr 29 symdef adbyte 30 symdef getcmt 31 symdef intend end of interpreter 32 symdef -mcall 33 symdef -mcal2 34 pmc save,on 00000 35 comreg assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 5 system communications region ttls system communications region ********************************** * system communication region * ********************************** 000640 .crldt set 416 date and time of binding 000644 .crbdt set 420 date and time of bootloading 000650 .crbuf set 424 starting address of buffer area 000651 .crmem set 425 last location of memory 000652 .crnbf set 426 number of buffers available 000653 .criom set 427 start of iom table 000654 .crnhs set 428 number of hsla's configured 000655 .crnls set 429 number of lsla's configured 000656 .crcon set 430 console enabled flag 000657 .crmod set 431 starting address of module chain 000660 .crnxa set 432 ptr to next avaliable buffer 000661 .crtra set 433 trace entry enable mask 000662 .crtrb set 434 base address of trace table 000663 .crtrc set 435 next available location in trace table 000664 .crreg set 436 disaster fault register storage location 000665 .crttb set 437 location of tib table 000666 .crtte set 438 location of end of tib table 000667 .crdly set 439 head of delay table chain 000670 .crver set 440 mcs version number, 4 chars 000672 .crbrk set 442 addr of breakpoint control table 000673 .crtsw set 443 if non-zero, tracing will cease 000674 .crnxs set 444 next free small block 000675 .crnbs set 445 number of buffers devoted to small space assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 6 system communications region 000676 .crcct set 446 address of first cct descriptor 000677 .crskd set 447 address of scheduler data block 000700 .cretb set 448 list of echo-negotiation bit tables 000701 .crcpt set 449 address of cpu page table 000702 .crpte set 450 address of variable cpu page table entry 000703 .crtsz set 451 size of trace data buffer 000704 .crmet set 452 non-zero if metering enabled 000705 .crtdt set 453 address of tib for t&d executive channel 000706 .crbtm set 454 address of time meters for getbuf/frebuf 000707 .crnxe set 455 next available space in extended memory 000710 .crbpe set 456 buffer paging window table entry 000760 .crcpr set 496 copyright notice 00000 36 tib assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 7 terminal information block (tib) ttls 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 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 8 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 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 9 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 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 10 terminal information block (tib) 000400 tfctrl bool 000400 do kybd/printer addressing 001000 tflfec bool 001000 do lf echo on cr 002000 tfcrec bool 002000 do cr echo on lf 004000 tftbec bool 004000 do space echo on tab 010000 tfwabt bool 010000 do write abort 020000 tfauto bool 020000 this is hsla autobaud line 040000 tfeotx bool 040000 eot expected from 2741 100000 tfisus bool 100000 input suspended 200000 tfecpx bool 200000 echoplex mode 400000 tfosus bool 400000 output suspended ******************************** * second word of tib flags ******************************** 000001 tfxhld bool 000001 hold transmit on 000002 tfdild bool 000002 terminal is dialed up 000004 tfercv bool 000004 enter receive mode 000010 tfrabt bool 000010 do read abort 000020 tfacu bool 000020 do dial out 000040 tfifc bool 000040 input flow control mode 000100 tfofc bool 000100 output flow control mode 000200 tfupsf bool 000200 terminal is upshifted now 000400 tfrply bool 000400 replay mode 001000 tfrpon bool 001000 replay is occurring now 002000 tfplit bool 002000 polite mode 004000 tfblak bool 004000 asynchronous block acknowledgement 010000 tfcrcv bool 010000 'control' receive mode assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 11 terminal information block (tib) 020000 tfmrcv bool 020000 'message' receive mode 040000 tffrmi bool 040000 frame mode 100000 tffip bool 100000 frame in progress 200000 tfsftr bool 200000 terminal is shifting device 400000 tfpfnl bool 400000 line is in prefixnl mode ********************************* * third word of tib flags ********************************* 000001 tfbkpt bool 000001 line is stopped at breakpoint 000002 tfitim bool 000002 timeout if input stops 000004 tfkpar bool 000004 keep parity bits 000010 tfecho bool 000010 echoing has priority over output (lsla) 000020 tfbral bool 000020 break on all characters 000040 tfsked bool 000040 input timeout routine scheduled 000100 tf8in bool 000100 don't strip input parity 000200 tf8out bool 000200 don't strip output parity 000400 tfoddp bool 000400 odd parity 001000 tfabf0 bool 001000 t.afb0 available 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 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 12 terminal information block (tib) 00000 37 meters assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 13 system-wide meters ttls 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 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 14 per-channel meters ttls per-channel meters meters for all channels 000000 m.dql equ 0 cumulative length of dia request queue 000002 m.dqu equ m.dql+2 updates of m.dql 000004 m.nst equ m.dqu+2 cumulative no. of pending status 000006 m.nsu equ m.nst+2 updates of m.nst 000010 m.over equ m.nsu+2 output overlaps 000011 m.par equ m.over+1 parity errors 000012 m.ssqo equ m.par+1 software status queue overflows 000013 m.hsqo equ m.ssqo+1 hardware status queue overflows 000014 m.inaf equ m.hsqo+1 input allocation failures 000015 m.cql equ m.inaf+1 current length of dia request queue 000016 m.exh equ m.cql+1 exhaust status 000020 m.xte equ m.exh+2 software xte status 000022 m.leng equ m.xte+2 length of common meters (must be even) additional meters for asynchronous channels 000022 m.prex equ m.leng pre-exhaust status 000024 m.ebof equ m.prex+2 echo buffer overflows 000026 m.quit equ m.ebof+2 bell-quits 000030 m.asyl equ m.quit+2 total length of asynchronous meters (must be even) additional meters for synchronous channels 000022 m.nim equ m.leng number of input messages 000024 m.iml equ m.nim+2 cumulative length of input 000026 m.mini equ m.iml+2 minimum length of input message assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 15 per-channel meters 000027 m.maxi equ m.mini+1 maximum length of input message 000030 m.nom equ m.maxi+1 number of output messages 000032 m.oml equ m.nom+2 cumulative length of output 000034 m.mino equ m.oml+2 minimum length of output message 000035 m.maxo equ m.mino+1 maximum length of output message 000036 m.cnt1 equ m.maxo+1 first type of counter 000040 m.cnt2 equ m.cnt1+2 second type of counter 000042 m.cnt3 equ m.cnt2+2 third type of counter 000044 m.cnt4 equ m.cnt3+2 fourth type of counter 000046 m.cnt5 equ m.cnt4+2 fifth type of counter 000050 m.cnt6 equ m.cnt5+2 sixth type of counter 000052 m.cnt7 equ m.cnt6+2 seventh type of counter 000054 m.cnt8 equ m.cnt7+2 eighth type of counter 000056 m.synl equ m.cnt8+2 total length of synchronous meters 00000 38 sfcm hsla pcc save,off assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 16 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 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 17 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 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 18 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 39 devtab assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 19 device table entry (devtab) ttls device table entry (devtab) two characters used alternately for 000000 dt.seq equ 0 sequencing 000001 dt.cct equ dt.seq+1 address of default cct (hsla only) address of array of keyboard addressing 000002 dt.key equ dt.cct+1 sequences address of array of printer addressing 000003 dt.prt equ dt.key+1 sequences 000004 dt.flg equ dt.prt+1 flags(one word) 000005 dt.cmt equ dt.flg+1 carriage movement table (6 chars) 000010 dt.brk equ dt.cmt+3 default break list (4 words) (lsla only) flags 000001 dtfctl bool 000001 default setting of tfctrl (in tib) 000002 dtfsct bool 000002 default setting of short cct flag 000004 dtfsft bool 000004 default setting of tfsftr 00000 40 buffer assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 20 buffer format ttls 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 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 21 symbol definitions 41 ttls symbol definitions 42 symref ctrl 43 symref secdsp,setime,frelbf 44 symref denq,meterc 45 symref hdcw,ldcw 46 symref hgeti 47 symref hcfg 48 symref trace 49 symref getbuf,frebuf 50 symref getbfh,frebfh 51 symref getmem,fremem 52 symref brkhit 53 symref lctlck 54 symref setcct 55 symref puteco 56 symref setptw set up variable cpu page table word 57 symref setbpt set up buffer page table word 58 symref cvabs convert virtual address to absolute 59 symref gettib 60 symref mincs,mincd,mupdat,mmsg 61 777004 62 statop bool 777004 status op code 777003 63 waitop bool 777003 wait op code 000112 64 accin equ 74 accept input mailbox op code 000105 65 sndout bool 105 send output mailbox op code 000104 66 sparms bool 104 send params opcode 000040 67 space bool 040 ascii space char 000015 68 cr bool 015 ascii carriage return 000034 69 upshft bool 034 ebcdic up-shift 000037 70 dnshft bool 037 ebcdic down-shift 000074 71 ibmeot bool 074 ebcdic eot 777776 72 ntfwrt bool /tfwrit for turning tfwrit off 776777 73 ntfrpn bool /tfrpon for turning tfrpon off 001000 74 hslafl bool 001000 75 76 77 memory trace types 78 000001 79 mt.tst equ 1 000002 80 mt.wrt equ 2 000003 81 mt.sta equ 3 000004 82 mt.tim equ 4 000005 83 mt.blk equ 5 84 85 tracing switches 86 000040 87 tr.ent bool 040 000100 88 tr.blk bool 100 89 000001 90 ct.dev equ 1 offset in control tables of pointer 91 to device table entry pointers assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 22 symbol definitions 00000 92 intp null 00000 93 start intp,3 symdef -.chain crsm save,off 00000 even ine '3','',2 000003 modnum equ 3 00000 000003 0 .chain dec 3 ife '3','',1 crsm restore 00001 314563 0 bci 2,intp 00002 472020 0 00003 0 00000 1 ind intp 00004 010101 0 date 00005 101002 0 ine '.001.','',1 00006 330000 0 bci 4,.001. 00007 013320 0 00010 202020 0 00011 202020 0 94 pmc restore 95 00012 000000 0 96 globsw oct 0 "global swtches" word assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 23 itest entry for test-state 97 ttls itest entry for test-state 98 99 * this entry called by dia_man for test-state 100 * 101 * input: 102 * x1 - virtual tib address 103 00013 104 itest subr ite,(x1,x2,x3,a,q) 105 00035 1 07 004 0 106 lda t.line,1 get line number 00036 4 10 301 337 107 tsy a.c002-*,* (gettib) get real tib address in a 00037 0332 00 0 108 cax2 put in x2 for trace 109 00040 110 trace mt.tst,tr.ent,(x2,t.cur(1)) 111 * end of binary card 00000006 00052 4 10 204 256 112 tsy iinchk-*,* make sure entry is valid 00053 0 71 004 57 113 tra ite001-* at breakpoint, ignore call 00054 2 03 003 0 114 ldx2 3,2 get branch point for test-state 00055 0 74 002 57 115 tze ite001-* never mind if there isn't one 00056 4 10 201 257 116 tsy iintrp-*,* call interp to do work 00057 117 ite001 return itest assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 24 iwrite entry for output 118 ttls iwrite entry for output 119 120 * entry for write, called by dia_man when output is to be sent 121 * 122 * input: 123 * x1 - virtual tib address 124 00061 125 iwrite subr iwr,(x1,x2,x3,a,q) 126 00103 1 07 004 0 127 lda t.line,1 get line number 00104 4 10 233 337 128 tsy a.c002-*,* (gettib) get real tib address in a 00105 0332 00 0 129 cax2 put in x2 for trace 130 00106 131 trace mt.wrt,tr.ent,(x2,t.cur(1)) 132 * 00120 4 10 136 256 133 tsy iinchk-*,* 00121 0 71 004 125 134 tra iwr001-* at breakpoint, ignore call 00122 2 03 002 0 135 ldx2 2,2 get branch point for write 00123 0 74 002 125 136 tze 2 if any end of binary card 00000007 00124 4 10 133 257 137 tsy iintrp-*,* 00125 138 iwr001 return iwrite 139 * assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 25 istat entry to process status 140 ttls istat entry to process status 141 * 142 * entry called by hsla_man or lsla_man with standard 143 * status word in a register and virtual tib address in x1. 144 * checks op blocks following current wait to see if any 145 * status tests succeed, and if so, calls interp to proceed. 146 * if a non-status block is encountered before any of the status 147 * matches, then return, doing nothing. 148 * 00127 149 istat subr ist,(x1,x2,x3,a,q) 00151 0 17 056 227 150 sta istsav-* hang on to status word 151 00152 1 07 004 0 152 lda t.line,1 get line number 00153 4 10 164 337 153 tsy a.c002-*,* (gettib) get real tib address in a 00154 0332 00 0 154 cax2 put in x2 for trace 155 00155 156 trace mt.sta,tr.ent,(x2,t.cur(1),istsav) 00172 4 10 064 256 157 tsy iinchk-*,* make sure its ok 00173 0 71 030 223 158 tra istbak-* at breakpoint, ignore call 00174 159 ist010 null 00174 273 004 0 160 iacx2 4 get next op block 00175 2 07 000 0 161 lda 0,2 get type code 00176 0 27 027 225 162 cmpa l.a001-* check against status op code end of binary card 00000008 00177 0 74 002 201 163 tze ist020-* okay, go ahead 164 00200 0 71 023 223 165 tra istbak-* no status blocks to check 166 * 00201 167 ist020 null 00201 0 07 026 227 168 lda istsav-* get status back in a 00202 2 31 003 0 169 cana 3,2 check "off" bits 00203 0 64 771 174 170 tnz ist010-* if not all off, get next status 00204 2 34 002 0 171 ana 2,2 ok, get "on" bits 00205 2 27 002 0 172 cmpa 2,2 are they all on? 00206 0 64 766 174 173 tnz ist010-* that didn't work either 174 * 175 * fell through, get branch point and call 00207 176 trace mt.blk,tr.blk,(x2,l.a002) 00221 2 03 001 0 177 ldx2 1,2 interp 00222 4 10 035 257 178 tsy iintrp-*,* 00223 179 istbak null 00223 180 return istat 181 * 00225 777004 0 182 l.a001 vfd o18/statop 00226 000004 0 183 l.a002 oct 4 constant for status op block type 00227 184 istsav bss 1 saved status 185 * assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 26 itmout entry for processing timeouts 186 ttls itmout entry for processing timeouts 187 * 188 * called by secondary dispatcher 189 * 190 * input: 191 * x1 - real tib address 192 00230 193 itmout null 194 00230 2332 00 0 195 cx1a get real tib address in a 00231 0 17 027 260 196 sta itmtib-* save real tib address for trace 00232 4 10 104 336 197 tsy a.c001-*,* (setptw) virtualize it 00233 4332 00 0 198 cax1 put virtual tib address in x1 199 00234 200 trace mt.tim,tr.ent,(itmtib,t.cur(1)) 201 end of binary card 00000009 00247 4 10 007 256 202 tsy iinchk-*,* set up 00250 4 71 005 255 203 tra iscdsp-*,* in breakpoint, ignore call 204 * 00251 2 03 001 0 205 ldx2 1,2 get timeout branch if any 00252 0 74 002 254 206 tze 2 00253 4 10 004 257 207 tsy iintrp-*,* and do it 00254 4 71 001 255 208 tra iscdsp-*,* back to secondary dispatcher 209 * 00255 0 31000 3 210 iscdsp ind secdsp secondary dispatcher 00256 0 00310 1 211 iinchk ind inchek interpreter entry validation 00257 0 00343 1 212 iintrp ind interp main interpreter subroutine 213 00260 214 itmtib bss 1 saves real tib address assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 27 istbrk entry for restarting from breakpoint 215 ttls istbrk entry for restarting from breakpoint 216 00261 217 istbrk subr ibk,(x1,x2,x3) 00275 0 17 012 307 218 sta brkopc-* may contain the real op to execute 00276 4 10 760 256 219 tsy iinchk-*,* do std setup 00277 0 71 003 302 220 tra ibk001-* at breakpoint, good 00300 0 56 007 307 221 stz brkopc-* not at breakpoint, cleanup 00301 0 71 004 305 222 tra ibkret-* and return 223 00302 0 07 040 342 224 ibk001 lda l.c003-* =^tfbkpt 00303 1 32 036 0 225 ansa t.flg3,1 not at break anymore 00304 4 10 753 257 226 tsy iintrp-*,* call intpreter 00305 227 ibkret return istbrk 228 00307 000000 0 229 brkopc oct 0 real op to exec when starting from break assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 28 inchek subroutine to validate and set up at entry 230 ttls inchek subroutine to validate and set up at entry 231 * 232 * this subroutine makes sure everything is legal at entry to 233 * interpreter, and puts address of current wait block in x2 234 * 00310 235 inchek subr inc,(a) 236 * end of binary card 00000010 00316 2332 00 0 237 cx1a make sure x1 is non-zero 00317 0 64 002 321 238 tnz 2 00320 239 die 1 240 * 00321 1 03 003 0 241 ldx2 t.cur,1 get pointer to current wait blk 00322 0 64 002 324 242 tnz 2 which had better be non-zero 00323 243 die 2 244 00324 1 07 036 0 245 lda t.flg3,1 see if at break 00325 0 31 014 341 246 cana l.c002-* =tfbkpt 00326 0 64 006 334 247 tnz incret-* at break, take nonskip return 248 * 00327 2 07 000 0 249 lda 0,2 get op block type 00330 0 27 010 340 250 cmpa l.c001-* which should be "wait" 00331 0 74 002 333 251 tze 2 00332 252 die 3 00333 0 76 755 310 253 aos inchek-* take skip return 254 * 00334 255 incret return inchek 256 * 00336 0 35000 3 257 a.c001 ind setptw set up variable cpu page table word 00337 0 24000 3 258 a.c002 ind gettib 259 00340 777003 0 260 l.c001 vfd o18/waitop 00341 000001 0 261 l.c002 vfd o18/tfbkpt 00342 777776 0 262 l.c003 vfd o18//tfbkpt assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 29 interp subroutine processes most control blocks 263 ttls interp subroutine processes most control blocks 264 * 265 * interp: main subroutine of control table interpreter, called 266 * tib address in x1 and pointer to first block to process in 267 * x2. starts at top for every fresh op block 268 * 00343 269 interp subr int,(x2,x3) 270 00354 0 20 733 307 271 szn brkopc-* op to exec from bkpt restart? 00355 0 74 004 361 272 tze int010-* no 00356 0 07 731 307 273 lda brkopc-* yes, pick it up 00357 0 56 730 307 274 stz brkopc-* 00360 0 71 002 362 275 tra int011-* 276 * 00361 277 int010 null head of main loop 00361 2 07 000 0 278 lda 0,2 get op block type 00362 0335 11 0 279 int011 lrs 9 extend high-order 9 bits 00363 422 777 0 280 icmpa -1 which must be all on 00364 0 74 002 366 281 tze 2 00365 282 die 4 end of binary card 00000011 283 * isolate type so as to use 284 * jump table 00366 6337 11 0 285 qrl 9 get it in low-order 00367 7333 00 0 286 cqa of a 00370 0 74 003 373 287 tze int020-* zero is not allowed 00371 422 106 0 288 icmpa maxop it can't be too big either 00372 0 75 002 374 289 tmi 2 00373 290 int020 null 00373 291 die 8 292 * now we'll load type into x3 and use it 293 * to index jump table 00374 4333 00 0 294 cax3 00375 295 trace mt.blk,tr.blk,(x2,x3) 00406 0 40 002 410 296 adcx3 int030-* add address of head of jump table 00407 7 71 000 0 297 tra 0,3* and go through indirect word 298 * 00410 0 00410 1 299 int030 zero * address of jump table 300 * jump table follows 00411 0 00520 1 301 ind int100 (01) goto 00412 0 00522 1 302 ind int200 (02) iftyp 00413 0 00531 1 303 ind int300 (03) wait 00414 0 00536 1 304 ind int400 (04) status 00415 0 00537 1 305 ind int500 (05) dcwlst 00416 0 00542 1 306 ind int600 (06) setime 00417 0 00547 1 307 ind int700 (07) gotype 00420 0 00563 1 308 ind int800 (10) setflg 00421 0 00571 1 309 ind int900 (11) clrflg 00422 0 00601 1 310 ind in1000 (12) tstflg 00423 0 00615 1 311 ind in1100 (13) dmpout 00424 0 00712 1 312 ind in1200 (14) signal assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 30 interp subroutine processes most control blocks 00425 0 00717 1 313 ind in1300 (15) meter 00426 0 00516 1 314 ind intbak (16) waitm just returns 00427 0 00724 1 315 ind in1500 (17) sendin 00430 0 00741 1 316 ind in1600 (20) tstwrt 00431 0 00751 1 317 ind in1700 (21) tstglb 00432 0 00762 1 318 ind in1800 (22) setype 00433 0 00774 1 319 ind in1900 (23) scntr end of binary card 00000012 00434 0 01000 1 320 ind in2000 (24) acntr 00435 0 01006 1 321 ind in2100 (25) tcntr 00436 0 01036 1 322 ind in2200 (26) getext 00437 0 01054 1 323 ind in2300 (27) retext 00440 0 01064 1 324 ind in2400 (30) inscan 00441 0 01070 1 325 ind in2500 (31) outscn 00442 0 01076 1 326 ind in2600 (32) bldmsg 00443 0 01121 1 327 ind in2700 (33) dumpin 00444 0 01131 1 328 ind in2800 (34) setchr 00445 0 01151 1 329 ind in2900 (35) cmpchr 00446 0 01172 1 330 ind in3000 (36) calsub 00447 0 01206 1 331 ind in3100 (37) retsub 00450 0 01221 1 332 ind in3200 (40) holdot 00451 0 01241 1 333 ind in3300 (41) ifhsla 00452 0 01250 1 334 ind in3400 (42) config 00453 0 01260 1 335 ind in3500 (43) ckinpt 00454 0 01350 1 336 ind in3600 (44) gtinpt 00455 0 01474 1 337 ind in3700 (45) replay 00456 0 01504 1 338 ind in3800 (46) dmprpy 00457 0 01514 1 339 ind in3900 (47) prepnl 00460 0 01577 1 340 ind in4000 (50) tstrpy 00461 0 01605 1 341 ind in4100 (51) echo 00462 0 01611 1 342 ind in4200 (52) setcct 00463 0 01620 1 343 ind in4300 (53) dmpmsg 00464 0 01652 1 344 ind in4400 (54) setlcl 00465 0 01660 1 345 ind in4500 (55) addlcl 00466 0 01670 1 346 ind in4600 (56) tstlcl 00467 0 01701 1 347 ind in4700 (57) setlcf 00470 0 01707 1 348 ind in4800 (60) clrlcf 00471 0 01716 1 349 ind in4900 (61) tstlcf 00472 0 01730 1 350 ind in5000 (62) setlcv 00473 0 01761 1 351 ind in5100 (63) calasm 00474 0 01775 1 352 ind in5200 (64) bkptop 00475 0 02002 1 353 ind in5300 (65) linctl 00476 0 02027 1 354 ind in5400 (66) linsta 00477 0 02041 1 355 ind in5500 (67) tstlcv 00500 0 02056 1 356 ind in5600 (70) nullop 00501 0 02060 1 357 ind in5700 (71) unwind 00502 0 02063 1 358 ind in5800 (72) settmv end of binary card 00000013 00503 0 02056 1 359 ind in5600 (73) retpms obsolete (ind to nullop) 00504 0 02070 1 360 ind in6000 (74) gotov 00505 0 02074 1 361 ind in6100 (75) gocase assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 31 interp subroutine processes most control blocks 00506 0 02173 1 362 ind in6200 (76) setfld 00507 0 02177 1 363 ind in6300 (77) addfld 00510 0 02205 1 364 ind in6400 (100) tstfld 00511 0 02214 1 365 ind in6500 (101) meter1 00512 0 02216 1 366 ind in6600 (102) meter2 00513 0 02220 1 367 ind in6700 (103) meteru 00514 0 02231 1 368 ind in6800 (104) meterm 00515 0 01107 1 369 ind in2620 (105) bldims 000106 370 maxop equ *-int030 defines end of table 371 * 00516 372 intbak null return point 00516 373 return interp 374 * 375 * 376 * 377 * 00520 378 int100 null goto 00520 2 03 001 0 379 ldx2 1,2 get address from block 00521 0 71 640 361 380 tra int010-* and go around again 381 * 382 * test terminal type 383 * iftype , 384 * 00522 385 int200 null 00522 2 07 001 0 386 lda 1,2 get terminal type test value 00523 1 27 017 0 387 cmpa t.type,1 vs tib terminal type 00524 0 74 003 527 388 tze int210-* equal 00525 273 003 0 389 iacx2 3 go to next block 00526 0 71 633 361 390 tra int010-* 00527 2 03 002 0 391 int210 ldx2 2,2 get new block address 00530 0 71 631 361 392 tra int010-* 393 * 394 * 00531 395 int300 null wait 00531 0 20 302 1033 396 szn incall-* check if still in called subroutine 00532 0 74 002 534 397 tze 2 00533 398 die 13 wait block executed between call and retu 00534 1 13 003 0 399 stx2 t.cur,1 store pointer to wait block in 00535 0 71 761 516 400 tra intbak-* tib and return 401 * 402 * 00536 403 int400 null status is illegal except after wait 00536 404 die 5 405 * 406 * 00537 407 int500 null dcwlst, handled by subroutine 00537 4 10 002 541 408 tsy idcwc-*,* 00540 0 71 621 361 409 tra int010-* 410 * 00541 0 02341 1 411 idcwc ind dcwcnt 412 * assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 32 interp subroutine processes most control blocks 413 * 00542 414 int600 null setime 00542 2 07 001 0 415 lda 1,2 get interval 00543 4 10 003 546 416 int601 tsy istime-*,* 00544 273 002 0 417 iacx2 2 bump to next block 00545 0 71 614 361 418 tra int010-* 00546 0 34000 3 419 istime ind setime scheduler entry to set timer 420 * 421 * 00547 422 int700 null gotype 00547 1 47 017 0 423 ldq t.type,1 make sure terminal type code 00550 0 74 002 552 424 tze int710-* is positive 00551 0 65 002 553 425 tpl 2 00552 426 int710 null 00552 427 die 12 end of binary card 00000014 428 * 00553 273 001 0 429 int720 iacx2 1 advance to branch point 00554 2 07 000 0 430 lda 0,2 get branch point 00555 0 75 775 552 431 tmi int710-* end of list 00556 573 777 0 432 iaq -1 decrement count 00557 0 74 002 561 433 tze int730-* found branch point 00560 0 71 773 553 434 tra int720-* loop 00561 0332 00 0 435 int730 cax2 get new address 00562 0 71 577 361 436 tra int010-* and process it 437 * 438 * 00563 439 int800 null setflg 00563 2 07 001 0 440 lda 1,2 get word of flags to turn on 00564 1 72 001 0 441 orsa t.flg,1 and do it 00565 2 07 002 0 442 lda 2,2 same for second word 00566 1 72 002 0 443 orsa t.flg2,1 00567 273 003 0 444 iacx2 3 bump to next block 00570 0 71 571 361 445 tra int010-* 446 * 447 * 00571 448 int900 null clrflg 00571 2 07 001 0 449 lda 1,2 get word of flags to turn off 00572 322 777 0 450 iera -1 complement it 00573 1 32 001 0 451 ansa t.flg,1 turn off specified tib flags 00574 2 07 002 0 452 lda 2,2 get second word 00575 322 777 0 453 iera -1 complement it 00576 1 32 002 0 454 ansa t.flg2,1 turn these off,too 00577 273 003 0 455 iacx2 3 on to the next 00600 0 71 561 361 456 tra int010-* 457 * 458 * 00601 459 in1000 null tstflg 00601 2 07 002 0 460 lda 2,2 get flags to test 00602 1 34 001 0 461 ana t.flg,1 isolate them from tib flag word 00603 2 27 002 0 462 cmpa 2,2 are they all on? assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 33 interp subroutine processes most control blocks 00604 0 64 007 613 463 tnz in1010-* 00605 2 07 003 0 464 lda 3,2 get second word to test 00606 1 34 002 0 465 ana t.flg2,1 00607 2 27 003 0 466 cmpa 3,2 are they all on too? 00610 0 64 003 613 467 tnz in1010-* 00611 2 03 001 0 468 ldx2 1,2 yes, get new op block address 00612 0 71 547 361 469 tra int010-* 00613 470 in1010 null 00613 273 004 0 471 iacx2 4 no, bump to next block 00614 0 71 545 361 472 tra int010-* 473 * 474 * 00615 475 in1100 null dmpout 00615 0 56 220 1035 476 stz sndflg-* initialize this 00616 1 07 012 0 477 lda t.ocp,1 get output chain pointer 00617 0 74 043 662 478 tze in1110-* and if its non-zero, free chain 00620 0 17 070 710 479 sta in1190-* save address end of binary card 00000015 00621 4 10 200 1021 480 tsy a.d005-*,* setbpt 00622 4333 00 0 481 cax3 get addressable pointer 00623 3 07 001 0 482 lda bf.flg,3 get buffer flags 00624 0 31 205 1031 483 cana l.d007-* =hold output buffers flag 00625 0 74 031 656 484 tze in1108-* no - normal dmpout 00626 0 31 202 1030 485 in1104 cana l.d006-* =last buffer in message flag 00627 0 64 007 636 486 tnz in1106-* yes - release partial chain 00630 3 07 000 0 487 lda bf.nxt,3 get forward link 00631 0 74 016 647 488 tze in1107-* end of chain - treat as normal dmpout 00632 4 10 167 1021 489 tsy a.d005-*,* setbpt 00633 4333 00 0 490 cax3 as above 00634 3 07 001 0 491 lda bf.flg,3 get buffer flags 00635 0 71 771 626 492 tra in1104-* 00636 3 07 000 0 493 in1106 lda bf.nxt,3 get forward link 00637 3 56 000 0 494 stz bf.nxt,3 unlink rest of chain 00640 1 41 012 0 495 ldx3 t.ocp,1 get output chain pointer 00641 1 17 012 0 496 sta t.ocp,1 establish new output chain 00642 3333 00 0 497 cx3a 00643 4 10 046 711 498 tsy ifrel-*,* release first message in chain 00644 1 56 013 0 499 stz t.ocur,1 void current buffer stuff 00645 1 56 014 0 500 stz t.olst,1 00646 0 71 040 706 501 tra in1140-* 502 00647 0 76 166 1035 503 in1107 aos sndflg-* make sure about sndout 00650 1 07 012 0 504 lda t.ocp,1 get ptr to chain 00651 4 10 040 711 505 tsy ifrel-*,* free chain 00652 1 56 012 0 506 stz t.ocp,1 zero ptr 00653 1 56 013 0 507 stz t.ocur,1 00654 1 56 014 0 508 stz t.olst,1 00655 0 71 017 674 509 tra in1120-* 510 00656 0 07 032 710 511 in1108 lda in1190-* get absolute chain address 00657 4 10 032 711 512 tsy ifrel-*,* assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 34 interp subroutine processes most control blocks 00660 1 56 012 0 513 stz t.ocp,1 00661 0 76 154 1035 514 aos sndflg-* we must do "send output" if t.ocp chain was freed 00662 515 in1110 null 516 do the same for chain being 00662 1 07 013 0 517 lda t.ocur,1 output currently 00663 0 74 011 674 518 tze in1120-* 00664 4 10 025 711 519 tsy ifrel-*,* 00665 1 56 013 0 520 stz t.ocur,1 00666 1 56 014 0 521 stz t.olst,1 00667 1 07 004 0 522 lda t.line,1 hsla line? end of binary card 00000016 00670 0 31 142 1032 523 cana l.d010-* =hslafl 00671 0 74 003 674 524 tze in1120-* no 00672 1 41 030 0 525 ldx3 t.sfcm,1 yes, we'll need sfcm address 00673 3 56 022 0 526 stz sf.noc,3 not partway through an output buffer now 527 00674 528 in1120 null 00674 0 20 141 1035 529 szn sndflg-* did we free t.ocp chain? 00675 0 64 004 701 530 tnz in1125-* yes, queue "send output" 00676 673 002 0 531 ila bufthr if we threw away more than "threshold" buffers, 00677 1 27 016 0 532 cmpa t.ocnt,1 we'll have to ask for more output 00700 0 65 003 703 533 tpl in1130-* 00701 534 in1125 null 00701 473 105 0 535 ilq sndout 00702 4 10 014 716 536 tsy idenq-*,* dia enqueueing routine 00703 537 in1130 null 00703 1 56 016 0 538 stz t.ocnt,1 no buffers in write chain now 00704 0 07 120 1024 539 lda l.d002-* ^tfwrit 00705 1 32 001 0 540 ansa t.flg,1 tfwrit must be turned off 00706 541 in1140 null 00706 273 001 0 542 iacx2 1 bump to next block 00707 0 71 452 361 543 tra int010-* 544 00710 545 in1190 bss 1 00711 0 17000 3 546 ifrel ind frelbf free buffer chain subroutine 547 * 548 * 00712 549 in1200 null signal 00712 2 47 001 0 550 ldq 1,2 get signal type 00713 4 10 003 716 551 tsy idenq-*,* call dia queuing routine 00714 273 002 0 552 iacx2 2 bump to next block 00715 0 71 444 361 553 tra int010-* 00716 0 02000 3 554 idenq ind denq dia enqueuing routine 555 * 556 * 00717 557 in1300 null meter 00717 2 47 001 0 558 ldq 1,2 get meter type 00720 4 10 003 723 559 tsy imetrc-*,* and call metering utility 00721 273 002 0 560 iacx2 2 next block 00722 0 71 437 361 561 tra int010-* 00723 0 26000 3 562 imetrc ind meterc assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 35 interp subroutine processes most control blocks 563 * 564 * 00724 565 in1500 null sendin 00724 1 07 005 0 566 lda t.icp,1 get input chain pointer 00725 0 74 012 737 567 tze in1520-* forget it if zero 00726 1 27 006 0 568 cmpa t.ilst,1 see if there's only 1 buffer 00727 0 64 006 735 569 tnz in1510-* no, send the chain 00730 4 10 071 1021 570 tsy a.d005-*,* setbpt 00731 4333 00 0 571 cax3 00732 3 07 001 0 572 lda bf.tly,3 otherwise make sure tally 00733 0 34 070 1023 573 ana l.d001-* is non-zero 00734 0 74 003 737 574 tze in1520-* 575 * 00735 576 in1510 null 00735 473 112 0 577 ilq accin put "accept input" opcode in q end of binary card 00000017 00736 4 10 760 716 578 tsy idenq-*,* for dia enqueuing routine 579 * 00737 580 in1520 null 00737 273 001 0 581 iacx2 1 next block 00740 0 71 421 361 582 tra int010-* 583 * 584 * 585 * 00741 586 in1600 null tstwrt 00741 1 20 012 0 587 szn t.ocp,1 is there an output chain 00742 0 64 003 745 588 tnz in1605-* 00743 1 20 013 0 589 szn t.ocur,1 or is there one we're working on now? 00744 0 74 003 747 590 tze in1610-* 00745 591 in1605 null 00745 2 03 001 0 592 ldx2 1,2 yes, get branch address 00746 0 71 413 361 593 tra int010-* 00747 594 in1610 null no, go to next block 00747 273 002 0 595 iacx2 2 00750 0 71 411 361 596 tra int010-* 597 * 598 * 00751 599 in1700 null tstglb 00751 4 07 010 761 600 lda iglob-*,* pick up global switches 00752 2 34 001 0 601 ana 1,2 isolate the one(s) we're testing 00753 2 27 001 0 602 cmpa 1,2 all on? 00754 0 64 003 757 603 tnz in1710-* 00755 2 03 002 0 604 ldx2 2,2 yes, get new op block addr. 00756 0 71 403 361 605 tra int010-* 00757 273 003 0 606 in1710 iacx2 3 fail, get next block 00760 0 71 401 361 607 tra int010-* 00761 0 00012 1 608 iglob ind globsw 609 * 610 * 00762 611 in1800 null setype 00762 2 07 001 0 612 lda 1,2 get new type from op block assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 36 interp subroutine processes most control blocks 00763 1 17 017 0 613 sta t.type,1 set it in tib 00764 0 41 034 1020 614 ldx3 a.d004-* addr (ctrl) 00765 3 41 001 0 615 ldx3 ct.dev,3 get pointer to device tables 00766 1 40 017 0 616 adcx3 t.type,1 indexed by line type 00767 3 41 777 0 617 ldx3 -1,3 subtract 1 for 0 origin 00770 373 010 0 618 iacx3 dt.brk add in offset of break table 00771 1 50 032 0 619 stx3 t.brkp,1 update break table address 00772 273 002 0 620 iacx2 2 next block 00773 4 71 100 1073 621 tra iin010-*,* 622 * 00774 623 in1900 null scntr (set counter) 00774 2 07 001 0 624 lda 1,2 get new value 00775 1 17 035 0 625 sta t.cntr,1 store it in counter 00776 273 002 0 626 iacx2 2 next block 00777 4 71 074 1073 627 tra iin010-*,* 628 * 01000 629 in2000 null acntr (add to counter) 01000 1 07 035 0 630 lda t.cntr,1 origional value 01001 2 47 001 0 631 ldq 1,2 increment 01002 4 10 013 1015 632 tsy a.d001-*,* =addnov 01003 1 17 035 0 633 sta t.cntr,1 01004 273 002 0 634 iacx2 2 next block end of binary card 00000018 01005 4 71 066 1073 635 tra iin010-*,* 636 * 01006 637 in2100 null tcntr (test counter) 01006 2 07 001 0 638 lda 1,2 get test value 01007 1 27 035 0 639 cmpa t.cntr,1 same as counter? 01010 0 74 003 1013 640 tze in2110-* 01011 273 003 0 641 iacx2 3 no, go to next block 01012 4 71 061 1073 642 tra iin010-*,* 01013 643 in2110 null 01013 2 03 002 0 644 ldx2 2,2 yes, get new block address 01014 4 71 057 1073 645 tra iin010-*,* 646 647 648 01015 0 02310 1 649 a.d001 ind addnov 01016 0 23000 3 650 a.d002 ind getmem 01017 0 20000 3 651 a.d003 ind fremem 01020 0 01000 3 652 a.d004 ind ctrl 01021 0 32000 3 653 a.d005 ind setbpt 01022 0 07000 3 654 a.d006 ind cvabs 655 01023 000777 0 656 l.d001 vfd 18/buftmk buffer tally mask 01024 777776 0 657 l.d002 vfd 18/ntfwrt 01025 400000 0 658 l.d003 oct 400000 extension buffer in use flag 01026 000077 0 659 l.d004 oct 77 sub-buffer tally mask 01027 000777 0 660 l.d005 oct 777 mask for right half 01030 040000 0 661 l.d006 vfd 18/bfflst last buffer in message flag 01031 001000 0 662 l.d007 vfd 18/bffhld hold output buffers flag assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 37 interp subroutine processes most control blocks 663 *l.d008 unused 664 *l.d009 unused 01032 001000 0 665 l.d010 vfd 18/hslafl 666 01033 000000 0 667 incall oct 0 hold area - return point from called subr 01034 0 17000 3 668 ifrlbf ind frelbf free linked chain of buffers subroutine 669 670 01035 671 sndflg bss 1 indicates whether to do "send output" on dmpout 672 * 673 * get tib extension 674 * getext < # words needed>, 675 * 01036 1 20 011 0 676 in2200 szn t.elnk,1 does line have extension? 01037 0 74 002 1041 677 tze 2 no 01040 678 die 14 die 01041 2 47 001 0 679 ldq 1,2 number of words needed 01042 573 001 0 680 iaq 1 +1 for length word 01043 4 10 753 1016 681 tsy a.d002-*,* =getmem 01044 0 71 006 1052 682 tra in2210-* no room 01045 2 07 001 0 683 lda 1,2 length requested 01046 3 17 000 0 684 sta 0,3 save in extension 01047 1 50 011 0 685 stx3 t.elnk,1 save extension address 01050 273 003 0 686 iacx2 3 skip 3 words for this opblock 01051 4 71 022 1073 687 tra iin010-*,* and go to next 01052 2 03 002 0 688 in2210 ldx2 2,2 take failure return end of binary card 00000019 01053 4 71 020 1073 689 tra iin010-*,* 690 * 691 * return a tib extension 692 * retext 693 * 01054 1 41 011 0 694 in2300 ldx3 t.elnk,1 get address 01055 0 74 005 1062 695 tze in2310-* none, do nothing 01056 1 56 011 0 696 stz t.elnk,1 no longer has ext 01057 3 47 000 0 697 ldq 0,3 length 01060 573 001 0 698 iaq 1 plus control word 01061 4 10 736 1017 699 tsy a.d003-*,* =fremem 01062 273 001 0 700 in2310 iacx2 1 01063 4 71 010 1073 701 tra iin010-*,* 702 * 703 * input scan 704 * inscan
, 705 * 01064 673 000 0 706 in2400 ila 0 get input scan indicator 01065 4 10 002 1067 707 tsy iscnop-*,* call scan subroutine 01066 4 71 005 1073 708 tra iin010-*,* 01067 0 02662 1 709 iscnop ind scanop 710 * 711 * output scan 712 * outscn
, assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 38 interp subroutine processes most control blocks 713 * 01070 673 001 0 714 in2500 ila 1 get output scan indicator 01071 4 10 776 1067 715 tsy iscnop-*,* call scan subroutine 01072 4 71 001 1073 716 tra iin010-*,* 717 * 718 * 719 * 01073 0 00361 1 720 iin010 ind int010 01074 0 04043 1 721 ibldut ind bldutl 01075 0 03767 1 722 iadbyt ind adbyte 723 * 724 * build output message 725 * bldmsg
, 726 * 01076 727 in2600 null 01076 4 10 776 1074 728 tsy ibldut-*,* (=bldutl) build the message 01077 0 71 020 1117 729 tra in2670-* failed 01100 1 07 012 0 730 lda t.ocp,1 get output chain pointer 01101 3 17 000 0 731 sta bf.nxt,3 chain it to this one 01102 3333 00 0 732 cx3a get our absolute address 01103 4 10 717 1022 733 tsy a.d006-*,* cvabs 01104 1 17 012 0 734 sta t.ocp,1 replace output chain pointer 735 01105 273 003 0 736 in2605 iacx2 3 go to next block 01106 4 71 765 1073 737 tra iin010-*,* 738 * 739 * build input message 740 * bldims
, 741 * 01107 742 in2620 null 01107 4 10 765 1074 743 tsy ibldut-*,* (=bldutl) build the message 01110 0 71 007 1117 744 tra in2670-* failed 01111 1 07 005 0 745 lda t.icp,1 get input chain pointer 01112 3 17 000 0 746 sta bf.nxt,3 chain it to current one 01113 3333 00 0 747 cx3a 01114 4 10 706 1022 748 tsy a.d006-*,* cvabs 01115 1 17 005 0 749 sta t.icp,1 place input chain pointer 01116 0 71 767 1105 750 tra in2605-* return 751 * 752 * here for failing bldmsg 753 * 01117 2 03 002 0 754 in2670 ldx2 2,2 get failure block address 01120 4 71 753 1073 755 tra iin010-*,* 756 * 757 * dump input chain 758 * dumpin 759 * 01121 1 07 005 0 760 in2700 lda t.icp,1 get input chain ptr end of binary card 00000020 01122 0 74 005 1127 761 tze in2710-* no chain 01123 4 10 711 1034 762 tsy ifrlbf-*,* free input chain assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 39 interp subroutine processes most control blocks 01124 1 56 005 0 763 stz t.icp,1 zero chain pointer 01125 1 56 006 0 764 stz t.ilst,1 zero pointer to last buffer 01126 1 56 007 0 765 stz t.icpl,1 01127 273 001 0 766 in2710 iacx2 1 go to next block 01130 4 71 743 1073 767 tra iin010-*,* 768 * 769 * set byte value in tib extension 770 * setchr , 771 * 01131 2 07 001 0 772 in2800 lda 1,2 get byte positions 01132 2337 11 0 773 arl 9 isolate dest byte 01133 4 10 742 1075 774 tsy iadbyt-*,* get its byte adress 01134 775 die 15 not tib extension byte 01135 0 50 012 1147 776 stx3 in2850-* save - dest address 01136 2 07 001 0 777 lda 1,2 01137 0 34 670 1027 778 ana l.d005-* =o777 - isolate source byte 01140 4 10 735 1075 779 tsy iadbyt-*,* get its address 01141 0 71 002 1143 780 tra in2810-* not 46x value 01142 3 07 200 0 781 lda 0,3,b.0 get source byte 01143 0 41 004 1147 782 in2810 ldx3 in2850-* get dest byte address 01144 3 17 200 0 783 sta 0,3,b.0 place in tib byte 01145 273 002 0 784 iacx2 2 go to next block 01146 4 71 725 1073 785 tra iin010-*,* 01147 786 in2850 bss 1 destination byte address 01150 787 in2860 bss 1 source byte address 788 * 789 * compare bytes 790 * cmpchr ,, 791 * 01151 2 07 001 0 792 in2900 lda 1,2 get byte positions 01152 2337 11 0 793 arl 9 isolate source byte 01153 4 10 722 1075 794 tsy iadbyt-*,* get its byte address 01154 0 71 002 1156 795 tra in2910-* not 46x value 01155 3 07 200 0 796 lda 0,3,b.0 get source byte 01156 0 17 772 1150 797 in2910 sta in2860-* save for compare 01157 2 07 001 0 798 lda 1,2 01160 0 34 647 1027 799 ana l.d005-* =o777 - isolate test value 01161 4 10 714 1075 800 tsy iadbyt-*,* get its address 01162 0 71 002 1164 801 tra in2920-* not 46x value 01163 3 07 200 0 802 lda 0,3,b.0 get test value 01164 0 27 764 1150 803 in2920 cmpa in2860-* vs source byte 01165 0 74 003 1170 804 tze in2930-* equal 01166 273 003 0 805 iacx2 3 go to next block 01167 4 71 704 1073 806 tra iin010-*,* 01170 2 03 002 0 807 in2930 ldx2 2,2 get equal block address end of binary card 00000021 01171 4 71 702 1073 808 tra iin010-*,* 809 * 810 * call subroutine 811 * calsub 812 * assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 40 interp subroutine processes most control blocks 01172 0 20 641 1033 813 in3000 szn incall-* check return point 01173 0 74 002 1175 814 tze 2 ok - not in use 01174 815 die 13 multiple subroutine calls 01175 2 07 001 0 816 lda 1,2 get entry point block address 01176 273 002 0 817 iacx2 2 01177 1 20 022 0 818 szn t.reta,1 tib return addr used yet? 01200 0 64 003 1203 819 tnz in3001-* yes 01201 1 13 022 0 820 stx2 t.reta,1 01202 0 71 002 1204 821 tra in3002-* 01203 0 13 630 1033 822 in3001 stx2 incall-* save return point 01204 0332 00 0 823 in3002 cax2 go to subroutine 01205 4 71 666 1073 824 tra iin010-*,* 825 * 826 * return from subroutine 827 * retsub 828 * 01206 0 20 625 1033 829 in3100 szn incall-* check second return point 01207 0 74 004 1213 830 tze in3101-* not in use 01210 0 03 623 1033 831 ldx2 incall-* 01211 0 56 622 1033 832 stz incall-* 01212 4 71 661 1073 833 tra iin010-*,* 01213 1 20 022 0 834 in3101 szn t.reta,1 check first return point 01214 0 64 002 1216 835 tnz 2 01215 836 die 13 01216 1 03 022 0 837 ldx2 t.reta,1 01217 1 56 022 0 838 stz t.reta,1 01220 4 71 653 1073 839 tra iin010-*,* 840 * 841 * set hold output buffer flag 842 * holdot 843 * 01221 1 07 012 0 844 in3200 lda t.ocp,1 get output chain pointer 01222 0 64 003 1225 845 tnz in3220-* 01223 273 001 0 846 in3210 iacx2 1 go to next block 01224 4 71 647 1073 847 tra iin010-*,* 01225 4 10 232 1457 848 in3220 tsy a.g015-*,* setbpt 01226 4333 00 0 849 cax3 01227 0 07 011 1240 850 lda in3290-* get hold output buffer flag 01230 3 72 001 0 851 orsa bf.flg,3 set on in buffer 01231 3 07 001 0 852 lda bf.flg,3 01232 0 34 005 1237 853 ana in3280-* check for last buffer in message 01233 0 64 770 1223 854 tnz in3210-* yes 01234 3 07 000 0 855 lda bf.nxt,3 get forward pointer 01235 0 74 766 1223 856 tze in3210-* 01236 0 71 767 1225 857 tra in3220-* 858 01237 040000 0 859 in3280 vfd 18/bfflst last buffer in message flag end of binary card 00000022 01240 001000 0 860 in3290 vfd 18/bffhld hold output buffer flag 861 * 862 * test for hsla line assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 41 interp subroutine processes most control blocks 863 * ifhsla 864 * 01241 865 in3300 null ifhsla 01241 1 07 004 0 866 lda t.line,1 get line number to find out if hsla line 01242 2337 11 0 867 arl 9 get hsla bit down at end 01243 0 74 003 1246 868 tze in3310-* not hsla 01244 2 03 001 0 869 ldx2 1,2 is hsla, get branch point 01245 4 71 626 1073 870 tra iin010-*,* go get new block 01246 871 in3310 null not hsla 01246 273 002 0 872 iacx2 2 go to next block 01247 4 71 624 1073 873 tra iin010-*,* 874 * 875 * reconfigure operation for hsla's 876 * config 877 * 01250 878 in3400 null config 01250 1 07 004 0 879 lda t.line,1 be sure hsla 01251 2337 11 0 880 arl 9 01252 0 64 002 1254 881 tnz 2 01253 882 die 16 01254 273 001 0 883 iacx2 1 point at first sub-op 01255 4 10 002 1257 884 tsy icnfg-*,* config block processed by subroutine 01256 4 71 615 1073 885 tra iin010-*,* and continue with next op block 886 01257 0 03000 3 887 icnfg ind hcfg subroutine to process config block 888 * 889 * check for partial input line for channel 890 * ckinpt 891 * 01260 892 in3500 null ckinpt 01260 1 07 005 0 893 lda t.icp,1 is there an input chain? 01261 0 74 013 1274 894 tze in3510-* no, check for hsla 01262 4 10 175 1457 895 tsy a.g015-*,* setbpt 01263 4333 00 0 896 cax3 01264 3 07 001 0 897 lda bf.tly,3 yes, see if it's more than just cr 01265 0 34 175 1462 898 ana l.g001-* (=buftmk) isolate tally in first buffer 01266 773 776 0 899 iaa -2 is it more than 1? 01267 0 65 057 1346 900 tpl in3595-* yes, there's a partial line 901 (otherwise result would have been negative) 01270 3333 00 0 902 cx3a no, get pointer to first character 01271 0 06 177 1470 903 ada l.g007-* bf.dta,b.0 01272 4333 00 0 904 cax3 in order to 01273 0 71 013 1306 905 tra in3520-* check to see if it's carriage return 906 01274 1 07 004 0 907 in3510 lda t.line,1 01275 2337 11 0 908 arl 9 is it an hsla line? 01276 0 74 046 1344 909 tze in3590-* no, there's no input 910 01277 0 41 142 1441 911 ldx3 a.g001-* (=indblk) 2 word arg blk for hgeti 01300 4 10 142 1442 912 tsy a.g002-*,* (=hgeti) call routine to check input 01301 0 07 137 1440 913 lda indblk+1-* any chars in buffer? assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 42 interp subroutine processes most control blocks 01302 0 74 042 1344 914 tze in3590-* no, at left margin 01303 422 001 0 915 icmpa 1 more than one char? 01304 0 64 042 1346 916 tnz in3595-* yes, we have partial input 01305 0 41 132 1437 917 ldx3 indblk-* no, look at character 01306 3 07 200 0 918 in3520 lda 0,3,b.0 pick up the char end of binary card 00000023 01307 022 177 0 919 iana 127 strip off parity 01310 0 17 163 1473 920 sta tmpchr-* hang on to it 01311 422 015 0 921 icmpa cr is it carriage return? 01312 0 74 032 1344 922 tze in3590-* yes, no partial input 01313 422 034 0 923 icmpa upshft case shift character? 01314 0 74 030 1344 924 tze in3590-* yes, doesn't count 01315 422 037 0 925 icmpa dnshft or lower shift? 01316 0 74 026 1344 926 tze in3590-* yes, don't count it either 01317 1 07 002 0 927 lda t.flg2,1 check for output flow control chars 01320 0 31 151 1471 928 cana l.g008-* tfofc 01321 0 74 014 1335 929 tze in3540-* mode not on, skip it 01322 1 47 046 0 930 ldq t.ofch,1 get the chars 01323 0 31 147 1472 931 cana l.g009-* tfblak 01324 0 64 005 1331 932 tnz in3530-* if block ack, don't check 1st char 01325 7333 00 0 933 cqa 01326 2337 11 0 934 arl 9 suspend character 01327 0 27 144 1473 935 cmpa tmpchr-* got it? 01330 0 74 014 1344 936 tze in3590-* yes, doesn't count 01331 0334 33 0 937 in3530 lls 27 isolate resume/ack char 01332 2337 11 0 938 arl 9 01333 0 27 140 1473 939 cmpa tmpchr-* 01334 0 74 010 1344 940 tze in3590-* it is one, don't count it 01335 1 07 017 0 941 in3540 lda t.type,1 is this a 2741? 01336 422 003 0 942 icmpa 3 01337 0 64 007 1346 943 tnz in3595-* no, don't check further 01340 0 07 133 1473 944 lda tmpchr-* get character back into a 01341 022 077 0 945 iana 63 mask off shift 01342 422 074 0 946 icmpa ibmeot is it an eot? 01343 0 64 003 1346 947 tnz in3595-* no, we have partial input 948 01344 2 03 001 0 949 in3590 ldx2 1,2 get fail addr, no partial line 01345 4 71 076 1443 950 tra a.g003-*,* (=int010) return 951 01346 273 002 0 952 in3595 iacx2 2 all well, partial input ready 01347 4 71 074 1443 953 tra a.g003-*,* (=int010) return 954 * 955 * routine to scoop up input and make output chain at t.rcp 956 * gtinpt 957 * 01350 958 in3600 null 01350 0 13 065 1435 959 stx2 in3694-* save x2 value 960 01351 4 10 075 1446 961 tsy a.g006-*,* (=getcmt) get pointer to cmt 962 returned in x2 01352 2 07 201 0 963 lda 1,2,b.0 get tab from cmt assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 43 interp subroutine processes most control blocks 01353 4 17 074 1447 964 sta a.g007-*,* (tabchr) save for copybf 01354 2 07 301 0 965 lda 1,2,b.1 likewise backspace 01355 4 17 073 1450 966 sta a.g008-*,* (bschar) 967 end of binary card 00000024 01356 1 07 017 0 968 lda t.type,1 is it a 1050 or 2741? 01357 422 002 0 969 icmpa 2 (1050) 01360 0 74 003 1363 970 tze in3602-* 01361 422 003 0 971 icmpa 3 (2741) 01362 0 64 003 1365 972 tnz in3603-* 01363 673 075 0 973 in3602 ila 61 yes, use ebcdic pad 01364 0 71 002 1366 974 tra in3604-* 975 01365 673 000 0 976 in3603 ila 0 no, use ascii pad 01366 4 17 062 1450 977 in3604 sta a.g008-*,* (delchr) save for copybf 01367 1 56 011 0 978 stz t.rcp,1 to initialize 979 01370 1 07 005 0 980 lda t.icp,1 get ptr to head of input chain 01371 0 74 020 1411 981 tze in3650-* none, check hsla 982 01372 4 10 065 1457 983 in3610 tsy a.g015-*,* setbpt 01373 0332 00 0 984 cax2 01374 2 07 001 0 985 lda bf.tly,2 get the output buffer tally 01375 0 34 065 1462 986 ana l.g001-* (=buftmk) mask tally 01376 6333 00 0 987 caq hold on to it 01377 0 13 037 1436 988 stx2 in3695-* save original buffer pointer 01400 3332 00 0 989 cx2a move pointer to first char 01401 0 06 067 1470 990 ada l.g007-* bf.dta,b.0 01402 0332 00 0 991 cax2 01403 7333 00 0 992 cqa get tally back 01404 4 10 046 1452 993 tsy a.g010-*,* (copybf) copy it into replay chain 994 01405 0 03 031 1436 995 ldx2 in3695-* restore x2 with buffer pointer 01406 2 07 000 0 996 lda bf.nxt,2 get fwd ptr in this buffer 01407 0 64 763 1372 997 tnz in3610-* enter copy loop if another buffer 01410 0 50 024 1434 998 stx3 in3693-* save pointer to last buffer 999 01411 1 07 004 0 1000 in3650 lda t.line,1 special code for hsla's 01412 2337 11 0 1001 arl 9 we are done if its an lsla 01413 0 74 011 1424 1002 tze in3680-* we are. 1003 01414 0 41 025 1441 1004 ldx3 a.g001-* (=indblk) 2 word arg blk 01415 4 10 025 1442 1005 tsy a.g002-*,* (=hgeti) get input ptrs and tally 01416 0 20 022 1440 1006 szn indblk+1-* any input at all? 01417 0 74 005 1424 1007 tze in3680-* no, done 1008 01420 0 07 020 1440 1009 lda indblk+1-* get the tally 1010 01421 0 03 016 1437 1011 ldx2 indblk-* get ptr to input bffr 01422 4 10 030 1452 1012 tsy a.g010-*,* (copybf) copy this stuff 01423 0 71 002 1425 1013 tra 2 buffer address is in x3 already assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 44 interp subroutine processes most control blocks 1014 01424 0 41 010 1434 1015 in3680 ldx3 in3693-* get ptr to last buffer in chain end of binary card 00000025 01425 4 07 033 1460 1016 lda a.g016-*,* (ctpte) get target pte back 01426 4 17 033 1461 1017 sta a.g017-*,* .crbpe,* 01427 0 07 036 1465 1018 lda l.g004-* (=bffrpy) get replay flag 01430 3 72 001 0 1019 orsa bf.flg,3 set in buffer 1020 01431 0 03 004 1435 1021 ldx2 in3694-* 01432 273 001 0 1022 iacx2 1 skip this block 01433 4 71 010 1443 1023 tra a.g003-*,* (=int010) 1024 01434 1025 in3693 bss 1 1026 01435 1027 in3694 bss 1 01436 1028 in3695 bss 1 01437 1029 indblk bss 2 1030 01441 0 01437 1 1031 a.g001 ind indblk 01442 0 10000 3 1032 a.g002 ind hgeti 01443 0 00361 1 1033 a.g003 ind int010 01444 0 21000 3 1034 a.g004 ind getbfh 01445 0 17000 3 1035 a.g005 ind frelbf 01446 0 02246 1 1036 a.g006 ind getcmt 01447 0 02657 1 1037 a.g007 ind tabchr in copybf 01450 0 02660 1 1038 a.g008 ind delchr in copybf 01451 0 02661 1 1039 a.g009 ind bschar in copybf 01452 0 02451 1 1040 a.g010 ind copybf subroutine to copy input buffer into replay buffe 01453 0 02310 1 1041 a.g011 ind addnov 01454 0 30000 3 1042 a.g012 ind puteco 01455 0 15000 3 1043 a.g013 ind frebfh 01456 0 33000 3 1044 a.g014 ind setcct hsla mans cct setter 01457 0 32000 3 1045 a.g015 ind setbpt 01460 0 02656 1 1046 a.g016 ind ctpte in copybf 01461 4 00710 0 1047 a.g017 ind .crbpe,* 1048 01462 000777 0 1049 l.g001 vfd 18/buftmk 01463 2 00000 0 1050 l.g002 ind 0,b.0 01464 000777 0 1051 l.g003 oct 000777 01465 004000 0 1052 l.g004 vfd 18/bffrpy 01466 776777 0 1053 l.g005 vfd 18/ntfrpn 01467 020000 0 1054 l.g006 vfd 18/bffbrk 01470 2 00002 0 1055 l.g007 zero bf.dta,b.0 01471 000100 0 1056 l.g008 vfd 18/tfofc 01472 004000 0 1057 l.g009 vfd 18/tfblak 1058 01473 1059 tmpchr bss 1 temporary storage for test char 1060 * 1061 * op to make gtinpt chain the real output chain 1062 * replay 1063 * assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 45 interp subroutine processes most control blocks 01474 1064 in3700 null replay 01474 1 41 011 0 1065 ldx3 t.rcp,1 get replay chain ptr 01475 1 20 012 0 1066 szn t.ocp,1 make sure no output ready now end of binary card 00000026 01476 0 74 002 1500 1067 tze 2 01477 1068 die 17 1069 01500 1 50 012 0 1070 stx3 t.ocp,1 set as head of chain 01501 1 56 011 0 1071 stz t.rcp,1 zero replay chain ptr 1072 01502 273 001 0 1073 iacx2 1 next block please 01503 4 71 740 1443 1074 tra a.g003-*,* (=int010) 1075 * 1076 * dump the replay chain, if any 1077 * dmprpy 1078 * 01504 1079 in3800 null dmprpy 01504 1 07 011 0 1080 lda t.rcp,1 get ptr 01505 0 74 003 1510 1081 tze in3810-* none, done 1082 01506 4 10 737 1445 1083 tsy a.g005-*,* (=frelbf) 01507 1 56 011 0 1084 stz t.rcp,1 freed 1085 01510 273 001 0 1086 in3810 iacx2 1 next block 01511 0 07 755 1466 1087 lda l.g005-* =^tfrpon 01512 1 32 002 0 1088 ansa t.flg2,1 replay not on now 01513 4 71 730 1443 1089 tra a.g003-*,* (=int010) 1090 * 1091 * op to prepare newline and delays for output now 1092 * prepnl 1093 * 01514 1094 in3900 null 01514 473 040 0 1095 ilq bufsiz allocate buffer for the nl 01515 4 10 727 1444 1096 tsy a.g004-*,* (=getbfh) 01516 1097 die 18 1098 01517 0 17 057 1576 1099 sta in3994-* save absolute address of buffer 01520 0 50 053 1573 1100 stx3 in3991-* save virtual addr of buffer 01521 0 13 053 1574 1101 stx2 in3992-* save x2 for awhile 1102 01522 0 56 053 1575 1103 stz in3993-* init the tally for the buffer 1104 01523 3333 00 0 1105 cx3a setup x3 with char addressing too 01524 773 002 0 1106 iaa bf.dta offset of data in buffer 01525 0 37 736 1463 1107 ora l.g002-* (=0,b.0) char bits 01526 4333 00 0 1108 cax3 back into x3 1109 01527 4 10 717 1446 1110 tsy a.g006-*,* (getcmt) get cmt pointer 01530 2 07 300 0 1111 lda 0,2,b.1 get the cr char from the cmt 01531 0 27 733 1464 1112 cmpa l.g003-* (=000777) no char? 01532 0 74 004 1536 1113 tze in3910-* yes, dont use it assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 46 interp subroutine processes most control blocks 1114 01533 3 17 200 0 1115 sta 0,3,b.0 put cr into buffer 01534 373 300 0 1116 iacx3 0,b.1 bump ptr 01535 0 76 040 1575 1117 aos in3993-* bump tally 1118 01536 2 07 200 0 1119 in3910 lda 0,2,b.0 get the nl char 01537 3 17 200 0 1120 sta 0,3,b.0 put the char into the buffer 01540 373 300 0 1121 iacx3 0,b.1 bump the ptr 01541 0 76 034 1575 1122 aos in3993-* bump the tally 1123 01542 473 000 0 1124 ilq 0 get the pad for ascii (null) 1125 01543 1 07 017 0 1126 lda t.type,1 get the type of this guy 01544 422 002 0 1127 icmpa 2 is it 1050? end of binary card 00000027 01545 0 74 003 1550 1128 tze in3913-* yes 01546 422 003 0 1129 icmpa 3 is it 2741? 01547 0 64 004 1553 1130 tnz in3915-* no 01550 673 757 0 1131 in3913 ila -17 more delays for ebcdic types 01551 473 075 0 1132 ilq 61 octal 75 is idle for 1050/2741 01552 0 71 002 1554 1133 tra in3920-* 1134 01553 673 770 0 1135 in3915 ila -8 get the count of pads to send 01554 3 57 200 0 1136 in3920 stq 0,3,b.0 deposit for idle 01555 373 300 0 1137 iacx3 0,b.1 bump ptr 01556 0 76 017 1575 1138 aos in3993-* count tally 01557 773 001 0 1139 iaa 1 decrement count 01560 0 64 774 1554 1140 tnz in3920-* loop 1141 01561 0 41 012 1573 1142 ldx3 in3991-* reload ptr to buffer 01562 0 07 013 1575 1143 lda in3993-* get the correct tally 01563 3 17 001 0 1144 sta bf.tly,3 save in buffer 1145 01564 1 07 012 0 1146 lda t.ocp,1 get head of chain 01565 3 17 000 0 1147 sta bf.nxt,3 make head ptr nxt in our buffer 01566 0 41 010 1576 1148 ldx3 in3994-* get absolute address back 01567 1 50 012 0 1149 stx3 t.ocp,1 make us head now 1150 01570 0 03 004 1574 1151 ldx2 in3992-* reload op block ptr 01571 273 001 0 1152 iacx2 1 skip the block 01572 4 71 651 1443 1153 tra a.g003-*,* (=int010) 1154 01573 1155 in3991 bss 1 01574 1156 in3992 bss 1 01575 1157 in3993 bss 1 01576 1158 in3994 bss 1 1159 * 1160 * op to test replay chain ptr 1161 * tstrpy 1162 * 01577 1163 in4000 null assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 47 interp subroutine processes most control blocks 01577 1 20 011 0 1164 szn t.rcp,1 any replay chain? 01600 0 64 003 1603 1165 tnz in4010-* yes 1166 01601 2 03 001 0 1167 ldx2 1,2 no, take fail addr 01602 4 71 641 1443 1168 tra a.g003-*,* (=int010) 1169 01603 273 002 0 1170 in4010 iacx2 2 ok skip block 01604 4 71 637 1443 1171 tra a.g003-*,* (=int010) 1172 * 1173 * op to insert char in echo buffer 1174 * echo 1175 * 01605 1176 in4100 null 01605 2 47 001 0 1177 ldq 1,2 get character 01606 4 10 646 1454 1178 tsy a.g012-*,* (=puteco) 01607 273 002 0 1179 iacx2 2 next op block 01610 4 71 633 1443 1180 tra a.g003-*,* (=int010) 1181 * 1182 * initialize cct to specific table 1183 * setcct 1184 * 000010 1185 h.baw equ 8 base address word in hwcm 1186 * 01611 1 07 004 0 1187 in4200 lda t.line,1 be sure it is hsla 01612 2337 11 0 1188 arl 9 01613 0 74 003 1616 1189 tze in4201-* lsla, ignore 01614 2 07 001 0 1190 lda 1,2 get arg 01615 4 10 641 1456 1191 tsy a.g014-*,* =setcct end of binary card 00000028 01616 273 002 0 1192 in4201 iacx2 2 go to next op block 01617 4 71 624 1443 1193 tra a.g003-*,* (=int010) 1194 * 1195 * dump input message up to break char 1196 * dmpmsg 1197 * 01620 1 07 005 0 1198 in4300 lda t.icp,1 get head of input chain 01621 0 74 022 1643 1199 tze in4310-* there isn't any, we're done 01622 0 17 027 1651 1200 sta in4391-* save absolute address 01623 4 10 634 1457 1201 tsy a.g015-*,* setbpt 01624 4333 00 0 1202 cax3 01625 3 07 001 0 1203 lda bf.flg,3 find out if this is end 01626 0 34 641 1467 1204 ana l.g006-* =bffbrk 01627 0 17 021 1650 1205 sta in4390-* save for later 01630 3 07 000 0 1206 lda bf.nxt,3 get forward pointer 01631 1 17 005 0 1207 sta t.icp,1 new head of chain 01632 3 07 001 0 1208 lda bf.siz,3 get buffer size 01633 2337 17 0 1209 arl 15 size-1 01634 322 777 0 1210 iera -1 add 1 and negate 01635 1 16 007 0 1211 asa t.icpl,1 subtract from chain length 01636 0 07 013 1651 1212 lda in4391-* get absolute address for freeing 01637 473 000 0 1213 ilq 0 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 48 interp subroutine processes most control blocks 01640 4 10 615 1455 1214 tsy a.g013-*,* frebfh 01641 0 20 007 1650 1215 szn in4390-* was it last in message? 01642 0 74 756 1620 1216 tze in4300-* no, look at new head 01643 1 20 005 0 1217 in4310 szn t.icp,1 is head of chain zero? 01644 0 64 002 1646 1218 tnz 2 no, that's cool 01645 1 56 006 0 1219 stz t.ilst,1 make sure no one thinks there's a chain 01646 273 001 0 1220 iacx2 1 done, go to next block 01647 4 71 574 1443 1221 tra a.g003-*,* =int010 1222 01650 1223 in4390 bss 1 used to hold latest value of bffbrk 01651 1224 in4391 bss 1 holds absolute buffer address 1225 * 1226 * setlcl - set a local variable 1227 * 01652 2 41 001 0 1228 in4400 ldx3 1,2 addr of variable 01653 0 10 067 1742 1229 tsy cvaddr-* get real address 01654 2 07 002 0 1230 lda 2,2 new value 01655 3 17 000 0 1231 sta 0,3 this is the job 01656 273 003 0 1232 iacx2 3 01657 4 71 564 1443 1233 tra a.g003-*,* =int010 1234 * 1235 * addlcl - add value to a local variable 1236 * 01660 2 41 001 0 1237 in4500 ldx3 1,2 addr of variable 01661 0 10 061 1742 1238 tsy cvaddr-* 01662 3 07 000 0 1239 lda 0,3 starting value 01663 2 47 002 0 1240 ldq 2,2 increvemt 01664 4 10 567 1453 1241 tsy a.g011-*,* (addnov) do the add end of binary card 00000029 01665 3 17 000 0 1242 sta 0,3 and store result 01666 273 003 0 1243 iacx2 3 01667 4 71 554 1443 1244 tra a.g003-*,* =int010 1245 * 1246 * tstlcl - test local variable and goto if equal 1247 * 01670 2 41 001 0 1248 in4600 ldx3 1,2 addr of variable 01671 0 10 051 1742 1249 tsy cvaddr-* 01672 2 07 002 0 1250 lda 2,2 test val 01673 3 27 000 0 1251 cmpa 0,3 01674 0 74 003 1677 1252 tze in4601-* do the goto 01675 273 004 0 1253 iacx2 4 01676 4 71 545 1443 1254 tra a.g003-*,* =int010 01677 2 03 003 0 1255 in4601 ldx2 3,2 get branch addr 01700 4 71 543 1443 1256 tra a.g003-*,* =int010 1257 * 1258 * setlcf - set flag in local variable 1259 * 01701 2 41 001 0 1260 in4700 ldx3 1,2 addr of variable 01702 0 10 040 1742 1261 tsy cvaddr-* 01703 2 07 002 0 1262 lda 2,2 new bits to set 01704 3 72 000 0 1263 orsa 0,3 set them assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 49 interp subroutine processes most control blocks 01705 273 003 0 1264 iacx2 3 01706 4 71 535 1443 1265 tra a.g003-*,* =int010 1266 * 1267 * clrlcf - clear flag in local variable 1268 * 01707 2 41 001 0 1269 in4800 ldx3 1,2 addr of variable 01710 0 10 032 1742 1270 tsy cvaddr-* 01711 673 777 0 1271 ila -1 01712 2 35 002 0 1272 era 2,2 get invverted mask 01713 3 32 000 0 1273 ansa 0,3 turn off bits 01714 273 003 0 1274 iacx2 3 01715 4 71 526 1443 1275 tra a.g003-*,* =int010 1276 * 1277 * tstlcf - test flag in local variable and goto if on 1278 * 01716 2 41 001 0 1279 in4900 ldx3 1,2 addr of variable 01717 0 10 023 1742 1280 tsy cvaddr-* 01720 2 07 002 0 1281 lda 2,2 bits to test 01721 3 34 000 0 1282 ana 0,3 test them 01722 2 27 002 0 1283 cmpa 2,2 all on? 01723 0 74 003 1726 1284 tze in4901-* yes 01724 273 004 0 1285 iacx2 4 01725 4 71 516 1443 1286 tra a.g003-*,* =int010 01726 2 03 003 0 1287 in4901 ldx2 3,2 get place to go 01727 4 71 514 1443 1288 tra a.g003-*,* =int010 1289 * 1290 * setlcv - set local variable from another one 1291 * 01730 2 41 001 0 1292 in5000 ldx3 1,2 address of target 01731 0 10 011 1742 1293 tsy cvaddr-* 01732 0 50 007 1741 1294 stx3 in5001-* 01733 2 41 002 0 1295 ldx3 2,2 address of source end of binary card 00000030 01734 0 10 006 1742 1296 tsy cvaddr-* 01735 3 07 000 0 1297 lda 0,3 pick up data 01736 4 17 003 1741 1298 sta in5001-*,* 01737 273 003 0 1299 iacx2 3 01740 4 71 503 1443 1300 tra a.g003-*,* =int010 01741 1301 in5001 bss 1 1302 * 1303 * subroutine to get address of local variables. 1304 * a positve number is a real address. 1305 * a negative number is a tib externion offset, and is converted 1306 * to a real address. 1307 * entered with address in x3 1308 * 01742 1309 cvaddr subr cva 01745 3333 00 0 1310 cx3a 01746 422 000 0 1311 icmpa 0 test for minus 01747 0 65 010 1757 1312 tpl cvaret-* normal address 01750 1 20 011 0 1313 szn t.elnk,1 be sure there is tib extension assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 50 interp subroutine processes most control blocks 01751 0 64 002 1753 1314 tnz 2 01752 1315 die 14 01753 322 777 0 1316 iera -1 invert offset 01754 773 001 0 1317 iaa 1 01755 1 06 011 0 1318 ada t.elnk,1 now have real address 01756 4333 00 0 1319 cax3 01757 1320 cvaret return cvaddr 1321 * 1322 * calasm - call an assembler subr from control tables 1323 * 01761 3332 00 0 1324 in5100 cx2a 01762 773 003 0 1325 iaa 3 get param list addr 01763 4333 00 0 1326 cax3 store here for call 01764 2 06 002 0 1327 ada 2,2 get addr of opblock after params 01765 0 17 007 1774 1328 sta in5101-* save for return 01766 2 03 002 0 1329 ldx2 2,2 load param count 01767 7 10 776 0 1330 tsy -2,3* and call subr 01770 3332 00 0 1331 cx2a check return value 01771 4 64 452 1443 1332 tnz a.g003-*,* subr set return addr 01772 0 03 002 1774 1333 ldx2 in5101-* continue in line 01773 4 71 450 1443 1334 tra a.g003-*,* =int010 01774 1335 in5101 bss 1 1336 * 1337 * bkptop - breakpoint ecountered 1338 * 01775 4 10 276 2273 1339 in5200 tsy a.h002-*,* =brkhit, see what to do 01776 4 71 276 2274 1340 tra a.h003-*,* =int011, dont break, a contains op 01777 0 07 266 2265 1341 lda l.h002-* =tfbkpt, set break flag 02000 1 72 036 0 1342 orsa t.flg3,1 end of binary card 00000031 02001 4 71 274 2275 1343 tra a.h004-*,* =int300, exit thru wait opblock 1344 * 1345 * linctl - checks to see if test state call was caused 1346 * by a line_control order from cs 1347 * 02002 4 10 274 2276 1348 in5300 tsy a.h005-*,* =lctlck, dia man entry to check 02003 0 71 021 2024 1349 tra in5301-* not a line control call 02004 0 50 022 2026 1350 stx3 in5302-* save temporarily 02005 2 41 001 0 1351 ldx3 1,2 where to store data 02006 0 10 734 1742 1352 tsy cvaddr-* 02007 3332 00 0 1353 cx2a save opblock addr 02010 0 03 016 2026 1354 ldx2 in5302-* address of line_control data 02011 2 47 000 0 1355 ldq 0,2 copy 4 words 02012 3 57 000 0 1356 stq 0,3 02013 2 47 001 0 1357 ldq 1,2 02014 3 57 001 0 1358 stq 1,3 02015 2 47 002 0 1359 ldq 2,2 02016 3 57 002 0 1360 stq 2,3 02017 2 47 003 0 1361 ldq 3,2 02020 3 57 003 0 1362 stq 3,3 02021 773 003 0 1363 iaa 3 address of next opblock assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 51 interp subroutine processes most control blocks 02022 0332 00 0 1364 cax2 02023 4 71 420 1443 1365 tra a.g003-*,* =int010 02024 2 03 002 0 1366 in5301 ldx2 2,2 take failuure addr 02025 4 71 416 1443 1367 tra a.g003-*,* 02026 1368 in5302 bss 1 1369 * 1370 * linsta - line status to send signal to cs 1371 * 02027 2 41 001 0 1372 in5400 ldx3 1,2 addr of data 02030 0 10 712 1742 1373 tsy cvaddr-* 02031 0 13 775 2026 1374 stx2 in5302-* save opblock addr 02032 3333 00 0 1375 cx3a 02033 0332 00 0 1376 cax2 02034 0 47 232 2266 1377 ldq l.h003-* =004124, linsta code with wordcount=4 02035 4 10 242 2277 1378 tsy a.h006-*,* =denq 02036 0 03 770 2026 1379 ldx2 in5302-* current opblock 02037 273 002 0 1380 iacx2 2 advance to next 02040 4 71 403 1443 1381 tra a.g003-*,* 1382 * 1383 * tstlcv - compares two variables and does goto if equal 1384 * 02041 2 41 001 0 1385 in5500 ldx3 1,2 addr of first 02042 0 10 700 1742 1386 tsy cvaddr-* 02043 0 50 012 2055 1387 stx3 in5501-* save first addr 02044 2 41 002 0 1388 ldx3 2,2 addr of second 02045 0 10 675 1742 1389 tsy cvaddr-* 02046 3 07 000 0 1390 lda 0,3 get second value end of binary card 00000032 02047 4 27 006 2055 1391 cmpa in5501-*,* compare to first 02050 0 74 003 2053 1392 tze in5502-* got a match 02051 273 004 0 1393 iacx2 4 on to next op 02052 4 71 230 2302 1394 tra a.h009-*,* =int010 02053 2 03 003 0 1395 in5502 ldx2 3,2 get success addr 02054 4 71 226 2302 1396 tra a.h009-*,* =int010 02055 1397 in5501 bss 1 1398 * 1399 * nullop - a no-operation, do nothing 1400 * 02056 273 001 0 1401 in5600 iacx2 1 02057 4 71 223 2302 1402 tra a.h009-*,* =int010 1403 * 1404 * unwind - zeores all subroutine return addresses to return 1405 * highest level. 1406 * 02060 4 56 220 2300 1407 in5700 stz a.h007-*,* =incall 02061 1 56 022 0 1408 stz t.reta,1 02062 0 71 774 2056 1409 tra in5600-* 1410 * 1411 * settmv - set time from a variable 1412 * 02063 2 41 001 0 1413 in5800 ldx3 1,2 get variable address assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 52 interp subroutine processes most control blocks 02064 0 10 656 1742 1414 tsy cvaddr-* 02065 3 07 000 0 1415 lda 0,3 pick up time 02066 4 71 213 2301 1416 tra a.h008-*,* =int601, join setime path 1417 * 1418 * retpms - return parameters 1419 * 1420 * in5900 null return p 1421 * ilq sparms put return params opcode in q 1422 * tsy idenk-*,* for dia enqueueing routine 1423 * iacx2 1 skip this block 1424 * tra a.h009-*,* (=int010) 02067 0 02000 3 1425 idenk ind denq dia enqueueing routine 1426 * 1427 * gotov - go to a variable 1428 * 02070 2 41 001 0 1429 in6000 ldx3 1,2 get variable address 02071 0 10 651 1742 1430 tsy cvaddr-* 02072 3 03 000 0 1431 ldx2 0,3 get target address 02073 4 71 207 2302 1432 tra a.h009-*,* =int010 1433 1434 * 1435 * gocase - goto computed on case basis 1436 * 02074 1437 in6100 null goto computed on case 02074 0 13 065 2161 1438 stx2 gocsva-* save opblock table ic 02075 2 07 001 0 1439 lda 1,2 get varriable addr 02076 0 17 070 2166 1440 sta gocval-* save this addr in temp loc 02077 0 34 066 2165 1441 ana gocmsk-* see if tib ext is char or word 02100 0 27 065 2165 1442 cmpa gocmsk-* see if o760 02101 0 64 007 2110 1443 tnz in6101-* if not char in tib 02102 0 07 064 2166 1444 lda gocval-* word, so get addr from cvaddr 02103 0 37 061 2164 1445 ora gocend-* get this to a full o777xxx 02104 4333 00 0 1446 cax3 move this addr to x3 02105 0 10 635 1742 1447 tsy cvaddr-* go get the real address 02106 3 07 000 0 1448 lda 0,3 get value of this varriable 02107 0 71 005 2114 1449 tra in6102-* have addr so go do rest 02110 0 07 056 2166 1450 in6101 lda gocval-* char so go get that addr 02111 4 10 057 2170 1451 tsy goctib-*,* get real addr 02112 0 71 002 2114 1452 tra in6102-* literal, so have value 02113 3 07 200 0 1453 lda 0,3,b.0 go get value from tib 02114 0 17 052 2166 1454 in6102 sta gocval-* so store it end of binary card 00000033 02115 2 07 002 0 1455 lda 2,2 get addr compare list 02116 0 37 054 2172 1456 ora gocbyt-* set for byte addressing 02117 0 17 043 2162 1457 sta gocvls-* save addr in word 02120 2 41 003 0 1458 ldx3 3,2 get addr of jmp list 02121 0 03 041 2162 1459 ldx2 gocvls-* get addr of cmp list to an index 02122 0 07 042 2164 1460 in6103 lda gocend-* get ond of list marker 02123 3 27 000 0 1461 cmpa 0,3 check for end of string 02124 0 74 032 2156 1462 tze in6107-* if end return 02125 2 07 200 0 1463 lda 0,2,b.0 get char from cmp list assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 53 interp subroutine processes most control blocks 02126 0 27 041 2167 1464 cmpa goclsn-* see if end of value list 02127 0 74 027 2156 1465 tze in6107-* end so return 02130 0 50 033 2163 1466 stx3 gocjls-* save our jmp addr, we need x3 02131 0 34 034 2165 1467 ana gocmsk-* o760, see if char or word 02132 0 27 033 2165 1468 cmpa gocmsk-* see if word (o760) 02133 0 64 007 2142 1469 tnz in6104-* if not char, tib ext word 02134 2 07 200 0 1470 lda 0,2,b.0 word so get value back to get 02135 0 37 027 2164 1471 ora gocend-* get to a full o777xxx 02136 4333 00 0 1472 cax3 move addr to x3 for cvaddr 02137 0 10 603 1742 1473 tsy cvaddr-* go get real addr 02140 3 07 000 0 1474 lda 0,3 get value of varriable 02141 0 71 005 2146 1475 tra in6105-* go do it 02142 2 07 200 0 1476 in6104 lda 0,2,b.0 char so go get it. 02143 4 10 025 2170 1477 tsy goctib-*,* get tib ext addr if needed 02144 0 71 002 2146 1478 tra in6105-* literal so have it 02145 3 07 200 0 1479 lda 0,3,b.0 get real value from tib ext 02146 1480 in6105 null do rest of this entry 02146 0 41 015 2163 1481 ldx3 gocjls-* load our jmp list back 02147 0 27 017 2166 1482 cmpa gocval-* compare two values 02150 0 74 004 2154 1483 tze in6106-* if equal found it 02151 273 300 0 1484 iacx2 0,b.1 incr x2 to next character 02152 373 001 0 1485 iacx3 1 incr our index counter 02153 0 71 747 2122 1486 tra in6103-* try next value to compare 02154 1487 in6106 null found our value 02154 3 03 000 0 1488 ldx2 0,3 set x2 to the jmp addr 02155 4 71 125 2302 1489 tra a.h009-*,* go return =int010 02156 1490 in6107 null value not in our table 02156 0 03 003 2161 1491 ldx2 gocsva-* get old opblock table ic 02157 273 004 0 1492 iacx2 4 incr x2 to next opblock in table 02160 4 71 122 2302 1493 tra a.h009-*,* go return =int010 02161 1494 gocsva bss 1 temp of old x2 02162 1495 gocvls bss 1 varriable list addr 02163 1496 gocjls bss 1 jump list addr 02164 777000 0 1497 gocend oct 777000 end of list records end of binary card 00000034 02165 000760 0 1498 gocmsk oct 760 mask for char or word tib ext 02166 1499 gocval bss 1 store value to match 02167 000777 0 1500 goclsn oct 000777 end of chrstr list 02170 0 03767 1 1501 goctib ind adbyte get character from tib 02171 1502 gocsvt bss 1 save area 02172 2 00000 0 1503 gocbyt zero 0,b.0 set to byte addressing 1504 1505 02173 1506 in6200 null setfld 02173 2 07 002 0 1507 lda 2,2 get value to set 02174 6 17 001 0 1508 sta 1,2* store it (op block indirects through x1) 02175 273 003 0 1509 iacx2 3 on to next 02176 4 71 104 2302 1510 tra a.h009-*,* int010 1511 02177 1512 in6300 null addfld 02177 6 07 001 0 1513 lda 1,2* get contents of tib field assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 54 interp subroutine processes most control blocks 02200 2 47 002 0 1514 ldq 2,2 get increment 02201 4 10 102 2303 1515 tsy a.h010-*,* addnov 02202 6 17 001 0 1516 sta 1,2* result to tib field (op block indirects through 02203 273 003 0 1517 iacx2 3 on to next 02204 4 71 076 2302 1518 tra a.h009-*,* int010 1519 02205 1520 in6400 null tstfld 02205 2 07 002 0 1521 lda 2,2 get value to test against 02206 6 27 001 0 1522 cmpa 1,2* compare it to field 02207 0 74 003 2212 1523 tze in6410-* equal, branch 02210 273 004 0 1524 iacx2 4 else advance to next block 02211 4 71 071 2302 1525 tra a.h009-*,* int010 02212 2 03 003 0 1526 in6410 ldx2 3,2 get branch address 02213 4 71 067 2302 1527 tra a.h009-*,* (int010) go to it 1528 02214 1529 in6500 null meter1 (add to single-word meter) 02214 0 07 070 2304 1530 lda a.h011-* addr (mincs) 02215 0 71 004 2221 1531 tra mjoin-* 1532 02216 1533 in6600 null meter2 (add to double-word meter) 02216 0 07 067 2305 1534 lda a.h012-* addr(mincd) 02217 0 71 002 2221 1535 tra mjoin-* 1536 02220 1537 in6700 null meteru (update meter & meter count) 02220 0 07 066 2306 1538 lda a.h013-* addr (mupdat) 02221 1539 mjoin null a contains address of subroutine 02221 0 71 006 2227 1540 mcall tra mret-* patched to nop by bind_fnp if metering enabled 02222 0 17 023 2245 1541 sta mentry-* 02223 1 07 052 0 1542 lda t.metr,1 get pointer to metering area 02224 2 06 001 0 1543 ada 1,2 plus offset of specified meter 02225 2 47 002 0 1544 ldq 2,2 get increment from op block 02226 4 10 017 2245 1545 tsy mentry-*,* call subroutine 02227 273 003 0 1546 mret iacx2 3 next op block 02230 4 71 052 2302 1547 tra a.h009-*,* int010 1548 02231 1549 in6800 null meterm (meter synchronous message) 02231 0 71 012 2243 1550 mcal2 tra mret2-* ***see note at mcall end of binary card 00000035 02232 1 07 052 0 1551 lda t.metr,1 get pointer to metering area 02233 2 20 001 0 1552 szn 1,2 input or output? 02234 0 64 004 2240 1553 tnz in6810-* output 02235 773 022 0 1554 iaa m.nim input, get correct offset 02236 1 41 005 0 1555 ldx3 t.icp,1 and buffer pointer 02237 0 71 003 2242 1556 tra in6820-* 02240 773 030 0 1557 in6810 iaa m.nom get offset for output metering 02241 1 41 012 0 1558 ldx3 t.ocp,1 and buffer pointer 02242 4 10 045 2307 1559 in6820 tsy a.h014-*,* mmsg 02243 273 002 0 1560 mret2 iacx2 2 next op block 02244 4 71 036 2302 1561 tra a.h009-*,* int010 1562 1563 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 55 interp subroutine processes most control blocks 02245 0 00000 0 1564 mentry ind 0 set to address of appropriate metering routine assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 56 subroutine to get address of carriage movement table 1565 ttls subroutine to get address of carriage movement table 1566 02246 1567 getcmt subr get 1568 02251 0 03 021 2272 1569 ldx2 a.h001-* (=ctrl) get addr of base of ctrl 02252 2 07 001 0 1570 lda ct.dev,2 to get ptr to device tables 02253 1 06 017 0 1571 ada t.type,1 add in the type of this guy 02254 773 777 0 1572 iaa -1 correct for zero offset 02255 0332 00 0 1573 cax2 get ptr to ptr to correct devtbl 02256 2 07 000 0 1574 lda 0,2 now have ptr to devtbl 02257 773 005 0 1575 iaa dt.cmt add in offset of cmt 02260 0 37 004 2264 1576 ora l.h001-* (=0,b.0) add in char addressing 02261 0332 00 0 1577 cax2 put into x2 02262 1578 return getcmt 1579 02264 2 00000 0 1580 l.h001 zero 0,b.0 02265 000001 0 1581 l.h002 vfd o18/tfbkpt 02266 004124 0 1582 l.h003 oct 004124 02267 004000 0 1583 l.h004 oct 004000 02270 400000 0 1584 l.h005 oct 400000 02271 377777 0 1585 l.h006 oct 377777 02272 0 01000 3 1586 a.h001 ind ctrl 02273 0 14000 3 1587 a.h002 ind brkhit 02274 0 00362 1 1588 a.h003 ind int011 02275 0 00531 1 1589 a.h004 ind int300 02276 0 25000 3 1590 a.h005 ind lctlck 02277 0 02000 3 1591 a.h006 ind denq 02300 0 01033 1 1592 a.h007 ind incall end of binary card 00000036 02301 0 00543 1 1593 a.h008 ind int601 02302 0 00361 1 1594 a.h009 ind int010 02303 0 02310 1 1595 a.h010 ind addnov 02304 0 12000 3 1596 a.h011 ind mincs 02305 0 11000 3 1597 a.h012 ind mincd 02306 0 27000 3 1598 a.h013 ind mupdat 02307 0 06000 3 1599 a.h014 ind mmsg assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 57 addnov - add the q to the a without causing overflow 1600 ttls addnov - add the q to the a without causing overflow 1601 02310 1602 addnov subr ano,(i) 02316 0 17 022 2340 1603 sta anosva-* save "a" temporarily 02317 0 07 776 2315 1604 lda anosi-* get indicators 02320 0 37 747 2267 1605 ora l.h004-* =004000, inhibit overflow 02321 0 17 016 2337 1606 sta anotmp-* 02322 0 44 015 2337 1607 ldi anotmp-* 02323 0 57 014 2337 1608 stq anotmp-* the addend 02324 0 07 014 2340 1609 lda anosva-* 02325 0 06 012 2337 1610 ada anotmp-* why we're here 02326 0 55 002 2330 1611 tov 2 failed 02327 0 71 006 2335 1612 tra anoret-* add ok, return 02330 773 000 0 1613 iaa 0 02331 0 75 003 2334 1614 tmi annovp-* answer was minus, set to +infinity 02332 0 07 736 2270 1615 lda l.h005-* =400000 02333 0 71 002 2335 1616 tra anoret-* 02334 0 07 735 2271 1617 annovp lda l.h006-* =377777 02335 1618 anoret return addnov 02337 1619 anotmp bss 1 02340 1620 anosva bss 1 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 58 dcwcnt subroutine counts words in dcwlst op block 1621 ttls dcwcnt subroutine counts words in dcwlst op block 1622 * 02341 1623 dcwcnt subr dcw 1624 * 1625 * calculates number of words in dcwlst op block and calls 1626 * appropriate subroutine to process it 1627 * 000006 1628 maxdcw equ 6 1629 1630 02344 273 001 0 1631 iacx2 1 point to first subop 02345 1 13 023 0 1632 stx2 t.dcwa,1 store starting address 1633 * 02346 1634 dcw010 null head of word-counting loop 02346 2 07 000 0 1635 lda 0,2 get next word end of binary card 00000037 02347 2337 11 0 1636 arl 9 isolate subop code 02350 0 27 076 2446 1637 cmpa l.e005-* (=o777) are all 9 bits on? 02351 0 74 052 2423 1638 tze dcw080-* yes, all through with dcwlst 02352 2337 06 0 1639 arl 6 isolate 3 high-order bits 02353 422 001 0 1640 icmpa 1 die if less than 1 02354 0 75 005 2361 1641 tmi dcw020-* 02355 422 003 0 1642 icmpa 3 if output, handle specifically 02356 0 74 006 2364 1643 tze dcw030-* 02357 422 006 0 1644 icmpa maxdcw check against maximum value 02360 0 75 002 2362 1645 tmi 2 less is okay 02361 1646 dcw020 null unrecognizable subop 02361 1647 die 6 1648 here if 1, 2, 4, or 5, just go to next word 02362 273 001 0 1649 iacx2 1 02363 0 71 763 2346 1650 tra dcw010-* 1651 * 02364 1652 dcw030 null output subop, count chars. 02364 3332 00 0 1653 cx2a switch x2 to 9-bit byte addr. 02365 0 37 055 2442 1654 ora l.e001-* 0,b.0 02366 0332 00 0 1655 cax2 02367 1656 dcw040 null 02367 273 300 0 1657 iacx2 0,b.1 next character 02370 1658 dcw050 null 02370 2 07 200 0 1659 lda 0,2,b.0 pick up char. 02371 0 27 052 2443 1660 cmpa l.e002-* =o000477 02372 0 74 024 2416 1661 tze dcw070-* end of output subop 02373 0 27 051 2444 1662 cmpa l.e003-* (=o000400) literal? 02374 0 75 773 2367 1663 tmi dcw040-* yes, get next char. 02375 0 35 047 2444 1664 era l.e003-* else turn off high-order bit 02376 422 001 0 1665 icmpa 1 check for printer 02377 0 74 770 2367 1666 tze dcw040-* or keyboard addressing 02400 422 002 0 1667 icmpa 2 and go to next char 02401 0 74 766 2367 1668 tze dcw040-* in either case 1669 * 02402 422 003 0 1670 icmpa 3 splice in output chain? assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 59 dcwcnt subroutine counts words in dcwlst op block 02403 0 64 006 2411 1671 tnz dcw060-* 02404 273 300 0 1672 iacx2 0,b.1 if so, next char. must be 02405 2 07 200 0 1673 lda 0,2,b.0 "end f output" or we die 02406 0 27 035 2443 1674 cmpa l.e002-* =o000477 02407 0 74 007 2416 1675 tze dcw070-* 02410 1676 die 7 1677 * 02411 1678 dcw060 null 02411 422 004 0 1679 icmpa 4 repeat? 02412 0 74 002 2414 1680 tze 2 it had better be 02413 1681 die 6 02414 273 301 0 1682 iacx2 1,b.1 bump x2 by 3 chars 02415 0 71 753 2370 1683 tra dcw050-* 1684 * 02416 1685 dcw070 null end of output subop end of binary card 00000038 02416 3332 00 0 1686 cx2a restore word addressing to x2 02417 0 34 026 2445 1687 ana l.e004-* =o077777 02420 0332 00 0 1688 cax2 02421 273 001 0 1689 iacx2 1 go to next word 02422 0 71 724 2346 1690 tra dcw010-* 1691 * 02423 1692 dcw080 null end of dcwlst 02423 0 07 025 2450 1693 lda l.e007-* (o777000) 02424 1 32 024 0 1694 ansa t.dcwl,1 zero t.dcwl but preserve skip count in upper char 02425 3332 00 0 1695 cx2a calculate dcwlst length 02426 1 26 023 0 1696 sba t.dcwa,1 02427 1 72 024 0 1697 orsa t.dcwl,1 and put it in tib 02430 1 07 004 0 1698 lda t.line,1 get high-order bit of 02431 2337 11 0 1699 arl 9 line number 02432 0 74 003 2435 1700 tze dcw090-* 02433 4 10 005 2440 1701 tsy ihdcw-*,* hsla 02434 0 71 002 2436 1702 tra dcwbak-* 02435 1703 dcw090 null 02435 4 10 004 2441 1704 tsy ildcw-*,* lsla 1705 * 02436 1706 dcwbak return dcwcnt 1707 * 1708 * 02440 0 04000 3 1709 ihdcw ind hdcw hsla dcwlst processor 02441 0 05000 3 1710 ildcw ind ldcw lsla dcwlst processor 1711 * 02442 2 00000 0 1712 l.e001 zero 0,b.0 to switch to char addressing 02443 000477 0 1713 l.e002 oct 477 02444 000400 0 1714 l.e003 oct 400 02445 077777 0 1715 l.e004 oct 77777 02446 000777 0 1716 l.e005 oct 777 02447 000514 0 1717 l.e006 oct 514 control string byte - seteom 02450 777000 0 1718 l.e007 oct 777000 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 60 subroutines for copying into replay chain 1719 ttls subroutines for copying into replay chain 1720 02451 1721 copybf subr cop,(x2) 1722 1723 this routine is called to copy an input buffer 1724 into the replay chain 1725 inputs: 1726 x2 contains virtual pointer to input buffer 1727 a contains buffer tally 1728 1729 outputs: 1730 x3 points to last buffer in replay chain 1731 but buffer ptw is restored to its original 1732 value 1733 02457 322 777 0 1734 iera -1 negate the tally 02460 773 001 0 1735 iaa 1 02461 0 17 166 2647 1736 sta citly-* save it 02462 4 07 162 2644 1737 lda a.i002-*,* .crbpe,* 02463 0 17 172 2655 1738 sta cspte-* save "source" page table entry end of binary card 00000039 02464 2 47 200 0 1739 ldq 0,2,b.0 get first character now (x2 will be 1740 temporarily invalid) 1741 02465 1 20 011 0 1742 szn t.rcp,1 have we started building the chain yet? 02466 0 64 006 2474 1743 tnz cop010-* yes 02467 0 10 116 2605 1744 tsy cgetbf-* no, get a buffer to start it with 1745 02470 0 56 161 2651 1746 stz cpos-* column position starts at zero 02471 673 012 0 1747 ila 10 first tab stop is 10 02472 0 17 160 2652 1748 sta ctab-* 02473 0 71 002 2475 1749 tra cop030-* 1750 02474 0 41 160 2654 1751 cop010 ldx3 clchar-* get pointer to next place to store char 1752 02475 0 67 162 2657 1753 cop030 cmpq tabchr-* is it a tab? 02476 0 64 026 2524 1754 tnz cop070-* no 02477 1 07 001 0 1755 lda t.flg,1 yes, are we in tab echo? 02500 0 31 146 2646 1756 cana l.i003-* =tftbec 02501 0 64 010 2511 1757 tnz cop050-* yes 02502 0 10 053 2555 1758 tsy cpchar-* no, put tab in buffer 02503 0 47 155 2660 1759 ldq delchr-* now we'll put in delays for the real tab 02504 673 003 0 1760 ila 3 three of 'em 1761 02505 0 10 050 2555 1762 cop040 tsy cpchar-* put one in replay buffer 02506 773 777 0 1763 iaa -1 02507 0 64 776 2505 1764 tnz cop040-* do another if not finished 1765 02510 0 71 033 2543 1766 tra cop090-* ok, done with this char 1767 02511 0 07 141 2652 1768 cop050 lda ctab-* we're in tab echo, how many spaces? assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 61 subroutines for copying into replay chain 02512 0 26 137 2651 1769 sba cpos-* this many 02513 473 040 0 1770 ilq space 02514 0 10 041 2555 1771 cop060 tsy cpchar-* put it in 02515 773 777 0 1772 iaa -1 more? 02516 0 64 776 2514 1773 tnz cop060-* yes 1774 02517 0 07 133 2652 1775 lda ctab-* update column position 02520 0 17 131 2651 1776 sta cpos-* 02521 773 012 0 1777 iaa 10 02522 0 17 130 2652 1778 sta ctab-* and next tab stop 02523 0 71 020 2543 1779 tra cop090-* 1780 02524 0 10 031 2555 1781 cop070 tsy cpchar-* not a tab, store it 02525 1 07 001 0 1782 lda t.flg,1 tab echo? 02526 0 31 120 2646 1783 cana l.i003-* =tftbec 02527 0 74 014 2543 1784 tze cop090-* 02530 0 07 121 2651 1785 lda cpos-* yes, update position 02531 0 67 130 2661 1786 cmpq bschar-* which way did we go? 02532 0 64 003 2535 1787 tnz cop080-* end of binary card 00000040 02533 773 777 0 1788 iaa -1 backspace 02534 0 71 002 2536 1789 tra 2 02535 773 001 0 1790 cop080 iaa 1 forward 02536 0 17 113 2651 1791 sta cpos-* 02537 0 27 113 2652 1792 cmpa ctab-* did we reach next tab stop? 02540 0 75 003 2543 1793 tmi cop090-* 02541 673 012 0 1794 ila 10 yes, update tab stop 02542 0 16 110 2652 1795 asa ctab-* 1796 02543 0 07 112 2655 1797 cop090 lda cspte-* restore source pte 02544 4 17 100 2644 1798 sta a.i002-*,* .crbpe,* 02545 273 300 0 1799 iacx2 0,b.1 bump input pointer 02546 2 47 200 0 1800 ldq 0,2,b.0 get next character 02547 0 76 100 2647 1801 aos citly-* have we done it all? 02550 0 64 725 2475 1802 tnz cop030-* no, process next char 1803 02551 0 50 103 2654 1804 stx3 clchar-* done, save character position in buffer 02552 0 41 101 2653 1805 ldx3 clast-* return buffer pointer for gtinpt 02553 1806 return copybf assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 62 subroutines for copying into replay chain 1807 eject 02555 1808 cpchar subr cpc,(a,q,x2) 1809 1810 this subroutine stores the character 1811 passed in the q into the replay chain 1812 pointed into by x3, updating x3 as appropriate 1813 02571 0 07 065 2656 1814 lda ctpte-* use target pte 02572 4 17 052 2644 1815 sta a.i002-*,* .crbpe,* 1816 02573 0 20 055 2650 1817 szn cotly-* is there room? 02574 0 64 002 2576 1818 tnz cpc010-* yes 02575 0 10 010 2605 1819 tsy cgetbf-* no, get a buffer 1820 x3, cotly, and clast are also updated now 02576 3 57 200 0 1821 cpc010 stq 0,3,b.0 02577 373 300 0 1822 iacx3 0,b.1 02600 0 76 050 2650 1823 aos cotly-* 02601 0 03 052 2653 1824 ldx2 clast-* get buffer pointer 02602 2 76 001 0 1825 aos bf.tly,2 keep tally accurate 02603 1826 return cpchar end of binary card 00000041 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 63 subroutines for copying into replay chain 1827 eject 02605 1828 cgetbf subr cge,(q,x2) 1829 1830 this subroutine allocates a buffer 1831 for adding to the replay chain 1832 address at which first char is to be stored 1833 is returned in x3 1834 02616 473 040 0 1835 ilq bufsiz 02617 4 10 024 2643 1836 tsy a.i001-*,* getbfh 02620 1837 die 18 bad news if we couldn't get one 1838 02621 473 704 0 1839 ilq -bufnch initialize negative tally 02622 0 57 026 2650 1840 stq cotly-* 02623 4 47 021 2644 1841 ldq a.i002-*,* (.crbpe,*) hang on to pte 1842 (set by getbfh) 1843 02624 1 20 011 0 1844 szn t.rcp,1 is there a chain already? 02625 0 64 003 2630 1845 tnz cge010-* yes, ok 02626 1 17 011 0 1846 sta t.rcp,1 no, this is the beginning of it 02627 0 71 005 2634 1847 tra cge020-* 02630 0 03 026 2656 1848 cge010 ldx2 ctpte-* use old target pte 02631 4 13 013 2644 1849 stx2 a.i002-*,* .crbpe,* 02632 4 17 021 2653 1850 sta clast-*,* set forward pointer in preceding buffer 02633 4 57 011 2644 1851 stq a.i002-*,* (.crbpe,*) restore latest pte 02634 0 50 017 2653 1852 cge020 stx3 clast-* this is last one now 02635 0 57 021 2656 1853 stq ctpte-* and this is corresponding pte 1854 02636 3333 00 0 1855 cx3a point to beginning of data 02637 0 06 006 2645 1856 ada l.i001-* =bf.dta,b.0 02640 4333 00 0 1857 cax3 02641 1858 return cgetbf 1859 1860 02643 0 21000 3 1861 a.i001 ind getbfh 02644 4 00710 0 1862 a.i002 ind .crbpe,* 1863 02645 2 00002 0 1864 l.i001 zero bf.dta,b.0 1865 *l.i002 unused 02646 004000 0 1866 l.i003 vfd 18/tftbec 1867 02647 1868 citly bss 1 residual source tally (negative) 02650 1869 cotly bss 1 residual target tally (negative) 02651 1870 cpos bss 1 current column position 02652 1871 ctab bss 1 next tab stop 02653 1872 clast bss 1 pointer to last buffer in replay chain 02654 1873 clchar bss 1 pointer to next place for replay character 02655 1874 cspte bss 1 source page table entry 02656 1875 ctpte bss 1 target page table entry 1876 02657 1877 tabchr bss 1 tab character for this terminal assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 64 subroutines for copying into replay chain 02660 1878 delchr bss 1 pad character 02661 1879 bschar bss 1 backspace assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 65 scanop subroutine processes both inscan and outscn block 1880 ttls scanop subroutine processes both inscan and outscn block 1881 * 02662 1882 scanop subr sca end of binary card 00000042 1883 * 02665 4 17 274 3161 1884 sta isctyp-*,* set scan type 02666 4 13 272 3160 1885 stx2 iscsx2-*,* save x2 value during scan 02667 4 07 213 3102 1886 lda a.a014-*,* sccbpe 02670 4 17 210 3100 1887 sta a.a012-*,* (.crbpe,*) get previous buffer pte so that 1888 saved value of pbufp will work 02671 2 07 001 0 1889 lda 1,2 get control string address 02672 0 37 252 3144 1890 ora l.u001-* 0,b.0 02673 4 17 263 3156 1891 sta iscstr-*,* save control string byte address 02674 1892 sca000 null get next byte from control string 02674 4 10 263 3157 1893 tsy iscnxt-*,* via subroutine 02675 4 71 173 3070 1894 tra a.a004-*,* (sca260) end of control string 02676 0 71 002 2700 1895 tra sca004-* control byte = 5xx 02677 0 71 042 2741 1896 tra sca001-* error - literal in control string 1897 02700 0 34 245 3145 1898 sca004 ana l.u002-* =o77 - isolate scan subop 02701 0 64 002 2703 1899 tnz 2 zero not allowed 02702 1900 die 15 error in control string 1901 02703 422 030 0 1902 icmpa sca003 check for max subop 02704 0 75 002 2706 1903 tmi 2 02705 1904 die 15 error in control string 02706 4333 00 0 1905 cax3 02707 0 40 002 2711 1906 adcx3 sca002-* add address of jump table 02710 7 71 000 0 1907 tra 0,3* go to subop routine 02711 0 02711 1 1908 sca002 zero * address of jump table 1909 * subop jump table 02712 0 02742 1 1910 ind sca010 match for equal 02713 0 02752 1 1911 ind sca020 search for char 02714 0 02777 1 1912 ind sca030 ignore 02715 0 03107 1 1913 ind sca040 start bcc computation 02716 0 03113 1 1914 ind sca050 find end of chain 02717 0 03116 1 1915 ind sca060 compare bcc 02720 0 03127 1 1916 ind sca070 compare with mask 02721 0 03165 1 1917 ind sca080 rescan 02722 0 03107 1 1918 ind sca090 start lrc computation 02723 0 03167 1 1919 ind sca100 insert lrc 02724 0 03116 1 1920 ind sca110 compare lrc 02725 0 03200 1 1921 ind sca120 set last buffer in message flag 02726 0 03204 1 1922 ind sca130 replace current char 02727 0 03212 1 1923 ind sca140 compare with list 02730 0 03232 1 1924 ind sca150 move byte 02731 0 03250 1 1925 ind sca160 move byte with mask end of binary card 00000043 02732 0 03261 1 1926 ind sca170 count chars 02733 0 03272 1 1927 ind sca180 search for match on either of two values 02734 0 03317 1 1928 ind sca190 turn on bits in char assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 66 scanop subroutine processes both inscan and outscn block 02735 0 03327 1 1929 ind sca200 turn off bits in char 02736 0 03340 1 1930 ind sca210 check sync termination char 02737 0 03433 1 1931 ind sca220 move last two chars in message to tib extension 02740 0 02772 1 1932 ind sca230 skip to next char, update block check 000030 1933 sca003 equ *-sca002 defines end of jump table 1934 02741 1935 sca001 die 15 error in control string assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 67 scanop subroutine processes both inscan and outscn block 1936 eject 02742 1937 sca010 null match for equal 02742 4 10 220 3162 1938 tsy ischkc-*,* get compare value 02743 1939 die 15 error in control string 02744 0 17 146 3112 1940 sta scwrk1-* save byte for compare 02745 4 10 216 3163 1941 tsy isgtch-*,* pick up char. 02746 4 71 123 3071 1942 tra a.a005-*,* (=sca300) no char, forget it 1943 * 02747 0 27 143 3112 1944 cmpa scwrk1-* see if it's the match char 02750 4 64 121 3071 1945 tnz a.a005-*,* (=sca300) no 02751 0 71 723 2674 1946 tra sca000-* yes 1947 * 1948 * 1949 * 1950 * 02752 1951 sca020 null search for char 02752 4 10 210 3162 1952 tsy ischkc-*,* get search value 02753 1953 die 15 error in control string 02754 0 17 136 3112 1954 sta scwrk1-* save for compare 02755 4 10 206 3163 1955 tsy isgtch-*,* get char, without bumping pointer 02756 4 71 113 3071 1956 tra a.a005-*,* (=sca300) if any 02757 1957 sca022 null 02757 4 20 116 3075 1958 szn a.a009-*,* (=scbccf) are we in process of block check 02760 0 74 002 2762 1959 tze 2 02761 4 62 113 3074 1960 ersa a.a008-*,* (=scbcc) yes, do it 02762 0 27 130 3112 1961 cmpa scwrk1-* check against search char. 02763 0 74 711 2674 1962 tze sca000-* got it 02764 4 20 107 3073 1963 szn a.a007-*,* (=sccntf) are we in process of char count 02765 0 74 002 2767 1964 tze 2 no 02766 4 10 104 3072 1965 tsy a.a006-*,* (=scount) go ahead and count this char 02767 4 10 175 3164 1966 tsy iscnex-*,* no match, bump pointer 02770 4 71 101 3071 1967 tra a.a005-*,* (=sca300) if not possible, fail 02771 0 71 766 2757 1968 tra sca022-* else, go look at char 1969 * 1970 * 1971 * 02772 1972 sca230 null skip char, but update block check 02772 4 20 103 3075 1973 szn a.a009-*,* (=scbccf) block check in progress ? 02773 0 74 004 2777 1974 tze sca030-* no 02774 4 10 167 3163 1975 tsy isgtch-*,* get current char 02775 4 71 074 3071 1976 tra a.a005-*,* (=sca300) end of data 02776 4 62 076 3074 1977 ersa a.a008-*,* (=scbcc) update block check 1978 02777 1979 sca030 null ignore 02777 4 10 165 3164 1980 tsy iscnex-*,* skip over next char. 03000 0 71 005 3005 1981 tra sca032-* trying to skip past end, add more room end of binary card 00000044 03001 4 20 072 3073 1982 sca031 szn a.a007-*,* (=sccntf) are we in process of char count 03002 0 74 002 3004 1983 tze 2 no 03003 4 10 067 3072 1984 tsy a.a006-*,* (=scount) go ahead and count this char 03004 0 71 670 2674 1985 tra sca000-* assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 68 scanop subroutine processes both inscan and outscn block 1986 03005 4 20 154 3161 1987 sca032 szn isctyp-*,* check scan type 03006 4 74 063 3071 1988 tze a.a005-*,* (=sca300) inscan, fail can't add 1989 03007 4 41 056 3065 1990 ldx3 a.a001-*,* (=pbufp) 03010 3 07 001 0 1991 lda bf.tly,3 get buffer tally 03011 0 34 051 3062 1992 ana l.k001-* (=buftmk) leave only tally 03012 422 074 0 1993 icmpa bufnch compare to max tally 03013 0 75 043 3056 1994 tmi sca033-* ok, will fit here 1995 03014 3 07 001 0 1996 lda bf.flg,3 get buffer flags 03015 0 34 046 3063 1997 ana l.k002-* (=bfflst) save last flag 03016 0 17 070 3106 1998 sta scasva-* 03017 322 777 0 1999 iera -1 invert it 03020 3 32 001 0 2000 ansa bf.flg,3 make sure it's off 2001 03021 3333 00 0 2002 cx3a we will save its absolute address 03022 4 10 055 3077 2003 tsy a.a011-*,* cvabs 03023 0 17 060 3103 2004 sta scaprv-* 03024 3 07 000 0 2005 lda bf.nxt,3 03025 0 17 060 3105 2006 sta scasvn-* save forward pointer from current last buffer 03026 473 040 0 2007 ilq bufsiz get a new one 03027 4 10 614 2643 2008 tsy a.i001-*,* =getbuf 03030 4 71 041 3071 2009 tra a.a005-*,* =sca300, scan fails 03031 0 17 053 3104 2010 sta scacur-* save absolute address of new buffer 03032 0 07 053 3105 2011 lda scasvn-* forward pointer from old last pointer 03033 3 17 000 0 2012 sta bf.nxt,3 chain after current buffer 03034 4 47 044 3100 2013 ldq a.a012-*,* (.crbpe,*) hang on to pte (protect from setbpt) 03035 0 07 046 3103 2014 lda scaprv-* get previous buffer back 03036 4 10 043 3101 2015 tsy a.a013-*,* setbpt 03037 0332 00 0 2016 cax2 03040 0 07 044 3104 2017 lda scacur-* 03041 2 17 000 0 2018 sta bf.nxt,2 make old last buffer point at current 03042 4 57 036 3100 2019 stq a.a012-*,* (.crbpe,*) restore pte 2020 03043 0 07 043 3106 2021 lda scasva-* get saved a 03044 3 17 001 0 2022 sta bf.flg,3 set last flag same as before 2023 03045 673 001 0 2024 ila 1 03046 4 17 020 3066 2025 sta a.a002-*,* (=ptally) and set to one 03047 3333 00 0 2026 cx3a get ptr to buffer end of binary card 00000045 03050 773 002 0 2027 iaa bf.dta add offset to data 03051 0 37 013 3064 2028 ora l.k003-* point to data 03052 4 17 015 3067 2029 sta a.a003-*,* (=pdatp) store 03053 4 50 012 3065 2030 stx3 a.a001-*,* (=pbufp) save buffer addr too 2031 03054 3 76 001 0 2032 aos bf.tly,3 bump tally up one 03055 0 71 724 3001 2033 tra sca031-* 2034 03056 3 76 001 0 2035 sca033 aos bf.tly,3 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 69 scanop subroutine processes both inscan and outscn block 03057 4 10 105 3164 2036 tsy iscnex-*,* now bump pointers, we made room 03060 2037 die 15 die if room not found 03061 0 71 720 3001 2038 tra sca031-* 2039 03062 000777 0 2040 l.k001 vfd 18/buftmk 03063 040000 0 2041 l.k002 vfd 18/bfflst 03064 2 00000 0 2042 l.k003 zero 0,b.0 for character addressing 03065 0 03764 1 2043 a.a001 ind pbufp 03066 0 03765 1 2044 a.a002 ind ptally 03067 0 03766 1 2045 a.a003 ind pdatp 03070 0 03473 1 2046 a.a004 ind sca260 03071 0 03501 1 2047 a.a005 ind sca300 03072 0 03540 1 2048 a.a006 ind scount 03073 0 03535 1 2049 a.a007 ind sccntf 03074 0 03526 1 2050 a.a008 ind scbcc 03075 0 03527 1 2051 a.a009 ind scbccf 03076 0 03725 1 2052 a.a010 ind scend 03077 0 07000 3 2053 a.a011 ind cvabs 03100 4 00710 0 2054 a.a012 ind .crbpe,* 03101 0 32000 3 2055 a.a013 ind setbpt 03102 0 03525 1 2056 a.a014 ind sccbpe 2057 03103 2058 scaprv bss 1 03104 2059 scacur bss 1 03105 2060 scasvn bss 1 03106 2061 scasva bss 1 2062 * 2063 * 2064 * 03107 2065 sca040 null start bcc computation 03107 2066 sca090 null start lrc computation 03107 4 76 041 3150 2067 aos a.u003-*,* (scbccf) turn flag on 03110 4 56 041 3151 2068 stz a.u004-*,* (scbcc) initialize block check char 03111 0 71 563 2674 2069 tra sca000-* all done 2070 * 03112 2071 scwrk1 bss 1 work area 2072 * 2073 * 2074 * 03113 2075 sca050 null find end of chain 03113 4 10 763 3076 2076 tsy a.a010-*,* (scend) 03114 0 71 365 3501 2077 tra sca300-* wasn't any chain 03115 0 71 557 2674 2078 tra sca000-* ok, get next byte 2079 * 2080 * 2081 * 03116 2082 sca060 null compare bcc 03116 2083 sca110 null compare lrc 03116 4 20 032 3150 2084 szn a.u003-*,* (scbccf) make sure we were doing it 03117 0 64 002 3121 2085 tnz 2 03120 2086 die 10 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 70 scanop subroutine processes both inscan and outscn block end of binary card 00000046 2087 * 03121 4 56 027 3150 2088 stz a.u003-*,* (scbccf) turn off flag 03122 4 10 025 3147 2089 tsy a.u002-*,* (=sgtchr) get next char 03123 0 71 356 3501 2090 tra sca300-* if any 2091 * 03124 4 27 025 3151 2092 cmpa a.u004-*,* (scbcc) is block check correct? 03125 0 64 354 3501 2093 tnz sca300-* no 03126 0 71 546 2674 2094 tra sca000-* yes 2095 * 2096 * 2097 * 03127 2098 sca070 null compare with mask 03127 4 10 017 3146 2099 tsy a.u001-*,* (=schkcc) get compare value 03130 2100 die 15 error in control string 03131 0 17 021 3152 2101 sta scwrk2-* save compare value 03132 4 10 014 3146 2102 tsy a.u001-*,* (=schkcc) get mask value 03133 2103 die 15 error in control string 03134 0 17 017 3153 2104 sta scwrk3-* save mask value 03135 0 32 015 3152 2105 ansa scwrk2-* mask compare value 2106 * 03136 4 10 011 3147 2107 tsy a.u002-*,* (=sgtchr) get next char 03137 0 71 342 3501 2108 tra sca300-* if we can 03140 0 34 013 3153 2109 ana scwrk3-* apply the mask 03141 0 27 011 3152 2110 cmpa scwrk2-* match? 03142 0 64 337 3501 2111 tnz sca300-* no, fail 03143 0 71 531 2674 2112 tra sca000-* 2113 * 03144 2 00000 0 2114 l.u001 zero 0,b.0 03145 000077 0 2115 l.u002 oct 77 2116 03146 0 03617 1 2117 a.u001 ind schkcc 03147 0 03605 1 2118 a.u002 ind sgtchr 03150 0 03527 1 2119 a.u003 ind scbccf 03151 0 03526 1 2120 a.u004 ind scbcc 2121 03152 2122 scwrk2 bss 1 work area 03153 2123 scwrk3 bss 1 03154 2124 scwrk4 bss 1 2125 03155 0 03764 1 2126 ipbufp ind pbufp 03156 0 03533 1 2127 iscstr ind sccstr 03157 0 03700 1 2128 iscnxt ind sccnxt 03160 0 03532 1 2129 iscsx2 ind scsvx2 03161 0 03531 1 2130 isctyp ind scntyp 03162 0 03617 1 2131 ischkc ind schkcc 03163 0 03605 1 2132 isgtch ind sgtchr 03164 0 03636 1 2133 iscnex ind scnext 2134 * 2135 * 2136 * assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 71 scanop subroutine processes both inscan and outscn block 03165 2137 sca080 null rescan - initialize pointers and flags 03165 0 10 374 3561 2138 tsy scinit-* call scan init subroutine 03166 0 71 506 2674 2139 tra sca000-* 2140 * 2141 * 2142 * 03167 2143 sca100 null insert lrc 2144 03167 0 20 340 3527 2145 szn scbccf-* were we doing bcc? end of binary card 00000047 03170 0 64 002 3172 2146 tnz 2 ok 03171 2147 die 15 no, kill it 2148 03172 0 56 335 3527 2149 stz scbccf-* clear flag, used bcc value 03173 4 10 770 3163 2150 tsy isgtch-*,* get addr of byte 03174 2151 die 15 error in control string 2152 03175 0 07 331 3526 2153 lda scbcc-* get bcc value 03176 3 17 200 0 2154 sta 0,3,b.0 put into msg 03177 0 71 475 2674 2155 tra sca000-* 2156 * 2157 * 2158 * 03200 2159 sca120 null set last buffer in message flag 03200 4 41 665 3065 2160 ldx3 a.a001-*,* (=pbufp) get addr of current buffer 03201 0 07 312 3513 2161 lda l.s008-* (=bfflst) get last buffer in message flag 03202 3 72 001 0 2162 orsa bf.flg,3 turn it on 03203 0 71 471 2674 2163 tra sca000-* 2164 * 2165 * 2166 * 03204 2167 sca130 null replace current char 03204 4 10 757 3163 2168 tsy isgtch-*,* get byte address of next char in chain 03205 0 71 274 3501 2169 tra sca300-* none 03206 4 10 754 3162 2170 tsy ischkc-*,* get replace value 03207 2171 die 15 error in control string 03210 3 17 200 0 2172 sta 0,3,b.0 replace current char 03211 0 71 463 2674 2173 tra sca000-* 2174 * 2175 * 2176 * 03212 2177 sca140 null compare with list 03212 0 10 373 3605 2178 tsy sgtchr-* get next char in chain 03213 0 71 266 3501 2179 tra sca300-* none - failure 03214 0 17 737 3153 2180 sta scwrk3-* save for compare 03215 4 10 302 3517 2181 sca144 tsy a.s003-*,* (=sccnxt) get value from control string 03216 0 71 263 3501 2182 tra sca300-* end of control string - failure 03217 0 71 262 3501 2183 tra sca300-* 5xx - failure 03220 4 10 276 3516 2184 tsy a.s002-*,* (=adbyte) check for 46x 03221 0 71 002 3223 2185 tra sca148-* not 46x 03222 3 07 200 0 2186 lda 0,3,b.0 get tib byte value assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 72 scanop subroutine processes both inscan and outscn block 03223 0 27 730 3153 2187 sca148 cmpa scwrk3-* match? 03224 0 74 002 3226 2188 tze sca146-* yes 03225 0 71 770 3215 2189 tra sca144-* keep looking 03226 4 10 271 3517 2190 sca146 tsy a.s003-*,* (=sccnxt) just pass by values 03227 0 71 244 3473 2191 tra sca260-* end of control string 03230 0 71 450 2700 2192 tra sca004-* 5xx 03231 0 71 775 3226 2193 tra sca146-* 2194 * 2195 * 2196 * 03232 2197 sca150 null move byte 03232 4 10 265 3517 2198 tsy a.s003-*,* (=sccnxt) get 46x value 03233 0 71 001 3234 2199 tra 1 03234 2200 sca152 die 15 error - must be 46x 03235 4 10 261 3516 2201 tsy a.s002-*,* (=adbyte) get byte address 03236 0 71 776 3234 2202 tra sca152-* not 46x end of binary card 00000048 03237 0 50 713 3152 2203 stx3 scwrk2-* save byte address 03240 673 777 0 2204 ila -1 03241 0 17 712 3153 2205 sca154 sta scwrk3-* prime mask area 03242 0 10 343 3605 2206 tsy sgtchr-* get next char and address 03243 0 71 236 3501 2207 tra sca300-* none 03244 0 34 707 3153 2208 ana scwrk3-* mask char 03245 0 41 705 3152 2209 ldx3 scwrk2-* get byte address 03246 3 17 200 0 2210 sta 0,3,b.0 place in tib 03247 0 71 425 2674 2211 tra sca000-* 2212 * 2213 * 2214 * 03250 2215 sca160 null move byte with mask 03250 4 10 707 3157 2216 tsy iscnxt-*,* get 46x value 03251 0 71 001 3252 2217 tra 1 03252 2218 sca162 die 15 error - must be 46x 03253 4 10 243 3516 2219 tsy a.s002-*,* (=adbyte) get byte address 03254 0 71 776 3252 2220 tra sca162-* not 46x 03255 0 50 675 3152 2221 stx3 scwrk2-* save byte address 03256 0 10 341 3617 2222 tsy schkcc-* get mask value 03257 0 71 773 3252 2223 tra sca162-* error - in control string 03260 0 71 761 3241 2224 tra sca154-* same as move byte 2225 * 2226 * 2227 * 03261 2228 sca170 null count chars 03261 4 10 676 3157 2229 tsy iscnxt-*,* get 46x value 03262 0 71 001 3263 2230 tra 1 03263 2231 sca172 die 15 error - must be 46x 03264 4 10 232 3516 2232 tsy a.s002-*,* (=adbyte) get byte address 03265 0 71 776 3263 2233 tra sca172-* not 46x 03266 0 50 246 3534 2234 stx3 sccnta-* save byte address for count accumulation 03267 3 56 200 0 2235 stz 0,3,b.0 zero count in tib 03270 0 76 245 3535 2236 aos sccntf-* set count flag assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 73 scanop subroutine processes both inscan and outscn block 03271 0 71 403 2674 2237 tra sca000-* 2238 * 2239 * 2240 * 03272 2241 sca180 null search for match on either of two values 03272 0 10 325 3617 2242 tsy schkcc-* get first search value 03273 2243 die 15 error in control string 03274 0 17 657 3153 2244 sta scwrk3-* save for compare 03275 0 10 322 3617 2245 tsy schkcc-* get second search value 03276 2246 die 15 03277 0 17 655 3154 2247 sta scwrk4-* 03300 0 10 305 3605 2248 tsy sgtchr-* get char, w/o bumping ptr 03301 0 71 200 3501 2249 tra sca300-* fail if none 03302 2250 sca182 null 03302 0 20 225 3527 2251 szn scbccf-* are we in process of block check 03303 0 74 002 3305 2252 tze 2 03304 0 62 222 3526 2253 ersa scbcc-* yes, do it 03305 0 27 646 3153 2254 cmpa scwrk3-* check vs first value end of binary card 00000049 03306 4 74 207 3515 2255 tze a.s001-*,* (sca000) got it 03307 0 27 645 3154 2256 cmpa scwrk4-* check vs second value 03310 4 74 205 3515 2257 tze a.s001-*,* (sca000) got it 03311 0 20 224 3535 2258 szn sccntf-* are we in process of char count 03312 0 74 002 3314 2259 tze 2 03313 0 10 225 3540 2260 tsy scount-* go ahead and count this char 03314 4 10 650 3164 2261 tsy iscnex-*,* no match, bump ptr 03315 0 71 164 3501 2262 tra sca300-* fail, no more chars 03316 0 71 764 3302 2263 tra sca182-* else, go look at char 2264 * 2265 * 2266 * 03317 2267 sca190 null turn on bits in char 03317 0 10 300 3617 2268 tsy schkcc-* get bit pattern 03320 2269 die 15 error - in control string 03321 0 17 631 3152 2270 sta scwrk2-* save 03322 0 10 263 3605 2271 tsy sgtchr-* get next char address 03323 0 71 156 3501 2272 tra sca300-* no next char 03324 0 07 626 3152 2273 lda scwrk2-* get bit pattern 03325 3 72 200 0 2274 orsa 0,3,b.0 turn on bits 03326 4 71 167 3515 2275 tra a.s001-*,* (=sca000) done 2276 * 2277 * 2278 * 03327 2279 sca200 null turn off bits in char 03327 0 10 270 3617 2280 tsy schkcc-* get bit pattern 03330 2281 die 15 error in control string 03331 0 17 621 3152 2282 sta scwrk2-* save 03332 0 10 253 3605 2283 tsy sgtchr-* get next char address 03333 0 71 146 3501 2284 tra sca300-* no next char 03334 0 07 616 3152 2285 lda scwrk2-* get bit pattern 03335 3 72 200 0 2286 orsa 0,3,b.0 turn bits on assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 74 scanop subroutine processes both inscan and outscn block 03336 3 62 200 0 2287 ersa 0,3,b.0 now really turn them off 03337 4 71 156 3515 2288 tra a.s001-*,* (=sca000) 2289 * 2290 * 2291 * 03340 0 10 257 3617 2292 sca210 tsy schkcc-* get char from control string 03341 2293 die 15 error in control string 03342 0 17 612 3154 2294 sta scwrk4-* save for compare 03343 0 56 067 3432 2295 stz sca216-* reset flag 2296 03344 4 41 157 3523 2297 sca215 ldx3 a.s007-*,* (pbufp) get ptr to head of list 03345 0 56 171 3536 2298 stz sccbuf-* zero prev buf ptr 03346 3 07 001 0 2299 sca211 lda bf.flg,3 get flag bits 03347 0 31 144 3513 2300 cana l.s008-* (=bfflst) last buffer in msg? 03350 0 64 012 3362 2301 tnz sca212-* yes, use this buffer 2302 03351 3 20 000 0 2303 szn bf.nxt,3 more in chain? 03352 0 74 010 3362 2304 tze sca212-* no, use this one 2305 03353 3333 00 0 2306 cx3a get absolute address 03354 4 10 145 3521 2307 tsy a.s005-*,* cvabs end of binary card 00000050 03355 0 17 161 3536 2308 sta sccbuf-* save ptr to this buffer 03356 3 07 000 0 2309 lda bf.nxt,3 bump to next 03357 4 10 141 3520 2310 tsy a.s004-*,* setbpt 03360 4333 00 0 2311 cax3 03361 0 71 765 3346 2312 tra sca211-* 2313 03362 4 50 141 3523 2314 sca212 stx3 a.s007-*,* (pbufp) remember where we are 03363 3333 00 0 2315 cx3a copy to a 03364 773 002 0 2316 iaa bf.dta point at data 03365 0 37 120 3505 2317 ora l.s002-* with char addressing 03366 4 17 136 3524 2318 sta a.s008-*,* (pdatp) save 2319 03367 3 07 001 0 2320 lda bf.tly,3 get tally in buffer 03370 0 34 114 3504 2321 ana l.s001-* (=buftmk) only tally 03371 422 002 0 2322 icmpa 2 at least two chars in this buffer? 03372 0 75 020 3412 2323 tmi sca214-* no, must use prev buffer 2324 03373 773 776 0 2325 iaa -2 backup to look at term char 03374 2335 01 0 2326 lrl 1 divide by two (save bit) 03375 0 16 371 3766 2327 asa pdatp-* add into ptr 03376 0 41 370 3766 2328 ldx3 pdatp-* get it 2329 03377 0334 01 0 2330 lls 1 get bit back 03400 222 001 0 2331 icana 1 on? 03401 0 74 003 3404 2332 tze sca213-* ok as is 2333 03402 373 300 0 2334 iacx3 0,b.1 bump ptr to odd char 03403 0 50 363 3766 2335 stx3 pdatp-* save ptr always 03404 0 20 026 3432 2336 sca213 szn sca216-* check flag assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 75 scanop subroutine processes both inscan and outscn block 03405 0 64 045 3452 2337 tnz sca224-* move 2 chars 03406 3 07 200 0 2338 lda 0,3,b.0 get the supposed term char 03407 0 27 545 3154 2339 cmpa scwrk4-* is this it? 03410 4 74 105 3515 2340 tze a.s001-*,* (=sca000) yes, we got it... 2341 03411 0 71 070 3501 2342 tra sca300-* fail 2343 2344 since we know bcc was in last buffer, etx must be 2345 last char in this buffer. 2346 03412 0 07 124 3536 2347 sca214 lda sccbuf-* get ptr to next-to-last buffer 03413 0 74 066 3501 2348 tze sca300-* fail - not two chars in message 03414 4 10 104 3520 2349 tsy a.s004-*,* setbpt 03415 0 17 122 3537 2350 sta sccntl-* save virtual address of buffer 03416 773 037 0 2351 iaa bufsiz-1 point to last word 03417 0 06 075 3514 2352 ada l.s009-* (=0,b.1) and last char 03420 4333 00 0 2353 cax3 copy to index reg 03421 0 20 011 3432 2354 szn sca216-* check flag 03422 0 64 035 3457 2355 tnz sca226-* move 2 chars 03423 3 47 200 0 2356 ldq 0,3,b.0 else get character for comparison end of binary card 00000051 03424 0 41 113 3537 2357 ldx3 sccntl-* get address of buffer 03425 3 07 000 0 2358 lda bf.nxt,3 get address of last buffer again 03426 4 10 072 3520 2359 tsy a.s004-*,* (setbpt) restore pte 03427 0 67 525 3154 2360 cmpq scwrk4-* now test the character 03430 4 74 065 3515 2361 tze a.s001-*,* (=sca000) success 03431 0 71 050 3501 2362 tra sca300-* failure 2363 * 03432 2364 sca216 bss 1 flag for move last two chars to tib 2365 * 2366 * 2367 * 03433 2368 sca220 null move last two chars to tib extension 03433 0 56 777 3432 2369 stz sca216-* reset flag 03434 0 10 244 3700 2370 tsy sccnxt-* get 46x value 03435 0 71 001 3436 2371 tra 1 not 46x 03436 2372 sca222 die 15 error in control string 03437 0 10 330 3767 2373 tsy adbyte-* get byte address 03440 0 71 776 3436 2374 tra sca222-* not 46x 03441 0 50 512 3153 2375 stx3 scwrk3-* save first char addr 03442 0 10 236 3700 2376 tsy sccnxt-* get second 46x value 03443 0 71 773 3436 2377 tra sca222-* not 46x 03444 0 71 772 3436 2378 tra sca222-* not 46x 03445 0 10 322 3767 2379 tsy adbyte-* get byte addr 03446 0 71 770 3436 2380 tra sca222-* not 46x 03447 0 50 505 3154 2381 stx3 scwrk4-* save second char addr 03450 0 76 762 3432 2382 aos sca216-* set flag 03451 0 71 673 3344 2383 tra sca215-* do search for last chars 03452 2384 sca224 null return from search 03452 3 07 200 0 2385 lda 0,3,b.0 get second to last char 03453 373 300 0 2386 iacx3 0,b.1 bump to next char assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 76 scanop subroutine processes both inscan and outscn block 03454 0 50 312 3766 2387 stx3 pdatp-* always save current ptr 03455 3 47 200 0 2388 ldq 0,3,b.0 get last char 03456 0 71 010 3466 2389 tra sca227-* store into tib ext 03457 2390 sca226 null return - last two chars split between buffers 03457 3 03 200 0 2391 ldx2 0,3,b.0 get second to last char 03460 0 41 057 3537 2392 ldx3 sccntl-* get pointer to beginning of next-to-last 03461 3 07 000 0 2393 lda bf.nxt,3 get last 03462 4 10 036 3520 2394 tsy a.s004-*,* (setbpt) restore pte 03463 3332 00 0 2395 cx2a get character into a 03464 0 41 302 3766 2396 ldx3 pdatp-* get data ptr - last buffer 03465 3 47 200 0 2397 ldq 0,3,b.0 get last char 03466 2398 sca227 null store two chars into tib ext 03466 0 41 465 3153 2399 ldx3 scwrk3-* place to store next to last 03467 3 17 200 0 2400 sta 0,3,b.0 into tib ext 03470 0 41 464 3154 2401 ldx3 scwrk4-* and last char 03471 3 57 200 0 2402 stq 0,3,b.0 into tib ext, too end of binary card 00000052 03472 4 71 023 3515 2403 tra a.s001-*,* (=sca000)done 2404 * 2405 * 2406 * 03473 2407 sca260 null scan was a success 03473 0 03 037 3532 2408 ldx2 scsvx2-* get scan block address 03474 273 003 0 2409 iacx2 3 go to next block 03475 2410 scabak null 03475 4 07 025 3522 2411 lda a.s006-*,* .crbpe,* 03476 0 17 027 3525 2412 sta sccbpe-* save pte in case of another scan 03477 2413 return scanop 2414 * 2415 * 2416 * 03501 2417 sca300 null general scan failure 03501 0 03 031 3532 2418 ldx2 scsvx2-* get scan block address 03502 2 03 002 0 2419 ldx2 2,2 get branch point 03503 0 71 772 3475 2420 tra scabak-* 2421 * 2422 * 03504 000777 0 2423 l.s001 vfd 18/buftmk buffer tally mask 03505 2 00000 0 2424 l.s002 zero 0,b.0 for char addressing 03506 077777 0 2425 l.s003 oct 77777 for word addressing 03507 000077 0 2426 l.s004 oct 77 mask for 5xx values 03510 000777 0 2427 l.s005 oct 777 end of control string designator 03511 000700 0 2428 l.s006 oct 700 5xx mask 03512 000500 0 2429 l.s007 oct 500 test value 03513 040000 0 2430 l.s008 vfd 18/bfflst last buffer in message flag 03514 3 00000 0 2431 l.s009 ind 0,b.1 2432 03515 0 02674 1 2433 a.s001 ind sca000 03516 0 03767 1 2434 a.s002 ind adbyte 03517 0 03700 1 2435 a.s003 ind sccnxt 03520 0 32000 3 2436 a.s004 ind setbpt assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 77 scanop subroutine processes both inscan and outscn block 03521 0 07000 3 2437 a.s005 ind cvabs 03522 4 00710 0 2438 a.s006 ind .crbpe,* 03523 0 03764 1 2439 a.s007 ind pbufp 03524 0 03766 1 2440 a.s008 ind pdatp 2441 03525 2442 sccbpe bss 1 safe store for pte 03526 2443 scbcc bss 1 cumulative block check char 03527 2444 scbccf bss 1 block check in progress flag 03530 2445 tmask bss 1 place to save masked char. 03531 2446 scntyp bss 1 input or output scan indicator 2447 =0, input scan 2448 =1, output scan 03532 2449 scsvx2 bss 1 save area for scan block address 03533 2450 sccstr bss 1 control string byte address 03534 2451 sccnta bss 1 byte address - char count accumulation 03535 2452 sccntf bss 1 char count in progress flag 03536 2453 sccbuf bss 1 absolute ptr to next-to-last buffer 03537 2454 sccntl bss 1 virtual pointer to same assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 78 utilities for scan 2455 ttls utilities for scan 2456 * 2457 * scount increments tib extension byte designated by count scan subop 2458 * max accumulated count = 511 2459 * 03540 2460 scount subr sco,(a,x3) 03551 0 41 763 3534 2461 ldx3 sccnta-* get accumulation byte address end of binary card 00000053 03552 3 07 200 0 2462 lda 0,3,b.0 get accumulation byte 03553 773 001 0 2463 iaa 1 increment it 03554 0 34 734 3510 2464 ana l.s005-* =o777 03555 0 74 002 3557 2465 tze 2 overflow 03556 3 17 200 0 2466 sta 0,3,b.0 place it back in tib 03557 2467 return scount 2468 * 2469 * scinit subroutine initializes scan pointers 2470 * 03561 2471 scinit subr sci 03564 1 07 005 0 2472 lda t.icp,1 get input chain pointer 03565 0 20 744 3531 2473 szn scntyp-* check scan type - input or output 03566 0 74 002 3570 2474 tze sci010-* input 03567 1 07 012 0 2475 lda t.ocp,1 get output chain pointer 03570 2476 sci010 null 03570 4 10 730 3520 2477 tsy a.s004-*,* setbpt 03571 0 17 173 3764 2478 sta pbufp-* save virtual address 03572 0 20 172 3764 2479 szn pbufp-* 03573 0 74 006 3601 2480 tze scibak-* no chain, forget it 03574 0 56 171 3765 2481 stz ptally-* zero out scan tallies 03575 0 76 170 3765 2482 aos ptally-* pointing at char now 03576 773 002 0 2483 iaa bf.dta point to data 03577 0 37 706 3505 2484 ora l.s002-* 0,b.0 03600 0 17 166 3766 2485 sta pdatp-* save data pointers 03601 2486 scibak null 03601 0 56 726 3527 2487 stz scbccf-* zero block check flag 03602 0 56 733 3535 2488 stz sccntf-* zero char count in progress flag 03603 2489 return scinit 2490 * 2491 * sgtchr uses pointers to find current char and return it in a 2492 * it does not advance the pointers 2493 * output - return1 = no more chars 2494 * return2 = current char in a 2495 * 03605 2496 sgtchr subr sgt 03610 0 20 154 3764 2497 szn pbufp-* check buffer pointer 03611 0 74 004 3615 2498 tze sgtbak-* none exists 2499 03612 0 41 154 3766 2500 ldx3 pdatp-* 03613 3 07 200 0 2501 lda 0,3,b.0 03614 0 76 771 3605 2502 aos sgtchr-* did it 2503 03615 2504 sgtbak return sgtchr assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 79 utilities for scan 2505 * 2506 * schkcc gets next byte from control string and checks for 777,5xx values 2507 * if byte = 46x then its tib value is returned in a 2508 * output - return1 = byte in a = 777 or 5xx 2509 * return2 = byte in a 2510 * 03617 2511 schkcc subr sch,(x3) end of binary card 00000054 03625 0 10 053 3700 2512 tsy sccnxt-* get control string byte 03626 0 71 006 3634 2513 tra schbak-* 777 03627 0 71 005 3634 2514 tra schbak-* 5xx 03630 0 10 137 3767 2515 tsy adbyte-* check for 46x 03631 0 71 002 3633 2516 tra sch020-* not 46x 03632 3 07 200 0 2517 lda 0,3,b.0 get byte value 03633 0 76 764 3617 2518 sch020 aos schkcc-* return2 03634 2519 schbak null 03634 2520 return schkcc 2521 * 2522 * scnext bumps character pointers 2523 * returns to location after call if no more chars, 2524 * otherwise puts char in a and returns two locations past call 2525 * 03636 2526 scnext subr scn,(x3) 2527 * 03644 0 41 120 3764 2528 ldx3 pbufp-* any buffer at all? 03645 0 74 031 3676 2529 tze scnbak-* no, done 2530 03646 3 07 001 0 2531 lda bf.tly,3 get the buffer tally 03647 0 34 635 3504 2532 ana l.s001-* (=buftmk) only tally 03650 0 27 115 3765 2533 cmpa ptally-* any chars left to look at? 03651 0 75 002 3653 2534 tmi 2 no, over the limit now 03652 0 64 016 3670 2535 tnz scn020-* yes, process 2536 03653 3 07 001 0 2537 lda bf.flg,3 get flag bits 03654 0 31 637 3513 2538 cana l.s008-* (=bfflst) last buffer in msg? 03655 0 64 021 3676 2539 tnz scnbak-* yes, done 2540 03656 3 07 000 0 2541 lda bf.nxt,3 get fwd ptr 03657 0 74 017 3676 2542 tze scnbak-* none, give up 2543 03660 4 10 640 3520 2544 tsy a.s004-*,* setbpt 03661 0 17 103 3764 2545 sta pbufp-* new buffer 03662 773 002 0 2546 iaa bf.dta nake ptr to data 03663 0 37 622 3505 2547 ora l.s002-* add in char addressing 03664 0 17 102 3766 2548 sta pdatp-* save ptr 03665 0 56 100 3765 2549 stz ptally-* end of binary card 00000055 03666 4333 00 0 2550 cax3 copy ptr to x3 03667 0 71 004 3673 2551 tra scn030-* finish up 2552 03670 0 41 076 3766 2553 scn020 ldx3 pdatp-* load ptr to char assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 80 utilities for scan 03671 373 300 0 2554 iacx3 0,b.1 bump it 03672 0 50 074 3766 2555 stx3 pdatp-* save 03673 0 76 072 3765 2556 scn030 aos ptally-* bump tally 03674 3 07 200 0 2557 lda 0,3,b.0 load char 2558 03675 0 76 741 3636 2559 aos scnext-* indicate good bump 03676 2560 scnbak return scnext 2561 * 2562 * sccnxt places next byte from scan control string into a 2563 * output - return1 = end of control string - byte in a = 777 2564 * return2 = byte in a = 5xx 2565 * return3 = byte in a = xxx 2566 * 03700 2567 sccnxt subr scc,(x2) 03706 0 03 625 3533 2568 ldx2 sccstr-* get control string byte address 03707 2 07 200 0 2569 lda 0,2,b.0 get control string byte 03710 0 27 600 3510 2570 cmpa l.s005-* =o777 03711 0 74 012 3723 2571 tze sccbak-* end of control string 03712 273 300 0 2572 iacx2 0,b.1 advance to next byte 03713 0 13 620 3533 2573 stx2 sccstr-* save 03714 6333 00 0 2574 caq 03715 0 34 574 3511 2575 ana l.s006-* =o700 03716 0 27 574 3512 2576 cmpa l.s007-* =o500 - scan subop designator 03717 0 74 002 3721 2577 tze scc010-* 03720 0 76 760 3700 2578 aos sccnxt-* return 3 03721 0 76 757 3700 2579 scc010 aos sccnxt-* return 2 03722 7333 00 0 2580 cqa retrieve control string byte 03723 2581 sccbak return sccnxt 2582 * 2583 * 2584 * scend implements the end-of-chain subop, setting 2585 * the pointers to the last character in the chain 2586 * output - return1 = no chain 2587 * return2 = found it 2588 * 03725 2589 scend subr sce 03730 0 41 034 3764 2590 ldx3 pbufp-* get buffer pointer 03731 0 74 031 3762 2591 tze scebak-* fail if no chain 03732 3 07 001 0 2592 sce010 lda bf.flg,3 see if this is last one 03733 0 31 103 4036 2593 cana l.t006-* bfflst end of binary card 00000056 03734 0 64 007 3743 2594 tnz sce020-* yes it is 03735 3 20 000 0 2595 szn bf.nxt,3 not marked as such, is there another? 03736 0 74 005 3743 2596 tze sce020-* no, use this one 03737 3 07 000 0 2597 lda bf.nxt,3 yes, on to next 03740 4 10 560 3520 2598 tsy a.s004-*,* setbpt 03741 4333 00 0 2599 cax3 03742 0 71 770 3732 2600 tra sce010-* 03743 2601 sce020 null 03743 0 50 021 3764 2602 stx3 pbufp-* this is current one now 03744 3 07 001 0 2603 lda bf.tly,3 get tally assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 81 utilities for scan 03745 0 34 072 4037 2604 ana l.t007-* buftmk 03746 0 17 017 3765 2605 sta ptally-* 2606 03747 773 777 0 2607 iaa -1 less one for last char 03750 2335 01 0 2608 lrl 1 divide by two to get word offset 03751 0 06 013 3764 2609 ada pbufp-* make a pointer out of it 03752 0 06 066 4040 2610 ada l.t008-* bf.dta,b.0 03753 4333 00 0 2611 cax3 put into x3 for now 03754 0334 01 0 2612 lls 1 get low order bit back 03755 222 001 0 2613 icana 1 is low order bit on? 03756 0 74 002 3760 2614 tze 2 nope, ok 03757 373 300 0 2615 iacx3 0,b.1 bump by one char 03760 0 50 006 3766 2616 stx3 pdatp-* 03761 0 76 744 3725 2617 aos scend-* bump return pointer 03762 2618 scebak return scend 2619 * 2620 * 2621 * 03764 2622 even 2623 permanent scan pointers 03764 2624 pbufp bss 1 virtual address of current buffer 03765 2625 ptally bss 1 03766 2626 pdatp bss 1 virtual address of current character 2627 * 2628 * subroutine to form an address in q of a byte in tib extension 2629 * input - a = char value from scan control string 2630 * output - return1 = char value not 46x 2631 * return2 = x3 contains byte address 2632 * 03767 2633 adbyte subr adb,(a) 03775 6333 00 0 2634 caq save input value 03776 0 34 033 4031 2635 ana l.t001-* =o760 - check for 46x 03777 0 27 033 4032 2636 cmpa l.t002-* =o460 04000 0 74 002 4002 2637 tze adb010-* ok - form byte address 04001 0 71 025 4026 2638 tra adbbak-* input not 46x 04002 1 41 011 0 2639 adb010 ldx3 t.elnk,1 get tib extension address end of binary card 00000057 04003 0 64 002 4005 2640 tnz 2 one exists 04004 2641 adb020 die 14 04005 3 07 000 0 2642 lda 0,3 get length 04006 0336 01 0 2643 als 1 times 2 = char count 04007 0 17 021 4030 2644 sta adb100-* 04010 7333 00 0 2645 cqa 04011 0 34 023 4034 2646 ana l.t004-* =o17 - isolate byte designator 04012 0 27 016 4030 2647 cmpa adb100-* vs max + 1 byte position 04013 0 75 002 4015 2648 tmi 2 ok - within range 04014 0 71 770 4004 2649 tra adb020-* 04015 6333 00 0 2650 caq 04016 3333 00 0 2651 cx3a 04017 0 37 016 4035 2652 ora l.t005-* =0,b.1 - make into byte address 04020 4333 00 0 2653 cax3 assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 82 utilities for scan 04021 373 300 0 2654 adb030 iacx3 0,b.1 advance address - one byte 04022 573 777 0 2655 iaq -1 decrement byte position 04023 0 75 002 4025 2656 tmi adb040-* all done 04024 0 71 775 4021 2657 tra adb030-* 04025 2658 adb040 null 04025 0 76 742 3767 2659 aos adbyte-* advance return point 04026 2660 adbbak return adbyte 04030 2661 adb100 bss 1 work area 2662 2663 04031 000760 0 2664 l.t001 oct 760 mask 04032 000460 0 2665 l.t002 oct 460 byte position designator 04033 000077 0 2666 l.t003 oct 77 sub-buffer tally mask 04034 000017 0 2667 l.t004 oct 17 byte position mask 04035 3 00000 0 2668 l.t005 zero 0,b.1 address advance value 04036 040000 0 2669 l.t006 vfd 18/bfflst 04037 000777 0 2670 l.t007 vfd 18/buftmk 04040 2 00002 0 2671 l.t008 zero bf.dta,b.0 04041 2 00000 0 2672 l.t009 zero 0,b.0 04042 000514 0 2673 l.t010 oct 514 seteom 2674 * 2675 * utility to build a message 2676 * 04043 2677 bldutl subr bld 04046 473 040 0 2678 ilq bufsiz 04047 4 10 063 4132 2679 tsy a.m003-*,* (=getbfh) get a bufsiz buffer 04050 0 71 045 4115 2680 tra bldret-* no buffers available end of binary card 00000058 04051 0 17 056 4127 2681 sta bld099-* save absolute 04052 0 50 052 4124 2682 stx3 bld092-* and virtual address 2683 04053 3333 00 0 2684 cx3a 04054 0 06 764 4040 2685 ada l.t008-* (=bf.dta,b.0) point to data 04055 0 17 050 4125 2686 sta bld096-* save 2687 04056 2 07 001 0 2688 lda 1,2 get control string address 04057 0 37 762 4041 2689 ora l.t009-* (=0,b.0) 04060 4 17 050 4130 2690 sta a.m001-*,* (=sccstr) save for sccnxt subroutine 2691 04061 673 704 0 2692 ila -bufnch max number chars in buffer 04062 0 17 044 4126 2693 sta bld098-* save for count down 04063 0 56 040 4123 2694 stz bld090-* zero tally count 04064 4 10 045 4131 2695 bld010 tsy a.m002-*,* (=sccnxt) get next byte from control string 04065 0 71 023 4110 2696 tra bld040-* end of control string 04066 0 71 014 4102 2697 tra bld030-* control byte = 5xx 04067 0 10 700 3767 2698 tsy adbyte-* literal or tib byte? 04070 0 71 002 4072 2699 tra bld020-* must be a literal, store it 04071 3 07 200 0 2700 lda 0,3,b.0 get the char from the tib 04072 0 41 033 4125 2701 bld020 ldx3 bld096-* get ptr to data in buffer 04073 3 17 200 0 2702 sta 0,3,b.0 store char in buffer 04074 373 300 0 2703 iacx3 0,b.1 bump ptr assm 01 11-18-82 14.356 intp -- control table interpreter for mcs/fnp page 83 utilities for scan 04075 0 50 030 4125 2704 stx3 bld096-* 2705 04076 0 76 025 4123 2706 aos bld090-* bump tally 04077 0 76 027 4126 2707 aos bld098-* decrement max tally 04100 0 74 017 4117 2708 tze bld050-* control string too long 04101 0 71 763 4064 2709 tra bld010-* ok, get next byte 2710 04102 0 27 740 4042 2711 bld030 cmpa l.t010-* (=o514) - check for seteom 04103 0 64 014 4117 2712 tnz bld050-* error - not seteom 2713 04104 0 41 020 4124 2714 ldx3 bld092-* get buffer address 04105 0 07 731 4036 2715 lda l.t006-* (=bfflst) get last buffer in message flag 04106 3 72 001 0 2716 orsa bf.flg,3 set on in buffer 04107 0 71 755 4064 2717 tra bld010-* 2718 04110 0 41 014 4124 2719 bld040 ldx3 bld092-* get buffer address 04111 0 07 012 4123 2720 lda bld090-* get tally count 04112 0 74 005 4117 2721 tze bld050-* no chars placed in buffer 04113 3 72 001 0 2722 orsa bf.tly,3 place tally in buffer 04114 0 76 727 4043 2723 aos bldutl-* successful return 04115 2724 bldret return bldutl 2725 04117 0 07 010 4127 2726 bld050 lda bld099-* get buffer address end of binary card 00000059 04120 473 000 0 2727 ilq 0 04121 4 10 012 4133 2728 tsy a.m004-*,* (=frebfh) return buffer - error or not used 04122 0 71 773 4115 2729 tra bldret-* 2730 04123 2731 bld090 bss 1 tally count 04124 2732 bld092 bss 1 save area - virtual buffer address 04125 2733 bld096 bss 1 save area - data pointer 04126 2734 bld098 bss 1 max tally count 04127 2735 bld099 bss 1 absolute buffer address 2736 04130 0 03533 1 2737 a.m001 ind sccstr 04131 0 03700 1 2738 a.m002 ind sccnxt 04132 0 21000 3 2739 a.m003 ind getbfh 04133 0 15000 3 2740 a.m004 ind frebfh 2741 * 04134 2742 intend null end of binary card 00000060 2743 end 4134 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 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 84 octal symbol references by sequence no. 112 accin 64 64 577 4002 adb010 2639 2637 2639 4004 adb020 2641 2641 2649 4021 adb030 2654 2654 2657 4025 adb040 2658 2656 2658 4030 adb100 2661 2644 2647 2661 4026 adbbak 2660 2638 2660 3767 adbyte 2633 29 722 1501 2373 2379 2434 2515 2633 2659 2660 2698 2310 addnov 1602 649 1041 1595 1602 1618 3065 a.a001 2043 1990 2030 2043 2160 3066 a.a002 2044 2025 2044 3067 a.a003 2045 2029 2045 3070 a.a004 2046 1894 2046 3071 a.a005 2047 1942 1945 1956 1967 1976 1988 2009 2047 3072 a.a006 2048 1965 1984 2048 3073 a.a007 2049 1963 1982 2049 3074 a.a008 2050 1960 1977 2050 3075 a.a009 2051 1958 1973 2051 3076 a.a010 2052 2052 2076 3077 a.a011 2053 2003 2053 3100 a.a012 2054 1887 2013 2019 2054 3101 a.a013 2055 2015 2055 3102 a.a014 2056 1886 2056 336 a.c001 257 197 257 337 a.c002 258 107 128 153 258 1015 a.d001 649 632 649 1016 a.d002 650 650 681 1017 a.d003 651 651 699 1020 a.d004 652 614 652 1021 a.d005 653 480 489 570 653 1022 a.d006 654 654 733 748 1441 a.g001 1031 911 1004 1031 1442 a.g002 1032 912 1005 1032 1443 a.g003 1033 950 953 1023 1033 1074 1089 1153 1168 1171 1180 1193 1221 1233 1244 1254 1256 1265 1275 1286 1288 1300 1332 1334 1365 1367 1381 1444 a.g004 1034 1034 1096 1445 a.g005 1035 1035 1083 1446 a.g006 1036 961 1036 1110 1447 a.g007 1037 964 1037 1450 a.g008 1038 966 977 1038 1452 a.g010 1040 993 1012 1040 1453 a.g011 1041 1041 1241 1454 a.g012 1042 1042 1178 1455 a.g013 1043 1043 1214 1456 a.g014 1044 1044 1191 1457 a.g015 1045 848 895 983 1045 1201 1460 a.g016 1046 1016 1046 1461 a.g017 1047 1017 1047 2272 a.h001 1586 1569 1586 2273 a.h002 1587 1339 1587 2274 a.h003 1588 1340 1588 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 85 octal symbol references by sequence no. 2275 a.h004 1589 1343 1589 2276 a.h005 1590 1348 1590 2277 a.h006 1591 1378 1591 2300 a.h007 1592 1407 1592 2301 a.h008 1593 1416 1593 2302 a.h009 1594 1394 1396 1402 1432 1489 1493 1510 1518 1525 1527 1547 1561 1594 2303 a.h010 1595 1515 1595 2304 a.h011 1596 1530 1596 2305 a.h012 1597 1534 1597 2306 a.h013 1598 1538 1598 2307 a.h014 1599 1559 1599 2643 a.i001 1861 1836 1861 2008 2644 a.i002 1862 1737 1798 1815 1841 1849 1851 1862 4130 a.m001 2737 2690 2737 4131 a.m002 2738 2695 2738 4132 a.m003 2739 2679 2739 4133 a.m004 2740 2728 2740 3515 a.s001 2433 2255 2257 2275 2288 2340 2361 2403 2433 3516 a.s002 2434 2184 2201 2219 2232 2434 3517 a.s003 2435 2181 2190 2198 2435 3520 a.s004 2436 2310 2349 2359 2394 2436 2477 2544 2598 3521 a.s005 2437 2307 2437 3522 a.s006 2438 2411 2438 3523 a.s007 2439 2297 2314 2439 3524 a.s008 2440 2318 2440 3146 a.u001 2117 2099 2102 2117 3147 a.u002 2118 2089 2107 2118 3150 a.u003 2119 2067 2084 2088 2119 3151 a.u004 2120 2068 2092 2120 2334 annovp 1617 1614 1617 2335 anoret 1618 1612 1616 1618 2315 anosi 1602 1602 1604 2340 anosva 1620 1603 1609 1620 2337 anotmp 1619 1606 1607 1608 1610 1619 20000 bffbrk 40 40 1054 1000 bffhld 40 40 662 860 40000 bfflst 40 40 661 859 2041 2430 2669 4000 bffrpy 40 40 1052 2 bf.dta 40 40 1055 1106 1864 2027 2316 2483 2546 2671 1 bf.flg 40 40 482 491 851 852 1019 1203 1996 2000 2022 2162 2299 2537 2592 2716 0 bf.nxt 40 40 487 493 494 731 746 855 996 1147 1206 2005 2012 2018 2303 2309 2358 2393 2541 2595 2597 1 bf.siz 40 40 1208 1 bf.tly 40 40 572 897 985 1144 1825 1991 2032 2035 2320 2531 2603 2722 2 b.0 781 783 796 802 918 963 1050 1055 1115 1119 1120 1136 1453 1463 1470 1476 1479 1503 1580 1659 1673 1712 1739 1800 1821 1864 2042 2114 2154 2172 2186 2210 2235 2274 2286 2287 2338 2356 2385 2388 2391 2397 2400 2402 2424 2462 2466 2501 2517 2557 2569 2671 2672 2700 2702 3 b.1 965 1111 1116 1121 1137 1484 1657 1672 1682 1799 1822 2334 2386 2431 2554 2572 2615 2654 2668 2703 4064 bld010 2695 2695 2709 2717 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 86 octal symbol references by sequence no. 4072 bld020 2701 2699 2701 4102 bld030 2711 2697 2711 4110 bld040 2719 2696 2719 4117 bld050 2726 2708 2712 2721 2726 4123 bld090 2731 2694 2706 2720 2731 4124 bld092 2732 2682 2714 2719 2732 4125 bld096 2733 2686 2701 2704 2733 4126 bld098 2734 2693 2707 2734 4127 bld099 2735 2681 2726 2735 4115 bldret 2724 2680 2724 2729 4043 bldutl 2677 721 2677 2723 2724 14 brkhit 52 1587 307 brkopc 229 218 221 229 271 273 274 2661 bschar 1879 1039 1786 1879 74 bufnch 40 40 1839 1993 2692 40 bufsiz 40 40 1095 1835 2007 2351 2678 2 bufthr 40 40 531 777 buftmk 40 40 656 1049 2040 2423 2670 2630 cge010 1848 1845 1848 2634 cge020 1852 1847 1852 2605 cgetbf 1828 1744 1819 1828 1858 2647 citly 1868 1736 1801 1868 2653 clast 1872 1805 1824 1850 1852 1872 2654 clchar 1873 1751 1804 1873 2474 cop010 1751 1743 1751 2475 cop030 1753 1749 1753 1802 2505 cop040 1762 1762 1764 2511 cop050 1768 1757 1768 2514 cop060 1771 1771 1773 2524 cop070 1781 1754 1781 2535 cop080 1790 1787 1790 2543 cop090 1797 1766 1779 1784 1793 1797 2451 copybf 1721 1040 1721 1806 2650 cotly 1869 1817 1823 1840 1869 2576 cpc010 1821 1818 1821 2555 cpchar 1808 1758 1762 1771 1781 1808 1826 2651 cpos 1870 1746 1769 1776 1785 1791 1870 15 cr 68 68 921 2655 cspte 1874 1738 1797 1874 2652 ctab 1871 1748 1768 1775 1778 1792 1795 1871 1 ct.dev 90 90 615 1570 2656 ctpte 1875 1046 1814 1848 1853 1875 1 ctrl 42 652 1586 7 cvabs 58 654 2053 2437 1742 cvaddr 1309 28 1229 1238 1249 1261 1270 1280 1293 1296 1309 1320 1352 1373 1386 1389 1414 1430 1447 1473 1757 cvaret 1320 1312 1320 2346 dcw010 1634 1634 1650 1690 2361 dcw020 1646 1641 1646 2364 dcw030 1652 1643 1652 2367 dcw040 1656 1656 1663 1666 1668 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 87 octal symbol references by sequence no. 2370 dcw050 1658 1658 1683 2411 dcw060 1678 1671 1678 2416 dcw070 1685 1661 1675 1685 2423 dcw080 1692 1638 1692 2435 dcw090 1703 1700 1703 2436 dcwbak 1706 1702 1706 2341 dcwcnt 1623 411 1623 1706 2660 delchr 1878 1038 1759 1878 2 denq 44 554 1425 1591 37 dnshft 70 70 925 10 dt.brk 39 39 618 5 dt.cmt 39 39 1575 15 frebfh 50 1043 2740 16 frebuf 49 17 frelbf 43 546 668 1035 20 fremem 51 651 21 getbfh 50 1034 1861 2739 22 getbuf 49 2246 getcmt 1567 30 1036 1567 1578 23 getmem 51 650 24 gettib 59 258 12 globsw 96 27 96 608 2172 gocbyt 1503 1456 1503 2164 gocend 1497 1445 1460 1471 1497 2163 gocjls 1496 1466 1481 1496 2167 goclsn 1500 1464 1500 2165 gocmsk 1498 1441 1442 1467 1468 1498 2161 gocsva 1494 1438 1491 1494 2170 goctib 1501 1451 1477 1501 2166 gocval 1499 1440 1444 1450 1454 1482 1499 2162 gocvls 1495 1457 1459 1495 3 hcfg 47 887 4 hdcw 45 1709 10 hgeti 46 1032 1000 hslafl 74 74 665 1075 iadbyt 722 722 774 779 794 800 302 ibk001 224 220 224 305 ibkret 227 222 227 1074 ibldut 721 721 728 743 74 ibmeot 71 71 946 1257 icnfg 887 884 887 541 idcwc 411 408 411 716 idenq 554 536 551 554 578 711 ifrel 546 498 505 512 519 546 1034 ifrlbf 668 668 762 761 iglob 608 600 608 2440 ihdcw 1709 1701 1709 1073 iin010 720 621 627 635 642 645 687 689 701 708 716 720 737 755 767 785 806 808 824 833 839 847 870 873 885 256 iinchk 211 112 133 157 202 211 219 257 iintrp 212 116 137 178 207 212 226 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 88 octal symbol references by sequence no. 2441 ildcw 1710 1704 1710 723 imetrc 562 559 562 601 in1000 459 310 459 613 in1010 470 463 467 470 615 in1100 475 311 475 626 in1104 485 485 492 636 in1106 493 486 493 647 in1107 503 488 503 656 in1108 511 484 511 662 in1110 515 478 515 674 in1120 528 509 518 524 528 701 in1125 534 530 534 703 in1130 537 533 537 706 in1140 541 501 541 710 in1190 545 479 511 545 712 in1200 549 312 549 717 in1300 557 313 557 724 in1500 565 315 565 735 in1510 576 569 576 737 in1520 580 567 574 580 741 in1600 586 316 586 745 in1605 591 588 591 747 in1610 594 590 594 751 in1700 599 317 599 757 in1710 606 603 606 762 in1800 611 318 611 774 in1900 623 319 623 1000 in2000 629 320 629 1006 in2100 637 321 637 1013 in2110 643 640 643 1036 in2200 676 322 676 1052 in2210 688 682 688 1054 in2300 694 323 694 1062 in2310 700 695 700 1064 in2400 706 324 706 1070 in2500 714 325 714 1076 in2600 727 326 727 1105 in2605 736 736 750 1107 in2620 742 369 742 1117 in2670 754 729 744 754 1121 in2700 760 327 760 1127 in2710 766 761 766 1131 in2800 772 328 772 1143 in2810 782 780 782 1147 in2850 786 776 782 786 1150 in2860 787 787 797 803 1151 in2900 792 329 792 1156 in2910 797 795 797 1164 in2920 803 801 803 1170 in2930 807 804 807 1172 in3000 813 330 813 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 89 octal symbol references by sequence no. 1203 in3001 822 819 822 1204 in3002 823 821 823 1206 in3100 829 331 829 1213 in3101 834 830 834 1221 in3200 844 332 844 1223 in3210 846 846 854 856 1225 in3220 848 845 848 857 1237 in3280 859 853 859 1240 in3290 860 850 860 1241 in3300 865 333 865 1246 in3310 871 868 871 1250 in3400 878 334 878 1260 in3500 892 335 892 1274 in3510 907 894 907 1306 in3520 918 905 918 1331 in3530 937 932 937 1335 in3540 941 929 941 1344 in3590 949 909 914 922 924 926 936 940 949 1346 in3595 952 900 916 943 947 952 1350 in3600 958 336 958 1363 in3602 973 970 973 1365 in3603 976 972 976 1366 in3604 977 974 977 1372 in3610 983 983 997 1411 in3650 1000 981 1000 1424 in3680 1015 1002 1007 1015 1434 in3693 1025 998 1015 1025 1435 in3694 1027 959 1021 1027 1436 in3695 1028 988 995 1028 1474 in3700 1064 337 1064 1504 in3800 1079 338 1079 1510 in3810 1086 1081 1086 1514 in3900 1094 339 1094 1536 in3910 1119 1113 1119 1550 in3913 1131 1128 1131 1553 in3915 1135 1130 1135 1554 in3920 1136 1133 1136 1140 1573 in3991 1155 1100 1142 1155 1574 in3992 1156 1101 1151 1156 1575 in3993 1157 1103 1117 1122 1138 1143 1157 1576 in3994 1158 1099 1148 1158 1577 in4000 1163 340 1163 1603 in4010 1170 1165 1170 1605 in4100 1176 341 1176 1611 in4200 1187 342 1187 1616 in4201 1192 1189 1192 1620 in4300 1198 343 1198 1216 1643 in4310 1217 1199 1217 1650 in4390 1223 1205 1215 1223 1651 in4391 1224 1200 1212 1224 1652 in4400 1228 344 1228 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 90 octal symbol references by sequence no. 1660 in4500 1237 345 1237 1670 in4600 1248 346 1248 1677 in4601 1255 1252 1255 1701 in4700 1260 347 1260 1707 in4800 1269 348 1269 1716 in4900 1279 349 1279 1726 in4901 1287 1284 1287 1730 in5000 1292 350 1292 1741 in5001 1301 1294 1298 1301 1761 in5100 1324 351 1324 1774 in5101 1335 1328 1333 1335 1775 in5200 1339 352 1339 2002 in5300 1348 353 1348 2024 in5301 1366 1349 1366 2026 in5302 1368 1350 1354 1368 1374 1379 2027 in5400 1372 354 1372 2041 in5500 1385 355 1385 2055 in5501 1397 1387 1391 1397 2053 in5502 1395 1392 1395 2056 in5600 1401 356 359 1401 1409 2060 in5700 1407 357 1407 2063 in5800 1413 358 1413 2070 in6000 1429 360 1429 2074 in6100 1437 361 1437 2110 in6101 1450 1443 1450 2114 in6102 1454 1449 1452 1454 2122 in6103 1460 1460 1486 2142 in6104 1476 1469 1476 2146 in6105 1480 1475 1478 1480 2154 in6106 1487 1483 1487 2156 in6107 1490 1462 1465 1490 2173 in6200 1506 362 1506 2177 in6300 1512 363 1512 2205 in6400 1520 364 1520 2212 in6410 1526 1523 1526 2214 in6500 1529 365 1529 2216 in6600 1533 366 1533 2220 in6700 1537 367 1537 2231 in6800 1549 368 1549 2240 in6810 1557 1553 1557 2242 in6820 1559 1556 1559 1033 incall 667 396 667 813 822 829 831 832 1592 310 inchek 235 211 235 253 255 334 incret 255 247 255 1437 indblk 1029 913 917 1006 1009 1011 1029 1031 361 int010 277 272 277 380 390 392 409 418 436 445 456 469 472 543 553 561 582 593 596 605 607 720 1033 1594 362 int011 279 275 279 1588 373 int020 290 287 290 410 int030 299 296 299 370 520 int100 378 301 378 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 91 octal symbol references by sequence no. 522 int200 385 302 385 527 int210 391 388 391 531 int300 395 303 395 1589 536 int400 403 304 403 537 int500 407 305 407 542 int600 414 306 414 543 int601 416 416 1593 547 int700 422 307 422 552 int710 426 424 426 431 553 int720 429 429 434 561 int730 435 433 435 563 int800 439 308 439 571 int900 448 309 448 516 intbak 372 314 372 400 4134 intend 2742 31 2742 343 interp 269 212 269 373 0 intp 92 25 92 93 255 iscdsp 210 203 208 210 3162 ischkc 2131 1938 1952 2131 2170 3164 iscnex 2133 1966 1980 2036 2133 2261 1067 iscnop 709 707 709 715 3157 iscnxt 2128 1893 2128 2216 2229 3156 iscstr 2127 1891 2127 3160 iscsx2 2129 1885 2129 3161 isctyp 2130 1884 1987 2130 3163 isgtch 2132 1941 1955 1975 2132 2150 2168 174 ist010 159 159 170 173 201 ist020 167 163 167 127 istat 149 26 149 180 223 istbak 179 158 165 179 261 istbrk 217 26 217 227 546 istime 419 416 419 227 istsav 184 150 156 168 184 57 ite001 117 113 115 117 13 itest 104 26 104 117 230 itmout 193 26 193 260 itmtib 214 196 200 214 125 iwr001 138 134 138 61 iwrite 125 26 125 138 710 .crbpe 35 35 1047 1862 2054 2438 25 lctlck 53 1590 5 ldcw 45 1710 225 l.a001 182 162 182 226 l.a002 183 176 183 340 l.c001 260 250 260 341 l.c002 261 246 261 342 l.c003 262 224 262 1023 l.d001 656 573 656 1024 l.d002 657 539 657 1027 l.d005 660 660 778 799 1030 l.d006 661 485 661 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 92 octal symbol references by sequence no. 1031 l.d007 662 483 662 1032 l.d010 665 523 665 2442 l.e001 1712 1654 1712 2443 l.e002 1713 1660 1674 1713 2444 l.e003 1714 1662 1664 1714 2445 l.e004 1715 1687 1715 2446 l.e005 1716 1637 1716 2450 l.e007 1718 1693 1718 1462 l.g001 1049 898 986 1049 1463 l.g002 1050 1050 1107 1464 l.g003 1051 1051 1112 1465 l.g004 1052 1018 1052 1466 l.g005 1053 1053 1087 1467 l.g006 1054 1054 1204 1470 l.g007 1055 903 990 1055 1471 l.g008 1056 928 1056 1472 l.g009 1057 931 1057 2264 l.h001 1580 1576 1580 2265 l.h002 1581 1341 1581 2266 l.h003 1582 1377 1582 2267 l.h004 1583 1583 1605 2270 l.h005 1584 1584 1615 2271 l.h006 1585 1585 1617 2645 l.i001 1864 1856 1864 2646 l.i003 1866 1756 1783 1866 3062 l.k001 2040 1992 2040 3063 l.k002 2041 1997 2041 3064 l.k003 2042 2028 2042 3504 l.s001 2423 2321 2423 2532 3505 l.s002 2424 2317 2424 2484 2547 3510 l.s005 2427 2427 2464 2570 3511 l.s006 2428 2428 2575 3512 l.s007 2429 2429 2576 3513 l.s008 2430 2161 2300 2430 2538 3514 l.s009 2431 2352 2431 4031 l.t001 2664 2635 2664 4032 l.t002 2665 2636 2665 4034 l.t004 2667 2646 2667 4035 l.t005 2668 2652 2668 4036 l.t006 2669 2593 2669 2715 4037 l.t007 2670 2604 2670 4040 l.t008 2671 2610 2671 2685 4041 l.t009 2672 2672 2689 4042 l.t010 2673 2673 2711 3144 l.u001 2114 1890 2114 3145 l.u002 2115 1898 2115 0 macwk1 2677 104 117 125 138 149 180 217 227 235 255 269 373 1309 1320 1567 1578 1602 1618 1623 1706 1721 1806 1808 1826 1828 1858 1882 2413 2460 2467 2471 2489 2496 2504 2511 2520 2526 2560 2567 2581 2589 2618 2633 2660 2677 2724 1 macwk2 2677 104 125 149 217 235 269 1309 1567 1602 1623 1721 1808 1828 1882 2460 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 93 octal symbol references by sequence no. 2471 2496 2511 2526 2567 2589 2633 2677 2 macwk3 295 110 131 156 176 200 295 6 macwk4 295 110 131 156 176 200 295 6 maxdcw 1628 1628 1644 106 maxop 370 288 370 2231 mcal2 1550 33 1550 2221 mcall 1540 32 1540 2245 mentry 1564 1541 1545 1564 26 meterc 44 562 11 mincd 60 1597 12 mincs 60 1596 22 m.nim 37 37 1554 30 m.nom 37 37 1557 2221 mjoin 1539 1531 1535 1539 6 mmsg 60 1599 3 modnum 93 93 110 131 156 176 200 239 243 252 282 291 295 398 404 427 678 775 815 836 882 1068 1097 1315 1647 1676 1681 1837 1900 1904 1935 1939 1953 2037 2086 2100 2103 2147 2151 2171 2200 2218 2231 2243 2246 2269 2281 2293 2372 2641 2243 mret2 1560 1550 1560 2227 mret 1546 1540 1546 5 mt.blk 83 83 176 295 3 mt.sta 81 81 156 4 mt.tim 82 82 200 1 mt.tst 79 79 110 2 mt.wrt 80 80 131 27 mupdat 60 1598 776777 ntfrpn 73 73 1053 777776 ntfwrt 72 72 657 3764 pbufp 2624 2043 2126 2439 2478 2479 2497 2528 2545 2590 2602 2609 2624 3766 pdatp 2626 2045 2327 2328 2335 2387 2396 2440 2485 2500 2548 2553 2555 2616 2626 3765 ptally 2625 2044 2481 2482 2533 2549 2556 2605 2625 30 puteco 55 1042 2674 sca000 1892 1892 1946 1962 1985 2069 2078 2094 2112 2139 2155 2163 2173 2211 2237 2433 2741 sca001 1935 1896 1935 2711 sca002 1908 1906 1908 1933 30 sca003 1933 1902 1933 2700 sca004 1898 1895 1898 2192 2742 sca010 1937 1910 1937 2752 sca020 1951 1911 1951 2757 sca022 1957 1957 1968 2777 sca030 1979 1912 1974 1979 3001 sca031 1982 1982 2033 2038 3005 sca032 1987 1981 1987 3056 sca033 2035 1994 2035 3107 sca040 2065 1913 2065 3113 sca050 2075 1914 2075 3116 sca060 2082 1915 2082 3127 sca070 2098 1916 2098 3165 sca080 2137 1917 2137 3107 sca090 2066 1918 2066 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 94 octal symbol references by sequence no. 3167 sca100 2143 1919 2143 3116 sca110 2083 1920 2083 3200 sca120 2159 1921 2159 3204 sca130 2167 1922 2167 3212 sca140 2177 1923 2177 3215 sca144 2181 2181 2189 3226 sca146 2190 2188 2190 2193 3223 sca148 2187 2185 2187 3232 sca150 2197 1924 2197 3234 sca152 2200 2200 2202 3241 sca154 2205 2205 2224 3250 sca160 2215 1925 2215 3252 sca162 2218 2218 2220 2223 3261 sca170 2228 1926 2228 3263 sca172 2231 2231 2233 3272 sca180 2241 1927 2241 3302 sca182 2250 2250 2263 3317 sca190 2267 1928 2267 3327 sca200 2279 1929 2279 3340 sca210 2292 1930 2292 3346 sca211 2299 2299 2312 3362 sca212 2314 2301 2304 2314 3404 sca213 2336 2332 2336 3412 sca214 2347 2323 2347 3344 sca215 2297 2297 2383 3432 sca216 2364 2295 2336 2354 2364 2369 2382 3433 sca220 2368 1931 2368 3436 sca222 2372 2372 2374 2377 2378 2380 3452 sca224 2384 2337 2384 3457 sca226 2390 2355 2390 3466 sca227 2398 2389 2398 2772 sca230 1972 1932 1972 3473 sca260 2407 2046 2191 2407 3501 sca300 2417 2047 2077 2090 2093 2108 2111 2169 2179 2182 2183 2207 2249 2262 2272 2284 2342 2348 2362 2417 3475 scabak 2410 2410 2420 3104 scacur 2059 2010 2017 2059 2662 scanop 1882 709 1882 2413 3103 scaprv 2058 2004 2014 2058 3106 scasva 2061 1998 2021 2061 3105 scasvn 2060 2006 2011 2060 3526 scbcc 2443 2050 2120 2153 2253 2443 3527 scbccf 2444 2051 2119 2145 2149 2251 2444 2487 3721 scc010 2579 2577 2579 3723 sccbak 2581 2571 2581 3525 sccbpe 2442 2056 2412 2442 3536 sccbuf 2453 2298 2308 2347 2453 3534 sccnta 2451 2234 2451 2461 3535 sccntf 2452 2049 2236 2258 2452 2488 3537 sccntl 2454 2350 2357 2392 2454 3700 sccnxt 2567 2128 2370 2376 2435 2512 2567 2578 2579 2581 2738 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 95 octal symbol references by sequence no. 3533 sccstr 2450 2127 2450 2568 2573 2737 3732 sce010 2592 2592 2600 3743 sce020 2601 2594 2596 2601 3762 scebak 2618 2591 2618 3725 scend 2589 2052 2589 2617 2618 3633 sch020 2518 2516 2518 3634 schbak 2519 2513 2514 2519 3617 schkcc 2511 2117 2131 2222 2242 2245 2268 2280 2292 2511 2518 2520 3570 sci010 2476 2474 2476 3601 scibak 2486 2480 2486 3561 scinit 2471 2138 2471 2489 3670 scn020 2553 2535 2553 3673 scn030 2556 2551 2556 3676 scnbak 2560 2529 2539 2542 2560 3636 scnext 2526 2133 2526 2559 2560 3531 scntyp 2446 2130 2446 2473 3540 scount 2460 2048 2260 2460 2467 3532 scsvx2 2449 2129 2408 2418 2449 3112 scwrk1 2071 1940 1944 1954 1961 2071 3152 scwrk2 2122 2101 2105 2110 2122 2203 2209 2221 2270 2273 2282 2285 3153 scwrk3 2123 2104 2109 2123 2180 2187 2205 2208 2244 2254 2375 2399 3154 scwrk4 2124 2124 2247 2256 2294 2339 2360 2381 2401 31 secdsp 43 210 32 setbpt 57 653 1045 2055 2436 33 setcct 54 1044 34 setime 43 419 35 setptw 56 257 22 sf.noc 38 38 526 3615 sgtbak 2504 2498 2504 3605 sgtchr 2496 2118 2132 2178 2206 2248 2271 2283 2496 2502 2504 1035 sndflg 671 476 503 514 529 671 105 sndout 65 65 535 40 space 67 67 1770 777004 statop 62 62 182 2657 tabchr 1877 1037 1753 1877 1 tfbkpt 36 36 261 262 1581 4000 tfblak 36 36 1057 100 tfofc 36 36 1056 1000 tfrpon 36 36 73 4000 tftbec 36 36 1866 1 tfwrit 36 36 72 32 t.brkp 36 36 619 35 t.cntr 36 36 625 630 633 639 3 t.cur 36 36 110 131 156 200 241 399 23 t.dcwa 36 36 1632 1696 24 t.dcwl 36 36 1694 1697 11 t.elnk 36 36 676 685 694 696 1313 1318 2639 2 t.flg2 36 36 443 454 465 927 1088 36 t.flg3 36 36 225 245 1342 1 t.flg 36 36 441 451 461 540 1755 1782 5 t.icp 36 36 566 745 749 760 763 893 980 1198 1207 1217 1555 2472 assm 01 11-18-82 14.365 intp -- control table interpreter for mcs/fnp page 96 octal symbol references by sequence no. 7 t.icpl 36 36 765 1211 6 t.ilst 36 36 568 764 1219 4 t.line 36 36 106 127 152 522 866 879 907 1000 1187 1698 52 t.metr 36 36 1542 1551 16 t.ocnt 36 36 532 538 12 t.ocp 36 36 477 495 496 504 506 513 587 730 734 844 1066 1070 1146 1149 1558 2475 13 t.ocur 36 36 499 507 517 520 589 46 t.ofch 36 36 930 14 t.olst 36 36 500 508 521 11 t.rcp 36 36 978 1065 1071 1080 1084 1164 1742 1844 1846 22 t.reta 36 36 818 820 834 837 838 1408 30 t.sfcm 36 36 525 17 t.type 36 36 387 423 613 616 941 968 1126 1571 1473 tmpchr 1059 920 935 939 944 1059 13 trace 48 110 131 156 176 200 295 100 tr.blk 88 88 176 295 40 tr.ent 87 87 110 131 156 200 34 upshft 69 69 923 777003 waitop 63 63 260 ** 47782 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