ASSEMBLY LISTING OF SEGMENT >spec>h>3.17>loaddm.alm ASSEMBLED ON: 11/29/83 1524.7 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 " LOADDM - Disk Loader for BOS. 7 " Modified by N. I. Morris for MTC-500 - July 1973. 8 " Modified 8/79 by R.J.C. Kissel to fix a bug, it already can handle expanded BOS.  9 " Modified 6/22/81 by J. A. Bush, to save the bos tape label in command dir 10  11 " ******************************************************  12 " * *  13 " * *  14 " * Copyright (c) 1972 by Massachusetts Institute of *  15 " * Technology and Honeywell Information Systems, Inc. *  16 " * *  17 " * *  18 " ******************************************************  19  20  21 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  22  23 use toec  24  25 include bos_toequ  2-1 "  2-2 " Begin include file ...... bos_toequ.incl.alm  2-3 " Converted for follow-on on 5/5/72 at 17:30 by D R Vinograd  2-4 " Modified on 5/3/77 by N. I. Morris  2-5 " Modified 8/79 by R.J.C. Kissel to expand parts of BOS.  2-6 " Modified by Sherman D. Sprague 02/11/81 for DPS8 support  2-7 " Last modified by Keith Loepere to fix addresses to toehold and setup so  2-8 " that dcw list in setup will correctly save/restore Multics image  2-9 " The following is a map of BOS memory. 2-10 "  2-11 " Address Length  2-12 "  2-13 " 0 100 interrupt vector  2-14 " 100 100 fault vector  2-15 " 200 400 its pointers for fault and interrupt vectors  2-16 " 600 300 padding?  2-17 " 1100 100 bulk store mbx  2-18 " 1200 200 IOM imw area  2-19 " 1400 400 IOM A mbx 2-20 " 2000 400 IOM B mbx 2-21 " 2400 400 IOM C mbx 2-22 " 3000 400 IOM D mbx 2-23 " 3400 300 FNP A mbx 2-24 " 3700 300 FNP B mbx 2-25 " 4200 300 FNP C mbx 2-26 " 4500 300 FNP D mbx 2-27 " 5000 300 FNP E mbx 2-28 " 5300 300 FNP F mbx 2-29 " 5600 300 FNP G mbx 2-30 " 6100 300 FNP H mbx 2-31 " 6400 1340 padding  2-32 " 7740 40 ds (descriptor segment)  2-33 " 10000 1000 toehold  2-34 " 11000 7000 setup  2-35 " 20000 2000 bf (buffer)  2-36 " 22000 4000 com (common) 2-37 " 31000 12000 pgm (program area)  2-38 " 40000 20000 util (utilities) 2-39 " 60000 717777 rest of BOS memory, unused  2-40  2-41 " EQU's for BOS core image. 2-42  060000 2-43 bool coresaved,60000 amount of Multics core saved by BOS  2-44  777777 2-45 bool lnmem,777777 length of memory  000000 2-46 bool origmem,0 absolute origin of start of memory  2-47  010000 2-48 bool lnsetup,10000 length of BOS control program  010000 2-49 bool origsetup,10000 absolute origin of BOS control program  2-50  010020 2-51 equ origflagbox,origsetup+16 absolute origin of flagbox area  000100 2-52 equ lnflagbox,64 length of flagbox area  2-53  000040 2-54 bool lnds,40 length of BOS descriptor segment  007740 2-55 equ origds,origsetup-lnds absolute origin of BOS descriptor segment  2-56  002000 2-57 equ lnbf,1024 length of buffer segment  020000 2-58 equ origbf,origsetup+lnsetup absolute origin of 1024-word buffer  2-59  007000 2-60 bool lncom,7000 length of BOS common area 022000 2-61 equ origcom,origbf+lnbf absolute origin of BOS common area  2-62  031000 2-63 equ origpgm,origcom+lncom absolute origin of BOS command programs  031000 2-64 equ pgmorg,origpgm for compatibility  027000 2-65 equ lnpgm,coresaved-origpgm length of BOS command programs 2-66  001400 2-67 bool imbx,1400 absolute loc'n of actual IOM mailbox  2-68  000037 2-69 bool rewpu,37 REWP access, unpaged bit for SDW  2-70  2-71  010000 2-72 bool maxw,10000  2-73  2-74  000020 2-75 bool absi,000020  004000 2-76 bool ovflm,004000  2-77  2-78  2-79 " BOS pointer registers.  2-80  2-81 mod 16 003660 2-82 bos_pr: 003660 aa 000000 000043 2-83 its 0,0 pr0 -> seg 0 etc  003661 aa 000000 000000 003662 aa 000001 000043 2-84 its 1,0  003663 aa 000000 000000 003664 aa 000002 000043 2-85 its 2,0  003665 aa 000000 000000 003666 aa 000003 000043 2-86 its 3,0  003667 aa 000000 000000 003670 aa 000004 000043 2-87 its 4,0  003671 aa 000000 000000 003672 aa 000005 000043 2-88 its 5,0  003673 aa 000000 000000 003674 aa 000006 000043 2-89 its 6,0  003675 aa 000000 000000 003676 aa 000007 000043 2-90 its 7,0  003677 aa 000000 000000 2-91  2-92  2-93 " BOS descriptor segment template.  2-94  003700 2-95 bos_dbr:  003700 2-96 dseg:  003700 aa 000077 400004 2-97 seg0: vfd 24/origds,9/0,o3/4  003701 aa 000017 600000 2-98 vfd 1/0,14/(lnds/16-1),5/rewpu,15/0  2-99  003702 aa 000310 000004 2-100 seg1: vfd 24/origpgm,9/0,o3/4  003703 aa 013377 600000 2-101 vfd 1/0,14/(lnpgm/16-1),5/rewpu,15/0  2-102  003704 aa 000200 000004 2-103 seg2: vfd 24/origbf,9/0,o3/4  003705 aa 000777 600000 2-104 vfd 1/0,14/(lnbf/16-1),5/rewpu,15/0  2-105  003706 aa 000100 000004 2-106 seg3: vfd 24/origsetup,9/0,o3/4 003707 aa 003777 600000 2-107 vfd 1/0,14/(lnsetup/16-1),5/rewpu,15/0 2-108  003710 aa 000000 000000 2-109 seg4: zero  003711 aa 000000 000000 2-110 zero  2-111  003712 aa 000100 200004 2-112 seg5: vfd 24/origflagbox,9/0,o3/4  003713 aa 000037 600000 2-113 vfd 1/0,14/(lnflagbox/16-1),5/rewpu,15/0  2-114  003714 aa 000220 000004 2-115 seg6: vfd 24/origcom,9/0,o3/4  003715 aa 003377 600000 2-116 vfd 1/0,14/(lncom/16-1),5/rewpu,15/0  2-117  003716 aa 000000 000004 2-118 seg7: vfd 24/origmem,9/0,o3/4  003717 aa 377767 600000 2-119 vfd 1/0,14/(lnmem/16-1),5/rewpu,15/0  2-120  2-121  2-122 " EQU's for locations in the IOM mailbox used by BOS toehold.  2-123  000014 2-124 equ scwr,3*4 loc of refill for IOM scw  000002 2-125 equ statq,2 loc of status word  000000 2-126 equ pcw,0 loc of pcw  000001 2-127 equ cow,1 loc of cow  000011 2-128 equ lpwr,2*4+1 array of lpw refills  2-129  2-130  2-131 " EQU's for locations in setup used by BOS toehold. 2-132 " NOTE: toelen M_U_S_T_ be 0 mod 64 long because it must fit into  2-133 " an integral number of disk sectors.  2-134  001000 2-135 bool toelen,1000  031000 2-136 equ toesaved,origcom+lncom core saved by toehold  000200 2-137 equ swaplen,128 Size of the Bos toehold area which is  2-138 " swapped with the Multics toehold area.  000575 2-139 equ mbxloc,toelen-swaplen-3  000576 2-140 equ devid,toelen-swaplen-2 000577 2-141 equ ttychan,toelen-swaplen-1  001000 2-142 equ cowsav,toelen  001001 2-143 equ mbbasesav,toelen+1 001002 2-144 equ mxbasesav,toelen+2 001003 2-145 equ dirbase,toelen+3  2-146  2-147 " End of include file ...... bos_toequ.incl.alm 2-148  26  27 use mainc  28  29 join /text/mainc,toec  30  031000 31 equ program_base,origpgm  32  33  000100 34 bool fvloc,100 location of fault vector  35  000001 36 equ iom_cow,1 offset in mailbox of COW  37  38 " 39  000000 0a 001245 7420 00 40 stx2 boscom save X2 to indicate in BOS command  41  000001 aa 012300 7020 00 42 tsx2 initint init interrupts  000002 0a 000015 0000 00 43 arg execint  44  000003 aa 012271 7020 00 45 tsx2 init_io Setup iom mailbox.  000004 aa 012245 7020 00 46 tsx2 ttyinit  000005 0a 000015 0000 00 47 arg ttyrequest 48  000006 0a 001245 2220 00 49 ldx2 boscom if entered from bos  000007 0a 000022 6010 00 50 tnz bos_entry  51  000010 aa 6 02015 2351 00 52 lda com|tapechanno get tape channel and device 000011 aa 6 02015 4501 00 53 stz com|tapechanno clear out the word  000012 aa 6 02015 7511 70 54 stca com|tapechanno,70 replace channel number only 000013 0a 001473 7550 00 55 sta tapeno set up for reading rest of tape  56  000014 0a 000062 7100 00 57 tra boot_entry 58  59  60  000015 61 execint:  000015 62 ttyrequest: 000015 aa 000000 7100 12 63 tra 0,2 ignore interrupts 64  65  66  67  000016 aa 012041 7270 00 68 patch: lxl7 arg+1 simple patch procedure  000017 aa 012042 2350 00 69 lda arg+2 ..  000020 aa 000000 7550 17 70 sta 0,7 patch this program  000021 0a 000061 7100 00 71 tra cycle ..  72  73 " 74  000022 75 bos_entry:  000022 aa 7 00000 2351 12 76 lda mem|0,2 get addr of arglist  000023 aa 000020 7710 00 77 arl 18-2 get character offset in AL  000024 aa 0 00000 1005 05 78 mlr (pr,al),() copy the arglist  000025 aa 700000 000200 79 desc9a mem|0,2*(arglen+1)*4  000026 aa 012040 000200 80 desc9a arg,2*(arglen+1)*4  81  000027 aa 000001 3360 07 82 lcq 1,dl all ones in Q  000030 aa 012061 2350 00 83 lda darg+1 look at first arg  000031 0a 000034 6054 00 84 tpnz *+3 if not number, use default  000032 aa 000001 2350 07 85 lda 1,dl default is 1 000033 0a 000035 7100 00 86 tra *+2 ..  000034 aa 012041 7560 00 87 stq arg+1 remove this arg 000035 aa 000017 3750 07 88 ana =o17,dl  000036 aa 000014 7350 00 89 als 12 shift to position  000037 aa 6 02015 2751 00 90 ora com|tapechanno insert channel #  000040 0a 001473 7550 00 91 sta tapeno set up for reading tape  92  000041 aa 777000 1064 00 93 cmpc (),(),fill(777) any other args?  000042 0a 000042 000000 94 desc9a *,0 000043 aa 012041 000070 95 desc9a arg+1,(arglen-1)*4  000044 0a 000046 6000 00 96 tze *+2  000045 0a 001261 7500 00 97 stc2 selectsw other args - going to select segments  98  000046 aa 6 02000 2351 00 99 lda com|dir get orig of directory 000047 0a 001264 7550 00 100 sta dirorig  000050 aa 6 02002 2351 00 101 lda com|useable and first address not useable  000051 0a 001263 7550 00 102 sta bostop 103  000052 aa 100000 6350 00 104 eaa 32768 make buffer 000053 aa 012221 7020 00 105 tsx2 makesdw following this program  000054 0a 000564 7100 00 106 tra exit_loaddm_to_setup  000055 aa 0 00002 7571 00 107 staq ds|tmp*2 ..  000056 aa 000000 5320 00 108 cams  109  000057 0a 000107 4500 00 110 stz bos_boot indicate we are bos entry  000060 0a 000203 7100 00 111 tra rtape now read tape  112  113  000061 aa 012202 7020 00 114 cycle: tsx2 nextline read command from input stream  000062 115 boot_entry: 000062 0a 000074 6220 00 116 eax2 comtab look up command  000063 0a 000107 5540 00 117 stc1 bos_boot indicate we are boot entry  000064 aa 012040 2350 00 118 lda arg  000065 aa 012300 5202 02 119 rpt ncoms/2,2,tze  000066 aa 000000 1150 12 120 cmpa 0,2  000067 aa 777777 6000 32 121 tze -1,2* tra to command  122  000070 aa 012241 7020 00 123 tsx2 erpt  000071 aa 002 136 147 000 124 acc "^g"  000072 0a 003720 0000 00 125 arg =h!!????  126  000073 0a 000061 7100 00 127 tra cycle  128  129 " 130  000074 aa 202 066 215 144 131 comtab: bci " warm"  000075 0a 000110 7100 00 132 tra warm  000076 aa 202 023 464 324 133 bci " cold"  000077 0a 000156 7100 00 134 tra cold  000100 aa 454 321 222 543 135 bci "nlabel"  000101 0a 000156 7100 00 136 tra cold  000102 aa 434 621 242 444 137 bci "loaddm"  000103 0a 000061 7100 00 138 tra cycle  000104 aa 204 721 632 330 139 bci " patch"  000105 0a 000016 7100 00 140 tra patch  000012 141 equ ncoms,*-comtab length of command table 142  000106 aa 224 662 432 122 143 boslab: bci "boslab"  000107 aa 000000 000000 144 bos_boot: oct 0  145 " 146  000110 0a 001140 7020 00 147 warm: tsx2 getbase move arg info to seg 6  148  000111 aa 000006 6270 00 149 eax7 nsave-1 save some info from common  000112 0a 000140 2260 17 150 saveloop: ldx6 savelist,7 address in X6 000113 aa 6 00000 2351 16 151 lda com|0,6 grab item 000114 0a 000147 7550 17 152 sta savebuf,7 place in buffer 000115 aa 777777 6270 17 153 eax7 -1,7 bump index  000116 0a 000112 6050 00 154 tpl saveloop and loop until completed 155  000117 0a 001264 2350 00 156 lda dirorig read common  000120 aa 012234 7020 00 157 tsx2 rdsec 000121 aa 6 00000 0111 00 158 nop com|0  000122 0a 000565 7100 00 159 tra die  160  000123 aa 6 02000 2351 00 161 lda com|dir check if good same info read  000124 0a 001264 1150 00 162 cmpa dirorig  000125 0a 000665 6010 00 163 tnz badwarm  000126 aa 6 02002 2351 00 164 lda com|useable  000127 0a 001263 1150 00 165 cmpa bostop  000130 0a 000665 6010 00 166 tnz badwarm  167  000131 aa 000006 6270 00 168 eax7 nsave-1 restore info to common  000132 0a 000140 2260 17 169 restloop: ldx6 savelist,7 address in X6 000133 0a 000147 2350 17 170 lda savebuf,7 get item from buffer  000134 aa 6 00000 7551 16 171 sta com|0,6 restore item  000135 aa 777777 6270 17 172 eax7 -1,7 bump index  000136 0a 000132 6050 00 173 tpl restloop and loop until completed 174  000137 0a 000463 7100 00 175 tra end  176  177  000140 aa 002010 0000 00 178 savelist: arg iom_mxbase  000141 aa 002011 0000 00 179 arg iom_mbbase 000142 aa 002015 0000 00 180 arg tapechanno 000143 aa 002016 0000 00 181 arg rdrchanno  000144 aa 002017 0000 00 182 arg ttychanno  000145 aa 002021 0000 00 183 arg inputsw  000146 aa 002020 0000 00 184 arg quietsw  185  000007 186 equ nsave,*-savelist  187  188  000147 189 savebuf: bss ,nsave 190  191 "  000156 0a 001140 7020 00 192 cold: tsx2 getbase get base info from card 193  000157 0a 001264 2350 00 194 lda dirorig Save the disk location of bos common  000160 aa 6 02000 7551 00 195 sta com|dir in bos_common.  000161 0a 003721 3750 00 196 ana =o777777770000 Mask out sector length. 000162 aa 6 02001 7551 00 197 sta com|used Indicate where the next available sector is.  198  000163 0a 001263 2350 00 199 lda bostop Save the sector no. which indicates the end of 000164 aa 6 02002 7551 00 200 sta com|useable the bos disk space in bos common.  201  202 " Reserve space for BOS common on the BOS disk. 203  000165 aa 000070 2350 07 204 lda (econf+63)/64,dl Indicate the size of bos common.  000166 aa 012207 7020 00 205 tsx2 getsec Call the disk space allocator.  000167 0a 000702 7100 00 206 tra dir_err Error return if out of disk space.  207  000170 0a 001264 1150 00 208 cmpa dirorig Was the space allocated at the first sector  209 " useable by bos?  000171 0a 000702 6010 00 210 tnz dir_err If not, die now.  211  212 " Reserve space for the Multics core image on the BOS disk. 213  000172 aa 000600 2350 07 214 lda coresaved/64,dl Indicate the amount of space needed.  000173 aa 012207 7020 00 215 tsx2 getsec Call the space allocator. 000174 0a 000565 7100 00 216 tra die This is executed if out of disk space.  000175 aa 6 02003 7551 00 217 sta com|corearea Save the sector no. of the space allocated.  218  219 " Reserve space for setup on the BOS disk.  220  000176 aa 000100 2350 07 221 lda lnsetup/64,dl Indicate the size of setup.  000177 aa 012207 7020 00 222 tsx2 getsec Call the space allocator. 000200 0a 000565 7100 00 223 tra die This is executed if out of disk space.  000201 aa 6 02004 7551 00 224 sta com|setuparea Save the sector no. of the space allocated.  225  000202 0a 000203 7100 00 226 tra rtape  227  228  229 "  000203 230 rtape:  000203 aa 012256 2350 00 231 lda asgetab get address of table  000204 0a 000315 7550 00 232 sta rtmvt1 and set for MVT instructions  000205 0a 000454 7550 00 233 sta rtmvt2 .. 234  000206 0a 001465 4500 00 235 stz recno reset record number 000207 aa 002000 6210 00 236 eax1 tbufl reset buffer indices  000210 0a 001467 7410 00 237 stx1 tbufi 000211 0a 001466 7410 00 238 stx1 tbufd 239  000212 aa 000001 3350 07 240 lca 1,dl set line mark for runcom files  000213 aa 012000 7550 00 241 sta pagectl ..  242  000214 aa 012277 7020 00 243 tsx2 xio_wait rewind tape 000215 aa 000000 000000 244 zero  000216 0a 001473 000070 245 zero tapeno,56 000217 0a 000214 7100 00 246 tra *-3  247  000220 aa 012237 7020 00 248 tsx2 itaper initialize tape for reading  000221 0a 001473 0000 00 249 arg tapeno 000222 0a 000107 2340 00 250 szn bos_boot entered from BOS?  000223 0a 000246 6000 00 251 tze rtloop xfer if yes  252  000224 aa 012277 7020 00 253 tsx2 xio_wait No, boot entry, rewind tape 000225 aa 000000 000000 254 zero  000226 0a 001473 000070 255 zero tapeno,56 000227 0a 000224 7100 00 256 tra *-3  257  000230 aa 012277 7020 00 258 tsx2 xio_wait read in label record  000231 0a 001510 202000 259 vfd 18/thdr,12/tbufl+16,6/0  000232 0a 001473 000005 260 zero tapeno,5  000233 0a 000230 7100 00 261 tra *-3  262  000234 aa 010100 2350 07 263 lda (tbufl+16)*4,dl length to move in AL  000235 aa 000140 1004 40 264 mlr (rl),(pr,rl) copy the data into disk buffer  000236 0a 001510 000005 265 desc9a thdr,al 000237 aa 100000 000005 266 desc9a tmp|0,al  267  000240 0a 001254 4500 00 268 stz dirflag clear dir entry flag bits 000241 0a 000106 2350 00 269 lda boslab load label file name  000242 0a 001253 7550 00 270 sta name  000243 aa 002020 2350 07 271 lda tbufl+16,dl load label file length 000244 0a 001252 7550 00 272 sta length 000245 0a 000344 7100 00 273 tra wdisk and go write label record  274 " 275  000246 276 rtloop: 000246 0a 001275 7020 00 277 tsx2 readtape read it 278  000247 0a 001464 2350 00 279 lda kind check log record kind  000250 aa 777777 3750 03 280 ana =-1,du 000251 0a 000377 6010 00 281 tnz endtape if error, quit  282  000252 0a 001255 4500 00 283 stz asciisw clear ASCII switch  000253 0a 001254 4500 00 284 stz dirflag clear directory entry flag bits  000254 aa 000000 6270 00 285 eax7 0 name offset will be zero unless "fw."  286  000255 0a 000422 7020 00 287 tsx2 suffixt test for ".ascii" suffix 000256 0a 001256 000006 288 desc9a .ascii,6  000257 0a 000264 7100 00 289 tra setascii  290  000260 0a 000422 7020 00 291 tsx2 suffixt test for ".bcd" suffix  000261 0a 001260 000004 292 desc9a .bcd,4  000262 0a 000274 7100 00 293 tra setbcd 000263 0a 000277 7100 00 294 tra not_ascii neither BCD nor ASCII  295  296  000264 0a 001255 7500 00 297 setascii: stc2 asciisw set switch  000265 0a 001246 7550 00 298 sta temp save length temporarily  299  000266 aa 1 00003 2361 00 300 ldq tmp|slte.bit_count_word get bit count 000267 0a 003722 3760 00 301 anq =o777777777 mask  000270 aa 000011 5060 07 302 div 9,dl compute character count  000271 0a 001251 7560 00 303 stq offlen+1 and save 304  000272 0a 001246 2350 00 305 lda temp length of name in A  000273 0a 000307 7100 00 306 tra getnam go get name and load segment  307  000274 aa 004000 2360 07 308 setbcd: ldq =o4000,dl get flags for runcom file  000275 0a 001254 7560 00 309 stq dirflag and save  000276 0a 000307 7100 00 310 tra getnam and process segment  311  312  000277 aa 0 00000 1065 00 313 not_ascii:cmpc (pr),() check for "fw." 000300 aa 100006 000003 314 desc9a tmp|slte_size+2,3  000301 0a 001262 000003 315 desc9a fw.,3  000302 0a 000306 6010 00 316 tnz getlen if not "fw." prefix, use entire name  317  000303 aa 000012 6270 00 318 eax7 10 use last component of name  000304 aa 002000 2360 07 319 ldq =o2000,dl get flag for firmware file  000305 0a 001254 7560 00 320 stq dirflag and save  321  000306 aa 1 00005 2351 00 322 getlen: lda tmp|slte_size+1 get length of name  323  000307 aa 000006 1150 07 324 getnam: cmpa 6,dl more than 6 chars in name?  000310 0a 000312 6044 00 325 tmoz *+2 can have only 6  000311 aa 000006 2350 07 326 lda 6,dl ..  327  000312 aa 0 40000 1605 57 328 mvt (pr,rl,x7),(),fill(040) copy name and translate to BCD  000313 aa 100006 000005 329 desc9a tmp|slte_size+2,al  000314 0a 001253 020006 330 desc6a name,6  000315 0a 000315 0000 00 331 rtmvt1: arg *  332  000316 0a 001253 2350 00 333 lda name pick up name 000317 aa 012260 7020 00 334 tsx2 rjust right-justify  000320 0a 001253 7550 00 335 sta name and save 336  337 " 338  000321 0a 001275 7020 00 339 tsx2 readtape read text of segment  340  000322 0a 001464 2350 00 341 lda kind and check kind  000323 aa 777777 3750 03 342 ana =-1,du 000324 aa 000001 1150 03 343 cmpa =1,du 000325 0a 000377 6010 00 344 tnz endtape  345  000326 0a 001464 7270 00 346 lxl7 kind get length  000327 0a 000246 6000 00 347 tze rtloop 000330 0a 001252 4470 00 348 sxl7 length  349  000331 0a 001261 2340 00 350 szn selectsw selecting segments?  000332 0a 000342 6000 00 351 tze loadit if not, just load it  000333 0a 001253 2350 00 352 lda name get name 000334 aa 000001 6270 00 353 eax7 1 search list  000335 aa 034300 5202 01 354 rpt arglen-1,1,tze 000336 aa 012040 1150 17 355 cmpa arg,7 000337 0a 000246 6064 00 356 ttn rtloop if not correct, ignore segment 357  000340 aa 000001 3360 07 358 lcq 1,dl clear out name  000341 aa 777777 7560 17 359 stq -1,7 ..  360  000342 0a 001255 2340 00 361 loadit: szn asciisw ASCII segment? 000343 0a 000367 6010 00 362 tnz load_ascii if so, go load it  363  364 " 365 " Create entry in BOS command directory.  366 " The format of each entry is:  367 "  368 " bss name,1 First six characters of name of command in bcd.  369 " vfd 24/sector,3/runcom_switch,9/no_64_word_blocks 370 " Disk location and length of command.  000344 371 wdisk: 000344 0a 001253 2350 00 372 lda name get command name 000345 0a 001252 2360 00 373 ldq length get length in words  000346 aa 000077 0760 07 374 adq 63,dl compute number of sectors needed  000347 aa 000006 7720 00 375 qrl 6 ..  000350 aa 012205 7020 00 376 tsx2 makefil make a directory entry for command  000351 0a 000565 7100 00 377 tra die ..  378  000352 0a 001254 2360 00 379 ldq dirflag get directory entry flags 000353 aa 6 00001 2561 17 380 orsq com|1,7 and place in directory entry 381  000354 0a 001253 2360 00 382 ldq name get name again  000355 0a 003723 1160 00 383 cmpq =h setup is it setup?  000356 0a 000360 6010 00 384 tnz *+2 ..  000357 aa 6 02004 7551 00 385 sta com|setuparea if so, save disk address of setup  386  000360 0a 003724 1160 00 387 cmpq =h util is it utility package?  000361 0a 000363 6010 00 388 tnz *+2 ..  000362 aa 6 02005 7551 00 389 sta com|utilarea if so, save disk address of utility package  390  391 " Write the text of the command onto the BOS disk.  392  000363 aa 012235 7020 00 393 tsx2 wtsec 000364 aa 1 00000 0111 00 394 nop tmp|0 Indicate to the i/o routine the place to write from.  000365 0a 000565 7100 00 395 tra die  396  000366 0a 000246 7100 00 397 tra rtloop read next segment  398  399  000367 400 load_ascii: 000367 0a 001250 4500 00 401 stz offlen clear offset  402  000370 0a 003563 7020 00 403 tsx2 make_runcom_file build runcom file  000371 0a 000442 7100 00 404 tra get_ascii_line a line at a time  000372 0a 000246 7100 00 405 tra rtloop 406  000373 0a 001253 2350 00 407 lda name store completed file 000374 0a 003620 7020 00 408 tsx2 store_runcom_file ..  000375 0a 000565 7100 00 409 tra die  000376 0a 000246 7100 00 410 tra rtloop go process next segment  411  412 " 413  000377 aa 012277 7020 00 414 endtape: tsx2 xio_wait if end of tape, rewind  000400 aa 000000 000000 415 zero  000401 0a 001473 000070 416 zero tapeno,56 000402 0a 000377 7100 00 417 tra endtape  418  000403 0a 001261 2340 00 419 szn selectsw were we selecting segments?  000404 0a 000463 6000 00 420 tze end if not, all finished  421  000405 aa 000016 6200 00 422 eax0 arglen-1 see if any not loaded  000406 aa 000001 3360 07 423 ststl: lcq 1,dl .. 000407 aa 012040 1160 10 424 cmpq arg,0 .. 000410 0a 000417 6000 00 425 tze ststn ..  426  000411 aa 012241 7020 00 427 tsx2 erpt announce failure  000412 aa 016 136 147 040 428 acc "^g not loaded."  000413 aa 156 157 164 040 000414 aa 154 157 141 144 000415 aa 145 144 056 000 000416 aa 012040 0000 10 429 arg arg,0  430  000417 aa 777777 6200 10 431 ststn: eax0 -1,0 loop  000420 0a 000406 6054 00 432 tpnz ststl .. 433  000421 0a 000463 7100 00 434 tra end  435  436 " 437  000422 438 suffixt:  000422 aa 000000 2350 07 439 lda 0,dl start with zero offset  000423 aa 1 00005 2361 00 440 ldq tmp|slte_size+1 get length of name 000424 aa 0 00020 1205 45 441 scaname: scd (pr,rl,al),(id) search for suffix  000425 aa 100006 000006 442 desc9a tmp|slte_size+2,ql  000426 aa 000000 0000 12 443 arg 0,2  000427 0a 001246 0000 00 444 arg temp  445  000430 0a 001246 0750 00 446 ada temp add to offset  000431 0a 001246 1760 00 447 sbq temp subtract from length 000432 aa 000002 6064 12 448 ttn 2,2 tra if not found  449  000433 aa 040145 1064 20 450 cmpc (id),(pr,rl,al),fill(040) make sure it's desired suffix  000434 aa 000000 0000 12 451 arg 0,2  000435 aa 100006 000006 452 desc9a tmp|slte_size+2,ql  000436 aa 000001 6000 12 453 tze 1,2 tra if found  454  000437 aa 000001 0750 07 455 ada 1,dl bump offset one more 000440 aa 000001 1760 07 456 sbq 1,dl and decrement length 000441 0a 000424 7100 00 457 tra scaname go back and search some more  458  459  460  000442 461 get_ascii_line: 000442 0a 001250 2370 00 462 ldaq offlen offset in A, length in Q  000443 aa 0 00003 1245 45 463 scm (pr,rl,al),(du) look for NL  000444 aa 100000 000006 464 desc9a tmp|0,ql  465 aci "  000445 aa 012 000 000 000 466 "  000446 0a 001246 0000 00 467 arg temp  000447 aa 000000 6064 12 468 ttn 0,2 if no more NL's, take EOF return  469  000450 0a 001246 7270 00 470 lxl7 temp get count of chars skipped over 000451 aa 0 40000 1605 45 471 mvt (pr,rl,al),(),fill(040) copy and translate  000452 aa 100000 000017 472 desc9a tmp|0,x7  000453 aa 012001 020124 473 desc6a line,84 000454 0a 000454 0000 00 474 rtmvt2: arg *  475  000455 0a 001246 0750 00 476 ada temp bump offset  000456 aa 000001 0750 07 477 ada 1,dl include NL  000457 0a 001246 1760 00 478 sbq temp decrement remaining length  000460 aa 000001 1760 07 479 sbq 1,dl ..  000461 0a 001250 7570 00 480 staq offlen save offset and length  481  000462 aa 000001 7100 12 482 tra 1,2 return to caller  483  484 " 485  000463 aa 6 02011 2271 00 486 end: ldx7 com|iom_mbbase check for correctness  000464 aa 001400 1070 03 487 cmpx7 imbx,du  000465 0a 000720 6010 00 488 tnz mbxerr 489  000466 aa 6 02010 2271 00 490 ldx7 com|iom_mxbase check interrupt base, too  000467 aa 001200 1070 03 491 cmpx7 imbx-128,du  000470 0a 000720 6010 00 492 tnz mbxerr 493  000471 aa 000002 2310 00 494 rsw 2 while we're at it, check fault base 000472 aa 007740 3750 03 495 ana =o7740,du mask the fault base 000473 aa 000100 1150 03 496 cmpa fvloc,du is it correct?  000474 0a 000733 6010 00 497 tnz fverr  498  000475 aa 6 02005 2341 00 499 szn com|utilarea check for existence of utility package  000476 0a 000773 6000 00 500 tze noutil 501  000477 aa 6 02004 2351 00 502 lda com|setuparea load in toehold  000500 0a 000761 6000 00 503 tze nosetup  000501 aa 012234 7020 00 504 tsx2 rdsec 000502 aa 7 10000 0111 00 505 nop mem|origsetup  000503 0a 000565 7100 00 506 tra die  507  508 " Initialize data in kprog, which will reside in the BOS IOM mailbox area.  509 " See also the comments preceding kprog, below. Also put miscellaneous data 510 " into the toehold program, since it can not always use the contents of BOS common. 511  000504 aa 6 02012 2361 00 512 ldq com|bos_dvt Get device ID of BOS disk  000505 aa 7 10576 7561 00 513 stq mem|origsetup+devid Save in the BOS toehold  514  000506 aa 000777 3760 03 515 anq =o777,du Isolate devide no  000507 aa 000006 7360 00 516 qls 6 Position device no  000510 0a 001100 7520 20 517 stcq kprog+pcw,20 Insert device # in PCW.  518  000511 0a 001116 7520 20 519 stcq kprog+ksin,20 Insert device no. in each IDCW. 000512 0a 001120 7520 20 520 stcq kprog+ksin+2,20  000513 0a 001123 7520 20 521 stcq kprog+kcout,20  000514 0a 001125 7520 20 522 stcq kprog+kcout+2,20  000515 0a 001127 7520 20 523 stcq kprog+kcin,20 000516 0a 001131 7520 20 524 stcq kprog+kcin+2,20  525  526 " Put the sector addr. of the area on the BOS disk reserved for 527 " the Multics core image into the apropos seek data word.  528  000517 aa 6 02003 2361 00 529 ldq com|corearea Get sector addr. of Multics core image.  000520 aa 000014 7720 00 530 qrl 12 right-justify sector addr. 000521 0a 001122 7560 00 531 stq kcout+kprog-1 Set seek address.  532  533 " Also, fill in the seek data word which should point to setup. 534  000522 aa 6 02004 2361 00 535 ldq com|setuparea Add toehold length to setup's starting addr. 000523 aa 000014 7720 00 536 qrl 12 so that toehold will not be clobbered when 000524 aa 000010 0760 07 537 adq toelen/64,dl setup is brought into memory. 000525 0a 001115 7560 00 538 stq ksin+kprog-1  539  000526 aa 6 02012 2351 00 540 lda com|bos_dvt Get channel number 000527 aa 077000 3750 03 541 ana =o77000,du ..  000530 aa 040000 1150 03 542 cmpa =o40000,du Is channel no. too large? (>40)  000531 0a 000747 6050 00 543 tpl cherr Yes, gripe. 000532 0a 001101 7550 00 544 sta pcw+kprog+1 Put it in kprog's PCW. 545  000533 aa 6 02017 2351 00 546 lda com|ttychanno save tty channel #  000534 aa 7 10577 7551 00 547 sta mem|origsetup+ttychan  548  000535 aa 7 01401 2351 00 549 lda mem|imbx+1 Fill in kprog's COW without clobbering  000536 0a 001101 7510 01 550 stca cow+kprog,01 the PCW's channel no. which is in the same word. 551  000537 aa 001400 6270 00 552 eax7 imbx Save the location of the IOM mailbox in the toehold.  000540 aa 7 10575 7471 00 553 stx7 mem|origsetup+mbxloc  554  555 " Modify the label of the BOS volume.  556 "  557 " lda =v24/label.bos_sector/64,12/1 558 " tsx2 rdsec read in the BOS volume label  559 " nop tmp|0 560 " tra die  561 "  562 " lda com|setuparea get sector address of setup 563 " arl 12 make a seek address  564 " sta tmp|label.bos_sector-label.bos_sector/64*64  565 "  566 " lda com|setuparea get length of setup 567 " ana =o7777,dl .. 568 " als 6 .. 569 " ora origsetup,du make IOTD DCW  570 " sta tmp|label.bos_iotd-label.bos_iotd/64*64  571 "  572 " lda =v24/label.bos_sector/64,12/1 573 " tsx2 wtsec write back the volume label  574 " nop tmp|0 575 " tra die  576  577 " Move the toehold data into setup. 578  000541 aa 000100 1004 00 579 mlr (),(pr) copy the toehold data 000542 0a 001100 001000 580 desc9a kprog,swaplen*4 000543 aa 710600 001000 581 desc9a mem|origsetup+toelen-swaplen,swaplen*4  582  000544 aa 6 02000 2351 00 583 lda com|dir make word to read dir 000545 aa 7 11003 7551 00 584 sta mem|origsetup+dirbase  585  000546 aa 6 02011 2351 00 586 lda com|iom_mbbase set mailbox base  000547 aa 7 11001 7551 00 587 sta mem|origsetup+mbbasesav  000550 aa 7 00001 2351 01 588 lda mem|iom_cow,au set cow for setup  000551 aa 7 11000 7551 00 589 sta mem|origsetup+cowsav  000552 aa 6 02010 2351 00 590 lda com|iom_mxbase set interrupt base  000553 aa 7 11002 7551 00 591 sta mem|origsetup+mxbasesav  592  000554 aa 6 02004 2351 00 593 lda com|setuparea  000555 aa 012235 7020 00 594 tsx2 wtsec 000556 aa 7 10000 0111 00 595 nop mem|origsetup  000557 0a 000565 7100 00 596 tra die  597  000560 0a 001264 2350 00 598 lda dirorig rewrite dir  000561 aa 012235 7020 00 599 tsx2 wtsec 000562 aa 6 00000 0111 00 600 nop com|0  000563 0a 000565 7100 00 601 tra die  602  000564 603 exit_loaddm_to_setup:  000564 aa 7 10006 7101 00 604 tra mem|origsetup+6 enter setup  605  606  607 " 608  000565 0a 000061 7100 00 609 die: tra cycle  610  000566 aa 012241 7020 00 611 bad_dmodel:tsx2 erpt Indicate invalid card.  000567 aa 073 111 156 166 612 acc "Invalid disk model specified on warm, cold, or nlabel card."  000570 aa 141 154 151 144 000571 aa 040 144 151 163 000572 aa 153 040 155 157 000573 aa 144 145 154 040 000574 aa 163 160 145 143 000575 aa 151 146 151 145 000576 aa 144 040 157 156 000577 aa 040 167 141 162 000600 aa 155 054 040 143 000601 aa 157 154 144 054 000602 aa 040 157 162 040 000603 aa 156 154 141 142 000604 aa 145 154 040 143 000605 aa 141 162 144 056 000606 0a 000061 7100 00 613 tra cycle  614  000607 615 bad_daddr:  000607 aa 012241 7020 00 616 tsx2 erpt  000610 aa 046 102 141 144 617 acc "Bad disk address on cold or warm card."  000611 aa 040 144 151 163 000612 aa 153 040 141 144 000613 aa 144 162 145 163 000614 aa 163 040 157 156 000615 aa 040 143 157 154 000616 aa 144 040 157 162 000617 aa 040 167 141 162 000620 aa 155 040 143 141 000621 aa 162 144 056 000 000622 0a 000061 7100 00 618 tra cycle  619  000623 aa 012241 7020 00 620 label_err:tsx2 erpt 000624 aa 031 103 141 156 621 acc "Cannot read volume label."  000625 aa 156 157 164 040 000626 aa 162 145 141 144 000627 aa 040 166 157 154 000630 aa 165 155 145 040 000631 aa 154 141 142 145 000632 aa 154 056 000 000 000633 0a 000061 7100 00 622 tra cycle  623  000634 aa 012241 7020 00 624 bad_label:tsx2 erpt 000635 aa 045 126 157 154 625 acc "Volume does not have a Multics label."  000636 aa 165 155 145 040 000637 aa 144 157 145 163 000640 aa 040 156 157 164 000641 aa 040 150 141 166 000642 aa 145 040 141 040 000643 aa 115 165 154 164 000644 aa 151 143 163 040 000645 aa 154 141 142 145 000646 aa 154 056 000 000 000647 0a 000061 7100 00 626 tra cycle  627  000650 aa 012241 7020 00 628 part_err: tsx2 erpt 000651 aa 052 102 117 123 629 acc "BOS partition not defined in volume label."  000652 aa 040 160 141 162 000653 aa 164 151 164 151 000654 aa 157 156 040 156 000655 aa 157 164 040 144 000656 aa 145 146 151 156 000657 aa 145 144 040 151 000660 aa 156 040 166 157 000661 aa 154 165 155 145 000662 aa 040 154 141 142 000663 aa 145 154 056 000 000664 0a 000061 7100 00 630 tra cycle  631  000665 aa 012241 7020 00 632 badwarm: tsx2 erpt  000666 aa 053 102 117 123 633 acc "BOS not loaded or bad partition definition."  000667 aa 040 156 157 164 000670 aa 040 154 157 141 000671 aa 144 145 144 040 000672 aa 157 162 040 142 000673 aa 141 144 040 160 000674 aa 141 162 164 151 000675 aa 164 151 157 156 000676 aa 040 144 145 146 000677 aa 151 156 151 164 000700 aa 151 157 156 056 000701 0a 000061 7100 00 634 tra cycle  635  000702 aa 012241 7020 00 636 dir_err: tsx2 erpt Request more space in the first cyl.  000703 aa 056 103 157 165 637 acc "Could not fit BOS directory in first cylinder."  000704 aa 154 144 040 156 000705 aa 157 164 040 146 000706 aa 151 164 040 102 000707 aa 117 123 040 144 000710 aa 151 162 145 143 000711 aa 164 157 162 171 000712 aa 040 151 156 040 000713 aa 146 151 162 163 000714 aa 164 040 143 171 000715 aa 154 151 156 144 000716 aa 145 162 056 000 000717 0a 000061 7100 00 638 tra cycle  639  000720 aa 012241 7020 00 640 mbxerr: tsx2 erpt  000721 aa 036 111 117 115 641 acc "IOM mailbox base is incorrect."  000722 aa 040 155 141 151 000723 aa 154 142 157 170 000724 aa 040 142 141 163 000725 aa 145 040 151 163 000726 aa 040 151 156 143 000727 aa 157 162 162 145 000730 aa 143 164 056 000 000731 0a 000731 6160 00 642 dis *  000732 aa 777777 7100 04 643 tra -1,ic  644  000733 aa 012241 7020 00 645 fverr: tsx2 erpt  000734 aa 042 120 162 157 646 acc "Processor fault base is incorrect."  000735 aa 143 145 163 163 000736 aa 157 162 040 146 000737 aa 141 165 154 164 000740 aa 040 142 141 163 000741 aa 145 040 151 163 000742 aa 040 151 156 143 000743 aa 157 162 162 145 000744 aa 143 164 056 000 000745 0a 000745 6160 00 647 dis *  000746 aa 777777 7100 04 648 tra -1,ic  649  000747 aa 012241 7020 00 650 cherr: tsx2 erpt must use channel < 40 because of IOM mailbox  000750 aa 031 104 151 163 651 acc "Disk channel must be < 40"  000751 aa 153 040 143 150 000752 aa 141 156 156 145 000753 aa 154 040 155 165 000754 aa 163 164 040 142 000755 aa 145 040 074 040 000756 aa 064 060 000 000 000757 0a 000757 6160 00 652 dis *  000760 aa 777777 7100 04 653 tra -1,ic  654  000761 aa 012241 7020 00 655 nosetup: tsx2 erpt  000762 aa 033 123 105 124 656 acc "SETUP not loaded from tape."  000763 aa 125 120 040 156 000764 aa 157 164 040 154 000765 aa 157 141 144 145 000766 aa 144 040 146 162 000767 aa 157 155 040 164 000770 aa 141 160 145 056 000771 0a 000771 6160 00 657 dis *  000772 aa 777777 7100 04 658 tra -1,ic  659  000773 aa 012241 7020 00 660 noutil: tsx2 erpt  000774 aa 045 125 164 151 661 acc "Utility package not loaded from tape."  000775 aa 154 151 164 171 000776 aa 040 160 141 143 000777 aa 153 141 147 145 001000 aa 040 156 157 164 001001 aa 040 154 157 141 001002 aa 144 145 144 040 001003 aa 146 162 157 155 001004 aa 040 164 141 160 001005 aa 145 056 000 000 001006 0a 001006 6160 00 662 dis *  001007 aa 777777 7100 04 663 tra -1,ic  664  665 " 666  667  001010 aa 000000 0110 03 668 mod 64 001011 aa 000000 0110 03 001012 aa 000000 0110 03 001013 aa 000000 0110 03 001014 aa 000000 0110 03 001015 aa 000000 0110 03 001016 aa 000000 0110 03 001017 aa 000000 0110 03 001020 aa 000000 0110 03 001021 aa 000000 0110 03 001022 aa 000000 0110 03 001023 aa 000000 0110 03 001024 aa 000000 0110 03 001025 aa 000000 0110 03 001026 aa 000000 0110 03 001027 aa 000000 0110 03 001030 aa 000000 0110 03 001031 aa 000000 0110 03 001032 aa 000000 0110 03 001033 aa 000000 0110 03 001034 aa 000000 0110 03 001035 aa 000000 0110 03 001036 aa 000000 0110 03 001037 aa 000000 0110 03 001040 aa 000000 0110 03 001041 aa 000000 0110 03 001042 aa 000000 0110 03 001043 aa 000000 0110 03 001044 aa 000000 0110 03 001045 aa 000000 0110 03 001046 aa 000000 0110 03 001047 aa 000000 0110 03 001050 aa 000000 0110 03 001051 aa 000000 0110 03 001052 aa 000000 0110 03 001053 aa 000000 0110 03 001054 aa 000000 0110 03 001055 aa 000000 0110 03 001056 aa 000000 0110 03 001057 aa 000000 0110 03 001060 aa 000000 0110 03 001061 aa 000000 0110 03 001062 aa 000000 0110 03 001063 aa 000000 0110 03 001064 aa 000000 0110 03 001065 aa 000000 0110 03 001066 aa 000000 0110 03 001067 aa 000000 0110 03 001070 aa 000000 0110 03 001071 aa 000000 0110 03 001072 aa 000000 0110 03 001073 aa 000000 0110 03 001074 aa 000000 0110 03 001075 aa 000000 0110 03 001076 aa 000000 0110 03 001077 aa 000000 0110 03 669  670  671 " 672 " The BOS toehold disk I/O program. 673 "  674 " This area contains all IOM control words necessary for  675 " the following functions:  676 " 1. saving Multics memory on the disk. 677 " 2. restoring Multics memory from disk.  678 " 3. loading setup (BOS main control) into core.  679 "  680 " When I/O is to be performed, the BOS toehold program swaps the data below 681 " with the Multics IOM mailbox core image and connects to the appropriate  682 " DCW list. 683 "  684 " N.B.: 685 " The data below must fit into the first 40(8) words of the IOM mailbox.  686 "  687 " N.B.: 688 " The offsets of certain words in the data below are defined in 689 " bos_toequ.incl.alm. They may require redefinition if the data  690 " below is modified.  691 "  692  693  001100 694 kprog:  001100 aa 000000 720201 695 vfd o6/0,6/0,6/0,o3/7,o3/2,6/2,6/1 PCW Word A 001101 aa 000000 000000 696 oct 0 PCW Word B and COW 001102 aa 000000 000000 697 oct 0,0 Status words.  001103 aa 000000 000000 698  001104 aa 001405 040000 699 vfd 18/*+1-kprog+imbx,o6/04,12/0 fault channel lpw 001105 aa 001406 010001 700 vfd 18/*+1-kprog+imbx,3/0,o3/1,12/1 fault channel dcw refill  001106 aa 000000 000000 701 oct 0 system fault word  001107 aa 001406 010001 702 vfd 18/*-1-kprog+imbx,3/0,o3/1,12/1 fault channel dcw  703  001110 aa 001400 040000 704 vfd 18/pcw+imbx,6/4,12/0 Connect channel LPW.  001111 aa 001423 000000 705 vfd 18/kcout+imbx,o6/0,12/0 LPW refill to write core  001112 aa 001416 000000 706 vfd 18/ksin+imbx,o6/0,12/0 LPW to read setup  001113 aa 001427 000000 707 vfd 18/kcin+imbx,o6/0,12/0 LPW to read core  708  001114 aa 001402 000000 709 vfd 18/statq+imbx,6/0,12/0 Refill SCW.  710  711 " DCW list for reading setup into memory.  001115 aa 377700 000000 712 vfd o12/3777,6/0,18/0 Seek data word, which points to setup on the bos disk.  713  000016 714 equ ksin,*-kprog  001116 aa 340000 720000 715 vfd o6/34,6/0,6/0,3/7,3/2,6/0,6/0 Seek IDCW.  001117 aa 001415 000001 716 vfd 18/ksin-1+imbx,3/0,o3/0,12/1 Seek data DCW (IOTD). 001120 aa 250000 700000 717 vfd o6/25,6/0,6/0,o3/7,o3/0,o6/0,6/0 Read IDCW.  001121 aa 011000 007000 718 vfd o18/origsetup+toelen,3/0,o3/0,12/lnsetup-toelen  719 " Data DCW (IOTD).  720  721 " DCW list for writing Multics memory onto the bos disk.  001122 aa 377700 000000 722 vfd o12/3777,6/0,18/0 Seek data word for transmitting Multics core.  723  000023 724 equ kcout,*-kprog  001123 aa 340000 720000 725 vfd o6/34,6/0,6/0,3/7,3/2,6/0,6/0 Seek IDCW.  001124 aa 001422 000001 726 vfd 18/kcout-1+imbx,3/0,o3/0,12/1 Seek data DCW (IOTD).  001125 aa 310000 700000 727 vfd o6/31,6/0,6/0,o3/7,o3/0,o6/0,6/0 Write IDCW.  001126 aa 001432 020000 728 vfd 18/kcxfer+imbx,3/0,o3/2,12/0 Transfer DCW to branch into read list.  729  730 " DCW list for reading Multics memory from the bos disk.  731  000027 732 equ kcin,*-kprog  001127 aa 340000 720000 733 vfd o6/34,6/0,6/0,3/7,3/2,6/0,6/0 Seek IDCW.  001130 aa 001422 000001 734 vfd 18/kcout+imbx-1,3/0,o3/0,12/1 Seek data DCW (IOTD).  001131 aa 250000 700000 735 vfd o6/25,6/0,6/0,o3/7,o3/0,o6/0,6/0 Read IDCW.  736  737 " Part of list which is common to both the read and write lists.  738  000032 739 equ kcxfer,*-kprog 001132 aa 000000 011400 740 vfd 18/0,3/0,o3/1,12/imbx Data DCW (IOTP) to transmit up to  741 " the beginning of the IOM mailbox.  001133 aa 010600 010200 742 vfd 18/origsetup+toelen-swaplen,3/0,o3/1,12/swaplen Data DCW (IOTP) to transmit  743 " the Multics IOM mailbox.  001134 aa 001600 016200 744 vfd 18/imbx+swaplen,3/0,o3/1,12/origsetup-imbx-swaplen Data DCW (IOTP) to 745 " transmit from the end of the IOM mailbox area  746 " to the BOS toehold.  001135 aa 010000 031000 747 vfd 18/origsetup,3/0,o3/3,12/toelen Data DCW (IONTP) to skip the BOS toehold.  001136 aa 011000 010000 748 vfd 18/origsetup+toelen,3/0,o3/1,12/maxw Data DCW (IOTP) to transmit the  749 " maximum amount of words after the bos toehold. 001137 aa 021000 000000 750 vfd 18/origsetup+toelen+maxw,3/0,o3/0,12/toesaved-origsetup-toelen-maxw  751 " Data DCW (IOTD) to transmit the rest of Multics  752 " memory which is to be transmitted. 753 "  754 " Gather information from COLD or WARM card.  755 "  756 " The format of a COLD or WARM card is as follows:  757 " COLD devname iom+chn unit first_rec num_rec  758 "  759 " Where:  760 " devname = name of disk device 761 " iom+chn = 64*IOM number plus channel number (iom 0 only, now)  762 " unit = unit number for disk unit 763 " first_rec = first 1024-wd record number used by BOS  764 " num_rec = number of records in BOS partition  765 "  766  001140 767 getbase:  001140 0a 001175 7420 00 768 stx2 getbase.xit Save  001141 aa 6 02012 4501 00 769 stz com|bos_dvt This is a "device type word"  770 " in the format (vfd 3/iom,6/chn,9/devno,18/devtype) 771  772 " Process first argument: disk model number 773  001142 aa 012041 2350 00 774 lda arg+1 Get disk model from card.  001143 aa 012220 7020 00 775 tsx2 lookup_devmodel Get device type from model.  001144 0a 000566 7100 00 776 tra bad_dmodel Illegal model. Die.  001145 aa 6 02012 7551 00 777 sta com|bos_dvt Save the device ID of the Bos disk.  778  779 " Process second argument: channel number + 64*iom  780  001146 aa 012042 2350 00 781 lda arg+2 This is channel number, plus 64*iom 001147 aa 000077 3750 07 782 ana =o77,dl .. but right now we fail for all but iom 0  001150 aa 000033 7350 00 783 als 18+9 .. position  001151 aa 6 02012 2551 00 784 orsa com|bos_dvt .. and insert channel and iom 785  786 " Process third argument: disk drive number 787  001152 aa 012063 2350 00 788 lda darg+3 Get drive number in decimal  001153 aa 000777 3750 07 789 ana =o777,dl .. could die if too big instead  001154 aa 000022 7350 00 790 als 18 .. position  001155 aa 6 02012 2551 00 791 orsa com|bos_dvt .. insert device number  792  793 " If not NLABEL card, get BOS partition limits from volume label.  794  001156 aa 012040 2350 00 795 lda arg Get card name.  001157 0a 003725 1150 00 796 cmpa =hnlabel NLABEL card?  001160 0a 001177 6010 00 797 tnz getbase.label If not, read volume label.  798  799 " 800  001161 801 getbase.records:  802  803 " Process fourth argument: first record number  804  001161 aa 012044 2350 00 805 lda arg+4 Get first record addr.  001162 aa 012216 7020 00 806 tsx2 mulbos Convert to BOS address.  001163 0a 003726 0000 20 807 arg =itp(com,bos_dvt),*  001164 0a 000607 7100 00 808 tra bad_daddr  001165 0a 001264 7510 74 809 stca dirorig,74  810  811 " Process fifth argument: number of records 812  001166 aa 012045 2350 00 813 lda arg+5 Get NREC  001167 aa 012044 0350 00 814 adla arg+4 Calculate high address.  001170 aa 000001 1350 07 815 sbla 1,dl ..  001171 aa 012216 7020 00 816 tsx2 mulbos Convert to BOS address.  001172 0a 003726 0000 20 817 arg =itp(com,bos_dvt),*  001173 0a 000607 7100 00 818 tra bad_daddr  001174 0a 001263 7510 74 819 stca bostop,74 820  001175 821 getbase.xit:  001175 0a 001175 6220 00 822 eax2 * Restore index 2  001176 aa 000000 7100 12 823 tra 0,2 Return to caller. 824  825 " 826  827 " Read volume label to get frec and nrecs of BOS partition. 828  001177 829 getbase.label:  001177 aa 000000 2350 07 830 lda LABEL_ADDR,dl Get record address of volume label.  831  001200 aa 012216 7020 00 832 tsx2 mulbos Convert to BOS sector address.  001201 0a 003726 0000 20 833 arg =itp(com,bos_dvt),*  001202 0a 000607 7100 00 834 tra bad_daddr  835  001203 0a 003721 3750 00 836 ana =o777777770000 Mask sector address.  001204 aa 000020 2750 07 837 ora 16,dl Going to read 16 sectors.  001205 aa 012211 7020 00 838 tsx2 rdev Into buffer segment.  001206 0a 003726 0000 20 839 arg =itp(com,bos_dvt),*  001207 aa 2 00000 0001 00 840 arg bf|0  001210 0a 000623 7100 00 841 tra label_err  842  001211 aa 000100 1064 00 843 cmpc (),(pr) See if real Multics label.  001212 0a 001265 000040 844 desc9a Multics_label,32  001213 aa 200500 000040 845 desc9a bf|label.Multics,32 001214 0a 000634 6010 00 846 tnz bad_label If not, cannot proceed. 847  001215 aa 2 01003 2361 00 848 ldq bf|label.nparts Get number of partitions.  001216 aa 000002 7360 00 849 qls 2 Multiply by 4.  001217 aa 000000 6270 06 850 eax7 0,ql Place in X7.  001220 0a 003730 2350 00 851 lda =4abos " Search for BOS partition.  001221 aa 777774 6270 17 852 eax7 -4,7 Step partition index.  001222 0a 000650 6040 00 853 tmi part_err If negative, couldn't find BOS partition.  001223 aa 2 01004 1151 17 854 cmpa bf|label.part,7 Test partition name.  001224 0a 001221 6010 00 855 tnz *-3 If not BOS, look some more.  856  001225 aa 2 01005 2351 17 857 lda bf|label.frec,7 Get first record of BOS partition. 001226 aa 012044 7550 00 858 sta arg+4 Place in card image.  001227 aa 2 01006 2351 17 859 lda bf|label.nrec,7 Likewise with number of records.  001230 aa 012045 7550 00 860 sta arg+5 ..  861  001231 aa 012241 7020 00 862 tsx2 erpt  001232 aa 034 102 117 123 863 acc "BOS partition at ^d. for ^d." 001233 aa 040 160 141 162 001234 aa 164 151 164 151 001235 aa 157 156 040 141 001236 aa 164 040 136 144 001237 aa 056 040 146 157 001240 aa 162 040 136 144 001241 aa 056 000 000 000 001242 aa 012044 0000 00 864 arg arg+4  001243 aa 012045 0000 00 865 arg arg+5  866  001244 0a 001161 7100 00 867 tra getbase.records Now, pick up and digest partition limits.  868  869 " 870  001245 aa 000000 0000 00 871 boscom: arg 0 used to hold X2 if BOS command  001246 872 temp: bss ,1 temporary 873  001247 aa 000000 0110 03 874 even  001250 875 offlen: bss ,2  001252 aa 000000 000000 876 length: oct 0  001253 aa 000000 000000 877 name: oct 0 001254 878 dirflag: bss ,1 879  001255 880 asciisw: bss ,1 001256 aa 056 141 163 143 881 .ascii: aci ".ascii"  001257 aa 151 151 000 000 001260 aa 056 142 143 144 882 .bcd: aci ".bcd"  883  001261 884 selectsw: bss ,1  001262 aa 146 167 056 000 885 fw.: aci "fw."  886  001263 aa 000000 000000 887 bostop: oct 0  001264 aa 777777 770070 888 dirorig: vfd 24/-1,12/econf/64 sector,length of dir 889  001265 890 Multics_label:  001265 aa 115 165 154 164 891 aci "Multics Storage System Volume",32 001266 aa 151 143 163 040 001267 aa 123 164 157 162 001270 aa 141 147 145 040 001271 aa 123 171 163 164 001272 aa 145 155 040 126 001273 aa 157 154 165 155 001274 aa 145 040 040 040 892  893 " 894  895 include readtape  3-1 " 3-2 " Begin include file ...... readtape.incl.alm  3-3 " Created 9/15/75 by Noel I. Morris 3-4  001275 0a 001336 7420 00 3-5 readtape: stx2 rtx2 subr to read one log record  001276 0a 001337 7410 00 3-6 stx1 rtx1 save XR's  3-7  001277 0a 001467 2260 00 3-8 ldx6 tbufi buffer offset in X6  001300 0a 001466 2270 00 3-9 ldx7 tbufd compute lth of data left in buffer 001301 0a 001467 1670 00 3-10 sbx7 tbufi .. 001302 0a 001304 6054 00 3-11 tpnz *+2 if empty,  001303 0a 001341 7020 00 3-12 tsx2 tfill refill the buffer  3-13  001304 0a 001520 2350 16 3-14 lda tbuf,6 get control word  001305 0a 001464 7550 00 3-15 sta kind save it  001306 aa 000000 6210 05 3-16 eax1 0,al X1 contains data length 3-17  001307 aa 777777 6270 17 3-18 eax7 -1,7 decrement remaining length  001310 aa 000001 6260 16 3-19 eax6 1,6 increment offset 3-20  001311 aa 000000 1070 03 3-21 trlp: cmpx7 0,du buffer empty? 001312 0a 001314 6054 00 3-22 tpnz *+2 if so,  001313 0a 001341 7020 00 3-23 tsx2 tfill fill it  3-24  001314 0a 001470 7410 00 3-25 stx1 tlrl save length to xfer 001315 aa 000000 6350 17 3-26 eaa 0,7 remaining buffer length in AU 001316 0a 001470 1150 00 3-27 cmpa tlrl compare against desired length  001317 0a 001321 6044 00 3-28 tmoz *+2 take min 001320 0a 001470 2350 00 3-29 lda tlrl to get number of words to move  001321 0a 001471 7550 00 3-30 sta trlen save length to xfer this time  3-31  001322 aa 000000 6360 16 3-32 eaq 0,6 buffer offset in QU  001323 aa 000002 7370 00 3-33 lls 2 compute char offset and length  001324 aa 000140 1004 42 3-34 mlr (rl,qu),(pr,rl) move data  001325 0a 001520 000001 3-35 desc9a tbuf,au 001326 aa 100000 000001 3-36 desc9a tmp|0,au  3-37  001327 0a 001471 0510 00 3-38 adwp1 trlen bump data pointer 001330 0a 001471 0660 00 3-39 adx6 trlen bump buffer offset 001331 0a 001471 1670 00 3-40 sbx7 trlen decrement remaining buffer length  001332 0a 001471 1610 00 3-41 sbx1 trlen decrement remaining data length  001333 0a 001311 6054 00 3-42 tpnz trlp loop if more data to move  3-43  001334 0a 001467 7460 00 3-44 stx6 tbufi save buffer offset 001335 aa 1 00000 3511 00 3-45 rtxit: epbp1 tmp|0 set pointer back to base of buffer seg  001336 0a 001336 6220 00 3-46 rtx2: eax2 * restore XR's  001337 0a 001337 6210 00 3-47 rtx1: eax1 * ..  001340 aa 000000 7100 12 3-48 tra 0,2 return to caller  3-49  3-50 " 3-51  001341 0a 001427 7420 00 3-52 tfill: stx2 tfx2 save X2  001342 0a 001430 7400 00 3-53 stx0 tfx0 and X0  001343 0a 001465 0540 00 3-54 aos recno bump number 3-55  001344 0a 001510 4500 00 3-56 trbuf: stz thdr here to get new buffer 001345 0a 001517 4500 00 3-57 stz thdr+7 reset known words  001346 0a 001472 2260 00 3-58 ldx6 ttlr get pointer to trailer  001347 aa 000000 4500 16 3-59 stz 0,6 clear trailer words  001350 aa 000007 4500 16 3-60 stz 7,6 ..  3-61  001351 aa 012277 7020 00 3-62 tsx2 xio_wait read record 001352 0a 001510 202000 3-63 vfd 18/thdr,12/tbufl+16,6/0  001353 0a 001473 000005 3-64 zero tapeno,5  001354 0a 001351 7100 00 3-65 tra *-3 retry if error  3-66  001355 0a 001510 2350 00 3-67 lda thdr check known words  001356 0a 001517 2360 00 3-68 ldq thdr+7 001357 0a 001476 1170 00 3-69 cmpaq tkw  001360 0a 001344 6010 00 3-70 tnz trbuf  3-71  001361 0a 001515 2350 00 3-72 lda thdr+5 check for end of tape record  001362 aa 100000 3150 03 3-73 cana eor,du  001363 0a 001444 6010 00 3-74 tnz eot  001364 aa 600000 3150 03 3-75 cana admin,du ignore administrative records  001365 0a 001344 6010 00 3-76 tnz trbuf  3-77  001366 0a 001514 2360 00 3-78 ldq thdr+4 get # of data bits in record  001367 aa 000044 5060 07 3-79 div 36,dl compute # of words  001370 0a 001466 7520 70 3-80 stcq tbufd,70 save word count 3-81  001371 0a 001520 6260 06 3-82 eax6 tbuf,ql X6 points to record trailer  001372 0a 001472 7460 00 3-83 stx6 ttlr save trailer pointer  3-84  001373 aa 000000 2350 16 3-85 lda 0,6 check known words of trailer  001374 aa 000007 2360 16 3-86 ldq 7,6 ..  001375 0a 001500 1170 00 3-87 cmpaq tkw+2  001376 0a 001344 6010 00 3-88 tnz trbuf  3-89  001377 aa 004000 6340 07 3-90 ldi ovflm,dl turn overflow mask on  001400 aa 000000 2350 07 3-91 lda =0,dl clear A 001401 0a 001510 6260 00 3-92 eax6 thdr X6 first points to record header  001402 aa 000001 6270 00 3-93 eax7 1 X7 is shift count  3-94 odd; rpda 6,1 add up header words  001403 aa 015200 5602 01 001404 aa 000000 0710 16 3-95 awca 0,6 ..  001405 aa 000000 7750 17 3-96 alr 0,7 ..  001406 aa 000001 0710 16 3-97 awca 1,6 skip checksum word  001407 aa 000000 7750 17 3-98 alr 0,7  3-99  001410 0a 001472 2260 00 3-100 ldx6 ttlr X6 now points to record trailer 3-101 odd; rpda 8,1 add up trailer words 001411 aa 021200 5602 01 001412 aa 000000 0710 16 3-102 awca 0,6 ..  001413 aa 000000 7750 17 3-103 alr 0,7 ..  001414 aa 000000 0710 07 3-104 awca 0,dl add any last carry  3-105  001415 0a 001516 1150 00 3-106 cmpa thdr+6 check it  001416 0a 001344 6010 00 3-107 tnz trbuf  3-108  001417 0a 001472 2260 00 3-109 ldx6 ttlr X6 -> record trailer  001420 aa 000006 2350 16 3-110 lda 6,6 check recno  001421 0a 001465 1150 00 3-111 cmpa recno 001422 0a 001425 6000 00 3-112 tze *+3  001423 0a 001432 6050 00 3-113 tpl tback too high, backup  001424 0a 001344 7100 00 3-114 tra trbuf too low, read more  3-115  001425 0a 001466 2270 00 3-116 ldx7 tbufd buffer length in X7  001426 aa 000000 6260 00 3-117 eax6 0 buffer offset in X6  001427 0a 001427 6220 00 3-118 tfx2: eax2 * restore XR's  001430 0a 001430 6200 00 3-119 tfx0: eax0 * ..  001431 aa 000000 7100 12 3-120 tra 0,2 return  3-121  3-122  001432 0a 001474 2340 00 3-123 tback: szn tapdev reading on cold MPC? 001433 0a 001450 6010 00 3-124 tnz tapfatal if so, incapable of backspacing  3-125  001434 aa 000012 6200 00 3-126 eax0 10 here if too far down tape 001435 aa 012277 7020 00 3-127 backup: tsx2 xio_wait  001436 aa 000000 000000 3-128 zero  001437 0a 001473 000046 3-129 zero tapeno,38 backspace  001440 0a 001441 7100 00 3-130 tra *+1 ignore errors 001441 aa 777777 6200 10 3-131 eax0 -1,0  001442 0a 001435 6050 00 3-132 tpl backup 001443 0a 001344 7100 00 3-133 tra trbuf now, try here on tape  3-134  3-135  001444 aa 000001 3350 07 3-136 eot: lca 1,dl all one's in A  001445 0a 001464 7550 00 3-137 sta kind set end of tape indication  3-138  001446 0a 001430 2200 00 3-139 ldx0 tfx0 restore X0  001447 0a 001335 7100 00 3-140 tra rtxit and exit  3-141  3-142  001450 aa 012241 7020 00 3-143 tapfatal: tsx2 erpt 001451 aa 043 143 141 156 3-144 acc 'cannot reposition tape, reboot bos.'  001452 aa 156 157 164 040 001453 aa 162 145 160 157 001454 aa 163 151 164 151 001455 aa 157 156 040 164 001456 aa 141 160 145 054 001457 aa 040 162 145 142 001460 aa 157 157 164 040 001461 aa 142 157 163 056 001462 0a 001462 6160 00 3-145 dis *  001463 aa 777777 7100 04 3-146 tra -1,ic  3-147  3-148 " 3-149  001464 aa 000000 000000 3-150 kind: oct 0 logical record ID  001465 aa 000000 000000 3-151 recno: oct 0 physical record number  001466 3-152 tbufd: bss ,1 data length of tape record  001467 3-153 tbufi: bss ,1 offset into tape buffer  001470 3-154 tlrl: bss ,1 length of logical record  001471 3-155 trlen: bss ,1 number of words to move  001472 0a 003520 0000 00 3-156 ttlr: arg tbuf+tbufl pointer to tape record trailer 3-157  001473 3-158 tapeno: bss ,1 tape channel and device 001474 3-159 tapdev: bss ,1 non-zero if cold tape MPC  3-160  001475 aa 000000 0110 03 3-161 even  001476 aa 670314 355245 3-162 tkw: oct 670314355245,512556146073,107463422532,265221631704  001477 aa 512556 146073 001500 aa 107463 422532 001501 aa 265221 631704 3-163  100000 3-164 bool eor,100000  600000 3-165 bool admin,600000  3-166  002000 3-167 equ tbufl,1024 3-168  001502 aa 000000 0110 03 3-169 eight  001503 aa 000000 0110 03 001504 aa 000000 0110 03 001505 aa 000000 0110 03 001506 aa 000000 0110 03 001507 aa 000000 0110 03 001510 3-170 thdr: bss ,8  001520 3-171 tbuf: bss ,tbufl  003520 3-172 bss ,8 3-173  3-174 " End of include file ...... readtape.incl.alm  3-175  896 include runcom_util  4-1 " 4-2 " Begin include file ...... runcom_util.incl.alm  4-3 " Created 9/17/75 by Noel I. Morris 4-4  4-5  002264 4-6 equ mbufl,1204 length of runcom buffer 4-7  4-8  4-9 " lda name  4-10 " tsx2 runcom_setup setup to read from runcom file  4-11 " tra error file not found 4-12  003530 4-13 runcom_setup:  003530 0a 003550 7420 00 4-14 stx2 sx2 setup to read from a macro file  003531 0a 003656 7550 00 4-15 sta rctemp save name in case of error 4-16  003532 aa 012204 7020 00 4-17 tsx2 search  003533 0a 003552 7100 00 4-18 tra rsnf macro file not found 4-19  003534 aa 004000 3150 07 4-20 cana =o4000,dl check for macro bit  003535 0a 003552 6000 00 4-21 tze rsnf if not macro 4-22  003536 0a 003721 3750 00 4-23 ana =o777777770000 003537 aa 6 02022 7551 00 4-24 sta com|macroloc  4-25  003540 aa 000001 2750 07 4-26 ora =1,dl prime buffer  003541 aa 012234 7020 00 4-27 tsx2 rdsec 003542 aa 6 02600 0111 00 4-28 nop com|macrobuf  003543 0a 003561 7100 00 4-29 tra rserr if error  4-30  003544 aa 6 02021 2351 00 4-31 lda com|inputsw stack inputsw  003545 aa 000006 7710 00 4-32 arl 6  003546 aa 020000 2750 03 4-33 ora =o020000,du and set to macro  003547 aa 6 02021 7551 00 4-34 sta com|inputsw  4-35  003550 0a 003550 6220 00 4-36 sx2: eax2 * restore X2 003551 aa 000001 7100 12 4-37 tra 1,2 take normal return  4-38  4-39  003552 aa 012241 7020 00 4-40 rsnf: tsx2 erpt macro file not found  003553 aa 021 146 151 154 4-41 acc "file ^g not found"  003554 aa 145 040 136 147 003555 aa 040 156 157 164 003556 aa 040 146 157 165 003557 aa 156 144 000 000 003560 0a 003656 0000 00 4-42 arg rctemp 4-43  003561 0a 003550 2220 00 4-44 rserr: ldx2 sx2 restore X2 003562 aa 000000 7100 12 4-45 tra 0,2 take error return 4-46  4-47 " 4-48  4-49 " tsx2 make_runcom_file to format input lines into file 4-50 " tra get_input_line subr to read into "line"  4-51 " tra error error if file too big  4-52 " stq length,dl length of file in words  4-53  003563 4-54 make_runcom_file:  003563 0a 003605 7420 00 4-55 stx2 mkrx2 save XR's  003564 0a 003606 7400 00 4-56 stx0 mkrx0 .. 4-57  003565 aa 000000 6200 00 4-58 eax0 0 X0 is buffer index 003566 0a 003605 7020 20 4-59 mkrloop: tsx2 mkrx2,* call input subroutine  003567 0a 003603 7100 00 4-60 tra mark tra if end of input  4-61  003570 0a 003642 7020 00 4-62 tsx2 runcom_line_len get length of line and set line mark  003571 0a 003656 7560 00 4-63 stq rctemp save length  4-64  003572 aa 000000 6270 10 4-65 eax7 0,0 current offset in X7 003573 0a 003656 0270 00 4-66 adlx7 rctemp add length of this line  003574 aa 011320 1070 03 4-67 cmpx7 mbufl*4,du check for buffer overflow 003575 0a 003610 6050 00 4-68 tpl runcom_too_big ..  4-69  003576 aa 000150 1004 40 4-70 mlr (rl),(pr,rl,x0) copy line into macro buffer  003577 aa 012000 000002 4-71 desc9a pagectl,qu  003600 aa 200000 000002 4-72 desc9a bf|0,qu 4-73  003601 aa 000000 6200 17 4-74 eax0 0,7 get offset of next line in X0  003602 0a 003566 7100 00 4-75 tra mkrloop and loop  4-76  4-77  003603 aa 000004 6360 10 4-78 mark: eaq 4,0 get offset plus 1 word in QU 003604 aa 000024 7720 00 4-79 qrl 18+2 shift to QL and compute word count  4-80  003605 0a 003605 6220 00 4-81 mkrx2: eax2 * restore XR's 003606 0a 003606 6200 00 4-82 mkrx0: eax0 * ..  003607 aa 000002 7100 12 4-83 tra 2,2 take normal return  4-84  4-85  003610 4-86 runcom_too_big: 003610 aa 012241 7020 00 4-87 tsx2 erpt complain if runcom too large  003611 aa 015 146 151 154 4-88 acc "file too big."  003612 aa 145 040 164 157 003613 aa 157 040 142 151 003614 aa 147 056 000 000 003615 0a 003605 2220 00 4-89 ldx2 mkrx2 restore XR's  003616 0a 003606 2200 00 4-90 ldx0 mkrx0 .. 003617 aa 000001 7100 12 4-91 tra 1,2 and take error return 4-92  4-93 " 4-94  4-95 " lda name name of runcom file 4-96 " ldq length,dl length of runcom file in words 4-97 " tsx2 store_runcom_file to store completed runcom  4-98 " tra error file system error  4-99  003620 4-100 store_runcom_file:  003620 0a 003636 7420 00 4-101 stx2 srfx2 save X2  003621 0a 003656 7550 00 4-102 sta rctemp save name  4-103  003622 aa 000001 3350 07 4-104 lca 1,dl make fence for end  003623 aa 2 77777 7551 06 4-105 sta bf|-1,ql and cap end of macro 4-106  003624 aa 000077 0760 07 4-107 adq 63,dl round to nearest disk sector  003625 aa 000006 7720 00 4-108 qrl 6 compute number of sectors  4-109  003626 0a 003656 2350 00 4-110 lda rctemp get name of runcom 003627 aa 012205 7020 00 4-111 tsx2 makefil create a file for runcom 003630 0a 003640 7100 00 4-112 tra srferr 4-113  003631 aa 004000 2360 07 4-114 ldq =o4000,dl get runcom ID bit  003632 aa 6 00001 2561 17 4-115 orsq com|1,7 insert in BOS dir entry  4-116  003633 aa 012235 7020 00 4-117 tsx2 wtsec write out the runcom  003634 aa 2 00000 0111 00 4-118 nop bf|0  003635 0a 003640 7100 00 4-119 tra srferr 4-120  003636 0a 003636 6220 00 4-121 srfx2: eax2 * restore X2  003637 aa 000001 7100 12 4-122 tra 1,2 that's all  4-123  4-124  003640 0a 003636 2220 00 4-125 srferr: ldx2 srfx2 restore X2  003641 aa 000000 7100 12 4-126 tra 0,2 take error return 4-127  4-128 "  4-129  4-130 " tsx2 runcom_line_len to get line length  4-131 " stq len,du length of line in words  4-132  003642 4-133 runcom_line_len:  003642 0a 003654 7420 00 4-134 stx2 rllx2 save X2  4-135  003643 aa 012263 7020 00 4-136 tsx2 stripg strip trailing blanks from line  003644 aa 012001 020124 4-137 desc6a line,84 .. 003645 aa 000044 7730 00 4-138 lrl 36 length in Q  003646 aa 000005 0760 07 4-139 adq 5,dl round up to nearest word 003647 aa 000006 5060 07 4-140 div 6,dl compute word count  003650 aa 000022 7360 00 4-141 qls 18 in QU  003651 aa 012000 7520 70 4-142 stcq pagectl,70 insert in line mark  4-143  003652 aa 000001 0760 03 4-144 adq 1,du include line mark in length  003653 aa 000002 7360 00 4-145 qls 2 get character count 4-146  003654 0a 003654 6220 00 4-147 rllx2: eax2 * restore X2  003655 aa 000000 7100 12 4-148 tra 0,2 return to caller  4-149  4-150  003656 4-151 rctemp: bss ,1  4-152  4-153  4-154 " End of include file ...... runcom_util.incl.alm  4-155  897 " 898 include bos_sdw  5-1 "  5-2 " BEGIN INCLUDE FILE sdw.incl.alm 02/12/74  5-3 "  000014 5-4 equ sdw.add_shift,12  007000 5-5 bool sdw.r1,007000 Ringbrack 1 (DL)  000700 5-6 bool sdw.r2,000700 Ringbrack 2 (DL)  000070 5-7 bool sdw.r3,000070 Ringbrack 3 (DL)  5-8  000004 5-9 bool sdw.df,000004 Directed fault bit (0 -> fault)  000003 5-10 bool sdw.fault_code,000003 Number of directed fault  5-11  377770 5-12 bool sdw.bound,377770 Bound field (DU)  000004 5-13 bool sdw.read,000004 Read permission bit (DU) 000002 5-14 bool sdw.execute,000002 Execute permission bit (DU)  000001 5-15 bool sdw.write,000001 Write permission bit (DU)  5-16  400000 5-17 bool sdw.privileged,400000 Privileged bit (DL) 200000 5-18 bool sdw.unpaged,200000 Unpaged bit (DL)  100000 5-19 bool sdw.entry_bound_sw,100000 Entry bound switch (DL) 040000 5-20 bool sdw.cache,040000 Cache enabled bit (DL)  037777 5-21 bool sdw.entry_bound,037777 Entry bound (DL)  5-22  5-23 "  5-24 " END INCLUDE FILE sdw.incl.alm  5-25 "  899 " 900 include slt  6-1  6-2  6-3 "BEGIN INCLUDE FILE slt.incl.alm  6-4  6-5 "Created 11/04/76 1459.6 est Thu by convert_include_file, 6-6 " Version of 04/30/76 1208.1 est Fri.  6-7  6-8 "Made from >user_dir_dir>Multics>Morris>slt>include>slt.incl.pl1,  6-9 " modified 11/04/76 1459.5 est Thu  6-10  6-11 "  6-12 " Structure slt 6-13 "  100010 6-14 equ slt_size,32776 6-15  6-16  000000 6-17 equ slt.name_seg_ptr,0 000002 6-18 equ slt.free_core_start,2  000003 6-19 equ slt.first_sup_seg,3  000004 6-20 equ slt.last_sup_seg,4 000005 6-21 equ slt.first_init_seg,5  000006 6-22 equ slt.last_init_seg,6  000007 6-23 equ slt.free_core_size,7  000010 6-24 equ slt.seg,8 "LEVEL 2  6-25  000010 6-26 equ slt.slte,8 6-27  6-28 "  6-29 " Structure name_seg  6-30 "  000201 6-31 equ name_seg_size,129  6-32  000000 6-33 equ name_seg.next_loc,0 "LOWER  6-34  000001 6-35 equ name_seg.ht,1 "UPPER  6-36  6-37 "  6-38 " Structure segnam  6-39 "  6-40  000000 6-41 equ segnam.count,0 000001 6-42 equ segnam.names,1 "LEVEL 2  6-43  000001 6-44 equ segnam.hp,1 "UPPER  400000 6-45 bool segnam.ref,400000 "DL  000000 6-46 equ segnam.segno_shift,0  007777 6-47 bool segnam.segno_mask,007777  6-48  000002 6-49 equ segnam.name,2 "DOUBLE 6-50  6-51 "  6-52 " Structure path  6-53 "  000000 6-54 equ path.size,0  000001 6-55 equ path.name,1  000000 6-56 equ path.acls,0  6-57  6-58 "  6-59 " Structure acls  6-60 "  000000 6-61 equ acls.count,0  000001 6-62 equ acls.acl,1 "LEVEL 2  6-63  000001 6-64 equ acls.userid,1 "DOUBLE 000011 6-65 equ acls.mode,9  000013 6-66 equ acls.code,11  6-67  6-68 "END INCLUDE FILE slt.incl.alm 901 include slte  7-1  7-2  7-3 "BEGIN INCLUDE FILE slte.incl.alm  7-4  7-5  7-6 "Created 08/13/82 0906.3 edt Fri by convert_include_file, 7-7 " Version of 12/01/81 1640.3 edt Tue.  7-8  7-9 "Made from >bootload>include>slte.incl.pl1,  7-10 " modified 08/12/82 1335.9 edt Thu  7-11  7-12 "  7-13 " Structure slte_uns  7-14 "  000004 7-15 equ slte_uns_size,4  7-16  000000 7-17 equ slte_uns.names_ptr,0 " UPPER  000000 7-18 equ slte_uns.path_ptr,0 " LOWER  7-19  000001 7-20 equ slte_uns.access_word,1 000040 7-21 equ slte_uns.access_shift,32  000017 7-22 bool slte_uns.access_mask,000017  000001 7-23 equ slte_uns.cache_word,1  020000 7-24 bool slte_uns.cache,020000 " DU  000001 7-25 equ slte_uns.abs_seg_word,1  010000 7-26 bool slte_uns.abs_seg,010000 " DU  000001 7-27 equ slte_uns.firmware_seg_word,1  004000 7-28 bool slte_uns.firmware_seg,004000 " DU 000001 7-29 equ slte_uns.layout_seg_word,1 002000 7-30 bool slte_uns.layout_seg,002000 " DU  000001 7-31 equ slte_uns.wired_word,1  000040 7-32 bool slte_uns.wired,000040 " DU  000001 7-33 equ slte_uns.paged_word,1  000020 7-34 bool slte_uns.paged,000020 " DU  000001 7-35 equ slte_uns.per_process_word,1  000010 7-36 bool slte_uns.per_process,000010 " DU  000001 7-37 equ slte_uns.acl_provided_word,1  000001 7-38 bool slte_uns.acl_provided,000001 " DU 000001 7-39 equ slte_uns.branch_required_word,1  040000 7-40 bool slte_uns.branch_required,040000 " DL  000001 7-41 equ slte_uns.init_seg_word,1  020000 7-42 bool slte_uns.init_seg,020000 " DL 000001 7-43 equ slte_uns.temp_seg_word,1  010000 7-44 bool slte_uns.temp_seg,010000 " DL 000001 7-45 equ slte_uns.link_provided_word,1  004000 7-46 bool slte_uns.link_provided,004000 " DL  000001 7-47 equ slte_uns.link_sect_word,1  002000 7-48 bool slte_uns.link_sect,002000 " DL  000001 7-49 equ slte_uns.link_sect_wired_word,1  001000 7-50 bool slte_uns.link_sect_wired,001000 " DL  000001 7-51 equ slte_uns.combine_link_word,1  000400 7-52 bool slte_uns.combine_link,000400 " DL 000001 7-53 equ slte_uns.pre_linked_word,1 000200 7-54 bool slte_uns.pre_linked,000200 " DL  000001 7-55 equ slte_uns.defs_word,1  000100 7-56 bool slte_uns.defs,000100 " DL 7-57  000002 7-58 equ slte_uns.cur_length_word,2 000033 7-59 equ slte_uns.cur_length_shift,27  000777 7-60 bool slte_uns.cur_length_mask,000777  000002 7-61 equ slte_uns.ringbrack_word,2  000030 7-62 equ slte_uns.ringbrack_shift,24  000007 7-63 bool slte_uns.ringbrack_mask,000007  000002 7-64 equ slte_uns.segno,2 " LOWER  7-65  000003 7-66 equ slte_uns.max_length_word,3 000030 7-67 equ slte_uns.max_length_shift,24  000777 7-68 bool slte_uns.max_length_mask,000777  000003 7-69 equ slte_uns.bit_count_word,3  000000 7-70 equ slte_uns.bit_count_shift,0 7-71  7-72 "  7-73 " Structure slte  7-74 "  000004 7-75 equ slte_size,4  7-76  000000 7-77 equ slte.names_ptr,0 " UPPER  000000 7-78 equ slte.path_ptr,0 " LOWER  7-79  000001 7-80 equ slte.access_word,1 000040 7-81 equ slte.access_shift,32  000017 7-82 bool slte.access_mask,000017  000001 7-83 equ slte.cache_word,1  020000 7-84 bool slte.cache,020000 " DU  000001 7-85 equ slte.abs_seg_word,1  010000 7-86 bool slte.abs_seg,010000 " DU 000001 7-87 equ slte.firmware_seg_word,1  004000 7-88 bool slte.firmware_seg,004000 " DU 000001 7-89 equ slte.layout_seg_word,1 002000 7-90 bool slte.layout_seg,002000 " DU  000001 7-91 equ slte.wired_word,1  000040 7-92 bool slte.wired,000040 " DU  000001 7-93 equ slte.paged_word,1  000020 7-94 bool slte.paged,000020 " DU  000001 7-95 equ slte.per_process_word,1  000010 7-96 bool slte.per_process,000010 " DU  000001 7-97 equ slte.acl_provided_word,1  000001 7-98 bool slte.acl_provided,000001 " DU 000001 7-99 equ slte.branch_required_word,1  040000 7-100 bool slte.branch_required,040000 " DL  000001 7-101 equ slte.init_seg_word,1  020000 7-102 bool slte.init_seg,020000 " DL 000001 7-103 equ slte.temp_seg_word,1  010000 7-104 bool slte.temp_seg,010000 " DL 000001 7-105 equ slte.link_provided_word,1  004000 7-106 bool slte.link_provided,004000 " DL  000001 7-107 equ slte.link_sect_word,1  002000 7-108 bool slte.link_sect,002000 " DL  000001 7-109 equ slte.link_sect_wired_word,1  001000 7-110 bool slte.link_sect_wired,001000 " DL  000001 7-111 equ slte.combine_link_word,1  000400 7-112 bool slte.combine_link,000400 " DL 000001 7-113 equ slte.pre_linked_word,1 000200 7-114 bool slte.pre_linked,000200 " DL  000001 7-115 equ slte.defs_word,1  000100 7-116 bool slte.defs,000100 " DL  7-117  000002 7-118 equ slte.cur_length_word,2 000033 7-119 equ slte.cur_length_shift,27  000777 7-120 bool slte.cur_length_mask,000777  000002 7-121 equ slte.ringbrack_word,2  000030 7-122 equ slte.ringbrack_shift,24  000007 7-123 bool slte.ringbrack_mask,000007  000002 7-124 equ slte.segno,2 " LOWER  7-125  000003 7-126 equ slte.max_length_word,3 000030 7-127 equ slte.max_length_shift,24  000777 7-128 bool slte.max_length_mask,000777  000003 7-129 equ slte.bit_count_word,3  000000 7-130 equ slte.bit_count_shift,0 7-131  7-132 "END INCLUDE FILE slte.incl.alm  902 " 903 include fs_vol_label  8-1  8-2  8-3 "BEGIN INCLUDE FILE fs_vol_label.incl.alm  8-4  8-5  8-6 "Created 03/27/82 1422.1 est Sat by convert_include_file, 8-7 " Version of 12/01/81 1540.3 est Tue.  8-8  8-9 "Made from >udd>m>bongo>htd>nsd>include>fs_vol_label.incl.pl1, 8-10 " modified 03/27/82 1421.0 est Sat  8-11  8-12 "  8-13 " Structure label  8-14 "  002000 8-15 equ label_size,1024  8-16  8-17  000000 8-18 equ label.gcos,0  000500 8-19 equ label.Multics,320  000510 8-20 equ label.version,328  000511 8-21 equ label.mfg_serial,329  000521 8-22 equ label.pv_name,337  000531 8-23 equ label.lv_name,345  000541 8-24 equ label.pvid,353 000542 8-25 equ label.lvid,354 000543 8-26 equ label.root_pvid,355  000544 8-27 equ label.time_registered,356 " DOUBLE 000546 8-28 equ label.n_pv_in_lv,358  000547 8-29 equ label.vol_size,359 000550 8-30 equ label.vtoc_size,360  8-31  000551 8-32 equ label.not_used_word,361  400000 8-33 bool label.not_used,400000 " DU  000551 8-34 equ label.private_word,361 200000 8-35 bool label.private,200000 " DU 000551 8-36 equ label.flagpad_word,361 000000 8-37 equ label.flagpad_shift,0  8-38  000552 8-39 equ label.max_access_class,362 " DOUBLE  000554 8-40 equ label.min_access_class,364 " DOUBLE  000556 8-41 equ label.password,366 " DOUBLE  000600 8-42 equ label.time_mounted,384 " DOUBLE  000602 8-43 equ label.time_map_updated,386 " DOUBLE  000604 8-44 equ label.volmap_version,388  000606 8-45 equ label.time_salvaged,390 " DOUBLE  000610 8-46 equ label.time_of_boot,392 " DOUBLE  000612 8-47 equ label.time_unmounted,394 " DOUBLE  000614 8-48 equ label.last_pvtx,396  000617 8-49 equ label.err_hist_size,399  000620 8-50 equ label.time_last_dmp,400 " DOUBLE  000626 8-51 equ label.time_last_reloaded,406 " DOUBLE  000700 8-52 equ label.root,448 " LEVEL 2  8-53  400000 8-54 bool label.here,400000 " DU  8-55  000701 8-56 equ label.root_vtocx,449  000702 8-57 equ label.shutdown_state,450  000704 8-58 equ label.disk_table_vtocx,452 000705 8-59 equ label.disk_table_uid,453  000706 8-60 equ label.esd_state,454  000707 8-61 equ label.volmap_record,455  000710 8-62 equ label.size_of_volmap,456  000711 8-63 equ label.vtoc_map_record,457  000712 8-64 equ label.size_of_vtoc_map,458 000713 8-65 equ label.volmap_unit_size,459 000714 8-66 equ label.vtoc_origin_record,460  000715 8-67 equ label.dumper_bit_map_record,461  000716 8-68 equ label.vol_trouble_count,462  001003 8-69 equ label.nparts,515  001004 8-70 equ label.parts,516 " LEVEL 2 8-71  001004 8-72 equ label.part,516 001005 8-73 equ label.frec,517 001006 8-74 equ label.nrec,518 8-75  8-76 "END INCLUDE FILE fs_vol_label.incl.alm  904 include disk_pack  9-1  9-2  9-3 "BEGIN INCLUDE FILE disk_pack.incl.alm 9-4  9-5  9-6 "Created 04/02/82 1735.7 est Fri by convert_include_file, 9-7 " Version of 12/01/81 1540.3 est Tue.  9-8  9-9 "Made from >cdd>include>x>disk_pack.incl.pl1,  9-10 " modified 04/02/82 1145.0 est Fri  9-11  9-12  000000 9-13 equ LABEL_ADDR,0 " MANIFEST  000001 9-14 equ VOLMAP_ADDR,1 " MANIFEST  000004 9-15 equ DUMPER_BIT_MAP_ADDR,4 " MANIFEST  000006 9-16 equ VTOC_MAP_ADDR,6 " MANIFEST  000010 9-17 equ VTOC_ORIGIN,8 " MANIFEST  000003 9-18 equ SECTORS_PER_VTOCE,3 " MANIFEST  000005 9-19 equ VTOCES_PER_RECORD,5 " MANIFEST  001750 9-20 equ DEFAULT_HCPART_SIZE,1000 " MANIFEST  076036 9-21 equ MAX_VTOCE_PER_PACK,31774 " MANIFEST  9-22  9-23 "END INCLUDE FILE disk_pack.incl.alm  905 include bos_tv 10-1 " 10-2 " Begin include file ...... bos_tv.incl.alm 10-3 " Created in November 1971 by N. I. Morris. 10-4 " Modified 9/9/76 by Noel I. Morris 10-5 " Modified by Sherman D. Sprague 02/11/81 for DPS8 support. 10-6 " Modified November 1981 by C. Hornig to remove iom_connect_rel.  10-7 " Modified January 1982 by J. Bongiovanni to add getport_info  10-8 " Modified May 1982 by Sherman D. Sprague to add getmpc.  10-9  10-10 " BOS Utility Package Transfer Vector.  10-11  012000 10-12 equ pagectl,utilorg  012001 10-13 equ line,pagectl+1 012040 10-14 equ arg,line+31  012060 10-15 equ darg,arg+arglen+1  012100 10-16 equ earg,darg+arglen+1 012120 10-17 equ fltscu,earg+arglen+1  10-18  012200 10-19 equ tv_org,utilorg+128 10-20  012200 10-21 equ scan,tv_org+0  012201 10-22 equ arg_count,tv_org+1 012202 10-23 equ nextline,tv_org+2  012203 10-24 equ nlraw,tv_org+3 012204 10-25 equ search,tv_org+4  012205 10-26 equ makefil,tv_org+5  012206 10-27 equ ldcom,tv_org+6 012207 10-28 equ getsec,tv_org+7  012210 10-29 equ cvinit,tv_org+8  012211 10-30 equ rdev,tv_org+9  012212 10-31 equ wdev,tv_org+10 012213 10-32 equ phybos,tv_org+11  012214 10-33 equ bosphy,tv_org+12  012215 10-34 equ phyadd,tv_org+13  012216 10-35 equ mulbos,tv_org+14  012217 10-36 equ bosmul,tv_org+15  012220 10-37 equ lookup_devmodel,tv_org+16  012221 10-38 equ makesdw,tv_org+17  012222 10-39 equ argbos,tv_org+18  012223 10-40 equ argmul,tv_org+19  012224 10-41 equ amdvt,tv_org+20  012225 10-42 equ amfirst,tv_org+21  012226 10-43 equ amlast,tv_org+22  012227 10-44 equ cvnamla,tv_org+23  012230 10-45 equ sect_per_cyl_list,tv_org+24  012231 10-46 equ sect_per_dev_list,tv_org+25  012232 10-47 equ rec_per_dev_list,tv_org+26 012233 10-48 equ amaxio,tv_org+27  012234 10-49 equ rdsec,tv_org+28  012235 10-50 equ wtsec,tv_org+29  012236 10-51 equ disk_brief,tv_org+30  012237 10-52 equ itaper,tv_org+31  012240 10-53 equ itapew,tv_org+32  012241 10-54 equ erpt,tv_org+33 012242 10-55 equ ercv,tv_org+34 012243 10-56 equ erbuf,tv_org+35  012244 10-57 equ type,tv_org+36 012245 10-58 equ ttyinit,tv_org+37  012246 10-59 equ readcd,tv_org+38  012247 10-60 equ readtty,tv_org+39  012250 10-61 equ getprt,tv_org+40  012251 10-62 equ punch,tv_org+41  012252 10-63 equ octwd,tv_org+42  012253 10-64 equ geas,tv_org+43 012254 10-65 equ geastab,tv_org+44  012255 10-66 equ asge,tv_org+45 012256 10-67 equ asgetab,tv_org+46  012257 10-68 equ ljust,tv_org+47  012260 10-69 equ rjust,tv_org+48  012261 10-70 equ bzel,tv_org+49 012262 10-71 equ stripa,tv_org+50  012263 10-72 equ stripg,tv_org+51  012264 10-73 equ getconf,tv_org+52  012265 10-74 equ getmore,tv_org+53  012266 10-75 equ getperiph,tv_org+54  012267 10-76 equ rdclock,tv_org+55  012270 10-77 equ cvclock,tv_org+56  012271 10-78 equ init_io,tv_org+57  012272 10-79 equ connect_iom,tv_org+58  012273 10-80 equ getmpc,tv_org+59  012274 10-81 equ check_status,tv_org+60 012275 10-82 equ get_special_interrupt,tv_org+61  012276 10-83 equ get_status_interrupt,tv_org+62 012277 10-84 equ xio_wait,tv_org+63 012300 10-85 equ initint,tv_org+64  012301 10-86 equ wantflt,tv_org+65  012302 10-87 equ intno,tv_org+66  012303 10-88 equ intrpts1,tv_org+67 012304 10-89 equ hexwd,tv_org+68  012305 10-90 equ find_disk,tv_org+69  012306 10-91 equ find_root,tv_org+70  012307 10-92 equ find_part,tv_org+71  012310 10-93 equ check_status_no_stat,tv_org+72 012311 10-94 equ check_special_status,tv_org+73 012312 10-95 equ check_cpu_type,tv_org+74  012313 10-96 equ getportinfo,tv_org+75  10-97  10-98 " End of include file ...... bos_tv.incl.alm  10-99  906 include bos_common 11-1 "  11-2 " Begin include file ...... bos_common.incl.alm 11-3 " Modified on 8/31/76 by N. I. Morris  11-4 " Modified on 9/01/80 by Sherman D. Sprague for DPS8 operation  11-5 " Modified on 5/26/82 by Sherman D. Sprague to lengthen config size 11-6 " Modified on 3/01/83 by Sherman D. Sprague to lengthen dirlen  11-7 " MACHINE CONDITIONS AREA  11-8 " Its length is "storlen". 11-9  000000 11-10 equ amptwregs,0 Ass. Mem PTW registers  000100 11-11 equ amptwptr,64 Ass. Mem PTW pointers 000200 11-12 equ amsdwregs,128 Ass. Mem SDW registers  000400 11-13 equ amsdwptr,256 Ass. Mem SDW pointers  000500 11-14 equ ouhist,320 operations hist regs  000700 11-15 equ cuhist,448 control unit hist regs  001100 11-16 equ eishist,576 eis hist regs  001300 11-17 equ aphist,704 appending unit hist regs  001500 11-18 equ prs,832 pointer regs  001520 11-19 equ regs,848 sreg 001530 11-20 equ low_order_port,856 port to read clock from 001532 11-21 equ mctime,858 bootload memory clock  001540 11-22 equ scu,864  001550 11-23 equ mcm,872 memory masks 8 ports 001570 11-24 equ dbr,888  001572 11-25 equ intrpts,890 waiting interrupts 001573 11-26 equ bar,891 bar  001574 11-27 equ modereg,892 processor & cache mode registers  001576 11-28 equ faultreg,894 processor fault register  001600 11-29 equ ptrlen,896 pointer-lengths EIS 0 mod 8 001610 11-30 equ coreblocks,904 array of port information  11-31 " Bits 0-17 => num 1st 64-word block  11-32 " Bits 18-35 => num of 64-word blocks  11-33 " (-1) => no mem on this port  001620 11-34 equ lowport_cfg,912 Saved CFG from bootload SCU  11-35  002000 11-36 equ storlen,1024  11-37  11-38  11-39  11-40 " BOS COMMAND DIRECTORY 11-41 " Its length is "dirlen".  11-42  002000 11-43 equ dir,1024 ( 0-23) => sector # of first sector on BOS disk  11-44 " (24-35) => # of sectors in BOS common  002001 11-45 equ used,dir+1 ( 0-23) => # of next available sector on BOS disk  002002 11-46 equ useable,dir+2 ( 0-23) => first unavailable sector on BOS disk  002003 11-47 equ corearea,dir+3 ( 0-23) => starting sector of Multics core image  11-48 " (24-35) => # of sectors in Multics core image  002004 11-49 equ setuparea,dir+4 Sector and length of setup 002005 11-50 equ utilarea,dir+5 where utility package is kept  002010 11-51 equ iom_mxbase,dir+8 IOM IMW area address  002011 11-52 equ iom_mbbase,dir+9 IOM mailbox base  002012 11-53 equ bos_dvt,dir+10 BOS disk loc: (o3/iom,o6/chn,o9/drive,o18/devtype)  002013 11-54 equ unitgroup,dir+11 disk unitgroup (device no. or area no.)  002014 11-55 equ diskchanno,dir+12 channel to be used for disk  002015 11-56 equ tapechanno,dir+13 channel # for tapes  002016 11-57 equ rdrchanno,dir+14 channel number for card reader  002017 11-58 equ ttychanno,dir+15 channel # for operator's tty  002020 11-59 equ quietsw,dir+16 if on, don't print card and macro commands  002021 11-60 equ inputsw,dir+17 read from tty, cards, macros  002022 11-61 equ macroloc,dir+18 disk addr, buffer index of macro file  002023 11-62 equ fdump_state,dir+19 completion flag for last FDUMP  002024 11-63 equ d355_state,dir+20 = 1 if DataNet 355 loaded successfully  002025 11-64 equ skipsw,dir+21 if on, skip runcom lines 002026 11-65 equ ttypmtsw,dir+22 if on, prompt  002027 11-66 equ curtcmd,dir+23 current bos command 002030 11-67 equ readysw,dir+24 if on, print ready message  002032 11-68 equ cmdlst,dir+26 list of commands 11-69  000600 11-70 equ dirlen,384 11-71  11-72  11-73  11-74 " MACRO BUFFER AREA 11-75  002600 11-76 equ macrobuf,dir+dirlen io buffer for macro files 002700 11-77 equ macroline,macrobuf+64 runcom command line 002716 11-78 equ macroargs,macroline+14 argument descriptors for runcom  11-79  11-80  11-81  11-82 " CONFIGURATION CARD AREA  11-83 " Its length is 2048 words.  11-84  003000 11-85 equ conf,macrobuf+128 start of configuration info  007000 11-86 equ econf,conf+2048 end of configuration info  000020 11-87 equ confl,16 length of each line  11-88  11-89  007000 11-90 equ seg6length,econf length of bos_common area segment 11-91  11-92 " End of include file ...... bos_common.incl.alm  11-93  907  908  909  910 end  LITERALS 003720 aa 777717 171717 003721 aa 777777 770000 003722 aa 000777 777777 003723 aa 206225 636447 003724 aa 202064 633143 003725 aa 454321 222543 003726 aa 600000 000041 003727 aa 002012 000000 003730 aa 142157 163040 NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 003731 5a 000003 000000 003732 5a 000017 600000 003733 aa 000000 000000 003734 55 000010 000002 003735 5a 000002 400003 003736 55 000006 000010 003737 aa 006 154 157 141 003740 aa 144 144 155 000 003741 55 000002 000003 003742 6a 000000 400002 003743 55 000013 000003 003744 aa 014 163 171 155 symbol_table  003745 aa 142 157 154 137 003746 aa 164 141 142 154 003747 aa 145 000 000 000 DEFINITIONS HASH TABLE  003750 aa 000000 000015 003751 aa 000000 000000 003752 aa 000000 000000 003753 aa 000000 000000 003754 aa 000000 000000 003755 aa 000000 000000 003756 aa 000000 000000 003757 5a 000010 000000 003760 aa 000000 000000 003761 aa 000000 000000 003762 aa 000000 000000 003763 aa 000000 000000 003764 aa 000000 000000 003765 aa 000000 000000 NO EXTERNAL NAMES  NO TRAP POINTER WORDS  TYPE PAIR BLOCKS  003766 aa 000001 000000 003767 aa 000000 000000 INTERNAL EXPRESSION WORDS LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 003731 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 225745 751602 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000100 000002 000016 aa 000064 000000 000017 aa 000000 000555 000020 aa 000000 000310 000021 aa 000000 000534 000022 aa 000537 000310 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 000014 000066 aa 000146 000027 000067 aa 122721 273024 000070 aa 000000 112272 000071 aa 215560 600000 000072 aa 000154 000040 000073 aa 113400 415301 000074 aa 000000 111341 000075 aa 220414 400000 000076 aa 000164 000037 000077 aa 122721 272761 000100 aa 000000 112272 000101 aa 214176 200000 000102 aa 000174 000042 000103 aa 060666 223063 000104 aa 000000 106067 000105 aa 446456 600000 000106 aa 000205 000045 000107 aa 043243 126005 000110 aa 000000 103256 000111 aa 423770 000000 000112 aa 000217 000041 000113 aa 105543 476637 000114 aa 000000 110555 000115 aa 260135 200000 000116 aa 000230 000031 000117 aa 043243 130516 000120 aa 000000 104205 000121 aa 554413 200000 000122 aa 000237 000032 000123 aa 112741 326631 000124 aa 000000 111274 000125 aa 624414 000000 000126 aa 000246 000042 000127 aa 110044 377556 000130 aa 000000 111005 000131 aa 417043 600000 000132 aa 000257 000037 000133 aa 110044 377547 000134 aa 000000 111005 000135 aa 417017 600000 000136 aa 000267 000040 000137 aa 110235 072677 000140 aa 000000 111024 000141 aa 524460 600000 000142 aa 000277 000044 000143 aa 121622 277475 000144 aa 000000 112162 000145 aa 321563 400000 000146 aa 076163 160145 >spec>h>3.17>loaddm.alm 000147 aa 143076 150076 000150 aa 063056 061067 000151 aa 076154 157141 000152 aa 144144 155056 000153 aa 141154 155040 000154 aa 076154 144144 >ldd>bos>include>bosequ.incl.alm  000155 aa 076142 157163 000156 aa 076151 156143 000157 aa 154165 144145 000160 aa 076142 157163 000161 aa 145161 165056 000162 aa 151156 143154 000163 aa 056141 154155 000164 aa 076163 160145 >spec>h>3.17>bos_toequ.incl.alm 000165 aa 143076 150076 000166 aa 063056 061067 000167 aa 076142 157163 000170 aa 137164 157145 000171 aa 161165 056151 000172 aa 156143 154056 000173 aa 141154 155040 000174 aa 076154 144144 >ldd>bos>include>readtape.incl.alm  000175 aa 076142 157163 000176 aa 076151 156143 000177 aa 154165 144145 000200 aa 076162 145141 000201 aa 144164 141160 000202 aa 145056 151156 000203 aa 143154 056141 000204 aa 154155 040040 000205 aa 076154 144144 >ldd>bos>include>runcom_util.incl.alm  000206 aa 076142 157163 000207 aa 076151 156143 000210 aa 154165 144145 000211 aa 076162 165156 000212 aa 143157 155137 000213 aa 165164 151154 000214 aa 056151 156143 000215 aa 154056 141154 000216 aa 155040 040040 000217 aa 076154 144144 >ldd>bos>include>bos_sdw.incl.alm  000220 aa 076142 157163 000221 aa 076151 156143 000222 aa 154165 144145 000223 aa 076142 157163 000224 aa 137163 144167 000225 aa 056151 156143 000226 aa 154056 141154 000227 aa 155040 040040 000230 aa 076154 144144 >ldd>include>slt.incl.alm  000231 aa 076151 156143 000232 aa 154165 144145 000233 aa 076163 154164 000234 aa 056151 156143 000235 aa 154056 141154 000236 aa 155040 040040 000237 aa 076154 144144 >ldd>include>slte.incl.alm  000240 aa 076151 156143 000241 aa 154165 144145 000242 aa 076163 154164 000243 aa 145056 151156 000244 aa 143154 056141 000245 aa 154155 040040 000246 aa 076154 144144 >ldd>include>fs_vol_label.incl.alm  000247 aa 076151 156143 000250 aa 154165 144145 000251 aa 076146 163137 000252 aa 166157 154137 000253 aa 154141 142145 000254 aa 154056 151156 000255 aa 143154 056141 000256 aa 154155 040040 000257 aa 076154 144144 >ldd>include>disk_pack.incl.alm 000260 aa 076151 156143 000261 aa 154165 144145 000262 aa 076144 151163 000263 aa 153137 160141 000264 aa 143153 056151 000265 aa 156143 154056 000266 aa 141154 155040 000267 aa 076154 144144 >ldd>bos>include>bos_tv.incl.alm  000270 aa 076142 157163 000271 aa 076151 156143 000272 aa 154165 144145 000273 aa 076142 157163 000274 aa 137164 166056 000275 aa 151156 143154 000276 aa 056141 154155 000277 aa 076154 144144 >ldd>bos>include>bos_common.incl.alm  000300 aa 076142 157163 000301 aa 076151 156143 000302 aa 154165 144145 000303 aa 076142 157163 000304 aa 137143 157155 000305 aa 155157 156056 000306 aa 151156 143154 000307 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number  1256 .ascii loaddm: 288, 881.  1260 .bcd loaddm: 292, 882.  20 absi bos_toequ: 75. 1 acls.acl slt: 62. 13 acls.code slt: 66. 0 acls.count slt: 61. 11 acls.mode slt: 65. 1 acls.userid slt: 64. 600000 admin readtape: 75, 165.  12233 amaxio bos_tv: 48. 12224 amdvt bos_tv: 41. 12225 amfirst bos_tv: 42. 12226 amlast bos_tv: 43. 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 loaddm: 68, 69, 80, 87, 95, 118, 355, 424, 429, 774, 781, 795,  805, 813, 814, 858, 860, 864, 865, bos_tv: 14, 15.  12222 argbos bos_tv: 39. 17 arglen loaddm: 79, 80, 95, 354, 422, bosequ: 17, bos_tv: 15, 16, 17. 12223 argmul bos_tv: 40. 12201 arg_count bos_tv: 22. 1255 asciisw loaddm: 283, 297, 361, 880.  12255 asge bos_tv: 66. 12256 asgetab loaddm: 231, bos_tv: 67. 1435 backup readtape: 127, 132.  665 badwarm loaddm: 163, 166, 632. 607 bad_daddr loaddm: 615, 808, 818, 834.  566 bad_dmodel loaddm: 611, 776.  634 bad_label loaddm: 624, 846.  1573 bar bos_common: 26. 2 bf loaddm: 840, 845, 848, 854, 857, 859,  bosequ: 9, runcom_util: 72, 105, 118. 62 boot_entry loaddm: 57, 115.  1245 boscom loaddm: 40, 49, 871. 106 boslab loaddm: 143, 269.  12217 bosmul bos_tv: 36. 12214 bosphy bos_tv: 33. 1263 bostop loaddm: 102, 165, 199, 819, 887. 107 bos_boot loaddm: 110, 117, 144, 250.  3700 bos_dbr bos_toequ: 95. 2012 bos_dvt loaddm: 512, 540, 769, 777, 784, 791, 807, 817, 833, 839,  bos_common: 53. 22 bos_entry loaddm: 50, 75.  3660 bos_pr bos_toequ: 82. 12261 bzel bos_tv: 70. 12312 check_cpu_type bos_tv: 95. 12311 check_special_status bos_tv: 94. 12274 check_status bos_tv: 81. 12310 check_status_no_stat bos_tv: 93. 747 cherr loaddm: 543, 650.  2032 cmdlst bos_common: 68. 156 cold loaddm: 134, 136, 192. 6 com loaddm: 52, 53, 54, 90, 99, 101, 151, 158, 161, 164, 171, 195,  197, 200, 217, 224, 380, 385, 389, 486, 490, 499, 502, 512,  529, 535, 540, 546, 583, 586, 590, 593, 600, 769, 777, 784,  791, 807, 817, 833, 839, bosequ: 14, runcom_util: 24, 28, 31, 34, 115. 74 comtab loaddm: 116, 131, 141. 3000 conf bos_common: 85, 86.  20 confl bos_common: 87. 12272 connect_iom bos_tv: 79. 2003 corearea loaddm: 217, 529,  bos_common: 47. 1610 coreblocks bos_common: 30. 60000 coresaved loaddm: 214, bos_toequ: 43, 65.  1 cow loaddm: 550, bos_toequ: 127. 1000 cowsav loaddm: 589, bos_toequ: 142. 700 cuhist bos_common: 15. 2027 curtcmd bos_common: 66. 12270 cvclock bos_tv: 77. 12210 cvinit bos_tv: 29. 12227 cvnamla bos_tv: 44. 61 cycle loaddm: 71, 114, 127, 138, 609, 613, 618, 622, 626, 630, 634, 638.  2024 d355_state bos_common: 63. 12060 darg loaddm: 83, 788,  bos_tv: 15, 16.  1570 dbr bos_common: 24. 1750 DEFAULT_HCPART_SIZE disk_pack: 20. 576 devid loaddm: 513, bos_toequ: 140. 565 die loaddm: 159, 216, 223, 377, 395, 409, 506, 596, 601, 609.  2000 dir loaddm: 99, 161, 195, 583,  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. 1003 dirbase loaddm: 584, bos_toequ: 145. 1254 dirflag loaddm: 268, 284, 309, 320, 379, 878.  600 dirlen bos_common: 70, 76.  1264 dirorig loaddm: 100, 156, 162, 194, 208, 598, 809, 888.  702 dir_err loaddm: 206, 210, 636. 2014 diskchanno bos_common: 55. 12236 disk_brief bos_tv: 51. 0 ds loaddm: 107, bosequ: 7. 3700 dseg bos_toequ: 96. 4 DUMPER_BIT_MAP_ADDR disk_pack: 15. 12100 earg bos_tv: 16, 17.  7000 econf loaddm: 204, 888,  bos_common: 86, 90.  1100 eishist bos_common: 16. 463 end loaddm: 175, 420, 434, 486.  377 endtape loaddm: 281, 344, 414, 417.  100000 eor readtape: 73, 164.  1444 eot readtape: 74, 136.  12243 erbuf bos_tv: 56. 12242 ercv bos_tv: 55. 12241 erpt loaddm: 123, 427, 611, 616, 620, 624, 628, 632, 636, 640, 645, 650,  655, 660, 862, readtape: 143, runcom_util: 40, 87,  bos_tv: 54. 15 execint loaddm: 43, 61.  564 exit_loaddm_to_setup loaddm: 106, 603.  1576 faultreg bos_common: 28. 2023 fdump_state bos_common: 62. 5 fgb bosequ: 13. 12305 find_disk bos_tv: 90. 12307 find_part bos_tv: 92. 12306 find_root bos_tv: 91. 2000 firmware_bit bosequ: 20. 12120 fltscu bos_tv: 17. 733 fverr loaddm: 497, 645.  100 fvloc loaddm: 34, 496.  1262 fw. loaddm: 315, 885.  12253 geas bos_tv: 64. 12254 geastab bos_tv: 65. 1140 getbase loaddm: 147, 192, 767. 1177 getbase.label loaddm: 797, 829.  1161 getbase.records loaddm: 801, 867.  1175 getbase.xit loaddm: 768, 821.  12264 getconf bos_tv: 73. 306 getlen loaddm: 316, 322.  12265 getmore bos_tv: 74. 12273 getmpc bos_tv: 80. 307 getnam loaddm: 306, 310, 324. 12266 getperiph bos_tv: 75. 12313 getportinfo bos_tv: 96. 12250 getprt bos_tv: 61. 12207 getsec loaddm: 205, 215, 222, bos_tv: 28. 442 get_ascii_line loaddm: 404, 461.  12275 get_special_interrupt bos_tv: 82. 12276 get_status_interrupt bos_tv: 83. 12304 hexwd bos_tv: 89. 1400 imbx loaddm: 487, 491, 549, 552, 699, 700, 702, 704, 705, 706, 707, 709,  716, 726, 728, 734, 740, 744,  bos_toequ: 67. 12300 initint loaddm: 42, bos_tv: 85. 12271 init_io loaddm: 45, bos_tv: 78. 2021 inputsw loaddm: 183, runcom_util: 31, 34,  bos_common: 60. 12302 intno bos_tv: 87. 1572 intrpts bos_common: 25. 12303 intrpts1 bos_tv: 88. 1 iom_cow loaddm: 36, 588.  2011 iom_mbbase loaddm: 179, 486, 586, bos_common: 52. 2010 iom_mxbase loaddm: 178, 490, 590, bos_common: 51. 12237 itaper loaddm: 248, bos_tv: 52. 12240 itapew bos_tv: 53. 27 kcin loaddm: 523, 524, 707, 732.  23 kcout loaddm: 521, 522, 531, 705, 724, 726, 734. 32 kcxfer loaddm: 728, 739.  1464 kind loaddm: 279, 341, 346, readtape: 15, 137, 150. 1100 kprog loaddm: 517, 519, 520, 521, 522, 523, 524, 531, 538, 544, 550, 580,  694, 699, 700, 702, 714, 724, 732, 739.  16 ksin loaddm: 519, 520, 538, 706, 714, 716.  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 loaddm: 857, 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 loaddm: 845, fs_vol_label: 19.  400000 label.not_used fs_vol_label: 33.  551 label.not_used_word fs_vol_label: 32.  1003 label.nparts loaddm: 848, fs_vol_label: 69.  1006 label.nrec loaddm: 859, fs_vol_label: 74.  546 label.n_pv_in_lv fs_vol_label: 28.  1004 label.part loaddm: 854, 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.  0 LABEL_ADDR loaddm: 830, disk_pack: 13. 623 label_err loaddm: 620, 841.  2000 label_size fs_vol_label: 15.  12206 ldcom bos_tv: 27. 1252 length loaddm: 272, 348, 373, 876.  12001 line loaddm: 473, runcom_util: 137, bos_tv: 13, 14.  12257 ljust bos_tv: 68. 2000 lnbf bos_toequ: 57, 61, 104. 7000 lncom bos_toequ: 60, 63, 116, 136.  40 lnds bos_toequ: 54, 55, 98. 100 lnflagbox bos_toequ: 52, 113.  777777 lnmem bos_toequ: 45, 119.  27000 lnpgm bos_toequ: 65, 101.  10000 lnsetup loaddm: 221, 718,  bos_toequ: 48, 58, 107. 342 loadit loaddm: 351, 361.  367 load_ascii loaddm: 362, 400.  12220 lookup_devmodel loaddm: 775, bos_tv: 37. 1620 lowport_cfg bos_common: 34. 1530 low_order_port bos_common: 20. 11 lpwr bos_toequ: 128. 2716 macroargs bos_common: 78. 2600 macrobuf runcom_util: 28, bos_common: 76, 77, 85. 2700 macroline bos_common: 77, 78.  2022 macroloc runcom_util: 24, bos_common: 61. 0 mainc loaddm: 27, 29.  12205 makefil loaddm: 376, runcom_util: 111, bos_tv: 26. 12221 makesdw loaddm: 105, bos_tv: 38. 3563 make_runcom_file loaddm: 403, runcom_util: 54. 3603 mark runcom_util: 60, 78.  10000 maxw loaddm: 748, 750,  bos_toequ: 72. 76036 MAX_VTOCE_PER_PACK disk_pack: 21. 1001 mbbasesav loaddm: 587, bos_toequ: 143. 2264 mbufl runcom_util: 6, 67.  720 mbxerr loaddm: 488, 492, 640. 575 mbxloc loaddm: 553, bos_toequ: 139. 1550 mcm bos_common: 23. 1532 mctime bos_common: 21. 7 mem loaddm: 76, 79, 505, 513, 547, 549, 553, 581, 584, 587, 588, 589,  591, 595, 604, bosequ: 15. 3566 mkrloop runcom_util: 59, 75.  3606 mkrx0 runcom_util: 56, 82, 90. 3605 mkrx2 runcom_util: 55, 59, 81, 89.  1574 modereg bos_common: 27. 12216 mulbos loaddm: 806, 816, 832, bos_tv: 35. 1265 Multics_label loaddm: 844, 890.  1002 mxbasesav loaddm: 591, bos_toequ: 144. 1253 name loaddm: 270, 330, 333, 335, 352, 372, 382, 407, 877. 1 name_seg.ht slt: 35. 0 name_seg.next_loc slt: 33. 201 name_seg_size slt: 31. 12 ncoms loaddm: 119, 141.  12202 nextline loaddm: 114, bos_tv: 23. 12203 nlraw bos_tv: 24. 761 nosetup loaddm: 503, 655.  277 not_ascii loaddm: 294, 313.  773 noutil loaddm: 500, 660.  7 nsave loaddm: 149, 168, 186, 189.  12252 octwd bos_tv: 63. 1250 offlen loaddm: 303, 401, 462, 480, 875. 20000 origbf bos_toequ: 58, 61, 103. 22000 origcom bos_toequ: 61, 63, 115, 136.  7740 origds bos_toequ: 55, 97.  10020 origflagbox bos_toequ: 51, 112.  0 origmem bos_toequ: 46, 118.  31000 origpgm loaddm: 31, bos_toequ: 63, 64, 65, 100.  10000 origsetup loaddm: 505, 513, 547, 553, 581, 584, 587, 589, 591, 595, 604, 718,  742, 744, 747, 748, 750, bos_toequ: 49, 51, 55, 58, 106. 500 ouhist bos_common: 14. 4000 ovflm bos_toequ: 76, readtape: 90. 12000 pagectl loaddm: 241, runcom_util: 71, 142,  bos_tv: 12, 13.  650 part_err loaddm: 628, 853.  16 patch loaddm: 68, 140.  0 path.acls slt: 56. 1 path.name slt: 55. 0 path.size slt: 54. 0 pcw loaddm: 517, 544, 704, bos_toequ: 126. 3 pgm bosequ: 10. 31000 pgmorg bos_toequ: 64. 12215 phyadd bos_tv: 34. 12213 phybos bos_tv: 32. 31000 program_base loaddm: 31. 1500 prs bos_common: 18. 1600 ptrlen bos_common: 29. 12251 punch bos_tv: 62. 2020 quietsw loaddm: 184, bos_common: 59. 3656 rctemp runcom_util: 15, 42, 63, 66, 102, 110, 151. 12267 rdclock bos_tv: 76. 12211 rdev loaddm: 838, bos_tv: 30. 2016 rdrchanno loaddm: 181, bos_common: 57. 12234 rdsec loaddm: 157, 504,  runcom_util: 27, bos_tv: 49. 12246 readcd bos_tv: 59. 1275 readtape loaddm: 277, 339,  readtape: 5. 12247 readtty bos_tv: 60. 2030 readysw bos_common: 67. 1465 recno loaddm: 235, readtape: 54, 111, 151. 12232 rec_per_dev_list bos_tv: 47. 1520 regs bos_common: 19. 132 restloop loaddm: 169, 173.  37 rewpu bos_toequ: 69, 98, 101, 104, 107, 113, 116, 119.  12260 rjust loaddm: 334, bos_tv: 69. 3654 rllx2 runcom_util: 134, 147.  3561 rserr runcom_util: 29, 44.  3552 rsnf runcom_util: 18, 21, 40. 203 rtape loaddm: 111, 226, 230. 246 rtloop loaddm: 251, 276, 347, 356, 397, 405, 410. 315 rtmvt1 loaddm: 232, 331.  454 rtmvt2 loaddm: 233, 474.  1337 rtx1 readtape: 6, 47.  1336 rtx2 readtape: 5, 46.  1335 rtxit readtape: 45, 140.  4000 runcom_bit bosequ: 19. 3642 runcom_line_len runcom_util: 62, 133.  3530 runcom_setup runcom_util: 13. 3610 runcom_too_big runcom_util: 68, 86.  147 savebuf loaddm: 152, 170, 189. 140 savelist loaddm: 150, 169, 178, 186.  112 saveloop loaddm: 150, 154.  12200 scan bos_tv: 21. 424 scaname loaddm: 441, 457.  1540 scu bos_common: 22. 14 scwr bos_toequ: 124. 14 sdw.add_shift bos_sdw: 4. 377770 sdw.bound 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. 12204 search runcom_util: 17, bos_tv: 25. 3 SECTORS_PER_VTOCE disk_pack: 18. 12230 sect_per_cyl_list bos_tv: 45. 12231 sect_per_dev_list bos_tv: 46. 3700 seg0 bos_toequ: 97. 3702 seg1 bos_toequ: 100. 3704 seg2 bos_toequ: 103. 3706 seg3 bos_toequ: 106. 3710 seg4 bos_toequ: 109. 3712 seg5 bos_toequ: 112. 3714 seg6 bos_toequ: 115. 7000 seg6length bos_common: 90. 3716 seg7 bos_toequ: 118. 0 segnam.count slt: 41. 1 segnam.hp slt: 44. 2 segnam.name slt: 49. 1 segnam.names slt: 42. 400000 segnam.ref slt: 45. 7777 segnam.segno_mask slt: 47. 0 segnam.segno_shift slt: 46. 1261 selectsw loaddm: 97, 350, 419, 884.  264 setascii loaddm: 289, 297.  274 setbcd loaddm: 293, 308.  2004 setuparea loaddm: 224, 385, 502, 535, 593, bos_common: 49. 2025 skipsw bos_common: 64. 5 slt.first_init_seg slt: 21. 3 slt.first_sup_seg slt: 19. 7 slt.free_core_size slt: 23. 2 slt.free_core_start slt: 18. 6 slt.last_init_seg slt: 22. 4 slt.last_sup_seg slt: 20. 0 slt.name_seg_ptr slt: 17. 10 slt.seg slt: 24. 10 slt.slte slt: 26. 10000 slte.abs_seg slte: 86. 1 slte.abs_seg_word slte: 85. 17 slte.access_mask slte: 82. 40 slte.access_shift slte: 81. 1 slte.access_word slte: 80. 1 slte.acl_provided slte: 98. 1 slte.acl_provided_word slte: 97. 0 slte.bit_count_shift slte: 130. 3 slte.bit_count_word loaddm: 300, slte: 129. 40000 slte.branch_required slte: 100. 1 slte.branch_required_word slte: 99.  20000 slte.cache slte: 84. 1 slte.cache_word slte: 83. 400 slte.combine_link slte: 112. 1 slte.combine_link_word slte: 111. 777 slte.cur_length_mask slte: 120. 33 slte.cur_length_shift slte: 119. 2 slte.cur_length_word slte: 118. 100 slte.defs slte: 116. 1 slte.defs_word slte: 115. 4000 slte.firmware_seg slte: 88. 1 slte.firmware_seg_word slte: 87. 20000 slte.init_seg slte: 102. 1 slte.init_seg_word slte: 101. 2000 slte.layout_seg slte: 90. 1 slte.layout_seg_word slte: 89. 4000 slte.link_provided slte: 106. 1 slte.link_provided_word slte: 105. 2000 slte.link_sect slte: 108. 1000 slte.link_sect_wired slte: 110. 1 slte.link_sect_wired_word slte: 109.  1 slte.link_sect_word slte: 107. 777 slte.max_length_mask slte: 128. 30 slte.max_length_shift slte: 127. 3 slte.max_length_word slte: 126. 0 slte.names_ptr slte: 77. 20 slte.paged slte: 94. 1 slte.paged_word slte: 93. 0 slte.path_ptr slte: 78. 10 slte.per_process slte: 96. 1 slte.per_process_word slte: 95. 200 slte.pre_linked slte: 114. 1 slte.pre_linked_word slte: 113. 7 slte.ringbrack_mask slte: 123. 30 slte.ringbrack_shift slte: 122. 2 slte.ringbrack_word slte: 121. 2 slte.segno slte: 124. 10000 slte.temp_seg slte: 104. 1 slte.temp_seg_word slte: 103. 40 slte.wired slte: 92. 1 slte.wired_word slte: 91. 4 slte_size loaddm: 314, 322, 329, 440, 442, 452,  slte: 75. 10000 slte_uns.abs_seg slte: 26. 1 slte_uns.abs_seg_word slte: 25. 17 slte_uns.access_mask slte: 22. 40 slte_uns.access_shift slte: 21. 1 slte_uns.access_word slte: 20. 1 slte_uns.acl_provided slte: 38. 1 slte_uns.acl_provided_word slte: 37.  0 slte_uns.bit_count_shift slte: 70.  3 slte_uns.bit_count_word slte: 69. 40000 slte_uns.branch_required slte: 40.  1 slte_uns.branch_required_word slte: 39.  20000 slte_uns.cache slte: 24. 1 slte_uns.cache_word slte: 23. 400 slte_uns.combine_link slte: 52. 1 slte_uns.combine_link_word slte: 51.  777 slte_uns.cur_length_mask slte: 60.  33 slte_uns.cur_length_shift slte: 59.  2 slte_uns.cur_length_word slte: 58.  100 slte_uns.defs slte: 56. 1 slte_uns.defs_word slte: 55. 4000 slte_uns.firmware_seg slte: 28. 1 slte_uns.firmware_seg_word slte: 27.  20000 slte_uns.init_seg slte: 42. 1 slte_uns.init_seg_word slte: 41. 2000 slte_uns.layout_seg slte: 30. 1 slte_uns.layout_seg_word slte: 29.  4000 slte_uns.link_provided slte: 46. 1 slte_uns.link_provided_word slte: 45.  2000 slte_uns.link_sect slte: 48. 1000 slte_uns.link_sect_wired slte: 50.  1 slte_uns.link_sect_wired_word slte: 49.  1 slte_uns.link_sect_word slte: 47. 777 slte_uns.max_length_mask slte: 68.  30 slte_uns.max_length_shift slte: 67.  3 slte_uns.max_length_word slte: 66.  0 slte_uns.names_ptr slte: 17. 20 slte_uns.paged slte: 34. 1 slte_uns.paged_word slte: 33. 0 slte_uns.path_ptr slte: 18. 10 slte_uns.per_process slte: 36. 1 slte_uns.per_process_word slte: 35.  200 slte_uns.pre_linked slte: 54. 1 slte_uns.pre_linked_word slte: 53.  7 slte_uns.ringbrack_mask slte: 63. 30 slte_uns.ringbrack_shift slte: 62.  2 slte_uns.ringbrack_word slte: 61. 2 slte_uns.segno slte: 64. 10000 slte_uns.temp_seg slte: 44. 1 slte_uns.temp_seg_word slte: 43. 40 slte_uns.wired slte: 32. 1 slte_uns.wired_word slte: 31. 4 slte_uns_size slte: 15. 100010 slt_size slt: 14. 3640 srferr runcom_util: 112, 119, 125. 3636 srfx2 runcom_util: 101, 121, 125. 2 statq loaddm: 709, bos_toequ: 125. 3620 store_runcom_file loaddm: 408, runcom_util: 100. 2000 storlen bos_common: 36. 12262 stripa bos_tv: 71. 12263 stripg runcom_util: 136, bos_tv: 72. 406 ststl loaddm: 423, 432.  417 ststn loaddm: 425, 431.  422 suffixt loaddm: 287, 291, 438. 200 swaplen loaddm: 580, 581, 742, 744,  bos_toequ: 137, 139, 140, 141.  3550 sx2 runcom_util: 14, 36, 44. 1474 tapdev readtape: 123, 159.  2015 tapechanno loaddm: 52, 53, 54, 90, 180, bos_common: 56. 1473 tapeno loaddm: 55, 91, 245, 249, 255, 260, 416, readtape: 64, 129, 158. 1450 tapfatal readtape: 124, 143.  1432 tback readtape: 113, 123.  1520 tbuf readtape: 14, 35, 82, 156, 171. 1466 tbufd loaddm: 238, readtape: 9, 80, 116, 152.  1467 tbufi loaddm: 237, readtape: 8, 10, 44, 153.  2000 tbufl loaddm: 236, 259, 263, 271,  readtape: 63, 156, 167, 171.  1246 temp loaddm: 298, 305, 444, 446, 447, 467, 470, 476, 478, 872.  1341 tfill readtape: 12, 23, 52. 1430 tfx0 readtape: 53, 119, 139. 1427 tfx2 readtape: 52, 118.  1510 thdr loaddm: 259, 265,  readtape: 56, 57, 63, 67, 68, 72, 78, 92, 106, 170.  1476 tkw readtape: 69, 87, 162. 1470 tlrl readtape: 25, 27, 29, 154.  1 tmp loaddm: 107, 266, 300, 314, 322, 329, 394, 440, 442, 452, 464, 472,  bosequ: 8, readtape: 36, 45.  3660 toec loaddm: 23, 29.  1000 toelen loaddm: 537, 581, 718, 742, 747, 748, 750, bos_toequ: 135, 139, 140, 141, 142, 143, 144, 145.  31000 toesaved loaddm: 750, bos_toequ: 136. 1344 trbuf readtape: 56, 70, 76, 88, 107, 114, 133. 1471 trlen readtape: 30, 38, 39, 40, 41, 155.  1311 trlp readtape: 21, 42.  1472 ttlr readtape: 58, 83, 100, 109, 156. 577 ttychan loaddm: 547, bos_toequ: 141. 2017 ttychanno loaddm: 182, 546,  bos_common: 58. 12245 ttyinit loaddm: 46, bos_tv: 58. 2026 ttypmtsw bos_common: 65. 15 ttyrequest loaddm: 47, 62.  12200 tv_org bos_tv: 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,  44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,  56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,  68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,  80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,  92, 93, 94, 95, 96. 12244 type bos_tv: 57. 2013 unitgroup bos_common: 54. 2002 useable loaddm: 101, 164, 200, bos_common: 46. 2001 used loaddm: 197, bos_common: 45. 2005 utilarea loaddm: 389, 499,  bos_common: 50. 12000 utilorg bosequ: 22, bos_tv: 12, 19.  1 VOLMAP_ADDR disk_pack: 14. 5 VTOCES_PER_RECORD disk_pack: 19. 6 VTOC_MAP_ADDR disk_pack: 16. 10 VTOC_ORIGIN disk_pack: 17. 12301 wantflt bos_tv: 86. 110 warm loaddm: 132, 147.  12212 wdev bos_tv: 31. 344 wdisk loaddm: 273, 371.  12235 wtsec loaddm: 393, 594, 599, runcom_util: 117, bos_tv: 50. 12277 xio_wait loaddm: 243, 253, 258, 414,  readtape: 62, 127,  bos_tv: 84. 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