ASSEMBLY LISTING OF SEGMENT >spec>h>3.17>util.alm ASSEMBLED ON: 11/29/83 1537.1 mst Tue OPTIONS USED: list ASSEMBLED BY: ALM Version 6.6 November 1982 ASSEMBLER CREATED: 09/21/83 1227.3 mst Wed  1 " ***********************************************************  2 " * *  3 " * Copyright, (C) Honeywell Information Systems Inc., 1982 *  4 " * *  5 " ***********************************************************  6 " The BOS Utility Package.  7 " This package contains all utility subroutines 8 " in general use by BOS commands. It is loaded 9 " by BOS main control at location 12000(8) following  10 " the command.  11  12 " Created in November 1971 by N. I. Morris. 13 " Modified 10/17/75 by Noel I. Morris  14 " Modified 4/30/80 by Mike Grady to fix time pkg.  15 " Modified by Sherman D. Sprague 2/11/81 for DPS8 support. 16 " Modified November 1981 by C. Hornig to remove iom_connect_rel.  17 " Modified January 1982 by J. Bongiovanni to add getport_info  18 " Modified April 1982 by Sherman D. Sprague to add getmpc  19  20 include bosequ 1-1 " Begin include file ...... bosequ.incl.alm 1-2 " Modified 8/25/76 by N. I. Morris  1-3 " Modified 8/79 by R.J.C. Kissel to expand BOS. 1-4 " Modified November 1981 by C. Hornig to add pgmorg.  1-5 " Modified October 1982 by J. Bongiovanni to take it out  1-6  000000 1-7 bool ds,0 descriptor segment  000001 1-8 bool tmp,1 temp seg  000002 1-9 bool bf,2 buffer segment for save/restor  000003 1-10 bool pgm,3 program in control 000004 1-11 bool xs1,4 spare segment  000005 1-12 bool xs2,5 spare segment  000005 1-13 bool fgb,5 flagbox segment  000006 1-14 bool com,6 common 000007 1-15 bool mem,7 all memory 1-16  000017 1-17 equ arglen,15 max number of args from scan  1-18  004000 1-19 bool runcom_bit,4000 runcom bit in dir entry  002000 1-20 bool firmware_bit,2000 firmware bit in dir entry  1-21  012000 1-22 bool utilorg,12000 origin of utility package  1-23  1-24 " End of include file ...... bosequ.incl.alm  21  22  012000 23 org utilorg  24  25 " 26  012000 27 pagectl:  012000 28 bss ,1 for printer carriage control  29  012001 30 line:  012001 31 bss ,31 for line images  32  012040 33 arg:  012040 34 bss ,arglen argument list 012057 aa 777777 777777 35 dec -1 36  012060 37 darg:  012060 38 bss ,arglen decimal converted arguments  012077 aa 777777 777777 39 dec -1 40  012100 41 earg:  012100 42 bss ,arglen EIS descriptors for alpha args  012117 aa 777777 777777 43 dec -1 44  45 eight  012120 46 scuinfo:  012120 47 bss ,8 scu data stored by intflt because of unexpected fault  48  49  50 " 51  52 " Transfer Vector for Subroutine Calls. 53  012200 54 org utilorg+128  55  012200 0a 012314 7100 00 56 tra scan  012201 0a 012501 0000 00 57 arg arg_count  012202 0a 012510 7100 00 58 tra nextline  012203 0a 013031 0000 00 59 arg nlraw  012204 0a 013052 7100 00 60 tra search 012205 0a 013065 7100 00 61 tra makefil  012206 0a 013136 7100 00 62 tra ldcom  012207 0a 013173 7100 00 63 tra getsec 012210 aa 000000 7100 12 64 tra 0,2 cvinit  012211 0a 013431 7100 00 65 tra rdev  012212 0a 013446 7100 00 66 tra wdev  012213 0a 013472 7100 00 67 tra phybos 012214 0a 013516 7100 00 68 tra bosphy 012215 0a 014347 0000 00 69 arg phyadd 012216 0a 013554 7100 00 70 tra mulbos 012217 0a 013532 7100 00 71 tra bosmul 012220 0a 014226 7100 00 72 tra lookup_devmodel  012221 0a 013257 7100 00 73 tra makesdw  012222 0a 013574 7100 00 74 tra argbos 012223 0a 014352 7100 00 75 tra argmul 012224 0a 014561 0000 00 76 arg am.dvt 012225 0a 014557 0000 00 77 arg am.first  012226 0a 014560 0000 00 78 arg am.last  012227 0a 014610 0000 00 79 arg fs_dev.dev_type_names-1  012230 0a 014653 0000 00 80 arg fs_dev.sect_per_cyl-1  012231 0a 014626 0000 00 81 arg fs_dev.sect_per_dev-1  012232 0a 014707 0000 00 82 arg fs_dev.rec_per_dev-1  012233 0a 014716 0000 00 83 arg fs_dev.amaxio-1  012234 0a 014726 7100 00 84 tra rdsec  012235 0a 014730 7100 00 85 tra wtsec  012236 0a 015354 0000 00 86 arg disk_brief 012237 0a 015376 7100 00 87 tra itaper 012240 0a 015475 7100 00 88 tra itapew 012241 0a 015562 7100 00 89 tra erpt  012242 0a 015774 7100 00 90 tra ercv  012243 0a 015777 020124 91 desc6a erbuf,14*6  012244 0a 016105 7100 00 92 tra type  012245 0a 016201 7100 00 93 tra ttyinit  012246 0a 016273 7100 00 94 tra readcd 012247 0a 016457 7100 00 95 tra readtty  012250 0a 016630 7100 00 96 tra getprt 012251 0a 017345 7100 00 97 tra punch  012252 0a 017371 7100 00 98 tra octwd  012253 0a 017431 7100 00 99 tra geas  012254 0a 017440 0000 00 100 arg geastab  012255 0a 016221 7100 00 101 tra asge  012256 0a 016233 0000 00 102 arg asgetab  012257 0a 017500 7100 00 103 tra ljust  012260 0a 017507 7100 00 104 tra rjust  012261 0a 017516 7100 00 105 tra bzel  012262 0a 017530 7100 00 106 tra stripa 012263 0a 017543 7100 00 107 tra stripg 012264 0a 017616 7100 00 108 tra getconf  012265 0a 017621 7100 00 109 tra getmore  012266 0a 017625 7100 00 110 tra getperiph  012267 0a 017640 7100 00 111 tra rd_clock  012270 0a 017641 7100 00 112 tra cv_clock  012271 0a 020036 7100 00 113 tra init_io  012272 0a 020151 7100 00 114 tra connect_iom  012273 0a 017306 7100 00 115 tra getmpc 012274 0a 020206 7100 00 116 tra check_status  012275 0a 020430 7100 00 117 tra get_special_interrupt  012276 0a 020432 7100 00 118 tra get_status_interrupt  012277 0a 020441 7100 00 119 tra xio_wait  012300 0a 020565 7100 00 120 tra initint  012301 0a 020641 0000 00 121 arg wantflt  012302 0a 020756 0000 00 122 arg intno  012303 0a 020757 0000 00 123 arg intrpts1  012304 0a 017410 7100 00 124 tra hexwd  012305 0a 013742 7100 00 125 tra find_disk  012306 0a 014017 7100 00 126 tra find_root  012307 0a 014042 7100 00 127 tra find_part  012310 0a 020204 7100 00 128 tra check_status_no_stat  012311 0a 020412 7100 00 129 tra check_special_status  012312 0a 022521 7100 00 130 tra check_cpu_type 012313 0a 022530 7100 00 131 tra getportinfo  132  133  134 " 135  136 include scan  2-1 " 2-2 " Begin include file ...... scan.incl.alm  2-3 " tsx2 scan does command scan on 14 wds at line.  2-4 " Arguments are placed in arg (i). Numbers are converted as octal  2-5 " unless followed by decimal point. Decimal conversion of number  2-6 " can always be found in darg (i). Number of args is stored in arg_count.  2-7 " 6-bit Alpha descriptor for alpha args is in earg (i). 2-8 "  2-9 " Modified 8/7/74 by N. I. Morris  2-10 " EIS args added 7/11/75 by B. Greenberg  2-11  012314 0a 012506 7444 00 2-12 scan: sar4 scar4 Save AR4. 012315 0a 012443 7400 00 2-13 stx0 scx0 Save X0.  2-14  012316 aa 077000 1004 00 2-15 mlr (),(),fill(77) clear args  012317 0a 012317 020000 2-16 desc6a *,0 012320 0a 012040 020132 2-17 desc6a arg,arglen*6  2-18  012321 aa 077000 1004 00 2-19 mlr (),(),fill(77) clear decimal conversion, too  012322 0a 012322 020000 2-20 desc6a *,0 012323 0a 012060 020132 2-21 desc6a darg,arglen*6  2-22  012324 0a 012507 2350 00 2-23 lda scdesc6 clear out earg  012325 aa 000000 6270 00 2-24 eax7 0 012326 aa 036200 5202 01 2-25 rpt arglen,1  012327 0a 012100 7550 17 2-26 sta earg,7 2-27  012330 aa 000000 6270 00 2-28 eax7 0 X7 is arg pointer  012331 aa 777777 6260 00 2-29 eax6 -1 X6 is line offset 012332 aa 000000 6250 00 2-30 eax5 0 set state to 0 2-31  012333 aa 000001 6260 16 2-32 scl1: eax6 1,6 step to next input character  012334 aa 000124 1060 03 2-33 scl2: cmpx6 84,du are we finished? 012335 0a 012340 6040 00 2-34 tmi scget if not, go get next 012336 aa 000003 2360 07 2-35 ldq 3,dl make believe it's an asterisk  012337 0a 012350 7100 00 2-36 tra scgo ..  2-37  012340 aa 000000 1014 16 2-38 scget: mrl (x6),(),fill(0) get one character  012341 0a 012001 020001 2-39 desc6a line,1  012342 0a 012503 020006 2-40 desc6a scchar,6  2-41  012343 0a 012503 2350 00 2-42 lda scchar character in AL  012344 aa 000000 1014 05 2-43 mrl (al),(),fill(0) get the character type 012345 0a 012452 040001 2-44 desc4a sctypes,1  012346 0a 012504 020006 2-45 desc6a sctype,6  2-46  012347 0a 012504 2360 00 2-47 ldq sctype character type in QL  012350 aa 000006 4020 07 2-48 scgo: mpy 6,dl multiply by 6  012351 0a 012462 2350 15 2-49 lda scstate,5 get table entry for this state  012352 aa 000006 7750 06 2-50 alr 6,ql grab correct entry for this type 012353 aa 000077 3750 07 2-51 ana =o77,dl and mask  012354 0a 012466 7100 25 2-52 tra scdisp,al* dispatch on action code 2-53  2-54  2-55 " 012355 0a 012040 4500 17 2-56 scnum1: stz arg,7 start numeric field  012356 0a 012445 7050 00 2-57 tsx5 scstartf prepare to start field  2-58  012357 0a 012040 2360 17 2-59 scnum2: ldq arg,7 octal conversion 012360 aa 000003 7360 00 2-60 qls 3 ..  012361 0a 012503 2760 00 2-61 orq scchar insert new character  012362 0a 012040 7560 17 2-62 stq arg,7 ..  2-63  012363 0a 012060 2360 17 2-64 ldq darg,7 decimal conversion 012364 aa 000002 7360 00 2-65 qls 2 ..  012365 0a 012060 0360 17 2-66 adlq darg,7 ..  012366 aa 000001 7360 00 2-67 qls 1 ..  012367 0a 012503 0360 00 2-68 adlq scchar add in new digit  012370 0a 012060 7560 17 2-69 stq darg,7 .. 2-70  012371 aa 000001 6250 00 2-71 eax5 1 new state is 1 012372 0a 012333 7100 00 2-72 tra scl1 loop 2-73  2-74  012373 0a 022656 2350 00 2-75 scalph1: lda =h " start character field  012374 0a 012040 7550 17 2-76 sta arg,7 start with blanks  012375 0a 012445 7050 00 2-77 tsx5 scstartf prepare to start field  2-78  012376 0a 012040 2350 17 2-79 scalph2: lda arg,7 process character  012377 aa 000006 7350 00 2-80 als 6 make room for new one  012400 0a 012503 2750 00 2-81 ora scchar insert it  012401 0a 012040 7550 17 2-82 sta arg,7 ..  2-83  012402 aa 000002 6250 00 2-84 eax5 2 new state is 2 012403 0a 012333 7100 00 2-85 tra scl1 loop 2-86  2-87  012404 0a 012060 2350 17 2-88 scdec: lda darg,7 make number decimal  012405 0a 012040 7550 17 2-89 sta arg,7 ..  012406 aa 000001 6260 16 2-90 eax6 1,6 force character index to advance 2-91  012407 0a 012502 2340 00 2-92 scnum3: szn scsign finish numeric field  012410 0a 012414 6000 00 2-93 tze scalph3 make negative, if required  012411 aa 000000 2360 07 2-94 ldq 0,dl clear Q  012412 0a 012060 1560 17 2-95 ssq darg,7 make negative  012413 0a 012040 1560 17 2-96 ssq arg,7 ..  2-97  012414 aa 000000 6350 16 2-98 scalph3: eaa 0,6 get charx of n+1st char  012415 0a 012505 1350 00 2-99 sbla scatemp get length of field  012416 aa 000022 7710 00 2-100 arl 18 to lower,  012417 aa 007777 3750 07 2-101 ana =o7777,dl just to make sure.. 012420 0a 012100 2550 17 2-102 orsa earg,7 move in length  2-103  012421 0a 012502 4500 00 2-104 stz scsign clear negative indicator  012422 aa 000001 6270 17 2-105 eax7 1,7 step to next arg 012423 aa 000017 1070 03 2-106 cmpx7 arglen,du all full? 012424 0a 012440 6050 00 2-107 tpl scret if so, all finished 2-108  012425 aa 000000 6250 00 2-109 eax5 0 new state is 0 012426 0a 012334 7100 00 2-110 tra scl2 loop without advancing character index  2-111  2-112 " 2-113  012427 0a 012502 7500 00 2-114 scminus1: stc2 scsign set minus sign indicator 012430 0a 012040 4500 17 2-115 stz arg,7 clear conversion  012431 0a 012445 7050 00 2-116 tsx5 scstartf prepare to start new field  2-117  012432 aa 000003 6250 00 2-118 eax5 3 new state is 3 012433 0a 012333 7100 00 2-119 tra scl1 loop 2-120  012434 0a 022657 2350 00 2-121 scminus2: lda =h - character minus 012435 0a 012040 7550 17 2-122 sta arg,7 set it  2-123  012436 aa 000002 6250 00 2-124 eax5 2 new state is 2 012437 0a 012334 7100 00 2-125 tra scl2 loop without advancing character index  2-126  2-127  012440 aa 000001 1670 03 2-128 scret: sbx7 1,du  012441 0a 012501 7470 00 2-129 stx7 arg_count Make number of args available. 012442 0a 012506 7644 00 2-130 lar4 scar4 Restore AR4.  012443 0a 012443 6200 00 2-131 scx0: eax0 * Restore X0.  012444 aa 000000 7100 12 2-132 tra 0,2  2-133  2-134  2-135  012445 0a 012060 4500 17 2-136 scstartf: stz darg,7 clear decimal conversion  2-137  012446 aa 412001 5014 16 2-138 a6bdx 4|line,6 get pointer to start of string 012447 0a 012100 5444 17 2-139 ara4 earg,7 set descriptor to start  012450 0a 012505 7460 00 2-140 stx6 scatemp save for length computation  012451 aa 000000 7100 15 2-141 tra 0,5 return to caller  2-142  2-143 " 2-144  2-145 " Tables and storage.  2-146 "  2-147 " Types are:  2-148 " 0 blank 3 asterisk  2-149 " 1 minus 4 number  2-150 " 2 decimal point 5 other  2-151 "  2-152  012452 2-153 sctypes: " Character type table.  012452 aa 104104 104104 2-154 vfd 5/4,4/4,5/4,4/4,5/4,4/4,5/4,4/4 (00-07)  012453 aa 104125 125125 2-155 vfd 5/4,4/4,5/5,4/5,5/5,4/5,5/5,4/5 (10-17)  012454 aa 005125 125125 2-156 vfd 5/0,4/5,5/5,4/5,5/5,4/5,5/5,4/5 (20-27)  012455 aa 125122 125125 2-157 vfd 5/5,4/5,5/5,4/2,5/5,4/5,5/5,4/5 (30-37)  012456 aa 125125 125125 2-158 vfd 5/5,4/5,5/5,4/5,5/5,4/5,5/5,4/5 (40-47)  012457 aa 125025 065125 2-159 vfd 5/5,4/5,5/1,4/5,5/3,4/5,5/5,4/5 (50-57)  012460 aa 125125 125125 2-160 vfd 5/5,4/5,5/5,4/5,5/5,4/5,5/5,4/5 (60-67)  012461 aa 125125 125125 2-161 vfd 5/5,4/5,5/5,4/5,5/5,4/5,5/5,4/5 (70-77)  2-162  012462 2-163 scstate: " State table.  012462 aa 000302 120102 2-164 vfd 6/0,6/3,6/2,6/10,6/1,6/2 0 - searching for next field  012463 aa 060610 060406 2-165 vfd 6/6,6/6,6/8,6/6,6/4,6/6 1 - processing numeric field  012464 aa 070505 070505 2-166 vfd 6/7,6/5,6/5,6/7,6/5,6/5 2 - processing character field 012465 aa 111111 110411 2-167 vfd 6/9,6/9,6/9,6/9,6/4,6/9 3 - processing minus sign  2-168  012466 2-169 scdisp: " Action table. 012466 0a 012333 7100 00 2-170 tra scl1 0 - ignore character 012467 0a 012355 7100 00 2-171 tra scnum1 1 - start numeric field  012470 0a 012373 7100 00 2-172 tra scalph1 2 - start character field 012471 0a 012427 7100 00 2-173 tra scminus1 3 - process minus sign  012472 0a 012357 7100 00 2-174 tra scnum2 4 - process numeric character  012473 0a 012376 7100 00 2-175 tra scalph2 5 - process non-numeric character 012474 0a 012407 7100 00 2-176 tra scnum3 6 - complete numeric field *  012475 0a 012414 7100 00 2-177 tra scalph3 7 - complete character field *  012476 0a 012404 7100 00 2-178 tra scdec 8 - force number decimal  012477 0a 012434 7100 00 2-179 tra scminus2 9 - store minus character *  012500 0a 012440 7100 00 2-180 tra scret 10 - stop  2-181 " * These actions cause current character to be reexamined. 2-182  2-183  012501 2-184 arg_count:bss ,1  012502 aa 000000 000000 2-185 scsign: oct 0  012503 2-186 scchar: bss ,1  012504 2-187 sctype: bss ,1  012505 aa 000000 000000 2-188 scatemp: oct 0 charx of first char of field  012506 2-189 scar4: bss ,1 save for ar4 012507 0a 012001 020000 2-190 scdesc6: desc6a line,0 prototype descriptor for arg  2-191  2-192 " End of include file ...... scan.incl.alm  2-193  137  138 include nextline  3-1 "  3-2 " Begin include file ...... nextline.incl.alm  3-3 " Modified 6/9/76 by Noel I. Morris 3-4 " Last modified by Sherman D. Sprague 02/11/81 for DPS8 support.  3-5 "  3-6 " tsx2 nextline to fill line with next input line  3-7 " from tty, cards, or macro file 3-8  012510 0a 013016 7400 00 3-9 nextline: stx0 nlx save xrs  012511 0a 013017 7410 00 3-10 stx1 nlx+1 012512 0a 013020 7420 00 3-11 stx2 nlx+2 3-12  012513 aa 6 02021 2351 00 3-13 nlagain: lda com|inputsw read from tty, cards, or macro file  012514 aa 000014 7710 00 3-14 arl 18-6  012515 0a 012516 7100 01 3-15 tra *+1,au 012516 0a 012521 7100 00 3-16 tra nltty  012517 0a 012524 7100 00 3-17 tra nlcd  012520 0a 012533 7100 00 3-18 tra nlma  3-19  3-20  012521 0a 016457 7020 00 3-21 nltty: tsx2 readtty read from tty  012522 0a 013023 7100 00 3-22 tra nlsw null line  012523 0a 012745 7100 00 3-23 tra nlscan good line, scan it 3-24  3-25  012524 0a 016273 7020 00 3-26 nlcd: tsx2 readcd read a card  012525 0a 013023 7100 00 3-27 tra nlsw end of deck  012526 0a 012741 7100 00 3-28 tra nlpt good read, print it  3-29  3-30  012527 0a 013016 7400 00 3-31 nxtlinea: stx0 nlx here to scan line already read in  012530 0a 013017 7410 00 3-32 stx1 nlx+1 012531 0a 013020 7420 00 3-33 stx2 nlx+2 012532 0a 012745 7100 00 3-34 tra nlscan check for 'tty', etc.  3-35  3-36 " 3-37  012533 aa 6 02022 2341 00 3-38 nlma: szn com|macroloc are we still 012534 0a 013023 6000 00 3-39 tze nlsw  012535 aa 6 02022 7201 00 3-40 lxl0 com|macroloc reading from macro file  012536 aa 007777 3600 03 3-41 anx0 =o7777,du mask offset  012537 aa 000000 6210 00 3-42 eax1 0 word count in line 3-43  012540 aa 020000 1004 00 3-44 mlr (),(),fill(20) clear line image  012541 0a 012541 020000 3-45 desc6a *,0 012542 0a 012001 020124 3-46 desc6a line,84 3-47  012543 0a 012704 7020 00 3-48 tsx2 nlget get next word from file  012544 0a 022660 1150 00 3-49 cmpa =-1 if fence, runcom is finished 012545 0a 013021 6000 00 3-50 tze nlswma .. 012546 aa 777777 3750 03 3-51 ana =o777777,du mask length of this line  012547 0a 013032 7550 00 3-52 sta nllen ..  3-53  012550 0a 013032 1010 00 3-54 nlloop: cmpx1 nllen test for completion of copy  012551 0a 012556 6050 00 3-55 tpl nlmae ..  012552 0a 012704 7020 00 3-56 tsx2 nlget get next word from file  012553 0a 012001 7550 11 3-57 sta line,1 place in line  012554 aa 000001 6210 11 3-58 eax1 1,1 step to next 012555 0a 012550 7100 00 3-59 tra nlloop and loop  3-60  012556 aa 000000 6350 10 3-61 nlmae: eaa 0,0 buffer index in AU  012557 aa 000022 7710 00 3-62 arl 18 move to AL 012560 aa 6 02022 7511 03 3-63 stca com|macroloc,03 save buffer index 3-64  012561 0a 013031 2340 00 3-65 szn nlraw expand args?  012562 0a 012741 6010 00 3-66 tnz nlpt if not, just print expanded line 3-67  012563 aa 020000 1004 00 3-68 mlr (),(),fill(20) blank out expanded line 012564 0a 012564 020000 3-69 desc6a *,0 012565 0a 013034 020124 3-70 nlbufdesc:desc6a nlbuf,84  3-71  012566 aa 000124 2360 07 3-72 ldq 84,dl Q contains remaining output length  012567 aa 000000 6200 00 3-73 eax0 0 X0 is output offset  012570 aa 000124 6250 00 3-74 eax5 84 X5 contains remaining input length  012571 aa 000000 6260 00 3-75 eax6 0 X6 is input offset 3-76  012572 aa 000003 1244 56 3-77 nlxloop: scm (x6,rl),(du) search for "&"  012573 0a 012001 020015 3-78 desc6a line,x5 012574 aa 320 000 000 000 3-79 bci "&"  012575 0a 013032 0000 00 3-80 arg nllen  3-81  012576 0a 012724 7020 00 3-82 tsx2 nlxpand copy everything up to "&"  012577 aa 000050 1004 76 3-83 mlr (x6,rl,id),(x0,rl) 012600 0a 012001 020017 3-84 desc6a line,x7 3-85  012601 0a 012630 6064 00 3-86 ttn nlmpt if no "&", we're finished  3-87  012602 0a 013033 0660 00 3-88 adx6 nlno bump input offset  012603 aa 000001 6260 16 3-89 eax6 1,6 plus one for "&" 012604 0a 013033 1650 00 3-90 sbx5 nlno decrement remaining characters  012605 aa 777777 6250 15 3-91 eax5 -1,5 ..  012606 0a 012630 6044 00 3-92 tmoz nlmpt if empty, we're finished  3-93  012607 aa 000000 1014 16 3-94 mrl (x6),(),fill(0) extract next character 012610 0a 012001 020001 3-95 desc6a line,1  012611 0a 013033 020006 3-96 desc6a nlno,6  3-97  012612 0a 013033 7210 00 3-98 lxl1 nlno should be single digit  012613 aa 000012 1010 03 3-99 cmpx1 10,du test for digit  012614 0a 012616 6040 00 3-100 tmi *+2 if not,  012615 aa 000000 6210 00 3-101 eax1 0 make it zero  3-102  012616 aa 6 02716 2351 11 3-103 lda com|macroargs,1 get appropriate arg descriptor 012617 0a 012624 7550 00 3-104 sta nlxdesc save it  012620 aa 007777 3750 07 3-105 ana =o7777,dl mask the length 012621 0a 013032 7550 00 3-106 sta nllen and save  3-107  012622 0a 012724 7020 00 3-108 tsx2 nlxpand copy arg into line  012623 aa 0 00050 1005 20 3-109 mlr (pr,id),(x0,rl)  012624 3-110 nlxdesc: bss ,1 3-111  012625 aa 000001 6260 16 3-112 eax6 1,6 step over digit  012626 aa 777777 6250 15 3-113 eax5 -1,5 ..  012627 0a 012572 6054 00 3-114 tpnz nlxloop if characters left, loop 3-115  012630 aa 6 02025 2341 00 3-116 nlmpt: szn com|skipsw skipping lines?  012631 0a 012651 6000 00 3-117 tze nlmpr if not, just print line and execute 012632 0a 015562 7020 00 3-118 tsx2 erpt print out expanded line 012633 aa 005 136 147 040 3-119 acc "^g ^G"  012634 aa 136 107 000 000 012635 0a 022661 0000 00 3-120 arg =h!!?!!?  012636 0a 012565 0000 00 3-121 arg nlbufdesc  3-122  012637 0a 016457 7020 00 3-123 tsx2 readtty read a line from console 012640 0a 012513 7100 00 3-124 tra nlagain if null, ignore this line 012641 0a 012314 7020 00 3-125 tsx2 scan parse input 012642 0a 012040 2350 00 3-126 lda arg get first parameter  012643 0a 022662 1150 00 3-127 cmpa =h x x?  012644 0a 012661 6000 00 3-128 tze nlmx execute this line but remain in skip mode  012645 0a 022663 1150 00 3-129 cmpa =h c c?  012646 0a 012630 6010 00 3-130 tnz nlmpt turn off skip mode and proceed  3-131  012647 aa 6 02025 4501 00 3-132 stz com|skipsw turn off skip mode  012650 0a 012655 7100 00 3-133 tra nlmpx copy and expand line  3-134  012651 aa 6 02020 2341 00 3-135 nlmpr: szn com|quietsw quiet mode?  012652 0a 012655 6010 00 3-136 tnz nlmpx if so, skip printing  012653 0a 016105 7020 00 3-137 tsx2 type write out line to be executed  012654 0a 013034 000016 3-138 zero nlbuf,14  3-139  012655 aa 020000 1004 00 3-140 nlmpx: mlr (),(),fill(20) copy expanded line  012656 0a 013034 020124 3-141 desc6a nlbuf,84  012657 0a 012001 020124 3-142 desc6a line,84 012660 0a 012745 7100 00 3-143 tra nlscan parse input  3-144  3-145 " 3-146  012661 0a 012041 2360 00 3-147 nlmx: ldq arg+1 look at next arg  012662 0a 022660 1160 00 3-148 cmpq =-1 fence?  012663 0a 012655 6000 00 3-149 tze nlmpx execute line, but stay in skip mode 3-150  012664 0a 012101 2360 00 3-151 ldq earg+1 get descriptor to rest of line 012665 aa 000017 7720 00 3-152 qrl 15 character offset in QL 012666 aa 000007 3760 07 3-153 anq =o7,dl .. 012667 0a 013033 7560 00 3-154 stq nlno save it  012670 0a 012101 2360 00 3-155 ldq earg+1 descriptor in Q again  012671 0a 012001 1360 03 3-156 sblq line,du get offset from beginning  012672 aa 000022 7720 00 3-157 qrl 18 in QL  012673 aa 000006 4020 07 3-158 mpy 6,dl in characters  012674 0a 013033 0760 00 3-159 adq nlno plus character offset  012675 0a 013033 7560 00 3-160 stq nlno save offset  012676 aa 000124 2350 07 3-161 lda 84,dl line length in A  012677 0a 013033 1750 00 3-162 sba nlno minus offset 3-163  012700 aa 020000 1004 46 3-164 mlr (rl,ql),(),fill(20) copy rest of line  012701 0a 012001 020005 3-165 desc6a line,al 012702 0a 012001 020124 3-166 desc6a line,84 012703 0a 012745 7100 00 3-167 tra nlscan now scan new command line  3-168  3-169 " 3-170  012704 0a 012722 7420 00 3-171 nlget: stx2 nlgx2 subr to get one word from runcom file  3-172  012705 aa 000100 1000 03 3-173 cmpx0 64,du does buffer need reloaded 012706 0a 012720 6040 00 3-174 tmi nlnoload  3-175  012707 aa 6 02022 2351 00 3-176 lda com|macroloc reload buffer 012710 aa 010000 0750 07 3-177 ada =o10000,dl 012711 aa 6 02022 7551 00 3-178 sta com|macroloc bump addr 012712 0a 022664 3750 00 3-179 ana =o777777770000 012713 aa 000001 2750 07 3-180 ora =1,dl  012714 0a 014726 7020 00 3-181 tsx2 rdsec 012715 aa 6 02600 0111 00 3-182 nop com|macrobuf  012716 0a 012716 6160 00 3-183 dis *  012717 aa 000000 6200 00 3-184 eax0 0 3-185  012720 aa 6 02600 2351 10 3-186 nlnoload: lda com|macrobuf,0 copy word  012721 aa 000001 6200 10 3-187 eax0 1,0  3-188  012722 0a 012722 6220 00 3-189 nlgx2: eax2 * restore X2  012723 aa 000000 7100 12 3-190 tra 0,2 and return with word in A 3-191  3-192  012724 0a 013032 1160 00 3-193 nlxpand: cmpq nllen enough room left in line?  012725 0a 012727 6050 00 3-194 tpl *+2 if not,  012726 0a 013032 7560 00 3-195 stq nllen use as much space as remains  012727 0a 013032 7270 00 3-196 lxl7 nllen length in X7  012730 aa 000002 6000 12 3-197 tze 2,2 return if zero lenth  3-198  012731 aa 000000 7160 12 3-199 xec 0,2 mlr  012732 aa 000001 0000 12 3-200 arg 1,2  012733 0a 013034 020017 3-201 desc6a nlbuf,x7  3-202  012734 0a 013033 7470 00 3-203 stx7 nlno store length in upper  012735 0a 013033 0600 00 3-204 adx0 nlno bump offset 012736 0a 013032 1760 00 3-205 sbq nllen decrement length  012737 0a 012630 6044 00 3-206 tmoz nlmpt if full, all finished  3-207  012740 aa 000002 7100 12 3-208 tra 2,2 return to caller  3-209  3-210 " 3-211  012741 aa 6 02020 2341 00 3-212 nlpt: szn com|quietsw if quiet  012742 0a 012745 6010 00 3-213 tnz nlscan then don't print  012743 0a 016105 7020 00 3-214 tsx2 type  012744 0a 012001 000016 3-215 zero line,14  3-216  012745 0a 012314 7020 00 3-217 nlscan: tsx2 scan scan line into args  012746 0a 013031 2340 00 3-218 szn nlraw if quiet and tty commands are to be skipped 012747 0a 013016 6010 00 3-219 tnz nlnocard used by do  3-220  012750 0a 012040 2350 00 3-221 lda arg  012751 0a 022660 1150 00 3-222 cmpa =-1 if no args (blank line)  012752 0a 012513 6000 00 3-223 tze nlagain  3-224  012753 0a 022665 1150 00 3-225 cmpa =h quiet  012754 0a 012761 6010 00 3-226 tnz nlnr  012755 0a 012041 2350 00 3-227 lda arg+1 if quiet command check on/off  012756 0a 022666 6750 00 3-228 era =h off  012757 aa 6 02020 7551 00 3-229 sta com|quietsw  012760 0a 012513 7100 00 3-230 tra nlagain  3-231  012761 0a 022667 1150 00 3-232 nlnr: cmpa =h ready 012762 0a 012767 6010 00 3-233 tnz nlnp  012763 0a 012041 2350 00 3-234 lda arg+1 if ready command check on/off  012764 0a 022670 6750 00 3-235 era =h on  012765 aa 6 02030 7551 00 3-236 sta com|readysw  012766 0a 012513 7100 00 3-237 tra nlagain  3-238  012767 0a 022671 1150 00 3-239 nlnp: cmpa =hprompt 012770 0a 012775 6010 00 3-240 tnz nlnq  012771 0a 012041 2350 00 3-241 lda arg+1 if prompt command check on/off  012772 0a 022670 6750 00 3-242 era =h on  012773 aa 6 02026 7551 00 3-243 sta com|ttypmtsw  012774 0a 012513 7100 00 3-244 tra nlagain  3-245  012775 0a 022672 1150 00 3-246 nlnq: cmpa =h tty 012776 0a 013003 6010 00 3-247 tnz nlnotty  012777 aa 6 02021 2351 00 3-248 lda com|inputsw stack inputsw  013000 aa 000006 7710 00 3-249 arl 6  013001 aa 6 02021 7551 00 3-250 sta com|inputsw read now from tty  013002 0a 012513 7100 00 3-251 tra nlagain  3-252  013003 0a 022673 1150 00 3-253 nlnotty: cmpa =h cards  013004 0a 013016 6010 00 3-254 tnz nlnocard  013005 aa 6 02021 2351 00 3-255 lda com|inputsw start reading from cards  013006 aa 000006 7710 00 3-256 arl 6  013007 aa 010000 2750 03 3-257 ora =o010000,du  013010 aa 6 02021 7551 00 3-258 sta com|inputsw  013011 0a 012041 2350 00 3-259 lda arg+1 see if channel # supplied  013012 0a 012513 6040 00 3-260 tmi nlagain  013013 aa 000022 7350 00 3-261 als 18 013014 aa 6 02016 7551 00 3-262 sta com|rdrchanno  013015 0a 012513 7100 00 3-263 tra nlagain  3-264  013016 3-265 nlnocard:  013016 0a 013016 6200 00 3-266 nlx: eax0 * 013017 0a 013017 6210 00 3-267 eax1 * 013020 0a 013020 7100 00 3-268 tra *  3-269  013021 aa 6 02022 4501 00 3-270 nlswma: stz com|macroloc we are no longer using macro file  013022 aa 6 02025 4501 00 3-271 stz com|skipsw 3-272  013023 aa 6 02021 2351 00 3-273 nlsw: lda com|inputsw unstack inputsw  013024 aa 000006 7350 00 3-274 als 6  013025 aa 6 02021 7551 00 3-275 sta com|inputsw  013026 0a 013031 2340 00 3-276 szn nlraw  013027 0a 013016 6010 00 3-277 tnz nlx  013030 0a 012513 7100 00 3-278 tra nlagain  3-279  3-280 " 3-281  013031 aa 000000 000000 3-282 nlraw: oct 0  3-283  013032 3-284 nllen: bss ,1  013033 3-285 nlno: bss ,1  3-286  013034 3-287 nlbuf: bss ,14  3-288  3-289 " End of include file ...... nextline.incl.alm  3-290  139  140 include search 4-1 " 4-2 " Begin include file ...... search.incl.alm 4-3 " Created 7/17/74 by Noel I. Morris 4-4 " Last modified 10/30/75 by Noel I. Morris  4-5  4-6 " To find BOS command in directory --  4-7 " lda name  4-8 " tsx2 search  4-9 " tra error 4-10 " sta =v24/sector,12/length 4-11 "  4-12 " On successful return, com|0,7 -> directory entry  4-13 "  4-14  013052 4-15 search: 013052 0a 013063 7400 00 4-16 stx0 shx0 save X0 4-17  013053 aa 002032 6270 00 4-18 eax7 cmdlst X7 -> BOS command directory  013054 aa 546300 5202 02 4-19 rpt (dir+dirlen-cmdlst)/2,2,tze search the directory  013055 aa 6 00000 1151 17 4-20 cmpa com|0,7 ..  013056 0a 013061 6070 00 4-21 ttf shfnd ..  4-22  013057 0a 013063 2200 00 4-23 ldx0 shx0 restore X0  013060 aa 000000 7100 12 4-24 tra 0,2 take error return 4-25  013061 aa 777776 6270 17 4-26 shfnd: eax7 -2,7 adjust index 013062 aa 6 00001 2351 17 4-27 lda com|1,7 return with disk address in A 013063 0a 013063 6200 00 4-28 shx0: eax0 * restore X0  013064 aa 000001 7100 12 4-29 tra 1,2 and return  4-30  4-31  4-32 " End of include file ...... search.incl.alm  4-33  141  142 include makefil  5-1 " 5-2 " Begin include file ...... makefil.incl.alm  5-3 " Created 1/9/74 by Noel I. Morris  5-4 " Last modified 10/30/75 by Noel I. Morris  5-5  5-6 " lda name name of file  5-7 " ldq nsect number of sectors needed  5-8 " tsx2 makefil to create file and enter in directory  5-9 " tra error error return  5-10 " stx7 dir_index com|0,7 -> directory entry  5-11 " sta loc location of command on disk  5-12  5-13  013065 0a 013134 7550 00 5-14 makefil: sta mkfnam save file name 013066 0a 013135 7560 00 5-15 stq mkfloc and desired length 013067 0a 013116 7420 00 5-16 stx2 mkfx2 save X2  5-17  013070 0a 013052 7020 00 5-18 tsx2 search search for name already in dir  013071 0a 013101 7100 00 5-19 tra mkfnew if not, make new name  5-20  013072 aa 000000 6360 05 5-21 eaq 0,al length in QU 013073 aa 000022 7720 00 5-22 qrl 18 shift to QL  013074 aa 000777 3760 07 5-23 anq =o777,dl and mask 013075 0a 013135 1160 00 5-24 cmpq mkfloc is it desired length? 013076 0a 013104 6040 00 5-25 tmi mkfalloc if less, allocate new area  013077 0a 013135 7510 74 5-26 stca mkfloc,74 save sector address  013100 0a 013112 7100 00 5-27 tra mkfsave go set up dir entry  5-28  013101 aa 000000 2350 07 5-29 mkfnew: lda 0,dl search for empty space in directory  013102 0a 013052 7020 00 5-30 tsx2 search ..  013103 0a 013120 7100 00 5-31 tra nodroom if dir full, print error  5-32  013104 0a 013111 7470 00 5-33 mkfalloc: stx7 mkfx7 save directory offset 013105 0a 013135 2350 00 5-34 lda mkfloc get desired length of file 013106 0a 013173 7020 00 5-35 tsx2 getsec try to allocate space on disk 013107 0a 013132 7100 00 5-36 tra mkferr if unsuccessful, take error return 013110 0a 013135 7550 00 5-37 sta mkfloc save allocated space  013111 0a 013111 6270 00 5-38 mkfx7: eax7 * restor directory index  5-39  013112 0a 013134 2350 00 5-40 mkfsave: lda mkfnam set name of file in dir  013113 aa 6 00000 7551 17 5-41 sta com|0,7 ..  013114 0a 013135 2350 00 5-42 lda mkfloc set location of file in dir  013115 aa 6 00001 7551 17 5-43 sta com|1,7 ..  5-44  013116 0a 013116 6220 00 5-45 mkfx2: eax2 * restore X2  013117 aa 000001 7100 12 5-46 tra 1,2 and return  5-47  013120 0a 015562 7020 00 5-48 nodroom: tsx2 erpt  013121 aa 034 156 157 040 5-49 acc "no room in directory for ^g." 013122 aa 162 157 157 155 013123 aa 040 151 156 040 013124 aa 144 151 162 145 013125 aa 143 164 157 162 013126 aa 171 040 146 157 013127 aa 162 040 136 147 013130 aa 056 000 000 000 013131 0a 013134 0000 00 5-50 arg mkfnam 5-51  013132 0a 013116 2220 00 5-52 mkferr: ldx2 mkfx2 restore X2  013133 aa 000000 7100 12 5-53 tra 0,2 take error return 5-54  013134 5-55 mkfnam: bss ,1  013135 5-56 mkfloc: bss ,1  5-57  5-58 " End of include file ...... makefil.incl.alm  5-59  143  144 include ldcom  6-1 " 6-2 " Begin include file ...... ldcom.incl.alm  6-3 " Last modified 7/17/74 by Noel I. Morris  6-4  6-5 " To load BOS file --  6-6 " lda name  6-7 " ldq offset,du offset in seg 3 to load program 6-8 " tsx2 ldcom  6-9 " tra error 6-10 " sta length # of 64-word blocks in AL 6-11 "  6-12  013136 6-13 ldcom:  013136 0a 013154 7420 00 6-14 stx2 ldcx2 save X2  013137 0a 013152 7520 70 6-15 stcq ldcoff,70 save core address  013140 0a 013171 7550 00 6-16 sta ldcname save program name 6-17  013141 aa 000030 7720 00 6-18 qrl 18+6 right-justify and divide by 64  013142 0a 013170 7560 00 6-19 stq ldcdelta save temporarily 013143 aa 000014 7360 00 6-20 qls 12 move to sector addr. position  013144 0a 013170 1560 00 6-21 ssq ldcdelta increment sector, decrement count  6-22  013145 0a 013052 7020 00 6-23 tsx2 search search the command list  013146 0a 013157 7100 00 6-24 tra ldcerr .. 6-25  013147 0a 013172 7510 03 6-26 stca ldclen,03 save # of 64-word blocks  013150 0a 013170 0350 00 6-27 adla ldcdelta add to sector, subtract from count  013151 0a 014726 7020 00 6-28 tsx2 rdsec read it in 013152 0a 013152 0000 00 6-29 ldcoff: arg *  013153 0a 013157 7100 00 6-30 tra ldcerr 6-31  013154 0a 013154 6220 00 6-32 ldcx2: eax2 * restore X2  013155 0a 013172 2350 00 6-33 lda ldclen # of 64-word blocks loaded in AL  013156 aa 000001 7100 12 6-34 tra 1,2 normal return 6-35  013157 0a 015562 7020 00 6-36 ldcerr: tsx2 erpt  013160 aa 022 165 156 141 6-37 acc "unable to load ^g."  013161 aa 142 154 145 040 013162 aa 164 157 040 154 013163 aa 157 141 144 040 013164 aa 136 147 056 000 013165 0a 013171 0000 00 6-38 arg ldcname  6-39  013166 0a 013154 2220 00 6-40 ldx2 ldcx2 restore X2 013167 aa 000000 7100 12 6-41 tra 0,2 take error return 6-42  6-43  013170 6-44 ldcdelta: bss ,1  013171 6-45 ldcname: bss ,1 013172 6-46 ldclen: bss ,1  6-47  6-48  6-49 " End of include file ...... ldcom.incl.alm 6-50  145  146 include getsec 7-1 "  7-2 " Begin include file .... getsec.incl.alm  7-3 " Created by Craig Jensen on 10/18/72.  7-4 " Modified THVV 3/75 for nss: Not use space Multics can't page into 7-5 " This subroutine is used to allocate space on the BOS disk.  7-6 "  7-7 " Example of usage: 7-8 " lda len,dl Indicate size of area wanted (in 64 word units).  7-9 " tsx2 getsec  7-10 " tra error Error transfer if out of disk space.  7-11 " sta =v24/sector,12/len Assigned sector address with count.  7-12  7-13  013173 7-14 getsec: 013173 0a 013256 7420 00 7-15 stx2 gs_x2 Save return reg.  7-16  7-17 " ENSURE THAT THE SIZE OF THE SPACE REQUESTED IS LESS THAN THE NO. OF SECTORS PER CYL. 7-18  013174 aa 6 02012 7271 00 7-19 lxl7 com|bos_dvt Get index which points to the no. of sectors per cyl. 013175 0a 014671 1150 17 7-20 cmpa fs_dev.mult_sect_per_cyl-1,7 Is a cyl. big enough?  013176 0a 013217 6040 00 7-21 tmi will_fit_in_cyl Yes, continue.  013177 0a 013217 6000 00 7-22 tze will_fit_in_cyl Yes, continue.  013200 0a 015562 7020 00 7-23 tsx2 erpt No, gripe. 013201 aa 055 101 154 154 7-24 acc "Allocation request larger than cylinder size."  013202 aa 157 143 141 164 013203 aa 151 157 156 040 013204 aa 162 145 161 165 013205 aa 145 163 164 040 013206 aa 154 141 162 147 013207 aa 145 162 040 164 013210 aa 150 141 156 040 013211 aa 143 171 154 151 013212 aa 156 144 145 162 013213 aa 040 163 151 172 013214 aa 145 056 000 000 013215 0a 013256 2220 00 7-25 ldx2 gs_x2 Restore return reg.  013216 aa 000000 7100 12 7-26 tra 0,2 Return to caller's error routine. 7-27  7-28  7-29 " SEE IF THERE IS ENOUGH SPACE IN THE CYLINDER WE LAST ALLOCATED SPACE FROM 7-30  013217 7-31 will_fit_in_cyl:  7-32 " Space left in cyl. = mult_sect_per_cyl - remainder of (com|used / mult_sect_per_cyl)  013217 0a 013255 7550 00 7-33 sta gs_len Save size of the space needed. 7-34  013220 aa 6 02001 2361 00 7-35 ldq com|used Get the sector no. of the first free sector. 013221 aa 000014 7720 00 7-36 qrl 12 Right-justify  013222 0a 014671 5060 17 7-37 div fs_dev.mult_sect_per_cyl-1,7 Get # of sectors alloc. in current cyl. 013223 aa 000000 5310 00 7-38 neg 0 Subtract this from # of sectors per cyl. to get  013224 0a 014671 0750 17 7-39 ada fs_dev.mult_sect_per_cyl-1,7 # of sectors in current cyl. yet available.  7-40  013225 0a 013255 1150 00 7-41 cmpa gs_len Is there enough space in the current cyl.?  013226 0a 013232 6050 00 7-42 tpl found_room Yes, continue to next step.  7-43  013227 0a 014700 0750 17 7-44 ada fs_dev.rem_per_cyl-1,7 Also, waste the "gap". 013230 aa 000014 7350 00 7-45 als 12 shift to sector address position  013231 aa 6 02001 0551 00 7-46 asa com|used No, bump the free sector addr. to the next cyl. 7-47  7-48  7-49 " ALLOCATE THE SPACE AND UPDATE THE CURRENT SECTOR POINTER  7-50  013232 7-51 found_room: 013232 0a 013255 2360 00 7-52 ldq gs_len Hold length in Q.  013233 aa 6 02001 2351 00 7-53 lda com|used Get next available sector  013234 0a 013255 7510 74 7-54 stca gs_len,74 Place in word with sector count.  7-55  013235 aa 000014 7360 00 7-56 qls 12 Shift to sector address position.  013236 aa 6 02001 0561 00 7-57 asq com|used Increment current sector address.  7-58  7-59  7-60 " ENSURE THAT THE BOS DISK SPACE HAS NOT BEEN EXCEEDED  7-61  013237 aa 6 02001 2351 00 7-62 lda com|used  013240 aa 6 02002 1151 00 7-63 cmpa com|useable Next sector no. > max. sector no.?  013241 0a 013253 6044 00 7-64 tmoz gs_finish No, finish up.  7-65  013242 0a 015562 7020 00 7-66 tsx2 erpt Yes, gripe.  013243 aa 026 117 165 164 7-67 acc "Out of Bos disk space."  013244 aa 040 157 146 040 013245 aa 102 157 163 040 013246 aa 144 151 163 153 013247 aa 040 163 160 141 013250 aa 143 145 056 000 013251 0a 013256 2220 00 7-68 ldx2 gs_x2 Restore return reg.  013252 aa 000000 7100 12 7-69 tra 0,2 Return to caller's error routine. 7-70  7-71  7-72 " FINISH UP AND RETURN  7-73  013253 7-74 gs_finish:  013253 0a 013255 2350 00 7-75 lda gs_len Assigned sector # in A.  013254 aa 000001 7100 12 7-76 tra 1,2 Normal return.  7-77  7-78  7-79 " DATA AREAS  7-80  013255 7-81 gs_len: bss ,1 Size of area to be allocated.  013256 7-82 gs_x2: bss ,1 Place to save x2.  7-83  7-84  7-85  7-86  7-87 " End of include file ...... getsec.incl.alm  147  148 include makesdw  8-1 " 8-2 " Begin include file ...... makesdw.incl.alm  8-3 " Created 9/9/76 by Noel I. Morris  8-4 " Modified 8/30/78 by Greenberg for checking flagbox and asking.  8-5  8-6 " lda length,du segment length in words  8-7 " tsx2 makesdw allocate segment  8-8 " tra quit exit if core clobber avoided  8-9 " staq ds|2*segno returned SDW  8-10 " cams 0 don't forget this 8-11 "  8-12  013257 8-13 makesdw:  013257 aa 000077 6360 01 8-14 eaq 63,au length in QU rounded up 013260 aa 777700 3760 03 8-15 anq =o777700,du make 0 mod 64  013261 0a 013406 7560 00 8-16 stq mksdlen save length  8-17 "  8-18 " Check to see if core will be clobbered.  8-19 "  013262 0a 013426 2350 20 8-20 lda mksd.rtb_ptr,* check flag for ssenb  013263 aa 400000 3150 03 8-21 cana fgbx.ssenb,du Is it enabled?  013264 0a 013361 6000 00 8-22 tze mksd.ssenb_ok  8-23 "  8-24 " Query the operator about destroying core. 8-25 "  013265 0a 013360 7420 00 8-26 stx2 mksd.savex2  013266 aa 000000 1004 00 8-27 mlr (),()  013267 0a 012001 020124 8-28 desc6a line,84 save "line"  013270 0a 013407 020124 8-29 desc6a mksd.saveline,84  013271 8-30 mksd.query: 013271 0a 015562 7020 00 8-31 tsx2 erpt complain  013272 aa 072 115 165 154 8-32 acc "Multics has not been shut down. This command will destroy"  013273 aa 164 151 143 163 013274 aa 040 150 141 163 013275 aa 040 156 157 164 013276 aa 040 142 145 145 013277 aa 156 040 163 150 013300 aa 165 164 040 144 013301 aa 157 167 156 056 013302 aa 040 040 124 150 013303 aa 151 163 040 143 013304 aa 157 155 155 141 013305 aa 156 144 040 167 013306 aa 151 154 154 040 013307 aa 144 145 163 164 013310 aa 162 157 171 000 013311 0a 015562 7020 00 8-33 tsx2 erpt  013312 aa 065 164 150 145 8-34 acc "the contents of main memory. Do you wish to proceed^g"  013313 aa 040 143 157 156 013314 aa 164 145 156 164 013315 aa 163 040 157 146 013316 aa 040 155 141 151 013317 aa 156 040 155 145 013320 aa 155 157 162 171 013321 aa 056 040 104 157 013322 aa 040 171 157 165 013323 aa 040 167 151 163 013324 aa 150 040 164 157 013325 aa 040 160 162 157 013326 aa 143 145 145 144 013327 aa 136 147 000 000 013330 0a 022674 0000 00 8-35 arg =h!!????  8-36  013331 0a 016457 7020 00 8-37 tsx2 readtty  013332 0a 013342 7100 00 8-38 tra mksd.payon Please answer yes or no.  8-39  013333 0a 012001 2350 00 8-40 lda line Investigate answer.  013334 0a 022675 1150 00 8-41 cmpa =hyes " 013335 0a 013353 6000 00 8-42 tze mksd.yes_clobber  013336 0a 022676 1150 00 8-43 cmpa =hno " 013337 0a 013342 6010 00 8-44 tnz mksd.payon 013340 0a 013360 2220 00 8-45 ldx2 mksd.savex2 Don't bother restoring line.  013341 aa 000000 7100 12 8-46 tra 0,2 Error exit.  8-47  013342 8-48 mksd.payon: 013342 0a 015562 7020 00 8-49 tsx2 erpt  013343 aa 030 120 154 145 8-50 acc "Please answer yes or no." 013344 aa 141 163 145 040 013345 aa 141 156 163 167 013346 aa 145 162 040 171 013347 aa 145 163 040 157 013350 aa 162 040 156 157 013351 aa 056 000 000 000 013352 0a 013271 7100 00 8-51 tra mksd.query 8-52  013353 8-53 mksd.yes_clobber:  013353 aa 400001 3270 03 8-54 lcx7 fgbx.ssenb+1,du Turn off ssenb.  013354 0a 013426 3470 20 8-55 ansx7 mksd.rtb_ptr,*  8-56  013355 aa 000000 1004 00 8-57 mlr (),()  013356 0a 013407 020124 8-58 desc6a mksd.saveline,84  013357 0a 012001 020124 8-59 desc6a line,84 013360 8-60 mksd.savex2:  013360 aa 000000 6220 00 8-61 eax2 *-*  013361 8-62 mksd.ssenb_ok:  013361 aa 000001 6220 12 8-63 eax2 1,2 Set good exit  013362 aa 0 00007 2351 00 8-64 lda ds|pgm*2+1 get SDW word B for main procedure  013363 aa 377770 3750 03 8-65 ana sdw.bound,du mask the bound field  013364 aa 000010 0350 03 8-66 adla =1b32,du convert bound to length 013365 aa 000005 7710 00 8-67 arl 3-4+6 shift to SDW address position  013366 aa 770000 0350 07 8-68 adla =63b23,dl round up to nearest 64-word block  013367 aa 777777 3750 03 8-69 ana =o777777,du .. 013370 aa 0 00006 0351 00 8-70 adla ds|pgm*2 add to SDW word A  013371 0a 013405 3540 00 8-71 stac mksdsdw save it if not saved already 013372 0a 013405 2350 00 8-72 lda mksdsdw now have SDW word A in A  8-73  013373 aa 000006 7720 00 8-74 qrl 6 place length in SDW address position  013374 0a 013405 0360 00 8-75 adlq mksdsdw add length to address  013375 0a 013405 7560 00 8-76 stq mksdsdw save new address  8-77  013376 0a 013406 2360 00 8-78 ldq mksdlen length in QU  013377 aa 000001 7720 00 8-79 qrl -3+4 shift to bound position and divide by 16 013400 aa 000010 1360 03 8-80 sblq =1b32,du adjust for bound specification  013401 aa 0 00007 6761 00 8-81 erq ds|pgm*2+1 insert other SDW word B bits  013402 aa 377770 3760 03 8-82 anq sdw.bound,du mask bound field  013403 aa 0 00007 6761 00 8-83 erq ds|pgm*2+1 now have SDW word B in Q  8-84  013404 aa 000000 7100 12 8-85 tra 0,2 return to caller  8-86  013405 8-87 mksdsdw: bss ,1 013406 8-88 mksdlen: bss ,1 013407 8-89 mksd.saveline:  013407 8-90 bss ,14 Save for "line"  013425 aa 000000 0110 03 8-91 even  013426 8-92 mksd.rtb_ptr:  013426 aa 000005 000043 8-93 its fgb,fgbx.rtb  013427 aa 000003 000000 8-94  8-95 " End of include file ...... makesdw.incl.alm  8-96  8-97  149  150 include bos_sdw  9-1 "  9-2 " BEGIN INCLUDE FILE sdw.incl.alm 02/12/74  9-3 "  000014 9-4 equ sdw.add_shift,12  007000 9-5 bool sdw.r1,007000 Ringbrack 1 (DL)  000700 9-6 bool sdw.r2,000700 Ringbrack 2 (DL)  000070 9-7 bool sdw.r3,000070 Ringbrack 3 (DL)  9-8  000004 9-9 bool sdw.df,000004 Directed fault bit (0 -> fault)  000003 9-10 bool sdw.fault_code,000003 Number of directed fault  9-11  377770 9-12 bool sdw.bound,377770 Bound field (DU)  000004 9-13 bool sdw.read,000004 Read permission bit (DU) 000002 9-14 bool sdw.execute,000002 Execute permission bit (DU)  000001 9-15 bool sdw.write,000001 Write permission bit (DU)  9-16  400000 9-17 bool sdw.privileged,400000 Privileged bit (DL) 200000 9-18 bool sdw.unpaged,200000 Unpaged bit (DL)  100000 9-19 bool sdw.entry_bound_sw,100000 Entry bound switch (DL) 040000 9-20 bool sdw.cache,040000 Cache enabled bit (DL)  037777 9-21 bool sdw.entry_bound,037777 Entry bound (DL)  9-22  9-23 "  9-24 " END INCLUDE FILE sdw.incl.alm  9-25 "  151  152 include cvadd  10-1 "  10-2 " Begin include file ...... cvadd.incl.alm  10-3 " revised for nss 3/75 THVV 10-4 " Last modified 3/12/76 by Noel I. Morris  10-5  10-6 " ADDRESS CONVERSION PACKAGE FOR BOS  10-7  10-8 " Multics address format:  10-9 "  10-10 " ---------------------------------------------------------------------------  10-11 " | record number |  10-12 " ---------------------------------------------------------------------------  10-13 " | iom | channel | unit number | config card ptr | device type |  10-14 " ---------------------------------------------------------------------------  10-15 "  10-16 "  10-17 " BOS address format:  10-18 "  10-19 " ---------------------------------------------------------------------------  10-20 " | sector number | sector count |  10-21 " ---------------------------------------------------------------------------  10-22 " | iom channel unit number | device type |  10-23 " ---------------------------------------------------------------------------  10-24 "  10-25 "  10-26 " Format of phyadd: 10-27 "  10-28 " ---------------------------------------------------------------------------  10-29 " | unit |  10-30 " ---------------------------------------------------------------------------  10-31 " | cylinder |  10-32 " ---------------------------------------------------------------------------  10-33 " | track |  10-34 " ---------------------------------------------------------------------------  10-35 " | record |  10-36 " ---------------------------------------------------------------------------  10-37  10-38 " 10-39  10-40 " lda =v24/bosad,12/n to read or write a device 10-41 " tsx2 (r|w)dev 10-42 " arg dt_wd (vfd 3/iom,6/chn,9/drive,18/device_type)  10-43 " nop seg|offset  10-44 " tra error 10-45 "  10-46 " tsx2 phybos Converts contents of "phyadd" to bos address 10-47 " arg dt_wd .. input  10-48 " tra error .. never  10-49 " sta =v24/bosad,12/1  10-50 "  10-51 " lda =v24/bosad  10-52 " tsx2 bosphy converts bos to "phyadd" contents  10-53 " arg dt_wd .. input  10-54 " tra error .. never  10-55 "  10-56 " lda =v24/bosad,12/n bos addr to multics addr  10-57 " tsx2 bosmul  10-58 " arg dt_wd .. input  10-59 " tra error .. error return  10-60 " sta multicsaddr DL  10-61 "  10-62 " lda devadd multics to bos  10-63 " tsx2 mulbos  10-64 " arg dt_wd .. input  10-65 " tra error .. error return  10-66 " sta =v24/bosad,12/16  10-67 "  10-68 " ldx0 argno starts scan in "arg" here 10-69 " tsx2 argbos converts arg list to bos addr  10-70 " arg dt_wd .. output  10-71 " arg print number .. for printing  10-72 " tra error .. if bad addr 10-73 " sta =v24/bosad,12/n .. RESULT 10-74 " stq =v24/maxbosad,12/0 .. 10-75 " stx0 next argno  10-76 "  10-77 " lda model_no  10-78 " tsx2 lookup_model Get device type from model  10-79 " tra bad_model Illegal model number  10-80 " sta device_type  10-81 "  10-82 " lda device_name Get device type from device name  10-83 " tsx2 lookup_devname ..  10-84 " tra bad_name Illegal device name 10-85 " sta device_type  10-86 "  10-87 " lda subsystem_name  10-88 " tsx2 find_disk Get devt from subsystem name  10-89 " arg devt Must have device address set  10-90 " tra error 10-91 "  10-92 " tsx2 find_root Get devt for the root volume  10-93 " tra error 10-94 " sta root_devt 10-95 "  10-96 " lda partname  10-97 " tsx2 find_part Get devt and address range  10-98 " arg devt  10-99 " tra bad_part  10-100 " sta frec  10-101 " stq nrecs 10-102 "  10-103  10-104 "  013430 aa 000000 7100 12 10-105 cvinit: tra 0,2 initialization no longer needed  10-106  10-107  10-108 include rwdev  11-1 " 11-2 " Begin include file ...... rwdev.incl.alm NSS by BSG, 9/4/75 11-3  013431 aa 000000 7270 32 11-4 rdev: lxl7 0,2* get dev type  013432 aa 000017 3670 03 11-5 anx7 =o17,du mask device type code  013433 aa 000007 1070 03 11-6 cmpx7 fs_dev.max_dev_type,du  013434 0a 013434 6054 00 11-7 tpnz * 013435 0a 013462 0620 17 11-8 adx2 rwdtab-1,7 shorten arg list  013436 0a 013436 7100 17 11-9 tra *,7  013437 0a 014746 7100 00 11-10 tra rdbulk Bulk  013440 0a 015106 7100 00 11-11 tra rd500 MSS500  013441 0a 015106 7100 00 11-12 tra rd450 MSS450  013442 0a 015106 7100 00 11-13 tra rd400 MSS400 (d191)  013443 0a 015106 7100 00 11-14 tra rd190 DSU190  013444 0a 015106 7100 00 11-15 tra rd181 DSU181  013445 0a 015106 7100 00 11-16 tra rd501 MSS501  11-17  013446 aa 000000 7270 32 11-18 wdev: lxl7 0,2* same as read  013447 aa 000017 3670 03 11-19 anx7 =o17,du mask device type code  013450 aa 000007 1070 03 11-20 cmpx7 fs_dev.max_dev_type,du  013451 0a 013451 6054 00 11-21 tpnz * 013452 0a 013462 0620 17 11-22 adx2 rwdtab-1,7  013453 0a 013453 7100 17 11-23 tra *,7  013454 0a 014750 7100 00 11-24 tra wtbulk Bulk  013455 0a 015110 7100 00 11-25 tra wd500 MSS500  013456 0a 015110 7100 00 11-26 tra wd450 MSS450  013457 0a 015110 7100 00 11-27 tra wd400 MSS400 (d191)  013460 0a 015110 7100 00 11-28 tra wd190 DSU190  013461 0a 015110 7100 00 11-29 tra wd181 DSU181  013462 0a 015110 7100 00 11-30 tra wd501 MSS501  11-31  013463 aa 000001 000000 11-32 rwdtab: zero 1 one fewer arg for bulk store  013464 aa 000000 000000 11-33 zero 0 MSS500 013465 aa 000000 000000 11-34 zero 0 MSS450 013466 aa 000000 000000 11-35 zero 0 MSS400 (d191)  013467 aa 000000 000000 11-36 zero 0 DSU190 013470 aa 000000 000000 11-37 zero 0 DSU181 013471 aa 000000 000000 11-38 zero 0 MSS501 11-39  11-40 " End of include file ...... rwdev.incl.alm 11-41  11-109  11-110 " 11-111  013472 aa 000000 7270 32 11-112 phybos: lxl7 0,2* get dev type 013473 aa 000017 3670 03 11-113 anx7 =o17,du mask device type code  013474 0a 013474 7100 17 11-114 tra *,7  013475 0a 013504 7100 00 11-115 tra cv.pb1 bulk  013476 0a 013506 7100 00 11-116 tra cv.pb2 MSS500 013477 0a 013506 7100 00 11-117 tra cv.pb3 MSS450 013500 0a 013506 7100 00 11-118 tra cv.pb4 MSS400 (d191)  013501 0a 013506 7100 00 11-119 tra cv.pb5 DSU190 013502 0a 013506 7100 00 11-120 tra cv.pb6 DSU181 013503 0a 013506 7100 00 11-121 tra cv.pb7 MSS501 11-122  013504 0a 014350 4500 00 11-123 cv.pb1: stz phyadd+1 zero out extraneous cells 013505 0a 014351 4500 00 11-124 stz phyadd+2 not used in bulk store computation  11-125  013506 11-126 cv.pb2: 013506 11-127 cv.pb3: 013506 11-128 cv.pb4: 013506 11-129 cv.pb5: 013506 11-130 cv.pb6: 013506 11-131 cv.pb7: 013506 0a 014347 2360 00 11-132 ldq phyadd cylinder number  013507 0a 014635 4020 17 11-133 mpy fs_dev.track_per_cyl-1,7  013510 0a 014350 0760 00 11-134 adq phyadd+1 track number 013511 0a 014662 4020 17 11-135 mpy fs_dev.sect_per_track-1,7  013512 0a 014351 0760 00 11-136 adq phyadd+2 record number  013513 aa 000060 7370 00 11-137 lls 36+12  11-138  013514 aa 000001 2750 07 11-139 cv.pbr: ora =1,dl add size bit 013515 aa 000002 7100 12 11-140 tra 2,2  11-141  11-142  11-143  013516 aa 000014 7710 00 11-144 bosphy: arl 12 shift off length  013517 aa 000000 7270 32 11-145 lxl7 0,2* dev type  013520 aa 000017 3670 03 11-146 anx7 =o17,du mask device type code  013521 0a 014626 1150 17 11-147 cmpa fs_dev.sect_per_dev-1,7 Check against limits.  013522 aa 000001 6050 12 11-148 tpl 1,2 Error if too big. 11-149  013523 aa 000044 7730 00 11-150 lrl 36 disk sector in Q  013524 0a 014662 5060 17 11-151 div fs_dev.sect_per_track-1,7  013525 0a 014351 7550 00 11-152 sta phyadd+2 record number  013526 0a 014635 5060 17 11-153 div fs_dev.track_per_cyl-1,7  013527 0a 014350 7550 00 11-154 sta phyadd+1 track number 013530 0a 014347 7560 00 11-155 stq phyadd cylinder number  11-156  013531 aa 000002 7100 12 11-157 tra 2,2  11-158  11-159 "  11-160  013532 aa 000000 7270 32 11-161 bosmul: lxl7 0,2* dev type 013533 aa 000017 3670 03 11-162 anx7 =o17,du mask device type code  013534 aa 000014 7710 00 11-163 arl 12 Put sector no. in AL  013535 0a 014626 1150 17 11-164 cmpa fs_dev.sect_per_dev-1,7 check for legal sector address  013536 aa 000001 6050 12 11-165 tpl 1,2 ..  013537 0a 014236 7550 00 11-166 sta cv.temp  11-167  013540 aa 000044 7730 00 11-168 lrl 36 sector number to Q  013541 0a 014653 5060 17 11-169 div fs_dev.sect_per_cyl-1,7 Q = cylinder # 013542 0a 014671 1150 17 11-170 cmpa fs_dev.mult_sect_per_cyl-1,7 in unusable part of cylinder?  013543 0a 013546 6040 00 11-171 tmi *+3 if so,  013544 0a 014700 3350 17 11-172 lca fs_dev.rem_per_cyl-1,7 round the sector number down  013545 0a 014236 0550 00 11-173 asa cv.temp ..  013546 0a 014700 4020 17 11-174 mpy fs_dev.rem_per_cyl-1,7 reduce sector count by "gap"  013547 aa 000044 7370 00 11-175 lls 36 013550 aa 000000 5310 00 11-176 neg  013551 0a 014236 0750 00 11-177 ada cv.temp ..to get number of sectors used  013552 aa 000004 7710 00 11-178 arl 4 Divide adjusted number by 16 (sectors/rec)  11-179  013553 aa 000002 7100 12 11-180 tra 2,2  11-181  11-182  11-183  013554 aa 000000 7270 32 11-184 mulbos: lxl7 0,2*  013555 aa 000017 3670 03 11-185 anx7 =o17,du mask device type code  013556 aa 000000 1150 03 11-186 cmpa 0,du Check for legitimate Multics address.  013557 aa 000001 6040 12 11-187 tmi 1,2 ..  013560 0a 014707 1150 17 11-188 cmpa fs_dev.rec_per_dev-1,7  013561 aa 000001 6050 12 11-189 tpl 1,2  11-190  013562 aa 000044 7730 00 11-191 lrl 36 position  013563 aa 000004 7360 00 11-192 qls 4 mpy by 16  013564 0a 014236 7560 00 11-193 stq cv.temp  013565 0a 014671 5060 17 11-194 div fs_dev.mult_sect_per_cyl-1,7 Get cylinder number  013566 0a 014700 4020 17 11-195 mpy fs_dev.rem_per_cyl-1,7 Compute size of "gaps" not used 013567 aa 000044 7370 00 11-196 lls 36 013570 0a 014236 0750 00 11-197 ada cv.temp Add in integral sectors  013571 aa 000014 7350 00 11-198 als 12 Shift to left half 013572 aa 000020 2750 07 11-199 ora =16,dl Insert sector count  11-200  013573 aa 000002 7100 12 11-201 tra 2,2  11-202  11-203 "  11-204  013574 0a 013723 7430 00 11-205 argbos: stx3 cv.abx3 switch x2 to x3  013575 aa 000000 6230 12 11-206 eax3 0,2  013576 aa 000000 4500 33 11-207 stz 0,3* clear devt word  013577 0a 013741 4500 00 11-208 stz cv.ab.offset clear address offset  11-209  013600 0a 012040 2350 10 11-210 lda arg,0 Pick up first word typed, s/b keyword  013601 aa 000001 6200 10 11-211 eax0 1,0 Step to next arg.  013602 0a 022677 1150 00 11-212 cmpa =h root  013603 0a 013630 6000 00 11-213 tze cv.ab.root_type if root volume type  013604 0a 022700 1150 00 11-214 cmpa =h part  013605 0a 013634 6000 00 11-215 tze cv.ab.part_type if partition type  013606 0a 022701 1150 00 11-216 cmpa =h vol  013607 0a 013655 6000 00 11-217 tze cv.ab.vol_type If phys vol name  11-218  11-219  11-220 " Process [ | RECORD | SECTOR ]  11-221  013610 11-222 cv.ab.phy_type: 013610 0a 017500 7020 00 11-223 tsx2 ljust 013611 0a 017431 7020 00 11-224 tsx2 geas  013612 0a 022702 1150 00 11-225 cmpa =abulk Bulk store?  013613 0a 013624 6000 00 11-226 tze cv.ab.notb If so, don't get device number. 013614 0a 014236 7550 00 11-227 sta cv.temp save device name  11-228  013615 0a 012060 2350 10 11-229 lda darg,0 get number of disk unit  013616 0a 014131 6044 00 11-230 tmoz cv.ab.err1 if zero, in error  013617 0a 012040 7550 10 11-231 sta arg,0 this'll fix patch command  013620 aa 000001 6200 10 11-232 eax0 1,0 step to next arg 013621 aa 000022 7350 00 11-233 als 18 Pos for dvt word  013622 aa 000000 7550 33 11-234 sta 0,3* Stow 11-235  013623 0a 014236 2350 00 11-236 lda cv.temp Get subsystem name again. 013624 11-237 cv.ab.notb: 013624 0a 013742 7020 00 11-238 tsx2 find_disk Look up disk card  013625 aa 000000 0000 33 11-239 arg 0,3*  013626 0a 013725 7100 00 11-240 tra cv.ab.err  11-241  013627 0a 013656 7100 00 11-242 tra cv.ab.exit 11-243  11-244  11-245 " Process ROOT [ | RECORD | SECTOR ]  11-246  013630 11-247 cv.ab.root_type:  013630 0a 014017 7020 00 11-248 tsx2 find_root Find device info for root volume.  013631 0a 013725 7100 00 11-249 tra cv.ab.err  013632 aa 000000 7550 33 11-250 sta 0,3* Save root devt.  11-251  013633 0a 013656 7100 00 11-252 tra cv.ab.exit And join common code.  11-253  11-254  11-255 " Process PART [ | RECORD | SECTOR ]  11-256  013634 11-257 cv.ab.part_type:  013634 0a 012040 2350 10 11-258 lda arg,0 Get partition name. 013635 0a 017500 7020 00 11-259 tsx2 ljust Left-justify.  013636 0a 017431 7020 00 11-260 tsx2 geas Convert to ASCII.  013637 0a 014042 7020 00 11-261 tsx2 find_part Look up partition. 013640 aa 000000 0000 33 11-262 arg 0,3*  013641 0a 013725 7100 00 11-263 tra cv.ab.err  013642 0a 013741 7550 00 11-264 sta cv.ab.offset Save address offset.  11-265  013643 0a 013741 0760 00 11-266 adq cv.ab.offset Compute address limit.  013644 aa 000001 1760 07 11-267 sbq 1,dl ..  013645 aa 000044 7370 00 11-268 lls 36 Address limit in A.  013646 0a 013554 7020 00 11-269 tsx2 mulbos Convert to BOS address.  013647 aa 000000 0000 33 11-270 arg 0,3*  013650 0a 014142 7100 00 11-271 tra cv.ab.err2 013651 aa 000014 7710 00 11-272 arl 12 Right-justify address limit.  013652 0a 013740 7550 00 11-273 sta cv.ab.limit And save.  11-274  013653 aa 000001 6200 10 11-275 eax0 1,0 Step to next arg.  013654 0a 013663 7100 00 11-276 tra cv.ab.exit1 Join common code.  11-277  11-278  11-279 " Process VOL [ | RECORD | SECTOR ] 11-280  013655 11-281 cv.ab.vol_type: 013655 0a 013725 7100 00 11-282 tra cv.ab.err CODE TO BE SUPPLIED.  11-283  11-284 " 11-285  013656 11-286 cv.ab.exit: 013656 aa 000000 7270 33 11-287 lxl7 0,3* Get device type in X7.  013657 aa 000017 3670 03 11-288 anx7 =o17,du ..  013660 0a 014626 2350 17 11-289 lda fs_dev.sect_per_dev-1,7 Get number of sectors on device.  013661 aa 000001 1750 07 11-290 sba 1,dl Compute max sector number.  013662 0a 013740 7550 00 11-291 sta cv.ab.limit Save sector address limit. 11-292  013663 11-293 cv.ab.exit1:  013663 0a 012040 2350 10 11-294 lda arg,0 Get Multics address or "SECTOR" 013664 0a 022703 1150 00 11-295 cmpa =hsector Do we want sector address?  013665 0a 013703 6010 00 11-296 tnz cv.ab.record No, use as record number. 11-297  013666 aa 000001 6200 10 11-298 eax0 1,0 Sector address. Step to next arg.  013667 0a 013741 2350 00 11-299 lda cv.ab.offset Get record offset.  013670 0a 013554 7020 00 11-300 tsx2 mulbos Convert to sector offset. 013671 aa 000000 0000 33 11-301 arg 0,3*  013672 0a 014142 7100 00 11-302 tra cv.ab.err2 013673 aa 000014 7710 00 11-303 arl 12 Right-justify. 013674 0a 013741 7550 00 11-304 sta cv.ab.offset And save. 013675 0a 013730 7020 00 11-305 tsx2 cvgno Get sector number. 013676 0a 013741 0750 00 11-306 ada cv.ab.offset Add in the offset.  013677 aa 000001 7550 33 11-307 sta 1,3* Save for printing.  013700 aa 000014 7350 00 11-308 als 12 Place in sector address position.  013701 aa 000001 2750 07 11-309 ora 1,dl With sector count of 1.  013702 0a 013714 7100 00 11-310 tra cv.ab.exit2 And exit.  11-311  013703 11-312 cv.ab.record:  013703 0a 022704 1150 00 11-313 cmpa =hrecord Redundancy here to make Bernie happy.  013704 0a 013706 6010 00 11-314 tnz *+2 He forgets what default is.  013705 aa 000001 6200 10 11-315 eax0 1,0 Step over arg.  013706 0a 013730 7020 00 11-316 tsx2 cvgno And get real number.  013707 0a 013741 0750 00 11-317 ada cv.ab.offset Add record offset.  013710 aa 000001 7550 33 11-318 sta 1,3* Save record number for printing. 013711 0a 013554 7020 00 11-319 tsx2 mulbos Convert to BOS addr.  013712 aa 000000 0000 33 11-320 arg 0,3* ..  013713 0a 014142 7100 00 11-321 tra cv.ab.err2 11-322  013714 11-323 cv.ab.exit2:  013714 aa 000014 7730 00 11-324 lrl 12 Place address in AL.  013715 0a 013740 1150 00 11-325 cmpa cv.ab.limit Compare against limit.  013716 0a 014142 6054 00 11-326 tpnz cv.ab.err2 .. 013717 aa 000014 7370 00 11-327 lls 12 Move back to correct position. 013720 0a 013740 2360 00 11-328 ldq cv.ab.limit Get address limit. 013721 aa 000014 7360 00 11-329 qls 12 In correct position.  11-330  013722 aa 000000 6220 13 11-331 eax2 0,3 restore exit 013723 0a 013723 6230 00 11-332 cv.abx3: eax3 * return normal  013724 aa 000003 7100 12 11-333 tra 3,2  11-334  11-335  013725 11-336 cv.ab.err:  013725 aa 000000 6220 13 11-337 eax2 0,3 Retrieve x3  013726 0a 013723 2230 00 11-338 ldx3 cv.abx3 ..  013727 aa 000002 7100 12 11-339 tra 2,2  11-340  11-341  013730 0a 012040 2350 10 11-342 cvgno: lda arg,0 get next arg  013731 0a 013736 6040 00 11-343 tmi cvgbad must be positive  013732 aa 000100 1150 03 11-344 cmpa =o100,du and within range  013733 0a 013736 6050 00 11-345 tpl cvgbad .. 013734 aa 000001 6200 10 11-346 eax0 1,0 step to next arg 013735 aa 000000 7100 12 11-347 tra 0,2 and return  11-348  013736 aa 000000 2350 07 11-349 cvgbad: lda 0,dl use zero instead  013737 aa 000000 7100 12 11-350 tra 0,2 return without bumping X0 11-351  013740 11-352 cv.ab.limit:  013740 11-353 bss ,1 013741 11-354 cv.ab.offset:  013741 11-355 bss ,1 11-356  11-357 " 11-358  11-359 " find_disk - Given subsystem name, finds devt  11-360 " this pgm sets iom, chn, dev type  11-361 " Device number must already be set in devt.  11-362 "  11-363  013742 11-364 find_disk:  013742 0a 014001 7420 00 11-365 stx2 cv.fd.gy  11-366  013743 0a 022702 1150 00 11-367 cmpa =abulk Special case for bulk store.  013744 0a 014007 6000 00 11-368 tze cv.fd.fb Skip disk card lookup.  013745 aa 000777 2360 07 11-369 ldq =o777,dl Look at first 3 chars of A.  013746 0a 022705 2110 00 11-370 cmk =adsk. Must be "dskn".  013747 0a 014176 6010 00 11-371 tnz cv.fd.err3 Otherwise, error.  013750 0a 017625 7020 00 11-372 tsx2 getperiph Get PRPH card for disk 013751 0a 014004 7100 00 11-373 tra cv.fd.conf_err 11-374  013752 aa 6 00002 2351 17 11-375 lda com|DISK_cd.iom,7 DISK found. get physical parameters.. iom  013753 aa 000001 1750 07 11-376 sba 1,dl minus 1  013754 aa 000006 7350 00 11-377 als 6  013755 aa 6 00003 2751 17 11-378 ora com|DISK_cd.chn,7 .. channel  013756 aa 000033 7350 00 11-379 als 18+9  013757 0a 014001 2220 00 11-380 ldx2 cv.fd.gy restore X2  013760 aa 000000 2550 32 11-381 orsa 0,2* and return IOM and channel number  11-382  013761 aa 000000 6350 17 11-383 eaa 0,7 config card index in AU  013762 aa 000022 7710 00 11-384 arl 18 shift to AL  013763 aa 000000 2550 32 11-385 orsa 0,2* and save  11-386  013764 aa 000000 2350 32 11-387 lda 0,2* Get devt word.  013765 aa 000022 7710 00 11-388 arl 18 Right-justify device number.  013766 aa 000777 3750 07 11-389 ana =o777,dl Mask it. 013767 0a 014001 6000 00 11-390 tze cv.fd.gy If device zero, just give subsys info.  11-391  013770 aa 6 00006 2341 17 11-392 cv.fd.ml: szn com|DISK_cd.ndrives,7 End of type groups?  013771 0a 014166 6040 00 11-393 tmi cv.fd.err2 If so, error.  013772 aa 6 00006 1751 17 11-394 sba com|DISK_cd.ndrives,7 Subtract number of drives.  013773 0a 013776 6044 00 11-395 tmoz *+3 If negative, we've found type group. 013774 aa 000002 6270 17 11-396 eax7 2,7 Step to next type group. 013775 0a 013770 7100 00 11-397 tra cv.fd.ml ..  11-398  013776 aa 6 00005 2351 17 11-399 lda com|DISK_cd.model,7 .. model number  013777 0a 014226 7020 00 11-400 cv.fd.lk: tsx2 lookup_devmodel Look up model number.  014000 0a 014152 7100 00 11-401 tra cv.fd.err1 11-402  014001 0a 014001 6220 00 11-403 cv.fd.gy: eax2 *  014002 aa 000000 2550 32 11-404 orsa 0,2* insert type code  014003 aa 000002 7100 12 11-405 tra 2,2  11-406  014004 11-407 cv.fd.conf_err: 014004 0a 014113 7020 00 11-408 tsx2 cv.conf_err  11-409  014005 11-410 cv.fd.err:  014005 0a 014001 2220 00 11-411 ldx2 cv.fd.gy  014006 aa 000001 7100 12 11-412 tra 1,2  11-413  11-414  014007 0a 022706 2360 00 11-415 cv.fd.fb: ldq =a " Look for BULK card.  014010 0a 017616 7020 00 11-416 tsx2 getconf ..  014011 0a 014004 7100 00 11-417 tra cv.fd.conf_err Error if not found. 014012 aa 6 00002 2361 17 11-418 ldq com|BULK_cd.nrec,7 Get number of records on this bulk store.  014013 0a 014710 7560 00 11-419 stq fs_dev.rec_per_dev Set table entry.  014014 aa 000004 7360 00 11-420 qls 4 Compute number of sectors.  014015 0a 014627 7560 00 11-421 stq fs_dev.sect_per_dev Set table entry.  014016 0a 013777 7100 00 11-422 tra cv.fd.lk Now, look up data for bulk store.  11-423  11-424 " 11-425  11-426 " find_root - Find root devt.  11-427  014017 11-428 find_root:  014017 0a 014033 7420 00 11-429 stx2 cv.fr.gx save X2 11-430  014020 0a 022707 2350 00 11-431 lda =aroot Look for "ROOT" config card.  014021 0a 022706 2360 00 11-432 ldq =a "  014022 0a 017616 7020 00 11-433 tsx2 getconf  014023 0a 014036 7100 00 11-434 tra cv.fr.conf_err 11-435  014024 aa 6 00002 2351 17 11-436 lda com|ROOT_cd.drive,7 Get drive number.  014025 aa 000022 7350 00 11-437 als 18 In AU. 014026 0a 014041 7550 00 11-438 sta cv.fr.temp Save.  11-439  014027 aa 6 00001 2351 17 11-440 lda com|ROOT_cd.sub,7 Get subsystem name.  014030 0a 013742 7020 00 11-441 tsx2 find_disk Look up disk subsystem.  014031 0a 014041 0000 00 11-442 arg cv.fr.temp 014032 0a 014037 7100 00 11-443 tra cv.fr.err  11-444  014033 0a 014033 6220 00 11-445 cv.fr.gx: eax2 *  014034 0a 014041 2350 00 11-446 lda cv.fr.temp Answer in A.  014035 aa 000001 7100 12 11-447 tra 1,2  11-448  014036 11-449 cv.fr.conf_err: 014036 0a 014113 7020 00 11-450 tsx2 cv.conf_err  11-451  014037 11-452 cv.fr.err:  014037 0a 014033 2220 00 11-453 ldx2 cv.fr.gx  014040 aa 000000 7100 12 11-454 tra 0,2  11-455  014041 11-456 cv.fr.temp: 014041 11-457 bss ,1 11-458  11-459 " 11-460  11-461 " find_part - get device and extent of partition.  11-462  014042 11-463 find_part:  014042 0a 014100 7420 00 11-464 stx2 cv.fp.x2 Save X2.  014043 0a 014112 7550 00 11-465 sta cv.fp.pn Save partition name. 11-466  014044 aa 000044 7730 00 11-467 lrl 36 Shift partition name to Q. 014045 0a 022710 2350 00 11-468 lda =apart Search for PART card.  014046 0a 017616 7020 00 11-469 tsx2 getconf ..  014047 0a 014106 7100 00 11-470 tra cv.fp.conf_err ..  014050 aa 6 00001 1161 17 11-471 cmpq com|PART_cd.name,7 Correct one?  014051 0a 017621 6010 00 11-472 tnz getmore If not, keep looking. 11-473  014052 aa 6 00003 2351 17 11-474 lda com|PART_cd.drive,7 Get drive number.  014053 0a 014237 7550 00 11-475 sta cv.temp1 Save temporarily.  014054 aa 000022 7350 00 11-476 als 18 Shift to correct position in devt word.  014055 0a 014111 7550 00 11-477 sta cv.fp.devt And save.  11-478  014056 aa 6 00002 2351 17 11-479 lda com|PART_cd.sub,7 Get subsystem name  014057 0a 014236 7550 00 11-480 sta cv.temp Save temporarily. 014060 0a 013742 7020 00 11-481 tsx2 find_disk Get devt info for this subsystem.  014061 0a 014111 0000 00 11-482 arg cv.fp.devt ..  014062 0a 014107 7100 00 11-483 tra cv.fp.err ..  11-484  014063 0a 022711 2350 00 11-485 lda =v24/label.part/64,12/1 Read correct sector from disk label.  014064 0a 013431 7020 00 11-486 tsx2 rdev ..  014065 0a 014111 0000 00 11-487 arg cv.fp.devt ..  014066 0a 014240 0110 00 11-488 nop cv.dbuff ..  014067 0a 014107 7100 00 11-489 tra cv.fp.err ..  11-490  014070 0a 014243 2350 00 11-491 lda cv.dbuff+label.nparts-label.nparts/64*64  014071 aa 000002 7350 00 11-492 als 2 Get number of parts * 4.  014072 aa 000000 6270 05 11-493 eax7 0,al In X7.  014073 0a 014112 2350 00 11-494 lda cv.fp.pn Partition name in A. 014074 11-495 cv.fp.loop: 014074 aa 777774 6270 17 11-496 eax7 -4,7 Decrement label index.  014075 0a 014213 6040 00 11-497 tmi cv.fp.err1 If not found, error.  014076 0a 014244 1150 17 11-498 cmpa cv.dbuff+label.part-label.part/64*64,7  014077 0a 014074 6010 00 11-499 tnz cv.fp.loop Loop until part found.  11-500  014100 0a 014100 6220 00 11-501 cv.fp.x2: eax2 * Restore X2.  014101 0a 014111 2350 00 11-502 lda cv.fp.devt Get devt.  014102 aa 000000 7550 32 11-503 sta 0,2* And return to caller.  014103 0a 014245 2350 17 11-504 lda cv.dbuff+label.frec-label.frec/64*64,7 014104 0a 014246 2360 17 11-505 ldq cv.dbuff+label.nrec-label.nrec/64*64,7 014105 aa 000002 7100 12 11-506 tra 2,2 Return with extent in AQ. 11-507  014106 11-508 cv.fp.conf_err: 014106 0a 014113 7020 00 11-509 tsx2 cv.conf_err  11-510  014107 0a 014100 2220 00 11-511 cv.fp.err:ldx2 cv.fp.x2 Restore X2.  014110 aa 000001 7100 12 11-512 tra 1,2 Take error return.  11-513  014111 11-514 cv.fp.devt: 014111 11-515 bss ,1 devt word  014112 11-516 cv.fp.pn: bss ,1 partition name  11-517  11-518 " 11-519  014113 11-520 cv.conf_err:  014113 0a 014127 7420 00 11-521 stx2 cv.cfe.x2 014114 0a 014236 7550 00 11-522 sta cv.temp  014115 0a 014237 7560 00 11-523 stq cv.temp1  014116 0a 015562 7020 00 11-524 tsx2 erpt  014117 aa 025 116 157 040 11-525 acc "No ^a ^a config card."  014120 aa 136 141 040 136 014121 aa 141 040 143 157 014122 aa 156 146 151 147 014123 aa 040 143 141 162 014124 aa 144 056 000 000 014125 0a 014236 0000 00 11-526 arg cv.temp  014126 0a 014237 0000 00 11-527 arg cv.temp1  014127 0a 014127 6220 00 11-528 cv.cfe.x2:eax2 *  014130 aa 000000 7100 12 11-529 tra 0,2  11-530  014131 11-531 cv.ab.err1: 014131 0a 015562 7020 00 11-532 tsx2 erpt  014132 aa 030 116 157 040 11-533 acc "No disk drive specified." 014133 aa 144 151 163 153 014134 aa 040 144 162 151 014135 aa 166 145 040 163 014136 aa 160 145 143 151 014137 aa 146 151 145 144 014140 aa 056 000 000 000 014141 0a 013725 7100 00 11-534 tra cv.ab.err  11-535  014142 11-536 cv.ab.err2: 014142 0a 015562 7020 00 11-537 tsx2 erpt  014143 aa 027 111 154 154 11-538 acc "Illegal device address."  014144 aa 145 147 141 154 014145 aa 040 144 145 166 014146 aa 151 143 145 040 014147 aa 141 144 144 162 014150 aa 145 163 163 056 014151 0a 013725 7100 00 11-539 tra cv.ab.err  11-540  11-541 " 11-542  014152 11-543 cv.fd.err1: 014152 0a 014236 7550 00 11-544 sta cv.temp  014153 0a 015562 7020 00 11-545 tsx2 erpt  014154 aa 037 111 154 154 11-546 acc "Illegal model ^d. on disk card."  014155 aa 145 147 141 154 014156 aa 040 155 157 144 014157 aa 145 154 040 136 014160 aa 144 056 040 157 014161 aa 156 040 144 151 014162 aa 163 153 040 143 014163 aa 141 162 144 056 014164 0a 014236 0000 00 11-547 arg cv.temp  014165 0a 014005 7100 00 11-548 tra cv.fd.err  11-549  014166 11-550 cv.fd.err2: 014166 0a 015562 7020 00 11-551 tsx2 erpt  014167 aa 026 111 154 154 11-552 acc "Illegal device number."  014170 aa 145 147 141 154 014171 aa 040 144 145 166 014172 aa 151 143 145 040 014173 aa 156 165 155 142 014174 aa 145 162 056 000 014175 0a 014005 7100 00 11-553 tra cv.fd.err  11-554  014176 11-555 cv.fd.err3: 014176 0a 014236 7550 00 11-556 sta cv.temp  014177 0a 015562 7020 00 11-557 tsx2 erpt  014200 aa 043 136 141 040 11-558 acc "^a does not specify disk subsystem."  014201 aa 144 157 145 163 014202 aa 040 156 157 164 014203 aa 040 163 160 145 014204 aa 143 151 146 171 014205 aa 040 144 151 163 014206 aa 153 040 163 165 014207 aa 142 163 171 163 014210 aa 164 145 155 056 014211 0a 014236 0000 00 11-559 arg cv.temp  014212 0a 014005 7100 00 11-560 tra cv.fd.err  11-561  014213 11-562 cv.fp.err1: 014213 0a 015562 7020 00 11-563 tsx2 erpt  014214 aa 024 116 157 040 11-564 acc "No part ^a on ^a ^d." 014215 aa 160 141 162 164 014216 aa 040 136 141 040 014217 aa 157 156 040 136 014220 aa 141 040 136 144 014221 aa 056 000 000 000 014222 0a 014112 0000 00 11-565 arg cv.fp.pn  014223 0a 014236 0000 00 11-566 arg cv.temp  014224 0a 014237 0000 00 11-567 arg cv.temp1  014225 0a 014107 7100 00 11-568 tra cv.fp.err  11-569  11-570 " 11-571  014226 11-572 lookup_devmodel:  014226 0a 014232 7400 00 11-573 stx0 lkdmx0 Save X0.  11-574  014227 aa 000000 6270 00 11-575 eax7 0 Initialize table index.  014230 aa 024300 5202 01 11-576 rpt fs_dev.n_models,1,tze Search table of models. 014231 0a 014565 1150 17 11-577 cmpa fs_dev.models,7 ..  014232 0a 014232 6200 00 11-578 lkdmx0: eax0 * Restore X0. 014233 aa 000000 6064 12 11-579 ttn 0,2 Take error return if not found in table.  014234 aa 000011 2350 17 11-580 lda fs_dev.modelx-fs_dev.models-1,7 Get device type.  014235 aa 000001 7100 12 11-581 tra 1,2 Return to caller. 11-582  11-583 " 11-584  11-585 " Storage  11-586  014236 aa 000000 000000 11-587 cv.temp: oct 0  014237 aa 000000 000000 11-588 cv.temp1: oct 0 11-589  014240 11-590 cv.dbuff: bss ,64 disk sector buffer  11-591  014340 11-592 lth_of_phy_addr: "Number of parts in phy addr 014340 aa 000001 000000 11-593 zero 1 bulk  014341 aa 000003 000000 11-594 zero 3 MSS500 014342 aa 000003 000000 11-595 zero 3 MSS450 014343 aa 000003 000000 11-596 zero 3 MSS400 (d191)  014344 aa 000003 000000 11-597 zero 3 DSU190 014345 aa 000003 000000 11-598 zero 3 DSU181 014346 aa 000003 000000 11-599 zero 3 MSS501 11-600  014347 11-601 phyadd: bss ,3  11-602  11-603 " End of include file ...... cvadd.incl.alm 153  154 include argmul 12-1 " 12-2 " Begin include file ...... argmul.incl.alm 12-3  12-4 " rewrittten 2/75 THVV nss  12-5 " last modified 3/12/76 by Noel I. Morris  12-6  12-7 " ARGMUL is called to convert an external-form address typed by 12-8 " the operator into the internal format.  12-9  12-10 " The operator may specify one of the following (where is  12-11 " any legitimate argument string to argbos):  12-12 " [ONLY | ENTIRE | FOR | TO ] 12-13  12-14 "calling sequence:  12-15 " (set up arguments in "arg")  12-16 " (make x0 be arg no of first one)  12-17 " tsx2 argmul  12-18 " tra error 12-19  12-20 " if successful, argmul will type out a message of the form 12-21 " ( ) TO  12-22 " the quantities dvt, first, and last will be set.  12-23  12-24  014352 0a 014505 7420 00 12-25 argmul: stx2 am.x2 "save return loc  014353 0a 014506 7410 00 12-26 stx1 am.x2+1 and x1  12-27  014354 0a 013574 7020 00 12-28 tsx2 argbos Scans arg list for one address.  014355 0a 014561 0000 00 12-29 arg am.dvt (output)  014356 0a 014563 0000 00 12-30 arg am.prnum  014357 0a 014537 7100 00 12-31 tra am.err 014360 0a 014564 7510 03 12-32 stca am.size,03 Save sector size.  014361 0a 014562 7560 00 12-33 stq am.limit Save sector limit.  12-34  014362 0a 013532 7020 00 12-35 tsx2 bosmul Convert to Multics address.  014363 0a 014561 0000 00 12-36 arg am.dvt 014364 0a 014510 7100 00 12-37 tra am.err1  014365 0a 014557 7550 00 12-38 sta am.first Save returned Multics address.  014366 0a 014560 7550 00 12-39 sta am.last  12-40  014367 0a 014562 2350 00 12-41 lda am.limit Get address limit.  014370 0a 013532 7020 00 12-42 tsx2 bosmul Convert to Multics address.  014371 0a 014561 0000 00 12-43 arg am.dvt 014372 0a 014510 0000 00 12-44 arg am.err1  014373 0a 014562 7550 00 12-45 sta am.limit Save converted limit.  12-46  014374 0a 012040 2350 10 12-47 lda arg,0 Get extent keyword. 014375 aa 000001 6210 10 12-48 eax1 1,0 Save X0 in X1.  014376 aa 000000 6270 00 12-49 eax7 0 Initialize index for search.  014377 aa 010300 5202 02 12-50 rpt am.tabl/2,2,tze Search table.  014400 0a 014542 1150 17 12-51 cmpa am.tab,7 ..  014401 aa 000000 6200 11 12-52 eax0 0,1 Restore X0.  014402 aa 777777 6070 17 12-53 ttf -1,7 Dispatch through table.  014403 0a 014521 7100 00 12-54 tra am.err2 If not found, error.  12-55  014404 0a 014432 7100 00 12-56 am.only: tra am.done Already have limit.  12-57  014405 0a 014562 2350 00 12-58 am.entire:lda am.limit Get last record number. 014406 0a 014560 7550 00 12-59 sta am.last That's the limit. 014407 0a 014432 7100 00 12-60 tra am.done ..  12-61  014410 0a 014563 2350 00 12-62 am.for: lda am.prnum Original request in A.  014411 aa 000001 1750 07 12-63 sba 1,dl Minus 1. 014412 0a 014414 7100 00 12-64 tra *+2 Compute and save limit.  12-65  014413 aa 000000 2350 07 12-66 am.to: lda 0,dl Clear A.  014414 0a 012040 0750 10 12-67 ada arg,0 Add it up.  014415 0a 014510 6040 00 12-68 tmi am.err1 Must be positive. 014416 aa 000001 6200 10 12-69 eax0 1,0 Step to next arg.  12-70  014417 0a 014564 2360 00 12-71 ldq am.size Get sector size.  014420 aa 000002 1160 07 12-72 cmpq 2,dl Multics or BOS? 014421 0a 014425 6040 00 12-73 tmi am.glsec If 1, BOS sector.  12-74  014422 0a 014562 1150 00 12-75 cmpa am.limit Make sure it's legal.  014423 0a 014510 6054 00 12-76 tpnz am.err1  014424 0a 014431 7100 00 12-77 tra am.setl  12-78  014425 aa 000014 7350 00 12-79 am.glsec: als 12 Shift to sector address position. 014426 0a 013532 7020 00 12-80 tsx2 bosmul Convert to Multics address.  014427 0a 014561 0000 00 12-81 arg am.dvt 014430 0a 014510 7100 00 12-82 tra am.err1  014431 0a 014560 7550 00 12-83 am.setl: sta am.last And save it.  12-84  014432 0a 014560 2350 00 12-85 am.done: lda am.last Get end point.  014433 0a 014557 1150 00 12-86 cmpa am.first Compare against starting point. 014434 0a 014510 6040 00 12-87 tmi am.err1 Must be greater or equal. 12-88  014435 0a 014561 2350 00 12-89 lda am.dvt Make pretty comment  014436 aa 000022 7710 00 12-90 arl 18 014437 0a 014552 5510 04 12-91 stba am.drv,04 014440 aa 000011 7710 00 12-92 arl 9  014441 0a 014555 7510 01 12-93 stca am.chn,01 014442 aa 000006 7710 00 12-94 arl 6  014443 0a 022712 0350 00 12-95 adla =h a  014444 0a 014556 7550 00 12-96 sta am.iom 12-97  014445 0a 014561 7270 00 12-98 lxl7 am.dvt  014446 aa 000017 3670 03 12-99 anx7 =o17,du  014447 0a 014610 2350 17 12-100 lda fs_dev.dev_type_names-1,7  014450 0a 014554 7550 00 12-101 sta am.type  014451 0a 014561 7270 00 12-102 lxl7 am.dvt  014452 aa 777760 3670 03 12-103 anx7 =o777760,du  014453 0a 014476 6000 00 12-104 tze am.bulk If zero, must be bulk store.  014454 aa 6 00001 2351 17 12-105 lda com|DISK_cd.sub,7  014455 0a 014553 7550 00 12-106 sta am.sub 12-107  014456 0a 015562 7020 00 12-108 tsx2 erpt "tell what goes on  014457 aa 033 136 141 040 12-109 acc "^a ^d (^a ^g ^o) ^d. to ^d."  014460 aa 136 144 040 050 014461 aa 136 141 040 136 014462 aa 147 040 136 157 014463 aa 051 040 136 144 014464 aa 056 040 164 157 014465 aa 040 136 144 056 014466 0a 014553 0000 00 12-110 arg am.sub 014467 0a 014552 0000 00 12-111 arg am.drv 014470 0a 014554 0000 00 12-112 arg am.type  014471 0a 014556 0000 00 12-113 arg am.iom 014472 0a 014555 0000 00 12-114 arg am.chn 014473 0a 014557 0000 00 12-115 arg am.first  014474 0a 014560 0000 00 12-116 arg am.last  014475 0a 014505 7100 00 12-117 tra am.x2 Now return. 12-118  014476 0a 015562 7020 00 12-119 am.bulk: tsx2 erpt  014477 aa 017 102 125 114 12-120 acc "BULK ^d. to ^d."  014500 aa 113 040 136 144 014501 aa 056 040 164 157 014502 aa 040 136 144 056 014503 0a 014557 0000 00 12-121 arg am.first  014504 0a 014560 0000 00 12-122 arg am.last  12-123  014505 0a 014505 6220 00 12-124 am.x2: eax2 * Normal exit  014506 0a 014506 6210 00 12-125 eax1 * 014507 aa 000001 7100 12 12-126 tra 1,2 Wins  12-127  12-128 " 12-129  014510 0a 015562 7020 00 12-130 am.err1: tsx2 erpt  014511 aa 030 111 155 160 12-131 acc "Improper device address." 014512 aa 162 157 160 145 014513 aa 162 040 144 145 014514 aa 166 151 143 145 014515 aa 040 141 144 144 014516 aa 162 145 163 163 014517 aa 056 000 000 000 014520 0a 014537 7100 00 12-132 tra am.err 12-133  014521 0a 015562 7020 00 12-134 am.err2: tsx2 erpt  014522 aa 056 047 136 147 12-135 acc "'^g' must be 'entire', 'only', 'to', or 'for'."  014523 aa 047 040 155 165 014524 aa 163 164 040 142 014525 aa 145 040 047 145 014526 aa 156 164 151 162 014527 aa 145 047 054 040 014530 aa 047 157 156 154 014531 aa 171 047 054 040 014532 aa 047 164 157 047 014533 aa 054 040 157 162 014534 aa 040 047 146 157 014535 aa 162 047 056 000 014536 0a 012037 0000 10 12-136 arg arg-1,0  12-137  014537 0a 014505 2220 00 12-138 am.err: ldx2 am.x2 Loses  014540 0a 014506 2210 00 12-139 ldx1 am.x2+1  014541 aa 000000 7100 12 12-140 tra 0,2  12-141  12-142 " 12-143  014542 aa 254 563 315 125 12-144 am.tab: bci 'entire'  014543 0a 014405 7100 00 12-145 tra am.entire  014544 aa 202 046 454 370 12-146 bci ' only'  014545 0a 014404 7100 00 12-147 tra am.only  014546 aa 202 020 206 346 12-148 bci ' to'  014547 0a 014413 7100 00 12-149 tra am.to  014550 aa 202 020 264 651 12-150 bci ' for'  014551 0a 014410 7100 00 12-151 tra am.for 12-152  000010 12-153 equ am.tabl,*-am.tab  12-154  12-155  014552 12-156 am.drv: bss ,1  014553 12-157 am.sub: bss ,1  014554 12-158 am.type: bss ,1 014555 12-159 am.chn: bss ,1  014556 12-160 am.iom: bss ,1  12-161  014557 aa 000000 000000 12-162 am.first: zero  014560 aa 000000 000000 12-163 am.last: zero  014561 aa 000000 000000 12-164 am.dvt: zero  014562 aa 000000 000000 12-165 am.limit: zero  12-166  014563 aa 000000 000000 12-167 am.prnum: zero  014564 aa 000000 000000 12-168 am.size: zero  12-169  12-170 " End of include file ...... argmul.incl.alm  12-171  155 include fs_dev_types  13-1 " 13-2 " Begin include file ...... fs_dev_types.incl.alm  13-3 " Updated for NSS 4/75 by TVV  13-4 " Last modified 3/12/76 by Noel I. Morris  13-5 " Last modified 01/06/79 by Michael R. Jordan for MSS0500 support  13-6 " Last modified 4/79 by R.J.C. Kissel for MSU0501 support.  13-7  000001 13-8 equ bulkdevt,1 000002 13-9 equ msu0500devt,2  000003 13-10 equ msu0451devt,3  000003 13-11 equ msu0450devt,3  000004 13-12 equ msu0400devt,4  000004 13-13 equ dsu191devt,4  000005 13-14 equ dsu190devt,5  000006 13-15 equ dsu181devt,6  000007 13-16 equ msu0501devt,7  13-17  014565 13-18 fs_dev.models:  014565 aa 142 165 154 153 13-19 aci "bulk" Bulk  014566 aa 000000 000764 13-20 dec 500 MSU0500  014567 aa 000000 000703 13-21 dec 451 MSU0451  014570 aa 000000 000702 13-22 dec 450 MSU0450  014571 aa 000000 000620 13-23 dec 400 MSU0400  014572 aa 000000 000622 13-24 dec 402 MSU0402  014573 aa 000000 000277 13-25 dec 191 DSU191  014574 aa 000000 000276 13-26 dec 190 DSU190  014575 aa 000000 000265 13-27 dec 181 DSU181  014576 aa 000000 000765 13-28 dec 501 MSU0501  000012 13-29 equ fs_dev.n_models,*-fs_dev.models  13-30  014577 13-31 fs_dev.modelx:  014577 aa 000000 000001 13-32 bulk_dvt: dec 1 Bulk  014600 aa 000000 000002 13-33 dec 2 MSU0500 014601 aa 000000 000003 13-34 dec 3 MSU0451 014602 aa 000000 000003 13-35 dec 3 MSU0450 014603 aa 000000 000004 13-36 dec 4 MSU0400 014604 aa 000000 000004 13-37 dec 4 MSU0402 014605 aa 000000 000004 13-38 dec 4 DSU191  014606 aa 000000 000005 13-39 dec 5 DSU190  014607 aa 000000 000006 13-40 dec 6 DSU181  014610 aa 000000 000007 13-41 dec 7 MSU0501 13-42  000007 13-43 equ fs_dev.max_dev_type,7  13-44  014611 13-45 fs_dev.dev_type_names:  014611 aa 142 165 154 153 13-46 aci "bulk" 014612 aa 144 065 060 060 13-47 aci "d500" 014613 aa 144 064 065 061 13-48 aci "d451" 014614 aa 144 064 060 060 13-49 aci "d400" 014615 aa 144 061 071 060 13-50 aci "d190" 014616 aa 144 061 070 061 13-51 aci "d181" 014617 aa 144 065 060 061 13-52 aci "d501" 13-53  014620 13-54 fs_dev.media_removable: 014620 aa 000000 000000 13-55 oct 0 Bulk  014621 aa 000000 000000 13-56 oct 0 MSU0500 014622 aa 400000 000000 13-57 oct 400000000000 MSU0451  014623 aa 400000 000000 13-58 oct 400000000000 MSU0400  014624 aa 400000 000000 13-59 oct 400000000000 DSU190  014625 aa 400000 000000 13-60 oct 400000000000 DSU181  014626 aa 000000 000000 13-61 oct 0 MSU0501 13-62  13-63 " Following data items are hardware constants  13-64  014627 13-65 fs_dev.sect_per_dev:  014627 aa 000017 204400 13-66 vfd 36/4000000 Bulk  014630 aa 000002 270220 13-67 vfd 36/814*40*19 MSU0500  014631 aa 000002 270220 13-68 vfd 36/814*40*19 MSU0450  014632 aa 000001 140460 13-69 vfd 36/410*40*19 MSU0400  014633 aa 000000 727522 13-70 vfd 36/410*31*19 DSU190  014634 aa 000000 216020 13-71 vfd 36/202*18*20 DSU181  014635 aa 000004 064000 13-72 vfd 36/840*64*20 MSU0501  13-73  014636 13-74 fs_dev.track_per_cyl:  014636 aa 000000 000001 13-75 vfd 36/1 Bulk 014637 aa 000000 000023 13-76 vfd 36/19 MSU0500 014640 aa 000000 000023 13-77 vfd 36/19 MSU0450 014641 aa 000000 000023 13-78 vfd 36/19 MSU0400 014642 aa 000000 000023 13-79 vfd 36/19 DSU190  014643 aa 000000 000024 13-80 vfd 36/20 DSU181  014644 aa 000000 000024 13-81 vfd 36/20 MSU0501 13-82  014645 13-83 fs_dev.cyl_per_dev: 014645 aa 000000 000000 13-84 vfd 36/0 Bulk 014646 aa 000000 001456 13-85 vfd 36/814 MSU0500  014647 aa 000000 001456 13-86 vfd 36/814 MSU0450  014650 aa 000000 000632 13-87 vfd 36/410 MSU0400  014651 aa 000000 000632 13-88 vfd 36/410 DSU190 014652 aa 000000 000312 13-89 vfd 36/202 DSU181 014653 aa 000000 001510 13-90 vfd 36/840 MSU0501  13-91  014654 13-92 fs_dev.sect_per_cyl:  014654 aa 000017 204400 13-93 vfd 36/4000000 Bulk  014655 aa 000000 001370 13-94 vfd 36/40*19 MSU0500  014656 aa 000000 001370 13-95 vfd 36/40*19 MSU0450  014657 aa 000000 001370 13-96 vfd 36/40*19 MSU0400  014660 aa 000000 001115 13-97 vfd 36/31*19 DSU190  014661 aa 000000 000550 13-98 vfd 36/18*20 DSU181  014662 aa 000000 002400 13-99 vfd 36/64*20 MSU0501  13-100  014663 13-101 fs_dev.sect_per_track:  014663 aa 000000 000001 13-102 vfd 36/1 Bulk 014664 aa 000000 000050 13-103 vfd 36/40 MSU0500 014665 aa 000000 000050 13-104 vfd 36/40 MSU0450 014666 aa 000000 000050 13-105 vfd 36/40 MSU0400 014667 aa 000000 000037 13-106 vfd 36/31 DSU190  014670 aa 000000 000022 13-107 vfd 36/18 DSU181  014671 aa 000000 000100 13-108 vfd 36/64 MSU0501 13-109  13-110 " The following figures depend on the Multics conventional definition of "record"  13-111 " A record consists of sectors with consecutive addresses ON THE SAME CYLINDER. 13-112 " This means that there can be a "gap" at the end of each cylinder (i.e., sectors in no record).  13-113  014672 13-114 fs_dev.mult_sect_per_cyl:  014672 aa 000000 100000 13-115 vfd 36/2048*16 Bulk  014673 aa 000000 001360 13-116 vfd 36/40*19/16*16 MSU0500 014674 aa 000000 001360 13-117 vfd 36/40*19/16*16 MSU0450 014675 aa 000000 001360 13-118 vfd 36/40*19/16*16 MSU0400 014676 aa 000000 001100 13-119 vfd 36/31*19/16*16 DSU190  014677 aa 000000 000540 13-120 vfd 36/18*20/16*16 DSU181  014700 aa 000000 002400 13-121 vfd 36/64*20/16*16 MSU0501 13-122  014701 13-123 fs_dev.rem_per_cyl: " Size of gap  014701 aa 000000 000000 13-124 vfd 36/0 Bulk  014702 aa 000000 000010 13-125 vfd 36/(40*19)-(40*19/16*16) MSU0500  014703 aa 000000 000010 13-126 vfd 36/(40*19)-(40*19/16*16) MSU0450  014704 aa 000000 000010 13-127 vfd 36/(40*19)-(40*19/16*16) MSU0400  014705 aa 000000 000015 13-128 vfd 36/(31*19)-(31*19/16*16) DSU190  014706 aa 000000 000010 13-129 vfd 36/(18*20)-(18*20/16*16) DSU181  014707 aa 000000 000000 13-130 vfd 36/(64*20)-(64*20/16*16) MSU0501  13-131  014710 13-132 fs_dev.rec_per_dev: 014710 aa 000000 004000 13-133 vfd 36/2048 Bulk 2048.  014711 aa 000000 112562 13-134 vfd 36/(19*40/16)*814 MSU0500 38258.  014712 aa 000000 112562 13-135 vfd 36/(19*40/16)*814 MSU0450 38258.  014713 aa 000000 045506 13-136 vfd 36/(19*40/16)*410 MSU0400 19270.  014714 aa 000000 034650 13-137 vfd 36/(19*31/16)*410 DSU190 14760.  014715 aa 000000 010534 13-138 vfd 36/(18*20/16)*202 DSU181 4444.  014716 aa 000000 203200 13-139 vfd 36/(20*64/16)*840 MSU0501 67200.  13-140  014717 13-141 fs_dev.amaxio:  014717 aa 000000 004000 13-142 vfd 36/2048 For bulk store.  014720 aa 000000 000057 13-143 vfd 36/40*19/16 MSU0500  014721 aa 000000 000057 13-144 vfd 36/40*19/16 MSU0450  014722 aa 000000 000057 13-145 vfd 36/40*19/16 MSU0400  014723 aa 000000 000044 13-146 vfd 36/31*19/16 DSU190 014724 aa 000000 000026 13-147 vfd 36/18*20/16 DSU181 014725 aa 000000 000120 13-148 vfd 36/64*20/16 MSU0501  13-149  13-150 " End of include file ...... fs_dev_types.incl.alm  13-151  156 " 157 include config_cards  14-1 " 14-2 " Begin include file ...... config_cards.incl.alm  14-3 " 3/75 THVV nss 14-4 " Last modified 3/12/76 by Noel I. Morris  14-5  000001 14-6 equ ROOT_cd.sub,1  000002 14-7 equ ROOT_cd.drive,2  14-8  000001 14-9 equ PART_cd.name,1 000002 14-10 equ PART_cd.sub,2  000003 14-11 equ PART_cd.drive,3  14-12  000001 14-13 equ PRPH_cd.sub,1  000002 14-14 equ PRPH_cd.iom,2  000003 14-15 equ PRPH_cd.chn,3  000004 14-16 equ PRPH_cd.model,4  14-17  000001 14-18 equ DISK_cd.sub,1  000002 14-19 equ DISK_cd.iom,2  000003 14-20 equ DISK_cd.chn,3  000004 14-21 equ DISK_cd.nchan,4  000005 14-22 equ DISK_cd.model,5  000006 14-23 equ DISK_cd.ndrives,6  14-24  000001 14-25 equ CHNL_cd.sub,1  000002 14-26 equ CHNL_cd.iom,2  000003 14-27 equ CHNL_cd.chn,3  000004 14-28 equ CHNL_cd.nchan,4  14-29  000001 14-30 equ BULK_cd.frec,1 000002 14-31 equ BULK_cd.nrec,2 14-32  14-33 " End of include file ...... config_cards.incl.alm  14-34  158 " 159 include fs_vol_label  15-1  15-2  15-3 "BEGIN INCLUDE FILE fs_vol_label.incl.alm  15-4  15-5  15-6 "Created 03/27/82 1422.1 est Sat by convert_include_file, 15-7 " Version of 12/01/81 1540.3 est Tue.  15-8  15-9 "Made from >udd>m>bongo>htd>nsd>include>fs_vol_label.incl.pl1, 15-10 " modified 03/27/82 1421.0 est Sat  15-11  15-12 "  15-13 " Structure label  15-14 "  002000 15-15 equ label_size,1024  15-16  15-17  000000 15-18 equ label.gcos,0  000500 15-19 equ label.Multics,320  000510 15-20 equ label.version,328  000511 15-21 equ label.mfg_serial,329  000521 15-22 equ label.pv_name,337  000531 15-23 equ label.lv_name,345  000541 15-24 equ label.pvid,353 000542 15-25 equ label.lvid,354 000543 15-26 equ label.root_pvid,355  000544 15-27 equ label.time_registered,356 " DOUBLE 000546 15-28 equ label.n_pv_in_lv,358  000547 15-29 equ label.vol_size,359 000550 15-30 equ label.vtoc_size,360  15-31  000551 15-32 equ label.not_used_word,361  400000 15-33 bool label.not_used,400000 " DU  000551 15-34 equ label.private_word,361 200000 15-35 bool label.private,200000 " DU 000551 15-36 equ label.flagpad_word,361 000000 15-37 equ label.flagpad_shift,0  15-38  000552 15-39 equ label.max_access_class,362 " DOUBLE  000554 15-40 equ label.min_access_class,364 " DOUBLE  000556 15-41 equ label.password,366 " DOUBLE  000600 15-42 equ label.time_mounted,384 " DOUBLE  000602 15-43 equ label.time_map_updated,386 " DOUBLE  000604 15-44 equ label.volmap_version,388  000606 15-45 equ label.time_salvaged,390 " DOUBLE  000610 15-46 equ label.time_of_boot,392 " DOUBLE  000612 15-47 equ label.time_unmounted,394 " DOUBLE  000614 15-48 equ label.last_pvtx,396  000617 15-49 equ label.err_hist_size,399  000620 15-50 equ label.time_last_dmp,400 " DOUBLE  000626 15-51 equ label.time_last_reloaded,406 " DOUBLE  000700 15-52 equ label.root,448 " LEVEL 2  15-53  400000 15-54 bool label.here,400000 " DU  15-55  000701 15-56 equ label.root_vtocx,449  000702 15-57 equ label.shutdown_state,450  000704 15-58 equ label.disk_table_vtocx,452 000705 15-59 equ label.disk_table_uid,453  000706 15-60 equ label.esd_state,454  000707 15-61 equ label.volmap_record,455  000710 15-62 equ label.size_of_volmap,456  000711 15-63 equ label.vtoc_map_record,457  000712 15-64 equ label.size_of_vtoc_map,458 000713 15-65 equ label.volmap_unit_size,459 000714 15-66 equ label.vtoc_origin_record,460  000715 15-67 equ label.dumper_bit_map_record,461  000716 15-68 equ label.vol_trouble_count,462  001003 15-69 equ label.nparts,515  001004 15-70 equ label.parts,516 " LEVEL 2 15-71  001004 15-72 equ label.part,516 001005 15-73 equ label.frec,517 001006 15-74 equ label.nrec,518 15-75  15-76 "END INCLUDE FILE fs_vol_label.incl.alm  160  161 include rwsec  16-1 "  16-2 " Begin include file ...... rwsec.incl.alm  16-3 " Modified on 9/20/72 for the new 181 and 190 disks by Craig Jensen.  16-4 " modifed nss THVV 4/75 16-5 " This subroutine is used to read and write BOS secondary storage.  16-6 "  16-7 " Calling sequence: 16-8 "  16-9 " lda =v24/sector_number,12/sector_count  16-10 " tsx2 (r|w)sec Transfer to one of the entry points of this routine.  16-11 " arg seg|offset Indicate core address  16-12 " tra error Error return  16-13 "  16-14  16-15  014726 16-16 rdsec: "Entry point to read bos secondary storage.  014726 aa 000001 6270 00 16-17 eax7 1 Indicate that rdev is to be called.  014727 0a 014731 7100 00 16-18 tra rws_common 16-19  014730 16-20 wtsec: "Entry point to write bos secondary storage.  014730 aa 000000 6270 00 16-21 eax7 0 Indciate that wdev is to be called.  16-22  014731 16-23 rws_common: 014731 aa 000000 2360 12 16-24 ldq 0,2 Set up the core addr. 014732 0a 014740 7560 00 16-25 stq rwsarg 16-26  014733 aa 000001 2360 12 16-27 ldq 1,2 Set up the addr. for error returns.  014734 0a 014741 7560 00 16-28 stq rwsarg+1  16-29  014735 0a 014742 7420 00 16-30 stx2 rwsx2 Save the return addr. for this routine.  16-31  014736 0a 014744 7020 37 16-32 tsx2 rwskl,7* Call disk dim.  014737 0a 022714 0000 20 16-33 arg =itp(com,bos_dvt),* Pointer to device id.  014740 aa 000000 0110 00 16-34 rwsarg: nop 0 Pointer to the core addr.  014741 aa 000000 0110 00 16-35 nop 0 Pointer to the error processing code.  16-36  014742 0a 014742 6220 00 16-37 rwsx2: eax2 * Restore the return addr. of this routine.  014743 aa 000002 7100 12 16-38 tra 2,2 Return to caller. 16-39  16-40  014744 16-41 rwskl: "Transfer table for calling rdev or wdev. 014744 0a 013446 0000 00 16-42 arg wdev  014745 0a 013431 0000 00 16-43 arg rdev  16-44  16-45 " End of include file ...... rwsec.incl.alm 16-46  162  163 include rwbulk 17-1 "  17-2 " Begin include file ...... rwbulk.incl.alm 17-3 "  17-4 " lda =v24/sector,12/nsectors  17-5 " tsx2 rd/wt bulk  17-6 " nop seg|offset  17-7 " tra error 17-8 "  17-9  17-10  001100 17-11 bool bsmbx,1100 absolute address of bulk store mailbox 17-12  17-13 "  17-14 " MAILBOX DEFINITIONS  17-15 "  17-16 "  17-17 " CSB  17-18 "  001100 17-19 equ mbx.dcb_address,bsmbx+0 pointer to first DCB in mbx  001100 17-20 equ mbx.csb_status,bsmbx+0 5 bits of status stored in CSB  001102 17-21 equ mbx.port,bsmbx+2 bulk store port  001103 17-22 equ mbx.int_cell,bsmbx+3 bulk store interrupt cell 17-23 "  17-24 " DCB  17-25 "  001104 17-26 equ mbx.dcb,bsmbx+4 first word of first dcb  001104 17-27 equ mbx.dcb_op_started,bsmbx+4 bit set in word prior to connect  001104 17-28 equ mbx.dcb_post,bsmbx+4 bit on in word if op to be posted 001105 17-29 equ mbx.dcb_st_addr,bsmbx+5 rel addr of status block  001106 17-30 equ mbx.dcb_mem_addr,bsmbx+6 memory address for transfer  001106 17-31 equ mbx.dcb_tally,bsmbx+6 tally of this operation  001107 17-32 equ mbx.dcb_store_addr,bsmbx+7 bulk store addr for this op 001107 17-33 equ mbx.dcb_control_field,bsmbx+7 operation and mode cntrl bits  17-34 "  17-35 " STATUS BLOCK  17-36 "  001110 17-37 equ mbx.stb.status,bsmbx+8 status of previous operation  001111 17-38 equ mbx.stb.nxt_addr,bsmbx+9 next addr of data xfer  001111 17-39 equ mbx.stb.tally_residue,bsmbx+9 tally residue  001112 17-40 equ mbx.stb.hdwr_ind,bsmbx+10 hardware indicators  001113 17-41 equ mbx.stb.dcw_ptr,bsmbx+11 not used by Multics  17-42 "  17-43 " METERS  17-44 "  001114 17-45 equ total_read_wait_time,bsmbx+12 read wait time  001116 17-46 equ total_wait_time,bsmbx+14 bulk store busy wait time 001120 17-47 equ time_temp,bsmbx+16 temporary  001122 17-48 equ wait_count,bsmbx+18 bulk store busy count 001123 17-49 equ connect_count,bsmbx+19 total connects done 001124 17-50 equ read_count,bsmbx+20 number of read operations 001125 17-51 equ error_count,bsmbx+21 cummulative error count  001126 17-52 equ edac_corr_err,bsmbx+22 count of edac corrected errors  001127 17-53 equ fatal_error_count,bsmbx+23 count of fatal errors (3 successive failures)  001130 17-54 equ error_retry_count,bsmbx+24 temporary for error handling  001131 17-55 equ mbx.save_core_add,bsmbx+25 temporary to hold core_add stack variable  001132 17-56 equ mbx.save_devadd,bsmbx+26 temporary to hold devadd stack variable  001133 17-57 equ mbx.save_inter,bsmbx+27 temporary to hold inter stack variable 001134 17-58 equ mbx.edac_buckets,bsmbx+28 8 counters (1 per CSM) for EDAC corr errors  17-59 "  17-60 " BULK STORE COMMANDS  17-61 "  000011 17-62 bool write,11  000015 17-63 bool read,15  001000 17-64 bool sps,1000 status pointer selector flag  17-65 "  17-66 " VARIOUS MASKS 17-67 "  000037 17-68 bool csb_status_mask,37 DL  000020 17-69 bool status_store_error,20 DL  000010 17-70 bool next_dcb_error,10 DL 000004 17-71 bool status_ptr_error,4 DL  000002 17-72 bool service_started,2 DL 000001 17-73 bool bs_busy,1 DL  000034 17-74 bool csb_error_status_mask,34 DL  170000 17-75 bool dcb_major_status_mask,170000 DU  007700 17-76 bool dcb_minor_status_mask,7700 DU 000070 17-77 bool dcb_edac_status_mask,70 DU  000001 17-78 bool post_bit,1 DL  000002 17-79 bool op_started_bit,2 DL  17-80  17-81 " 17-82  014746 17-83 rdbulk: 014746 aa 001015 2250 03 17-84 ldx5 read+sps,du get bulk store read command  014747 0a 014751 7100 00 17-85 tra *+2  17-86  014750 17-87 wtbulk: 014750 aa 001011 2250 03 17-88 ldx5 write+sps,du get bulk store write command 014751 aa 7 01107 4451 00 17-89 sxl5 mem|mbx.dcb_control_field store command in mailbox  014752 0a 015100 7550 00 17-90 sta bstemp save sector addr and count (although we can  17-91 " write the bulk store on a 4 word boundary, 17-92 " we simulate a 64 wrd boundary to be  17-93 " compatible with other devices on Multics). 014753 aa 000006 7350 00 17-94 als 6 place sector address in AU  014754 aa 7 01107 7511 70 17-95 stca mem|mbx.dcb_store_addr,70 store bulk store addr in mailbox  17-96  014755 aa 000000 2360 12 17-97 ldq 0,2 get core address  014756 0a 014757 5520 64 17-98 stbq *+1,64 store address and bit 29  014757 aa 0 00000 2121 00 17-99 absa 0|0 **** THIS INSTRUCTION GETS MODIFIED **** 014760 aa 7 01106 7511 74 17-100 stca mem|mbx.dcb_mem_addr,74 store memory address in dcb  17-101  014761 0a 015001 7420 00 17-102 stx2 bsx2 save x2 014762 17-103 bsinit: 014762 0a 014763 7100 00 17-104 tra *+1 initialize switch 014763 0a 022702 2350 00 17-105 lda =abulk get port from config card  014764 0a 017616 7020 00 17-106 tsx2 getconf  014765 0a 015063 7100 00 17-107 tra bs_conf_error no config card, go barf  014766 aa 6 00003 2351 17 17-108 lda com|3,7 get bulk store port number  014767 0a 015101 7550 00 17-109 sta bsport stash away 014770 aa 001104 6350 00 17-110 eaa mbx.dcb get abs dcb address  014771 aa 001100 1750 03 17-111 sba bsmbx,du make address relative  014772 aa 000006 7710 00 17-112 arl 6 position  014773 aa 7 01100 7551 00 17-113 sta mem|mbx.dcb_address store rel address in csb  014774 aa 7 01104 4501 00 17-114 stz mem|mbx.dcb zero first word of dcb 014775 aa 001110 6350 00 17-115 eaa mbx.stb.status get abs status block address  014776 aa 001100 1750 03 17-116 sba bsmbx,du make address relative  014777 aa 000006 7710 00 17-117 arl 6 position  015000 aa 7 01105 7551 00 17-118 sta mem|mbx.dcb_st_addr store rel addr of status block in dcb  015001 0a 015001 6220 00 17-119 bsx2: eax2 * restore x2  015002 0a 015004 6270 00 17-120 eax7 *+2  015003 0a 014762 7470 00 17-121 stx7 bsinit don't go thru init code anymore  17-122  015004 0a 015100 2350 00 17-123 lda bstemp get sector count  015005 aa 007777 3750 07 17-124 ana =o7777,dl isolate sector count  015006 aa 000002 6000 12 17-125 tze 2,2 nothing - all done  015007 aa 7 01106 7511 03 17-126 stca mem|mbx.dcb_tally,03 store in mailbox as a tally  17-127  015010 aa 000003 6250 00 17-128 eax5 3 init error retry counter  015011 aa 000001 2350 07 17-129 bs_cioc: lda bs_busy,dl get busy bit  015012 aa 7 01100 2551 00 17-130 orsa mem|mbx.csb_status set busy bit in csb  015013 0a 015101 0150 00 17-131 cioc bsport z-a-p!  015014 17-132 bs_busy_loop:  015014 aa 7 01100 2351 00 17-133 lda mem|mbx.csb_status is bulk store still busy?  015015 aa 000001 3150 07 17-134 cana bs_busy,dl .. 015016 0a 015014 6010 00 17-135 tnz bs_busy_loop yes  015017 aa 000034 3150 07 17-136 cana csb_error_status_mask,dl isolate  015020 0a 015025 6010 00 17-137 tnz bs_error error  015021 aa 7 01110 2351 00 17-138 lda mem|mbx.stb.status get major status from dcb  015022 aa 170000 3750 03 17-139 ana dcb_major_status_mask,du isolate  015023 0a 015025 6010 00 17-140 tnz bs_error error  015024 aa 000002 7100 12 17-141 tra 2,2 success, return  17-142  015025 17-143 bs_error:  015025 aa 777777 6250 15 17-144 eax5 -1,5 decrement retry count  015026 0a 015011 6050 00 17-145 tpl bs_cioc go try again  015027 aa 7 01100 2351 00 17-146 lda mem|mbx.csb_status get csb status for error printing  015030 aa 000037 3750 07 17-147 ana csb_status_mask,dl isolate 015031 0a 015102 7550 00 17-148 sta bs_csb save in temp  015032 aa 7 01110 2351 00 17-149 lda mem|mbx.stb.status get three words of status block 015033 0a 015103 7550 00 17-150 sta bs_csb+1 and save in temps  015034 aa 7 01111 2351 00 17-151 lda mem|mbx.stb.nxt_addr  015035 0a 015104 7550 00 17-152 sta bs_csb+2  015036 aa 7 01112 2351 00 17-153 lda mem|mbx.stb.hdwr_ind  015037 0a 015105 7550 00 17-154 sta bs_csb+3  015040 0a 015562 7020 00 17-155 tsx2 erpt tell the world  015041 aa 044 142 165 154 17-156 acc 'bulk err: csb = ^o,status = ^w ^w ^w' 015042 aa 153 040 145 162 015043 aa 162 072 040 143 015044 aa 163 142 040 075 015045 aa 040 136 157 054 015046 aa 163 164 141 164 015047 aa 165 163 040 075 015050 aa 040 136 167 040 015051 aa 136 167 040 136 015052 aa 167 000 000 000 015053 0a 015102 0110 00 17-157 nop bs_csb 015054 0a 015103 0110 00 17-158 nop bs_csb+1  015055 0a 015104 0110 00 17-159 nop bs_csb+2  015056 0a 015105 0110 00 17-160 nop bs_csb+3  015057 0a 015001 2220 00 17-161 ldx2 bsx2 restore x2  015060 aa 7 01110 2351 00 17-162 lda mem|mbx.stb.status return status  015061 aa 000001 7160 12 17-163 xec 1,2 take error return 015062 aa 000002 7100 12 17-164 tra 2,2 in case error returns here  17-165  015063 17-166 bs_conf_error:  015063 0a 015562 7020 00 17-167 tsx2 erpt no bulk card  015064 aa 040 156 157 040 17-168 acc 'no bulk store configuration card' 015065 aa 142 165 154 153 015066 aa 040 163 164 157 015067 aa 162 145 040 143 015070 aa 157 156 146 151 015071 aa 147 165 162 141 015072 aa 164 151 157 156 015073 aa 040 143 141 162 015074 aa 144 000 000 000 015075 0a 015001 2220 00 17-169 ldx2 bsx2 restore x2  015076 aa 000001 7160 12 17-170 xec 1,2 take error exit  015077 0a 015077 6160 00 17-171 dis * better not return  17-172  17-173  015100 aa 000000 000000 17-174 bstemp: oct 0  015101 aa 000000 000000 17-175 bsport: oct 0  015102 aa 000000 000000 17-176 bs_csb: oct 0,0,0,0 015103 aa 000000 000000 015104 aa 000000 000000 015105 aa 000000 000000 17-177 "  17-178 " End include file rwbulk.incl.alm  17-179 "  164  165 include rwdisk 18-1 "  18-2 " Begin include file rwdisk.incl.alm  18-3 " modified 11/2/74 by Noel I. Morris  18-4 " Modified 5/75 THVV for nss  18-5  18-6  18-7 " This is the BOS DIM for movable-arm disks. It has  18-8 " two entries for each disk, which are used to read and write that disk.  18-9 " Each of the entry points is called in the following manner:  18-10 "  18-11 " lda =v24/sector,12/nsectors  18-12 " tsx2 entry_name Specify the entry point to be called. 18-13 " arg =v(3/iom,6/chn,9/unit,18/device_type) 18-14 " nop seg|offset core area to be used for the i/o.  18-15 " tra error Error return  18-16 "  18-17  18-18  015106 18-19 rd500:  015106 18-20 rd450:  015106 18-21 rd400:  015106 18-22 rd190:  015106 18-23 rd181:  015106 18-24 rd501:  015106 aa 250000 2360 03 18-25 ldq disk_read*4096,du read command in Q  015107 0a 015112 7100 00 18-26 tra rwi_common join common code  18-27  18-28  015110 18-29 wd500:  015110 18-30 wd450:  015110 18-31 wd400:  015110 18-32 wd190:  015110 18-33 wd181:  015110 18-34 wd501:  015110 aa 310000 2360 03 18-35 ldq disk_write*4096,du write command in Q  015111 0a 015112 7100 00 18-36 tra rwi_common join common code  18-37  18-38  18-39 " 18-40  015112 18-41 rwi_common: 015112 0a 015207 7420 00 18-42 stx2 rwix2 Save x regs.  18-43  18-44 " Set read/write command and device I.D.  18-45  015113 0a 015363 7520 40 18-46 stcq rwilist+2,40 Set device command in IDCW.  015114 aa 000036 7720 00 18-47 qrl 30 Save it for printing error messages.  015115 0a 015334 7560 00 18-48 stq rwicmd 18-49  015116 0a 022716 2360 00 18-50 ldq =a**** default subsystem name 015117 aa 000000 7270 32 18-51 lxl7 0,2* get device type and config ptr  015120 aa 777760 3670 03 18-52 anx7 =o777760,du leave only config ptr 015121 0a 015123 6000 00 18-53 tze *+2 if none, use default  015122 aa 6 00001 2361 17 18-54 ldq com|DISK_cd.sub,7 get subsystem name from config card  015123 0a 015375 7560 00 18-55 stq rwi_sub_name save it  18-56  015124 aa 000000 7270 32 18-57 lxl7 0,2* get device type into x7 015125 aa 000017 3670 03 18-58 anx7 =o17,du mask device type code  015126 0a 014610 2360 17 18-59 ldq fs_dev.dev_type_names-1,7 Save name of disk device for err msg.  015127 0a 015374 7560 00 18-60 stq rwi_disk_name  18-61  18-62 " Set device code and sector address.  18-63  015130 aa 000030 7750 00 18-64 alr 36-12 Store sector addr. for i/o in seek data word.  015131 0a 015333 2750 00 18-65 ora rwiti OR in the track indicators 015132 0a 015353 7550 00 18-66 sta rwiseekaddr  18-67  015133 aa 000000 2360 32 18-68 ldq 0,2* Get the device info.. channel, etc  015134 0a 015357 5520 40 18-69 stbq rwipcw+1,40 Put channel no in the PCW 015135 aa 000011 7720 00 18-70 qrl 9 Get to DU  015136 0a 015347 7520 70 18-71 stcq rwichanno,70 Save for check_status call.  18-72  015137 aa 000011 7720 00 18-73 qrl 9 Isolate device number  015140 0a 015335 5520 04 18-74 stbq rwidevno,04 Save it for printing error messages.  015141 aa 000014 7360 00 18-75 qls 12 Shift to device address position.  015142 0a 015347 7520 04 18-76 stcq rwichanno,04 Needed for xio_wait call.  015143 aa 000014 7360 00 18-77 qls 12 Place the device # in all IDCW's used by this routine. 015144 0a 015361 7520 20 18-78 stcq rwilist,20 Seek IDCW  015145 0a 015363 7520 20 18-79 stcq rwilist+2,20 Read/Write IDCW  015146 0a 015356 7520 20 18-80 stcq rwipcw,20 Set device # in PCW, too, for CP channel.  015147 0a 015360 7520 20 18-81 stcq rwirestore,20 Restore IDCW  18-82  18-83 " 18-84  18-85 " Set core addresses in DCW's.  18-86  015150 aa 000001 2360 12 18-87 ldq 1,2 Get the addr. in seg|offset form. 18-88 " Convert it to absolute form.  015151 0a 015152 5520 64 18-89 stbq *+1,64 (Store address and bit 29.)  015152 aa 0 00000 2121 00 18-90 absa 0|0 **** THIS INSTRUCTION GETS MODIFIED **** 015153 aa 000030 7750 00 18-91 alr 36-12 Position address extension. 015154 0a 015363 7510 10 18-92 stca rwilist+2,10 Set extension in IDCW.  18-93  015155 aa 000022 7350 00 18-94 als 18 Low-order part of address in AU.  015156 0a 015353 2270 00 18-95 ldx7 rwiseekaddr Get sector count in X7.  015157 aa 777700 3670 03 18-96 anx7 =o777700,du Mask to get word count.  015160 aa 000000 6260 00 18-97 eax6 0 X6 is DCW list index.  015161 aa 010000 2750 07 18-98 ora =o10000,dl Insert IOTP bit.  18-99  015162 0a 015364 7550 16 18-100 rwibll: sta rwilist+3,6 Store IOTP DCW. 015163 aa 010000 1070 03 18-101 cmpx7 4096,du Tally > 4096 ?  015164 0a 015171 6044 00 18-102 tmoz rwiblx If not, tra.  015165 aa 010000 0350 03 18-103 adla 4096,du Bump DCW address.  015166 aa 000001 6260 16 18-104 eax6 1,6 Bump DCW list index. 015167 aa 770000 6270 17 18-105 eax7 -4096,7 Decrement remaining tally.  015170 0a 015162 7100 00 18-106 tra rwibll Go back and set another DCW.  18-107  015171 aa 007777 3670 03 18-108 rwiblx: anx7 =o7777,du Mask tally. (Needed if tally = 4096.)  015172 0a 015364 4470 16 18-109 sxl7 rwilist+3,6 Store final tally and clear IOTP bit. 18-110  015173 0a 015353 2120 00 18-111 absa rwiseekaddr Place the absolute addr. of the seek data word in a  015174 aa 000006 7350 00 18-112 als 6 data DCW.  015175 0a 015362 7510 70 18-113 stca rwilist+1,70  18-114  18-115  18-116 " 18-117  18-118 " Perform the I/O.  18-119  015176 0a 015346 4500 00 18-120 stz rwitrys Zero the error retry count.  015177 0a 020151 7020 00 18-121 tsx2 connect_iom Start i/o.  015200 00 015356 015361 18-122 zero rwipcw,rwilist Indicate where the PCW's and DCW's for this i/o are.  18-123  015201 18-124 rwi_retry: "If i/o errors occur, the i/o error handler loops  18-125 " to here after restarting the i/o. 015201 0a 020206 7020 00 18-126 tsx2 check_status Is the i/o done? 015202 0a 015347 0000 00 18-127 arg rwichanno (Indicate which channel we are concerned about.)  015203 aa 000000 000000 18-128 zero 0 No, wait for status to arrive.  015204 0a 015211 7100 00 18-129 tra rwierr Process all i/o errors. This instr. is 18-130 " skipped if there were none.  18-131  015205 aa 707777 3160 07 18-132 canq =o707777,dl Is the tally residue ok?  015206 0a 015211 6010 00 18-133 tnz rwierr No, then gripe about the bad tally residue.  18-134  015207 18-135 rwiend: "Normal exit code for this routine.  015207 0a 015207 6220 00 18-136 rwix2: eax2 * Restore the x regs. 015210 aa 000003 7100 12 18-137 tra 3,2  18-138  18-139  18-140 " 18-141  015211 0a 015342 7570 00 18-142 rwierr: staq rwistat store status for printout 015212 0a 015354 2340 00 18-143 szn disk_brief Should message be suppressed?  015213 0a 015320 6010 00 18-144 tnz rwiskiper If so, bypass erpt call.  18-145  015214 0a 015347 2350 00 18-146 lda rwichanno get channel and IOM number  015215 aa 000022 7710 00 18-147 arl 18 in AL  015216 0a 015336 7510 01 18-148 stca rwichan,01 save channel for printing  015217 aa 000006 7710 00 18-149 arl 6 right-justify IOM number  015220 0a 022712 0350 00 18-150 adla =h a make into letter  015221 0a 015337 7550 00 18-151 sta rwiiom and save  18-152  015222 0a 015562 7020 00 18-153 tsx2 erpt print disk ID  015223 aa 032 145 162 162 18-154 acc 'error on ^a ^g ^o ^d (^a):'  015224 aa 157 162 040 157 015225 aa 156 040 136 141 015226 aa 040 136 147 040 015227 aa 136 157 040 136 015230 aa 144 040 050 136 015231 aa 141 051 072 000 015232 0a 015374 0000 00 18-155 arg rwi_disk_name  015233 0a 015337 0000 00 18-156 arg rwiiom 015234 0a 015336 0000 00 18-157 arg rwichan  015235 0a 015335 0000 00 18-158 arg rwidevno  015236 0a 015375 0000 00 18-159 arg rwi_sub_name  18-160  015237 0a 015364 2350 00 18-161 lda rwilist+3 get core addr  015240 aa 000022 7710 00 18-162 arl 18 015241 0a 015341 7550 00 18-163 sta rwiaddr  18-164  015242 0a 015353 2350 00 18-165 lda rwiseekaddr get storage unit and sector  015243 0a 022717 3750 00 18-166 ana =o7777777  015244 0a 015340 7550 00 18-167 sta rwisect  18-168  015245 0a 015562 7020 00 18-169 tsx2 erpt Print error message.  015246 aa 046 040 040 040 18-170 acc ' cmd=^o, s=^o, addr=^o, stat=^w ^w'  015247 aa 040 040 143 155 015250 aa 144 075 136 157 015251 aa 054 040 163 075 015252 aa 136 157 054 040 015253 aa 141 144 144 162 015254 aa 075 136 157 054 015255 aa 040 163 164 141 015256 aa 164 075 136 167 015257 aa 040 136 167 000 015260 0a 015334 0000 00 18-171 arg rwicmd 015261 0a 015340 0000 00 18-172 arg rwisect  015262 0a 015341 0000 00 18-173 arg rwiaddr  015263 0a 015342 0000 00 18-174 arg rwistat  015264 0a 015343 0000 00 18-175 arg rwistat+1  18-176  015265 0a 020441 7020 00 18-177 tsx2 xio_wait read detailed status  015266 0a 015344 000200 18-178 vfd 18/rwidetail,12/2  015267 0a 015347 000022 18-179 zero rwichanno,disk_status 015270 0a 015320 7100 00 18-180 tra rwiskiper  18-181  015271 0a 015344 2350 00 18-182 lda rwidetail convert to hex  015272 0a 017410 7020 00 18-183 tsx2 hexwd 015273 0a 015350 7550 00 18-184 sta rwihex 015274 0a 015344 2370 00 18-185 ldaq rwidetail 015275 aa 000030 7370 00 18-186 lls 24 015276 0a 017410 7020 00 18-187 tsx2 hexwd 015277 0a 015351 7550 00 18-188 sta rwihex+1  015300 0a 015345 2360 00 18-189 ldq rwidetail+1  015301 aa 000060 7370 00 18-190 lls 48 015302 0a 017410 7020 00 18-191 tsx2 hexwd 015303 0a 022720 2750 00 18-192 ora =h0000 "  015304 0a 015352 7550 00 18-193 sta rwihex+2  18-194  015305 0a 015562 7020 00 18-195 tsx2 erpt announce detailed status  015306 aa 030 144 145 164 18-196 acc 'detailed status: ^g^g^g.' 015307 aa 141 151 154 145 015310 aa 144 040 163 164 015311 aa 141 164 165 163 015312 aa 072 040 136 147 015313 aa 136 147 136 147 015314 aa 056 000 000 000 015315 0a 015350 0000 00 18-197 arg rwihex 015316 0a 015351 0000 00 18-198 arg rwihex+1  015317 0a 015352 0000 00 18-199 arg rwihex+2  18-200  015320 18-201 rwiskiper:  015320 0a 015346 0540 00 18-202 aos rwitrys Count the no. of times the i/o was retried.  015321 0a 015346 2350 00 18-203 lda rwitrys Has the maximum no. of retries been done? 015322 aa 000004 1150 07 18-204 cmpa =4,dl  015323 0a 015327 6050 00 18-205 tpl rwifatal Yes, go to process fatal error condition.  18-206  015324 0a 020151 7020 00 18-207 tsx2 connect_iom Restart the i/o, which will cause a restore  18-208 " (recalibration of the seek arm) to be done.  015325 00 015356 015360 18-209 zero rwipcw,rwi_reseek 015326 0a 015201 7100 00 18-210 tra rwi_retry Go to rest of retry loop.  18-211  18-212 " Process fatal errors.  015327 0a 015207 2220 00 18-213 rwifatal: ldx2 rwix2  015330 0a 015342 2350 00 18-214 lda rwistat so dump will print something  015331 aa 000002 7160 12 18-215 xec 2,2  015332 0a 015207 7100 00 18-216 tra rwiend 18-217  18-218  18-219 " 18-220  015333 aa 000000 000000 18-221 rwiti: oct 0 track indicators  015334 aa 000000 000000 18-222 rwicmd: oct 0  015335 aa 000000 000000 18-223 rwidevno: oct 0 015336 aa 000000 000000 18-224 rwichan: oct 0  015337 aa 000000 000000 18-225 rwiiom: oct 0  015340 aa 000000 000000 18-226 rwisect: oct 0  015341 aa 000000 000000 18-227 rwiaddr: oct 0  18-228 even  015342 aa 000000 000000 18-229 rwistat: oct 0,0  015343 aa 000000 000000 015344 18-230 rwidetail:bss ,2  015346 aa 000000 000000 18-231 rwitrys: oct 0  015347 18-232 rwichanno:  015347 aa 000000 000000 18-233 oct 0  015350 18-234 rwihex: bss ,3  015353 18-235 rwiseekaddr:  015353 aa 000000 000000 18-236 oct 0  18-237  015354 18-238 disk_brief: 015354 aa 000000 000000 18-239 oct 0 Non-zero to suppress error messages.  18-240  18-241  000025 18-242 bool disk_read,25 Table of DCW op-codes.  000031 18-243 bool disk_write,31 000034 18-244 bool disk_seek,34  000042 18-245 bool disk_restore,42  000022 18-246 bool disk_status,22  18-247  015355 aa 000000 0110 03 18-248 even  18-249 " The following PCW will perform a Reset Status for a Common Peripheral Channel.  18-250 " It will then proceed with the DCW list.  18-251 " This PCW will be ignored by a Peripheral Subsystem Interface Adapter (PSIA).  18-252  015356 aa 400000 720201 18-253 rwipcw: vfd o6/40,6/0,6/0,3/7,3/2,o6/2,6/1  015357 aa 000000 000000 18-254 vfd 9/0  18-255  18-256  015360 18-257 rwi_reseek: " The disk is reconnected here after an error occurs.  015360 18-258 rwirestore: 015360 aa 420000 720200 18-259 vfd o6/disk_restore,6/0,6/0,3/7,3/2,6/2,6/0 Restore IDCW.  015361 18-260 rwilist: " The disk is normally connected here. 015361 aa 340000 720000 18-261 vfd 6/disk_seek,6/0,6/0,3/7,3/2,6/0,6/0 Seek IDCW  015362 0a 015353 000001 18-262 vfd 18/rwiseekaddr,6/0,12/1 IOTD to transmit the seek address. 015363 aa 000000 740000 18-263 vfd 6/0,6/0,6/0,3/7,3/4,6/0,6/0 Read or write IDCW.  015364 18-264 bss ,8 DCW list to transmit the data. 18-265  015374 aa 052 052 052 052 18-266 rwi_disk_name: aci '****' Name of the device currently being used. 015375 aa 052 052 052 052 18-267 rwi_sub_name: aci '****' Name of subsystem currently being used.  18-268  18-269 " End of include file ...... rwdisk.incl.alm  18-270  166  167 include itape  19-1 " 19-2 " Begin include file ...... itape.incl.alm  19-3 " Created by N. I. Morris on 7/21/73  19-4 " Rewritten 6/79 by R.J.C. Kissel to add density command argument to itapew 19-5 " and to handle all densities in itaper.  19-6 "  19-7 " tsx2 itaper to initialize tape for reading  19-8 " arg tapeno  19-9 "  19-10 "  19-11 " tsx2 itapew to initialize tape for writing  19-12 " arg tapeno handler # in bits 18-23  19-13 " arg tapeden set density command for desired density in dl 19-14 " error_return  19-15 " normal_return 19-16 "  015376 19-17 itaper: 015376 0a 015453 7420 00 19-18 stx2 itrx2 Save x2 for return 19-19  015377 0a 015513 7070 00 19-20 tsx7 itsetno Set itno for use in I/O  19-21  015400 0a 015407 6270 00 19-22 eax7 itnrzi Modify the status transfer vector for 800 bpi 015401 0a 015545 7470 00 19-23 stx7 itstattb+3 Set parity error entry 015402 0a 015416 6270 00 19-24 eax7 itpe  015403 0a 015547 7470 00 19-25 stx7 itstattb+5 Set command reject entry  015404 0a 015554 7470 00 19-26 stx7 itstattb+10 Set incompatible mode entry  19-27  015405 aa 000060 2350 07 19-28 lda =o60,dl Load a with 800 bpi command  015406 0a 015455 7100 00 19-29 tra ittryden Return is handled through the transfer vector  19-30  015407 19-31 itnrzi: 015407 0a 015433 6270 00 19-32 eax7 itrioerr Modify the status transfer vector for 556 bpi  015410 0a 015545 7470 00 19-33 stx7 itstattb+3  015411 0a 015547 7470 00 19-34 stx7 itstattb+5  015412 0a 015416 6270 00 19-35 eax7 itpe  015413 0a 015554 7470 00 19-36 stx7 itstattb+10  19-37  015414 aa 000061 2350 07 19-38 lda =o61,dl Load a with 556 bpi command  015415 0a 015455 7100 00 19-39 tra ittryden Return is handled through the transfer vector  19-40  015416 19-41 itpe:  015416 0a 015433 6270 00 19-42 eax7 itrioerr Modify the status transfer vector for 1600 bpi  015417 0a 015545 7470 00 19-43 stx7 itstattb+3  015420 0a 015425 6270 00 19-44 eax7 itgcr 015421 0a 015547 7470 00 19-45 stx7 itstattb+5  015422 0a 015554 7470 00 19-46 stx7 itstattb+10  19-47  015423 aa 000065 2350 07 19-48 lda =o65,dl Load a with 1600 bpi command  015424 0a 015455 7100 00 19-49 tra ittryden Return is handled through the transfer vector  19-50  015425 19-51 itgcr:  015425 0a 015433 6270 00 19-52 eax7 itrioerr Modify the status transfer vector for 6250 bpi  015426 0a 015545 7470 00 19-53 stx7 itstattb+3  015427 0a 015547 7470 00 19-54 stx7 itstattb+5  015430 0a 015554 7470 00 19-55 stx7 itstattb+10  19-56  015431 aa 000041 2350 07 19-57 lda =o41,dl Load a with 6250 bpi command  015432 0a 015455 7100 00 19-58 tra ittryden Return is handled through the transfer vector  19-59  015433 19-60 itrioerr:  015433 0a 015562 7020 00 19-61 tsx2 erpt  015434 aa 056 125 156 141 19-62 acc "Unable to set density in itaper. (status = ^w)"  015435 aa 142 154 145 040 015436 aa 164 157 040 163 015437 aa 145 164 040 144 015440 aa 145 156 163 151 015441 aa 164 171 040 151 015442 aa 156 040 151 164 015443 aa 141 160 145 162 015444 aa 056 040 050 163 015445 aa 164 141 164 165 015446 aa 163 040 075 040 015447 aa 136 167 051 000 015450 0a 015536 0000 00 19-63 arg itstat 015451 0a 015453 7100 00 19-64 tra itrx2 Don't even try to rewind  19-65  015452 19-66 itrdone:  015452 0a 015521 7070 00 19-67 tsx7 itrewind  19-68  015453 19-69 itrx2:  015453 0a 015453 6220 00 19-70 eax2 * 015454 aa 000001 7100 12 19-71 tra 1,2 Return to caller  19-72  19-73 " Set density command expected in a, return through transfer vector 015455 19-74 ittryden:  015455 0a 015462 7510 01 19-75 stca itrden,01 Store density command in xio_wait argument 015456 0a 015541 7420 00 19-76 stx2 itdenx2 Save x2  19-77  015457 0a 015521 7070 00 19-78 tsx7 itrewind Rewind the tape 19-79  015460 0a 020441 7020 00 19-80 tsx2 xio_wait Set the density 015461 aa 000000 000000 19-81 zero  015462 0a 015535 000000 19-82 itrden: zero itno,0 015463 0a 015470 7100 00 19-83 tra itdenerr  19-84  015464 0a 020441 7020 00 19-85 tsx2 xio_wait Try the density 015465 0a 015537 000100 19-86 vfd 18/itbuf,12/1,6/0 One word is sufficient  015466 0a 015535 000005 19-87 zero itno,5 Read binary  015467 0a 015470 7100 00 19-88 tra *+1  19-89  015470 19-90 itdenerr:  015470 0a 015541 2220 00 19-91 ldx2 itdenx2 Restore x2  015471 0a 015536 7550 00 19-92 sta itstat Save the status from the I/O  015472 aa 170000 3750 03 19-93 ana =o170000,du Mask for major status only 015473 aa 000036 7710 00 19-94 arl 30 Put major status in al 015474 0a 015542 7100 05 19-95 tra itstattb,al Return depending on the major status  19-96 " 015475 19-97 itapew: 015475 0a 015507 7420 00 19-98 stx2 itwx2 Save x2 for return 015476 0a 015511 7420 00 19-99 stx2 itwex2 Save x2 for error return  19-100  015477 0a 015513 7070 00 19-101 tsx7 itsetno Set itno for use in I/O  19-102  015500 0a 015521 7070 00 19-103 tsx7 itrewind Rewind the tape 19-104  015501 aa 000001 2350 32 19-105 lda 1,2* Get the density command argument 015502 0a 015505 7510 01 19-106 stca itwden,01 Store in xio_wait argument 19-107  015503 0a 020441 7020 00 19-108 tsx2 xio_wait Set the density 015504 aa 000000 000000 19-109 zero  015505 0a 015535 000000 19-110 itwden: zero itno,0 015506 0a 015511 7100 00 19-111 tra itwex2 19-112  015507 19-113 itwx2:  015507 0a 015507 6220 00 19-114 eax2 * This is modified above 015510 aa 000003 7100 12 19-115 tra 3,2 Return to caller  19-116  015511 19-117 itwex2: 015511 0a 015511 6220 00 19-118 eax2 * This is modified above 015512 aa 000002 7100 12 19-119 tra 2,2 Error return, status is in a  19-120 " 015513 19-121 itsetno:  015513 0a 015520 7470 00 19-122 stx7 itsx7 Save x7  015514 aa 6 02015 2271 00 19-123 ldx7 com|tapechanno Get tape channel # 015515 aa 000000 7470 32 19-124 stx7 0,2* Save in word with unit #  015516 aa 000000 2350 32 19-125 lda 0,2*  015517 0a 015535 7550 00 19-126 sta itno Save for performing I/O  19-127  015520 0a 015520 7100 00 19-128 itsx7: tra * Return to main routine  19-129  015521 19-130 itrewind:  015521 0a 015534 7470 00 19-131 stx7 itrwx7 Save x7  015522 0a 015540 7420 00 19-132 stx2 itrwx2 Save x2  19-133  015523 0a 020441 7020 00 19-134 tsx2 xio_wait Rewind tape 015524 aa 000000 000000 19-135 zero  015525 0a 015535 000070 19-136 zero itno,56 Rewind command  015526 0a 015523 7100 00 19-137 tra *-3  19-138  015527 0a 020441 7020 00 19-139 tsx2 xio_wait Wait for rewind to complete 015530 aa 000000 000000 19-140 zero  015531 0a 015535 000040 19-141 zero itno,32 Reset Status command 015532 0a 015527 7100 00 19-142 tra *-3  19-143  015533 0a 015540 2220 00 19-144 ldx2 itrwx2 Restore x2  015534 0a 015534 7100 00 19-145 itrwx7: tra * Return to main routine  19-146  19-147  015535 aa 000000 000000 19-148 itno: oct 0 Channel and device number saved here  015536 aa 000000 000000 19-149 itstat: oct 0 Status saved here  015537 aa 000000 000000 19-150 itbuf: oct 0 I/O buffer area  015540 aa 000000 000000 19-151 itrwx2: oct 0 Save x2 when rewinding  015541 aa 000000 000000 19-152 itdenx2: oct 0 Save x2 when setting the density  19-153  19-154 " Status table transfer vector  015542 19-155 itstattb:  015542 0a 015452 7100 00 19-156 tra itrdone 0 - Ready  015543 0a 015433 7100 00 19-157 tra itrioerr 1 - Device Busy 015544 0a 015433 7100 00 19-158 tra itrioerr 2 - Device Attention  015545 0a 015545 7100 00 19-159 tra * 3 - Device Data Alert (parity) 015546 0a 015433 7100 00 19-160 tra itrioerr 4 - EOF 015547 0a 015547 7100 00 19-161 tra * 5 - Command Reject (invalid density)  015550 0a 015433 7100 00 19-162 tra itrioerr 6  015551 0a 015433 7100 00 19-163 tra itrioerr 7  015552 0a 015433 7100 00 19-164 tra itrioerr 8  015553 0a 015433 7100 00 19-165 tra itrioerr 9  015554 0a 015554 7100 00 19-166 tra * 10 - MPC Device Attention (incompatible mode)  015555 0a 015433 7100 00 19-167 tra itrioerr 11 - MPC Device Data Alert  015556 0a 015433 7100 00 19-168 tra itrioerr 12  015557 0a 015433 7100 00 19-169 tra itrioerr 13 - MPC Command Reject  015560 0a 015433 7100 00 19-170 tra itrioerr 14  015561 0a 015433 7100 00 19-171 tra itrioerr 15  19-172  19-173 " End of include file ...... itape.incl.alm 19-174  168  169 include error  20-1 " Begin include file ...... error.incl.alm  20-2 " Last modified 5/3/77 by Noel I. Morris  20-3 " Modified November 1981 by C. Hornig to not use IOM rel mode.  20-4  20-5 " tsx2 erpt to print error messages 20-6 " acc 'message' 20-7 " nop a,t " parameters  20-8 " ^w full word octal  20-9 " ^o zero suppressed octal 20-10 " ^n octal with no spaces inserted 20-11 " ^d decimal  20-12 " ^a ASCII (4 char)  20-13 " ^g GE code (6 char)  20-14  015562 0a 016033 4500 00 20-15 erpt: stz ersw clear convert only switch  20-16  015563 0a 015767 7430 00 20-17 erjn: stx3 errx3 save X3  20-18  015564 0a 016062 7420 00 20-19 stx2 errin set address of message descriptor  015565 aa 000000 2350 12 20-20 lda 0,2 get character count from string  015566 aa 000033 7710 00 20-21 arl 27 .. 015567 aa 000000 6270 05 20-22 eax7 0,al length of string in X7  015570 0a 016063 7470 00 20-23 stx7 erlen save length  015571 aa 000001 6260 00 20-24 eax6 1 X6 is offset into input string 20-25  015572 aa 000002 7710 00 20-26 arl 2 divide character count by 4 015573 aa 000001 6230 05 20-27 eax3 1,al round  015574 0a 016062 0230 00 20-28 adlx3 errin X3 -> first parameter 20-29  015575 aa 000124 6240 00 20-30 eax4 84 remaining length of output in X4  015576 aa 000000 6250 00 20-31 eax5 0 X5 is offset into output string  20-32  20-33  20-34 " 20-35  015577 aa 000000 1040 03 20-36 erloop: cmpx4 0,du is output string exhausted? 015600 0a 015741 6044 00 20-37 tmoz erprnt if so, print message now  20-38  015601 0a 016063 1060 00 20-39 cmpx6 erlen is input string exhausted?  015602 0a 015741 6054 00 20-40 tpnz erprnt if so, print completed message  20-41  015603 aa 000000 1004 36 20-42 mlr (id,x6),(),fill(0) grab one character  015604 0a 016062 0000 00 20-43 arg errin  015605 0a 016061 000004 20-44 desc9a errarg,4  20-45  015606 aa 000001 6260 16 20-46 eax6 1,6 step offset over character  20-47  015607 0a 016061 2350 00 20-48 lda errarg pick up character  015610 aa 136000 1150 03 20-49 cmpa =1a^,du is it "^"?  015611 0a 015621 6000 00 20-50 tze ernot if so, go process it  20-51  015612 aa 000015 1604 00 20-52 mvt (),(x5) insert translated character in output 015613 0a 016061 000001 20-53 desc9a errarg,1  015614 0a 015777 020001 20-54 desc6a erbuf,1 015615 0a 016233 0000 00 20-55 arg asgetab  20-56  015616 aa 000001 6250 15 20-57 eax5 1,5 step output offset and length  015617 aa 777777 6240 14 20-58 eax4 -1,4 ..  015620 0a 015577 7100 00 20-59 tra erloop and loop  20-60  015621 aa 000076 1244 00 20-61 ernot: scm (),(rl,id,x6) search table of keys  015622 0a 016064 000010 20-62 desc9a erkey,8 015623 0a 016062 0000 00 20-63 arg errin  015624 0a 016060 0000 00 20-64 arg ertally  015625 0a 015577 6064 00 20-65 ttn erloop tra if not legal key  20-66  015626 aa 000001 6260 16 20-67 eax6 1,6 step over key  20-68  015627 aa 000000 2350 13 20-69 lda 0,3 pick up argument pointer  015630 0a 015631 5510 64 20-70 stba *+1,64 set following lda instruction 015631 aa 0 00000 2351 00 20-71 lda 0|0 ****** THIS INSTRUCTION GETS MODIFIED ******  015632 0a 016061 7550 00 20-72 sta errarg and save for conversion  015633 aa 000001 6230 13 20-73 eax3 1,3 step to next parameter  20-74  015634 0a 016060 2360 00 20-75 ldq ertally get character key index  015635 0a 016066 7100 26 20-76 tra ertable,ql* dispatch on key  20-77  20-78 " 20-79  015636 0a 015731 7020 00 20-80 err_A: tsx2 setar set AR bit if necessary  015637 aa 040000 1604 20 20-81 mvt (id),(),fill(040) copy ASCII and translate to BCD  015640 0a 016061 0000 00 20-82 arg errarg 015641 0a 016040 020100 20-83 desc6a errtemp,64  015642 0a 016233 0000 00 20-84 arg asgetab  20-85  015643 0a 017543 7020 00 20-86 errstrip: tsx2 stripg strip trailing blanks  015644 0a 016040 020100 20-87 desc6a errtemp,64  015645 0a 015706 7100 00 20-88 tra errtrim and trim leading blanks  20-89  20-90  015646 0a 015731 7020 00 20-91 err_G: tsx2 setar set AR bit if necessary  015647 aa 020000 1004 20 20-92 mlr (id),(),fill(20) copy BCD string  015650 0a 016061 0000 00 20-93 arg errarg 015651 0a 016040 020100 20-94 desc6a errtemp,64  015652 0a 015643 7100 00 20-95 tra errstrip join common code 20-96  20-97  015653 0a 016221 7020 00 20-98 err_a: tsx2 asge convert ASCII to GE BCD  20-99  20-100  015654 0a 017507 7020 00 20-101 err_g: tsx2 rjust right-justify GE BCD 015655 0a 016040 7550 00 20-102 sta errtemp save GE BCD  20-103  015656 aa 000006 2350 07 20-104 lda 6,dl length of output is 6 characters 015657 0a 015706 7100 00 20-105 tra errtrim trim leading blanks from output  20-106  20-107  015660 aa 000000 3014 00 20-108 err_d: btd (),() convert decimal number  015661 0a 016061 000004 20-109 desc9a errarg,4  015662 0a 016036 050014 20-110 desc4ls errnum,12  20-111  015663 aa 000000 0244 00 20-112 mvne (),(),() edit the output 015664 0a 016036 050014 20-113 desc4ls errnum,12  015665 0a 016076 000011 20-114 desc9a eredit_d,9  015666 0a 016040 020014 20-115 desc6a errtemp,12  20-116  015667 aa 000014 2350 07 20-117 lda 12,dl length of output is 12 characters  015670 0a 015706 7100 00 20-118 tra errtrim trim leading blanks from output  20-119  20-120  015671 aa 000010 6270 00 20-121 err_n: eax7 (eredit_n-eredit_o)*4 set offset for conversion with no blank  015672 0a 015676 7100 00 20-122 tra err_ow join common code  20-123  20-124  015673 aa 000001 6270 00 20-125 err_o: eax7 1 set offset of 1 to skip ses micro-op 015674 0a 015676 7100 00 20-126 tra err_ow common code for "^o" and "^w"  20-127  20-128  015675 aa 000000 6270 00 20-129 err_w: eax7 0 offset of 0 to turn off zero suppression 20-130  015676 0a 017371 7020 00 20-131 err_ow: tsx2 octwd convert octal  015677 0a 016036 7570 00 20-132 staq errnum save word 20-133  015700 aa 000017 0204 00 20-134 mve (),(x7),() insert a blank in the middle  015701 0a 016036 020014 20-135 desc6a errnum,12  015702 0a 016101 000007 20-136 desc9a eredit_o,7  015703 0a 016040 020015 20-137 desc6a errtemp,13  20-138  015704 aa 000015 2350 07 20-139 lda 13,dl length is 13  015705 0a 015706 7100 00 20-140 tra errtrim copy into output  20-141  20-142 " 20-143  015706 aa 000000 1644 40 20-144 errtrim: tct (rl) search for last non-blank  015707 0a 016040 020005 20-145 desc6a errtemp,al  015710 0a 017546 0000 00 20-146 arg gbtable  015711 0a 016060 0000 00 20-147 arg ertally  20-148  015712 0a 016060 2360 00 20-149 ldq ertally offset of first non-blank in Q  015713 0a 016060 1750 00 20-150 sba ertally compute # of non-blank characters 20-151  015714 aa 000022 7350 00 20-152 errmov: als 18 place in AU 015715 0a 016060 7550 00 20-153 sta ertally and save  015716 0a 016060 1040 00 20-154 cmpx4 ertally is there enough room?  015717 0a 015721 6050 00 20-155 tpl *+2 ..  015720 0a 016060 7440 00 20-156 stx4 ertally if not, use only remaining space 015721 0a 016060 2350 00 20-157 lda ertally ..  015722 0a 015726 6000 00 20-158 tze ernomov skip zero length move 20-159  015723 aa 000055 1004 46 20-160 mlr (rl,ql),(rl,x5) copy the string  015724 0a 016040 020001 20-161 desc6a errtemp,au  015725 0a 015777 020001 20-162 desc6a erbuf,au  20-163  015726 0a 016060 0650 00 20-164 ernomov: adx5 ertally step output index and length 015727 0a 016060 1640 00 20-165 sbx4 ertally ..  015730 0a 015577 7100 00 20-166 tra erloop loop  20-167  20-168  015731 aa 000100 2360 07 20-169 setar: ldq =o100,dl get AR bit for MF1 015732 aa 700000 3150 03 20-170 cana =o700000,du high-order bits ON  015733 0a 015736 6000 00 20-171 tze resetar if not, reset AR bit  015734 aa 000000 2560 12 20-172 orsq 0,2 if so, set AR bit  015735 aa 000000 7100 12 20-173 tra 0,2 and return  20-174  015736 0a 022660 6760 00 20-175 resetar: erq =-1 complement Q  015737 aa 000000 3560 12 20-176 ansq 0,2 reset AR bit 015740 aa 000000 7100 12 20-177 tra 0,2 and return  20-178  20-179 " 20-180  015741 aa 000000 1040 03 20-181 erprnt: cmpx4 0,du is output line full?  015742 0a 015747 6044 00 20-182 tmoz erprnt_full if so, don't pad it  20-183  015743 0a 016033 7270 00 20-184 lxl7 ersw convert only switch in X7  015744 0a 016034 7160 17 20-185 xec erpad,7 pad output with blanks or nulls  015745 0a 015745 020000 20-186 desc6a *,0 015746 0a 015777 020014 20-187 desc6a erbuf,x4  20-188  015747 20-189 erprnt_full:  015747 0a 016033 2340 00 20-190 szn ersw convert only?  015750 0a 015766 6010 00 20-191 tnz erpend if so, return now  015751 aa 000005 6360 15 20-192 eaq 5,5 round up character count  015752 aa 000022 7720 00 20-193 qrl 18 shift to QL  015753 aa 000006 5060 07 20-194 div 6,dl compute # of words to type  015754 0a 015765 7520 07 20-195 stcq erct,07 and set call to type 20-196  015755 aa 000000 1064 00 20-197 cmpc (),() is message the same as last?  015756 0a 015777 020124 20-198 desc6a erbuf,84  015757 0a 016015 020124 20-199 desc6a erbuf_last,84  015760 0a 015771 6000 00 20-200 tze erreq if so, print "="  20-201  015761 aa 000000 1004 00 20-202 mlr (),()  015762 0a 015777 020124 20-203 desc6a erbuf,84  015763 0a 016015 020124 20-204 desc6a erbuf_last,84  20-205  015764 0a 016105 7020 00 20-206 tsx2 type print output  015765 00 015777 015765 20-207 erct: zero erbuf,*  20-208  015766 aa 000000 6220 13 20-209 erpend: eax2 0,3 set correct X2 return value  015767 0a 015767 6230 00 20-210 errx3: eax3 * restore X3  015770 aa 000000 7100 12 20-211 tra 0,2 and return  20-212  015771 0a 016105 7020 00 20-213 erreq: tsx2 type print "=" 015772 0a 022721 000001 20-214 zero =h=?????,1  015773 0a 015766 7100 00 20-215 tra erpend 20-216  20-217  20-218  015774 aa 000001 2350 07 20-219 ercv: lda 1,dl this entry only converts  015775 0a 016033 7550 00 20-220 sta ersw set convert only switch  015776 0a 015563 7100 00 20-221 tra erjn and join common code 20-222  20-223 " 20-224  20-225  015777 20-226 erbuf: bss ,14  016015 20-227 erbuf_last: 016015 20-228 bss ,14  20-229  016033 20-230 ersw: bss ,1  016034 aa 017055 1004 00 20-231 erpad: mlr (),(rl,x5),fill(17)  016035 aa 020055 1004 00 20-232 mlr (),(rl,x5),fill(20)  20-233  20-234 even  016036 20-235 errnum: bss ,2  016040 20-236 errtemp: bss ,16  016060 20-237 ertally: bss ,1 016061 20-238 errarg: bss ,1  016062 0a 016062 000001 20-239 errin: desc9a *,1  016063 20-240 erlen: bss ,1  20-241  016064 aa 101 107 167 157 20-242 erkey: aci "AGwondag"  016065 aa 156 144 141 147 016066 0a 015636 7100 00 20-243 ertable: tra err_A  016067 0a 015646 7100 00 20-244 tra err_G  016070 0a 015675 7100 00 20-245 tra err_w  016071 0a 015673 7100 00 20-246 tra err_o  016072 0a 015671 7100 00 20-247 tra err_n  016073 0a 015660 7100 00 20-248 tra err_d  016074 0a 015653 7100 00 20-249 tra err_a  016075 0a 015654 7100 00 20-250 tra err_g  20-251  016076 aa 401020 403020 20-252 eredit_d: vfd 9/lte+1,o9/20,9/lte+3,o9/20,9/lte+4,o9/52,9/mfls+10,9/enf 016077 aa 404052 152040 016100 aa 321000 000000 20-253 vfd 9/mvc+1  016101 aa 070401 020106 20-254 eredit_o: vfd 9/ses+if0,9/lte+1,o9/20,9/mvzb+6,9/insm+1,9/mvzb+5,9/mvc+1,9/ses+if0/ 016102 aa 021105 321070 016103 aa 401020 021113 20-255 eredit_n: vfd 9/lte+1,o9/20,9/insm+1,9/mvzb+11,9/mvc+1,9/ses+if0,9/ses+if0  016104 aa 321070 070000 20-256  20-257 "  20-258 " tsx2 type to type line on oprs console  20-259 " zero buf,n  20-260  016105 0a 016144 7420 00 20-261 type: stx2 typex2 here to write tty  20-262  016106 0a 016147 2120 00 20-263 absa cr get address of NL 016107 aa 000006 7350 00 20-264 als 6 in AU  016110 0a 016154 7510 70 20-265 stca tydcw,70 and in DCW's  016111 0a 016156 7510 70 20-266 stca tydcw+2,70  20-267  016112 aa 000000 2360 12 20-268 ldq 0,2 get address and length  016113 0a 016123 7520 70 20-269 stcq tydesc,70 place address in descriptor  016114 aa 000000 2120 02 20-270 absa 0,qu " get real address  016115 aa 000006 7350 00 20-271 als 6 into au 016116 0a 016155 7510 70 20-272 stca tydcw+1,70 and into DCW  016117 aa 777777 3760 07 20-273 anq =o777777,dl mask the length  016120 aa 000006 4020 07 20-274 mpy 6,dl compute character count  016121 0a 016123 7520 03 20-275 stcq tydesc,03 and place in descriptor  20-276  016122 0a 017543 7020 00 20-277 tsx2 stripg strip blanks from end of string  016123 0a 016123 020000 20-278 tydesc: desc6a *,0  20-279  016124 aa 000044 7730 00 20-280 lrl 36 character length in QL 016125 aa 000005 0760 07 20-281 adq 5,dl round to nearest word  016126 aa 000006 5060 07 20-282 div 6,dl compute word count  016127 0a 016131 6010 00 20-283 tnz *+2 always print at least one word  016130 aa 000001 2360 07 20-284 ldq 1,dl ..  016131 0a 016155 7520 03 20-285 stcq tydcw+1,03 and place in DCW  20-286  016132 0a 016155 6270 00 20-287 eax7 tydcw+1 start with line to be output 016133 0a 016135 4470 00 20-288 sxl7 tyag+1 without initial carriage return  20-289  016134 0a 020151 7020 00 20-290 tyag: tsx2 connect_iom run DCW list 016135 00 016150 016135 20-291 zero typcw,*  20-292  016136 0a 016154 6270 00 20-293 eax7 tydcw extra carriage return for error reocvery  016137 0a 016135 4470 00 20-294 sxl7 tyag+1 ..  20-295  016140 0a 020206 7020 00 20-296 tsx2 check_status test for error  016141 0a 016146 0000 00 20-297 arg ttyno  016142 aa 000000 000000 20-298 zero  016143 0a 016134 7100 00 20-299 tra tyag  20-300  016144 0a 016144 6220 00 20-301 typex2: eax2 *  016145 aa 000001 7100 12 20-302 tra 1,2  20-303  20-304  016146 aa 000020 000000 20-305 ttyno: zero 16 channel no of tty  016147 aa 770 017 171 717 20-306 cr: bci '!0????'  20-307  20-308 even  20-309  016150 aa 130000 700000 20-310 typcw: vfd o6/13,6/0,6/0,o3/7,3/0,6/0,6/0 PCW to write on console  016151 aa 020000 000000 20-311 vfd o9/20  20-312  016152 aa 510000 700000 20-313 tyapcw: vfd o6/51,6/0,6/0,o3/7,3/0,6/0,6/0 PCW to sound alarm  016153 aa 020000 000000 20-314 vfd o9/20  20-315  016154 0a 016147 010001 20-316 tydcw: vfd 18/cr,6/1,12/1 write carriage return 016155 0a 016155 010000 20-317 vfd 18/*,6/1,12/ write message 016156 0a 016147 000001 20-318 vfd 18/cr,6/,12/1 write final carriage return  20-319  20-320  20-321 " 20-322 " tsx2 ttyalert to sound audible alarm 20-323  016157 0a 016166 7420 00 20-324 ttyalert: stx2 tyax2 save X2  20-325  016160 0a 020151 7020 00 20-326 tyalcon: tsx2 connect_iom connect to the IOM  016161 0a 016152 000000 20-327 zero tyapcw,0  20-328  016162 0a 020206 7020 00 20-329 tsx2 check_status wait for status  016163 0a 016146 000000 20-330 zero ttyno 016164 aa 000000 000000 20-331 zero  016165 0a 016160 7100 00 20-332 tra tyalcon  20-333  016166 0a 016166 6220 00 20-334 tyax2: eax2 * restore X2  016167 aa 000000 7100 12 20-335 tra 0,2 and return to caller  20-336  20-337  016170 0a 016200 7420 00 20-338 tyrq: stx2 tyrqx here on special interrupt 20-339  016171 aa 6 02021 2351 00 20-340 lda com|inputsw read next line from tty  016172 aa 000006 7710 00 20-341 arl 6  016173 aa 6 02021 7551 00 20-342 sta com|inputsw  016174 0a 015562 7020 00 20-343 tsx2 erpt  016175 aa 001 052 000 000 20-344 acc '*'  016176 0a 020545 4500 00 20-345 stz status_lock reset status-call lock.  016177 0a 016177 7020 00 20-346 ttyrqst: tsx2 * 016200 0a 016200 7100 00 20-347 tyrqx: tra *  20-348  20-349  016201 0a 016217 7420 00 20-350 ttyinit: stx2 ttyir called to init tty package 016202 aa 6 02017 2351 00 20-351 lda com|ttychanno get the correct channel number  016203 0a 016146 7550 00 20-352 sta ttyno ..  016204 aa 000011 7350 00 20-353 als 9 place in PCW, too  016205 0a 016151 7550 00 20-354 sta typcw+1 ..  016206 0a 016153 7550 00 20-355 sta tyapcw+1 ..  20-356  016207 aa 000000 6220 32 20-357 eax2 0,2* special interrupt handler  016210 0a 016177 7420 00 20-358 stx2 ttyrqst  016211 0a 020430 7020 00 20-359 tsx2 get_special_interrupt 016212 00 016146 016170 20-360 zero ttyno,tyrq  20-361  016213 0a 020441 7020 00 20-362 tsx2 xio_wait activate tty channel  016214 aa 000000 000000 20-363 zero  016215 0a 016146 000000 20-364 zero ttyno 016216 0a 016217 7100 00 20-365 tra *+1 ignore errors 20-366  016217 0a 016217 6220 00 20-367 ttyir: eax2 *  016220 aa 000001 7100 12 20-368 tra 1,2  20-369  20-370 "  20-371 " lda ascii code  20-372 " tsx2 asge to convert to GE code  20-373 " sta GE code  20-374  016221 0a 022722 3750 00 20-375 asge: ana =o177177177177 make it legit ASCII  016222 0a 016232 7550 00 20-376 sta wd9 setup to loop through word  20-377  016223 aa 040000 1604 00 20-378 mvt (),(),fill(040) move and translate 016224 0a 016232 000004 20-379 desc9a wd9,4  016225 0a 016231 020006 20-380 desc6a wd6,6  016226 0a 016233 0000 00 20-381 arg asgetab  20-382  016227 0a 016231 2350 00 20-383 lda wd6 get ge word  016230 aa 000000 7100 12 20-384 tra 0,2  20-385  20-386  016231 aa 000000 000000 20-387 wd6: oct 0  016232 aa 000000 000000 20-388 wd9: oct 0  20-389  20-390  016233 aa 020020 020020 20-391 asgetab: oct 020020020020,020020020020 00  016234 aa 020020 020020 016235 aa 020020 020020 20-392 oct 020020020020,020020020020 10  016236 aa 020020 020020 016237 aa 020020 020020 20-393 oct 020020020020,020020020020 20  016240 aa 020020 020020 016241 aa 020020 020020 20-394 oct 020020020020,020020020020 30  016242 aa 020020 020020 016243 aa 020057 076013 20-395 oct 020057076013,053074032057 40  016244 aa 053074 032057 016245 aa 035055 054060 20-396 oct 035055054060,073052033061 50  016246 aa 073052 033061 016247 aa 000001 002003 20-397 oct 000001002003,004005006007 60  016250 aa 004005 006007 016251 aa 010011 015056 20-398 oct 010011015056,036075016020 70  016252 aa 036075 016020 016253 aa 014021 022023 20-399 oct 014021022023,024025026027 100  016254 aa 024025 026027 016255 aa 030031 041042 20-400 oct 030031041042,043044045046 110  016256 aa 043044 045046 016257 aa 047050 051062 20-401 oct 047050051062,063064065066 120  016260 aa 063064 065066 016261 aa 067070 071012 20-402 oct 067070071012,020034020072 130  016262 aa 020034 020072 016263 aa 037021 022023 20-403 oct 037021022023,024025026027 140  016264 aa 024025 026027 016265 aa 030031 041042 20-404 oct 030031041042,043044045046 150  016266 aa 043044 045046 016267 aa 047050 051062 20-405 oct 047050051062,063064065066 160  016270 aa 063064 065066 016271 aa 067070 071020 20-406 oct 067070071020,040020020020 170  016272 aa 040020 020020 20-407  20-408 " End of include file ...... error.incl.alm 20-409  170  171 include readc  21-1 " 21-2 " Begin include file ...... readc.incl.alm  21-3 " Modified 3/19/76 by N. I. Morris  21-4  21-5 " To read a card into line ...  21-6 " tsx2 readcd  21-7 " tra eof  21-8 " ... "normal return  21-9 "  21-10  016273 0a 016352 7420 00 21-11 readcd: stx2 rdrtn save return 21-12  016274 aa 6 02016 2351 00 21-13 lda com|rdrchanno set card reader channel number  016275 0a 016413 7510 70 21-14 stca readno,70 .. 21-15  016276 0a 020441 7020 00 21-16 rcb: tsx2 xio_wait perform the I/O 016277 0a 016415 003000 21-17 vfd 18/cdbuff,12/24 into our own buffer  016300 0a 016413 000001 21-18 zero readno,1 read card in binary mode  016301 0a 016354 7100 00 21-19 tra rdcerr .. 21-20  016302 0a 016415 2350 00 21-21 rdccnv: lda cdbuff look at first word of card  016303 aa 002400 1150 03 21-22 cmpa =o002400,du is it EOF card (5-7 punch)?  016304 0a 016410 6000 00 21-23 tze rdceof if so, take EOF return 21-24  016305 0a 016445 4500 00 21-25 stz rdcfirst reset first call switch  016306 aa 020000 1004 00 21-26 mlr (),(),fill(20) blank out the end of line  016307 0a 016307 020000 21-27 desc6a *,0 016310 0a 012015 020014 21-28 desc6a line+12,12  21-29  016311 aa 000000 6260 00 21-30 eax6 0 initialize index for storing characters  016312 aa 000000 6250 00 21-31 eax5 0 initialize index for picking up columns  21-32  016313 aa 000000 1014 15 21-33 rdccol: mrl (x5),(),fill(0) grab one column 016314 0a 016415 020002 21-34 desc6a cdbuff,2  016315 0a 016414 020006 21-35 desc6a rdcval,6 pad with zeroes  016316 0a 016414 2350 00 21-36 lda rdcval column bits in A  016317 0a 016414 4500 00 21-37 stz rdcval clear the result  21-38  016320 aa 000011 6270 00 21-39 eax7 9 process 9 numeric bits 016321 aa 000001 3150 07 21-40 rdcnum: cana 1,dl test bit 016322 0a 016324 6000 00 21-41 tze *+2 if on,  016323 0a 016414 0470 00 21-42 asx7 rdcval add in its value  016324 aa 000001 7710 00 21-43 arl 1 shift in the next bit  016325 aa 777777 6270 17 21-44 eax7 -1,7 step index  016326 0a 016321 6010 00 21-45 tnz rdcnum and continue processing numeric bits  21-46  016327 0a 016414 2340 00 21-47 szn rdcval were there any numeric bits?  016330 0a 016341 6000 00 21-48 tze rdczonly if not, special-case the zone bits  21-49  016331 aa 000060 6270 00 21-50 eax7 48 process the 3 zone bits  016332 aa 000001 3150 07 21-51 rdczone: cana 1,dl test bit  016333 0a 016335 6000 00 21-52 tze *+2 if on,  016334 0a 016414 0470 00 21-53 asx7 rdcval add in value of zone bit  016335 aa 000001 7710 00 21-54 arl 1 shift in the next bit  016336 aa 777760 6270 17 21-55 eax7 -16,7 step index 016337 0a 016332 6010 00 21-56 tnz rdczone continue processing zone bits 016340 0a 016343 7100 00 21-57 tra rdcend go to store completed character  21-58  016341 0a 016447 2350 05 21-59 rdczonly: lda rdczonetab,al get correct character value 016342 0a 016414 7550 00 21-60 sta rdcval .. 21-61  016343 aa 000016 1004 00 21-62 rdcend: mlr (),(x6) insert completed character in line 016344 0a 016414 220001 21-63 desc6a rdcval(2),1 016345 0a 012001 020001 21-64 desc6a line,1  21-65  016346 aa 000002 6250 15 21-66 eax5 2,5 step to next column  016347 aa 000001 6260 16 21-67 eax6 1,6 step to next output character  016350 aa 000110 1060 03 21-68 cmpx6 72,du are we finished?  016351 0a 016313 6040 00 21-69 tmi rdccol if not, process next column  21-70  016352 0a 016352 6220 00 21-71 rdrtn: eax2 * restore X2  016353 aa 000001 7100 12 21-72 tra 1,2 take normal return  21-73  016354 0a 016446 7550 00 21-74 rdcerr: sta rdcstat save the status bits  016355 aa 200000 3150 03 21-75 cana =o200000,du power off?  016356 0a 016365 6010 00 21-76 tnz rdcchk if so, ignore if first time  016357 aa 000036 7730 00 21-77 lrl 30 major status in AL 016360 aa 000042 1150 07 21-78 cmpa =o42,dl device attention?  016361 0a 016367 6010 00 21-79 tnz rdcstop if not, wait for special  016362 aa 000036 7370 00 21-80 lls 30 get substatus back again  016363 aa 000002 3150 03 21-81 cana =o2,du is initiate bit on?  016364 0a 016302 6000 00 21-82 tze rdccnv if not, card was read successfully 21-83  016365 0a 016445 2340 00 21-84 rdcchk: szn rdcfirst is the first time?  016366 0a 016410 6010 00 21-85 tnz rdceof if so, take EOF return 21-86  016367 0a 015562 7020 00 21-87 rdcstop: tsx2 erpt print error message 016370 aa 030 143 141 162 21-88 acc "card reader status = ^w." 016371 aa 144 040 162 145 016372 aa 141 144 145 162 016373 aa 040 163 164 141 016374 aa 164 165 163 040 016375 aa 075 040 136 167 016376 aa 056 000 000 000 016377 0a 016446 0000 00 21-89 arg rdcstat  21-90  016400 0a 020412 7020 00 21-91 rdcwait: tsx2 check_special_status wait for special interrupt  016401 0a 016413 0000 00 21-92 arg readno 016402 0a 016404 7100 00 21-93 tra *+2  016403 0a 016276 7100 00 21-94 tra rcb try reading again 21-95  016404 0a 020206 7020 00 21-96 tsx2 check_status check for special on console 016405 0a 022723 0000 00 21-97 arg =0 016406 0a 016400 7100 00 21-98 tra rdcwait  016407 0a 016400 7100 00 21-99 tra rdcwait  21-100  016410 0a 016445 7500 00 21-101 rdceof: stc2 rdcfirst set first time flag again  016411 0a 016352 2220 00 21-102 ldx2 rdrtn restore X2 016412 aa 000000 7100 12 21-103 tra 0,2 take EOF return  21-104  21-105  21-106 " 21-107  016413 aa 000000 010000 21-108 readno: vfd 18/,6/1 reader channel number  016414 21-109 rdcval: bss ,1 character value 016415 21-110 cdbuff: bss ,24 card image buffer  016445 0a 016445 000000 21-111 rdcfirst: zero * first call switch 016446 21-112 rdcstat: bss ,1 reader status  21-113  016447 21-114 rdczonetab: 016447 aa 000020 000000 21-115 vfd o18/20 blank blank  016450 aa 000000 000000 21-116 vfd o18/00 0 (0)  016451 aa 000052 000000 21-117 vfd o18/52 - (11) 016452 aa 000040 000000 21-118 vfd o18/40 | (11-0)  016453 aa 000032 000000 21-119 vfd o18/32 & (12) 016454 aa 000060 000000 21-120 vfd o18/60 + (12-0)  016455 aa 000077 000000 21-121 vfd o18/77 illegal (12-11)  016456 aa 000077 000000 21-122 vfd o18/77 illegal (12-11-0)  21-123  21-124  21-125 " End of include file ...... readc.incl.alm 21-126  172  173 include readt  22-1 " Begin include file ...... readt.incl.alm  22-2 " Modified on 3/4/74 by N. I. Morris for SCC operation. 22-3 " Modified on 5/12/77 by Noel I. Morris 22-4 " Last modified by Sherman D. Sprague 02/11/81 for prompting  22-5 " Modified November 1981 by C. Hornig to not use IOM rel mode.  22-6  22-7 " tsx2 readtty reads from online console  22-8 " tra eof if blank line 22-9  016457 0a 016577 7420 00 22-10 readtty: stx2 rttyx2  22-11  016460 0a 016615 2120 00 22-12 absa rtypmt relocate the DCW's  016461 aa 000006 7350 00 22-13 als 6  016462 0a 016622 7510 70 22-14 stca rtypmtdcw,70  016463 0a 012001 2120 00 22-15 absa line  016464 aa 000006 7350 00 22-16 als 6  016465 0a 016626 7510 70 22-17 stca rtydcw,70 22-18  016466 0a 016151 2350 00 22-19 lda typcw+1 set channel # in PCW  016467 0a 016625 7550 00 22-20 sta rtypcw+1 ..  016470 0a 016621 7550 00 22-21 sta rtypmtpcw+1 ..  22-22  016471 aa 6 02027 2351 00 22-23 rttyag: lda com|curtcmd get arg for prompt  016472 0a 022724 2360 00 22-24 ldq =o7777777777  016473 aa 200000 2110 03 22-25 rttyplp: cmk =o200000,du  016474 0a 016500 6010 00 22-26 tnz rttynplp  016475 aa 000006 7350 00 22-27 als 6  016476 aa 000017 2750 07 22-28 ora =o17,dl  016477 0a 016473 7100 00 22-29 tra rttyplp  016500 22-30 rttynplp:  016500 0a 016615 7550 00 22-31 sta rtypmt 016501 aa 6 02026 2341 00 22-32 szn com|ttypmtsw  016502 0a 016511 6010 00 22-33 tnz rttynp 22-34  016503 0a 020151 7020 00 22-35 tsx2 connect_iom connect for prompt  016504 00 016620 016622 22-36 zero rtypmtpcw,rtypmtdcw  22-37  016505 0a 020206 7020 00 22-38 tsx2 check_status wait for status  016506 0a 016146 0000 00 22-39 arg ttyno  016507 aa 000000 000000 22-40 zero 0 016510 0a 016471 7100 00 22-41 tra rttyag 22-42  016511 0a 020151 7020 00 22-43 rttynp: tsx2 connect_iom connect IOM  016512 00 016624 016626 22-44 zero rtypcw,rtydcw 22-45  016513 0a 020206 7020 00 22-46 tsx2 check_status wait for status  016514 0a 016146 0000 00 22-47 arg ttyno  016515 aa 000000 000000 22-48 zero  016516 0a 016601 7100 00 22-49 tra rttyerr  016517 0a 016627 7560 00 22-50 stq rtylen save DCW tally residues  22-51  016520 0a 016105 7020 00 22-52 tsx2 type skip to new line  016521 0a 022725 000001 22-53 zero =h??????,1  22-54  22-55 " Compute number of characters read from DCW tally residues.  22-56  016522 0a 016627 2350 00 22-57 lda rtylen Tally residue in A.  016523 0a 016627 2360 00 22-58 ldq rtylen And in Q.  016524 aa 007777 3760 07 22-59 anq =o7777,dl mask word residue  016525 aa 700000 3750 07 22-60 ana =o700000,dl and character position residle 016526 aa 000017 7710 00 22-61 arl 15 shift char. pos.  016527 0a 016627 7550 00 22-62 sta rtylen and save  22-63  016530 0a 016533 6010 00 22-64 tnz *+3 if char. pos. was zero,  016531 aa 000001 1760 07 22-65 sbq 1,dl adjust the word residue  016532 0a 016604 6040 00 22-66 tmi rttyer1 negative if full line typed  22-67  016533 aa 000015 1760 07 22-68 sbq 13,dl compute -# of words 016534 0a 022726 4020 00 22-69 mpy =-6 # of characters in Q  016535 0a 016627 0760 00 22-70 adq rtylen add to character position  22-71  016536 0a 016541 6010 00 22-72 tnz *+3 if null line (no characters), 016537 0a 016577 2220 00 22-73 ldx2 rttyx2 restore X2  016540 aa 000000 7100 12 22-74 tra 0,2 and take EOF return  22-75  22-76 " Perform kill editing and pad line with blanks.  22-77  016541 aa 000003 1254 40 22-78 scmr (rl),(du) search backwards for "@"  016542 0a 012001 020006 22-79 desc6a line,ql 016543 aa 140 000 000 000 22-80 bci "@"  016544 0a 016627 0000 00 22-81 arg rtylen 22-82  016545 0a 016627 2350 00 22-83 lda rtylen remaining length of line in A  016546 0a 016627 1760 00 22-84 sbq rtylen offset of rest of line in Q  016547 aa 020000 1004 46 22-85 mlr (ql,rl),(),fill(20) copy remainder of line and pad 016550 0a 012001 020005 22-86 desc6a line,al 016551 0a 012001 020124 22-87 desc6a line,84 22-88  22-89 " Perform erase editing.  22-90  016552 aa 000124 2350 07 22-91 lda 84,dl initial length of 84 in A  016553 aa 000000 2360 03 22-92 ldq 0,du initial offset of 0 in Q 22-93  016554 aa 000003 1244 46 22-94 rdtl: scm (ql,rl),(du) search for "#"  016555 0a 012001 020005 22-95 desc6a line,al 016556 aa 130 000 000 000 22-96 bci "#"  016557 0a 016627 0000 00 22-97 arg rtylen 016560 0a 016576 6064 00 22-98 ttn rdte if no "#", all done with edit  22-99  016561 0a 016627 1750 00 22-100 sba rtylen decrement remaining length 016562 aa 000001 1750 07 22-101 sba 1,dl include the "#" character  016563 aa 000002 6260 05 22-102 eax6 2,al X6 contains length for padding  016564 0a 016627 0760 00 22-103 adq rtylen increment offset  016565 aa 000001 6270 06 22-104 eax7 1,ql X7 contains offset of character after "#"  016566 aa 000001 1760 07 22-105 sbq 1,dl Q contains offset of character to be erased  016567 0a 016572 6050 00 22-106 tpl *+3 if at beginning of line ...  016570 aa 000001 1660 03 22-107 sbx6 1,du pad one fewer  016571 aa 000001 0760 07 22-108 adq 1,dl and place offset at beginning of line  22-109  016572 aa 020046 1004 57 22-110 mlr (x7,rl),(ql,rl),fill(20) copy over "#" and erased character  016573 0a 012001 020005 22-111 desc6a line,al 016574 0a 012001 020005 22-112 desc6a line,al 016575 0a 016554 7100 00 22-113 tra rdtl and loop 22-114  016576 0a 016015 5540 00 22-115 rdte: stc1 erbuf_last break "=" print out  22-116  016577 0a 016577 6220 00 22-117 rttyx2: eax2 * get ready to return 016600 aa 000001 7100 12 22-118 tra 1,2  22-119  22-120 " Error handler.  22-121  016601 aa 377700 3750 03 22-122 rttyerr: ana =o377700,du IOM major and substatus.  016602 aa 031000 1150 03 22-123 cmpa =o031000,du Data alert - operator distracted (timer).  016603 0a 016607 6000 00 22-124 tze timer_off Tra if timer went off. 22-125  016604 0a 016105 7020 00 22-126 rttyer1: tsx2 type Write error symbol and read again.  016605 0a 022727 000001 22-127 zero =h@?????,1  016606 0a 016471 7100 00 22-128 tra rttyag 22-129  016607 22-130 timer_off:  016607 0a 016105 7020 00 22-131 tsx2 type skip to fresh line  016610 0a 022725 000001 22-132 zero =h??????,1  22-133  016611 0a 020412 7020 00 22-134 tsx2 check_special_status Wait for special interrupt. 016612 0a 016146 0000 00 22-135 arg ttyno  016613 aa 000000 000000 22-136 zero  016614 0a 016471 7100 00 22-137 tra rttyag Read again.  016615 aa 224 662 521 620 22-138 rtypmt: bci 'BOS-> '  016616 aa 521 620 171 717 22-139 bci '-> ???'  016617 aa 000000 0110 03 22-140 even  016620 22-141 rtypmtpcw:  016620 aa 130000 700000 22-142 vfd o6/13,6/0,6/0,o3/7,3/0,6/0,6/0 write to console  016621 aa 020000 000000 22-143 vfd o9/20  22-144  016622 22-145 rtypmtdcw:  016622 0a 016615 000002 22-146 vfd 18/rtypmt,6/0,12/2 22-147  016623 aa 000000 0110 03 22-148 even  016624 aa 030000 700000 22-149 rtypcw: vfd o6/03,6/0,6/0,o3/7,3/0,6/0,6/0 read from console  016625 aa 020000 000000 22-150 vfd o9/20  22-151  016626 0a 012001 000016 22-152 rtydcw: vfd 18/line,6/,12/14 read input line  22-153  016627 22-154 rtylen: bss ,1  22-155  22-156 " End of include file ...... readt.incl.alm 22-157  174  175 include getprt 23-1 " 23-2 " Begin include file ...... getprt.incl.alm 23-3 " Modified 10/1/74 by Noel I. Morris for PRU1200 operation  23-4 " Modified 8/26/75 by Noel I. Morris  23-5 " Modified 8/24/78 by Sherman D. Sprague for PRU1200 vfc corrections  23-6 " Modified 4/12/82 by Sherman D. Sprague to support EURC controlers 23-7  23-8 " tsx2 getprt to find an available printer 23-9 " sta prtchanno channel number 23-10  23-11  000440 23-12 equ p300l,288 PRT300 buffer image length  000360 23-13 equ p1200l,240 PRU1200 buffer image length 23-14  23-15  016630 0a 016775 7420 00 23-16 getprt: stx2 getprtx2 save xrs 016631 0a 016776 7400 00 23-17 stx0 getprtx2+1  016632 0a 017151 5540 00 23-18 stc1 prtfirst set first time switch  23-19  016633 0a 017150 4500 00 23-20 getpr1: stz prtfnd clear printer found switch  016634 aa 000000 6200 00 23-21 eax0 0 try all channels  016635 0a 017124 2350 10 23-22 ploop: lda prtname,0 get printer name  016636 0a 017141 7550 00 23-23 sta prname save it for later  016637 0a 017625 7020 00 23-24 tsx2 getperiph search for PRPH card  016640 0a 017000 7100 00 23-25 tra pnext if none, try next printer  016641 0a 017150 5540 00 23-26 stc1 prtfnd set printer found switch  23-27  016642 aa 6 00002 2351 17 23-28 lda com|2,7 IOM # in A  016643 0a 017136 7550 00 23-29 sta gp_iom store it for later use 016644 aa 000001 1750 07 23-30 sba 1,dl  016645 aa 000006 7350 00 23-31 als 6  016646 aa 6 00003 0751 17 23-32 ada com|3,7 add channel # 016647 aa 6 00003 2361 17 23-33 ldq com|3,7  016650 0a 017137 7560 00 23-34 stq gp_chn store the channel # for later use 016651 aa 000022 7350 00 23-35 als 18 move to AU 016652 0a 017140 7550 00 23-36 sta pchan save channel #  016653 aa 6 00005 2351 17 23-37 lda com|5,7 print train type in A 016654 0a 017142 7550 00 23-38 sta ptrain save it  23-39  016655 aa 6 00004 2351 17 23-40 lda com|4,7 model # in A  016656 0a 017143 7550 00 23-41 prfork: sta prmodel save it for later  016657 aa 000621 1150 07 23-42 cmpa =401,dl >401 ?  016660 0a 016675 6050 00 23-43 tpl pr1200 if so, must be PRU1200/1600  23-44  016661 aa 000312 1150 07 23-45 cmpa =202,dl <202 ?  016662 0a 016767 6044 00 23-46 tmoz pr202 if so, must be PRT202  23-47  016663 0a 022730 2350 00 23-48 lda =h p300i get name of PRT300 image file in BOS 016664 0a 017051 7020 00 23-49 tsx2 ldtrain grab the correct train image 23-50  016665 0a 017143 2350 00 23-51 lda prmodel get model # again 016666 aa 000457 1150 07 23-52 cmpa =303,dl is it PRT303?  016667 0a 016763 6000 00 23-53 tze pr303 if so, must convert image to ASCII  23-54  016670 0a 020441 7020 00 23-55 tsx2 xio_wait load PRT300 image  016671 0a 017206 006000 23-56 vfd 18/gptrain,12/p300l/6  016672 0a 017140 000014 23-57 vfd 18/pchan,o18/14  016673 0a 017050 7100 00 23-58 tra primerr  016674 0a 016774 7100 00 23-59 tra pok  23-60  23-61 " 23-62  016675 aa 010000 2350 07 23-63 pr1200: lda =o010000,dl set device address of 1 016676 0a 017140 7510 04 23-64 stca pchan,04 ..  23-65  016677 0a 020441 7020 00 23-66 tsx2 xio_wait read detailed status  016700 0a 017144 000400 23-67 vfd 18/prstat,12/4 016701 0a 017140 000003 23-68 vfd 18/pchan,o18/03  016702 0a 017050 7100 00 23-69 tra primerr  23-70  016703 0a 017306 7020 00 23-71 tsx2 getmpc check mpc type  016704 0a 017137 0000 00 23-72 arg gp_chn the CHN the printer might be on  016705 0a 017136 0000 00 23-73 arg gp_iom the IOM the printer might be on  016706 0a 017103 7100 00 23-74 tra no_mpc_card could not match the PRPH to a MPC  23-75  016707 aa 6 00002 2351 17 23-76 lda com|2,7 get the mpc model number  016710 aa 017500 1150 07 23-77 cmpa =8000,dl is it an EURC ? 016711 0a 016723 6044 00 23-78 tmoz not_eurc  23-79  016712 aa 000000 6250 00 23-80 eax5 0 set up the CSL to convert  016713 aa 000001 6260 00 23-81 eax6 1 the ascii status we recieved 23-82  016714 aa 003015 0604 16 23-83 gpcvst: csl (x6),(x5),bool(03) from the EURC controler 016715 0a 017144 000010 23-84 descb prstat,8 get the first 9 bits  016716 0a 017144 000010 23-85 descb prstat,8 store back 8  016717 aa 000011 6260 16 23-86 eax6 9,6 set up for the next 9  016720 aa 000010 6250 15 23-87 eax5 8,5 set up to store the next 8 016721 aa 000200 1050 03 23-88 cmpx5 128,du did we do all the bits of  016722 0a 016714 6010 00 23-89 tnz gpcvst status yet ?  23-90  23-91  016723 aa 006000 2350 07 23-92 not_eurc: lda =o6000,dl check for VFC loaded and synched  016724 0a 017144 2150 00 23-93 cnaa prstat both bits must be on  016725 0a 016732 6000 00 23-94 tze vfcok if so, skip VFC load  23-95  016726 0a 020441 7020 00 23-96 tsx2 xio_wait now load the VFC image  016727 0a 017153 000300 23-97 vfd 18/prvfc,12/3  016730 0a 017140 000005 23-98 vfd 18/pchan,o18/05  016731 0a 017050 7100 00 23-99 tra primerr  23-100  016732 0a 017144 2350 00 23-101 vfcok: lda prstat get belt number  016733 aa 000024 7710 00 23-102 arl 35-15 right-justified 016734 aa 077777 3750 07 23-103 ana =o77777,dl mask  23-104  016735 aa 000002 6270 00 23-105 eax7 np1200id number of known belts in X7 016736 0a 017133 1150 17 23-106 cmpa p1200id-1,7 search for belt number  016737 0a 016743 6000 00 23-107 tze gpbelt if found, go load it  016740 aa 777777 6270 17 23-108 eax7 -1,7 step to next  016741 0a 016736 6054 00 23-109 tpnz *-3 and loop 016742 0a 017067 7100 00 23-110 tra gpnotrain cannot find this belt number  23-111  016743 0a 017142 4500 00 23-112 gpbelt: stz ptrain clear the word  016744 0a 017142 4470 00 23-113 sxl7 ptrain save belt index  016745 0a 022731 2350 00 23-114 lda =hp1200i load correct PRU1200 image  016746 0a 017051 7020 00 23-115 tsx2 ldtrain ..  23-116  016747 aa 000360 2360 07 23-117 ldq p1200l,dl length of image in Q  016750 aa 000040 1604 40 23-118 gpcvt: mvt (rl),(rl) convert image to ASCII  016751 0a 017206 020006 23-119 desc6a gptrain,ql  016752 0a 017156 000006 23-120 desc9a gptraina,ql 016753 0a 017460 0000 00 23-121 arg geastabu  23-122  016754 aa 000004 7360 00 23-123 qls 6-2 number of words in image in tally field  016755 0a 016757 7520 06 23-124 stcq prld,06 set for call 23-125  016756 0a 020441 7020 00 23-126 tsx2 xio_wait load the image  016757 0a 017156 000000 23-127 prld: vfd 18/gptraina,12/0  016760 0a 017140 000001 23-128 vfd 18/pchan,o18/01  016761 0a 017050 7100 00 23-129 tra primerr  016762 0a 016774 7100 00 23-130 tra pok  23-131  016763 aa 010000 2350 07 23-132 pr303: lda =o010000,dl set device address to 1 for PRT303  016764 0a 017140 7510 04 23-133 stca pchan,04 ..  23-134  016765 aa 000440 2360 07 23-135 ldq p300l,dl length of image in Q 016766 0a 016750 7100 00 23-136 tra gpcvt go convert to ASCII and load it 23-137  016767 0a 020441 7020 00 23-138 pr202: tsx2 xio_wait see if printer is ready  016770 aa 000000 000000 23-139 zero  016771 0a 017140 000040 23-140 vfd 18/pchan,o18/40  016772 0a 017050 7100 00 23-141 tra primerr  016773 0a 016774 7100 00 23-142 tra pok return if OK  23-143  23-144 " 23-145  016774 0a 017140 2350 00 23-146 pok: lda pchan channel number in A 016775 aa 000000 6220 00 23-147 getprtx2: eax2 *-*  016776 aa 000000 6200 00 23-148 eax0 *-*  016777 aa 000000 7100 12 23-149 tra 0,2 return to caller  23-150  23-151  017000 aa 000001 6200 10 23-152 pnext: eax0 1,0 step X0 to 017001 aa 000010 1000 03 23-153 cmpx0 nprinters,du try next printer  017002 0a 016635 6040 00 23-154 tmi ploop  23-155  017003 0a 017151 2340 00 23-156 pnext1: szn prtfirst is this the first time through loop?  017004 0a 017013 6000 00 23-157 tze pnext2 if not, just try again 017005 0a 015562 7020 00 23-158 tsx2 erpt complain about no printers  017006 aa 021 156 157 040 23-159 acc "no printer ready."  017007 aa 160 162 151 156 017010 aa 164 145 162 040 017011 aa 162 145 141 144 017012 aa 171 056 000 000 23-160  017013 0a 017150 2340 00 23-161 pnext2: szn prtfnd did we ever find a printer? 017014 0a 017017 6000 00 23-162 tze prtdef if not, use default  017015 0a 017151 4500 00 23-163 stz prtfirst clear first time switch  017016 0a 016633 7100 00 23-164 tra getpr1 try loop again 23-165  017017 0a 017003 6270 00 23-166 prtdef: eax7 pnext1 change error location  017020 0a 017050 7470 00 23-167 stx7 primerr ..  23-168  017021 0a 015562 7020 00 23-169 tsx2 erpt ask for printer info  017022 aa 057 160 154 145 23-170 acc "please enter printer channel, model, and train."  017023 aa 141 163 145 040 017024 aa 145 156 164 145 017025 aa 162 040 160 162 017026 aa 151 156 164 145 017027 aa 162 040 143 150 017030 aa 141 156 156 145 017031 aa 154 054 040 155 017032 aa 157 144 145 154 017033 aa 054 040 141 156 017034 aa 144 040 164 162 017035 aa 141 151 156 056 23-171  017036 0a 016457 7020 00 23-172 tsx2 readtty read answer  017037 0a 017017 7100 00 23-173 tra prtdef 23-174  017040 0a 012314 7020 00 23-175 tsx2 scan scan args  017041 0a 012040 2350 00 23-176 lda arg channel # 017042 aa 000022 7350 00 23-177 als 18 017043 0a 017140 7550 00 23-178 sta pchan  017044 0a 012042 2350 00 23-179 lda arg+2 train # 017045 0a 017142 7550 00 23-180 sta ptrain 017046 0a 012041 2350 00 23-181 lda arg+1 model # 017047 0a 016656 7100 00 23-182 tra prfork now, examine info  23-183  017050 0a 017000 7100 00 23-184 primerr: tra pnext ****** THIS LOCATION GETS MODIFIED ******  23-185  23-186 " 23-187  017051 0a 017065 7420 00 23-188 ldtrain: stx2 ldtx2 save X2  23-189  017052 0a 013052 7020 00 23-190 tsx2 search search for train image file  017053 0a 017067 7100 00 23-191 tra gpnotrain  017054 0a 022664 3750 00 23-192 ana =o777777770000 mask the disk address  017055 0a 017152 7510 74 23-193 stca gptrainad,74 save it  23-194  017056 0a 017142 2350 00 23-195 lda ptrain train # in A  017057 aa 000001 1750 07 23-196 sba 1,dl subtract 1 and  017060 aa 000014 7350 00 23-197 als 12 shift to disk address position 017061 0a 017152 0350 00 23-198 adla gptrainad get disk addr of desired train image  017062 0a 014726 7020 00 23-199 tsx2 rdsec read in train image  017063 0a 017206 0000 00 23-200 arg gptrain ..  017064 0a 017067 7100 00 23-201 tra gpnotrain  23-202  017065 0a 017065 6220 00 23-203 ldtx2: eax2 * restore X2  017066 aa 000000 7100 12 23-204 tra 0,2 and return  23-205  017067 23-206 gpnotrain:  017067 0a 015562 7020 00 23-207 tsx2 erpt  017070 aa 042 165 156 141 23-208 acc "unable to find train image for ^a."  017071 aa 142 154 145 040 017072 aa 164 157 040 146 017073 aa 151 156 144 040 017074 aa 164 162 141 151 017075 aa 156 040 151 155 017076 aa 141 147 145 040 017077 aa 146 157 162 040 017100 aa 136 141 056 000 017101 0a 017141 0000 00 23-209 arg prname 017102 0a 017050 7100 00 23-210 tra primerr  23-211  017103 23-212 no_mpc_card:  017103 0a 015562 7020 00 23-213 tsx2 erpt  017104 aa 061 143 157 165 23-214 acc "could not find a mpc card to match ^a channel ^o."  017105 aa 154 144 040 156 017106 aa 157 164 040 146 017107 aa 151 156 144 040 017110 aa 141 040 155 160 017111 aa 143 040 143 141 017112 aa 162 144 040 164 017113 aa 157 040 155 141 017114 aa 164 143 150 040 017115 aa 136 141 040 143 017116 aa 150 141 156 156 017117 aa 145 154 040 136 017120 aa 157 056 000 000 017121 0a 017141 0000 00 23-215 arg prname 017122 0a 017137 0000 00 23-216 arg gp_chn 017123 0a 017050 7100 00 23-217 tra primerr  23-218  23-219 " 23-220  017124 aa 160 162 164 141 23-221 prtname: aci "prta" 017125 aa 160 162 164 142 23-222 aci "prtb" 017126 aa 160 162 164 143 23-223 aci "prtc" 017127 aa 160 162 164 144 23-224 aci "prtd" 017130 aa 160 162 164 145 23-225 aci "prte" 017131 aa 160 162 164 146 23-226 aci "prtf" 017132 aa 160 162 164 147 23-227 aci "prtg" 017133 aa 160 162 164 150 23-228 aci "prth" 000010 23-229 equ nprinters,*-prtname  23-230  017134 aa 000000 001130 23-231 p1200id: dec 600  017135 aa 000000 000764 23-232 dec 500  000002 23-233 equ np1200id,*-p1200id 23-234  017136 23-235 gp_iom: bss ,1  017137 23-236 gp_chn: bss ,1  23-237  017140 23-238 pchan: bss ,1  017141 23-239 prname: bss ,1  017142 23-240 ptrain: bss ,1  017143 23-241 prmodel: bss ,1 017144 23-242 prstat: bss ,4  017150 23-243 prtfnd: bss ,1  017151 23-244 prtfirst: bss ,1  017152 23-245 gptrainad:  017152 aa 000000 000001 23-246 vfd 24/,12/1  23-247  017153 aa 006204 004113 23-248 prvfc: vfd 9/6,o9/204,9/4,o9/113  017154 aa 100060 106111 23-249 vfd o9/100,o9/60,o9/106,o9/111 017155 aa 202060 000000 23-250 vfd o9/202,o9/060,18/0 23-251  017156 23-252 gptraina: bss ,p300l/4-p300l/6  23-253  017206 23-254 gptrain: bss ,64  23-255  23-256 " End of include file ...... getprt.incl.alm  23-257  176  177 include getmpc 24-1 " 24-2 " Begin include file ...... getmpc.incl.alm 24-3 " Writen 3/23/82 by Sherman D. Sprague  24-4  24-5 " tsx2 getmpc to find the mpc to match a prph card 24-6 " arg channo channel of the device 24-7 " arg iomno iom the device is on  24-8 " tra error no mpc card found  24-9  24-10  017306 0a 017341 7420 00 24-11 getmpc: stx2 gm_x2 store x2 for return 017307 0a 022732 2350 00 24-12 lda =ampc find the first mpc card  017310 0a 017616 7020 00 24-13 tsx2 getconf get the pointer  017311 0a 017343 7100 00 24-14 tra gm_nompc there were no mpc cards in the deck ??  017312 0a 017341 2220 00 24-15 gm_ckiom: ldx2 gm_x2 put x2 back so we can use it  017313 aa 000000 6250 17 24-16 eax5 0,7 set x5 to first IOM on mpc card  017314 aa 000003 6250 15 24-17 gm_nxiom: eax5 3,5 get IOM field set up  017315 aa 6 00000 2351 15 24-18 lda com|0,5 set up A reg  017316 0a 022660 1150 00 24-19 cmpa =-1 is this the fence ?  017317 0a 017323 6000 00 24-20 tze gm_mmpc lets check another mpc card  017320 aa 000001 1150 32 24-21 cmpa 1,2* is this what they wanted ?  017321 0a 017327 6000 00 24-22 tze gm_ckchn now lets check the channel  017322 0a 017314 7100 00 24-23 tra gm_nxiom  24-24  017323 0a 022732 2350 00 24-25 gm_mmpc: lda =ampc go for another card  017324 0a 017621 7020 00 24-26 tsx2 getmore 017325 0a 017343 7100 00 24-27 tra gm_nompc no more cards ?? 017326 0a 017312 7100 00 24-28 tra gm_ckiom check for correct IOM  24-29  017327 aa 6 00001 2351 15 24-30 gm_ckchn: lda com|1,5 put the base chn # in the A  017330 aa 000000 1150 32 24-31 gm_mchn: cmpa 0,2*  017331 0a 017314 6054 00 24-32 tpnz gm_nxiom is card > request  017332 aa 6 00002 0351 15 24-33 adla com|2,5 get the range  017333 aa 000000 1150 32 24-34 cmpa 0,2* check it with arg 0 017334 0a 017341 6054 00 24-35 tpnz gm_found looks like what we were after  017335 0a 017314 7100 00 24-36 tra gm_nxiom go check for another IOM 017336 aa 000000 0110 00 24-37 nop  017337 aa 000000 0110 00 24-38 nop  017340 aa 000000 0110 00 24-39 nop  017341 24-40 gm_found:  017341 0a 017341 6220 00 24-41 gm_x2: eax2 * 017342 aa 000003 7100 12 24-42 tra 3,2 return  017343 24-43 gm_nompc: 017343 0a 017341 2220 00 24-44 ldx2 gm_x2 017344 aa 000002 7100 12 24-45 tra 2,2  24-46  24-47  24-48 " End of include file ...... getmpc.incl.alm  178  179 include punch  25-1 "  25-2 " Begin include file ...... punch.incl.alm  25-3 " Modified 8/26/75 by N. I. Morris  25-4 " tsx2 punch " to punch contents of line  25-5  017345 0a 017366 7420 00 25-6 punch: stx2 punx2  017346 0a 017347 7100 00 25-7 punsw: tra *+1 initialize only once  017347 0a 022733 2350 00 25-8 lda =apuna look for puna  017350 0a 017625 7020 00 25-9 tsx2 getperiph try to find PRPH card  017351 0a 017366 7100 00 25-10 tra punx2 ignore call if no punch 017352 aa 6 00002 2351 17 25-11 lda com|2,7 IOM # in A  017353 aa 000001 1750 07 25-12 sba 1,dl  017354 aa 000006 7350 00 25-13 als 6  017355 aa 6 00003 0751 17 25-14 ada com|3,7 add punch channel #  017356 aa 000022 7350 00 25-15 als 18 017357 0a 017370 7510 70 25-16 stca punno,70 set channel #  25-17  017360 0a 017362 6220 00 25-18 eax2 *+2 switch around initialization code  017361 0a 017346 7420 00 25-19 stx2 punsw .. 017362 25-20 puner:  017362 0a 020441 7020 00 25-21 pun: tsx2 xio_wait start io  017363 0a 012001 001600 25-22 vfd 18/line,12/14  017364 0a 017370 000012 25-23 zero punno,10  017365 0a 017362 7100 00 25-24 tra puner  017366 0a 017366 6220 00 25-25 punx2: eax2 *  017367 aa 000000 7100 12 25-26 tra 0,2  25-27  017370 aa 000017 010000 25-28 punno: vfd o18/17,6/1  25-29  25-30 " End of include file ...... punch.incl.alm 25-31  180  181 include octwd  26-1 "  26-2 " Begin include file ...... octwd.incl.alm  26-3  26-4 " lda bin  26-5 " tsx2 octwd  26-6 " staq octal_bcd  26-7  017371 0a 017406 7420 00 26-8 octwd: stx2 octx2  26-9  017372 aa 000006 6220 00 26-10 eax2 6 017373 aa 000003 7360 00 26-11 qls 3  017374 aa 000003 7770 00 26-12 llr 3  017375 aa 777777 6220 12 26-13 eax2 -1,2  017376 0a 017373 6054 00 26-14 tpnz *-3  017377 0a 017430 7560 00 26-15 stq octtemp  26-16  017400 aa 000006 6220 00 26-17 eax2 6 017401 aa 000003 7360 00 26-18 qls 3  017402 aa 000003 7770 00 26-19 llr 3  017403 aa 777777 6220 12 26-20 eax2 -1,2  017404 0a 017401 6054 00 26-21 tpnz *-3  26-22  017405 0a 017430 2350 00 26-23 lda octtemp  017406 0a 017406 6220 00 26-24 octx2: eax2 *  017407 aa 000000 7100 12 26-25 tra 0,2  26-26  26-27  26-28 " lda =v24/bin 24 bits of binary data  26-29 " tsx2 hexwd  26-30 " sta hex_bcd converted to hex 26-31  017410 0a 017426 7420 00 26-32 hexwd: stx2 hexx2  26-33  017411 aa 000044 7730 00 26-34 lrl 36 shift to Q 017412 aa 000006 6220 00 26-35 eax2 6 process 6 characters  017413 aa 000000 2350 07 26-36 hexloop: lda 0,dl clear A  017414 aa 000004 7370 00 26-37 lls 4 shift in 4 bits 017415 aa 000011 1150 07 26-38 cmpa 9,dl greater than 9? 017416 0a 017420 6044 00 26-39 tmoz *+2  017417 aa 000007 0350 07 26-40 adla 7,dl if so, change to letter 017420 aa 000006 7730 00 26-41 lrl 6  017421 0a 017430 2350 00 26-42 lda octtemp get temporary 017422 aa 000006 7370 00 26-43 lls 6 insert new character  017423 0a 017430 7550 00 26-44 sta octtemp and store 017424 aa 777777 6220 12 26-45 eax2 -1,2 decrement index 017425 0a 017413 6054 00 26-46 tpnz hexloop  26-47  017426 0a 017426 6220 00 26-48 hexx2: eax2 *  017427 aa 000000 7100 12 26-49 tra 0,2 return to caller  26-50  017430 aa 000000 000000 26-51 octtemp: oct 0  26-52  26-53 " End of include file ...... octwd.incl.alm 26-54  182  183 include conv  27-1 "  27-2 " Begin include file ...... conv.incl.alm  27-3  27-4  27-5 include eis_micro_ops  000020 28-1 bool insm,020  000040 28-2 bool enf,040  000060 28-3 bool ses,060  000100 28-4 bool mvzb,100  000120 28-5 bool mvza,120  000140 28-6 bool mfls,140  000160 28-7 bool mflc,160  000200 28-8 bool insb,200  000220 28-9 bool insa,220  000240 28-10 bool insn,240  000260 28-11 bool insp,260  000300 28-12 bool ign,300  000320 28-13 bool mvc,320  000340 28-14 bool mses,340  000360 28-15 bool mors,360  000400 28-16 bool lte,400  000420 28-17 bool cht,420  28-18 "  000010 28-19 bool if0,10  000004 28-20 bool if1,4 000002 28-21 bool if2,2 000001 28-22 bool if3,1 28-6  28-7 " 28-8  28-9 " lda GE code  28-10 " tsx2 geas to convert to ASCII 28-11 " sta ASCII code  28-12  017431 0a 016231 7550 00 28-13 geas: sta wd6 setup char tally words  28-14  017432 aa 000000 1604 00 28-15 mvt (),()  017433 0a 016231 020004 28-16 desc6a wd6,4  017434 0a 016232 000004 28-17 desc9a wd9,4  017435 0a 017440 0000 00 28-18 arg geastab  28-19  017436 0a 016232 2350 00 28-20 lda wd9 get comverted word  017437 aa 000000 7100 12 28-21 tra 0,2  28-22  017440 aa 060 061 062 063 28-23 geastab: aci X0123456789[#@:>?X 017441 aa 064 065 066 067 017442 aa 070 071 133 043 017443 aa 100 072 076 077 017444 aa 040 141 142 143 28-24 aci X abcdefghi&.](<\X 017445 aa 144 145 146 147 017446 aa 150 151 046 056 017447 aa 135 050 074 134 017450 aa 174 152 153 154 28-25 aci X|jklmnopqr-$*);'X 017451 aa 155 156 157 160 017452 aa 161 162 055 044 017453 aa 052 051 073 047 017454 aa 053 057 163 164 28-26 aci X+/stuvwxyz_,%=" X 017455 aa 165 166 167 170 017456 aa 171 172 137 054 017457 aa 045 075 042 040 28-27  017460 aa 060 061 062 063 28-28 geastabu: aci o0123456789[#@:>?o  017461 aa 064 065 066 067 017462 aa 070 071 133 043 017463 aa 100 072 076 077 017464 aa 040 101 102 103 28-29 aci o ABCDEFGHI&.](<\o 017465 aa 104 105 106 107 017466 aa 110 111 046 056 017467 aa 135 050 074 134 017470 aa 136 112 113 114 28-30 aci o^JKLMNOPQR-$*);'o 017471 aa 115 116 117 120 017472 aa 121 122 055 044 017473 aa 052 051 073 047 017474 aa 053 057 123 124 28-31 aci o+/STUVWXYZ_,%="!o 017475 aa 125 126 127 130 017476 aa 131 132 137 054 017477 aa 045 075 042 041 28-32  28-33 "  017500 0a 022656 1150 00 28-34 ljust: cmpa =h " check for blank  017501 aa 000000 6000 12 28-35 tze 0,2  28-36  017502 0a 022724 2360 00 28-37 ldq =o007777777777 to left adjust ge word  017503 aa 200000 2110 03 28-38 cmk =o200000,du  017504 aa 000000 6010 12 28-39 tnz 0,2  017505 aa 000006 7750 00 28-40 alr 6  017506 0a 017503 7100 00 28-41 tra *-3  28-42  017507 0a 022656 1150 00 28-43 rjust: cmpa =h " check for blank  017510 aa 000000 6000 12 28-44 tze 0,2  28-45  017511 aa 000100 3360 07 28-46 lcq =o100,dl to right adjust ge word  017512 aa 000020 2110 07 28-47 cmk =o20,dl  017513 aa 000000 6010 12 28-48 tnz 0,2  017514 aa 000036 7750 00 28-49 alr 30 017515 0a 017512 7100 00 28-50 tra *-3  28-51  017516 0a 017525 7550 00 28-52 bzel: sta bzin replace leading zeros with blanks  017517 aa 000000 0204 00 28-53 mve (),(),()  017520 0a 017525 020006 28-54 desc6a bzin,6  017521 0a 017527 000004 28-55 desc9a bzedit,4  017522 0a 017526 020006 28-56 desc6a bzout,6 017523 0a 017526 2350 00 28-57 lda bzout  017524 aa 000000 7100 12 28-58 tra 0,2  28-59  017525 28-60 bzin: bss ,1  017526 28-61 bzout: bss ,1  017527 aa 401020 105321 28-62 bzedit: vfd 9/lte+1,o9/20,9/mvzb+5,9/mvc+1  28-63  28-64 " End of include file ...... conv.incl.alm  28-65  184  185 include strip  29-1 " 29-2 " Begin include file ...... strip.incl.alm  29-3 " Created 5/8/75 by Noel I. Morris  29-4  29-5 " tsx2 stripa to strip blanks from ASCII characters  29-6 " desc9a string,length  29-7 " sta length length with blanks stripped  29-8  017530 0a 017556 6270 00 29-9 stripa: eax7 abtable X7 -> table for stripping ASCII blanks  29-10  017531 aa 000000 1654 20 29-11 stripj: tctr (id) scan characters in reverse  017532 aa 000000 0000 12 29-12 arg 0,2  017533 aa 000000 0000 17 29-13 arg 0,7  017534 0a 017545 0000 00 29-14 arg tctally  29-15  017535 0a 022734 2350 00 29-16 lda =o77777777 mask out extraneous info in tally  017536 0a 017545 3550 00 29-17 ansa tctally ..  29-18  017537 aa 000000 2350 12 29-19 lda 0,2 descriptor in A  017540 aa 007777 3750 07 29-20 ana =o7777,dl extract string length  017541 0a 017545 1350 00 29-21 sbla tctally subtract blanks skipped over 29-22  017542 aa 000001 7100 12 29-23 tra 1,2 return with new length in A  29-24  29-25  29-26 " tsx2 stripg to strip blanks from GEBCD characters  29-27 " desc6a string,length  29-28 " sta length length with blanks stripped  29-29  017543 0a 017546 6270 00 29-30 stripg: eax7 gbtable X7 -> table for stripping GEBCD blanks  017544 0a 017531 7100 00 29-31 tra stripj join common code  29-32  29-33  017545 29-34 tctally: bss ,1 29-35  017546 29-36 gbtable:  017546 aa 001001 001001 29-37 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017547 aa 001001 001001 017550 aa 001001 001001 29-38 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017551 aa 001001 001001 017552 aa 000001 001001 29-39 vfd 9/0,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017553 aa 001001 001001 017554 aa 001001 001001 29-40 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017555 aa 001001 001001 017556 29-41 abtable:  017556 aa 001001 001001 29-42 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017557 aa 001001 001001 017560 aa 001001 001001 29-43 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017561 aa 001001 001001 017562 aa 001001 001001 29-44 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017563 aa 001001 001001 017564 aa 001001 001001 29-45 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017565 aa 001001 001001 29-46  017566 aa 000001 001001 29-47 vfd 9/0,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017567 aa 001001 001001 017570 aa 001001 001001 29-48 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017571 aa 001001 001001 017572 aa 001001 001001 29-49 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017573 aa 001001 001001 017574 aa 001001 001001 29-50 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017575 aa 001001 001001 29-51  017576 aa 001001 001001 29-52 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017577 aa 001001 001001 017600 aa 001001 001001 29-53 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017601 aa 001001 001001 017602 aa 001001 001001 29-54 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017603 aa 001001 001001 017604 aa 001001 001001 29-55 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017605 aa 001001 001001 29-56  017606 aa 001001 001001 29-57 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017607 aa 001001 001001 017610 aa 001001 001001 29-58 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017611 aa 001001 001001 017612 aa 001001 001001 29-59 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017613 aa 001001 001001 017614 aa 001001 001001 29-60 vfd 9/1,9/1,9/1,9/1,9/1,9/1,9/1,9/1  017615 aa 001001 001001 29-61  29-62 " End of include file ...... strip.incl.alm 29-63  29-64  186  187 include getcon 30-1 "  30-2 " Begin include file ...... getcon.incl.alm 30-3 " Modified 3/74 by N. I. Morris 30-4  30-5 " to get configuration from table  30-6 " lda ascii_key_word  30-7 " tsx2 getconf  30-8 " tra not_found 30-9 " com|0,7 is key word in table  30-10 "  30-11 " to continue search of table  30-12 " lda ascii_key_word  30-13 " tsx2 getmore  30-14 " tra not_found 30-15  017616 aa 003000 6270 00 30-16 getconf: eax7 conf search table  017617 aa 6 00000 1151 17 30-17 getcon1: cmpa com|0,7  017620 aa 000001 6000 12 30-18 tze 1,2 if found return  017621 aa 000020 6270 17 30-19 getmore: eax7 confl,7  017622 aa 007000 1070 03 30-20 cmpx7 econf,du 017623 0a 017617 6040 00 30-21 tmi getcon1  017624 aa 000000 7100 12 30-22 tra 0,2  30-23  30-24  30-25 " to search for key word on PRPH card  30-26 " lda ascii_key_word  30-27 " tsx2 getperiph  30-28 " tra not_found 30-29  017625 30-30 getperiph:  017625 0a 017634 7420 00 30-31 stx2 phx2 save X2 017626 aa 000044 7730 00 30-32 lrl 36 key word in Q  30-33  017627 0a 022735 2350 00 30-34 lda =aprph search for PRPH card  017630 0a 017616 7020 00 30-35 tsx2 getconf ..  017631 0a 017636 7100 00 30-36 tra noperiph ..  30-37  017632 aa 6 00001 1161 17 30-38 cmpq com|1,7 is it correct?  017633 0a 017621 6010 00 30-39 tnz getmore if not, continue searching config deck  30-40  017634 0a 017634 6220 00 30-41 phx2: eax2 * restore X2  017635 aa 000001 7100 12 30-42 tra 1,2 and return  30-43  017636 0a 017634 2220 00 30-44 noperiph: ldx2 phx2 restore X2 017637 aa 000000 7100 12 30-45 tra 0,2 take error return 30-46  30-47 " End of include file ...... getcon.incl.alm  30-48  188  189 include rdclock  31-1 " 31-2 " Begin include file ...... rdclock.incl.alm  31-3 " last modified 7/20/76 by Noel I. Morris  31-4 " last modified 7/10/78 by Bernard S. Greenberg for externally gettable vars  31-5 " and calculating every parameter imaginable.  31-6 " last modified 5/05/80 by Mike Grady to calculate a few more imaginable  31-7 " variables, and to fix a bug in leap years.  31-8 "  31-9 " tsx2 rd_clock 31-10 " staq MM/DD HH:MM  31-11  31-12 " ldaq clocktime  31-13 " tsx2 cv_clock 31-14 " staq MM/DD HH:MM  31-15  017640 aa 000040 4130 00 31-16 rd_clock: rscr 4*8 read the clock 31-17  017641 0a 017772 7570 00 31-18 cv_clock: staq rdctime save clock reading 017642 0a 017743 7420 00 31-19 stx2 datx2 save XR's 017643 0a 017744 7400 00 31-20 stx0 datx2+1 ..  31-21  017644 aa 000034 2350 07 31-22 lda 28,dl Initialize montab  017645 0a 017775 7550 00 31-23 sta montab+1 to prime Feb  31-24  017646 0a 022736 2350 00 31-25 lda =aclok find clock config card  017647 0a 017616 7020 00 31-26 tsx2 getconf  017650 0a 017655 7100 00 31-27 tra no_clok_card Use default  017651 aa 6 00001 2361 17 31-28 ldq com|1,7  017652 0a 017766 7560 00 31-29 stq rdclock.zone_temp Delta hours 017653 aa 6 00002 2361 17 31-30 ldq com|2,7  017654 0a 017767 7560 00 31-31 stq rdclock.zone_name Name of zone  31-32  017655 31-33 no_clok_card:  017655 0a 017772 2370 00 31-34 ldaq rdctime Get clock reading  017656 aa 000001 7370 00 31-35 lls 1 Set for dvf  017657 0a 022737 5070 00 31-36 dvf =1000000 Get seconds since 1900. 017660 aa 000044 7770 00 31-37 llr 36 Into Q.  017661 aa 000074 5060 07 31-38 div 60,dl Seconds since min to A, mins to Q. 017662 0a 017756 7550 00 31-39 sta rdclock.sec Save for inspection.  017663 aa 000074 5060 07 31-40 div 60,dl Min since hr to A, hrs to Q.  017664 0a 017755 7550 00 31-41 sta rdclock.min  31-42 "  31-43 " Set up X7 for field filling.  31-44 "  017665 aa 000006 6270 00 31-45 eax7 6 017666 0a 017746 7020 00 31-46 tsx2 datecv Convert the minutes. 017667 0a 017766 1760 00 31-47 sbq rdclock.zone_temp Adjust for GMT. 017670 aa 000030 5060 07 31-48 div 24,dl Days since 1900 in q.  017671 0a 017765 7560 00 31-49 stq rdclock.day_of_century save for later.  017672 0a 017754 7550 00 31-50 sta rdclock.hr Hours since daybreak.  017673 0a 017746 7020 00 31-51 tsx2 datecv Convert the hours  31-52  017674 aa 002665 5060 07 31-53 div 365*4+1,dl get leap year cycle  017675 aa 002110 1150 07 31-54 cmpa 365*3+1,dl if in last year of cycle (the leap year)  017676 0a 017700 6040 00 31-55 tmi *+2 no  017677 0a 017775 0540 00 31-56 aos montab+1 allow for feb 29  31-57  017700 aa 000002 7360 00 31-58 qls 2 4*# leap year cycles  017701 aa 003555 0360 07 31-59 adlq 1901,dl  017702 0a 017764 7560 00 31-60 stq rdclock.year Save 31-61  017703 aa 000044 7770 00 31-62 llr 36 017704 aa 000555 5060 07 31-63 div 365,dl Years complete since l.y.c. =>Q  31-64 " Days since that year end => A 31-65  017705 aa 000004 1160 07 31-66 cmpq 4,dl Dec 31st of leap year? 017706 0a 017711 6010 00 31-67 tnz *+3 No.  017707 aa 000001 1760 07 31-68 sbq 1,dl Adjust year and 017710 aa 000555 2350 07 31-69 lda 365,dl day numbers.  31-70  017711 0a 017764 0560 00 31-71 asq rdclock.year Add in years complete.  017712 aa 000000 6260 00 31-72 eax6 0 search for correct month  017713 aa 030220 5202 01 31-73 rpt 12,1,tmi ..  017714 0a 017774 1750 16 31-74 sba montab,6 subtract off days for each month  017715 aa 777777 0750 16 31-75 ada -1,6 put back last entry 017716 aa 000001 0750 07 31-76 ada 1,dl plus one more  017717 0a 017761 7550 00 31-77 sta rdclock.day_of_month Day of month  017720 0a 017746 7020 00 31-78 tsx2 datecv convert day  31-79  017721 aa 000000 6350 16 31-80 eaa 0,6  017722 0a 017774 1350 03 31-81 sbla montab,du get index into month table  017723 aa 000022 7710 00 31-82 arl 18 ..  017724 0a 017757 7550 00 31-83 sta rdclock.month Save month number  017725 0a 020021 2360 05 31-84 ldq rdc.months-1,al Get name of month.  017726 0a 017760 7560 00 31-85 stq rdclock.month_name 017727 0a 017746 7020 00 31-86 tsx2 datecv convert month  31-87  017730 aa 000000 0244 00 31-88 mvne (),(),() edit the date and time 017731 0a 017771 070010 31-89 desc4ns date,8 017732 0a 020010 000014 31-90 desc9a datedit,12  017733 0a 017772 020014 31-91 desc6a rdctime,12  31-92  017734 0a 017765 2360 00 31-93 ldq rdclock.day_of_century 017735 aa 000002 0760 07 31-94 adq 2,dl Bump Tuesday into place.  017736 aa 000007 5060 07 31-95 div 7,dl  017737 0a 017762 7550 00 31-96 sta rdclock.day_of_week  017740 0a 020013 2360 05 31-97 ldq rdc.days,al Get name of day.  017741 0a 017763 7560 00 31-98 stq rdclock.day_name  31-99  017742 0a 017772 2370 00 31-100 ldaq rdctime get conversion in AQ  017743 0a 017743 6220 00 31-101 datx2: eax2 * restore XR's  017744 0a 017744 6200 00 31-102 eax0 * ..  017745 aa 000000 7100 12 31-103 tra 0,2 return to caller 31-104  31-105  017746 0a 017770 7550 00 31-106 datecv: sta datenum save number  31-107  017747 aa 000017 3014 00 31-108 btd (),(x7) convert into proper place  017750 0a 017770 000004 31-109 desc9a datenum,4  017751 0a 017771 070002 31-110 desc4ns date,2 31-111  017752 aa 777776 6270 17 31-112 eax7 -2,7 move offset index  017753 aa 000000 7100 12 31-113 tra 0,2 and return  31-114  31-115 "  31-116 " Usefull outside visible variables rdclock.xxxxx  31-117  017754 31-118 rdclock.hr: 017754 31-119 bss ,1 017755 31-120 rdclock.min:  017755 31-121 bss ,1 017756 31-122 rdclock.sec:  017756 31-123 bss ,1 017757 31-124 rdclock.month:  017757 31-125 bss ,1 017760 31-126 rdclock.month_name: 017760 31-127 bss ,1 017761 31-128 rdclock.day_of_month:  017761 31-129 bss ,1 017762 31-130 rdclock.day_of_week:  017762 31-131 bss ,1 017763 31-132 rdclock.day_name:  017763 31-133 bss ,1 017764 31-134 rdclock.year:  017764 31-135 bss ,1 017765 31-136 rdclock.day_of_century: 017765 31-137 bss ,1 017766 31-138 rdclock.zone_temp:  017766 aa 000000 000005 31-139 dec 5  017767 31-140 rdclock.zone_name:  017767 aa 145 163 164 040 31-141 aci 'est ' 31-142  017770 31-143 datenum: bss ,1 017771 31-144 date: bss ,1  31-145  31-146 even  017772 31-147 rdctime: bss ,2 31-148  017774 aa 000000 000037 31-149 montab: dec 31,28,31,30,31,30,31,31,30,31,30,31 017775 aa 000000 000034 017776 aa 000000 000037 017777 aa 000000 000036 020000 aa 000000 000037 020001 aa 000000 000036 020002 aa 000000 000037 020003 aa 000000 000037 020004 aa 000000 000036 020005 aa 000000 000037 020006 aa 000000 000036 020007 aa 000000 000037 31-150  020010 aa 401020 102260 31-151 datedit: vfd 9/lte+1,o9/20,9/mvzb+2,9/insp,o9/61,9/mvc+2,9/insm+1,9/mvc+2  020011 aa 061322 021322 020012 aa 260015 322021 31-152 vfd 9/insp,o9/15,9/mvc+2,9/insm+1  31-153  020013 aa 163 165 156 040 31-154 rdc.days: aci 'sun mon tue wed thurfri sat '  020014 aa 155 157 156 040 020015 aa 164 165 145 040 020016 aa 167 145 144 040 020017 aa 164 150 165 162 020020 aa 146 162 151 040 020021 aa 163 141 164 040 31-155  020022 31-156 rdc.months:  020022 aa 152 141 156 040 31-157 aci 'jan feb mar apr may jun jul aug septoct nov dec ' 020023 aa 146 145 142 040 020024 aa 155 141 162 040 020025 aa 141 160 162 040 020026 aa 155 141 171 040 020027 aa 152 165 156 040 020030 aa 152 165 154 040 020031 aa 141 165 147 040 020032 aa 163 145 160 164 020033 aa 157 143 164 040 020034 aa 156 157 166 040 020035 aa 144 145 143 040 31-158  31-159 " End of include file ...... rdclock.incl.alm  31-160  190  191 include fgbx  32-1  32-2 "BEGIN INCLUDE FILE fgbx.incl.alm  32-3  32-4 " Reconstructed by BSG 8/30/78 from a listing of Noel's;  32-5 " Apparently, the version of 10/07/76 got lost. 32-6 " Modified 8/79 by R.J.C. Kissel to add 32 words for FNP blast message. 32-7 " Modified 7/82 BIM -- 8 words for sentinel, and sentinel  32-8 " macro.  32-9  32-10 "  32-11 " Structure fgbx  32-12 "  000100 32-13 equ fgbx_size,64  32-14  000000 32-15 equ fgbx.flags_word,0  400000 32-16 bool fgbx.flags,400000 "DU  32-17  000001 32-18 equ fgbx.slt_segno,1 "UPPER  32-19  000002 32-20 equ fgbx.cpus,2 "LEVEL 2  32-21  000034 32-22 equ fgbx.ports_shift,28  000571 32-23 equ fgbx.ports_mask,000377 000025 32-24 equ fgbx.tags_shift,21 000007 32-25 equ fgbx.tags_mask,000007  32-26  000003 32-27 equ fgbx.rtb,3 "LEVEL 2  32-28  400000 32-29 bool fgbx.ssenb,400000 "DU  200000 32-30 bool fgbx.call_bos,200000 "DU  100000 32-31 bool fgbx.shut,100000 "DU 040000 32-32 bool fgbx.mess,040000 "DU 020000 32-33 bool fgbx.alert,020000 "DU  000000 32-34 equ fgbx.bos_entry_shift,0 000077 32-35 bool fgbx.bos_entry_mask,000077  32-36  000004 32-37 equ fgbx.sentinel,4 "DOUBLE  000014 32-38 equ fgbx.sst_sdw,12 "DOUBLE  000016 32-39 equ fgbx.hc_dbr,14 "DOUBLE  000020 32-40 equ fgbx.message,16 "DOUBLE  000040 32-41 equ fgbx.fnp_blast,32 "DOUBLE 32-42  32-43 macro flagbox_sentinel 1 32-44 aci "Flagbox && Toehold Valid",32  2 32-45 &end  32-46  32-47 "END INCLUDE FILE fgbx.incl.alm  192  193 include bos_iom_manager  33-1 " Begin include file ...... bos_iom_manager.incl.alm  33-2 " This is the IOM manager for BOS.  33-3 " Written in August 1971 by R F Mabee.  33-4 " Modified 9/12/75 by N. I. Morris for 2 IOM operation. 33-5 " Modified 8/25/76 by Noel I. Morris  33-6 " Last modified by Sherman D. Sprague 02/11/81 33-7 " Modified November 1981 by C. Hornig to remove iom_connect_rel.  33-8 " Modified September 1983 by Sherman D. Sprague to fix overhead channel bug.  33-9  33-10 " This routine must be called first to initialize things.  33-11 " Calling sequence: tsx2 init_io  33-12  020036 0a 020135 7420 00 33-13 init_io: stx2 iiox2 save X2  33-14  020037 aa 000010 4130 00 33-15 rscr 1*8 read CFG 020040 aa 000012 7710 00 33-16 arl 16-6 get processor port number  020041 aa 000700 3750 07 33-17 ana =o700,dl mask 020042 0a 020544 7550 00 33-18 sta bootload_cpu_port and save for later  33-19  020043 aa 000000 2120 00 33-20 absa 0 absolute address of segment base  020044 aa 000006 7350 00 33-21 als 6 adjust for 18 bit address  020045 0a 020543 7550 00 33-22 sta abs_base_addr save for future use  020046 0a 020525 5510 40 33-23 stba LPWX,40 set base for relative I/O  33-24  020047 aa 0 00007 2361 00 33-25 ldq ds|pgm*2+1 get SDW for this segment  020050 aa 000010 7720 00 33-26 qrl 3+5 shift and divide by 32  020051 aa 000001 0760 03 33-27 adq 1,du round to nearest 512 020052 0a 020525 5520 20 33-28 stbq LPWX,20 set bound for relative I/O  33-29  020053 aa 000044 7730 00 33-30 lrl 36 place address in QU  020054 0a 020523 0760 00 33-31 adq stop_lpw relocate stopper LPW 33-32  020055 aa 7 00600 2121 00 33-33 absa mem|iom_status+ioms*chans*2 get abs addr of status area  020056 aa 000006 7350 00 33-34 als 6 get low order address bits  33-35  020057 aa 6 02011 2271 00 33-36 ldx7 com|iom_mbbase mailbox addr in X7 020060 aa 000774 6270 17 33-37 eax7 ioms*chans*4-4,7 prepare to set up channel mailboxes  020061 aa 000002 1750 03 33-38 initmbx: sba 2,du decrement address of SCW 020062 aa 7 00002 7551 17 33-39 sta mem|iombx.scw,7 set SCW  020063 aa 7 00000 7561 17 33-40 stq mem|iombx.lpw,7 and LPW  020064 aa 7 00001 4501 17 33-41 stz mem|iombx.lpwx,7 clear LPWX  020065 aa 7 00003 4501 17 33-42 stz mem|iombx.dcw,7 and DCW  020066 aa 000004 1670 03 33-43 sbx7 4,du step to next channel  020067 aa 6 02011 1071 00 33-44 cmpx7 com|iom_mbbase are we finished?  020070 0a 020061 6054 00 33-45 tpnz initmbx ..  33-46  020071 aa 000100 1004 00 33-47 mlr (),(pr),fill(0) clear the status area  020072 0a 020072 000000 33-48 desc9a *,0 020073 aa 700200 002000 33-49 desc9a mem|iom_status,ioms*chans*2*4  33-50  020074 aa 6 02010 2351 00 33-51 lda com|iom_mxbase get address of IMW area 020075 aa 000020 7710 00 33-52 arl 18-2 as character offset  020076 aa 000105 1004 00 33-53 mlr (),(pr,al),fill(0) clear IMW area  020077 0a 020077 000000 33-54 desc9a *,0 020100 aa 700000 001000 33-55 desc9a mem|0,128*4 33-56  020101 0a 020550 2350 00 33-57 lda fault_lpw set up system fault channel 020102 aa 000004 6260 00 33-58 eax6 fault_channel*4 ..  020103 0a 020137 7070 00 33-59 tsx7 set_overhead_channel ..  33-60  020104 0a 020551 2350 00 33-61 lda fault_lpw+1 set up for second IOM  020105 aa 000404 6260 00 33-62 eax6 fault_channel*4+chans*4 ..  020106 0a 020137 7070 00 33-63 tsx7 set_overhead_channel ..  33-64  020107 0a 020554 2350 00 33-65 lda special_lpw set up special status channel  020110 aa 000030 6260 00 33-66 eax6 special_channel*4 ..  020111 0a 020137 7070 00 33-67 tsx7 set_overhead_channel ..  33-68  020112 0a 020555 2350 00 33-69 lda special_lpw+1 set up for second IOM  020113 aa 000430 6260 00 33-70 eax6 special_channel*4+chans*4 .. 020114 0a 020137 7070 00 33-71 tsx7 set_overhead_channel ..  33-72  020115 0a 020547 5540 00 33-73 stc1 dcw_reloc_flag remember relocation was done.  020116 0a 020561 4500 00 33-74 stz special_handler reset special handler  020117 0a 020560 4500 00 33-75 stz status_handler reset status handler  33-76  020120 0a 022740 2350 00 33-77 lda =aiom " look for IOM config cards 020121 0a 017616 7020 00 33-78 tsx2 getconf ..  020122 0a 020135 7100 00 33-79 tra iiox2 exit if no card 33-80  020123 aa 6 00002 7261 17 33-81 lxl6 com|2,7 get port number  020124 aa 6 00001 2361 17 33-82 ldq com|1,7 get IOM tag  020125 aa 000002 1160 07 33-83 cmpq ioms,dl see if too big  020126 0a 017621 6054 00 33-84 tpnz getmore if too big, ignore  020127 aa 000001 1760 07 33-85 sbq 1,dl minus 1  020130 0a 017621 6000 00 33-86 tze getmore in case Martinson has wrong IOM card  020131 aa 000032 7360 00 33-87 qls 18+6+2 multiply by size of mailbox  020132 aa 6 02011 0361 00 33-88 adlq com|iom_mbbase relocate to mailbox base  020133 aa 7 00001 4461 02 33-89 sxl6 mem|iom_cow,qu set COW in correct mailbox 33-90  020134 0a 017621 7100 00 33-91 tra getmore look for additional IOMs  33-92  020135 0a 020135 6220 00 33-93 iiox2: eax2 * restore X2  020136 aa 000000 7100 12 33-94 tra 0,2  33-95  33-96  33-97  020137 33-98 set_overhead_channel:  020137 aa 6 02011 6261 76 33-99 eax6 com|iom_mbbase,*6 get address of channel mailbox  020140 aa 000000 2360 01 33-100 ldq 0,au Get DCW for overhead channel.  020141 0a 020547 2340 00 33-101 szn dcw_reloc_flag only relocate once. 020142 0a 020145 6010 00 33-102 tnz set_overhead_dcw if already relocated. 020143 aa 6 02010 0361 00 33-103 adlq com|iom_mxbase Relocate to IMW area.  020144 aa 000000 7560 01 33-104 stq 0,au Replace DCW. 33-105  020145 33-106 set_overhead_dcw:  020145 aa 7 00003 7561 16 33-107 stq mem|iombx.dcw,6 Set DCW in mailbox.  33-108  020146 0a 020543 0350 00 33-109 adla abs_base_addr Relocate LPW address.  020147 aa 7 00000 7551 16 33-110 sta mem|iombx.lpw,6 Set overhead channel LPW.  33-111  020150 aa 000000 7100 17 33-112 tra 0,7 Return to caller.  33-113 " This routine issues a connect to the IOM using the caller's PCW and DCW list. 33-114 " Calling sequence: tsx2 connect_iom  33-115 " zero PCW_address,DCW_list_address  33-116  020151 33-117 connect_iom:  020151 0a 020524 4500 00 33-118 stz LPW clear all bits in LPW.  020152 33-119 connect_join:  020152 aa 000000 2350 12 33-120 lda 0,2 get argument pointers 020153 aa 000001 2360 01 33-121 ldq 1,au get channel # from PCW word B  020154 aa 000007 7720 00 33-122 qrl 9-2 shift and multiply by 4  020155 aa 6 02011 6271 62 33-123 eax7 com|iom_mbbase,*qu channel mailbox address in X7  020156 aa 000000 2120 05 33-124 absa 0,al get DCW list address  020157 aa 000006 7350 00 33-125 als 6 in AU  020160 0a 020524 2750 00 33-126 ora LPW insert LPW bits  020161 aa 7 00000 7551 17 33-127 sta mem|iombx.lpw,7 and store completed LPW  33-128  020162 0a 020525 2350 00 33-129 lda LPWX set LPWX in case of relative connect 020163 aa 7 00001 7551 17 33-130 sta mem|iombx.lpwx,7 for LPW extension 33-131  020164 aa 000001 7720 00 33-132 qrl 1 2 * channel # in QU 020165 aa 7 00200 4501 02 33-133 stz mem|iom_status,qu clear the status for this channel  020166 aa 7 00201 4501 02 33-134 stz mem|iom_status+1,qu ..  33-135  020167 aa 000000 2350 12 33-136 lda 0,2 get argument pointers 020170 aa 000000 2120 01 33-137 absa 0,au get absolute address of PCW 020171 aa 000006 7350 00 33-138 als 6 in AU  020172 aa 020001 2750 07 33-139 ora =o020001,dl insert LPW bits  020173 aa 777400 3670 03 33-140 anx7 -chans*4,du get address of correct mailbox  020174 aa 7 00010 7551 17 33-141 sta mem|iombx.lpw+connect_channel*4,7 set connect channel LPW 33-142  020175 33-143 reconnect:  020175 aa 141520 6260 00 33-144 eax6 50000 wait a while for connect to take  020176 aa 7 00001 0151 17 33-145 cioc mem|iom_cow,7 ZAP 020177 aa 7 00010 1151 17 33-146 cmpa mem|iombx.lpw+connect_channel*4,7 has connect channel LPW changed?  020200 aa 000001 6010 12 33-147 tnz 1,2 if so, the connect has taken. Return.  020201 aa 000001 1660 03 33-148 sbx6 1,du wait for a while  020202 0a 020177 6050 00 33-149 tpl *-3 ..  020203 0a 020175 7100 00 33-150 tra reconnect then try connect again  33-151  33-152  33-153 " This entry point issues a connect to a DCW list which has not been relocated. 33-154 " It sets the REL bit in the LPW and sets the offset and bound of the LPW ext.  33-155 " to reference segment "pgm".  33-156  33-157 " connect_iom_rel:  33-158 " lda =o010000,dl get REL bit  33-159 " sta LPW store into LPW template  33-160 " tra connect_join now join common code 33-161  33-162 " 33-163 " This routine picks up the status word for a particular channel  33-164 " and checks for abnormal status.  33-165 " Calling sequence: tsx2 check_status  33-166 " arg channel_info_address 33-167 " zero 0 " No status stored yet.  33-168 " tra error " Abnormal status.  33-169 " - - - " Normal return. 33-170  020204 33-171 check_status_no_stat: "Special feature for DIA 020204 0a 020562 5540 00 33-172 stc1 checkstat_nostat_sw  020205 0a 020207 7100 00 33-173 tra check_status_1 33-174  020206 33-175 check_status:  020206 0a 020562 4500 00 33-176 stz checkstat_nostat_sw  020207 33-177 check_status_1: 020207 aa 000014 6250 00 33-178 eax5 3*4 Get interrupt cell number.  020210 0a 020532 6260 00 33-179 eax6 TIMW Get address for IMW's.  020211 0a 020331 7070 00 33-180 tsx7 get_imws Pick up IMW's.  33-181  020212 33-182 test_status:  020212 aa 000000 2350 32 33-183 lda 0,2* Channel number in AU.  020213 0a 020351 7070 00 33-184 tsx7 test_imw Has terminate occurred on this channel? 020214 0a 020532 000001 33-185 descb TIMW,1  020215 0a 020231 7100 00 33-186 tra none_waiting If not, skip following code.  33-187  020216 aa 000001 7350 00 33-188 als 1 Channel * 2 in AU.  020217 aa 000000 6270 01 33-189 eax7 0,au  020220 aa 7 00200 2371 17 33-190 ldaq mem|iom_status,7 Current status word for the channel. 020221 0a 020224 6010 00 33-191 tnz checkstat_status_waits 020222 0a 020562 2340 00 33-192 szn checkstat_nostat_sw Magic return? 020223 0a 020231 6000 00 33-193 tze none_waiting No, there's no status 020224 33-194 checkstat_status_waits: 020224 aa 7 00200 4501 17 33-195 stz mem|iom_status,7 Clear word.  020225 aa 7 00201 4501 17 33-196 stz mem|iom_status+1,7 020226 0a 020546 3150 00 33-197 cana status_mask Check for abnormal status.  020227 aa 000003 6000 12 33-198 tze 3,2 Normal return.  020230 aa 000002 7100 12 33-199 tra 2,2 Error return.  33-200  020231 33-201 none_waiting: " Do some other work while waiting for channel. 020231 0a 020545 2340 00 33-202 szn status_lock Check before using static storage.  020232 0a 020314 6010 00 33-203 tnz nostatus No status - callout lock set. Take no status action.  020233 0a 020545 5540 00 33-204 stc1 status_lock Lock it to me before using stat_x0.  33-205  020234 0a 020311 7400 00 33-206 stx0 stat_x0  020235 0a 020312 7420 00 33-207 stx2 stat_x2  020236 0a 020560 2340 00 33-208 szn status_handler If no status handler,  020237 0a 020246 6000 00 33-209 tze no_stat_call Do not check for call.  020240 0a 020212 7020 00 33-210 tsx2 test_status Test for status.  020241 0a 020560 0000 00 33-211 arg status_handler 020242 0a 020246 7100 00 33-212 tra no_stat_call If none, skip call.  020243 0a 020244 7100 00 33-213 tra *+1  33-214  020244 0a 020560 7270 00 33-215 lxl7 status_handler Handler address in X7. 020245 aa 000000 7020 17 33-216 tsx2 0,7 Perform call.  33-217  020246 33-218 no_stat_call:  020246 aa 000034 6250 00 33-219 eax5 7*4 Interrupt level in X5.  020247 0a 020536 6260 00 33-220 eax6 SIMW Place to store special IMW's.  020250 0a 020361 7020 00 33-221 tsx2 overhead_queue_search Check for special status.  020251 aa 000006 000000 33-222 zero special_channel  020252 0a 020262 0000 00 33-223 arg process_special_status 33-224  020253 0a 020561 2350 00 33-225 lda special_handler If no special handler, 020254 0a 020271 6000 00 33-226 tze no_spec_int Do not check for call. 020255 0a 020351 7070 00 33-227 tsx7 test_imw Test for special status.  020256 0a 020536 000001 33-228 descb SIMW,1 ..  020257 0a 020271 7100 00 33-229 tra no_spec_int If none, skip call.  33-230  020260 aa 000000 7020 05 33-231 tsx2 0,al Perform call.  020261 0a 020271 7100 00 33-232 tra no_spec_int And continue.  33-233  33-234  020262 33-235 process_special_status: 020262 aa 000011 7710 00 33-236 arl 9 Shift the channel #.  020263 aa 000077 3750 03 33-237 ana =o77,du Mask it.  020264 0a 020542 2750 00 33-238 ora iomno Insert IOM #.  020265 aa 017001 0604 00 33-239 csl (),(au),bool(17) Set IMW bit for channel.  020266 0a 020266 000000 33-240 descb *,0  020267 0a 020536 000001 33-241 descb SIMW,1  020270 aa 000000 7100 17 33-242 tra 0,7 Return to caller. 33-243  33-244  020271 33-245 no_spec_int:  020271 aa 000004 6250 00 33-246 eax5 1*4 Interrupt level in X5.  020272 0a 020526 6260 00 33-247 eax6 FIMW Place to store system fault IMW's.  020273 0a 020361 7020 00 33-248 tsx2 overhead_queue_search Check for system fault status. 020274 aa 000001 000000 33-249 zero fault_channel 020275 0a 020277 0000 00 33-250 arg process_system_fault  33-251  020276 0a 020311 7100 00 33-252 tra stat_x0 All finished with status checking.  33-253  33-254  020277 33-255 process_system_fault:  020277 aa 000000 6360 01 33-256 eaq 0,au Channel # in QU. 020300 0a 020542 2760 00 33-257 orq iomno Insert IOM #.  020301 aa 000001 7360 00 33-258 qls 1 Multiply by 2.  020302 aa 777777 3750 07 33-259 ana =o777777,dl Mask info in AL.  020303 aa 770074 2750 03 33-260 ora =o770074,du Manufacture status with "abort" bit set.  020304 aa 7 00200 7551 02 33-261 sta mem|iom_status,qu Set status in status area.  33-262  020305 aa 017022 0604 00 33-263 csl (),(id,qu),bool(17) Set terminate IMW bit for channel. 020306 0a 020306 000000 33-264 descb *,0  020307 0a 020532 000001 33-265 descb TIMW,1  020310 aa 000000 7100 17 33-266 tra 0,7 Return to caller.  33-267  020311 0a 020311 6200 00 33-268 stat_x0: eax0 * 020312 0a 020312 6220 00 33-269 stat_x2: eax2 * 020313 0a 020545 4500 00 33-270 stz status_lock  33-271  020314 33-272 nostatus:  020314 0a 020316 7070 00 33-273 tsx7 iowait Wait for I/O to complete. 020315 0a 020207 7100 00 33-274 tra check_status_1 Then, check for status again.  33-275  33-276  33-277  33-278  020316 aa 000001 2340 12 33-279 iowait: szn 1,2 Action to take on no status?  020317 aa 000001 6010 12 33-280 tnz 1,2 If so, take it.  33-281  020320 0a 020544 7260 00 33-282 lxl6 bootload_cpu_port Get CPU port * 64.  020321 aa 777776 2350 03 33-283 lda =o777776,du Open mask for all interrupts.  020322 aa 777776 2360 03 33-284 ldq =o777776,du .. 020323 33-285 inhibit on <+><+><+><+><+><+><+><+><+><+><+><+>  020323 aa 000020 0572 16 33-286 sscr 2*8,6 .. 33-287  020324 aa 000000 2352 32 33-288 lda 0,2* Display channel number.  020325 33-289 inhibit off <-><-><-><-><-><-><-><-><-><-><-><->  020325 aa 000000 6160 00 33-290 dis 0 Wait for interrupt. 020326 33-291 inhibit on <+><+><+><+><+><+><+><+><+><+><+><+>  33-292  020326 aa 000000 4312 07 33-293 fld 0,dl Close mask again.  020327 aa 000020 0572 16 33-294 sscr 2*8,6 .. 020330 33-295 inhibit off <-><-><-><-><-><-><-><-><-><-><-><->  33-296  020330 aa 000000 7100 17 33-297 tra 0,7 Return to caller.  33-298  020331 33-299 get_imws:  020331 aa 6 02010 0251 00 33-300 adlx5 com|iom_mxbase Relocate IMW address. 020332 aa 7 00000 0321 15 33-301 ldqc mem|0,5 Get first IMW.  020333 aa 000040 7370 00 33-302 lls 36-4 Take first 32 bits.  020334 aa 7 77774 0321 15 33-303 ldqc mem|-4,5 Get second IMW. 020335 aa 000004 7370 00 33-304 lls 4 Insert 4 more bits. 020336 aa 000000 2550 16 33-305 orsa 0,6 Store first word.  33-306  020337 aa 000034 7370 00 33-307 lls 36-8 Get 28 more bits.  020340 aa 7 00001 0321 15 33-308 ldqc mem|1,5 Get third IMW.  020341 aa 000010 7370 00 33-309 lls 8 Insert 8 bits.  020342 aa 000001 2550 16 33-310 orsa 1,6 Store second word.  33-311  020343 aa 000030 7370 00 33-312 lls 36-12 Get 24 more bits.  020344 aa 7 77775 0321 15 33-313 ldqc mem|-4+1,5 Get last IMW.  020345 aa 000014 7370 00 33-314 lls 12 Insert 12 bits.  020346 aa 000002 2550 16 33-315 orsa 2,6 Store third word.  020347 aa 000003 2560 16 33-316 orsq 3,6 And fourth word. 33-317  020350 aa 000000 7100 17 33-318 tra 0,7 Return to caller. 33-319  33-320  33-321  020351 33-322 test_imw:  020351 aa 005021 0644 00 33-323 sztl (),(id,au),bool(05) Has interrupt occurred on this channel?  020352 0a 020352 000000 33-324 descb *,0  020353 aa 000000 0000 17 33-325 arg 0,7  020354 aa 000001 6000 17 33-326 tze 1,7 If not, take failure return.  33-327  020355 aa 000021 0604 00 33-328 csl (),(id,au),bool(00) Turn off IMW bit.  020356 0a 020356 000000 33-329 descb *,0  020357 aa 000000 0000 17 33-330 arg 0,7  33-331  020360 aa 000002 7100 17 33-332 tra 2,7 Take success return.  33-333  020361 33-334 overhead_queue_search:  020361 0a 020367 7460 00 33-335 stx6 oqsdesc Set descriptor to IMW.  020362 0a 020331 7070 00 33-336 tsx7 get_imws Pick up IMW's.  33-337  020363 0a 020542 4500 00 33-338 stz iomno Zero IOM # to start.  020364 aa 000000 2350 07 33-339 lda 0,dl Clear the A. 020365 33-340 overhead_loop:  020365 aa 000000 0750 12 33-341 ada 0,2 Add in the channel #. 020366 0a 020351 7070 00 33-342 tsx7 test_imw See if interrupt present.  020367 0a 020367 000001 33-343 oqsdesc: descb *,1  020370 0a 020404 7100 00 33-344 tra noovh If not, skip following. 33-345  020371 aa 000002 7350 00 33-346 als 2 Multiply channel # by 4.  020372 aa 6 02011 6351 61 33-347 eaa com|iom_mbbase,*au Get address of appropriate mailbox. 020373 aa 7 00000 2251 01 33-348 ldx5 mem|iombx.lpw,au Get address of DCW from LPW. 020374 aa 7 00000 2251 15 33-349 ldx5 mem|0,5 Get address of queue from DCW.  020375 0a 020376 2200 00 33-350 ldx0 *+1 Set up X0 for RPT.  020376 aa 010040 5202 01 33-351 oqsrpt: rptx overhead_qlth,1,tnz Search through queue.  020377 aa 7 00000 0341 15 33-352 ldac mem|0,5 ..  020400 0a 020404 6064 00 33-353 ttn noovh If empty, try other IOM.  33-354  020401 aa 000001 7070 32 33-355 tsx7 1,2* Process queue entry.  33-356  020402 aa 776000 3000 03 33-357 canx0 =o776000,du Did RPT tally run out?  020403 0a 020376 6010 00 33-358 tnz oqsrpt If not, continue the search.  33-359  020404 aa 000100 2350 03 33-360 noovh: lda chans,du Bump IOM #.  020405 0a 020542 0750 00 33-361 ada iomno ..  020406 0a 020542 7550 00 33-362 sta iomno ..  020407 aa 000200 1150 03 33-363 cmpa ioms*chans,du All finished?  020410 0a 020365 6040 00 33-364 tmi overhead_loop If not, loop.  020411 aa 000002 7100 12 33-365 tra 2,2 Return to caller.  33-366 " This routine checks for a special interrupt on a particular channel.  33-367 " Calling sequence: tsx2 check_special_status  33-368 " arg channel_info_address 33-369 " tra no_special  33-370 " - - - " Normal return.  33-371  020412 33-372 check_special_status:  020412 0a 020420 7420 00 33-373 stx2 cksp_x2 Save X2. 33-374  020413 aa 000034 6250 00 33-375 eax5 7*4 Pick up IMW's for level 7.  020414 0a 020536 6260 00 33-376 eax6 SIMW And place in SIMW.  020415 0a 020361 7020 00 33-377 tsx2 overhead_queue_search 020416 aa 000006 000000 33-378 zero special_channel  020417 0a 020262 0000 00 33-379 arg process_special_status 33-380  020420 0a 020420 6220 00 33-381 cksp_x2: eax2 * Restore X2.  33-382  020421 33-383 test_special:  020421 aa 000000 2350 32 33-384 lda 0,2* Channel # in AU. 020422 0a 020351 7070 00 33-385 tsx7 test_imw Test IMW bit for this channel.  020423 0a 020536 000001 33-386 descb SIMW,1  020424 0a 020426 7100 00 33-387 tra *+2 If off, return no special.  020425 aa 000002 7100 12 33-388 tra 2,2 Normal return.  020426 0a 020316 7070 00 33-389 tsx7 iowait Wait for interrupt.  020427 0a 020412 7100 00 33-390 tra check_special_status 33-391  33-392 " This routine establishes a handler for special interrupts for a particular channel.  33-393 " Calling sequence: tsx2 get_special_interrupt  33-394 " zero channel_info_address,handler_address  33-395  020430 33-396 get_special_interrupt:  020430 0a 020561 6270 00 33-397 eax7 special_handler Set special handler address.  020431 0a 020433 7100 00 33-398 tra get_interrupt_common Join common code.  33-399  33-400  33-401 " This routine sets up a handler for all status from a particular channel.  33-402 " Calling sequence: tsx2 get_status_interrupt  33-403 " zero channel_info,handler_address  33-404  020432 33-405 get_status_interrupt:  020432 0a 020560 6270 00 33-406 eax7 status_handler Set status handler address.  33-407  020433 33-408 get_interrupt_common:  020433 aa 000000 2350 12 33-409 lda 0,2 Channel info addr, handler addr in A. 020434 aa 000000 2360 01 33-410 ldq 0,au Channel # in QU. 020435 aa 000022 7370 00 33-411 lls 18 Handler address, channel # in A.  020436 aa 000022 7750 00 33-412 alr 18 Swap them. 020437 aa 000000 7550 17 33-413 sta 0,7 Set handler entry.  020440 aa 000001 7100 12 33-414 tra 1,2 33-415 " This routine makes the PCW and DCW list for a single record or non-data operation.  33-416 " Control does not return to the user until the operation has terminated.  33-417 " Calling sequence: tsx2 xio_wait  33-418 " vfd 18/buffer,12/tally,6/character_position  33-419 " zero channel_info_address,device_opcode  33-420 " tra error " Error return.  33-421 " - - - " Normal return. 33-422 "  33-423 " Modified for Compatibility between Common Peripheral Channel  33-424 " Peripheral Subsystem Interface Adapter - 10/29/72 by N. I. Morris 33-425  020441 0a 020511 7420 00 33-426 xio_wait: stx2 io_x2 save X2  020442 aa 000000 2350 12 33-427 lda 0,2 pick up buffer address  020443 0a 020465 6000 00 33-428 tze non_data_transfer if zero, non-data transfer  33-429  020444 aa 000000 6360 05 33-430 eaq 0,al tally in QU. 020445 aa 700000 3150 03 33-431 cana =o700000,du look at pointer reg. bits 020446 0a 020450 6010 00 33-432 tnz *+2 if non-zero, already set  020447 aa 300000 2750 03 33-433 ora pgm*32768,du otherwise, set to this program  020450 0a 020451 7510 70 33-434 stca *+1,70 store into absa instruction  020451 aa 0 00000 2121 00 33-435 absa 0|0 ****** THIS INSTRUCTION GETS MODIFIED ****** 020452 aa 000006 7750 00 33-436 alr 6 shift address  020453 0a 020521 7510 70 33-437 stca DCW,70 place address in DCW  020454 aa 000022 7350 00 33-438 als 18 shift the address extension  020455 0a 020520 7510 10 33-439 stca IDCW,10 and place in IDCW  33-440  020456 aa 000014 7760 00 33-441 qlr 12 shift the tally to correct place  020457 0a 020521 7520 03 33-442 stcq DCW,03 and store the tally in DCW  33-443  020460 aa 000006 7760 00 33-444 qlr 6 get the character position  020461 aa 000017 7360 00 33-445 qls 15 shift the character position  020462 0a 020521 7520 04 33-446 stcq DCW,04 and store char. pos. in DCW  33-447  020463 aa 000000 2350 07 33-448 lda 0,dl pick up low-order IDCW bits  020464 0a 020470 7100 00 33-449 tra set_idcw  33-450  020465 33-451 non_data_transfer:  020465 0a 020522 2350 00 33-452 lda stop_dcw pick up DCW to stop channel  020466 0a 020521 7550 00 33-453 sta DCW in case things get out of hand  020467 aa 000201 2350 07 33-454 lda =o0201,dl pick up low-order IDCW bits for NDT 020470 33-455 set_idcw:  020470 0a 020520 7510 03 33-456 stca IDCW,03 set IDCW control bits  33-457  020471 aa 000001 2350 12 33-458 lda 1,2 pick up second argument  020472 0a 020506 7510 70 33-459 stca channel_ptr,70 save it  020473 aa 000000 2360 01 33-460 ldq 0,au pick up channel info.  020474 aa 000011 7360 00 33-461 qls 9 shift channel # to PCW position 020475 0a 020517 5520 40 33-462 stbq PCW+1,40 and place channel # in PCW  020476 aa 000003 7360 00 33-463 qls 3 now shift the device code  020477 0a 020516 7520 20 33-464 stcq PCW,20 and store in PCW  020500 0a 020520 7520 20 33-465 stcq IDCW,20 place in IDCW also, for PSIA operation  020501 aa 000036 7350 00 33-466 als 30 shift the op-code  020502 0a 020520 7510 40 33-467 stca IDCW,40 and place op-code in IDCW  33-468  020503 0a 020151 7020 00 33-469 tsx2 connect_iom start up the channel  020504 00 020516 020520 33-470 zero PCW,IDCW  33-471  020505 0a 020206 7020 00 33-472 tsx2 check_status wait for status to come back 020506 33-473 channel_ptr:  020506 aa 000000 000000 33-474 zero  020507 aa 000000 000000 33-475 zero  020510 0a 020513 7100 00 33-476 tra abnormal_return  33-477  020511 0a 020511 6220 00 33-478 io_x2: eax2 *  020512 aa 000003 7100 12 33-479 tra 3,2  33-480  020513 33-481 abnormal_return:  020513 0a 020511 2220 00 33-482 ldx2 io_x2 020514 aa 000002 7100 12 33-483 tra 2,2 33-484  000002 33-485 equ ioms,2 000100 33-486 equ chans,64  33-487  33-488 " Addresses relative to mailbox.  33-489  000001 33-490 bool iom_cow,1 Address of COW.  33-491  33-492 " Addresses relative to IMW area.  33-493  000100 33-494 bool system_fault_queue,100 Address of system fault status queue.  000110 33-495 bool special_status_queue,110 Address of special status queue. 33-496  33-497 " Absolute addresses.  33-498  000200 33-499 bool iom_status,200 Address of place to store status. 33-500  33-501 " IOM Mailbox Equivalences. 33-502  000000 33-503 equ iombx.lpw,0  000001 33-504 equ iombx.lpwx,1  000002 33-505 equ iombx.scw,2  000003 33-506 equ iombx.dcw,3  33-507  33-508 " Overhead Channel Equivalences.  33-509  000001 33-510 equ fault_channel,1  000002 33-511 equ connect_channel,2  000006 33-512 equ special_channel,6  33-513  000004 33-514 equ overhead_qlth,4  33-515  33-516  020515 aa 000000 0110 03 33-517 even  020516 aa 400000 720201 33-518 PCW: vfd o6/40,6/0,6/0,3/7,3/2,6/2,6/1,9/0,27/0 020517 aa 000000 000000 33-519  020520 aa 000000 700000 33-520 IDCW: vfd 6/0,6/0,6/0,3/7,3/0,6/0,6/0  020521 aa 000000 000000 33-521 DCW: oct 0  020522 aa 000000 700201 33-522 stop_dcw: vfd 18/0,3/7,3/0,6/2,6/1 Terminate IDCW. 020523 0a 020522 040000 33-523 stop_lpw: vfd 18/stop_dcw,o6/04,12/0 LPW with tally update suppressed. 33-524  020524 33-525 LPW: bss ,1 020525 33-526 LPWX: bss ,1  33-527  020526 33-528 FIMW: bss ,4 System fault IMW. 020532 33-529 TIMW: bss ,4 Terminate IMW.  020536 33-530 SIMW: bss ,4 Special interrupt IMW.  33-531  020542 33-532 iomno: bss ,1 IOM #  33-533  020543 33-534 abs_base_addr:  020543 aa 000000 000000 33-535 oct 0  020544 33-536 bootload_cpu_port:  020544 aa 000000 000000 33-537 oct 0  020545 33-538 status_lock:  020545 aa 000000 000000 33-539 oct 0  020546 33-540 status_mask:  020546 aa 370000 770000 33-541 oct 370000770000 Ignore normally on bits.  020547 33-542 dcw_reloc_flag: 020547 aa 000000 000000 33-543 oct 0 non-zero if overhead dcw's relocated.  020550 33-544 fault_lpw:  020550 0a 020552 040000 33-545 vfd 18/fault_dcw,o6/04,12/0 NC LPW - no tally update. 020551 0a 020553 040000 33-546 vfd 18/fault_dcw+1,o6/04,12/0 NC LPW - no tally update.  33-547  020552 33-548 fault_dcw:  020552 aa 000100 010004 33-549 vfd 18/system_fault_queue,3/0,3/1,12/overhead_qlth IOTP DCW.  020553 aa 000104 010004 33-550 vfd 18/system_fault_queue+overhead_qlth,3/0,3/1,12/overhead_qlth IOTP DCW.  33-551  020554 33-552 special_lpw:  020554 0a 020556 040000 33-553 vfd 18/special_dcw,o6/4,12/0  020555 0a 020557 040000 33-554 vfd 18/special_dcw+1,o6/4,12/0 33-555  020556 33-556 special_dcw:  020556 aa 000110 010002 33-557 vfd 18/special_status_queue,3/0,3/1,12/overhead_qlth-2 020557 aa 000114 010002 33-558 vfd 18/special_status_queue+overhead_qlth,3/0,3/1,12/overhead_qlth-2  33-559  020560 33-560 status_handler: 020560 33-561 bss ,1 33-562  020561 33-563 special_handler:  020561 33-564 bss ,1 33-565  020562 33-566 checkstat_nostat_sw:  020562 33-567 bss ,1 33-568  33-569 " End of include file ...... bos_iom_manager.incl.alm  33-570  194  195 include intflt 34-1 "  34-2 " Begin include file ...... intflt.incl.alm 34-3 " This routine initializes the fault and interrupt vector and sets up the execute interrupt 34-4 " Modified 3/15/76 by Noel I. Morris  34-5 " Modified by Sherman D. Sprague 02/11/81 for DPS8 support. 34-6 " Modified by Sherman D. Sprague 10/5/81 for change in AM store procedure.  34-7 " Modified by J. Bongiovanni 1/7/82 to spl on faults and interrupts 34-8  000100 34-9 bool fvloc,100 absolute loc'n of fault vector 000000 34-10 bool ivloc,0 absolute loc'n of interrupt vector  34-11  000006 34-12 equ drl,6 derail fault #  000004 34-13 equ timer,4 timer runout fault #  000007 34-14 equ lockup,7 lockup fault #  000017 34-15 equ exec,15 execute fault #  34-16  020563 aa 000000 0110 03 34-17 even  020564 aa 000000 000061 34-18 hist_on: oct 61 34-19  34-20  020565 34-21 inhibit on 34-22  020565 34-23 initint:  020565 aa 000000 6272 32 34-24 eax7 0,2* address for xec fault  020566 0a 020637 7472 00 34-25 stx7 exloc+1  34-26  020567 aa 000000 1006 00 34-27 mlr (),(),fill(0) set up to clear hist store area  020570 0a 020570 000000 34-28 desc9a *,0 020571 0a 021500 004000 34-29 desc9a intflt_ouhist,128*4*4  34-30  020572 aa 000000 1006 00 34-31 mlr (),(),fill(0) set up to clear am stor area 020573 0a 020573 000000 34-32 desc9a *,0 020574 0a 021060 002400 34-33 desc9a intflt_amptwptr,320*4  34-34  34-35 " Relocate to absolute all instructions with bit 29 ON. 34-36  020575 aa 000112 6272 00 34-37 eax7 labsarea-1 do this many words 020576 aa 777677 2362 07 34-38 ldq =o777677,dl mask in Q for clearing addr and bit 29 020577 0a 020642 2352 17 34-39 relop: lda absarea,7 instruction in A  020600 aa 000100 3152 07 34-40 cana =o100,dl bit 29 ON?  020601 0a 020607 6002 00 34-41 tze notrel if not, don't relocate 020602 0a 020603 5512 60 34-42 stba *+1,60 set address and segment tag  020603 aa 0 00000 2123 00 34-43 absa 0|0 ****** THIS INSTRUCTION GETS MODIFIED ****** 020604 aa 000006 7352 00 34-44 als 6 absolute addr in AU 020605 0a 020642 3562 17 34-45 ansq absarea,7 clear old addr and segment tag 020606 0a 020642 2552 17 34-46 orsa absarea,7 insert absolute address  020607 aa 777777 6272 17 34-47 notrel: eax7 -1,7  020610 0a 020577 6052 00 34-48 tpl relop  34-49  020611 aa 000076 6272 00 34-50 eax7 64-2 set all fault pairs 020612 0a 020724 2372 00 34-51 ldaq unexpair to unexpected  020613 aa 000016 1072 03 34-52 fltloop: cmpx7 lockup*2,du except lockup  020614 0a 020620 6002 00 34-53 tze skipflt  020615 aa 000010 1072 03 34-54 cmpx7 timer*2,du and timer runout  020616 0a 020620 6002 00 34-55 tze skipflt  020617 aa 7 00100 7573 17 34-56 staq mem|fvloc,7  020620 aa 777776 6272 17 34-57 skipflt: eax7 -2,7  020621 0a 020613 6052 00 34-58 tpl fltloop  34-59  020622 0a 020720 2372 00 34-60 ldaq lockfltpair now set lockup fault  020623 aa 7 00116 7573 00 34-61 staq mem|fvloc+lockup*2 ignore them  020624 aa 7 00110 7573 00 34-62 staq mem|fvloc+timer*2 also ignore timer runouts  34-63  020625 0a 020722 2372 00 34-64 ldaq exintpair take exec faults  020626 aa 7 00136 7573 00 34-65 staq mem|fvloc+exec*2 store into vector  34-66  020627 aa 000076 6272 00 34-67 eax7 64-2 fill intrpt vectors 020630 0a 020726 2372 00 34-68 ldaq intpair get pair 020631 aa 7 00000 7573 17 34-69 initintl: staq mem|ivloc,7 store in first block 020632 aa 777776 6272 17 34-70 eax7 -2,7  020633 0a 020631 6052 00 34-71 tpl initintl  34-72  020634 aa 3 20564 6743 04 34-73 lcpr pgm|hist_on,04 turn on hist regs  020635 aa 000001 7102 12 34-74 tra 1,2 return  34-75  34-76 even  020636 aa 000003 000043 34-77 exloc: its pgm,0 go to appending mode  020637 aa 000000 000000 34-78  020640 aa 000003 000043 34-79 gotflt: its pgm,0 go to appending mode 020641 aa 000000 000000 020641 34-80 equ wantflt,gotflt+1 set if user wants control on fault  34-81  020642 34-82 absarea: "beginning here all addrs are changed to abs  34-83  020642 34-84 interentry: 020642 aa 3 22500 7533 00 34-85 sreg pgm|intflt_regs here after execute fault  020643 aa 3 20564 6743 04 34-86 lcpr pgm|hist_on,04 turn on history registers  020644 aa 3 22510 4477 00 34-87 spl pgm|intflt_ptrlen and revive EIS box  020645 aa 3 20636 7103 20 34-88 tra pgm|exloc,*  34-89  34-90  020646 aa 3 22510 4477 00 34-91 unexpflt: spl pgm|intflt_ptrlen clear EIS box in case of mif  020647 aa 3 20641 2343 00 34-92 szn pgm|wantflt if anybody wants unexpected fault  020650 aa 3 20653 6003 00 34-93 tze pgm|*+3 go to it  020651 aa 3 20564 6743 04 34-94 lcpr pgm|hist_on,04 but first, turn on history registers  020652 aa 3 20640 7103 20 34-95 tra pgm|gotflt,* then go to appending mode 34-96  020653 aa 3 22500 7533 00 34-97 sreg pgm|intflt_regs  020654 aa 3 22521 7023 00 34-98 tsx2 pgm|check_cpu_type  020655 aa 000000 6242 05 34-99 eax4 0,al save cpu type  020656 aa 000004 6272 00 34-100 int_sam1: eax7 4  020657 aa 000003 6262 00 34-101 eax6 3 set up for a dps8  020660 aa 000001 1042 03 34-102 cmpx4 1,du were we right? 020661 aa 3 20663 6003 00 34-103 tze pgm|int_sam2 yes ,now thats a first!  020662 aa 000000 6262 00 34-104 eax6 0 so we were wrong its a l68 020663 aa 3 20744 2353 17 34-105 int_sam2: lda pgm|int_sam5-1,7 load instruction word to be executed 020664 aa 000000 6252 16 34-106 eax5 0,6 set up counter  020665 aa 000000 6362 15 34-107 int_sam3: eaq 0,5 but counter in q 020666 aa 000004 7362 00 34-108 qls 4 multiply times 4  020667 aa 000002 1072 03 34-109 cmpx7 2,du is this the sdw regs ? 020670 aa 3 20672 6013 00 34-110 tnz pgm|int_sam4  020671 aa 000001 7362 00 34-111 qls 1 it was so make it times 32  020672 aa 3 20755 7553 00 34-112 int_sam4: sta pgm|int_inst store instruction word to be XECed  020673 aa 3 20755 0563 00 34-113 asq pgm|int_inst add in quadrant offset  020674 aa 3 20755 7163 00 34-114 xec pgm|int_inst lets execute it  020675 aa 777777 6252 15 34-115 eax5 -1,5 decrement counter  020676 aa 3 20665 6053 00 34-116 tpl pgm|int_sam3 lets do it again  020677 aa 777777 6272 17 34-117 eax7 -1,7 get another instruction 020700 aa 3 20663 6013 00 34-118 tnz pgm|int_sam2 do it again  34-119  34-120 " save the history registers 020701 aa 000002 2362 03 34-121 ldq 2,du address field step  020702 aa 000003 6262 00 34-122 eax6 nint_scpr-1 # of instructions 34-123  020703 aa 000020 6272 00 34-124 intscpr2: eax7 16 16 instructions to store a history register  020704 aa 000001 1042 03 34-125 cmpx4 1,du check cpu type 020705 aa 3 20707 6013 00 34-126 tnz pgm|intl68 skip next instruction if l68  020706 aa 000100 6272 00 34-127 eax7 64 set up for dps8  020707 aa 3 20751 2353 16 34-128 intl68: lda pgm|int_scpr,6 pick up inst 020710 aa 3 20755 7553 00 34-129 sta pgm|int_inst  020711 aa 3 20755 7163 00 34-130 intscpr1: xec pgm|int_inst execute it  020712 aa 3 20755 0563 00 34-131 asq pgm|int_inst incrment address field  020713 aa 777777 6272 17 34-132 eax7 -1,7 decrement loop  020714 aa 3 20711 6013 00 34-133 tnz pgm|intscpr1 not done  020715 aa 777777 6262 16 34-134 eax6 -1,6 next ?  020716 aa 3 20703 6053 00 34-135 tpl pgm|intscpr2 get next inst 020717 aa 3 20717 7103 00 34-136 tra pgm|* now wait  34-137  34-138 even  020720 34-139 lockfltpair:  020720 aa 3 21470 6573 00 34-140 scu pgm|intflt_scuignore ignore lockup faults  020721 aa 3 20730 7103 00 34-141 tra pgm|rstart_hist  34-142  020722 34-143 exintpair:  020722 aa 3 21470 6573 00 34-144 scu pgm|intflt_scuignore  020723 aa 3 20642 7103 00 34-145 tra pgm|interentry 34-146  020724 aa 3 12120 6573 00 34-147 unexpair: scu pgm|scuinfo unexpected fault  020725 aa 3 20646 7103 00 34-148 tra pgm|unexpflt  34-149  020726 aa 3 21470 6573 00 34-150 intpair: scu pgm|intflt_scuignore int pair for int vector  020727 aa 3 20732 7103 00 34-151 tra pgm|intset 34-152  020730 34-153 rstart_hist:  34-154 "here to restart hist regs after ignored fault  020730 aa 3 20564 6743 04 34-155 lcpr pgm|hist_on,04  020731 aa 3 21470 6133 00 34-156 rcu pgm|intflt_scuignore  34-157  020732 aa 3 22500 7533 00 34-158 intset: sreg pgm|intflt_regs here from intrpt  020733 aa 3 22510 4477 00 34-159 spl pgm|intflt_ptrlen clear EIS box  020734 aa 3 21471 2353 00 34-160 lda pgm|intflt_scuignore+scu.fltint_num  020735 aa 000076 3752 07 34-161 ana scu.fltint_num_mask,dl 020736 aa 000021 7352 00 34-162 als 18-scu.fltint_num_shift right justify in upper  020737 aa 3 20756 7553 00 34-163 sta pgm|intno  020740 aa 400000 2362 03 34-164 ldq =o400000,du  020741 aa 000000 7722 01 34-165 qrl 0,au position bit 020742 aa 3 20757 2563 00 34-166 orsq pgm|intrpts1  020743 aa 3 22500 0733 00 34-167 lreg pgm|intflt_regs restore  020744 aa 3 21470 6133 00 34-168 rcu pgm|intflt_scuignore and return  34-169  020745 aa 3 21360 5573 00 34-170 int_sam5: ssdp pgm|intflt_amsdwptr  020746 aa 3 21160 2547 00 34-171 ssdr pgm|intflt_amsdwregs  020747 aa 3 21060 5577 00 34-172 sptp pgm|intflt_amptwptr  020750 aa 3 20760 1547 00 34-173 sptr pgm|intflt_amptwregs  020751 34-174 int_scpr:  020751 aa 3 21500 4523 40 34-175 scpr pgm|intflt_ouhist,40  020752 aa 3 21700 4523 20 34-176 scpr pgm|intflt_cuhist,20  020753 aa 3 22100 4523 10 34-177 scpr pgm|intflt_eishist,10 020754 aa 3 22300 4523 00 34-178 scpr pgm|intflt_aphist,00  34-179  000004 34-180 equ nint_scpr,*-int_scpr  34-181  34-182  000113 34-183 equ labsarea,*-absarea end of abs area 34-184  34-185  020755 34-186 inhibit off  34-187  020755 34-188 int_inst:  020755 34-189 bss ,1 34-190  000001 34-191 equ scu.fltint_num,1  000076 34-192 bool scu.fltint_num_mask,76  000001 34-193 equ scu.fltint_num_shift,1 34-194  020756 34-195 intno:  020756 aa 000000 000000 34-196 oct 0  020757 34-197 intrpts1:  020757 aa 000000 000000 34-198 oct 0  34-199 mod 16 020760 34-200 intflt_amptwregs:  020760 34-201 bss ,64  34-202 mod 16 021060 34-203 intflt_amptwptr:  021060 34-204 bss ,64  34-205 mod 16 021160 34-206 intflt_amsdwregs:  021160 34-207 bss ,128  34-208 mod 16 021360 34-209 intflt_amsdwptr:  021360 34-210 bss ,64  34-211  34-212 eight  021460 34-213 intflt_scu: bss ,8  021470 34-214 intflt_scuignore:  021470 34-215 bss ,8 34-216  34-217 eight  021500 34-218 intflt_ouhist:  021500 34-219 bss ,128  021700 34-220 intflt_cuhist:  021700 34-221 bss ,128  022100 34-222 intflt_eishist: 022100 34-223 bss ,128  022300 34-224 intflt_aphist:  022300 34-225 bss ,128  34-226  34-227 eight  022500 34-228 intflt_regs:  022500 34-229 bss ,8 022510 34-230 intflt_ptrlen:  022510 34-231 bss ,8 022520 34-232 intflt_mode:  022520 34-233 bss ,1 34-234  34-235  34-236 " End of include file ...... intflt.incl.alm  34-237  196  197 include check_cpu_type 35-1 " Begin include file .... check_cpu_type.incl.alm  35-2 " Created 09/29/80 by Sherman D. Sprague  35-3 "  35-4 " To find the type cpu in use at this time  35-5 " tsx2 check_cpu_type  35-6 " sta 0/L68 - 1/DPS8  35-7 " stq rsw2 raw info 35-8 "  022521 35-9 inhibit on <+><+><+><+><+><+><+><+><+><+> 022521 35-10 check_cpu_type: 022521 aa 000002 2312 00 35-11 rsw 2 check cpu type  022522 aa 000005 7552 04 35-12 sta cctrsw2-*,ic store raw data  022523 aa 000036 7712 00 35-13 arl 30 position type code 022524 aa 000003 3752 07 35-14 ana 3,dl wipe out unwanted bits  022525 aa 000002 2362 04 35-15 ldq cctrsw2-*,ic load raw rsw2 data for return 022526 aa 000000 7102 12 35-16 tra 0,2 and return  022527 aa 000000 000000 35-17 cctrsw2: oct 0  022530 35-18 inhibit off <-><-><-><-><-><-><-><-><-><->  35-19 " End of include file .... check_cpu_type.incl.alm  35-20  198  199 include getportinfo  36-1 "  36-2 " Begin include file .... getportinfo.incl.alm  36-3 "  36-4 " This routine initializes the coreblocks array in bos_common.  36-5 " This array contains information about the memory attached to  36-6 " each of the eight system ports.  36-7 "  36-8 " Each coreblock array word contains the following data:  36-9 " Bits 0 - 17 Number of the first 64-word block on this port. 36-10 " 18 - 35 Number of 64-word blocks on this port. 36-11 "  36-12 " NOTE: If there is no memory on this port then the corresponding word in  36-13 " the coreblocks array will contain a ( -1 ). 36-14 " Modified by RE Mullen to rscr for benefit of setup.  36-15 " Modified 9/12/74 by Noel I. Morris to correct rsw instruction.  36-16 " Modified 3/11/76 by Noel I. Morris to run with 4MW SCU.  36-17 " Modified 5/12/77 by Noel I. Morris  36-18 " Modified 9/18/80 by Sherman D. Sprague to run with DPSE cpu.  36-19 " Modified 3/29/82 by Sherman D. Sprague to teach the L68 about 4meg ports and  36-20 " to make him forget 96k... Remember, use a Group 10 patch plug for 4meg.  36-21 " Modified 9/28/82 by J. Bongiovanni to save low order port in toehold  36-22  022530 36-23 getportinfo:  022530 0a 022624 7420 00 36-24 stx2 gpir store x2 for return  022531 aa 777100 1004 00 36-25 mlr (),(pr),fill(777) clear coreblock array to zero  022532 aa 000000 000000 36-26 desc9a 0,0 022533 aa 601610 000040 36-27 desc9a com|coreblocks,8*4  36-28  022534 0a 022521 7020 00 36-29 tsx2 check_cpu_type get cpu type  022535 0a 022630 7560 00 36-30 stq sw_store_2 save for later use  022536 0a 022645 6260 00 36-31 eax6 size_code_table_dps8 set up DPS8 store size multiplier  022537 aa 000000 6240 05 36-32 eax4 0,al save cpu type bits  022540 aa 000001 1040 03 36-33 cmpx4 1,du check for DPS8 022541 0a 022547 6000 00 36-34 tze read_sw_1 skip rsw 4 DPS8 can't do it  36-35  022542 0a 022635 6260 00 36-36 eax6 size_code_table set up L68 store size mltiplier  022543 aa 000004 2310 00 36-37 rsw 4 get half/full info  022544 0a 022632 7550 00 36-38 sta sw_store_4 might want the look at later ?? 022545 aa 000017 7750 00 36-39 alr 13+2 position for examining half/full bits  022546 0a 022633 7550 00 36-40 sta switches_4 and save for later  36-41  022547 36-42 read_sw_1: 022547 0a 022634 7460 00 36-43 stx6 get_table store size table to use  022550 aa 000000 6270 00 36-44 eax7 0 X7 used as port number index.  022551 aa 000001 2310 00 36-45 rsw 1 Read config switches of 1st 4 ports. (A,B,C,D)  022552 0a 022627 7550 00 36-46 sta sw_store_1 might want to look at later ??  022553 36-47 set_word:  022553 aa 000011 7770 00 36-48 llr 9 Shift switches for this port into low Q.  022554 0a 022626 7550 00 36-49 sta save_switches Save switches for use later. 36-50  022555 aa 000040 3160 07 36-51 canq =o040,dl Test Port Enable switch.  022556 0a 022603 6000 00 36-52 tze get_next_port Bit off => port not enabled. 36-53  36-54 " There is memory on this port. Test if this port has the low order memory.  36-55  022557 aa 000700 3160 07 36-56 canq =o700,dl Test Address Assignment switches.  022560 0a 022564 6010 00 36-57 tnz not_low_port Not = 0 => not low order memory. 36-58  36-59 " This port is used for the low order memory. It will be called the  36-60 " ( low_order_port ). Note, it isn't necessarily port 0.  36-61  022561 aa 000000 6350 17 36-62 eaa 0,7 Port number in AU.  022562 aa 000017 7350 00 36-63 als 18-3 Port address in AU.  022563 aa 6 01530 7551 00 36-64 sta com|low_order_port Use this port as the low order port.  36-65  022564 36-66 not_low_port:  022564 aa 000000 6250 06 36-67 eax5 0,ql Get switches for this port in X5.  022565 aa 000007 3650 03 36-68 anx5 =o007,du We want memory size code.  022566 aa 000700 3760 07 36-69 anq =o700,dl Just leave port assignment bits in Q.  022567 aa 000014 7360 00 36-70 qls 18-6 Right justify port assignment bits in QU.  022570 aa 000001 2760 07 36-71 orq =1,dl Put a 1 in QL. Used to compute memory size. 022571 0a 022634 4020 75 36-72 mpy get_table,*5 Compute both base address and memory size.  36-73  022572 aa 000001 1040 03 36-74 cmpx4 1,du Check for DPS8 022573 0a 022602 6000 00 36-75 tze full_mem must be DPS8 022574 0a 022633 2350 00 36-76 lda switches_4 half/full info in A 022575 aa 000001 3150 07 36-77 cana 1,dl are we using half of mem?  022576 0a 022602 6000 00 36-78 tze full_mem if not, skip following code  022577 aa 000022 7370 00 36-79 lls 18 place base addr in AL  022600 aa 000001 7720 00 36-80 qrl 1 divide size by 2  022601 aa 000022 7730 00 36-81 lrl 18 and restore base addr to Q 022602 36-82 full_mem:  022602 aa 6 01610 7561 17 36-83 stq com|coreblocks,7 QU = base address - QL = memory size.  36-84  022603 36-85 get_next_port:  022603 aa 000001 6270 17 36-86 eax7 1,7 make index 7 ref next port  022604 aa 000001 1040 03 36-87 cmpx4 1,du Is this a DPS8 022605 0a 022612 6010 00 36-88 tnz L68  022606 0a 022626 2350 00 36-89 lda save_switches restore switches for next port  022607 aa 000004 1070 03 36-90 cmpx7 4,du Is this the last DPS8  022610 0a 022553 6040 00 36-91 tmi set_word  022611 0a 022624 7100 00 36-92 tra gpi_return  36-93  022612 0a 022633 2350 00 36-94 L68: lda switches_4 rotate half/full info  022613 aa 000002 7750 00 36-95 alr 2 for testing next port  022614 0a 022633 7550 00 36-96 sta switches_4 ..  36-97  022615 0a 022626 2350 00 36-98 lda save_switches Restore switches for next ports. 022616 aa 000004 1070 03 36-99 cmpx7 4,du Must we read switches again?  022617 0a 022622 6010 00 36-100 tnz more_ports If so,  022620 aa 000003 2310 00 36-101 rsw 3 Read switches from ports E,F,G,H.  022621 0a 022631 7550 00 36-102 sta sw_store_3 save rsw3 data untouched  022622 36-103 more_ports:  022622 aa 000010 1070 03 36-104 cmpx7 8,du Have we processed all 8 ports? 022623 0a 022553 6010 00 36-105 tnz set_word If not, loop.  36-106  022624 36-107 gpi_return: 022624 0a 022624 6220 00 36-108 gpir: eax2 * set up for return 022625 aa 000000 7100 12 36-109 tra 0,2 return  36-110  36-111  36-112 " A temporary save area.  36-113  022626 36-114 save_switches:  022626 aa 000000 000000 36-115 oct 0 Save A after read switches and shift. 022627 36-116 sw_store_1:  022627 aa 000000 000000 36-117 oct 0 Here to store read switch info untouched  022630 36-118 sw_store_2:  022630 aa 000000 000000 36-119 oct 0 Here to store read switch info untouched  022631 36-120 sw_store_3:  022631 aa 000000 000000 36-121 oct 0 Here to store read switch info untouched  022632 36-122 sw_store_4:  022632 aa 000000 000000 36-123 oct 0 Here to store read switch info untouched  022633 36-124 switches_4: 022633 aa 000000 000000 36-125 oct 0 Save half/full switches here  022634 36-126 get_table:  022634 aa 000000 000000 36-127 zero 0,0  36-128 " The following table is used to map memory size codes into memory size  36-129 " for L68 and DPS cpu's 36-130  022635 36-131 size_code_table:  022635 aa 000000 001000 36-132 vfd 36/(32*1024/64)  022636 aa 000000 002000 36-133 vfd 36/(64*1024/64)  022637 aa 000000 200000 36-134 vfd 36/(4096*1024/64)  022640 aa 000000 004000 36-135 vfd 36/(128*1024/64)  022641 aa 000000 020000 36-136 vfd 36/(512*1024/64)  022642 aa 000000 040000 36-137 vfd 36/(1024*1024/64)  022643 aa 000000 100000 36-138 vfd 36/(2048*1024/64)  022644 aa 000000 010000 36-139 vfd 36/(256*1024/64)  36-140  36-141 " The following table is used to map memory size codes into memory size  36-142 " for DPSE cpu's  36-143  022645 36-144 size_code_table_dps8:  36-145  022645 aa 000000 001000 36-146 vfd 36/(32*1024/64)  022646 aa 000000 002000 36-147 vfd 36/(64*1024/64)  022647 aa 000000 004000 36-148 vfd 36/(128*1024/64)  022650 aa 000000 010000 36-149 vfd 36/(256*1024/64)  022651 aa 000000 020000 36-150 vfd 36/(512*1024/64)  022652 aa 000000 040000 36-151 vfd 36/(1024*1024/64)  022653 aa 000000 100000 36-152 vfd 36/(2048*1024/64)  022654 aa 000000 200000 36-153 vfd 36/(4096*1024/64)  36-154  36-155  36-156  36-157 " End of include file .... getportinfo.incl.alm 36-158  200  201 include bos_common 37-1 "  37-2 " Begin include file ...... bos_common.incl.alm 37-3 " Modified on 8/31/76 by N. I. Morris  37-4 " Modified on 9/01/80 by Sherman D. Sprague for DPS8 operation  37-5 " Modified on 5/26/82 by Sherman D. Sprague to lengthen config size 37-6 " Modified on 3/01/83 by Sherman D. Sprague to lengthen dirlen  37-7 " MACHINE CONDITIONS AREA  37-8 " Its length is "storlen". 37-9  000000 37-10 equ amptwregs,0 Ass. Mem PTW registers  000100 37-11 equ amptwptr,64 Ass. Mem PTW pointers 000200 37-12 equ amsdwregs,128 Ass. Mem SDW registers  000400 37-13 equ amsdwptr,256 Ass. Mem SDW pointers  000500 37-14 equ ouhist,320 operations hist regs  000700 37-15 equ cuhist,448 control unit hist regs  001100 37-16 equ eishist,576 eis hist regs  001300 37-17 equ aphist,704 appending unit hist regs  001500 37-18 equ prs,832 pointer regs  001520 37-19 equ regs,848 sreg 001530 37-20 equ low_order_port,856 port to read clock from 001532 37-21 equ mctime,858 bootload memory clock  001540 37-22 equ scu,864  001550 37-23 equ mcm,872 memory masks 8 ports 001570 37-24 equ dbr,888  001572 37-25 equ intrpts,890 waiting interrupts 001573 37-26 equ bar,891 bar  001574 37-27 equ modereg,892 processor & cache mode registers  001576 37-28 equ faultreg,894 processor fault register  001600 37-29 equ ptrlen,896 pointer-lengths EIS 0 mod 8 001610 37-30 equ coreblocks,904 array of port information  37-31 " Bits 0-17 => num 1st 64-word block  37-32 " Bits 18-35 => num of 64-word blocks  37-33 " (-1) => no mem on this port  001620 37-34 equ lowport_cfg,912 Saved CFG from bootload SCU  37-35  002000 37-36 equ storlen,1024  37-37  37-38  37-39  37-40 " BOS COMMAND DIRECTORY 37-41 " Its length is "dirlen".  37-42  002000 37-43 equ dir,1024 ( 0-23) => sector # of first sector on BOS disk  37-44 " (24-35) => # of sectors in BOS common  002001 37-45 equ used,dir+1 ( 0-23) => # of next available sector on BOS disk  002002 37-46 equ useable,dir+2 ( 0-23) => first unavailable sector on BOS disk  002003 37-47 equ corearea,dir+3 ( 0-23) => starting sector of Multics core image  37-48 " (24-35) => # of sectors in Multics core image  002004 37-49 equ setuparea,dir+4 Sector and length of setup 002005 37-50 equ utilarea,dir+5 where utility package is kept  002010 37-51 equ iom_mxbase,dir+8 IOM IMW area address  002011 37-52 equ iom_mbbase,dir+9 IOM mailbox base  002012 37-53 equ bos_dvt,dir+10 BOS disk loc: (o3/iom,o6/chn,o9/drive,o18/devtype)  002013 37-54 equ unitgroup,dir+11 disk unitgroup (device no. or area no.)  002014 37-55 equ diskchanno,dir+12 channel to be used for disk  002015 37-56 equ tapechanno,dir+13 channel # for tapes  002016 37-57 equ rdrchanno,dir+14 channel number for card reader  002017 37-58 equ ttychanno,dir+15 channel # for operator's tty  002020 37-59 equ quietsw,dir+16 if on, don't print card and macro commands  002021 37-60 equ inputsw,dir+17 read from tty, cards, macros  002022 37-61 equ macroloc,dir+18 disk addr, buffer index of macro file  002023 37-62 equ fdump_state,dir+19 completion flag for last FDUMP  002024 37-63 equ d355_state,dir+20 = 1 if DataNet 355 loaded successfully  002025 37-64 equ skipsw,dir+21 if on, skip runcom lines 002026 37-65 equ ttypmtsw,dir+22 if on, prompt  002027 37-66 equ curtcmd,dir+23 current bos command 002030 37-67 equ readysw,dir+24 if on, print ready message  002032 37-68 equ cmdlst,dir+26 list of commands 37-69  000600 37-70 equ dirlen,384 37-71  37-72  37-73  37-74 " MACRO BUFFER AREA 37-75  002600 37-76 equ macrobuf,dir+dirlen io buffer for macro files 002700 37-77 equ macroline,macrobuf+64 runcom command line 002716 37-78 equ macroargs,macroline+14 argument descriptors for runcom  37-79  37-80  37-81  37-82 " CONFIGURATION CARD AREA  37-83 " Its length is 2048 words.  37-84  003000 37-85 equ conf,macrobuf+128 start of configuration info  007000 37-86 equ econf,conf+2048 end of configuration info  000020 37-87 equ confl,16 length of each line  37-88  37-89  007000 37-90 equ seg6length,econf length of bos_common area segment 37-91  37-92 " End of include file ...... bos_common.incl.alm  37-93  202  203  204  205 end  LITERALS 022656 aa 202020 202020 022657 aa 202020 202052 022660 aa 777777 777777 022661 aa 777717 777717 022662 aa 202020 202067 022663 aa 202020 202023 022664 aa 777777 770000 022665 aa 205064 312563 022666 aa 202020 462626 022667 aa 205125 212470 022670 aa 202020 204645 022671 aa 475146 444763 022672 aa 202020 636370 022673 aa 202321 512462 022674 aa 777717 171717 022675 aa 702562 202020 022676 aa 454620 202020 022677 aa 202051 464663 022700 aa 202047 215163 022701 aa 202020 654643 022702 aa 142165 154153 022703 aa 622523 634651 022704 aa 512523 465124 022705 aa 144163 153056 022706 aa 040040 040040 022707 aa 162157 157164 022710 aa 160141 162164 022711 aa 000000 100001 022712 aa 202020 202021 022714 aa 600000 000041 022715 aa 002012 000000 022716 aa 052052 052052 022717 aa 000007 777777 022720 aa 000000 002020 022721 aa 751717 171717 022722 aa 177177 177177 022723 aa 000000 000000 022724 aa 007777 777777 022725 aa 171717 171717 022726 aa 777777 777772 022727 aa 141717 171717 022730 aa 204703 000031 022731 aa 470102 000031 022732 aa 155160 143040 022733 aa 160165 156141 022734 aa 000077 777777 022735 aa 160162 160150 022736 aa 143154 157153 022737 aa 000003 641100 022740 aa 151157 155040 NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 022741 5a 000003 000000 022742 5a 000017 600000 022743 aa 000000 000000 022744 55 000010 000002 022745 5a 000002 400003 022746 55 000006 000010 022747 aa 004 165 164 151 022750 aa 154 000 000 000 022751 55 000002 000003 022752 6a 000000 400002 022753 55 000013 000003 022754 aa 014 163 171 155 symbol_table  022755 aa 142 157 154 137 022756 aa 164 141 142 154 022757 aa 145 000 000 000 DEFINITIONS HASH TABLE  022760 aa 000000 000015 022761 aa 000000 000000 022762 aa 000000 000000 022763 aa 000000 000000 022764 aa 000000 000000 022765 aa 000000 000000 022766 aa 000000 000000 022767 5a 000010 000000 022770 aa 000000 000000 022771 aa 000000 000000 022772 aa 000000 000000 022773 aa 000000 000000 022774 aa 000000 000000 022775 aa 000000 000000 NO EXTERNAL NAMES  NO TRAP POINTER WORDS  TYPE PAIR BLOCKS  022776 aa 000001 000000 022777 aa 000000 000000 INTERNAL EXPRESSION WORDS LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 022741 000000 000002 aa 000000 000000 000003 aa 000000 000000 000004 aa 000000 000000 000005 aa 000000 000000 000006 22 000010 000010 000007 a2 000000 000000 SYMBOL INFORMATION SYMBOL TABLE HEADER  000000 aa 000000 000001 000001 aa 163171 155142 000002 aa 164162 145145 000003 aa 000000 000004 000004 aa 000000 112143 000005 aa 305203 523135 000006 aa 000000 112272 000007 aa 233375 742730 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000020 000002 000016 aa 000064 000000 000017 aa 000000 002372 000020 aa 000000 001015 000021 aa 000000 002327 000022 aa 002332 001015 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 040066 056066 000030 aa 040040 116157 000031 aa 166145 155142 000032 aa 145162 040061 000033 aa 071070 062040 000034 aa 110157 154155 000035 aa 163164 145144 000036 aa 164056 123171 000037 aa 163115 141151 000040 aa 156164 056141 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 154151 163164 000045 aa 040040 040040 000046 aa 040040 040040 000047 aa 040040 040040 000050 aa 040040 040040 000051 aa 040040 040040 000052 aa 040040 040040 000053 aa 040040 040040 000054 aa 040040 040040 000055 aa 040040 040040 000056 aa 040040 040040 000057 aa 040040 040040 000060 aa 040040 040040 000061 aa 040040 040040 000062 aa 040040 040040 000063 aa 040040 040040 000064 aa 000000 000001 000065 aa 000000 000046 000066 aa 000316 000025 000067 aa 122721 273172 000070 aa 000000 112272 000071 aa 216347 400000 000072 aa 000324 000040 000073 aa 113400 415301 000074 aa 000000 111341 000075 aa 220414 400000 000076 aa 000334 000036 000077 aa 043243 126014 000100 aa 000000 103256 000101 aa 423767 600000 000102 aa 000344 000042 000103 aa 102324 451015 000104 aa 000000 110235 000105 aa 732226 600000 000106 aa 000355 000040 000107 aa 043243 126015 000110 aa 000000 103256 000111 aa 423767 600000 000112 aa 000365 000041 000113 aa 043243 125767 000114 aa 000000 103256 000115 aa 423770 600000 000116 aa 000376 000037 000117 aa 043243 125766 000120 aa 000000 102112 000121 aa 020624 400000 000122 aa 000406 000040 000123 aa 043243 125763 000124 aa 000000 103437 000125 aa 417732 400000 000126 aa 000416 000041 000127 aa 102312 644264 000130 aa 000000 110232 000131 aa 252246 200000 000132 aa 000427 000041 000133 aa 105543 476637 000134 aa 000000 110555 000135 aa 260135 200000 000136 aa 000440 000037 000137 aa 066146 212632 000140 aa 000000 106615 000141 aa 362663 600000 000142 aa 000450 000037 000143 aa 066146 212640 000144 aa 000000 106615 000145 aa 362665 600000 000146 aa 000460 000040 000147 aa 043243 125735 000150 aa 000000 104103 000151 aa 112712 600000 000152 aa 000470 000042 000153 aa 077023 320156 000154 aa 000000 107705 000155 aa 376652 600000 000156 aa 000501 000046 000157 aa 043243 125746 000160 aa 000000 103534 000161 aa 053307 400000 000162 aa 000513 000042 000163 aa 110044 377556 000164 aa 000000 111005 000165 aa 417043 600000 000166 aa 000524 000037 000167 aa 043243 126011 000170 aa 000000 103437 000171 aa 417732 000000 000172 aa 000534 000040 000173 aa 043243 126006 000174 aa 000000 103256 000175 aa 423770 000000 000176 aa 000544 000040 000177 aa 066146 212633 000200 aa 000000 106615 000201 aa 362664 600000 000202 aa 000554 000037 000203 aa 067532 710027 000204 aa 000000 106753 000205 aa 327523 000000 000206 aa 000564 000037 000207 aa 105543 476650 000210 aa 000000 110555 000211 aa 260173 000000 000212 aa 000574 000037 000213 aa 043243 126002 000214 aa 000000 103544 000215 aa 666020 200000 000216 aa 000604 000037 000217 aa 105543 476672 000220 aa 000000 110555 000221 aa 260245 400000 000222 aa 000614 000040 000223 aa 110235 072724 000224 aa 000000 111024 000225 aa 524513 400000 000226 aa 000624 000040 000227 aa 110235 072721 000230 aa 000000 111024 000231 aa 524503 000000 000232 aa 000634 000037 000233 aa 043243 125776 000234 aa 000000 103256 000235 aa 423770 400000 000236 aa 000644 000037 000237 aa 043243 125773 000240 aa 000000 103256 000241 aa 423770 400000 000242 aa 000654 000036 000243 aa 043243 125750 000244 aa 000000 102112 000245 aa 020622 000000 000246 aa 000664 000043 000247 aa 043243 127523 000250 aa 000000 101621 000251 aa 351624 000000 000252 aa 000675 000037 000253 aa 043243 126020 000254 aa 000000 102611 000255 aa 327743 600000 000256 aa 000705 000040 000257 aa 043243 125760 000260 aa 000000 101745 000261 aa 405242 200000 000262 aa 000715 000041 000263 aa 102324 451016 000264 aa 000000 110235 000265 aa 732232 200000 000266 aa 000726 000032 000267 aa 112375 747471 000270 aa 000000 111240 000271 aa 207531 200000 000272 aa 000735 000051 000273 aa 121622 277504 000274 aa 000000 112162 000275 aa 321572 600000 000276 aa 000750 000040 000277 aa 106702 126332 000300 aa 000000 110673 000301 aa 145242 400000 000302 aa 000760 000050 000303 aa 077322 074057 000304 aa 000000 107733 000305 aa 111401 000000 000306 aa 000772 000045 000307 aa 113400 415346 000310 aa 000000 111341 000311 aa 220451 000000 000312 aa 001004 000044 000313 aa 121622 277475 000314 aa 000000 112162 000315 aa 321563 400000 000316 aa 076163 160145 >spec>h>3.17>util.alm  000317 aa 143076 150076 000320 aa 063056 061067 000321 aa 076165 164151 000322 aa 154056 141154 000323 aa 155040 040040 000324 aa 076154 144144 >ldd>bos>include>bosequ.incl.alm  000325 aa 076142 157163 000326 aa 076151 156143 000327 aa 154165 144145 000330 aa 076142 157163 000331 aa 145161 165056 000332 aa 151156 143154 000333 aa 056141 154155 000334 aa 076154 144144 >ldd>bos>include>scan.incl.alm  000335 aa 076142 157163 000336 aa 076151 156143 000337 aa 154165 144145 000340 aa 076163 143141 000341 aa 156056 151156 000342 aa 143154 056141 000343 aa 154155 040040 000344 aa 076154 144144 >ldd>bos>include>nextline.incl.alm  000345 aa 076142 157163 000346 aa 076151 156143 000347 aa 154165 144145 000350 aa 076156 145170 000351 aa 164154 151156 000352 aa 145056 151156 000353 aa 143154 056141 000354 aa 154155 040040 000355 aa 076154 144144 >ldd>bos>include>search.incl.alm  000356 aa 076142 157163 000357 aa 076151 156143 000360 aa 154165 144145 000361 aa 076163 145141 000362 aa 162143 150056 000363 aa 151156 143154 000364 aa 056141 154155 000365 aa 076154 144144 >ldd>bos>include>makefil.incl.alm  000366 aa 076142 157163 000367 aa 076151 156143 000370 aa 154165 144145 000371 aa 076155 141153 000372 aa 145146 151154 000373 aa 056151 156143 000374 aa 154056 141154 000375 aa 155040 040040 000376 aa 076154 144144 >ldd>bos>include>ldcom.incl.alm 000377 aa 076142 157163 000400 aa 076151 156143 000401 aa 154165 144145 000402 aa 076154 144143 000403 aa 157155 056151 000404 aa 156143 154056 000405 aa 141154 155040 000406 aa 076154 144144 >ldd>bos>include>getsec.incl.alm  000407 aa 076142 157163 000410 aa 076151 156143 000411 aa 154165 144145 000412 aa 076147 145164 000413 aa 163145 143056 000414 aa 151156 143154 000415 aa 056141 154155 000416 aa 076154 144144 >ldd>bos>include>makesdw.incl.alm  000417 aa 076142 157163 000420 aa 076151 156143 000421 aa 154165 144145 000422 aa 076155 141153 000423 aa 145163 144167 000424 aa 056151 156143 000425 aa 154056 141154 000426 aa 155040 040040 000427 aa 076154 144144 >ldd>bos>include>bos_sdw.incl.alm  000430 aa 076142 157163 000431 aa 076151 156143 000432 aa 154165 144145 000433 aa 076142 157163 000434 aa 137163 144167 000435 aa 056151 156143 000436 aa 154056 141154 000437 aa 155040 040040 000440 aa 076154 144144 >ldd>bos>include>cvadd.incl.alm 000441 aa 076142 157163 000442 aa 076151 156143 000443 aa 154165 144145 000444 aa 076143 166141 000445 aa 144144 056151 000446 aa 156143 154056 000447 aa 141154 155040 000450 aa 076154 144144 >ldd>bos>include>rwdev.incl.alm 000451 aa 076142 157163 000452 aa 076151 156143 000453 aa 154165 144145 000454 aa 076162 167144 000455 aa 145166 056151 000456 aa 156143 154056 000457 aa 141154 155040 000460 aa 076154 144144 >ldd>bos>include>argmul.incl.alm  000461 aa 076142 157163 000462 aa 076151 156143 000463 aa 154165 144145 000464 aa 076141 162147 000465 aa 155165 154056 000466 aa 151156 143154 000467 aa 056141 154155 000470 aa 076154 144144 >ldd>include>fs_dev_types.incl.alm  000471 aa 076151 156143 000472 aa 154165 144145 000473 aa 076146 163137 000474 aa 144145 166137 000475 aa 164171 160145 000476 aa 163056 151156 000477 aa 143154 056141 000500 aa 154155 040040 000501 aa 076154 144144 >ldd>bos>include>config_cards.incl.alm  000502 aa 076142 157163 000503 aa 076151 156143 000504 aa 154165 144145 000505 aa 076143 157156 000506 aa 146151 147137 000507 aa 143141 162144 000510 aa 163056 151156 000511 aa 143154 056141 000512 aa 154155 040040 000513 aa 076154 144144 >ldd>include>fs_vol_label.incl.alm  000514 aa 076151 156143 000515 aa 154165 144145 000516 aa 076146 163137 000517 aa 166157 154137 000520 aa 154141 142145 000521 aa 154056 151156 000522 aa 143154 056141 000523 aa 154155 040040 000524 aa 076154 144144 >ldd>bos>include>rwsec.incl.alm 000525 aa 076142 157163 000526 aa 076151 156143 000527 aa 154165 144145 000530 aa 076162 167163 000531 aa 145143 056151 000532 aa 156143 154056 000533 aa 141154 155040 000534 aa 076154 144144 >ldd>bos>include>rwbulk.incl.alm  000535 aa 076142 157163 000536 aa 076151 156143 000537 aa 154165 144145 000540 aa 076162 167142 000541 aa 165154 153056 000542 aa 151156 143154 000543 aa 056141 154155 000544 aa 076154 144144 >ldd>bos>include>rwdisk.incl.alm  000545 aa 076142 157163 000546 aa 076151 156143 000547 aa 154165 144145 000550 aa 076162 167144 000551 aa 151163 153056 000552 aa 151156 143154 000553 aa 056141 154155 000554 aa 076154 144144 >ldd>bos>include>itape.incl.alm 000555 aa 076142 157163 000556 aa 076151 156143 000557 aa 154165 144145 000560 aa 076151 164141 000561 aa 160145 056151 000562 aa 156143 154056 000563 aa 141154 155040 000564 aa 076154 144144 >ldd>bos>include>error.incl.alm 000565 aa 076142 157163 000566 aa 076151 156143 000567 aa 154165 144145 000570 aa 076145 162162 000571 aa 157162 056151 000572 aa 156143 154056 000573 aa 141154 155040 000574 aa 076154 144144 >ldd>bos>include>readc.incl.alm 000575 aa 076142 157163 000576 aa 076151 156143 000577 aa 154165 144145 000600 aa 076162 145141 000601 aa 144143 056151 000602 aa 156143 154056 000603 aa 141154 155040 000604 aa 076154 144144 >ldd>bos>include>readt.incl.alm 000605 aa 076142 157163 000606 aa 076151 156143 000607 aa 154165 144145 000610 aa 076162 145141 000611 aa 144164 056151 000612 aa 156143 154056 000613 aa 141154 155040 000614 aa 076154 144144 >ldd>bos>include>getprt.incl.alm  000615 aa 076142 157163 000616 aa 076151 156143 000617 aa 154165 144145 000620 aa 076147 145164 000621 aa 160162 164056 000622 aa 151156 143154 000623 aa 056141 154155 000624 aa 076154 144144 >ldd>bos>include>getmpc.incl.alm  000625 aa 076142 157163 000626 aa 076151 156143 000627 aa 154165 144145 000630 aa 076147 145164 000631 aa 155160 143056 000632 aa 151156 143154 000633 aa 056141 154155 000634 aa 076154 144144 >ldd>bos>include>punch.incl.alm 000635 aa 076142 157163 000636 aa 076151 156143 000637 aa 154165 144145 000640 aa 076160 165156 000641 aa 143150 056151 000642 aa 156143 154056 000643 aa 141154 155040 000644 aa 076154 144144 >ldd>bos>include>octwd.incl.alm 000645 aa 076142 157163 000646 aa 076151 156143 000647 aa 154165 144145 000650 aa 076157 143164 000651 aa 167144 056151 000652 aa 156143 154056 000653 aa 141154 155040 000654 aa 076154 144144 >ldd>bos>include>conv.incl.alm  000655 aa 076142 157163 000656 aa 076151 156143 000657 aa 154165 144145 000660 aa 076143 157156 000661 aa 166056 151156 000662 aa 143154 056141 000663 aa 154155 040040 000664 aa 076154 144144 >ldd>include>eis_micro_ops.incl.alm 000665 aa 076151 156143 000666 aa 154165 144145 000667 aa 076145 151163 000670 aa 137155 151143 000671 aa 162157 137157 000672 aa 160163 056151 000673 aa 156143 154056 000674 aa 141154 155040 000675 aa 076154 144144 >ldd>bos>include>strip.incl.alm 000676 aa 076142 157163 000677 aa 076151 156143 000700 aa 154165 144145 000701 aa 076163 164162 000702 aa 151160 056151 000703 aa 156143 154056 000704 aa 141154 155040 000705 aa 076154 144144 >ldd>bos>include>getcon.incl.alm  000706 aa 076142 157163 000707 aa 076151 156143 000710 aa 154165 144145 000711 aa 076147 145164 000712 aa 143157 156056 000713 aa 151156 143154 000714 aa 056141 154155 000715 aa 076154 144144 >ldd>bos>include>rdclock.incl.alm  000716 aa 076142 157163 000717 aa 076151 156143 000720 aa 154165 144145 000721 aa 076162 144143 000722 aa 154157 143153 000723 aa 056151 156143 000724 aa 154056 141154 000725 aa 155040 040040 000726 aa 076154 144144 >ldd>include>fgbx.incl.alm  000727 aa 076151 156143 000730 aa 154165 144145 000731 aa 076146 147142 000732 aa 170056 151156 000733 aa 143154 056141 000734 aa 154155 040040 000735 aa 076154 144144 >ldd>bos>include>bos_iom_manager.incl.alm  000736 aa 076142 157163 000737 aa 076151 156143 000740 aa 154165 144145 000741 aa 076142 157163 000742 aa 137151 157155 000743 aa 137155 141156 000744 aa 141147 145162 000745 aa 056151 156143 000746 aa 154056 141154 000747 aa 155040 040040 000750 aa 076154 144144 >ldd>bos>include>intflt.incl.alm  000751 aa 076142 157163 000752 aa 076151 156143 000753 aa 154165 144145 000754 aa 076151 156164 000755 aa 146154 164056 000756 aa 151156 143154 000757 aa 056141 154155 000760 aa 076154 144144 >ldd>bos>include>check_cpu_type.incl.alm  000761 aa 076142 157163 000762 aa 076151 156143 000763 aa 154165 144145 000764 aa 076143 150145 000765 aa 143153 137143 000766 aa 160165 137164 000767 aa 171160 145056 000770 aa 151156 143154 000771 aa 056141 154155 000772 aa 076154 144144 >ldd>bos>include>getportinfo.incl.alm  000773 aa 076142 157163 000774 aa 076151 156143 000775 aa 154165 144145 000776 aa 076147 145164 000777 aa 160157 162164 001000 aa 151156 146157 001001 aa 056151 156143 001002 aa 154056 141154 001003 aa 155040 040040 001004 aa 076154 144144 >ldd>bos>include>bos_common.incl.alm  001005 aa 076142 157163 001006 aa 076151 156143 001007 aa 154165 144145 001010 aa 076142 157163 001011 aa 137143 157155 001012 aa 155157 156056 001013 aa 151156 143154 001014 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number  20513 abnormal_return bos_iom_manager: 476, 481. 20642 absarea intflt: 39, 45, 46, 82, 183. 20543 abs_base_addr bos_iom_manager: 22, 109, 534.  17556 abtable strip: 9, 41.  14476 am.bulk argmul: 104, 119.  14555 am.chn argmul: 93, 114, 159. 14432 am.done argmul: 56, 60, 85. 14552 am.drv argmul: 91, 111, 156. 14561 am.dvt util: 76, argmul: 29, 36, 43, 81, 89, 98, 102, 164.  14405 am.entire argmul: 58, 145.  14537 am.err argmul: 31, 132, 138. 14510 am.err1 argmul: 37, 44, 68, 76, 82, 87, 130. 14521 am.err2 argmul: 54, 134.  14557 am.first util: 77, argmul: 38, 86, 115, 121, 162. 14410 am.for argmul: 62, 151.  14425 am.glsec argmul: 73, 79.  14556 am.iom argmul: 96, 113, 160. 14560 am.last util: 78, argmul: 39, 59, 83, 85, 116, 122, 163. 14562 am.limit argmul: 33, 41, 45, 58, 75, 165.  14404 am.only argmul: 56, 147.  14563 am.prnum argmul: 30, 62, 167. 14431 am.setl argmul: 77, 83.  14564 am.size argmul: 32, 71, 168. 14553 am.sub argmul: 106, 110, 157. 14542 am.tab argmul: 51, 144, 153. 10 am.tabl argmul: 50, 153.  14413 am.to argmul: 66, 149.  14554 am.type argmul: 101, 112, 158. 14505 am.x2 argmul: 25, 26, 117, 124, 138, 139.  100 amptwptr bos_common: 11. 0 amptwregs bos_common: 10. 400 amsdwptr bos_common: 13. 200 amsdwregs bos_common: 12. 1300 aphist bos_common: 17. 12040 arg util: 33, scan: 17, 56, 59, 62, 76, 79, 82, 89, 96, 115, 122, nextline: 126, 147, 221, 227, 234, 241, 259, cvadd: 210, 231, 258, 294, 342, argmul: 47, 67, 136, getprt: 176, 179, 181. 13574 argbos util: 74, cvadd: 205, argmul: 28. 17 arglen util: 34, 38, 42, bosequ: 17, scan: 17, 21, 25, 106.  14352 argmul util: 75, argmul: 25. 12501 arg_count util: 57, scan: 129, 184.  16221 asge util: 101, error: 98, 375.  16233 asgetab util: 102, error: 55, 84, 381, 391.  1573 bar bos_common: 26. 2 bf bosequ: 9. 20544 bootload_cpu_port bos_iom_manager: 18, 282, 536.  13532 bosmul util: 71, cvadd: 161, argmul: 35, 42, 80. 13516 bosphy util: 68, cvadd: 144. 2012 bos_dvt getsec: 19, rwsec: 33, bos_common: 53. 14762 bsinit rwbulk: 103, 121.  1100 bsmbx rwbulk: 11, 19, 20, 21, 22, 26, 27, 28, 29, 30, 31, 32,  33, 37, 38, 39, 40, 41, 45, 46, 47, 48, 49, 50,  51, 52, 53, 54, 55, 56, 57, 58, 111, 116.  15101 bsport rwbulk: 109, 131, 175. 15100 bstemp rwbulk: 90, 123, 174. 15001 bsx2 rwbulk: 102, 119, 161, 169.  1 bs_busy rwbulk: 73, 129, 134. 15014 bs_busy_loop rwbulk: 132, 135.  15011 bs_cioc rwbulk: 129, 145.  15063 bs_conf_error rwbulk: 107, 166.  15102 bs_csb rwbulk: 148, 150, 152, 154, 157, 158, 159, 160, 176. 15025 bs_error rwbulk: 137, 140, 143. 1 bulkdevt fs_dev_types: 8.  1 BULK_cd.frec config_cards: 30.  2 BULK_cd.nrec cvadd: 418, config_cards: 31.  14577 bulk_dvt fs_dev_types: 32.  17527 bzedit conv: 55, 62.  17516 bzel util: 105, conv: 52. 17525 bzin conv: 52, 54, 60. 17526 bzout conv: 56, 57, 61. 22527 cctrsw2 check_cpu_type: 12, 15, 17.  16415 cdbuff readc: 17, 21, 34, 110.  20506 channel_ptr bos_iom_manager: 459, 473. 100 chans bos_iom_manager: 33, 37, 49, 62, 70, 140, 360, 363, 486.  20562 checkstat_nostat_sw bos_iom_manager: 172, 176, 192, 566. 20224 checkstat_status_waits bos_iom_manager: 191, 194. 22521 check_cpu_type util: 130, intflt: 98, check_cpu_type: 10,  getportinfo: 29. 20412 check_special_status util: 129, readc: 91, readt: 134, bos_iom_manager: 372, 390. 20206 check_status util: 116, rwdisk: 126, error: 296, 329,  readc: 96, readt: 38, 46,  bos_iom_manager: 175, 472. 20207 check_status_1 bos_iom_manager: 173, 177, 274.  20204 check_status_no_stat util: 128, bos_iom_manager: 171.  3 CHNL_cd.chn config_cards: 27.  2 CHNL_cd.iom config_cards: 26.  4 CHNL_cd.nchan config_cards: 28.  1 CHNL_cd.sub config_cards: 25.  420 cht eis_micro_ops: 17.  20420 cksp_x2 bos_iom_manager: 373, 381. 2032 cmdlst search: 18, 19,  bos_common: 68. 6 com bosequ: 14, nextline: 13, 38, 40, 63, 103, 116, 132, 135, 176, 178, 182, 186,  212, 229, 236, 243, 248, 250, 255, 258, 262, 270, 271, 273,  275, search: 20, 27,  makefil: 41, 43,  getsec: 19, 35, 46, 53, 57, 62, 63, cvadd: 375, 378, 392, 394, 399, 418, 436, 440, 471, 474, 479, argmul: 105, rwsec: 33, rwbulk: 108, rwdisk: 54, itape: 123, error: 340, 342, 351, readc: 13, readt: 23, 32,  getprt: 28, 32, 33, 37, 40, 76,  getmpc: 18, 30, 33, punch: 11, 14,  getcon: 17, 38,  rdclock: 28, 30,  bos_iom_manager: 36, 44, 51, 81, 82, 88, 99, 103, 123, 300, 347,  getportinfo: 27, 64, 83. 3000 conf getcon: 16, bos_common: 85, 86.  20 confl getcon: 19, bos_common: 87. 2 connect_channel bos_iom_manager: 141, 146, 511.  1123 connect_count rwbulk: 49. 20151 connect_iom util: 114, rwdisk: 121, 207,  error: 290, 326,  readt: 35, 43,  bos_iom_manager: 117, 469. 20152 connect_join bos_iom_manager: 119.  2003 corearea bos_common: 47. 1610 coreblocks getportinfo: 27, 83,  bos_common: 30. 16147 cr error: 263, 306, 316, 318.  34 csb_error_status_mask rwbulk: 74, 136.  37 csb_status_mask rwbulk: 68, 147.  700 cuhist bos_common: 15. 2027 curtcmd readt: 23, bos_common: 66. 13725 cv.ab.err cvadd: 240, 249, 263, 282, 336, 534, 539. 14131 cv.ab.err1 cvadd: 230, 531.  14142 cv.ab.err2 cvadd: 271, 302, 321, 326, 536. 13656 cv.ab.exit cvadd: 242, 252, 286. 13663 cv.ab.exit1 cvadd: 276, 293.  13714 cv.ab.exit2 cvadd: 310, 323.  13740 cv.ab.limit cvadd: 273, 291, 325, 328, 352. 13624 cv.ab.notb cvadd: 226, 237.  13741 cv.ab.offset cvadd: 208, 264, 266, 299, 304, 306, 317, 354.  13634 cv.ab.part_type cvadd: 215, 257.  13610 cv.ab.phy_type cvadd: 222. 13703 cv.ab.record cvadd: 296, 312.  13630 cv.ab.root_type cvadd: 213, 247.  13655 cv.ab.vol_type cvadd: 217, 281.  13723 cv.abx3 cvadd: 205, 332, 338. 14127 cv.cfe.x2 cvadd: 521, 528.  14113 cv.conf_err cvadd: 408, 450, 509, 520.  14240 cv.dbuff cvadd: 488, 491, 498, 504, 505, 590.  14004 cv.fd.conf_err cvadd: 373, 407, 417. 14005 cv.fd.err cvadd: 410, 548, 553, 560.  14152 cv.fd.err1 cvadd: 401, 543.  14166 cv.fd.err2 cvadd: 393, 550.  14176 cv.fd.err3 cvadd: 371, 555.  14007 cv.fd.fb cvadd: 368, 415.  14001 cv.fd.gy cvadd: 365, 380, 390, 403, 411. 13777 cv.fd.lk cvadd: 400, 422.  13770 cv.fd.ml cvadd: 392, 397.  14106 cv.fp.conf_err cvadd: 470, 508.  14111 cv.fp.devt cvadd: 477, 482, 487, 502, 514. 14107 cv.fp.err cvadd: 483, 489, 511, 568.  14213 cv.fp.err1 cvadd: 497, 562.  14074 cv.fp.loop cvadd: 495, 499.  14112 cv.fp.pn cvadd: 465, 494, 516, 565.  14100 cv.fp.x2 cvadd: 464, 501, 511. 14036 cv.fr.conf_err cvadd: 434, 449.  14037 cv.fr.err cvadd: 443, 452.  14033 cv.fr.gx cvadd: 429, 445, 453. 14041 cv.fr.temp cvadd: 438, 442, 446, 456.  13504 cv.pb1 cvadd: 115, 123.  13506 cv.pb2 cvadd: 116, 126.  13506 cv.pb3 cvadd: 117, 127.  13506 cv.pb4 cvadd: 118, 128.  13506 cv.pb5 cvadd: 119, 129.  13506 cv.pb6 cvadd: 120, 130.  13506 cv.pb7 cvadd: 121, 131.  13514 cv.pbr cvadd: 139. 14236 cv.temp cvadd: 166, 173, 177, 193, 197, 227, 236, 480, 522, 526, 544, 547,  556, 559, 566, 587.  14237 cv.temp1 cvadd: 475, 523, 527, 567, 588. 13736 cvgbad cvadd: 343, 345, 349. 13730 cvgno cvadd: 305, 316, 342. 13430 cvinit cvadd: 105. 17641 cv_clock util: 112, rdclock: 18. 2024 d355_state bos_common: 63. 12060 darg util: 37, scan: 21, 64, 66, 69, 88, 95, 136, cvadd: 229. 17771 date rdclock: 89, 110, 144. 17746 datecv rdclock: 46, 51, 78, 86, 106. 20010 datedit rdclock: 90, 151.  17770 datenum rdclock: 106, 109, 143. 17743 datx2 rdclock: 19, 20, 101. 1570 dbr bos_common: 24. 70 dcb_edac_status_mask rwbulk: 77. 170000 dcb_major_status_mask rwbulk: 75, 139.  7700 dcb_minor_status_mask rwbulk: 76. 20521 DCW bos_iom_manager: 437, 442, 446, 453, 521.  20547 dcw_reloc_flag bos_iom_manager: 73, 101, 542.  2000 dir search: 19, bos_common: 43, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56,  57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 76. 600 dirlen search: 19, bos_common: 70, 76.  2014 diskchanno bos_common: 55. 15354 disk_brief util: 86, rwdisk: 143, 238.  3 DISK_cd.chn cvadd: 378, config_cards: 20.  2 DISK_cd.iom cvadd: 375, config_cards: 19.  5 DISK_cd.model cvadd: 399, config_cards: 22.  4 DISK_cd.nchan config_cards: 21.  6 DISK_cd.ndrives cvadd: 392, 394,  config_cards: 23.  1 DISK_cd.sub argmul: 105, config_cards: 18,  rwdisk: 54. 25 disk_read rwdisk: 25, 242.  42 disk_restore rwdisk: 245, 259.  34 disk_seek rwdisk: 244, 261.  22 disk_status rwdisk: 179, 246.  31 disk_write rwdisk: 35, 243.  6 drl intflt: 12. 0 ds bosequ: 7, makesdw: 64, 70, 81, 83,  bos_iom_manager: 25.  6 dsu181devt fs_dev_types: 15.  5 dsu190devt fs_dev_types: 14.  4 dsu191devt fs_dev_types: 13.  12100 earg util: 41, scan: 26, 102, 139, nextline: 151, 155.  7000 econf getcon: 20, bos_common: 86, 90.  1126 edac_corr_err rwbulk: 52. 1100 eishist bos_common: 16. 40 enf error: 252, eis_micro_ops: 2.  15777 erbuf util: 91, error: 54, 162, 187, 198, 203, 207, 226. 16015 erbuf_last error: 199, 204, 227, readt: 115. 15765 erct error: 195, 207.  15774 ercv util: 90, error: 219. 16076 eredit_d error: 114, 252.  16103 eredit_n error: 121, 255.  16101 eredit_o error: 121, 136, 254. 15563 erjn error: 17, 221.  16064 erkey error: 62, 242.  16063 erlen error: 23, 39, 240. 15577 erloop error: 36, 59, 65, 166.  15726 ernomov error: 158, 164.  15621 ernot error: 50, 61.  16034 erpad error: 185, 231.  15766 erpend error: 191, 209, 215. 15741 erprnt error: 37, 40, 181. 15747 erprnt_full error: 182, 189.  15562 erpt util: 89, nextline: 118, makefil: 48, ldcom: 36, getsec: 23, 66,  makesdw: 31, 33, 49, cvadd: 524, 532, 537, 545, 551, 557, 563, argmul: 108, 119, 130, 134,  rwbulk: 155, 167,  rwdisk: 153, 169, 195, itape: 61, error: 15, 343,  readc: 87, getprt: 158, 169, 207, 213.  16061 errarg error: 44, 48, 53, 72, 82, 93, 109, 238.  15771 erreq error: 200, 213.  16062 errin error: 19, 28, 43, 63, 239. 15714 errmov error: 152. 16036 errnum error: 110, 113, 132, 135, 235. 1125 error_count rwbulk: 51. 1130 error_retry_count rwbulk: 54. 15643 errstrip error: 86, 95.  16040 errtemp error: 83, 87, 94, 102, 115, 137, 145, 161, 236. 15706 errtrim error: 88, 105, 118, 140, 144. 15767 errx3 error: 17, 210.  15636 err_A error: 80, 243.  15653 err_a error: 98, 249.  15660 err_d error: 108, 248.  15646 err_G error: 91, 244.  15654 err_g error: 101, 250.  15671 err_n error: 121, 247.  15673 err_o error: 125, 246.  15676 err_ow error: 122, 126, 131. 15675 err_w error: 129, 245.  16033 ersw error: 15, 184, 190, 220, 230. 16066 ertable error: 76, 243.  16060 ertally error: 64, 75, 147, 149, 150, 153, 154, 156, 157, 164, 165, 237.  17 exec intflt: 15, 65.  20722 exintpair intflt: 64, 143.  20636 exloc intflt: 25, 77, 88. 1127 fatal_error_count rwbulk: 53. 1576 faultreg bos_common: 28. 1 fault_channel bos_iom_manager: 58, 62, 249, 510. 20552 fault_dcw bos_iom_manager: 545, 546, 548.  20550 fault_lpw bos_iom_manager: 57, 61, 544.  2023 fdump_state bos_common: 62. 5 fgb bosequ: 13, makesdw: 93. 20000 fgbx.alert fgbx: 33. 77 fgbx.bos_entry_mask fgbx: 35. 0 fgbx.bos_entry_shift fgbx: 34. 200000 fgbx.call_bos fgbx: 30. 2 fgbx.cpus fgbx: 20. 400000 fgbx.flags fgbx: 16. 0 fgbx.flags_word fgbx: 15. 40 fgbx.fnp_blast fgbx: 41. 16 fgbx.hc_dbr fgbx: 39. 40000 fgbx.mess fgbx: 32. 20 fgbx.message fgbx: 40. 571 fgbx.ports_mask fgbx: 23. 34 fgbx.ports_shift fgbx: 22. 3 fgbx.rtb makesdw: 93, fgbx: 27. 4 fgbx.sentinel fgbx: 37. 100000 fgbx.shut fgbx: 31. 1 fgbx.slt_segno fgbx: 18. 400000 fgbx.ssenb makesdw: 21, 54,  fgbx: 29. 14 fgbx.sst_sdw fgbx: 38. 7 fgbx.tags_mask fgbx: 25. 25 fgbx.tags_shift fgbx: 24. 100 fgbx_size fgbx: 13. 20526 FIMW bos_iom_manager: 247, 528. 13742 find_disk util: 125, cvadd: 238, 364, 441, 481.  14042 find_part util: 127, cvadd: 261, 463.  14017 find_root util: 126, cvadd: 248, 428.  2000 firmware_bit bosequ: 20. 20613 fltloop intflt: 52, 58.  13232 found_room getsec: 42, 51.  14717 fs_dev.amaxio util: 83, fs_dev_types: 141.  14645 fs_dev.cyl_per_dev fs_dev_types: 83.  14611 fs_dev.dev_type_names util: 79, argmul: 100, fs_dev_types: 45,  rwdisk: 59. 7 fs_dev.max_dev_type rwdev: 6, 20,  fs_dev_types: 43.  14620 fs_dev.media_removable fs_dev_types: 54.  14565 fs_dev.models cvadd: 577, 580,  fs_dev_types: 18, 29. 14577 fs_dev.modelx cvadd: 580, fs_dev_types: 31.  14672 fs_dev.mult_sect_per_cyl getsec: 20, 37, 39,  cvadd: 170, 194, fs_dev_types: 114. 12 fs_dev.n_models cvadd: 576, fs_dev_types: 29.  14710 fs_dev.rec_per_dev util: 82, cvadd: 188, 419,  fs_dev_types: 132.  14701 fs_dev.rem_per_cyl getsec: 44, cvadd: 172, 174, 195, fs_dev_types: 123.  14654 fs_dev.sect_per_cyl util: 80, cvadd: 169, fs_dev_types: 92.  14627 fs_dev.sect_per_dev util: 81, cvadd: 147, 164, 289, 421,  fs_dev_types: 65.  14663 fs_dev.sect_per_track cvadd: 135, 151,  fs_dev_types: 101.  14636 fs_dev.track_per_cyl cvadd: 133, 153,  fs_dev_types: 74.  22602 full_mem getportinfo: 75, 78, 82. 100 fvloc intflt: 9, 56, 61, 62, 65. 17546 gbtable error: 146, strip: 30, 36.  17431 geas util: 99, cvadd: 224, 260,  conv: 13. 17440 geastab util: 100, conv: 18, 23.  17460 geastabu getprt: 121, conv: 28. 17617 getcon1 getcon: 17, 21.  17616 getconf util: 108, cvadd: 416, 433, 469, rwbulk: 106, getmpc: 13, getcon: 16, 35,  rdclock: 26, bos_iom_manager: 78.  17621 getmore util: 109, cvadd: 472, getmpc: 26, getcon: 19, 39,  bos_iom_manager: 84, 86, 91.  17306 getmpc util: 115, getprt: 71, getmpc: 11. 17625 getperiph util: 110, cvadd: 372, getprt: 24, punch: 9, getcon: 30. 22530 getportinfo util: 131, getportinfo: 23. 16633 getpr1 getprt: 20, 164.  16630 getprt util: 96, getprt: 16. 16775 getprtx2 getprt: 16, 17, 147. 13173 getsec util: 63, makefil: 35, getsec: 14. 20331 get_imws bos_iom_manager: 180, 299, 336.  20433 get_interrupt_common bos_iom_manager: 398, 408. 22603 get_next_port getportinfo: 52, 85.  20430 get_special_interrupt util: 117, error: 359, bos_iom_manager: 396.  20432 get_status_interrupt util: 118, bos_iom_manager: 405.  22634 get_table getportinfo: 43, 72, 126. 17327 gm_ckchn getmpc: 22, 30.  17312 gm_ckiom getmpc: 15, 28.  17341 gm_found getmpc: 35, 40.  17330 gm_mchn getmpc: 31. 17323 gm_mmpc getmpc: 20, 25.  17343 gm_nompc getmpc: 14, 27, 43. 17314 gm_nxiom getmpc: 17, 23, 32, 36.  17341 gm_x2 getmpc: 11, 15, 41, 44.  20640 gotflt intflt: 79, 80, 95. 16743 gpbelt getprt: 107, 112.  16714 gpcvst getprt: 83, 89.  16750 gpcvt getprt: 118, 136.  22624 gpir getportinfo: 24, 108.  22624 gpi_return getportinfo: 92, 107.  17067 gpnotrain getprt: 110, 191, 201, 206.  17206 gptrain getprt: 56, 119, 200, 254.  17156 gptraina getprt: 120, 127, 252. 17152 gptrainad getprt: 193, 198, 245. 17137 gp_chn getprt: 34, 72, 216, 236.  17136 gp_iom getprt: 29, 73, 235. 13253 gs_finish getsec: 64, 74.  13255 gs_len getsec: 33, 41, 52, 54, 75, 81.  13256 gs_x2 getsec: 15, 25, 68, 82.  17413 hexloop octwd: 36, 46.  17410 hexwd util: 124, rwdisk: 183, 187, 191, octwd: 32. 17426 hexx2 octwd: 32, 48.  20564 hist_on intflt: 18, 73, 86, 94, 155. 20520 IDCW bos_iom_manager: 439, 456, 465, 467, 470, 520. 10 if0 error: 254, 255,  eis_micro_ops: 19.  4 if1 eis_micro_ops: 20.  2 if2 eis_micro_ops: 21.  1 if3 eis_micro_ops: 22.  300 ign eis_micro_ops: 12.  20135 iiox2 bos_iom_manager: 13, 79, 93.  20565 initint util: 120, intflt: 23. 20631 initintl intflt: 69, 71.  20061 initmbx bos_iom_manager: 38, 45. 20036 init_io util: 113, bos_iom_manager: 13.  2021 inputsw nextline: 13, 248, 250, 255, 258, 273, 275, error: 340, 342,  bos_common: 60. 220 insa eis_micro_ops: 9.  200 insb eis_micro_ops: 8.  20 insm error: 254, 255,  eis_micro_ops: 1,  rdclock: 151, 152.  240 insn eis_micro_ops: 10.  260 insp eis_micro_ops: 11,  rdclock: 151, 152.  20642 interentry intflt: 84, 145.  21060 intflt_amptwptr intflt: 33, 172, 203. 20760 intflt_amptwregs intflt: 173, 200.  21360 intflt_amsdwptr intflt: 170, 209.  21160 intflt_amsdwregs intflt: 171, 206.  22300 intflt_aphist intflt: 178, 224.  21700 intflt_cuhist intflt: 176, 220.  22100 intflt_eishist intflt: 177, 222.  22520 intflt_mode intflt: 232. 21500 intflt_ouhist intflt: 29, 175, 218. 22510 intflt_ptrlen intflt: 87, 91, 159, 230.  22500 intflt_regs intflt: 85, 97, 158, 167, 228. 21460 intflt_scu intflt: 213. 21470 intflt_scuignore intflt: 140, 144, 150, 156, 160, 168, 214. 20707 intl68 intflt: 126, 128.  20756 intno util: 122, intflt: 163, 195.  20726 intpair intflt: 68, 150.  1572 intrpts bos_common: 25. 20757 intrpts1 util: 123, intflt: 166, 197.  20711 intscpr1 intflt: 130, 133.  20703 intscpr2 intflt: 124, 135.  20732 intset intflt: 151, 158.  20755 int_inst intflt: 112, 113, 114, 129, 130, 131, 188. 20656 int_sam1 intflt: 100. 20663 int_sam2 intflt: 103, 105, 118. 20665 int_sam3 intflt: 107, 116.  20672 int_sam4 intflt: 110, 112.  20745 int_sam5 intflt: 105, 170.  20751 int_scpr intflt: 128, 174, 180. 3 iombx.dcw bos_iom_manager: 42, 107, 506.  0 iombx.lpw bos_iom_manager: 40, 110, 127, 141, 146, 348, 503.  1 iombx.lpwx bos_iom_manager: 41, 130, 504.  2 iombx.scw bos_iom_manager: 39, 505. 20542 iomno bos_iom_manager: 238, 257, 338, 361, 362, 532. 2 ioms bos_iom_manager: 33, 37, 49, 83, 363, 485. 1 iom_cow bos_iom_manager: 89, 145, 490.  2011 iom_mbbase bos_iom_manager: 36, 44, 88, 99, 123, 347, bos_common: 52. 2010 iom_mxbase bos_iom_manager: 51, 103, 300,  bos_common: 51. 200 iom_status bos_iom_manager: 33, 49, 133, 134, 190, 195, 196, 261, 499.  20316 iowait bos_iom_manager: 273, 279, 389.  20511 io_x2 bos_iom_manager: 426, 478, 482.  15376 itaper util: 87, itape: 17. 15475 itapew util: 88, itape: 97. 15537 itbuf itape: 86, 150.  15470 itdenerr itape: 83, 90.  15541 itdenx2 itape: 76, 91, 152. 15425 itgcr itape: 44, 51.  15535 itno itape: 82, 87, 110, 126, 136, 141, 148. 15407 itnrzi itape: 22, 31.  15416 itpe itape: 24, 35, 41. 15462 itrden itape: 75, 82.  15452 itrdone itape: 66, 156.  15521 itrewind itape: 67, 78, 103, 130.  15433 itrioerr itape: 32, 42, 52, 60, 157, 158, 160, 162, 163, 164, 165, 167,  168, 169, 170, 171.  15540 itrwx2 itape: 132, 144, 151. 15534 itrwx7 itape: 131, 145.  15453 itrx2 itape: 18, 64, 69. 15513 itsetno itape: 20, 101, 121. 15536 itstat itape: 63, 92, 149. 15542 itstattb itape: 23, 25, 26, 33, 34, 36, 43, 45, 46, 53, 54, 55,  95, 155.  15520 itsx7 itape: 122, 128.  15455 ittryden itape: 29, 39, 49, 58, 74. 15505 itwden itape: 106, 110.  15511 itwex2 itape: 99, 111, 117. 15507 itwx2 itape: 98, 113.  0 ivloc intflt: 10, 69.  22612 L68 getportinfo: 88, 94.  705 label.disk_table_uid fs_vol_label: 59.  704 label.disk_table_vtocx fs_vol_label: 58.  715 label.dumper_bit_map_record fs_vol_label: 67. 617 label.err_hist_size fs_vol_label: 49.  706 label.esd_state fs_vol_label: 60.  0 label.flagpad_shift fs_vol_label: 37.  551 label.flagpad_word fs_vol_label: 36.  1005 label.frec cvadd: 504, fs_vol_label: 73.  0 label.gcos fs_vol_label: 18.  400000 label.here fs_vol_label: 54.  614 label.last_pvtx fs_vol_label: 48.  542 label.lvid fs_vol_label: 25.  531 label.lv_name fs_vol_label: 23.  552 label.max_access_class fs_vol_label: 39.  511 label.mfg_serial fs_vol_label: 21.  554 label.min_access_class fs_vol_label: 40.  500 label.Multics fs_vol_label: 19.  400000 label.not_used fs_vol_label: 33.  551 label.not_used_word fs_vol_label: 32.  1003 label.nparts cvadd: 491, fs_vol_label: 69.  1006 label.nrec cvadd: 505, fs_vol_label: 74.  546 label.n_pv_in_lv fs_vol_label: 28.  1004 label.part cvadd: 485, 498,  fs_vol_label: 72.  1004 label.parts fs_vol_label: 70.  556 label.password fs_vol_label: 41.  200000 label.private fs_vol_label: 35.  551 label.private_word fs_vol_label: 34.  541 label.pvid fs_vol_label: 24.  521 label.pv_name fs_vol_label: 22.  700 label.root fs_vol_label: 52.  543 label.root_pvid fs_vol_label: 26.  701 label.root_vtocx fs_vol_label: 56.  702 label.shutdown_state fs_vol_label: 57.  710 label.size_of_volmap fs_vol_label: 62.  712 label.size_of_vtoc_map fs_vol_label: 64.  620 label.time_last_dmp fs_vol_label: 50.  626 label.time_last_reloaded fs_vol_label: 51. 602 label.time_map_updated fs_vol_label: 43.  600 label.time_mounted fs_vol_label: 42.  610 label.time_of_boot fs_vol_label: 46.  544 label.time_registered fs_vol_label: 27.  606 label.time_salvaged fs_vol_label: 45.  612 label.time_unmounted fs_vol_label: 47.  510 label.version fs_vol_label: 20.  707 label.volmap_record fs_vol_label: 61.  713 label.volmap_unit_size fs_vol_label: 65.  604 label.volmap_version fs_vol_label: 44.  547 label.vol_size fs_vol_label: 29.  716 label.vol_trouble_count fs_vol_label: 68.  711 label.vtoc_map_record fs_vol_label: 63.  714 label.vtoc_origin_record fs_vol_label: 66. 550 label.vtoc_size fs_vol_label: 30.  2000 label_size fs_vol_label: 15.  113 labsarea intflt: 37, 183.  13170 ldcdelta ldcom: 19, 21, 27, 44.  13157 ldcerr ldcom: 24, 30, 36. 13172 ldclen ldcom: 26, 33, 46. 13171 ldcname ldcom: 16, 38, 45. 13152 ldcoff ldcom: 15, 29.  13136 ldcom util: 62, ldcom: 13. 13154 ldcx2 ldcom: 14, 32, 40. 17051 ldtrain getprt: 49, 115, 188. 17065 ldtx2 getprt: 188, 203.  12001 line util: 30, scan: 39, 138, 190, nextline: 46, 57, 78, 84, 95, 142, 156, 165, 166, 215,  makesdw: 28, 40, 59, readc: 28, 64,  readt: 15, 79, 86, 87, 95, 111, 112, 152,  punch: 22. 17500 ljust util: 103, cvadd: 223, 259,  conv: 34. 14232 lkdmx0 cvadd: 573, 578.  20720 lockfltpair intflt: 60, 139.  7 lockup intflt: 14, 52, 61. 14226 lookup_devmodel util: 72, cvadd: 400, 572.  1620 lowport_cfg bos_common: 34. 1530 low_order_port getportinfo: 64, bos_common: 20. 20524 LPW bos_iom_manager: 118, 126, 525.  20525 LPWX bos_iom_manager: 23, 28, 129, 526. 400 lte error: 252, 254, 255, conv: 62, eis_micro_ops: 16,  rdclock: 151. 14340 lth_of_phy_addr cvadd: 592. 2716 macroargs nextline: 103, bos_common: 78. 2600 macrobuf nextline: 182, 186,  bos_common: 76, 77, 85. 2700 macroline bos_common: 77, 78.  2022 macroloc nextline: 38, 40, 63, 176, 178, 270,  bos_common: 61. 13065 makefil util: 61, makefil: 14. 13257 makesdw util: 73, makesdw: 13. 1100 mbx.csb_status rwbulk: 20, 130, 133, 146.  1104 mbx.dcb rwbulk: 26, 110, 114. 1100 mbx.dcb_address rwbulk: 19, 113.  1107 mbx.dcb_control_field rwbulk: 33, 89.  1106 mbx.dcb_mem_addr rwbulk: 30, 100.  1104 mbx.dcb_op_started rwbulk: 27. 1104 mbx.dcb_post rwbulk: 28. 1107 mbx.dcb_store_addr rwbulk: 32, 95.  1105 mbx.dcb_st_addr rwbulk: 29, 118.  1106 mbx.dcb_tally rwbulk: 31, 126.  1134 mbx.edac_buckets rwbulk: 58. 1103 mbx.int_cell rwbulk: 22. 1102 mbx.port rwbulk: 21. 1131 mbx.save_core_add rwbulk: 55. 1132 mbx.save_devadd rwbulk: 56. 1133 mbx.save_inter rwbulk: 57. 1113 mbx.stb.dcw_ptr rwbulk: 41. 1112 mbx.stb.hdwr_ind rwbulk: 40, 153.  1111 mbx.stb.nxt_addr rwbulk: 38, 151.  1110 mbx.stb.status rwbulk: 37, 115, 138, 149, 162. 1111 mbx.stb.tally_residue rwbulk: 39. 1550 mcm bos_common: 23. 1532 mctime bos_common: 21. 7 mem bosequ: 15, rwbulk: 89, 95, 100, 113, 114, 118, 126, 130, 133, 138, 146, 149,  151, 153, 162, bos_iom_manager: 33, 39, 40, 41, 42, 49, 55, 89, 107, 110, 127,  130, 133, 134, 141, 145, 146, 190, 195, 196, 261, 301,  303, 308, 313, 348, 349, 352, intflt: 56, 61, 62, 65, 69. 160 mflc eis_micro_ops: 7.  140 mfls error: 252, eis_micro_ops: 6.  13104 mkfalloc makefil: 25, 33.  13132 mkferr makefil: 36, 52.  13135 mkfloc makefil: 15, 24, 26, 34, 37, 42, 56. 13134 mkfnam makefil: 14, 40, 50, 55.  13101 mkfnew makefil: 19, 29.  13112 mkfsave makefil: 27, 40.  13116 mkfx2 makefil: 16, 45, 52. 13111 mkfx7 makefil: 33, 38.  13342 mksd.payon makesdw: 38, 44, 48. 13271 mksd.query makesdw: 30, 51.  13426 mksd.rtb_ptr makesdw: 20, 55, 92. 13407 mksd.saveline makesdw: 29, 58, 89. 13360 mksd.savex2 makesdw: 26, 45, 60. 13361 mksd.ssenb_ok makesdw: 22, 62.  13353 mksd.yes_clobber makesdw: 42, 53.  13406 mksdlen makesdw: 16, 78, 88. 13405 mksdsdw makesdw: 71, 72, 75, 76, 87. 1574 modereg bos_common: 27. 17774 montab rdclock: 23, 56, 74, 81, 149. 22622 more_ports getportinfo: 100, 103.  360 mors eis_micro_ops: 15.  340 mses eis_micro_ops: 14.  4 msu0400devt fs_dev_types: 12.  3 msu0450devt fs_dev_types: 11.  3 msu0451devt fs_dev_types: 10.  2 msu0500devt fs_dev_types: 9.  7 msu0501devt fs_dev_types: 16.  13554 mulbos util: 70, cvadd: 184, 269, 300, 319.  320 mvc error: 253, 254, 255, conv: 62, eis_micro_ops: 13,  rdclock: 151, 152.  120 mvza eis_micro_ops: 5.  100 mvzb error: 254, 255,  conv: 62, eis_micro_ops: 4,  rdclock: 151. 12510 nextline util: 58, nextline: 9. 10 next_dcb_error rwbulk: 70. 4 nint_scpr intflt: 122, 180.  12513 nlagain nextline: 13, 124, 223, 230, 237, 244, 251, 260, 263, 278.  13034 nlbuf nextline: 70, 138, 141, 201, 287. 12565 nlbufdesc nextline: 70, 121.  12524 nlcd nextline: 17, 26.  12704 nlget nextline: 48, 56, 171. 12722 nlgx2 nextline: 171, 189.  13032 nllen nextline: 52, 54, 80, 106, 193, 195, 196, 205, 284. 12550 nlloop nextline: 54, 59.  12533 nlma nextline: 18, 38.  12556 nlmae nextline: 55, 61.  12651 nlmpr nextline: 117, 135.  12630 nlmpt nextline: 86, 92, 116, 130, 206. 12655 nlmpx nextline: 133, 136, 140, 149.  12661 nlmx nextline: 128, 147.  13033 nlno nextline: 88, 90, 96, 98, 154, 159, 160, 162, 203, 204, 285. 13016 nlnocard nextline: 219, 254, 265. 12720 nlnoload nextline: 174, 186.  13003 nlnotty nextline: 247, 253.  12767 nlnp nextline: 233, 239.  12775 nlnq nextline: 240, 246.  12761 nlnr nextline: 226, 232.  12741 nlpt nextline: 28, 66, 212. 13031 nlraw util: 59, nextline: 65, 218, 276, 282.  12745 nlscan nextline: 23, 34, 143, 167, 213, 217.  13023 nlsw nextline: 22, 27, 39, 273.  13021 nlswma nextline: 50, 270.  12521 nltty nextline: 16, 21.  13016 nlx nextline: 9, 10, 11, 31, 32, 33, 266, 277.  12624 nlxdesc nextline: 104, 110.  12572 nlxloop nextline: 77, 114.  12724 nlxpand nextline: 82, 108, 193. 13120 nodroom makefil: 31, 48.  20231 none_waiting bos_iom_manager: 186, 193, 201.  20465 non_data_transfer bos_iom_manager: 428, 451. 20404 noovh bos_iom_manager: 344, 353, 360.  17636 noperiph getcon: 36, 44.  20314 nostatus bos_iom_manager: 203, 272. 20607 notrel intflt: 41, 47.  16723 not_eurc getprt: 78, 92.  22564 not_low_port getportinfo: 57, 66.  17655 no_clok_card rdclock: 27, 33.  17103 no_mpc_card getprt: 74, 212.  20271 no_spec_int bos_iom_manager: 226, 229, 232, 245. 20246 no_stat_call bos_iom_manager: 209, 212, 218.  2 np1200id getprt: 105, 233.  10 nprinters getprt: 153, 229.  12527 nxtlinea nextline: 31. 17430 octtemp octwd: 15, 23, 42, 44, 51. 17371 octwd util: 98, error: 131, octwd: 8. 17406 octx2 octwd: 8, 24.  2 op_started_bit rwbulk: 79. 20367 oqsdesc bos_iom_manager: 335, 343. 20376 oqsrpt bos_iom_manager: 351, 358. 500 ouhist bos_common: 14. 20365 overhead_loop bos_iom_manager: 340, 364. 4 overhead_qlth bos_iom_manager: 351, 514, 549, 550, 557, 558. 20361 overhead_queue_search bos_iom_manager: 221, 248, 334, 377. 17134 p1200id getprt: 106, 231, 233. 360 p1200l getprt: 13, 117.  440 p300l getprt: 12, 56, 135, 252.  12000 pagectl util: 27. 3 PART_cd.drive cvadd: 474, config_cards: 11.  1 PART_cd.name cvadd: 471, config_cards: 9.  2 PART_cd.sub cvadd: 479, config_cards: 10.  17140 pchan getprt: 36, 57, 64, 68, 98, 128, 133, 140, 146, 178, 238. 20516 PCW bos_iom_manager: 462, 464, 470, 518. 3 pgm bosequ: 10, makesdw: 64, 70, 81, 83,  bos_iom_manager: 25, 433, intflt: 73, 77, 79, 85, 86, 87, 88, 91, 92, 93, 94, 95,  97, 98, 103, 105, 110, 112, 113, 114, 116, 118, 126, 128,  129, 130, 131, 133, 135, 136, 140, 141, 144, 145, 147, 148,  150, 151, 155, 156, 158, 159, 160, 163, 166, 167, 168, 170,  171, 172, 173, 175, 176, 177, 178. 17634 phx2 getcon: 31, 41, 44. 14347 phyadd util: 69, cvadd: 123, 124, 132, 134, 136, 152, 154, 155, 601. 13472 phybos util: 67, cvadd: 112. 16635 ploop getprt: 22, 154.  17000 pnext getprt: 25, 152, 184. 17003 pnext1 getprt: 156, 166.  17013 pnext2 getprt: 157, 161.  16774 pok getprt: 59, 130, 142, 146.  1 post_bit rwbulk: 78. 16675 pr1200 getprt: 43, 63.  16767 pr202 getprt: 46, 138.  16763 pr303 getprt: 53, 132.  16656 prfork getprt: 41, 182.  17050 primerr getprt: 58, 69, 99, 129, 141, 167, 184, 210, 217. 16757 prld getprt: 124, 127.  17143 prmodel getprt: 41, 51, 241. 17141 prname getprt: 23, 209, 215, 239.  20262 process_special_status bos_iom_manager: 223, 235, 379.  20277 process_system_fault bos_iom_manager: 250, 255. 3 PRPH_cd.chn config_cards: 15.  2 PRPH_cd.iom config_cards: 14.  4 PRPH_cd.model config_cards: 16.  1 PRPH_cd.sub config_cards: 13.  1500 prs bos_common: 18. 17144 prstat getprt: 67, 84, 85, 93, 101, 242.  17017 prtdef getprt: 162, 166, 173. 17151 prtfirst getprt: 18, 156, 163, 244.  17150 prtfnd getprt: 20, 26, 161, 243.  17124 prtname getprt: 22, 221, 229. 17153 prvfc getprt: 97, 248.  17142 ptrain getprt: 38, 112, 113, 180, 195, 240.  1600 ptrlen bos_common: 29. 17362 pun punch: 21. 17345 punch util: 97, punch: 6. 17362 puner punch: 20, 24.  17370 punno punch: 16, 23, 28. 17346 punsw punch: 7, 19.  17366 punx2 punch: 6, 10, 25. 2020 quietsw nextline: 135, 212, 229, bos_common: 59. 16276 rcb readc: 16, 94.  15106 rd181 rwdev: 15, rwdisk: 23. 15106 rd190 rwdev: 14, rwdisk: 22. 15106 rd400 rwdev: 13, rwdisk: 21. 15106 rd450 rwdev: 12, rwdisk: 20. 15106 rd500 rwdev: 11, rwdisk: 19. 15106 rd501 rwdev: 16, rwdisk: 24. 14746 rdbulk rwdev: 10, rwbulk: 83. 20013 rdc.days rdclock: 97, 154.  20022 rdc.months rdclock: 84, 156.  16365 rdcchk readc: 76, 84.  16302 rdccnv readc: 21, 82.  16313 rdccol readc: 33, 69.  16343 rdcend readc: 57, 62.  16410 rdceof readc: 23, 85, 101. 16354 rdcerr readc: 19, 74.  16445 rdcfirst readc: 25, 84, 101, 111.  17763 rdclock.day_name rdclock: 98, 132.  17765 rdclock.day_of_century rdclock: 49, 93, 136. 17761 rdclock.day_of_month rdclock: 77, 128.  17762 rdclock.day_of_week rdclock: 96, 130.  17754 rdclock.hr rdclock: 50, 118.  17755 rdclock.min rdclock: 41, 120.  17757 rdclock.month rdclock: 83, 124.  17760 rdclock.month_name rdclock: 85, 126.  17756 rdclock.sec rdclock: 39, 122.  17764 rdclock.year rdclock: 60, 71, 134. 17767 rdclock.zone_name rdclock: 31, 140.  17766 rdclock.zone_temp rdclock: 29, 47, 138. 16321 rdcnum readc: 40, 45.  16446 rdcstat readc: 74, 89, 112. 16367 rdcstop readc: 79, 87.  17772 rdctime rdclock: 18, 34, 91, 100, 147. 16414 rdcval readc: 35, 36, 37, 42, 47, 53, 60, 63, 109. 16400 rdcwait readc: 91, 98, 99. 16332 rdczone readc: 51, 56.  16447 rdczonetab readc: 59, 114.  16341 rdczonly readc: 48, 59.  13431 rdev util: 65, cvadd: 486, rwdev: 4, rwsec: 43. 2016 rdrchanno nextline: 262, readc: 13, bos_common: 57. 16352 rdrtn readc: 11, 71, 102. 14726 rdsec util: 84, nextline: 181, ldcom: 28, rwsec: 16, getprt: 199. 16576 rdte readt: 98, 115.  16554 rdtl readt: 94, 113.  17640 rd_clock util: 111, rdclock: 16. 15 read rwbulk: 63, 84.  16273 readcd util: 94, nextline: 26, readc: 11. 16413 readno readc: 14, 18, 92, 108.  16457 readtty util: 95, nextline: 21, 123,  makesdw: 37, readt: 10, getprt: 172. 2030 readysw nextline: 236, bos_common: 67. 1124 read_count rwbulk: 50. 22547 read_sw_1 getportinfo: 34, 42.  20175 reconnect bos_iom_manager: 143, 150. 1520 regs bos_common: 19. 20577 relop intflt: 39, 48.  15736 resetar error: 171, 175.  17507 rjust util: 104, error: 101, conv: 43. 2 ROOT_cd.drive cvadd: 436, config_cards: 7.  1 ROOT_cd.sub cvadd: 440, config_cards: 6.  20730 rstart_hist intflt: 141, 153.  16471 rttyag readt: 23, 41, 128, 137.  16604 rttyer1 readt: 66, 126.  16601 rttyerr readt: 49, 122.  16511 rttynp readt: 33, 43.  16500 rttynplp readt: 26, 30.  16473 rttyplp readt: 25, 29.  16577 rttyx2 readt: 10, 73, 117. 16626 rtydcw readt: 17, 44, 152. 16627 rtylen readt: 50, 57, 58, 62, 70, 81, 83, 84, 97, 100, 103, 154.  16624 rtypcw readt: 20, 44, 149. 16615 rtypmt readt: 12, 31, 138, 146.  16622 rtypmtdcw readt: 14, 36, 145. 16620 rtypmtpcw readt: 21, 36, 141. 4000 runcom_bit bosequ: 19. 13463 rwdtab rwdev: 8, 22, 32. 15341 rwiaddr rwdisk: 163, 173, 227. 15162 rwibll rwdisk: 100, 106.  15171 rwiblx rwdisk: 102, 108.  15336 rwichan rwdisk: 148, 157, 224. 15347 rwichanno rwdisk: 71, 76, 127, 146, 179, 232.  15334 rwicmd rwdisk: 48, 171, 222. 15344 rwidetail rwdisk: 178, 182, 185, 189, 230. 15335 rwidevno rwdisk: 74, 158, 223. 15207 rwiend rwdisk: 135, 216.  15211 rwierr rwdisk: 129, 133, 142. 15327 rwifatal rwdisk: 205, 213.  15350 rwihex rwdisk: 184, 188, 193, 197, 198, 199, 234. 15337 rwiiom rwdisk: 151, 156, 225. 15361 rwilist rwdisk: 46, 78, 79, 92, 100, 109, 113, 122, 161, 260.  15356 rwipcw rwdisk: 69, 80, 122, 209, 253. 15360 rwirestore rwdisk: 81, 258.  15340 rwisect rwdisk: 167, 172, 226. 15353 rwiseekaddr rwdisk: 66, 95, 111, 165, 235, 262.  15320 rwiskiper rwdisk: 144, 180, 201. 15342 rwistat rwdisk: 142, 174, 175, 214, 229. 15333 rwiti rwdisk: 65, 221.  15346 rwitrys rwdisk: 120, 202, 203, 231.  15207 rwix2 rwdisk: 42, 136, 213. 15112 rwi_common rwdisk: 26, 36, 41. 15374 rwi_disk_name rwdisk: 60, 155, 266. 15360 rwi_reseek rwdisk: 209, 257.  15201 rwi_retry rwdisk: 124, 210.  15375 rwi_sub_name rwdisk: 55, 159, 267. 14740 rwsarg rwsec: 25, 28, 34. 14744 rwskl rwsec: 32, 41.  14742 rwsx2 rwsec: 30, 37.  14731 rws_common rwsec: 18, 23.  22626 save_switches getportinfo: 49, 89, 98, 114.  12373 scalph1 scan: 75, 172.  12376 scalph2 scan: 79, 175.  12414 scalph3 scan: 93, 98, 177. 12314 scan util: 56, scan: 12, nextline: 125, 217,  getprt: 175. 12506 scar4 scan: 12, 130, 189. 12505 scatemp scan: 99, 140, 188. 12503 scchar scan: 40, 42, 61, 68, 81, 186.  12404 scdec scan: 88, 178.  12507 scdesc6 scan: 23, 190.  12466 scdisp scan: 52, 169.  12340 scget scan: 34, 38.  12350 scgo scan: 36, 48.  12333 scl1 scan: 32, 72, 85, 119, 170. 12334 scl2 scan: 33, 110, 125. 12427 scminus1 scan: 114, 173.  12434 scminus2 scan: 121, 179.  12355 scnum1 scan: 56, 171.  12357 scnum2 scan: 59, 174.  12407 scnum3 scan: 92, 176.  12440 scret scan: 107, 128, 180. 12502 scsign scan: 92, 104, 114, 185.  12445 scstartf scan: 57, 77, 116, 136.  12462 scstate scan: 49, 163.  12504 sctype scan: 45, 47, 187. 12452 sctypes scan: 44, 153.  1540 scu bos_common: 22. 1 scu.fltint_num intflt: 160, 191.  76 scu.fltint_num_mask intflt: 161, 192.  1 scu.fltint_num_shift intflt: 162, 193.  12120 scuinfo util: 46, intflt: 147. 12443 scx0 scan: 13, 131.  14 sdw.add_shift bos_sdw: 4. 377770 sdw.bound makesdw: 65, 82,  bos_sdw: 12. 40000 sdw.cache bos_sdw: 20. 4 sdw.df bos_sdw: 9. 37777 sdw.entry_bound bos_sdw: 21. 100000 sdw.entry_bound_sw bos_sdw: 19. 2 sdw.execute bos_sdw: 14. 3 sdw.fault_code bos_sdw: 10. 400000 sdw.privileged bos_sdw: 17. 7000 sdw.r1 bos_sdw: 5. 700 sdw.r2 bos_sdw: 6. 70 sdw.r3 bos_sdw: 7. 4 sdw.read bos_sdw: 13. 200000 sdw.unpaged bos_sdw: 18. 1 sdw.write bos_sdw: 15. 13052 search util: 60, search: 15, makefil: 18, 30,  ldcom: 23, getprt: 190. 7000 seg6length bos_common: 90. 2 service_started rwbulk: 72. 60 ses error: 254, 255,  eis_micro_ops: 3.  15731 setar error: 80, 91, 169. 2004 setuparea bos_common: 49. 20470 set_idcw bos_iom_manager: 449, 455. 20137 set_overhead_channel bos_iom_manager: 59, 63, 67, 71, 98.  20145 set_overhead_dcw bos_iom_manager: 102, 106. 22553 set_word getportinfo: 47, 91, 105. 13061 shfnd search: 21, 26.  13063 shx0 search: 16, 23, 28. 20536 SIMW bos_iom_manager: 220, 228, 241, 376, 386, 530. 22635 size_code_table getportinfo: 36, 131.  22645 size_code_table_dps8 getportinfo: 31, 144.  20620 skipflt intflt: 53, 55, 57. 2025 skipsw nextline: 116, 132, 271, bos_common: 64. 6 special_channel bos_iom_manager: 66, 70, 222, 378, 512.  20556 special_dcw bos_iom_manager: 553, 554, 556.  20561 special_handler bos_iom_manager: 74, 225, 397, 563. 20554 special_lpw bos_iom_manager: 65, 69, 552.  110 special_status_queue bos_iom_manager: 495, 557, 558.  1000 sps rwbulk: 64, 84, 88. 20560 status_handler bos_iom_manager: 75, 208, 211, 215, 406, 560. 20545 status_lock error: 345, bos_iom_manager: 202, 204, 270, 538. 20546 status_mask bos_iom_manager: 197, 540. 4 status_ptr_error rwbulk: 71. 20 status_store_error rwbulk: 69. 20311 stat_x0 bos_iom_manager: 206, 252, 268.  20312 stat_x2 bos_iom_manager: 207, 269. 20522 stop_dcw bos_iom_manager: 452, 522, 523.  20523 stop_lpw bos_iom_manager: 31, 523. 2000 storlen bos_common: 36. 17530 stripa util: 106, strip: 9. 17543 stripg util: 107, error: 86, 277,  strip: 30. 17531 stripj strip: 11, 31.  22633 switches_4 getportinfo: 40, 76, 94, 96, 124. 22627 sw_store_1 getportinfo: 46, 116.  22630 sw_store_2 getportinfo: 30, 118.  22631 sw_store_3 getportinfo: 102, 120.  22632 sw_store_4 getportinfo: 38, 122.  100 system_fault_queue bos_iom_manager: 494, 549, 550.  2015 tapechanno itape: 123, bos_common: 56. 17545 tctally strip: 14, 17, 21, 34.  20351 test_imw bos_iom_manager: 184, 227, 322, 342, 385.  20421 test_special bos_iom_manager: 383.  20212 test_status bos_iom_manager: 182, 210. 4 timer intflt: 13, 54, 62. 16607 timer_off readt: 124, 130.  1120 time_temp rwbulk: 47. 20532 TIMW bos_iom_manager: 179, 185, 265, 529. 1 tmp bosequ: 8. 1114 total_read_wait_time rwbulk: 45. 1116 total_wait_time rwbulk: 46. 16157 ttyalert error: 324. 2017 ttychanno error: 351, bos_common: 58. 16201 ttyinit util: 93, error: 350. 16217 ttyir error: 350, 367.  16146 ttyno error: 297, 305, 330, 352, 360, 364,  readt: 39, 47, 135. 2026 ttypmtsw nextline: 243, readt: 32, bos_common: 65. 16177 ttyrqst error: 346, 358.  16134 tyag error: 288, 290, 294, 299.  16160 tyalcon error: 326, 332.  16152 tyapcw error: 313, 327, 355. 16166 tyax2 error: 324, 334.  16154 tydcw error: 265, 266, 272, 285, 287, 293, 316. 16123 tydesc error: 269, 275, 278. 16150 typcw error: 291, 310, 354, readt: 19. 16105 type util: 92, nextline: 137, 214,  error: 206, 213, 261, readt: 52, 126, 131. 16144 typex2 error: 261, 301.  16170 tyrq error: 338, 360.  16200 tyrqx error: 338, 347.  20724 unexpair intflt: 51, 147.  20646 unexpflt intflt: 91, 148.  2013 unitgroup bos_common: 54. 2002 useable getsec: 63, bos_common: 46. 2001 used getsec: 35, 46, 53, 57, 62, bos_common: 45. 2005 utilarea bos_common: 50. 12000 utilorg util: 23, 54,  bosequ: 22. 16732 vfcok getprt: 94, 101.  1122 wait_count rwbulk: 48. 20641 wantflt util: 121, intflt: 80, 92.  15110 wd181 rwdev: 29, rwdisk: 33. 15110 wd190 rwdev: 28, rwdisk: 32. 15110 wd400 rwdev: 27, rwdisk: 31. 15110 wd450 rwdev: 26, rwdisk: 30. 15110 wd500 rwdev: 25, rwdisk: 29. 15110 wd501 rwdev: 30, rwdisk: 34. 16231 wd6 error: 380, 383, 387, conv: 13, 16.  16232 wd9 error: 376, 379, 388, conv: 17, 20.  13446 wdev util: 66, rwdev: 18, rwsec: 42. 13217 will_fit_in_cyl getsec: 21, 22, 31. 11 write rwbulk: 62, 88.  14750 wtbulk rwdev: 24, rwbulk: 87. 14730 wtsec util: 85, rwsec: 20. 20441 xio_wait util: 119, rwdisk: 177, itape: 80, 85, 108, 134, 139, error: 362, readc: 16, getprt: 55, 66, 96, 126, 138, punch: 21, bos_iom_manager: 426.  4 xs1 bosequ: 11. 5 xs2 bosequ: 12. NO FATAL ERRORS  ----------------------------------------------------------- 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