ASSEMBLY LISTING OF SEGMENT >spec>h>3.17>apnd.alm ASSEMBLED ON: 11/29/83 1517.1 mst Tue OPTIONS USED: list ASSEMBLED BY: ALM Version 6.6 November 1982 ASSEMBLER CREATED: 09/21/83 1227.3 mst Wed  1 " ***********************************************************  2 " * *  3 " * Copyright, (C) Honeywell Information Systems Inc., 1982 *  4 " * *  5 " ***********************************************************  6 " APND - Appending Simulation Package for BOS.  7 "  8 " Last Modified: (Date and Reason)  9 " 06/02/72 by Noel Morris & Bill Silver to run on 645F.  10 " Various times in 1975 by Bernard Greenberg for NSS  11 " April 1982 by J. Bongiovanni to work with more than 8 Meg. addresses  12 " July 1982 by Sherman D. Sprague to allow cmp to live in it's own seg. 13 " September 1983 by Sherman D. Sprague to delete PD support.  14  15 " ******************************************************  16 " * *  17 " * *  18 " * Copyright (c) 1972 by Massachusetts Institute of *  19 " * Technology and Honeywell Information Systems, Inc. *  20 " * *  21 " * *  22 " ******************************************************  23  24  25  26 " ****** THE FOLLOWING EQU'S ARE SUBJECT TO CHANGE. ******  000007 27 bool sltsegno,7 segment # of the SLT  28  29  30 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  31 include config_cards  2-1 " 2-2 " Begin include file ...... config_cards.incl.alm  2-3 " 3/75 THVV nss 2-4 " Last modified 3/12/76 by Noel I. Morris  2-5  000001 2-6 equ ROOT_cd.sub,1  000002 2-7 equ ROOT_cd.drive,2  2-8  000001 2-9 equ PART_cd.name,1 000002 2-10 equ PART_cd.sub,2  000003 2-11 equ PART_cd.drive,3  2-12  000001 2-13 equ PRPH_cd.sub,1  000002 2-14 equ PRPH_cd.iom,2  000003 2-15 equ PRPH_cd.chn,3  000004 2-16 equ PRPH_cd.model,4  2-17  000001 2-18 equ DISK_cd.sub,1  000002 2-19 equ DISK_cd.iom,2  000003 2-20 equ DISK_cd.chn,3  000004 2-21 equ DISK_cd.nchan,4  000005 2-22 equ DISK_cd.model,5  000006 2-23 equ DISK_cd.ndrives,6  2-24  000001 2-25 equ CHNL_cd.sub,1  000002 2-26 equ CHNL_cd.iom,2  000003 2-27 equ CHNL_cd.chn,3  000004 2-28 equ CHNL_cd.nchan,4  2-29  000001 2-30 equ BULK_cd.frec,1 000002 2-31 equ BULK_cd.nrec,2 2-32  2-33 " End of include file ...... config_cards.incl.alm  2-34  32  33  000020 34 bool flagbox,20 location of flagbox in SETUP  35 include fgbx  3-1  3-2 "BEGIN INCLUDE FILE fgbx.incl.alm  3-3  3-4 " Reconstructed by BSG 8/30/78 from a listing of Noel's;  3-5 " Apparently, the version of 10/07/76 got lost. 3-6 " Modified 8/79 by R.J.C. Kissel to add 32 words for FNP blast message. 3-7 " Modified 7/82 BIM -- 8 words for sentinel, and sentinel  3-8 " macro.  3-9  3-10 "  3-11 " Structure fgbx  3-12 "  000100 3-13 equ fgbx_size,64  3-14  000000 3-15 equ fgbx.flags_word,0  400000 3-16 bool fgbx.flags,400000 "DU  3-17  000001 3-18 equ fgbx.slt_segno,1 "UPPER  3-19  000002 3-20 equ fgbx.cpus,2 "LEVEL 2  3-21  000034 3-22 equ fgbx.ports_shift,28  000571 3-23 equ fgbx.ports_mask,000377 000025 3-24 equ fgbx.tags_shift,21 000007 3-25 equ fgbx.tags_mask,000007  3-26  000003 3-27 equ fgbx.rtb,3 "LEVEL 2  3-28  400000 3-29 bool fgbx.ssenb,400000 "DU  200000 3-30 bool fgbx.call_bos,200000 "DU  100000 3-31 bool fgbx.shut,100000 "DU 040000 3-32 bool fgbx.mess,040000 "DU 020000 3-33 bool fgbx.alert,020000 "DU  000000 3-34 equ fgbx.bos_entry_shift,0 000077 3-35 bool fgbx.bos_entry_mask,000077  3-36  000004 3-37 equ fgbx.sentinel,4 "DOUBLE  000014 3-38 equ fgbx.sst_sdw,12 "DOUBLE  000016 3-39 equ fgbx.hc_dbr,14 "DOUBLE  000020 3-40 equ fgbx.message,16 "DOUBLE  000040 3-41 equ fgbx.fnp_blast,32 "DOUBLE 3-42  3-43 macro flagbox_sentinel 1 3-44 aci "Flagbox && Toehold Valid",32  2 3-45 &end  3-46  3-47 "END INCLUDE FILE fgbx.incl.alm  36  37  38 include apnd_equ  4-1 " 4-2 " Begin include file ...... apnd_equ.incl.alm  4-3 " Created 11/19/72 by N. I. Morris  4-4 " modified 5/19/75 by Noel I. Morris  4-5 " Modified 8/79 by R.J.C. Kissel to use expanded BOS.  4-6 " Modidied 7/82 by Sherman D. Sprague to add cmpsdw.  4-7  007000 4-8 bool apnd_org,7000 4-9  007000 4-10 equ cmdbr,apnd_org+0 DBR of process being examined  007002 4-11 equ hcdbr,apnd_org+2 hardcore DBR value  007004 4-12 equ fetchout,apnd_org+4 used to reference block fetched by fetch  007006 4-13 equ read_args,apnd_org+6 last block fetched by fetch  007010 4-14 equ fetchin,apnd_org+8 absadr of word to be fetched  007011 4-15 equ sltseg,apnd_org+9 SLT segment number  007012 4-16 equ bosdmp,apnd_org+10 non-zero if BOS itself is to be fetched  007013 4-17 equ pagesw,apnd_org+11 non-zero if paging to be simulated 007014 4-18 equ pmlsw,apnd_org+12 non-zero if PML to be simulated 007016 4-19 equ sstsdw,apnd_org+14 SDW of SST segment 007020 4-20 equ cmpsdw,apnd_org+16 SDW of CMP segment 007022 4-21 equ castap,apnd_org+18 offset of first ASTE in SST segment  4-22  007026 4-23 equ getinit,apnd_org+22 initialize appending package  007027 4-24 equ getsdw,apnd_org+23 fetch an SDW  007030 4-25 equ getwd,apnd_org+24 fetch a word  007031 4-26 equ grab,apnd_org+25 fetch from a list  007032 4-27 equ apnd,apnd_org+26 appending simulation 007033 4-28 equ unapnd,apnd_org+27 to modify a segment  007034 4-29 equ get,apnd_org+28 get a block of data  007035 4-30 equ put,apnd_org+29 write a block of data 007036 4-31 equ comp,apnd_org+30 compare a block of data  007037 4-32 equ fetch,apnd_org+31 to fetch core  007040 4-33 equ unfetch,apnd_org+32 to rewrite fetched buffer 007041 4-34 equ fetch_use_buffer,apnd_org+33 to set SDW to appending buffer  007042 4-35 equ sltsearch,apnd_org+34 get segment # given name 007043 4-36 equ getsltname,apnd_org+35 get name of segment 007044 4-37 equ pd_check,apnd_org+36 check for page on paging device  007045 4-38 equ pd_modify,apnd_org+37 turn on modified bit in pdmap  007046 4-39 equ pd_getptr,apnd_org+38 get pointer to pdmap entry  007047 4-40 equ pvt_to_devt,apnd_org+39 convert pvtx to device type wd 4-41  4-42 " End of include file ...... apnd_equ.incl.alm  4-43  39  40 " 41  007000 42 org apnd_org  43  44  007000 45 org cmdbr  007000 46 bss ,2 47  007002 48 org hcdbr  007002 aa 000000 000004 49 vfd 24/0,9/0,3/4,o15/077777,3/5,18/0  007003 aa 777775 000000 50  007004 51 org fetchout  007004 aa 000001 000043 52 its tmp,0  007005 aa 000000 000000 53  007006 54 org read_args  007006 55 bss ,2 56  007010 57 org fetchin  007010 58 bss ,1 59  007011 60 org sltseg 007011 aa 000007 000000 61 zero sltsegno  62  007012 63 org bosdmp 007012 aa 000000 000000 64 oct 0  65  007013 66 org pagesw 007013 aa 000000 000001 67 oct 1  68  007014 69 org pmlsw  007014 aa 000000 000001 70 oct 1  71  007016 72 org sstsdw 007016 73 bss ,2 74  007020 75 org cmpsdw 007020 76 bss ,2 77  007022 78 org castap 007022 0a 007215 0000 00 79 arg castap_  80  81  007026 82 org getinit  007026 0a 007050 7100 00 83 tra getinit_  84  007027 85 org getsdw 007027 0a 007231 7100 00 86 tra getsdw_  87  007030 88 org getwd  007030 0a 007030 7100 00 89 tra *  90  007031 91 org grab  007031 0a 007252 7100 00 92 tra grab_  93  007032 94 org apnd  007032 0a 007300 7100 00 95 tra apnd_  96  007033 97 org unapnd 007033 0a 007507 7100 00 98 tra unapnd_  99  007034 100 org get  007034 0a 010064 7100 00 101 tra get_  102  007035 103 org put  007035 0a 010100 7100 00 104 tra put_  105  007036 106 org comp  007036 0a 010071 7100 00 107 tra comp_  108  007037 109 org fetch  007037 0a 007743 7100 00 110 tra fetch_ 111  007040 112 org unfetch  007040 0a 010037 7100 00 113 tra unfetch_  114  007041 115 org fetch_use_buffer  007041 0a 010021 7100 00 116 tra fetch_use_buffer_  117  007042 118 org sltsearch  007042 0a 010170 7100 00 119 tra sltsearch_ 120  007043 121 org getsltname 007043 0a 010253 7100 00 122 tra getsltname_  123  007044 124 org pd_check  007044 0a 010470 7100 00 125 tra pd_check_  126  007045 127 org pd_modify  007045 0a 010502 7100 00 128 tra pd_modify_ 129  007046 130 org pd_getptr  007046 0a 010477 7100 00 131 tra pd_getptr_ 132  007047 133 org pvt_to_devt  007047 0a 007634 7100 00 134 tra pvt_to_devt_  135  136  137 " 138  139  140 " This is the getinit subroutine.  141 " tsx2 getinit after changing dbr or sup segnos 142  007050 0a 007167 7420 00 143 getinit_: stx2 gsdsx2 save xrs 144  145  146 " The first time getinit is called, the length of the appending buffer should  147 " be supplied in AU. This length will be used to construct an SDW for segment BF.  148  007051 0a 007052 7100 00 149 initbf: tra *+1 execute this code once only  150  007052 0a 007601 7550 00 151 sta dmpbufl save length of buffer 007053 aa 000030 7710 00 152 arl 18+6 shift to AL and divide by 64 007054 0a 007600 7550 00 153 sta dmpbufsec save number of 64-word sectors  007055 aa 000027 7350 00 154 als 18+3+2 shift to SDW bound position  007056 aa 000010 1350 03 155 sbla =o10,du compute bound  007057 0a 007577 2550 00 156 orsa apnd_sdw+1 and insert in SDW for apnd 157  158  159 " Get the hardcore DBR, the SST SDW, and the SLT segment number from the flagbox region.  160  007060 aa 1 00034 2371 00 161 ldaq tmp|flagbox+fgbx.sst_sdw Get SDW for SST segment.  007061 aa 007016 7570 00 162 staq sstsdw ..  007062 aa 1 00036 2371 00 163 ldaq tmp|flagbox+fgbx.hc_dbr Get hardcore DBR value.  007063 aa 007002 7570 00 164 staq hcdbr .. 007064 aa 1 00021 2351 00 165 lda tmp|flagbox+fgbx.slt_segno Get segment # of the SLT.  007065 0a 007067 6000 00 166 tze *+2 If nonzero, save it.  007066 aa 007011 7550 00 167 sta sltseg .. 168  169  170 " Save list of alphabetically sorted disk subsystems.  171  007067 aa 000000 6260 00 172 eax6 0 initialize subsystem index 007070 0a 010614 2350 00 173 lda =aprph prepare to find PRPH cards for disks  007071 aa 012264 7020 00 174 tsx2 getconf look for first one  007072 0a 007102 7100 00 175 tra enddisk stop when failure 007073 aa 6 00001 2361 17 176 ldq com|DISK_cd.sub,7 get subsystem name  007074 0a 010615 3760 00 177 anq =o777777777000 mask out last character 007075 0a 010616 1160 00 178 cmpq =3adsk must be "dskn"  007076 aa 012265 6010 00 179 tnz getmore otherwise, go for another card  007077 0a 007715 7470 16 180 stx7 disklist,6 save config card pointer  007100 aa 000001 6260 16 181 eax6 1,6 step subsystem index 007101 aa 012265 7100 00 182 tra getmore look for another DISK card  183  007102 0a 007714 7460 00 184 enddisk: stx6 ndisks save number of subsystems 007103 aa 777777 6260 16 185 eax6 -1,6 start with last element 007104 0a 007122 6044 00 186 srtdisk1: tmoz dsksrted if so, exit from loop  187  007105 aa 777777 6240 16 188 eax4 -1,6 simple interchange sort 007106 0a 007120 6040 00 189 srtdisk2: tmi srtdisk3 test for inner loop completion  190  007107 0a 007715 2270 16 191 ldx7 disklist,6 get pointers to two cards  007110 aa 6 00001 2351 17 192 lda com|DISK_cd.sub,7 and sort on subsystem names  007111 0a 007715 2250 14 193 ldx5 disklist,4 .. 007112 aa 6 00001 1151 15 194 cmpa com|DISK_cd.sub,5 ..  007113 0a 007116 6040 00 195 tmi *+3 if not in correct order,  007114 0a 007715 7470 14 196 stx7 disklist,4 exchange the pointers  007115 0a 007715 7450 16 197 stx5 disklist,6 .. 007116 aa 777777 6240 14 198 eax4 -1,4 on to the next  007117 0a 007106 7100 00 199 tra srtdisk2 ..  200  007120 aa 777777 6260 16 201 srtdisk3: eax6 -1,6 outer loop 007121 0a 007104 7100 00 202 tra srtdisk1 back to test for completion  203  007122 204 dsksrted:  007122 0a 007124 6270 00 205 eax7 *+2 don't execute this code again  007123 0a 007051 7470 00 206 stx7 initbf ..  207  208 " 209  210 " Set up DBR. If this is BOS's DBR or we are dumping BOS, proceed no further.  211  007124 aa 007000 2370 00 212 ldaq cmdbr Test the current dbr to see if it is  007125 0a 007210 2770 00 213 oraq dbr_set_mask  007126 0a 007212 7570 00 214 staq cmtemp  007127 aa 0 00000 6771 00 215 eraq ds|ds*2 = to the BOS dbr ( = SDW for seg ds).  007130 0a 007206 3770 00 216 anaq dbr_test_mask Don't test F,R,E,W,P bits or F code.  007131 0a 007161 6000 00 217 tze getibos If the same then this DBR is for BOS. 218  007132 aa 007012 2340 00 219 szn bosdmp Test BOS switch to see if we are dumping  007133 0a 007161 6010 00 220 tnz getibos BOS itself. Tra if yes.  221  222  223 " Use SST SDW to fetch variables from SST.  224  007134 aa 007016 2370 00 225 ldaq sstsdw Do we have SDW?  007135 0a 007171 6000 00 226 tze nosst no new pc  007136 aa 007031 7020 00 227 tsx2 grab call grab to fetch variables  007137 0a 007214 000000 228 zero asttab  007140 0a 007171 7100 00 229 tra nosst  230  007141 231 nosstsdw:  232  233 " Set hardcore DBR value. Use current DBR if none was supplied in flagbox. 234  007141 aa 007002 2370 00 235 ldaq hcdbr get possible hcdbr value  007142 0a 010617 3150 00 236 cana =o777777770000 see if nonzero address 007143 0a 007145 6010 00 237 tnz gotdbr if set, don't fetch from core  238  007144 239 default_hcdbr:  007144 0a 007212 2370 00 240 ldaq cmtemp  241  007145 242 gotdbr: 007145 0a 007210 2770 00 243 oraq dbr_set_mask Make sure F,R, & W bits ON.  007146 aa 007002 7570 00 244 staq hcdbr Make sure DBR saved in hcdbr. 007147 aa 007000 7570 00 245 staq cmdbr Set cmdbr for following hardcore fetches only. 007150 aa 007016 2370 00 246 ldaq sstsdw was there an sst? 007151 0a 007177 6000 00 247 tze nocmp no, so there's no cmp either.  007152 0a 007223 2350 00 248 lda cmp_segno otherwise, let's get that core_map sdw  007153 aa 007027 7020 00 249 tsx2 getsdw  007154 0a 007177 7100 00 250 tra nocmp  007155 0a 007177 7100 00 251 tra nocmp 007156 aa 007020 7570 00 252 staq cmpsdw  007157 253 nocmpsdw:  254  255 " Initialize the SLT Management procedures. 256  007157 0a 010407 7020 00 257 tsx2 initslt initialize the SLT manager  258  007160 0a 007164 7100 00 259 tra getiend all finished  260  261  262  263 " If we are initializing for BOS then zero all of the supervisor segment SDWs.  264  007161 265 getibos:  007161 aa 000000 4310 07 266 fld 0,dl clear out all SDW's  007162 aa 007016 7570 00 267 staq sstsdw  007163 0a 010454 7570 00 268 staq sltsdw  269  270  271 " Always initialize the PML Simulation Package. 272  007164 273 getiend:  007164 0a 010543 7020 00 274 tsx2 pdinit  275  007165 0a 007212 2370 00 276 ldaq cmtemp restore original DBR value  007166 aa 007000 7570 00 277 staq cmdbr .. 278  279  280  281 " This is the return location for getinit. 282  007167 0a 007167 6220 00 283 gsdsx2: eax2 *  007170 aa 000000 7100 12 284 tra 0,2  285  286  007171 aa 012241 7020 00 287 nosst: tsx2 erpt  007172 aa 006 156 157 040 288 acc "no sst"  007173 aa 163 163 164 000 007174 aa 007016 4500 00 289 stz sstsdw 007175 aa 007017 4500 00 290 stz sstsdw+1  007176 0a 007141 7100 00 291 tra nosstsdw  292  007177 aa 012241 7020 00 293 nocmp: tsx2 erpt  007200 aa 006 156 157 040 294 acc "no cmp"  007201 aa 143 155 160 000 007202 aa 007020 4500 00 295 stz cmpsdw 007203 aa 007021 4500 00 296 stz cmpsdw+1  007204 0a 007157 7100 00 297 tra nocmpsdw  298  299  300 " 301  302 " These are the data items usde by getinit.  303  007205 aa 000000 0110 03 304 even  305  007206 306 dbr_test_mask:  007206 aa 777777 777770 307 oct 777777777770 Test all of DBR but F bit and Fcode  007207 aa 777770 377777 308 oct 777770377777 and R,E,W, and P bits.  309  007210 310 dbr_set_mask:  007210 aa 000000 000004 311 oct 000000000004 Set ON F bit 007211 aa 000005 000000 312 oct 000005000000 and R & W bits.  313  314 even  007212 315 cmtemp: bss ,2 temporary to save cmdbr 316  007214 aa 000031 000000 317 asttab: zero sst.astap+1  007215 aa 000000 000000 318 castap_: oct 0 start of ast array - ITS pair offset  007216 aa 000034 000000 319 zero sst.astsize  007217 aa 000000 000000 320 castsize: oct 0 length of ast entry  007220 aa 000025 000000 321 zero sst.ptwbase  007221 aa 000000 000000 322 cptwbase: oct 0 abs addr of ptws  007222 aa 000054 000000 323 zero sst.cmp  007223 aa 000000 000000 324 cmp_segno:dec 0 007224 aa 000055 000000 325 zero sst.cmp+1 007225 326 cmp_offset: 007225 aa 000000 000000 327 dec 0 core map absolute base  007226 aa 000601 000000 328 zero sst.pdmap+1  007227 aa 000000 000000 329 pdmaddr: oct 0  007230 aa 777777 777777 330 dec -1 331  332  333  334 "  335 " This routine will retrieve the SDW of a given segment.  336 " It assumes the DBR to be used is in "cmdbr".  337 " The calling sequence is:  338 "  339 " lda segno Segment number must be in AU. 340 " tsx2 getsdw  341 " tra seg_not_there Error - returned SDW has fault. 342 " tra seg_out_of_bounds Error return for segment number too 343 " big for descriptor segment.  344 " staq sdw_save SDW is returned in AQ.  345 "  346  007231 0a 007244 7420 00 347 getsdw_: stx2 gsdw2 Save return address.  007232 aa 000000 6360 01 348 eaq 0,au Segment number in QU.  007233 aa 000001 7360 00 349 qls 1 but first multiply by 2.  007234 aa 007032 7020 00 350 tsx2 apnd Call apnd to get SDW in descrptr seg. 007235 aa 007000 000000 351 zero cmdbr apnd will use this DBR as its SDW.  007236 0a 007246 7100 00 352 tra gser Error - apnd can't get SDW.  353  007237 aa 007004 2370 20 354 ldaq fetchout,* Save word for next time  007240 0a 010617 3150 00 355 cana =o777777770000 Is address nonzero?  007241 0a 007244 6010 00 356 tnz gsdw2 If so, let it stand.  007242 aa 000004 3150 07 357 cana sdw.df,dl Test for directed fault.  007243 0a 007250 6000 00 358 tze gssfer If yes, then return error. 359  360  361 " We have successfully retrieved the SDW.  362  007244 0a 007244 6220 00 363 gsdw2: eax2 * Restore the return address.  007245 aa 000002 7100 12 364 tra 2,2 Return to successful location.  365  366  007246 0a 007244 2220 00 367 gser: ldx2 gsdw2 Return apnd error code. 007247 aa 000001 7100 12 368 tra 1,2  369  007250 0a 007244 2220 00 370 gssfer: ldx2 gsdw2 Return segment fault error. 007251 aa 000000 7100 12 371 tra 0,2  372  373 "  374  375 " This is the grab subroutine. It will get a list of words.  376  377 " ldaq sdw  378 " tsx2 grab to get words from seg  379 " zero list 380 " tra error 381  382 "list: zero offset  383 "contents of word  384 "...  385 "dec -1 386  007252 0a 007267 7420 00 387 grab_: stx2 grx2 save x2  007253 0a 007270 7400 00 388 stx0 grx2+1  389  007254 0a 007276 7570 00 390 staq apnd_in_sdw Setup SDW for apnd.  391  007255 aa 000000 2200 12 392 ldx0 0,2 get pointer to list  007256 393 grlp:  007256 aa 000000 2360 10 394 ldq 0,0 Get offset for apnd. 007257 0a 007267 6040 00 395 tmi grx2 if neg, quit 007260 aa 007032 7020 00 396 tsx2 apnd  007261 0a 007276 000000 397 zero apnd_in_sdw  007262 0a 007272 7100 00 398 tra grerr  007263 aa 007004 2350 20 399 lda fetchout,* 007264 aa 000001 7550 10 400 sta 1,0  007265 aa 000002 6200 10 401 eax0 2,0 go to next pair  007266 0a 007256 7100 00 402 tra grlp  403  007267 0a 007267 6220 00 404 grx2: eax2 *  007270 0a 007270 6200 00 405 eax0 * 007271 aa 000002 7100 12 406 tra 2,2  407  007272 0a 007267 2220 00 408 grerr: ldx2 grx2  007273 0a 007270 2200 00 409 ldx0 grx2+1  007274 aa 000001 7100 12 410 tra 1,2 give error return 411  007275 aa 000000 0110 03 412 even  007276 413 apnd_in_sdw:  007276 aa 000000 000000 414 oct 0,0 Used to hold input SDWs.  007277 aa 000000 000000 415  416 " 417 " This is the apnd routine  418 "  419 " Its calling sequence is:  420 "  421 " ldq offset Offset within specified segment.  422 " tsx2 apnd 423 " arg sdw_input Bits 0 - 17 = addr of input SDW.  424 " It may be a DBR when referencing  425 " descriptor segments.  426 " tra apnd_error Error return location. Code in AU.  427 " sta absaddr No error => AU = absolute address  428 " of the 64 word block retrieved by  429 " apnd. Address in AU is 0 mod 64.  430 " If word was not in core then there is  431 " no abs addr and A = -1.  432 "  433 " The error codes returned by apnd are:  434 " 1 => access error  435 " 2 => page not there 436 " 3 => bounds error - offset too high 437 "  438  439  440  007300 441 apnd_:  007300 aa 777777 3760 03 442 anq =-1,du Make sure only offset saved.  007301 0a 007607 7560 00 443 stq apoff Save offset.  007302 0a 007606 7420 00 444 stx2 apxrs Save X2.  007303 0a 007606 4400 00 445 sxl0 apxrs And X0.  007304 0a 007616 4500 00 446 stz aposr Clear switch.  447  007305 aa 000000 2370 32 448 ldaq 0,2* Get actual SDW. (DBRs treated as SDWs.)  007306 0a 007604 7570 00 449 staq apsdw Now save SDW .  007307 aa 000004 3150 07 450 cana sdw.df,dl Does SDW have fault?  007310 0a 007477 6000 00 451 tze accerr If yes - go return access error code.  452  453 " Now check that the word offset is within the bounds of this segment.  454  007311 aa 377770 3760 03 455 anq sdw.bound,du mask the bound field  007312 aa 000001 7360 00 456 qls 4-3 compute word count in QU  007313 aa 000017 2760 03 457 orq 15,du ..  007314 0a 007607 1160 00 458 cmpq apoff if offset within bound?  007315 0a 007503 6020 00 459 tnc apotb if not, give error  460  461 " THE FOLLOWING INSTRUCTION ASSUMES A PAGE SIZE OF 1024 WORDS.  007316 aa 000012 7720 00 462 qrl 10 divide by page size  007317 0a 007612 7520 70 463 stcq appages,70 and save count of pages  464  465 " Now check to see if the segment is paged or unpaged.  466  007320 0a 007604 2370 00 467 ldaq apsdw Retrieve the whole SDW.  007321 aa 200000 3160 07 468 canq sdw.unpaged,dl Test SDW.U bit.  007322 0a 007465 6010 00 469 tnz apnpaged U bit ON => unpaged. 470  471 " 472  473 " This segment is paged. Compute page number and get PTW.  474  007323 0a 007607 2350 00 475 lda apoff Get word offset within segment. 476 " THE FOLLOWING INSTRUCTION ASSUMES A PAGE SIZE OF 1024 WORDS.  007324 aa 000034 7730 00 477 lrl 10+18 compute page number in AL  007325 aa 000022 7350 00 478 als 18 move page number to AU 007326 0a 007613 7550 00 479 sta appno Save page number.  480  007327 aa 000010 7720 00 481 qrl 18-10 offset within page in QU  007330 0a 007610 7560 00 482 stq appoff Save offset within page.  483  007331 0a 007601 3350 00 484 lca dmpbufl Get mask of buffer length.  007332 0a 007610 3750 00 485 ana appoff Compute offset of start of buffer within page. 007333 0a 007611 7550 00 486 sta apboff Save offset of buffer. 487  007334 0a 007604 2350 00 488 lda apsdw word A of SDW in A  007335 0a 007613 2360 00 489 ldq appno page number in Q  007336 0a 007727 7020 00 490 tsx2 get_ptw Get the PTW for this page.  007337 0a 007501 7100 00 491 tra apnpa Error return.  007340 0a 007614 7550 00 492 sta apptw And save it.  493  494 " Now test this PTW for page faults.  495  007341 aa 000004 3150 07 496 cana ptw.df,dl Test PTW.F bit.  007342 0a 007353 6000 00 497 tze page_fault Tra if F bit OFF => page not in core.  498  499 " The page is in core - we lucked out.  500  501 " THE FOLLOWING INSTRUCTION ASSUMES A PAGE SIZE OF 1024 WORDS.  007343 aa 777760 3750 03 502 ana =o777760,du Ignore low order bits of PTW.ADDR. 007344 aa 007010 7550 00 503 sta fetchin Set absolute address of beginning of page.  504  007345 0a 007610 2350 00 505 lda appoff Get offset into page.  007346 aa 000006 7710 00 506 arl 6 In A(0-23). 007347 aa 007010 2550 00 507 orsa fetchin Absolute address now in fetchin. 508  007350 aa 007037 7020 00 509 tsx2 fetch Get piece of page into buffer. 007351 0a 007501 7100 00 510 tra apnpa  511  007352 0a 007474 7100 00 512 tra apend All finished.  513  514 " 515  516 " Come here if the page is not in core. 517  007353 518 page_fault: 007353 aa 007013 2340 00 519 szn pagesw Test read page switch. 007354 0a 007501 6000 00 520 tze apnpa OFF => don't read in any pages. 007355 aa 400000 3150 07 521 cana add_type.core,dl is this in core (prob. os/read)? 007356 0a 007374 6000 00 522 tze ck_null no, do devadd case.  523  524 " PTW contains a core address, but core has not yet had data  525 " read into it. We must wade through the core map to determine 526 " the device address.  527  007357 aa 007016 2340 00 528 szn sstsdw get sstsdw 007360 0a 007501 6000 00 529 tze apnpa if no SST, cannot page  530  531 "THE FOLLOWING INSTRUCTION ASSUMES A PAGE SIZE OF 1024 WORDS  007361 aa 000002 7710 00 532 arl 2 get cme offset  007362 0a 007225 0350 00 533 adla cmp_offset relocate to beginning of cme  007363 aa 000001 6350 01 534 eaa cme.devadd,au address of where device address is  007364 aa 000006 7710 00 535 arl 6 form 24-bit address 007365 aa 007020 0350 00 536 adla cmpsdw compute absolute address  007366 aa 007010 7550 00 537 sta fetchin save the cme absaddr  007367 aa 007037 7020 00 538 tsx2 fetch 007370 0a 007374 7100 00 539 tra notos if loses, use core  007371 aa 007004 2350 20 540 lda fetchout,* 007372 0a 010620 3750 00 541 ana =o777777740000 isolate did, devadd 007373 0a 007616 7550 00 542 sta aposr save information  543  007374 544 notos:  007374 aa 740000 3150 07 545 ck_null: cana add_type.non_null,dl is there data?  007375 0a 007442 6000 00 546 tze pinnadd no, null address  547  007376 aa 100000 3150 07 548 cana add_type.pd,dl Handle PD addresses special.  007377 0a 007402 6000 00 549 tze not_pd 007400 aa 000001 2350 07 550 lda 1,dl KLUDGE device type is 1.. bulkstore  007401 0a 007406 7100 00 551 tra readrec  552  553 " Now fetch pvtx from aste. 554  007402 555 not_pd: 007402 aa 400000 3150 03 556 cana ptw.nulled,du nulled disk address?  007403 0a 007442 6010 00 557 tnz pinnadd yes, do null case 558  559 " Real disk address -- get devt word  560  007404 0a 007617 7020 00 561 tsx2 getpvt get the pvt index,  007405 0a 007501 7100 00 562 tra apnpa failure exit  007406 0a 007602 7550 00 563 readrec: sta pindevt save devt word  564  007407 0a 007614 2350 00 565 lda apptw Get the device address. 007410 aa 000022 7710 00 566 arl 18 multicial devadd to lower  007411 aa 012216 7020 00 567 tsx2 mulbos convert from multics addr to bos  007412 0a 007602 0000 00 568 arg pindevt  007413 0a 007501 7100 00 569 tra apnpa  570  007414 0a 010617 3750 00 571 ana =o777777770000 Zero all but BOS device address.  007415 0a 007600 2750 00 572 ora dmpbufsec Put num records to read in AL.  007416 0a 007603 7550 00 573 sta pintemp Save device addr and num of records.  574  575 " The device address points to the beginning of a page on the paging device.  576 " All we want is one dump buffer full of words,ie, one record - but the one 577 " that contains the word we are trying to get.  578  007417 0a 007611 2350 00 579 lda apboff Get offset of buffer within page  007420 aa 000014 7710 00 580 arl 6+6 Now A (0-23) = # of 64 wd record in page. 007421 0a 007603 0350 00 581 adla pintemp Add to starting record address.  007422 0a 007602 2360 00 582 ldq pindevt Get device ID.  007423 aa 007006 1170 00 583 cmpaq read_args Test rdev arguments to see if buffer  584 " already contains what we want. 007424 0a 007433 6000 00 585 tze pinrok Yes, don't bother to read. 007425 aa 007006 7570 00 586 staq read_args No,save args for next call.  587  007426 aa 012211 7020 00 588 tsx2 rdev read device 007427 0a 007602 0000 00 589 arg pindevt  007430 aa 2 00000 0111 00 590 nop bf|0  007431 0a 007501 7100 00 591 tra apnpa Paging device error 007432 0a 007433 7100 00 592 tra pinrok Read OK.  593  594  007433 aa 007041 7020 00 595 pinrok: tsx2 fetch_use_buffer Set segment tmp to point to buffer.  007434 aa 000000 0110 00 596 nop  597  007435 0a 007610 2350 00 598 lda appoff Get offset within page.  007436 0a 007611 1350 00 599 sbla apboff Subtract offset of buffer within page.  007437 aa 007005 7550 00 600 sta fetchout+1 We have computed offset within buffer.  601  007440 aa 000001 3350 07 602 lca 1,dl A = -1 => page not in core.  007441 0a 007474 7100 00 603 tra apend Exit.  604  605 " 606  607 " Come here if the caller is referencing a null page.  608 " We will test to see if the rest of the pages in this segment are also null.  609 " If they are we will return an OUT_OF_BOUNDS error code to the caller.  610 " If any of the pages from this one to the end of the segment are non null 611 " then we will return a dump buffer of all zeros.  612  007442 613 pinnadd:  007442 0a 007613 2360 00 614 ldq appno Get page number 007443 aa 000001 0760 03 615 adq 1,du Bump to next page.  007444 0a 007613 7560 00 616 stq appno Save page number.  007445 0a 007612 1160 00 617 cmpq appages Have we tested all pages?  007446 0a 007503 6054 00 618 tpnz apotb If so, give OOB return.  619  007447 0a 007604 2350 00 620 lda apsdw Get SDW word 1 in A  007450 0a 007727 7020 00 621 tsx2 get_ptw Get PTW for this page. 007451 0a 007501 7100 00 622 tra apnpa Error return.  623  007452 aa 000004 3150 07 624 cana ptw.df,dl Got PTW. Test F bit.  007453 0a 007456 6010 00 625 tnz ret_zero_buf ON => page in core => not null.  626  007454 aa 740000 3150 07 627 cana add_type.non_null,dl try to optimize real null case  628 "if os/read nulled devadd, forget it.  007455 0a 007442 6000 00 629 tze pinnadd 0 => null page. Go test next page.  630  631 " We have found a non null page so we can't return an out_of_bounds  632 " error code. Instead we will return a buffer with all zeros.  633  007456 634 ret_zero_buf:  007456 0a 007601 2350 00 635 lda dmpbufl Zero all of dump buffer.  007457 aa 000002 7350 00 636 als 2 Compute character count.  007460 aa 000140 1004 00 637 mlr (),(pr,rl),fill(0) This does it quickly.  007461 0a 007461 000000 638 desc9a *,0 007462 aa 200000 000001 639 desc9a bf|0,au 007463 aa 007007 4500 00 640 stz read_args+1 Prevent use of buffer on next call.  641  007464 0a 007433 7100 00 642 tra pinrok Go set buffer and return.  643  644 " 645  646 " Come here if we have an unpaged segment. 647  007465 0a 007607 2350 00 648 apnpaged: lda apoff Get offset of word.  007466 aa 000006 7710 00 649 arl 6 Shift to align with SDW.ADDR.  007467 0a 007604 0350 00 650 adla apsdw Add SDW.ADDR to offset  651 " Bits 24 - 35 are ignored.  007470 aa 007010 7550 00 652 sta fetchin Set pointer to word.  653  007471 aa 007037 7020 00 654 tsx2 fetch call fetch to find core  007472 0a 007501 7100 00 655 tra apnpa Error if core block not found.  007473 aa 007010 2350 00 656 lda fetchin Get abs addr. It is in AU only (0mod64).  657  658  659 " When we get here A contains the absolute address of the word we had to  660 " return. A = -1 => word not in core.  661  007474 662 apend:  007474 0a 007606 2220 00 663 ldx2 apxrs Retrieve X2.  007475 0a 007606 7200 00 664 lxl0 apxrs Get X0.  007476 aa 000002 7100 12 665 tra 2,2 Now RETURN. This is the normal return.  666 " Note: AU = abs addr of block.  667 " Or A = -1. 668  669  670  671 " These are the apnd error routines.  672  007477 aa 000001 2350 03 673 accerr: lda =1,du Access error - segment has fault.  007500 0a 007504 7100 00 674 tra aper  675  007501 aa 000002 2350 03 676 apnpa: lda =2,du page not there  007502 0a 007504 7100 00 677 tra aper  678  007503 aa 000003 2350 03 679 apotb: lda =3,du out of bounds 680  007504 aa 777777 6220 00 681 aper: eax2 -1 Set X2 to return to error location.  007505 0a 007606 0420 00 682 asx2 apxrs Make sure this is value of X2. 007506 0a 007474 7100 00 683 tra apend Go and return.  684  685 " 686  687 " This routine is called to rewrite modified pages. 688 " It will set the modified bit in the PTW and attempt to  689 " set the modified bit the the paging device map, if needed.  690 " It know how to sort out the problems associated with handling 691 " a page that is out-of-service on a read.  692 "  693 " This procedure must be called immediately after a call to apnd.  694 "  695 " tsx2 unapnd  696 " tra error 697 "  698  699  007507 700 unapnd_:  007507 0a 007567 7420 00 701 stx2 unax2 save X2.  702  007510 aa 007040 7020 00 703 tsx2 unfetch Write back buffer containing segment.  007511 0a 007571 7100 00 704 tra unaerr 705  007512 0a 007604 2370 00 706 ldaq apsdw Look at SDW.  007513 aa 200000 3160 07 707 canq sdw.unpaged,dl Unpaged segment?  007514 0a 007567 6010 00 708 tnz unax2 If so, all finished.  709  007515 0a 007616 2340 00 710 szn aposr Out of service on read? 007516 0a 007545 6000 00 711 tze noosr If not, avoid a lot of trouble.  712  007517 0a 007573 5440 00 713 sprp4 unapr4 Save PR4.  007520 0a 007574 7640 00 714 lprp4 unaset4 Set PR4 to segment 4.  007521 aa 0 00002 2371 00 715 ldaq ds|tmp*2 Get SDW for page.  007522 aa 0 00010 7571 00 716 staq ds|4*2 And put it where it can be used.  007523 aa 000000 5320 00 717 cams 0 718  007524 0a 007614 2350 00 719 lda apptw PTW contains real core address. 007525 aa 777777 3750 03 720 ana =o777777,du Mask it.  007526 aa 007010 7550 00 721 sta fetchin And set up for a fetch.  007527 0a 007610 2350 00 722 lda appoff Get offset within page.  007530 aa 000006 7710 00 723 arl 6 In A(0-23). 007531 aa 007010 0350 00 724 adla fetchin Add to page offset.  007532 aa 007010 7550 00 725 sta fetchin Now have absolute addr of word.  007533 0a 010035 7020 00 726 tsx2 dont_fetch Fetch without reading disk.  007534 0a 007571 7100 00 727 tra unaerr 728  007535 0a 007601 2360 00 729 ldq dmpbufl Length of buffer in QU.  007536 aa 000020 7720 00 730 qrl 18-2 Compute character count. 007537 aa 0 00140 1005 40 731 mlr (pr,rl),(pr,rl) Copy the buffer.  007540 aa 400000 000006 732 desc9a 4|0,ql  007541 aa 100000 000006 733 desc9a tmp|0,ql  734  007542 0a 007573 7640 00 735 lprp4 unapr4 Restore PR4 now. 736  007543 aa 007040 7020 00 737 tsx2 unfetch Write out the page into core.  007544 0a 007571 7100 00 738 tra unaerr 739  007545 0a 007604 2350 00 740 noosr: lda apsdw SDW word A in A.  007546 0a 007613 2360 00 741 ldq appno Page number in Q.  007547 0a 007727 7020 00 742 tsx2 get_ptw Fetch the PTW.  007550 0a 007571 7100 00 743 tra unaerr 744  007551 aa 000100 2750 07 745 ora ptw.phm,dl Set the modified bit.  007552 aa 007004 7550 20 746 sta fetchout,* And replace the PTW.  747  007553 aa 007040 7020 00 748 tsx2 unfetch Write out core containing PTW.  007554 0a 007571 7100 00 749 tra unaerr 750  007555 0a 007614 2350 00 751 lda apptw PTW in A.  007556 aa 000004 3150 07 752 cana ptw.df,dl Was page faulted?  007557 0a 007567 6010 00 753 tnz unax2 If not, all finished.  007560 aa 000010 3150 07 754 cana ptw.os,dl Out of service?  007561 0a 007563 6000 00 755 tze *+2 If so,  007562 0a 007616 2350 00 756 lda aposr Get true device address.  757  007563 aa 007046 7020 00 758 tsx2 pd_getptr Try to get ptr to pdmap entry. 007564 0a 007567 7100 00 759 tra unax2  007565 aa 007045 7020 00 760 tsx2 pd_modify If successful, set modified flag.  007566 0a 007567 7100 00 761 tra unax2  762  007567 0a 007567 6220 00 763 unax2: eax2 * Restore X2.  007570 aa 000001 7100 12 764 tra 1,2 And return to caller. 765  007571 0a 007567 2220 00 766 unaerr: ldx2 unax2 Restore X2. 007572 aa 000000 7100 12 767 tra 0,2 And take error return.  768  769  007573 770 unapr4: bss ,1  007574 aa 000004 000000 771 unaset4: zero 4,0  772  773 " 774  775 " These are some of the data items used by apnd.  776  777 " The contents of the apnd SDW is as follows: 778 " zero address field points to beginning of segment (tmp). 779 " F bit ON => segment in memory.  780 " BOUND = size of dump buffer (num 16 wd blks in buffer) -1 781 " R & W bits ON 782 " U bit ON => segment is unpaged. 783  007575 aa 000000 0110 03 784 even  007576 785 apnd_sdw:  007576 aa 000000 000004 786 vfd 24/0,9/0,o3/4  007577 aa 000005 200000 787 vfd 15/0,o3/5,o3/2,15/0  788  007600 789 dmpbufsec:  007600 aa 000000 000000 790 oct 0 number of 64-word sectors in dmpbuf 007601 aa 000000 000000 791 dmpbufl: zero 0 number of words in dmpbuf  792  007602 aa 000000 000000 793 pindevt: oct 0  007603 aa 000000 000000 794 pintemp: oct 0  795  796 even  797  007604 798 apsdw: bss ,2 Input SDW.  007606 799 apxrs: bss ,1 Where X2 and X0 are saved.  007607 800 apoff: bss ,1 Input word offset.  007610 801 appoff: bss ,1 Offset of word within page. 007611 802 apboff: bss ,1 Offset of apnd buffer within page.  007612 803 appages: bss ,1 Number of last page in segment.  007613 804 appno: bss ,1 Page number of word offset.  007614 805 apptw: bss ,1 PTW for this page.  806  007615 807 in_core: bss ,1 Non-zero if fetch from core.  007616 808 aposr: bss ,1 Non-zero if page OS on read. 809  810 "  811 " GETPVT - this routine gets the PVT index for the segment  812 " whose SDW is in "apsdw"  813  814 " Its return value is a "device type word" for running BOS io  815 " vfd 3/iom,6/channel,9/device_no,18/device_type  816 "  817 " tsx2 getpvt  818 " tra erret 819 " sta dev_type  820  007617 0a 007705 7420 00 821 getpvt: stx2 gpvt2  007620 0a 007604 2350 00 822 lda apsdw Get SDW, with PT loc  007621 aa 000014 7710 00 823 arl sdw.add_shift isolate addr of pt  007622 aa 000014 1350 07 824 sbla ast_size,dl compute addr of ast begin 825  007623 aa 000004 0350 07 826 adla aste.pvtx_word,dl ..now addr of word with pvtx  007624 aa 000014 7350 00 827 als 12 007625 aa 007010 7550 00 828 sta fetchin .. obtain pvtx  007626 aa 007037 7020 00 829 tsx2 fetch .. 007627 0a 007707 7100 00 830 tra gpvt_err ..  007630 aa 007004 2350 20 831 lda fetchout,* Get the pvt index.  007631 aa 000022 7710 00 832 arl aste.pvtx_shift  007632 aa 000777 3750 07 833 ana aste.pvtx_mask,dl Isolate pvt index.  007633 0a 007635 7100 00 834 tra pvt_to_devt1 merge with next routine  835  836 "  837 "  838 " PVT_TO_DEVT - this routine gets a 'devt' word (see UTIL for description) given a pvtx.  839 "  840 " lda pvtx  841 " tsx2 pvt_to_devt  842 " tra erret 843 " sta dev_type  844 "  845  846  007634 847 pvt_to_devt_:  007634 0a 007705 7420 00 848 stx2 gpvt2 save return  849  007635 850 pvt_to_devt1:  007635 aa 000000 7350 00 851 als 0 set indicators from A  007636 0a 007707 6044 00 852 tmoz gpvt_err must be positive and nonzero  853  007637 0a 007712 1150 00 854 cmpa gpvt_pvtx same PVT index as before?  007640 0a 007704 6000 00 855 tze gotpvt if so, skip this stuff 007641 0a 007712 7550 00 856 sta gpvt_pvtx save this PVT index 857  007642 0a 007714 2270 00 858 ldx7 ndisks get number of disk subsystems 007643 0a 007714 2260 17 859 gpvtl1: ldx6 disklist-1,7 get pointer from list 007644 aa 000000 6250 16 860 eax5 0,6 place in X5, too 007645 0a 007713 7550 00 861 sta gpvt3 save this index temporarily 862  007646 aa 6 00006 2341 15 863 gpvtl2: szn com|DISK_cd.ndrives,5 any drives for this device type? 007647 0a 007662 6040 00 864 tmi gpvtnxt if not, try next subsystem  007650 aa 6 00005 2341 15 865 szn com|DISK_cd.model,5 test model number  007651 0a 007656 6000 00 866 tze gpvtskp zero model means gap in drive numbers 007652 aa 6 00006 1751 15 867 sba com|DISK_cd.ndrives,5 decrement index 007653 0a 007665 6044 00 868 tmoz gpvt_got if <= 0, we've found subsystem  007654 aa 000002 6250 15 869 eax5 2,5 otherwise, see if more types 007655 0a 007646 7100 00 870 tra gpvtl2 .. 871  007656 aa 6 00006 2361 15 872 gpvtskp: ldq com|DISK_cd.ndrives,5 get number of drives to skip  007657 0a 007713 0560 00 873 asq gpvt3 and adjust drive number 007660 aa 000002 6250 15 874 eax5 2,5 step to next type  007661 0a 007646 7100 00 875 tra gpvtl2 .. 876  007662 aa 777777 6270 17 877 gpvtnxt: eax7 -1,7 step to next subsystem  007663 0a 007643 6054 00 878 tpnz gpvtl1 ..  007664 0a 007707 7100 00 879 tra gpvt_err if not found, error  880  007665 0a 007713 2350 00 881 gpvt_got: lda gpvt3 got device number in A 007666 aa 000025 7350 00 882 als 27-6 now have device number  007667 aa 6 00002 2751 16 883 ora com|DISK_cd.iom,6 insert IOM number  007670 aa 000001 1750 07 884 sba 1,dl minus 1  007671 aa 000006 7350 00 885 als 6 insert channel number  007672 aa 6 00003 2751 16 886 ora com|DISK_cd.chn,6 ..  007673 aa 000033 7750 00 887 alr 27 shift to position  007674 0a 007713 7550 00 888 sta gpvt3 and save  889  007675 aa 000000 6350 16 890 eaa 0,6 config card offset in A  007676 aa 000022 7710 00 891 arl 18 move to AL 007677 0a 007713 2550 00 892 orsa gpvt3 insert as part of devt 893  007700 aa 6 00005 2351 15 894 lda com|DISK_cd.model,5 get correct model number  007701 aa 012220 7020 00 895 tsx2 lookup_devmodel look up device type  007702 0a 007707 7100 00 896 tra gpvt_err ..  007703 0a 007713 2550 00 897 orsa gpvt3 insert rest of stuff  898  007704 0a 007713 2350 00 899 gotpvt: lda gpvt3 answer in A  007705 0a 007705 6220 00 900 gpvt2: eax2 *  007706 aa 000001 7100 12 901 tra 1,2  902  903  007707 904 gpvt_err:  007707 0a 007712 4500 00 905 stz gpvt_pvtx prevent future lookup  007710 0a 007705 2220 00 906 ldx2 gpvt2 get return index  007711 aa 000000 7100 12 907 tra 0,2 take error return 908  909  007712 910 gpvt_pvtx:bss ,1  007713 911 gpvt3: bss ,1  007714 912 ndisks: bss ,1  007715 913 disklist: bss ,10  914  915  916  917  918 " This subroutine is called to get a PTW. It is only called by the apnd 919 " routine itself.  920 "  921 " INPUT: The page number must be in QU. 922 " The first word of the SDW for the segment containing the  923 " page must be in A.  924 "  925 "OUTPUT: The PTW will be returned in A.  926 "  927 " The first instruction after the tsx2 to get_ptw will be for an error return. 928 " The normal return will be to the second location after the tsx2.  929  930  007727 931 get_ptw:  007727 0a 007737 7420 00 932 stx2 get_ptw_return Save X2 since we will call fetch. 007730 aa 007010 7550 00 933 sta fetchin Put SDW.ADDR in fetchin (ignore bits 24-35)  934  007731 aa 000006 7720 00 935 qrl 6 Shift page number to line up with SDW.ADDR. 007732 aa 007010 0360 00 936 adlq fetchin Add SDW.ADDR to page number. 007733 aa 007010 7560 00 937 stq fetchin This yields the abs addr of the PTW.  938  007734 aa 007037 7020 00 939 tsx2 fetch Get the blk that contains this PTW.  007735 0a 007741 7100 00 940 tra get_ptw_error Error - can't get PTW block. 941  007736 aa 007004 2350 20 942 lda fetchout,* Thus we can now get the PTW.  007737 943 get_ptw_return: 007737 0a 007737 6220 00 944 eax2 * Restore return address into X2.  007740 aa 000001 7100 12 945 tra 1,2 Make a normal return. 946  007741 947 get_ptw_error:  007741 0a 007737 2220 00 948 ldx2 get_ptw_return Restore X2.  007742 aa 000000 7100 12 949 tra 0,2 Transfer back to error location.  950  951  952 " This is the fetch routine.  953 " Given an absolute address of a word it will retrieve the block  954 " which contains the specified word.  955 "  956 " Bits 0-23 of "fetchin" must contain the absolute address 957 " of the word to be fetched.  958 "  959 " The ITS pair "fetchout" will be setup by fetch to reference into  960 " the retrieved block.  961 " This reference is made through segment (tmp). fetch will setup the  962 " the SDW of segment (tmp) to point to the beginning of the 64 word 963 " block. The length of the segment is = to the size of the dump buffer.  964 "  965 " The instruction after the tsx2 fetch must be a transfer to an error  966 " routine.  967  007743 0a 010063 4500 00 968 fetch_: stz dontsw Do not inhibit disk I/O.  007744 969 fetchj: 007744 0a 007601 2350 00 970 lda dmpbufl Length of buffer in AU.  007745 aa 000001 1750 03 971 sba 1,du Make a mask for low-order bits.  007746 aa 000006 7710 00 972 arl 6 Place address mask in A(0-23).  007747 aa 007010 3750 00 973 ana fetchin Compute part of address within buffer.  007750 aa 000006 7350 00 974 als 6 Place in AU.  007751 aa 007005 7550 00 975 sta fetchout+1 Set indirect word for buffer fetch. 976  977  978 " Now check that the absolute address really exists in memory.  979  007752 aa 000010 6270 00 980 eax7 8 Set up loop to test memory on 8 ports. 007753 981 test_port_mem:  007753 aa 777777 6270 17 982 eax7 -1,7 Set index to next port. 007754 aa 000000 6040 32 983 tmi 0,2* If all ports tested then nonexistent addr  984  007755 aa 6 01610 7261 17 985 lxl6 com|coreblocks,7 Get size of this port in X6. 007756 aa 777777 1060 03 986 cmpx6 -1,du If it's -1, then no memory on this port.  007757 0a 007753 6000 00 987 tze test_port_mem Try next port.  988  007760 aa 777777 6360 16 989 eaq -1,6 Size - 1 in QU.  007761 aa 6 01610 0361 17 990 adlq com|coreblocks,7 Compute highest 64-word block on this port.  007762 aa 6 01610 2351 17 991 lda com|coreblocks,7 First 64-word block on this port in AU.  007763 aa 777777 3750 03 992 ana -1,du Mask the A. 007764 aa 777777 2760 07 993 orq -1,dl Force Q(18-35) > fetchin (18-35).  007765 aa 007010 1110 00 994 cwl fetchin Is first block <= block <= last block?  007766 0a 007753 6010 00 995 tnz test_port_mem If not, address is not on this port. 996  997 " We come here once we know that the given absolute address really exists.  998 " Now we must see if the block we are looking for has been written  999 " onto secondary storage by BOS.  1000  007767 aa 007012 2340 00 1001 szn bosdmp Test BOS dump switch.  007770 0a 010024 6010 00 1002 tnz fetchincore If ON then assume word in core.  1003  007771 aa 6 02003 7271 00 1004 lxl7 com|corearea Get number of records of core written by BOS.  007772 aa 007777 3670 03 1005 anx7 =o7777,du Mask the sector count. 007773 0a 010024 6000 00 1006 tze fetchincore If no mem written out assume addr in core. 007774 aa 007010 1070 00 1007 cmpx7 fetchin Compare it with addr of requested word  007775 0a 010024 6020 00 1008 tnc fetchincore TRA if really in core  007776 0a 010024 6000 00 1009 tze fetchincore  1010  1011 " The block we want was written out by BOS as part of the low  1012 " memory that it saved. 1013  007777 0a 010020 7420 00 1014 stx2 fetx2 Save X2 so we can make a call. 010000 0a 007601 3350 00 1015 lca dmpbufl Get mask for high-order bits. 010001 aa 000006 7310 00 1016 ars 6 Mask in A(0-23).  010002 aa 007010 3750 00 1017 ana fetchin Get starting address of block we want.  010003 aa 000006 7710 00 1018 arl 6 Move to sector address position.  010004 aa 6 02003 0351 00 1019 adla com|corearea Add address to core image on disk  010005 0a 010617 3750 00 1020 ana =o777777770000 Mask out count bits.  010006 0a 007600 2750 00 1021 ora dmpbufsec Insert # of sectors to read.  010007 aa 000001 3360 07 1022 lcq 1,dl Q = -1 => read from standard BOS device  1023  1024 " Now the A,Q contains the data that is needed to read a record from  1025 " secondary storage.  1026  010010 aa 007006 1170 00 1027 cmpaq read_args Are we after the same record as last call?  010011 0a 010020 6000 00 1028 tze fetx2 If yes skip read.  010012 aa 007006 7570 00 1029 staq read_args No, save it for next read. 1030  010013 0a 010063 2340 00 1031 szn dontsw Should we do this? 010014 0a 010020 6010 00 1032 tnz fetx2 If not, continue without reading.  010015 aa 012234 7020 00 1033 tsx2 rdsec Read the specified record into 010016 aa 2 00000 0111 00 1034 nop bf|0 the dump buffer (dmpbuf).  010017 0a 010017 6160 00 1035 dis * Here on rdsec error.  1036  1037  1038 " The memory block we want is now in dmpbuf.  1039 " The rest of fetch may be called as a special entry. It sets up the SDW for  1040 " segment (tmp) so that it references the dump buffer. Thus the dump buffer  1041 " may be referenced via fetchout.  1042  010020 0a 010020 6220 00 1043 fetx2: eax2 * Restor X2.  1044  010021 1045 fetch_use_buffer_:  010021 0a 007615 4500 00 1046 stz in_core indicate fetch no from core  010022 aa 2 00000 2121 00 1047 absa bf|0 Get absolute address of dump buffer.  010023 0a 010030 7100 00 1048 tra fet_setsdw Don't use the address from fetchin. 1049  1050  010024 1051 fetchincore:  010024 0a 007615 7500 00 1052 stc2 in_core indicate fetch directly from core  1053  010025 0a 007601 3350 00 1054 lca dmpbufl Get mask for high-order address bits. 010026 aa 000006 7310 00 1055 ars 6 In A(0-23). 010027 aa 007010 3750 00 1056 ana fetchin Absolute address of base of block in A(0-23). 1057  1058 " The A now contains the absolute address of the block that we  1059 " must pass back to the caller through fetchout.  1060  010030 1061 fet_setsdw: 010030 aa 000000 2360 07 1062 ldq 0,dl A,Q now used to form an SDW.  010031 0a 007576 2770 00 1063 oraq apnd_sdw OR in template SDW - has all bits set.  010032 aa 0 00002 7571 00 1064 staq ds|tmp*2 Use this SDW to reference segment (tmp).  010033 aa 000000 5320 00 1065 cams "Make sure SDWs in Ass. Mem updated.  1066  010034 aa 000001 7100 12 1067 tra 1,2 Now we can RETURN.  1068  1069  1070 "  1071  010035 1072 dont_fetch: 010035 0a 010063 7500 00 1073 stc2 dontsw Inhibit disk read.  010036 0a 007744 7100 00 1074 tra fetchj Join common code.  1075  1076  010037 0a 010053 7420 00 1077 unfetch_: stx2 unfx2 Save X2.  1078  010040 0a 007615 2340 00 1079 szn in_core did we patch core?  010041 aa 000001 6010 12 1080 tnz 1,2 yes, easy.  1081 "  1082 " Must rewrite disk or paging device or something.  1083 "  010042 aa 007006 2370 00 1084 ldaq read_args 010043 aa 000000 7360 00 1085 qls 0 Set indicators from Q.  010044 aa 000001 6000 12 1086 tze 1,2 If zero, just return. 010045 0a 010057 6040 00 1087 tmi unfbos if negative, write BOS 010046 0a 007602 7560 00 1088 stq pindevt  1089  010047 aa 012212 7020 00 1090 tsx2 wdev write the disk. 010050 0a 007602 0000 00 1091 arg pindevt  010051 aa 2 00000 0001 00 1092 arg bf|0  010052 0a 010055 7100 00 1093 tra unferr 1094  010053 0a 010053 6220 00 1095 unfx2: eax2 * Restore X2.  010054 aa 000001 7100 12 1096 tra 1,2 Normal return.  1097  010055 0a 010053 2220 00 1098 unferr: ldx2 unfx2 Restore X2. 010056 aa 000000 7100 12 1099 tra 0,2 Error return. 1100  010057 1101 unfbos: 010057 aa 012235 7020 00 1102 tsx2 wtsec write BOS sector  010060 aa 2 00000 0111 00 1103 nop bf|0  010061 0a 010055 7100 00 1104 tra unferr 010062 0a 010053 7100 00 1105 tra unfx2  1106  1107  010063 1108 dontsw: bss ,1 Inhibit fetch I/O switch  1109  1110 " 1111  1112 " Procedures to Perform Block Transfers.  1113 " Coded 5/75 by B. S. Greenberg 1114  1115 " ldq offset,du 1116 " tsx2 get  1117 " arg sdw  1118 " zero where_to_be_put,count  1119 " tra erret 1120  1121  000004 1122 bool data,4  1123  010064 1124 get_:  010064 0a 010113 7070 00 1125 tsx7 mapg set up map loop 010065 aa 0 00140 1005 45 1126 mlr (pr,rl,al),(pr,rl) move data to destination  010066 aa 100000 000006 1127 desc9a tmp|0,ql  010067 aa 400000 000006 1128 desc9a data|0,ql  010070 aa 000000 7100 12 1129 tra 0,2 return to map loop  1130  1131  1132 " ldq offset,du 1133 " tsx2 comp 1134 " arg sdw  1135 " zero where_to_compare,count  1136 " tra erret 1137 " tze zero return with indicators set  1138  010071 1139 comp_:  010071 0a 010113 7070 00 1140 tsx7 mapg set up map loop 010072 aa 0 00140 1065 45 1141 cmpc (pr,rl,al),(pr,rl) compare data  010073 aa 100000 000006 1142 desc9a tmp|0,ql  010074 aa 400000 000006 1143 desc9a data|0,ql  010075 0a 010165 7540 00 1144 sti get.ir save indicators  010076 0a 010160 6010 00 1145 tnz get.exit if non-zero, all finished  010077 aa 000000 7100 12 1146 tra 0,2 return to loop for more  1147  1148  1149 " 1150  1151 " ldq offset,du 1152 " tsx2 put to move stuff to multics  1153 " arg sdw  1154 " zero where_from_to_put,count  1155 " tra erret 1156  1157  010100 1158 put_:  010100 0a 010113 7070 00 1159 tsx7 mapg set up map  010101 aa 0 00145 1005 40 1160 mlr (pr,rl),(pr,rl,al) move from 4 to 1  010102 aa 400000 000006 1161 desc9a data|0,ql  010103 aa 100000 000006 1162 desc9a tmp|0,ql  1163  010104 0a 010112 7560 00 1164 stq put.qtemp Save Q. 010105 0a 010111 7420 00 1165 stx2 put.x2 And X2.  1166  010106 aa 007033 7020 00 1167 tsx2 unapnd Write back the buffer.  010107 0a 010155 7100 00 1168 tra get.erret  1169  010110 0a 010112 2360 00 1170 ldq put.qtemp Restore Q.  010111 aa 000000 7100 00 1171 put.x2: tra *-* And return.  1172  1173  010112 1174 put.qtemp:  010112 aa 000000 000000 1175 dec 0  1176  1177 "  1178  010113 1179 mapg:  010113 0a 010143 7470 00 1180 stx7 get.switch  010114 0a 010160 7420 00 1181 stx2 get.exit  010115 0a 010165 7540 00 1182 sti get.ir 010116 0a 010164 5440 00 1183 sprp (data),get.pr 1184  010117 0a 010167 7560 00 1185 stq get.offset 010120 aa 000001 2350 12 1186 lda 1,2 get address and count 010121 aa 000000 3700 01 1187 epp (data),0,au point to data dest/source  010122 aa 777777 3750 07 1188 ana -1,dl mask count  010123 aa 000002 7350 00 1189 als 2 mpy out to chars  010124 0a 010166 7550 00 1190 sta get.count  010125 aa 000000 6360 32 1191 eaq 0,2* get sdw address  010126 0a 010131 7560 00 1192 stq get.sdwp save for apnd  1193  010127 1194 get.loop:  010127 0a 010167 2360 00 1195 ldq get.offset 010130 aa 007032 7020 00 1196 tsx2 apnd address beginning of remainder of data  010131 aa 000000 0000 00 1197 get.sdwp: arg *-*  010132 0a 010155 7100 00 1198 tra get.erret  1199 "  1200 " seg 1 is now pointing at 64-word data buffer. 1201 "  010133 0a 007601 2360 00 1202 ldq dmpbufl get size of buffer  010134 aa 007005 1360 00 1203 sblq fetchout+1 find how much data is in buf left  010135 aa 000020 7720 00 1204 qrl 18-2 convert to characters  1205 "  1206 " EIS char offset to a, count to q  1207 "  010136 0a 010166 1160 00 1208 cmpq get.count do we need whole buffer?  010137 0a 010141 6040 00 1209 tmi *+2 count > bufleft => use count  010140 0a 010166 2360 00 1210 ldq get.count  010141 aa 007005 2350 00 1211 lda fetchout+1 get char disp into tmp  010142 aa 000020 7710 00 1212 arl 18-2  010143 1213 get.switch: 010143 aa 000000 7020 00 1214 tsx2 *-* dispatch get/put 010144 aa 000000 2350 07 1215 lda 0,dl  010145 aa 000000 5330 00 1216 negl 0 negate q  010146 0a 010166 0560 00 1217 asq get.count decrement count 010147 0a 010160 6044 00 1218 tmoz get.exit no more data, all done  010150 aa 000000 5330 00 1219 negl 0 q back +  010151 aa 4 00000 5005 06 1220 a9bd data|0,ql point further into data dest.  010152 aa 000020 7360 00 1221 qls 18-2 reduce to words  010153 0a 010167 0560 00 1222 asq get.offset increase offset, guaranteed mod 64  010154 0a 010127 7100 00 1223 tra get.loop fetch more data  1224  010155 1225 get.erret:  010155 0a 010160 2220 00 1226 ldx2 get.exit setup bad return  010156 aa 777777 6220 12 1227 eax2 -1,2 make error return  010157 0a 010161 7100 00 1228 tra *+2  010160 1229 get.exit:  010160 aa 000000 6220 00 1230 eax2 *-* reload return  010161 0a 010164 7640 00 1231 lprp (data),get.pr 010162 0a 010165 6340 00 1232 ldi get.ir 010163 aa 000003 7100 12 1233 tra 3,2 return  1234  1235 even  010164 1236 get.pr: bss ,1 save pr 010165 1237 get.ir: bss ,1 save indicators 010166 aa 000000 000000 1238 get.count: dec 0 chars left to move  010167 1239 get.offset: 010167 aa 000000 0000 00 1240 arg 0 word offset in seg of next loc  1241  1242 " 1243  1244 " Segment Loading Table Routines for BOS.  1245 " Coded 2/21/73 by Noel I. Morris  1246  1247 include slt  5-1  5-2  5-3 "BEGIN INCLUDE FILE slt.incl.alm  5-4  5-5 "Created 11/04/76 1459.6 est Thu by convert_include_file, 5-6 " Version of 04/30/76 1208.1 est Fri.  5-7  5-8 "Made from >user_dir_dir>Multics>Morris>slt>include>slt.incl.pl1,  5-9 " modified 11/04/76 1459.5 est Thu  5-10  5-11 "  5-12 " Structure slt 5-13 "  100010 5-14 equ slt_size,32776 5-15  5-16  000000 5-17 equ slt.name_seg_ptr,0 000002 5-18 equ slt.free_core_start,2  000003 5-19 equ slt.first_sup_seg,3  000004 5-20 equ slt.last_sup_seg,4 000005 5-21 equ slt.first_init_seg,5  000006 5-22 equ slt.last_init_seg,6  000007 5-23 equ slt.free_core_size,7  000010 5-24 equ slt.seg,8 "LEVEL 2  5-25  000010 5-26 equ slt.slte,8 5-27  5-28 "  5-29 " Structure name_seg  5-30 "  000201 5-31 equ name_seg_size,129  5-32  000000 5-33 equ name_seg.next_loc,0 "LOWER  5-34  000001 5-35 equ name_seg.ht,1 "UPPER  5-36  5-37 "  5-38 " Structure segnam  5-39 "  5-40  000000 5-41 equ segnam.count,0 000001 5-42 equ segnam.names,1 "LEVEL 2  5-43  000001 5-44 equ segnam.hp,1 "UPPER  400000 5-45 bool segnam.ref,400000 "DL  000000 5-46 equ segnam.segno_shift,0  007777 5-47 bool segnam.segno_mask,007777  5-48  000002 5-49 equ segnam.name,2 "DOUBLE 5-50  5-51 "  5-52 " Structure path  5-53 "  000000 5-54 equ path.size,0  000001 5-55 equ path.name,1  000000 5-56 equ path.acls,0  5-57  5-58 "  5-59 " Structure acls  5-60 "  000000 5-61 equ acls.count,0  000001 5-62 equ acls.acl,1 "LEVEL 2  5-63  000001 5-64 equ acls.userid,1 "DOUBLE 000011 5-65 equ acls.mode,9  000013 5-66 equ acls.code,11  5-67  5-68 "END INCLUDE FILE slt.incl.alm 1248 include slte  6-1  6-2  6-3 "BEGIN INCLUDE FILE slte.incl.alm  6-4  6-5  6-6 "Created 08/13/82 0906.3 edt Fri by convert_include_file, 6-7 " Version of 12/01/81 1640.3 edt Tue.  6-8  6-9 "Made from >bootload>include>slte.incl.pl1,  6-10 " modified 08/12/82 1335.9 edt Thu  6-11  6-12 "  6-13 " Structure slte_uns  6-14 "  000004 6-15 equ slte_uns_size,4  6-16  000000 6-17 equ slte_uns.names_ptr,0 " UPPER  000000 6-18 equ slte_uns.path_ptr,0 " LOWER  6-19  000001 6-20 equ slte_uns.access_word,1 000040 6-21 equ slte_uns.access_shift,32  000017 6-22 bool slte_uns.access_mask,000017  000001 6-23 equ slte_uns.cache_word,1  020000 6-24 bool slte_uns.cache,020000 " DU  000001 6-25 equ slte_uns.abs_seg_word,1  010000 6-26 bool slte_uns.abs_seg,010000 " DU  000001 6-27 equ slte_uns.firmware_seg_word,1  004000 6-28 bool slte_uns.firmware_seg,004000 " DU 000001 6-29 equ slte_uns.layout_seg_word,1 002000 6-30 bool slte_uns.layout_seg,002000 " DU  000001 6-31 equ slte_uns.wired_word,1  000040 6-32 bool slte_uns.wired,000040 " DU  000001 6-33 equ slte_uns.paged_word,1  000020 6-34 bool slte_uns.paged,000020 " DU  000001 6-35 equ slte_uns.per_process_word,1  000010 6-36 bool slte_uns.per_process,000010 " DU  000001 6-37 equ slte_uns.acl_provided_word,1  000001 6-38 bool slte_uns.acl_provided,000001 " DU 000001 6-39 equ slte_uns.branch_required_word,1  040000 6-40 bool slte_uns.branch_required,040000 " DL  000001 6-41 equ slte_uns.init_seg_word,1  020000 6-42 bool slte_uns.init_seg,020000 " DL 000001 6-43 equ slte_uns.temp_seg_word,1  010000 6-44 bool slte_uns.temp_seg,010000 " DL 000001 6-45 equ slte_uns.link_provided_word,1  004000 6-46 bool slte_uns.link_provided,004000 " DL  000001 6-47 equ slte_uns.link_sect_word,1  002000 6-48 bool slte_uns.link_sect,002000 " DL  000001 6-49 equ slte_uns.link_sect_wired_word,1  001000 6-50 bool slte_uns.link_sect_wired,001000 " DL  000001 6-51 equ slte_uns.combine_link_word,1  000400 6-52 bool slte_uns.combine_link,000400 " DL 000001 6-53 equ slte_uns.pre_linked_word,1 000200 6-54 bool slte_uns.pre_linked,000200 " DL  000001 6-55 equ slte_uns.defs_word,1  000100 6-56 bool slte_uns.defs,000100 " DL 6-57  000002 6-58 equ slte_uns.cur_length_word,2 000033 6-59 equ slte_uns.cur_length_shift,27  000777 6-60 bool slte_uns.cur_length_mask,000777  000002 6-61 equ slte_uns.ringbrack_word,2  000030 6-62 equ slte_uns.ringbrack_shift,24  000007 6-63 bool slte_uns.ringbrack_mask,000007  000002 6-64 equ slte_uns.segno,2 " LOWER  6-65  000003 6-66 equ slte_uns.max_length_word,3 000030 6-67 equ slte_uns.max_length_shift,24  000777 6-68 bool slte_uns.max_length_mask,000777  000003 6-69 equ slte_uns.bit_count_word,3  000000 6-70 equ slte_uns.bit_count_shift,0 6-71  6-72 "  6-73 " Structure slte  6-74 "  000004 6-75 equ slte_size,4  6-76  000000 6-77 equ slte.names_ptr,0 " UPPER  000000 6-78 equ slte.path_ptr,0 " LOWER  6-79  000001 6-80 equ slte.access_word,1 000040 6-81 equ slte.access_shift,32  000017 6-82 bool slte.access_mask,000017  000001 6-83 equ slte.cache_word,1  020000 6-84 bool slte.cache,020000 " DU  000001 6-85 equ slte.abs_seg_word,1  010000 6-86 bool slte.abs_seg,010000 " DU 000001 6-87 equ slte.firmware_seg_word,1  004000 6-88 bool slte.firmware_seg,004000 " DU 000001 6-89 equ slte.layout_seg_word,1 002000 6-90 bool slte.layout_seg,002000 " DU  000001 6-91 equ slte.wired_word,1  000040 6-92 bool slte.wired,000040 " DU  000001 6-93 equ slte.paged_word,1  000020 6-94 bool slte.paged,000020 " DU  000001 6-95 equ slte.per_process_word,1  000010 6-96 bool slte.per_process,000010 " DU  000001 6-97 equ slte.acl_provided_word,1  000001 6-98 bool slte.acl_provided,000001 " DU 000001 6-99 equ slte.branch_required_word,1  040000 6-100 bool slte.branch_required,040000 " DL  000001 6-101 equ slte.init_seg_word,1  020000 6-102 bool slte.init_seg,020000 " DL 000001 6-103 equ slte.temp_seg_word,1  010000 6-104 bool slte.temp_seg,010000 " DL 000001 6-105 equ slte.link_provided_word,1  004000 6-106 bool slte.link_provided,004000 " DL  000001 6-107 equ slte.link_sect_word,1  002000 6-108 bool slte.link_sect,002000 " DL  000001 6-109 equ slte.link_sect_wired_word,1  001000 6-110 bool slte.link_sect_wired,001000 " DL  000001 6-111 equ slte.combine_link_word,1  000400 6-112 bool slte.combine_link,000400 " DL 000001 6-113 equ slte.pre_linked_word,1 000200 6-114 bool slte.pre_linked,000200 " DL  000001 6-115 equ slte.defs_word,1  000100 6-116 bool slte.defs,000100 " DL  6-117  000002 6-118 equ slte.cur_length_word,2 000033 6-119 equ slte.cur_length_shift,27  000777 6-120 bool slte.cur_length_mask,000777  000002 6-121 equ slte.ringbrack_word,2  000030 6-122 equ slte.ringbrack_shift,24  000007 6-123 bool slte.ringbrack_mask,000007  000002 6-124 equ slte.segno,2 " LOWER  6-125  000003 6-126 equ slte.max_length_word,3 000030 6-127 equ slte.max_length_shift,24  000777 6-128 bool slte.max_length_mask,000777  000003 6-129 equ slte.bit_count_word,3  000000 6-130 equ slte.bit_count_shift,0 6-131  6-132 "END INCLUDE FILE slte.incl.alm  1249  1250 " 1251 " tsx2 sltsearch search SLT for name of supervisor segment 1252 " arg name must be blank padded to end of word 1253 " tra error 1254 " sta segno in AU  1255  1256  010170 1257 sltsearch_: 010170 0a 010454 2340 00 1258 szn sltsdw do we have SDW for SLT?  010171 aa 000001 6000 12 1259 tze 1,2 if not, take error return right away  010172 0a 010225 7420 00 1260 stx2 slsx2 save X2  1261  010173 aa 000000 2270 12 1262 ldx7 0,2 get address of name  010174 aa 000001 6270 17 1263 eax7 1,7 X7 -> characters of name 010175 0a 010200 7470 00 1264 stx7 slscad save for copying  010176 aa 777777 2360 17 1265 ldq -1,7 get length of name  1266  010177 aa 040000 1064 40 1267 cmpc (rl),(),fill(040) same name as last time? 010200 0a 010200 000006 1268 slscad: desc9a *,ql 010201 0a 010243 000040 1269 desc9a slsname,32  010202 0a 010224 6000 00 1270 tze slsfnd if so, return segno  1271  010203 aa 040000 1004 60 1272 mlr (id,rl),(),fill(040) copy the name and pad it 010204 0a 010200 0000 00 1273 arg slscad 010205 0a 010243 000040 1274 desc9a slsname,32  1275  010206 0a 010463 2360 00 1276 ldq slthd+slt.first_sup_seg get first sup seg #  010207 0a 010242 7560 00 1277 sltlk1: stq slksegno set the segment # 010210 0a 010466 1160 00 1278 cmpq slthd+slt.last_init_seg are we at end of SLT?  010211 0a 010230 6054 00 1279 tpnz slsnfd if so, return -- name was not found  1280  010212 0a 010350 7020 00 1281 tsx2 extsltname extract names from SLT 010213 0a 010232 0000 00 1282 arg slscmp 010214 0a 010215 7100 00 1283 tra slsnxt 1284  010215 0a 010242 2360 00 1285 slsnxt: ldq slksegno get segment # 010216 0a 010464 1160 00 1286 cmpq slthd+slt.last_sup_seg was this last sup seg?  010217 0a 010222 6010 00 1287 tnz *+3 if so,  010220 0a 010465 2360 00 1288 ldq slthd+slt.first_init_seg next segment is first init  010221 0a 010207 7100 00 1289 tra sltlk1 .. 010222 aa 000001 0760 07 1290 adq 1,dl step the segment #  010223 0a 010207 7100 00 1291 tra sltlk1 and loop to next segment  1292  010224 0a 010242 2350 00 1293 slsfnd: lda slksegno name found! load segment number  010225 0a 010225 6220 00 1294 slsx2: eax2 * restore X2  010226 aa 000022 7350 00 1295 als 18 move segment # to AU  010227 aa 000002 7100 12 1296 tra 2,2 and return  1297  010230 0a 010225 2220 00 1298 slsnfd: ldx2 slsx2 restore X2  010231 aa 000001 7100 12 1299 tra 1,2 take error return 1300  010232 0a 010240 7420 00 1301 slscmp: stx2 slscx2 save X2  1302  010233 aa 007036 7020 00 1303 tsx2 comp perform comparison  010234 0a 010456 0000 00 1304 arg sltntsdw  010235 0a 010243 000010 1305 zero slsname,8 010236 0a 010402 7100 00 1306 tra slnerr 010237 0a 010224 6000 00 1307 tze slsfnd 1308  010240 0a 010240 6220 00 1309 slscx2: eax2 * restore X2  010241 aa 000000 7100 12 1310 tra 0,2 comparison not successful 1311  1312  010242 1313 slksegno: bss ,1  010243 1314 slsname: bss ,8 1315  1316 " 1317 " lda segno segment # in AU  1318 " tsx2 getsltname get segment name from SLT 1319 " desc6a name(offset),length descriptor to use in storing name  1320 " tra error 1321  1322  010253 1323 getsltname_:  010253 0a 010454 2340 00 1324 szn sltsdw is the an SLT? 010254 aa 000001 6000 12 1325 tze 1,2 if not, take error return 1326  010255 0a 010301 7420 00 1327 stx2 gsnx2 save X2  010256 aa 000022 7710 00 1328 arl 18 move segment # to AL  010257 0a 010345 7550 00 1329 sta gsnseg save segment # 010260 aa 000000 2360 12 1330 ldq 0,2 descriptor in Q  010261 0a 010322 7520 74 1331 stcq gsdesc,74 save it  010262 aa 007777 3760 07 1332 anq =o7777,dl mask length 010263 aa 000000 2350 07 1333 lda 0,dl clear A  010264 0a 010346 7570 00 1334 staq gsofflen offset in A, remaining length in Q  1335  010265 0a 010463 2350 00 1336 lda slthd+slt.first_sup_seg check segment number for valid sup seg  010266 0a 010464 2360 00 1337 ldq slthd+slt.last_sup_seg ..  010267 0a 010345 1110 00 1338 cwl gsnseg ..  010270 0a 010275 6000 00 1339 tze gsnok .. 010271 0a 010465 2350 00 1340 lda slthd+slt.first_init_seg check segment number for valid init seg  010272 0a 010466 2360 00 1341 ldq slthd+slt.last_init_seg ..  010273 0a 010345 1110 00 1342 cwl gsnseg ..  010274 0a 010303 6010 00 1343 tnz gsnerr ..  1344  010275 1345 gsnok:  010275 0a 010345 2360 00 1346 ldq gsnseg segment # in QU  010276 0a 010350 7020 00 1347 tsx2 extsltname extract names from SLT 010277 0a 010305 0000 00 1348 arg gsget  010300 0a 010303 7100 00 1349 tra gsnerr 1350  010301 0a 010301 6220 00 1351 gsnx2: eax2 * restore X2  010302 aa 000002 7100 12 1352 tra 2,2 return to caller  1353  010303 0a 010301 2220 00 1354 gsnerr: ldx2 gsnx2 restore X2  010304 aa 000001 7100 12 1355 tra 1,2 take error return 1356  010305 0a 010332 7420 00 1357 gsget: stx2 gsgx2 save X2  1358  010306 aa 007034 7020 00 1359 tsx2 get grab this name  010307 0a 010456 0000 00 1360 arg sltntsdw  010310 0a 010334 000010 1361 zero gsname,8  010311 0a 010303 7100 00 1362 tra gsnerr 1363  010312 aa 000003 1244 00 1364 scm (),(du) find end of name (first blank)  010313 0a 010334 000040 1365 desc9a gsname,32  010314 aa 040 000 000 000 1366 aci " "  010315 0a 010344 0000 00 1367 arg gstally  1368  010316 0a 010344 7270 00 1369 lxl7 gstally length of name in X7 010317 0a 010346 2370 00 1370 ldaq gsofflen offset znd length in A/Q  010320 aa 040045 1604 40 1371 mvt (rl),(rl,al),fill(040) move the name  010321 0a 010334 000017 1372 desc9a gsname,x7  010322 0a 010322 020006 1373 gsdesc: desc6a *,ql 010323 0a 010323 0000 00 1374 gstabad: arg *  1375  010324 0a 010344 0750 00 1376 ada gstally add length of name of offset  010325 aa 000001 0750 07 1377 ada 1,dl plus a blank 010326 0a 010344 1760 00 1378 sbq gstally subtract from remaining length  010327 aa 000001 1760 07 1379 sbq 1,dl ..  010330 0a 010301 6044 00 1380 tmoz gsnx2 if output is full, stop here  010331 0a 010346 7570 00 1381 staq gsofflen save offset and remaining length  1382  010332 0a 010332 6220 00 1383 gsgx2: eax2 * restore X2  010333 aa 000000 7100 12 1384 tra 0,2 and return to caller  1385  010334 1386 gsname: bss ,8  010344 1387 gstally: bss ,1 010345 1388 gsnseg: bss ,1  1389 even  010346 1390 gsofflen: bss ,2  1391  1392  1393 " 1394 " ldq segno segment # in QL  1395 " tsx2 extsltname extract name from SLT 1396 " arg funct subroutine to process name 1397 " tra error error return  1398  1399  010350 1400 extsltname: 010350 0a 010377 7420 00 1401 stx2 xslx2 save XR's  010351 0a 010400 7400 00 1402 stx0 xslx0 .. 1403  010352 aa 000004 4020 07 1404 mpy slte_size,dl compute SLT entry index  010353 aa 000010 6360 06 1405 eaq slt.seg+slte.names_ptr,ql get addr of SLT entry  010354 aa 007032 7020 00 1406 tsx2 apnd fetch pointer to names  010355 0a 010454 0000 00 1407 arg sltsdw 010356 0a 010402 7100 00 1408 tra slnerr 010357 aa 007004 2270 20 1409 ldx7 fetchout,* rel pointer to names in X7 010360 aa 000002 6270 17 1410 eax7 segnam.name,7 X7 -> first name  010361 0a 010405 7470 00 1411 stx7 slknp save name pointer  1412  010362 aa 777776 6360 17 1413 eaq -segnam.name,7 QU -> number of names  010363 aa 007032 7020 00 1414 tsx2 apnd fetch the # of names  010364 0a 010456 0000 00 1415 arg sltntsdw  010365 0a 010402 7100 00 1416 tra slnerr 010366 aa 007004 3350 20 1417 lca fetchout,* -number of names  010367 0a 010406 7550 00 1418 sta slknms save complement for counting  1419  010370 0a 010405 6360 20 1420 sltlk2: eaq slknp,* get pointer to next name  010371 0a 010377 2220 00 1421 ldx2 xslx2 restore X2 010372 aa 000000 7020 32 1422 tsx2 0,2* call to process name  1423  010373 aa 000011 2350 03 1424 slknxn: lda 9,du step name pointer to next name  010374 0a 010405 0550 00 1425 asa slknp ..  010375 0a 010406 0540 00 1426 aos slknms count off one name 010376 0a 010370 6040 00 1427 tmi sltlk2 loop, if more names  1428  010377 0a 010377 6220 00 1429 xslx2: eax2 * restore XR's 010400 0a 010400 6200 00 1430 xslx0: eax0 * ..  010401 aa 000002 7100 12 1431 tra 2,2 and return  1432  1433  010402 0a 010377 2220 00 1434 slnerr: ldx2 xslx2 restore XR's  010403 0a 010400 2200 00 1435 ldx0 xslx0 .. 010404 aa 000001 7100 12 1436 tra 1,2 take error return 1437  010405 1438 slknp: bss ,1  010406 1439 slknms: bss ,1  1440  1441  1442 " 1443 " tsx2 initslt initialize the SLT package  1444  1445  010407 1446 initslt:  010407 0a 010435 7420 00 1447 stx2 islx2 save X2  010410 aa 007011 2350 00 1448 lda sltseg segno of SLT in QU 010411 aa 007027 7020 00 1449 tsx2 getsdw get SDW for SLT  010412 0a 010437 7100 00 1450 tra noslt  010413 0a 010437 7100 00 1451 tra noslt  010414 0a 010454 7570 00 1452 staq sltsdw save SDW for SLT  1453  010415 aa 000000 6360 00 1454 eaq 0 get the SLT header  010416 aa 007034 7020 00 1455 tsx2 get grab SLT header  010417 0a 010454 0000 00 1456 arg sltsdw 010420 0a 010460 000010 1457 zero slthd,slt.seg 010421 0a 010437 7100 00 1458 tra noslt  1459  010422 0a 010460 2350 00 1460 lda slthd+slt.name_seg_ptr look at the name table pointer 010423 aa 777777 3750 07 1461 ana -1,dl mask the modifier  010424 aa 000043 1150 07 1462 cmpa =o43,dl is it an ITS?  010425 0a 010437 6010 00 1463 tnz noslt if not, stop here  1464  010426 0a 010460 2350 00 1465 lda slthd+slt.name_seg_ptr segno of name table in QU  010427 aa 007027 7020 00 1466 tsx2 getsdw get SDW for name table segment  010430 0a 010443 7100 00 1467 tra nosltnt  010431 0a 010443 7100 00 1468 tra nosltnt  010432 0a 010456 7570 00 1469 staq sltntsdw save SDW  1470  010433 aa 012256 6350 51 1471 eaa asgetab,i get address of conversion table 010434 0a 010323 7550 00 1472 sta gstabad MVT won't take ID here  1473  010435 0a 010435 6220 00 1474 islx2: eax2 * restore X2  010436 aa 000000 7100 12 1475 tra 0,2 and return  1476  1477  010437 aa 012241 7020 00 1478 noslt: tsx2 erpt  010440 aa 006 156 157 040 1479 acc "no slt"  010441 aa 163 154 164 000 010442 0a 010451 7100 00 1480 tra isler  1481  010443 aa 012241 7020 00 1482 nosltnt: tsx2 erpt  010444 aa 021 156 157 040 1483 acc "no slt name table"  010445 aa 163 154 164 040 010446 aa 156 141 155 145 010447 aa 040 164 141 142 010450 aa 154 145 000 000 1484  010451 0a 010454 4500 00 1485 isler: stz sltsdw clear SDW for SLT  010452 0a 010455 4500 00 1486 stz sltsdw+1 ..  010453 0a 010435 7100 00 1487 tra islx2 now return  1488  1489  1490 even  010454 1491 sltsdw: bss ,2  010456 1492 sltntsdw: bss ,2  010460 1493 slthd: bss ,slt.seg 1494  1495 " 1496 " Paging device management for BOS. 1497 " Coded 5/24/72 by N. I. Morris 1498  1499  1500 " lda b device address 1501 " tsx2 pd_check to see if really on paging device  1502 " these arguments are also returned if call OK.  1503 " arg did device ID  1504 " arg pdmep rel ptr to pdmap entry 1505 " tra error error return  1506 " sta b new device address 1507  1508  010470 1509 pd_check_:  010470 aa 000003 7100 12 1510 tra 3,2 "TEMPORARY  1511 " szn pmlsw do we wish to do this? 1512 " tze 4,2 if not, just return  1513 " stx2 pdcx2 save X2  1514 "  1515 " sta pdcaddr save device address  1516 " stz 2,2* clear map entry pointer 1517 " ldq 0,2* get did 1518 " stq pdcdid and save  1519 " stq pdcarea save that too  1520 "  1521 " tsx2 bosmul convert to Multics device address  1522 " arg pdcdid ..  1523 " tra pdcerr ..  1524 "  1525 "" form multics device address  1526 " tsx2 pd_hash_search search for entry in pd map  1527 " tra pdcnoentry .. 1528 " tra pdcerr ..  1529 " sta pdcmep save map entry ptr  1530 " sbla pdmaddr get index within pdmap  1531 " lrl 36 in QU 1532 " div pdsize,dl compute pd device address  1533 " lls 18 move quotient to AL  1534 "  1535 " tsx2 mulbos convert back to BOS address  1536 " arg pdmdid ..  1537 " tra pdcerr ..  1538 " sta pdcnewaddr save new device address  1539 "  1540 " tsx2 erpt print a message  1541 " acc "^d,^o,^o -> ^d,^o,^o."  1542 " arg pdcdid  1543 " arg pdcarea  1544 " arg pdcaddr  1545 " arg pdmdid  1546 " arg pdcnewarea  1547 " arg pdcnewaddr  1548 "  1549 " lda pdcnewaddr new device address in A  1550 "pdcx2: eax2 * restore X2  1551 " ldq pdmdid set new device ID 1552 " stq 0,2* ..  1553 " ldq pdcnewarea and new area # 1554 " stq 1,2* ..  1555 " ldq pdcmep return the map entry ptr  1556 " stq 2,2* ..  1557 " tra 4,2 return  1558 "  1559 "pdcnoentry:  1560 " ldx2 pdcx2 restore X2  1561 " lda pdcaddr return the old address  1562 " tra 4,2 ..  1563  1564 "pdcerr: ldx2 pdcx2 restore X2 1565 " eax2 -1,2 make return to 2,2 1566 " tra pdcnoentry+1 ..  1567  1568  010471 1569 pdcdid: bss ,1  010472 1570 pdcarea: bss ,1 010473 1571 pdcnewarea: 010473 1572 bss ,1 010474 1573 pdcaddr: bss ,1 010475 1574 pdcnewaddr: 010475 1575 bss ,1 010476 1576 pdcmep: bss ,1  1577  1578  1579 " 1580 " lda devadd Multics device address  1581 " tsx2 pd_getptr to get pointer to pd map entry  1582 " tra error error return  1583 " sta pdmep rel ptr to pd map entry  1584  1585  010477 1586 pd_getptr_: 010477 aa 000000 7100 12 1587 tra 0,2 TEMPORARY 1588 " szn pmlsw just return if not 1589 " tze 0,2 simulating PML  1590 " stx2 pdgtx2 save X2  1591 "  1592 " sta pdgtdevadd save device address  1593 " cana add_type.non_null,dl 1594 " tze 0,2 not pd  1595 " cana add_type.pd,dl Is it the PD? 1596 " tze 0,2 if not, take error return  1597 "  1598 " lda pdgtdevadd device adress in A 1599 " ana -1,du mask the adress  1600 " lrl 36 move to QU  1601 " mpy pdsize,dl compute pdmap index  1602 " adlq pdmaddr ..  1603 " stq pdgtmep save map entry pointer  1604 "  1605 " eaa pdme.flags,qu add offset of flags and place in AU 1606 " tsx2 fetch_pdmap fetch the flags  1607 " tra pdgterr ..  1608 " cana pdme.used,dl is entry used?  1609 " tze pdgterr if not, take error return  1610 "  1611 "pdgtx2: eax2 * restore X2 1612 " lda pdgtmep load map entry pointer  1613 " tra 1,2 and return  1614 "  1615 "  1616 "pdgterr: ldx2 pdgtx2 restore X2  1617 " tra 0,2 take error return  1618  010500 1619 pdgtdevadd: 010500 1620 bss ,1 010501 1621 pdgtmep: bss ,1 1622  1623  1624 " 1625 " lda pdmep rel ptr to pd map entry  1626 " tsx2 pd_modify to turn on modified bit  1627 " tra error error return  1628  1629  010502 1630 pd_modify_: 010502 aa 000000 7100 12 1631 tra 0,2 TEMPORARY 1632 " stx2 pdmox2 save X2  1633 " eaa pdme.flags,au add offset of flags 1634 " tsx2 fetch_pdmap get correct word of map  1635 " tra pdmoerr ..  1636 " ora pdme.mod,dl turn on modified bit  1637 " sta fetchout,* and store the flags  1638 "  1639 " szn ftpsw are we patching pdmap in core? 1640 " tze pdmox2 if so, we're all finished 1641 " lda read_args get device address 1642 " tsx2 wdev write out this piece of pdmap  1643 " arg pdmdid ..  1644 " arg bf|0 ..  1645 " tra pdmoerr ..  1646 "  1647 "pdmox2: eax2 * restore X2 1648 " tra 1,2 and return  1649 "  1650 "pdmoerr: ldx2 pdmox2 restore X2  1651 " tra 0,2 take error return  1652 "  1653  1654 " 1655 " lda offset relative to base of SST  1656 " tsx2 fetch_pdmap to get word from pdmap  1657 " tra error error return  1658 " sta word returned word  1659  1660  010503 1661 fetch_pdmap:  010503 0a 010535 7420 00 1662 stx2 ftpx2 save X2  010504 aa 000000 6360 01 1663 eaq 0,au place address in AU  010505 aa 007016 2350 00 1664 lda sstsdw SDW for SST in A - just chk wrd 1. 010506 0a 010514 6000 00 1665 tze ftpnosst if no SST, must read in map  1666  010507 0a 010542 4500 00 1667 stz ftpsw indicate fetch from core  010510 aa 007032 7020 00 1668 tsx2 apnd go get word 010511 aa 007016 0000 00 1669 arg sstsdw 010512 0a 010540 7100 00 1670 tra ftperr .. 010513 0a 010535 7100 00 1671 tra ftpx2 fetch the word and return  1672  010514 0a 007227 1360 00 1673 ftpnosst: sblq pdmaddr subtract offset of map in SST  010515 aa 000014 7370 00 1674 lls 18-6 mod 64 address in A  010516 aa 000014 7720 00 1675 qrl 18-6 offset within 64-word sector in QU  010517 aa 007005 7560 00 1676 stq fetchout+1 save for later reference  010520 aa 000014 7350 00 1677 als 12 mod 64 address in A (0-23) 010521 aa 000000 2360 07 1678 ldq 0,dl clear Q  010522 0a 010612 0770 00 1679 adaq pdfrec add addr of start of pdmap  010523 aa 007006 1170 00 1680 cmpaq read_args Do we have correct sector already?  010524 0a 010533 6000 00 1681 tze ftpgot if so, skip read  010525 aa 007006 7570 00 1682 staq read_args Save device address.  1683  010526 0a 010542 7500 00 1684 stc2 ftpsw indicate fetch from secondary storage  010527 aa 012211 7020 00 1685 tsx2 rdev read in piece of pdmap  010530 0a 010610 0000 00 1686 arg pdmdid .. 010531 aa 2 00000 0001 00 1687 arg bf|0 ..  010532 0a 010540 7100 00 1688 tra ftperr .. 1689  010533 aa 007041 7020 00 1690 ftpgot: tsx2 fetch_use_buffer Make tmp segment same as bf segment.  010534 aa 000000 0110 00 1691 nop  1692  010535 0a 010535 6220 00 1693 ftpx2: eax2 * restore X2  010536 aa 007004 2350 20 1694 lda fetchout,* fetch the word  010537 aa 000001 7100 12 1695 tra 1,2 return  1696  010540 0a 010535 2220 00 1697 ftperr: ldx2 ftpx2 restore X2  010541 aa 000000 7100 12 1698 tra 0,2 take error return 1699  010542 1700 ftpsw: bss ,1  1701  1702  1703 " 1704 " tsx2 pdinit to initialize paging device software 1705  1706  010543 1707 pdinit: 010543 0a 010576 7420 00 1708 stx2 pdinx2 save X2  010544 0a 010621 2350 00 1709 lda =apage search for "page" card 010545 aa 012264 7020 00 1710 tsx2 getconf in configuration deck  010546 0a 010606 7100 00 1711 tra nopdid exit if none  010547 aa 6 00002 2351 17 1712 lda com|2,7 Get frec from card. 010550 0a 010612 7550 00 1713 sta pdfrec save it  1714  010551 aa 6 00001 2351 17 1715 lda com|1,7 Get device name from card.  010552 aa 012305 7020 00 1716 tsx2 find_disk Get devt word. 010553 0a 010610 0000 00 1717 arg pdmdid 010554 0a 010606 7100 00 1718 tra nopdid if illegal ID, return  1719  010555 0a 010612 2350 00 1720 lda pdfrec Get first record number.  010556 aa 012216 7020 00 1721 tsx2 mulbos convert to BOS device address 010557 0a 010610 0000 00 1722 arg pdmdid .. 010560 0a 010600 7100 00 1723 tra pderr ..  010561 0a 010617 3750 00 1724 ana =o777777770000 remove the sector count 010562 aa 000001 2750 07 1725 ora 1,dl insert sector count of 1 010563 0a 010610 2360 00 1726 ldq pdmdid form composite word in Q  010564 0a 010612 7570 00 1727 staq pdfrec save for later usage  1728  010565 aa 007016 2370 00 1729 ldaq sstsdw SST in core?  010566 0a 010570 6000 00 1730 tze pdnosst if not, must get info from pdmap  010567 0a 010576 7100 00 1731 tra pdinx2 and return 1732  1733  010570 0a 007227 4500 00 1734 pdnosst: stz pdmaddr make sure it's cleared  010571 aa 000000 2350 03 1735 lda 0,du read word 0 of pdmap 010572 0a 010503 7020 00 1736 tsx2 fetch_pdmap fetch it  010573 0a 010600 7100 00 1737 tra pderr ..  010574 aa 007004 2370 20 1738 ldaq fetchout,* load both words  010575 0a 007227 7510 70 1739 stca pdmaddr,70 save addr of pdmap 1740  010576 0a 010576 6220 00 1741 pdinx2: eax2 * restore X2  010577 aa 000000 7100 12 1742 tra 0,2 and return  1743  010600 aa 012241 7020 00 1744 pderr: tsx2 erpt complain  010601 aa 023 165 156 141 1745 acc "unable to get pdmap"  010602 aa 142 154 145 040 010603 aa 164 157 040 147 010604 aa 145 164 040 160 010605 aa 144 155 141 160 1746  010606 aa 007014 4500 00 1747 nopdid: stz pmlsw clear PML switch 010607 0a 010576 7100 00 1748 tra pdinx2 and return 1749  010610 1750 pdmdid: bss ,1  010611 aa 000000 0110 03 1751 even  010612 1752 pdfrec: bss ,2  1753  1754  1755 " 1756  1757 include bos_sdw  7-1 "  7-2 " BEGIN INCLUDE FILE sdw.incl.alm 02/12/74  7-3 "  000014 7-4 equ sdw.add_shift,12  007000 7-5 bool sdw.r1,007000 Ringbrack 1 (DL)  000700 7-6 bool sdw.r2,000700 Ringbrack 2 (DL)  000070 7-7 bool sdw.r3,000070 Ringbrack 3 (DL)  7-8  000004 7-9 bool sdw.df,000004 Directed fault bit (0 -> fault)  000003 7-10 bool sdw.fault_code,000003 Number of directed fault  7-11  377770 7-12 bool sdw.bound,377770 Bound field (DU)  000004 7-13 bool sdw.read,000004 Read permission bit (DU) 000002 7-14 bool sdw.execute,000002 Execute permission bit (DU)  000001 7-15 bool sdw.write,000001 Write permission bit (DU)  7-16  400000 7-17 bool sdw.privileged,400000 Privileged bit (DL) 200000 7-18 bool sdw.unpaged,200000 Unpaged bit (DL)  100000 7-19 bool sdw.entry_bound_sw,100000 Entry bound switch (DL) 040000 7-20 bool sdw.cache,040000 Cache enabled bit (DL)  037777 7-21 bool sdw.entry_bound,037777 Entry bound (DL)  7-22  7-23 "  7-24 " END INCLUDE FILE sdw.incl.alm  7-25 "  1758  1759 include bos_ptw  8-1 "  8-2 " BEGIN INCLUDE FILE ptw.incl.alm 02/14/75  8-3 "  400000 8-4 bool ptw.nulled,400000 "DU address is to be deposited  740000 8-5 bool ptw.add_type,740000 "DL address type, as in add_type.incl.alm 020000 8-6 bool ptw.first,020000 used by PML to decide if a page should go to PD  010000 8-7 bool ptw.er,010000 previous request for this page was in error 010000 8-8 bool ptw.pre_paged,010000 temporary used during post purging and pre paging  001000 8-9 bool ptw.phu,001000 page has been used bit 000400 8-10 bool ptw.phm1,00400 page modified, but reported.  000200 8-11 bool ptw.nypd,00200 page needs pd update  000100 8-12 bool ptw.phm,000100 page has been modified bit 000040 8-13 bool ptw.phu1,000040 page has been used in quantum 000020 8-14 bool ptw.wired,000020 page must remain in core (wired-down)  000010 8-15 bool ptw.os,000010 page is out-of-service (I/O is going on)  000004 8-16 bool ptw.df,000004 directed fault exists if this is 0  000003 8-17 bool ptw.df_no,000003 number of the directed fault 000005 8-18 equ ptw.usage_bits_shift,5 8-19  8-20 "  8-21 " END INCLUDE FILE ptw.incl.alm  8-22 "  1760  1761 include sst  9-1  9-2  9-3 "BEGIN INCLUDE FILE sst.incl.alm  9-4  9-5  9-6 "Created 11/11/82 1426.0 est Thu by convert_include_file, 9-7 " Version of 07/15/82 2104.3 est Thu.  9-8  9-9 "Made from >udd>Multics>Bongiovanni>htd>dm_dir>sst.incl.pl1,  9-10 " modified 11/11/82 1425.9 est Thu  9-11  9-12 "  9-13 " Structure sst 9-14 "  001000 9-15 equ sst_size,512  9-16  9-17  000000 9-18 equ sst.space,0  000010 9-19 equ sst.pre_page_time,8 " DOUBLE  000012 9-20 equ sst.post_purge_time,10 " DOUBLE  000014 9-21 equ sst.post_in_core,12  000015 9-22 equ sst.thrashing,13  000016 9-23 equ sst.npfs_misses,14 000017 9-24 equ sst.salv,15  000020 9-25 equ sst.ptl,16 000021 9-26 equ sst.astl,17  000022 9-27 equ sst.astl_event,18  9-28  000023 9-29 equ sst.astl_notify_requested_word,19  400000 9-30 bool sst.astl_notify_requested,400000 " DU 9-31  000024 9-32 equ sst.nused,20  000025 9-33 equ sst.ptwbase,21 000026 9-34 equ sst.tfreep,22  000030 9-35 equ sst.astap,24  000032 9-36 equ sst.bulk_pvtx,26  000033 9-37 equ sst.ptl_wait_ct,27 000034 9-38 equ sst.astsize,28 000035 9-39 equ sst.cmesize,29 000036 9-40 equ sst.root_astep,30  000040 9-41 equ sst.pts,32 000044 9-42 equ sst.level,36 " LEVEL 2  9-43  000044 9-44 equ sst.ausedp,36 " UPPER 000044 9-45 equ sst.no_aste,36 " LOWER  9-46  000050 9-47 equ sst.atempp,40 " UPPER 000050 9-48 equ sst.atempp1,40 " LOWER  9-49  000051 9-50 equ sst.dm_enabled_word,41 400000 9-51 bool sst.dm_enabled,400000 " DU  9-52  000052 9-53 equ sst.ainitp,42 " UPPER 000052 9-54 equ sst.ainitp1,42 " LOWER  9-55  000053 9-56 equ sst.strsize,43 000054 9-57 equ sst.cmp,44 9-58  000056 9-59 equ sst.usedp,46 " UPPER  9-60  000057 9-61 equ sst.wtct,47  9-62  000060 9-63 equ sst.startp,48 " UPPER 9-64  000061 9-65 equ sst.removep,49 " UPPER  9-66  000062 9-67 equ sst.double_write,50  000063 9-68 equ sst.temp_w_event,51  000064 9-69 equ sst.root_pvtx,52  9-70  000065 9-71 equ sst.ptw_first_word,53  400000 9-72 bool sst.ptw_first,400000 " DU 9-73  000066 9-74 equ sst.nolock_word,54 400000 9-75 bool sst.nolock,400000 " DU  9-76  000067 9-77 equ sst.x_fsdctp,55 " UPPER  9-78  000070 9-79 equ sst.fc_skips_pinned,56 000071 9-80 equ sst.cl_skips_pinned,57 000072 9-81 equ sst.ast_ht_ptr,58  000074 9-82 equ sst.ast_ht_n_buckets,60  000075 9-83 equ sst.ast_ht_uid_mask,61 000076 9-84 equ sst.meter_ast_locking,62  000077 9-85 equ sst.checksum_filemap,63  000100 9-86 equ sst.page_read_errors,64  000101 9-87 equ sst.page_write_errors,65  000102 9-88 equ sst.rws_read_errors,66 000103 9-89 equ sst.rws_write_errors,67  000104 9-90 equ sst.cycle_pv_allocation,68 000105 9-91 equ sst.n_trailers,69  000106 9-92 equ sst.synch_activations,70  000107 9-93 equ sst.synch_skips,71 000110 9-94 equ sst.lock_waits,72  000111 9-95 equ sst.total_locks_set,73 000112 9-96 equ sst.pdir_page_faults,74  000113 9-97 equ sst.level_1_page_faults,75 000114 9-98 equ sst.dir_page_faults,76 000115 9-99 equ sst.ring_0_page_faults,77  000116 9-100 equ sst.rqover,78  000117 9-101 equ sst.pc_io_waits,79 000120 9-102 equ sst.steps,80  000121 9-103 equ sst.needc,81  000122 9-104 equ sst.ceiling,82 000123 9-105 equ sst.ctwait,83  000124 9-106 equ sst.wired,84  000125 9-107 equ sst.laps,85  000126 9-108 equ sst.skipw,86  000127 9-109 equ sst.skipu,87  000130 9-110 equ sst.skipm,88  000131 9-111 equ sst.skipos,89  000132 9-112 equ sst.skipspd,90 000133 9-113 equ sst.aused,91  000134 9-114 equ sst.damaged_ct,92  000135 9-115 equ sst.deact_count,93 000136 9-116 equ sst.demand_deact_attempts,94  000137 9-117 equ sst.demand_deactivations,95  000140 9-118 equ sst.reads,96  000150 9-119 equ sst.writes,104 000160 9-120 equ sst.short_pf_count,112 000161 9-121 equ sst.loop_locks,113 000162 9-122 equ sst.loop_lock_time,114 " DOUBLE  000164 9-123 equ sst.cpu_sf_time,116 " DOUBLE  000166 9-124 equ sst.total_sf_pf,118  000167 9-125 equ sst.total_sf,119  000170 9-126 equ sst.pre_page_size,120  000171 9-127 equ sst.post_list_size,121 000172 9-128 equ sst.post_purgings,122  000173 9-129 equ sst.post_purge_calls,123  000174 9-130 equ sst.pre_page_calls,124 000175 9-131 equ sst.pre_page_list_size,125 000176 9-132 equ sst.pre_page_misses,126  000177 9-133 equ sst.pre_pagings,127  000200 9-134 equ sst.wire_proc_data,128 " DOUBLE  000220 9-135 equ sst.abs_wired_count,144  000221 9-136 equ sst.system_type,145  000222 9-137 equ sst.wired_copies,146  000223 9-138 equ sst.recopies,147  000224 9-139 equ sst.first_core_block,148  000225 9-140 equ sst.last_core_block,149  000226 9-141 equ sst.fw_retries,150 000227 9-142 equ sst.pvhtp,151  000230 9-143 equ sst.askipsize,152  000234 9-144 equ sst.aneedsize,156  000240 9-145 equ sst.stepsa,160 000241 9-146 equ sst.askipsehs,161  000242 9-147 equ sst.asearches,162  000243 9-148 equ sst.askipslevel,163  000244 9-149 equ sst.askipsinit,164 000245 9-150 equ sst.acost,165  000246 9-151 equ sst.askipslock,166 000247 9-152 equ sst.askipdius,167  000250 9-153 equ sst.alaps,168  000251 9-154 equ sst.updates,169  000252 9-155 equ sst.setfaults_all,170  000253 9-156 equ sst.setfaults_acc,171  000254 9-157 equ sst.total_bf,172  000255 9-158 equ sst.total_bf_pf,173  000256 9-159 equ sst.cpu_bf_time,174 " DOUBLE  000260 9-160 equ sst.asteps,176 000264 9-161 equ sst.ast_locked_at_time,180 " DOUBLE  000266 9-162 equ sst.ast_locked_total_time,182 " DOUBLE 000270 9-163 equ sst.ast_lock_wait_time,184 " DOUBLE  000272 9-164 equ sst.ast_locking_count,186  000273 9-165 equ sst.cleanup_count,187  000274 9-166 equ sst.cleanups_with_any_rws,188  000275 9-167 equ sst.cleanup_rws_count,189  000276 9-168 equ sst.cleanup_real_time,190 " DOUBLE 000300 9-169 equ sst.tree_count,192 000400 9-170 equ sst.pp_meters,256  9-171  000500 9-172 equ sst.wusedp,320 " UPPER  9-173  000501 9-174 equ sst.write_hunts,321  000502 9-175 equ sst.claim_skip_cme,322 000503 9-176 equ sst.claim_skip_free,323  000504 9-177 equ sst.claim_notmod,324  000505 9-178 equ sst.claim_passed_used,325  000506 9-179 equ sst.claim_skip_ptw,326 000507 9-180 equ sst.claim_writes,327  000510 9-181 equ sst.claim_steps,328  000511 9-182 equ sst.rws_reads_os,329  000512 9-183 equ sst.pd_updates,330 000513 9-184 equ sst.pre_seeks_failed,331  000514 9-185 equ sst.pd_desperation_steps,332  000515 9-186 equ sst.pd_desperations,333  000516 9-187 equ sst.skips_nypd,334 9-188  000517 9-189 equ sst.pd_writeahead_word,335 400000 9-190 bool sst.pd_writeahead,400000 " DU 9-191  000520 9-192 equ sst.pd_desperations_not_mod,336  000521 9-193 equ sst.resurrections,337  000522 9-194 equ sst.volmap_seg_page_faults,338 000523 9-195 equ sst.oopv,339  000524 9-196 equ sst.pdflush_replaces,340  000525 9-197 equ sst.pcrsst_statptr,341 000526 9-198 equ sst.pd_resurrections,342  000527 9-199 equ sst.dblw_resurrections,343 000530 9-200 equ sst.sgm_time,344 " DOUBLE 000532 9-201 equ sst.sgm_pf,346 000533 9-202 equ sst.bad_sgms,347  000534 9-203 equ sst.sgm_sgft,348  000535 9-204 equ sst.good_sgms,349  000536 9-205 equ sst.claim_runs,350 000537 9-206 equ sst.activations,351  000540 9-207 equ sst.dir_activations,352  000541 9-208 equ sst.hedge_updatevs,353 000542 9-209 equ sst.hedge_writes,354  000543 9-210 equ sst.evict_recover_data,355 " LEVEL 2  9-211  000543 9-212 equ sst.evict_ptp,355 " UPPER 000543 9-213 equ sst.evict_phmbit,355 " LOWER  9-214  000544 9-215 equ sst.force_swrites,356  000545 9-216 equ sst.force_pwrites,357  000546 9-217 equ sst.fw_none,358  000547 9-218 equ sst.force_updatevs,359 000550 9-219 equ sst.pf_pd_loop_time,360 " DOUBLE  000552 9-220 equ sst.pf_unlock_ptl_time,362 " DOUBLE  000554 9-221 equ sst.pf_pd_loop_meterings,364  000555 9-222 equ sst.pf_unlock_ptl_meterings,365  000556 9-223 equ sst.makeknown_activations,366  000557 9-224 equ sst.backup_activations,367 000560 9-225 equ sst.metering_flags,368 " LEVEL 2  9-226  400000 9-227 bool sst.activate_activated,400000 " DU  9-228  000561 9-229 equ sst.seg_fault_calls,369  000562 9-230 equ sst.stk_truncate_should_didnt,370  000563 9-231 equ sst.stk_truncate_should_did,371  000564 9-232 equ sst.stk_truncate_shouldnt_didnt,372  000565 9-233 equ sst.stk_truncate_shouldnt_did,373  000566 9-234 equ sst.stk_pages_truncated,374  000567 9-235 equ sst.stk_pages_truncated_in_core,375  000600 9-236 equ sst.pdmap,384  000602 9-237 equ sst.pdhtp,386  000604 9-238 equ sst.pd_id,388  000605 9-239 equ sst.pdsize,389 000606 9-240 equ sst.pdme_no,390  9-241  000607 9-242 equ sst.pdusedp,391 " UPPER  9-243  000610 9-244 equ sst.pd_first,392  000611 9-245 equ sst.pd_map_addr,393  000612 9-246 equ sst.nrecs_pdmap,394  000613 9-247 equ sst.pd_free,395  000614 9-248 equ sst.pd_using,396  000615 9-249 equ sst.pd_wtct,397  000616 9-250 equ sst.pd_writes,398  000617 9-251 equ sst.pd_ceiling,399 000620 9-252 equ sst.pd_steps,400  000621 9-253 equ sst.pd_skips_incore,401  000622 9-254 equ sst.pd_skips_rws,402  000623 9-255 equ sst.pd_needed,403  000624 9-256 equ sst.mod_during_write,404  000625 9-257 equ sst.pd_write_aborts,405  000626 9-258 equ sst.pd_rws_active,406  000627 9-259 equ sst.pd_no_free,407 000630 9-260 equ sst.pd_read_truncates,408  000631 9-261 equ sst.pd_write_truncates,409 000632 9-262 equ sst.pd_htsize,410  9-263  000633 9-264 equ sst.pd_hash_mask,411 " UPPER  9-265  000634 9-266 equ sst.pdmap_astep,412  000636 9-267 equ sst.zero_pages,414 000637 9-268 equ sst.pd_zero_pages,415  000640 9-269 equ sst.trace_sw,416 " LEVEL 2  9-270  000010 9-271 bool sst.pc_trace_pf,000010 " DL  000004 9-272 bool sst.tty_trace,000004 " DL 000002 9-273 bool sst.pc_trace,000002 " DL 000001 9-274 bool sst.sc_trace,000001 " DL 9-275  000641 9-276 equ sst.new_pages,417  000642 9-277 equ sst.rws_time_temp,418 " DOUBLE 000644 9-278 equ sst.rws_time_start,420 " DOUBLE  000646 9-279 equ sst.rws_time_done,422 " DOUBLE 000650 9-280 equ sst.pd_time_counts,424 000654 9-281 equ sst.pd_time_values,428 " DOUBLE  000664 9-282 equ sst.pd_no_free_gtpd,436  000665 9-283 equ sst.pd_page_faults,437 000666 9-284 equ sst.pd_no_free_first,438  000667 9-285 equ sst.update_index,439  000670 9-286 equ sst.last_update,440 " DOUBLE  000672 9-287 equ sst.count_pdmes,442  000673 9-288 equ sst.bucket_overflow,443  000674 9-289 equ sst.buckets,444  9-290  000774 9-291 equ sst.ast_track_word,508 400000 9-292 bool sst.ast_track,400000 " DU 9-293  000775 9-294 equ sst.dirlock_writebehind,509  000776 9-295 equ sst.write_limit,510  9-296  9-297 "END INCLUDE FILE sst.incl.alm 1762 include add_type  10-1 "  10-2 " BEGIN INCLUDE FILE add_type.incl.alm 02/14/75 10-3 "  10-4  10-5 " This file defines the interpretation of the add_type  10-6 " field of a ptw or cme.  10-7  400000 10-8 bool add_type.core,400000 "DL core address - S/B only in PTW 200000 10-9 bool add_type.disk,200000 "DL disk address  100000 10-10 bool add_type.pd,100000 "DL paging device record number 040000 10-11 bool add_type.reserved,040000 "DL reserved for future use  10-12  740000 10-13 bool add_type.non_null,740000 "DL not a null address  10-14  10-15 "  10-16 " END INCLUDE FILE add_type.incl.alm  10-17 "  1763 include aste  11-1  11-2  11-3 "BEGIN INCLUDE FILE aste.incl.alm  11-4  11-5  11-6 "Created 10/26/82 2145.6 edt Tue by convert_include_file, 11-7 " Version of 07/15/82 2204.3 edt Thu.  11-8  11-9 "Made from >udd>Multics>Bongiovanni>htd>cksum>aste.incl.pl1,  11-10 " modified 10/26/82 2145.5 edt Tue  11-11  11-12 "  11-13 " Structure aste  11-14 "  000014 11-15 equ aste_size,12  11-16  000000 11-17 equ aste.fp,0 " UPPER  000000 11-18 equ aste.bp,0 " LOWER  11-19  000001 11-20 equ aste.infl,1 " UPPER  000001 11-21 equ aste.infp,1 " LOWER  11-22  000002 11-23 equ aste.strp,2 " UPPER  000002 11-24 equ aste.par_astep,2 " LOWER  11-25  000003 11-26 equ aste.uid,3 11-27  000004 11-28 equ aste.msl_word,4  000033 11-29 equ aste.msl_shift,27  000777 11-30 bool aste.msl_mask,000777  000004 11-31 equ aste.pvtx_word,4  000022 11-32 equ aste.pvtx_shift,18 000777 11-33 bool aste.pvtx_mask,000777 000004 11-34 equ aste.vtocx,4 " LOWER  11-35  000005 11-36 equ aste.usedf_word,5  400000 11-37 bool aste.usedf,400000 " DU  000005 11-38 equ aste.init_word,5  200000 11-39 bool aste.init,200000 " DU  000005 11-40 equ aste.gtus_word,5  100000 11-41 bool aste.gtus,100000 " DU  000005 11-42 equ aste.gtms_word,5  040000 11-43 bool aste.gtms,040000 " DU  000005 11-44 equ aste.hc_word,5 020000 11-45 bool aste.hc,020000 " DU  000005 11-46 equ aste.hc_sdw_word,5 010000 11-47 bool aste.hc_sdw,010000 " DU  000005 11-48 equ aste.any_access_on_word,5  004000 11-49 bool aste.any_access_on,004000 " DU  000005 11-50 equ aste.write_access_on_word,5  002000 11-51 bool aste.write_access_on,002000 " DU  000005 11-52 equ aste.inhibit_cache_word,5  001000 11-53 bool aste.inhibit_cache,001000 " DU  000005 11-54 equ aste.explicit_deact_ok_word,5  000400 11-55 bool aste.explicit_deact_ok,000400 " DU  000005 11-56 equ aste.deact_error_word,5  000200 11-57 bool aste.deact_error,000200 " DU  000005 11-58 equ aste.hc_part_word,5  000100 11-59 bool aste.hc_part,000100 " DU 000005 11-60 equ aste.fm_damaged_word,5 000040 11-61 bool aste.fm_damaged,000040 " DU  000005 11-62 equ aste.dius_word,5  000002 11-63 bool aste.dius,000002 " DU  000005 11-64 equ aste.nid_word,5  000001 11-65 bool aste.nid,000001 " DU 000005 11-66 equ aste.dmpr_pad_word,5  400000 11-67 bool aste.dmpr_pad,400000 " DL 000005 11-68 equ aste.ehs_word,5  200000 11-69 bool aste.ehs,200000 " DL 000005 11-70 equ aste.nqsw_word,5  100000 11-71 bool aste.nqsw,100000 " DL  000005 11-72 equ aste.dirsw_word,5  040000 11-73 bool aste.dirsw,040000 " DL  000005 11-74 equ aste.master_dir_word,5 020000 11-75 bool aste.master_dir,020000 " DL  000005 11-76 equ aste.volmap_seg_word,5 010000 11-77 bool aste.volmap_seg,010000 " DL  000005 11-78 equ aste.tqsw_word,5  004000 11-79 bool aste.tqsw,004000 " DL  11-80  000006 11-81 equ aste.dtu,6 000007 11-82 equ aste.dtm,7 11-83  000010 11-84 equ aste.quota,8 " UPPER  11-85  000011 11-86 equ aste.used,9 " UPPER  11-87  000012 11-88 equ aste.csl_word,10  000033 11-89 equ aste.csl_shift,27  000777 11-90 bool aste.csl_mask,000777  000012 11-91 equ aste.fmchanged_word,10 000400 11-92 bool aste.fmchanged,000400 " DU  000012 11-93 equ aste.fms_word,10  000200 11-94 bool aste.fms,000200 " DU 000012 11-95 equ aste.npfs_word,10  000100 11-96 bool aste.npfs,000100 " DU  000012 11-97 equ aste.gtpd_word,10  000040 11-98 bool aste.gtpd,000040 " DU  000012 11-99 equ aste.dnzp_word,10  000020 11-100 bool aste.dnzp,000020 " DU  000012 11-101 equ aste.per_process_word,10  000010 11-102 bool aste.per_process,000010 " DU  000012 11-103 equ aste.ddnp_word,10  000004 11-104 bool aste.ddnp,000004 " DU  000012 11-105 equ aste.records_word,10  000011 11-106 equ aste.records_shift,9  000777 11-107 bool aste.records_mask,000777  000012 11-108 equ aste.np_word,10  000000 11-109 equ aste.np_shift,0  000777 11-110 bool aste.np_mask,000777  11-111  000013 11-112 equ aste.ht_fp,11 " UPPER 000013 11-113 equ aste.fmchanged1_word,11  400000 11-114 bool aste.fmchanged1,400000 " DL  000013 11-115 equ aste.damaged_word,11  200000 11-116 bool aste.damaged,200000 " DL 000013 11-117 equ aste.pack_ovfl_word,11 100000 11-118 bool aste.pack_ovfl,100000 " DL  000013 11-119 equ aste.synchronized_word,11  040000 11-120 bool aste.synchronized,040000 " DL 000013 11-121 equ aste.ptsi_word,11  000006 11-122 equ aste.ptsi_shift,6  000003 11-123 bool aste.ptsi_mask,000003 000013 11-124 equ aste.marker_word,11  000000 11-125 equ aste.marker_shift,0  000077 11-126 bool aste.marker_mask,000077  11-127  11-128 "  11-129 " Structure aste_part  11-130 "  000014 11-131 equ aste_part_size,12  11-132  11-133  000000 11-134 equ aste_part.one,0  000001 11-135 equ aste_part.two,1 " DOUBLE  11-136  000013 11-137 equ aste_part.three_word,11  000000 11-138 equ aste_part.three_shift,0  000377 11-139 bool aste_part.three_mask,000377  11-140  11-141 "  11-142 " Structure seg_aste  11-143 "  000014 11-144 equ seg_aste_size,12  11-145  11-146  000010 11-147 equ seg_aste.usage,8  11-148  11-149 "END INCLUDE FILE aste.incl.alm  1764  1765 include cmp  12-1 "  12-2 " BEGIN INCLUDE FILE cmp.incl.alm October 1982  12-3 "  000004 12-4 equ cme_size,4 Size of a CME  12-5  000000 12-6 equ cme.fp,0 forward pointer to next core map entry (DU)  000000 12-7 equ cme.bp,0 backward pointer to previous core map entry (DL) 12-8  000001 12-9 equ cme.devadd,1 device address of page in the core block  000001 12-10 equ cme.flags,1 word containing various flags  740000 12-11 bool cme.did_mask,740000 mask for extracting device ID from core map entry 010000 12-12 bool cme.synch_held,010000 page of synch seg held in mem (DL)  004000 12-13 bool cme.io,004000 read/write bit (DL) 001000 12-14 bool cme.er,001000 error on previous I/O  000400 12-15 bool cme.removing,000400 page is being removed 000200 12-16 bool cme.abs_w,000200 page may not be moved  000100 12-17 bool cme.abs_usable,000100 page may be assigned with fixed abs addr  000040 12-18 bool cme.notify_requested,000040 ptw event must be notified on completion  000010 12-19 bool cme.phm_hedge,000010 periodic write scheduler 000007 12-20 bool cme.contr,000007 port number of controller in which core block is located 12-21  000002 12-22 equ cme.ptwp,2 page table word pointer (DU)  000002 12-23 equ cme.astep,2 AST entry ptr (DL) 12-24  000003 12-25 equ cme.pin_counter,3 number times to skip eviction (DU)  000003 12-26 equ cme.synch_page_entryp,3 rel ptr to synch page entry  12-27  12-28 " END INCLUDE FILE cmp.incl.alm 1766  1767 include bos_page_info  13-1 " BEGIN INCLUDE FILE page_info.incl.alm -- 6/72  13-2 "  037777 13-3 bool address_compare_mask,037777  000012 13-4 equ page_power,10 2**10 = size of page  000001 13-5 bool df1,000001 directed fault 1 on page fault  100000 13-6 bool int,100000  000020 13-7 bool pri,000020  000004 13-8 bool no_post,000004  000003 13-9 equ sst,3  000003 13-10 equ pdm,sst  000003 13-11 equ ast,sst  000002 13-12 equ ptw,2  000003 13-13 equ cme,sst  000000 13-14 equ fault_entry,0  000001 13-15 equ read_entry,1  000002 13-16 equ write_entry,2  000003 13-17 equ pre_page_entry,3  000004 13-18 equ post_purge_entry,4 000005 13-19 equ pd_flush_entry,5  000006 13-20 equ evict_entry,6  000007 13-21 equ abs_wire_entry,7  000010 13-22 equ cleanup_entry,8  000010 13-23 bool working_set,000010  000002 13-24 bool post_purge_bit,000002 000001 13-25 bool moved_bit,000001  000004 13-26 bool used_bit_off,000004  010101 13-27 bool char_desc,010101  000014 13-28 equ ast_size,12  000004 13-29 equ pdsize,4  000012 13-30 equ pd_free_required,10  000036 13-31 equ pd_write_limit,30  000036 13-32 equ pd_max_rws,30  000017 13-33 equ pre_seek_limit,15  13-34  13-35 "  13-36 " Shifts for converting cmep offsets,  13-37 " ptw/sdw addresses, and absaddrs.  13-38  000014 13-39 equ coreadd_to_desc.ls,12 coreadd var to sdw/ptw  000006 13-40 equ coreadd_to_desc_lower.rl,6 for putting together ptws  000014 13-41 equ desc_to_coreadd.rl,12 ptw/sdw to coreadd  13-42  000012 13-43 equ cmep_to_coreadd.rl,10 .cmep to coreadd 000012 13-44 equ coreadd_to_cmep.ls,10 coreadd to .cmep 13-45  000002 13-46 equ cmep_to_desc.ls,2 .cmep to ptw/sdw  000002 13-47 equ desc_to_cmep.rl,2 ptw/sdw to .cmep  13-48  13-49 "  13-50 " Various AST masks which are not  13-51 " expressible in standard notation  13-52 "  777000 13-53 bool aste.csl_mask_inner,777000  777000 13-54 bool aste.records_mask_inner,777000  13-55  13-56 "  13-57 " END INCLUDE FILE page_info.incl.alm  1768  1769 include bos_tv 14-1 " 14-2 " Begin include file ...... bos_tv.incl.alm 14-3 " Created in November 1971 by N. I. Morris. 14-4 " Modified 9/9/76 by Noel I. Morris 14-5 " Modified by Sherman D. Sprague 02/11/81 for DPS8 support. 14-6 " Modified November 1981 by C. Hornig to remove iom_connect_rel.  14-7 " Modified January 1982 by J. Bongiovanni to add getport_info  14-8 " Modified May 1982 by Sherman D. Sprague to add getmpc.  14-9  14-10 " BOS Utility Package Transfer Vector.  14-11  012000 14-12 equ pagectl,utilorg  012001 14-13 equ line,pagectl+1 012040 14-14 equ arg,line+31  012060 14-15 equ darg,arg+arglen+1  012100 14-16 equ earg,darg+arglen+1 012120 14-17 equ fltscu,earg+arglen+1  14-18  012200 14-19 equ tv_org,utilorg+128 14-20  012200 14-21 equ scan,tv_org+0  012201 14-22 equ arg_count,tv_org+1 012202 14-23 equ nextline,tv_org+2  012203 14-24 equ nlraw,tv_org+3 012204 14-25 equ search,tv_org+4  012205 14-26 equ makefil,tv_org+5  012206 14-27 equ ldcom,tv_org+6 012207 14-28 equ getsec,tv_org+7  012210 14-29 equ cvinit,tv_org+8  012211 14-30 equ rdev,tv_org+9  012212 14-31 equ wdev,tv_org+10 012213 14-32 equ phybos,tv_org+11  012214 14-33 equ bosphy,tv_org+12  012215 14-34 equ phyadd,tv_org+13  012216 14-35 equ mulbos,tv_org+14  012217 14-36 equ bosmul,tv_org+15  012220 14-37 equ lookup_devmodel,tv_org+16  012221 14-38 equ makesdw,tv_org+17  012222 14-39 equ argbos,tv_org+18  012223 14-40 equ argmul,tv_org+19  012224 14-41 equ amdvt,tv_org+20  012225 14-42 equ amfirst,tv_org+21  012226 14-43 equ amlast,tv_org+22  012227 14-44 equ cvnamla,tv_org+23  012230 14-45 equ sect_per_cyl_list,tv_org+24  012231 14-46 equ sect_per_dev_list,tv_org+25  012232 14-47 equ rec_per_dev_list,tv_org+26 012233 14-48 equ amaxio,tv_org+27  012234 14-49 equ rdsec,tv_org+28  012235 14-50 equ wtsec,tv_org+29  012236 14-51 equ disk_brief,tv_org+30  012237 14-52 equ itaper,tv_org+31  012240 14-53 equ itapew,tv_org+32  012241 14-54 equ erpt,tv_org+33 012242 14-55 equ ercv,tv_org+34 012243 14-56 equ erbuf,tv_org+35  012244 14-57 equ type,tv_org+36 012245 14-58 equ ttyinit,tv_org+37  012246 14-59 equ readcd,tv_org+38  012247 14-60 equ readtty,tv_org+39  012250 14-61 equ getprt,tv_org+40  012251 14-62 equ punch,tv_org+41  012252 14-63 equ octwd,tv_org+42  012253 14-64 equ geas,tv_org+43 012254 14-65 equ geastab,tv_org+44  012255 14-66 equ asge,tv_org+45 012256 14-67 equ asgetab,tv_org+46  012257 14-68 equ ljust,tv_org+47  012260 14-69 equ rjust,tv_org+48  012261 14-70 equ bzel,tv_org+49 012262 14-71 equ stripa,tv_org+50  012263 14-72 equ stripg,tv_org+51  012264 14-73 equ getconf,tv_org+52  012265 14-74 equ getmore,tv_org+53  012266 14-75 equ getperiph,tv_org+54  012267 14-76 equ rdclock,tv_org+55  012270 14-77 equ cvclock,tv_org+56  012271 14-78 equ init_io,tv_org+57  012272 14-79 equ connect_iom,tv_org+58  012273 14-80 equ getmpc,tv_org+59  012274 14-81 equ check_status,tv_org+60 012275 14-82 equ get_special_interrupt,tv_org+61  012276 14-83 equ get_status_interrupt,tv_org+62 012277 14-84 equ xio_wait,tv_org+63 012300 14-85 equ initint,tv_org+64  012301 14-86 equ wantflt,tv_org+65  012302 14-87 equ intno,tv_org+66  012303 14-88 equ intrpts1,tv_org+67 012304 14-89 equ hexwd,tv_org+68  012305 14-90 equ find_disk,tv_org+69  012306 14-91 equ find_root,tv_org+70  012307 14-92 equ find_part,tv_org+71  012310 14-93 equ check_status_no_stat,tv_org+72 012311 14-94 equ check_special_status,tv_org+73 012312 14-95 equ check_cpu_type,tv_org+74  012313 14-96 equ getportinfo,tv_org+75  14-97  14-98 " End of include file ...... bos_tv.incl.alm  14-99  1770  1771 include bos_common 15-1 "  15-2 " Begin include file ...... bos_common.incl.alm 15-3 " Modified on 8/31/76 by N. I. Morris  15-4 " Modified on 9/01/80 by Sherman D. Sprague for DPS8 operation  15-5 " Modified on 5/26/82 by Sherman D. Sprague to lengthen config size 15-6 " Modified on 3/01/83 by Sherman D. Sprague to lengthen dirlen  15-7 " MACHINE CONDITIONS AREA  15-8 " Its length is "storlen". 15-9  000000 15-10 equ amptwregs,0 Ass. Mem PTW registers  000100 15-11 equ amptwptr,64 Ass. Mem PTW pointers 000200 15-12 equ amsdwregs,128 Ass. Mem SDW registers  000400 15-13 equ amsdwptr,256 Ass. Mem SDW pointers  000500 15-14 equ ouhist,320 operations hist regs  000700 15-15 equ cuhist,448 control unit hist regs  001100 15-16 equ eishist,576 eis hist regs  001300 15-17 equ aphist,704 appending unit hist regs  001500 15-18 equ prs,832 pointer regs  001520 15-19 equ regs,848 sreg 001530 15-20 equ low_order_port,856 port to read clock from 001532 15-21 equ mctime,858 bootload memory clock  001540 15-22 equ scu,864  001550 15-23 equ mcm,872 memory masks 8 ports 001570 15-24 equ dbr,888  001572 15-25 equ intrpts,890 waiting interrupts 001573 15-26 equ bar,891 bar  001574 15-27 equ modereg,892 processor & cache mode registers  001576 15-28 equ faultreg,894 processor fault register  001600 15-29 equ ptrlen,896 pointer-lengths EIS 0 mod 8 001610 15-30 equ coreblocks,904 array of port information  15-31 " Bits 0-17 => num 1st 64-word block  15-32 " Bits 18-35 => num of 64-word blocks  15-33 " (-1) => no mem on this port  001620 15-34 equ lowport_cfg,912 Saved CFG from bootload SCU  15-35  002000 15-36 equ storlen,1024  15-37  15-38  15-39  15-40 " BOS COMMAND DIRECTORY 15-41 " Its length is "dirlen".  15-42  002000 15-43 equ dir,1024 ( 0-23) => sector # of first sector on BOS disk  15-44 " (24-35) => # of sectors in BOS common  002001 15-45 equ used,dir+1 ( 0-23) => # of next available sector on BOS disk  002002 15-46 equ useable,dir+2 ( 0-23) => first unavailable sector on BOS disk  002003 15-47 equ corearea,dir+3 ( 0-23) => starting sector of Multics core image  15-48 " (24-35) => # of sectors in Multics core image  002004 15-49 equ setuparea,dir+4 Sector and length of setup 002005 15-50 equ utilarea,dir+5 where utility package is kept  002010 15-51 equ iom_mxbase,dir+8 IOM IMW area address  002011 15-52 equ iom_mbbase,dir+9 IOM mailbox base  002012 15-53 equ bos_dvt,dir+10 BOS disk loc: (o3/iom,o6/chn,o9/drive,o18/devtype)  002013 15-54 equ unitgroup,dir+11 disk unitgroup (device no. or area no.)  002014 15-55 equ diskchanno,dir+12 channel to be used for disk  002015 15-56 equ tapechanno,dir+13 channel # for tapes  002016 15-57 equ rdrchanno,dir+14 channel number for card reader  002017 15-58 equ ttychanno,dir+15 channel # for operator's tty  002020 15-59 equ quietsw,dir+16 if on, don't print card and macro commands  002021 15-60 equ inputsw,dir+17 read from tty, cards, macros  002022 15-61 equ macroloc,dir+18 disk addr, buffer index of macro file  002023 15-62 equ fdump_state,dir+19 completion flag for last FDUMP  002024 15-63 equ d355_state,dir+20 = 1 if DataNet 355 loaded successfully  002025 15-64 equ skipsw,dir+21 if on, skip runcom lines 002026 15-65 equ ttypmtsw,dir+22 if on, prompt  002027 15-66 equ curtcmd,dir+23 current bos command 002030 15-67 equ readysw,dir+24 if on, print ready message  002032 15-68 equ cmdlst,dir+26 list of commands 15-69  000600 15-70 equ dirlen,384 15-71  15-72  15-73  15-74 " MACRO BUFFER AREA 15-75  002600 15-76 equ macrobuf,dir+dirlen io buffer for macro files 002700 15-77 equ macroline,macrobuf+64 runcom command line 002716 15-78 equ macroargs,macroline+14 argument descriptors for runcom  15-79  15-80  15-81  15-82 " CONFIGURATION CARD AREA  15-83 " Its length is 2048 words.  15-84  003000 15-85 equ conf,macrobuf+128 start of configuration info  007000 15-86 equ econf,conf+2048 end of configuration info  000020 15-87 equ confl,16 length of each line  15-88  15-89  007000 15-90 equ seg6length,econf length of bos_common area segment 15-91  15-92 " End of include file ...... bos_common.incl.alm  15-93  1772  1773  1774 end  LITERALS 010614 aa 160162 160150 010615 aa 777777 777000 010616 aa 144163 153000 010617 aa 777777 770000 010620 aa 777777 740000 010621 aa 160141 147145 NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 010622 5a 000003 000000 010623 5a 000017 600000 010624 aa 000000 000000 010625 55 000010 000002 010626 5a 000002 400003 010627 55 000006 000010 010630 aa 004 141 160 156 010631 aa 144 000 000 000 010632 55 000002 000003 010633 6a 000000 400002 010634 55 000013 000003 010635 aa 014 163 171 155 symbol_table  010636 aa 142 157 154 137 010637 aa 164 141 142 154 010640 aa 145 000 000 000 DEFINITIONS HASH TABLE  010641 aa 000000 000015 010642 aa 000000 000000 010643 aa 000000 000000 010644 aa 000000 000000 010645 aa 000000 000000 010646 aa 000000 000000 010647 aa 000000 000000 010650 5a 000010 000000 010651 aa 000000 000000 010652 aa 000000 000000 010653 aa 000000 000000 010654 aa 000000 000000 010655 aa 000000 000000 010656 aa 000000 000000 NO EXTERNAL NAMES  NO TRAP POINTER WORDS  TYPE PAIR BLOCKS  010657 aa 000001 000000 010660 aa 000000 000000 INTERNAL EXPRESSION WORDS 010661 aa 000000 000000 LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 010622 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 222452 761457 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000002 000002 000016 aa 000064 000000 000017 aa 000000 001064 000020 aa 000000 000366 000021 aa 000000 001041 000022 aa 001044 000366 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 000020 000066 aa 000166 000025 000067 aa 122721 272773 000070 aa 000000 112272 000071 aa 214264 200000 000072 aa 000174 000040 000073 aa 113400 415301 000074 aa 000000 111341 000075 aa 220414 400000 000076 aa 000204 000046 000077 aa 043243 125746 000100 aa 000000 103534 000101 aa 053307 400000 000102 aa 000216 000032 000103 aa 112375 747471 000104 aa 000000 111240 000105 aa 207531 200000 000106 aa 000225 000042 000107 aa 112204 105031 000110 aa 000000 111221 000111 aa 055103 400000 000112 aa 000236 000031 000113 aa 043243 130516 000114 aa 000000 104205 000115 aa 554413 200000 000116 aa 000245 000032 000117 aa 112741 326631 000120 aa 000000 111274 000121 aa 624414 000000 000122 aa 000254 000041 000123 aa 105543 476637 000124 aa 000000 110555 000125 aa 260135 200000 000126 aa 000265 000041 000127 aa 106702 126312 000130 aa 000000 110673 000131 aa 145162 200000 000132 aa 000276 000031 000133 aa 113434 242331 000134 aa 000000 111347 000135 aa 432123 600000 000136 aa 000305 000036 000137 aa 043243 127123 000140 aa 000000 103437 000141 aa 275656 200000 000142 aa 000315 000032 000143 aa 113434 042223 000144 aa 000000 111346 000145 aa 227161 400000 000146 aa 000324 000031 000147 aa 113434 242275 000150 aa 000000 111347 000151 aa 432071 000000 000152 aa 000333 000047 000153 aa 110235 072676 000154 aa 000000 111024 000155 aa 524455 000000 000156 aa 000345 000040 000157 aa 110235 072677 000160 aa 000000 111024 000161 aa 524460 600000 000162 aa 000355 000044 000163 aa 121622 277475 000164 aa 000000 112162 000165 aa 321563 400000 000166 aa 076163 160145 >spec>h>3.17>apnd.alm  000167 aa 143076 150076 000170 aa 063056 061067 000171 aa 076141 160156 000172 aa 144056 141154 000173 aa 155040 040040 000174 aa 076154 144144 >ldd>bos>include>bosequ.incl.alm  000175 aa 076142 157163 000176 aa 076151 156143 000177 aa 154165 144145 000200 aa 076142 157163 000201 aa 145161 165056 000202 aa 151156 143154 000203 aa 056141 154155 000204 aa 076154 144144 >ldd>bos>include>config_cards.incl.alm  000205 aa 076142 157163 000206 aa 076151 156143 000207 aa 154165 144145 000210 aa 076143 157156 000211 aa 146151 147137 000212 aa 143141 162144 000213 aa 163056 151156 000214 aa 143154 056141 000215 aa 154155 040040 000216 aa 076154 144144 >ldd>include>fgbx.incl.alm  000217 aa 076151 156143 000220 aa 154165 144145 000221 aa 076146 147142 000222 aa 170056 151156 000223 aa 143154 056141 000224 aa 154155 040040 000225 aa 076154 144144 >ldd>bos>include>apnd_equ.incl.alm  000226 aa 076142 157163 000227 aa 076151 156143 000230 aa 154165 144145 000231 aa 076141 160156 000232 aa 144137 145161 000233 aa 165056 151156 000234 aa 143154 056141 000235 aa 154155 040040 000236 aa 076154 144144 >ldd>include>slt.incl.alm  000237 aa 076151 156143 000240 aa 154165 144145 000241 aa 076163 154164 000242 aa 056151 156143 000243 aa 154056 141154 000244 aa 155040 040040 000245 aa 076154 144144 >ldd>include>slte.incl.alm  000246 aa 076151 156143 000247 aa 154165 144145 000250 aa 076163 154164 000251 aa 145056 151156 000252 aa 143154 056141 000253 aa 154155 040040 000254 aa 076154 144144 >ldd>bos>include>bos_sdw.incl.alm  000255 aa 076142 157163 000256 aa 076151 156143 000257 aa 154165 144145 000260 aa 076142 157163 000261 aa 137163 144167 000262 aa 056151 156143 000263 aa 154056 141154 000264 aa 155040 040040 000265 aa 076154 144144 >ldd>bos>include>bos_ptw.incl.alm  000266 aa 076142 157163 000267 aa 076151 156143 000270 aa 154165 144145 000271 aa 076142 157163 000272 aa 137160 164167 000273 aa 056151 156143 000274 aa 154056 141154 000275 aa 155040 040040 000276 aa 076154 144144 >ldd>include>sst.incl.alm  000277 aa 076151 156143 000300 aa 154165 144145 000301 aa 076163 163164 000302 aa 056151 156143 000303 aa 154056 141154 000304 aa 155040 040040 000305 aa 076154 144144 >ldd>include>add_type.incl.alm  000306 aa 076151 156143 000307 aa 154165 144145 000310 aa 076141 144144 000311 aa 137164 171160 000312 aa 145056 151156 000313 aa 143154 056141 000314 aa 154155 040040 000315 aa 076154 144144 >ldd>include>aste.incl.alm  000316 aa 076151 156143 000317 aa 154165 144145 000320 aa 076141 163164 000321 aa 145056 151156 000322 aa 143154 056141 000323 aa 154155 040040 000324 aa 076154 144144 >ldd>include>cmp.incl.alm  000325 aa 076151 156143 000326 aa 154165 144145 000327 aa 076143 155160 000330 aa 056151 156143 000331 aa 154056 141154 000332 aa 155040 040040 000333 aa 076154 144144 >ldd>bos>include>bos_page_info.incl.alm 000334 aa 076142 157163 000335 aa 076151 156143 000336 aa 154165 144145 000337 aa 076142 157163 000340 aa 137160 141147 000341 aa 145137 151156 000342 aa 146157 056151 000343 aa 156143 154056 000344 aa 141154 155040 000345 aa 076154 144144 >ldd>bos>include>bos_tv.incl.alm  000346 aa 076142 157163 000347 aa 076151 156143 000350 aa 154165 144145 000351 aa 076142 157163 000352 aa 137164 166056 000353 aa 151156 143154 000354 aa 056141 154155 000355 aa 076154 144144 >ldd>bos>include>bos_common.incl.alm  000356 aa 076142 157163 000357 aa 076151 156143 000360 aa 154165 144145 000361 aa 076142 157163 000362 aa 137143 157155 000363 aa 155157 156056 000364 aa 151156 143154 000365 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number  7 abs_wire_entry bos_page_info: 21.  7477 accerr apnd: 451, 673.  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. 37777 address_compare_mask bos_page_info: 3.  400000 add_type.core apnd: 521, add_type: 8. 200000 add_type.disk add_type: 9. 740000 add_type.non_null apnd: 545, 627,  add_type: 13. 100000 add_type.pd apnd: 548, add_type: 10. 40000 add_type.reserved add_type: 11. 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. 7611 apboff apnd: 486, 579, 599, 802.  7474 apend apnd: 512, 603, 662, 683.  7504 aper apnd: 674, 677, 681. 1300 aphist bos_common: 17. 7032 apnd apnd: 94, 350, 396, 1196, 1406, 1414, 1668, apnd_equ: 27. 7300 apnd_ apnd: 95, 441.  7276 apnd_in_sdw apnd: 390, 397, 413. 7000 apnd_org apnd: 42, apnd_equ: 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,  21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,  34, 35, 36, 37, 38, 39, 40. 7576 apnd_sdw apnd: 156, 785, 1063. 7501 apnpa apnd: 491, 510, 520, 529, 562, 569, 591, 622, 655, 676.  7465 apnpaged apnd: 469, 648.  7607 apoff apnd: 443, 458, 475, 648, 800. 7616 aposr apnd: 446, 542, 710, 756, 808. 7503 apotb apnd: 459, 618, 679. 7612 appages apnd: 463, 617, 803. 7613 appno apnd: 479, 489, 614, 616, 741, 804.  7610 appoff apnd: 482, 485, 505, 598, 722, 801.  7614 apptw apnd: 492, 565, 719, 751, 805. 7604 apsdw apnd: 449, 467, 488, 620, 650, 706, 740, 798, 822. 7606 apxrs apnd: 444, 445, 663, 664, 682, 799.  12040 arg bos_tv: 14, 15.  12222 argbos bos_tv: 39. 17 arglen bosequ: 17, bos_tv: 15, 16, 17. 12223 argmul bos_tv: 40. 12201 arg_count bos_tv: 22. 12255 asge bos_tv: 66. 12256 asgetab apnd: 1471, bos_tv: 67. 3 ast bos_page_info: 11.  4000 aste.any_access_on aste: 49. 5 aste.any_access_on_word aste: 48. 0 aste.bp aste: 18. 777 aste.csl_mask aste: 90. 777000 aste.csl_mask_inner bos_page_info: 53.  33 aste.csl_shift aste: 89. 12 aste.csl_word aste: 88. 200000 aste.damaged aste: 116. 13 aste.damaged_word aste: 115. 4 aste.ddnp aste: 104. 12 aste.ddnp_word aste: 103. 200 aste.deact_error aste: 57. 5 aste.deact_error_word aste: 56. 40000 aste.dirsw aste: 73. 5 aste.dirsw_word aste: 72. 2 aste.dius aste: 63. 5 aste.dius_word aste: 62. 400000 aste.dmpr_pad aste: 67. 5 aste.dmpr_pad_word aste: 66. 20 aste.dnzp aste: 100. 12 aste.dnzp_word aste: 99. 7 aste.dtm aste: 82. 6 aste.dtu aste: 81. 200000 aste.ehs aste: 69. 5 aste.ehs_word aste: 68. 400 aste.explicit_deact_ok aste: 55. 5 aste.explicit_deact_ok_word aste: 54.  400 aste.fmchanged aste: 92. 400000 aste.fmchanged1 aste: 114. 13 aste.fmchanged1_word aste: 113. 12 aste.fmchanged_word aste: 91. 200 aste.fms aste: 94. 12 aste.fms_word aste: 93. 40 aste.fm_damaged aste: 61. 5 aste.fm_damaged_word aste: 60. 0 aste.fp aste: 17. 40000 aste.gtms aste: 43. 5 aste.gtms_word aste: 42. 40 aste.gtpd aste: 98. 12 aste.gtpd_word aste: 97. 100000 aste.gtus aste: 41. 5 aste.gtus_word aste: 40. 20000 aste.hc aste: 45. 100 aste.hc_part aste: 59. 5 aste.hc_part_word aste: 58. 10000 aste.hc_sdw aste: 47. 5 aste.hc_sdw_word aste: 46. 5 aste.hc_word aste: 44. 13 aste.ht_fp aste: 112. 1 aste.infl aste: 20. 1 aste.infp aste: 21. 1000 aste.inhibit_cache aste: 53. 5 aste.inhibit_cache_word aste: 52. 200000 aste.init aste: 39. 5 aste.init_word aste: 38. 77 aste.marker_mask aste: 126. 0 aste.marker_shift aste: 125. 13 aste.marker_word aste: 124. 20000 aste.master_dir aste: 75. 5 aste.master_dir_word aste: 74. 777 aste.msl_mask aste: 30. 33 aste.msl_shift aste: 29. 4 aste.msl_word aste: 28. 1 aste.nid aste: 65. 5 aste.nid_word aste: 64. 100 aste.npfs aste: 96. 12 aste.npfs_word aste: 95. 777 aste.np_mask aste: 110. 0 aste.np_shift aste: 109. 12 aste.np_word aste: 108. 100000 aste.nqsw aste: 71. 5 aste.nqsw_word aste: 70. 100000 aste.pack_ovfl aste: 118. 13 aste.pack_ovfl_word aste: 117. 2 aste.par_astep aste: 24. 10 aste.per_process aste: 102. 12 aste.per_process_word aste: 101. 3 aste.ptsi_mask aste: 123. 6 aste.ptsi_shift aste: 122. 13 aste.ptsi_word aste: 121. 777 aste.pvtx_mask apnd: 833, aste: 33. 22 aste.pvtx_shift apnd: 832, aste: 32. 4 aste.pvtx_word apnd: 826, aste: 31. 10 aste.quota aste: 84. 777 aste.records_mask aste: 107. 777000 aste.records_mask_inner bos_page_info: 54.  11 aste.records_shift aste: 106. 12 aste.records_word aste: 105. 2 aste.strp aste: 23. 40000 aste.synchronized aste: 120. 13 aste.synchronized_word aste: 119. 4000 aste.tqsw aste: 79. 5 aste.tqsw_word aste: 78. 3 aste.uid aste: 26. 11 aste.used aste: 86. 400000 aste.usedf aste: 37. 5 aste.usedf_word aste: 36. 10000 aste.volmap_seg aste: 77. 5 aste.volmap_seg_word aste: 76. 4 aste.vtocx aste: 34. 2000 aste.write_access_on aste: 51. 5 aste.write_access_on_word aste: 50.  0 aste_part.one aste: 134. 377 aste_part.three_mask aste: 139. 0 aste_part.three_shift aste: 138. 13 aste_part.three_word aste: 137. 1 aste_part.two aste: 135. 14 aste_part_size aste: 131. 14 aste_size aste: 15. 7214 asttab apnd: 228, 317.  14 ast_size apnd: 824, bos_page_info: 28.  1573 bar bos_common: 26. 2 bf apnd: 590, 639, 1034, 1047, 1092, 1103, 1687, bosequ: 9. 7012 bosdmp apnd: 63, 219, 1001, apnd_equ: 16. 12217 bosmul bos_tv: 36. 12214 bosphy bos_tv: 33. 2012 bos_dvt bos_common: 53. 1 BULK_cd.frec config_cards: 30.  2 BULK_cd.nrec config_cards: 31.  12261 bzel bos_tv: 70. 7022 castap apnd: 78, apnd_equ: 21. 7215 castap_ apnd: 79, 318.  7217 castsize apnd: 320. 10101 char_desc bos_page_info: 27.  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. 3 CHNL_cd.chn config_cards: 27.  2 CHNL_cd.iom config_cards: 26.  4 CHNL_cd.nchan config_cards: 28.  1 CHNL_cd.sub config_cards: 25.  7374 ck_null apnd: 522, 545.  10 cleanup_entry bos_page_info: 22.  7000 cmdbr apnd: 45, 212, 245, 277, 351, apnd_equ: 10. 2032 cmdlst bos_common: 68. 3 cme bos_page_info: 13.  100 cme.abs_usable cmp: 17. 200 cme.abs_w cmp: 16. 2 cme.astep cmp: 23. 0 cme.bp cmp: 7. 7 cme.contr cmp: 20. 1 cme.devadd apnd: 534, cmp: 9. 740000 cme.did_mask cmp: 11. 1000 cme.er cmp: 14. 1 cme.flags cmp: 10. 0 cme.fp cmp: 6. 4000 cme.io cmp: 13. 40 cme.notify_requested cmp: 18. 10 cme.phm_hedge cmp: 19. 3 cme.pin_counter cmp: 25. 2 cme.ptwp cmp: 22. 400 cme.removing cmp: 15. 10000 cme.synch_held cmp: 12. 3 cme.synch_page_entryp cmp: 26. 12 cmep_to_coreadd.rl bos_page_info: 43.  2 cmep_to_desc.ls bos_page_info: 46.  4 cme_size cmp: 4. 7020 cmpsdw apnd: 75, 252, 295, 296, 536, apnd_equ: 20. 7225 cmp_offset apnd: 326, 533.  7223 cmp_segno apnd: 248, 324.  7212 cmtemp apnd: 214, 240, 276, 315.  6 com apnd: 176, 192, 194, 863, 865, 867, 872, 883, 886, 894, 985, 990,  991, 1004, 1019, 1712, 1715, bosequ: 14. 7036 comp apnd: 106, 1303,  apnd_equ: 31. 10071 comp_ apnd: 107, 1139.  3000 conf bos_common: 85, 86.  20 confl bos_common: 87. 12272 connect_iom bos_tv: 79. 12 coreadd_to_cmep.ls bos_page_info: 44.  14 coreadd_to_desc.ls bos_page_info: 39.  6 coreadd_to_desc_lower.rl bos_page_info: 40. 2003 corearea apnd: 1004, 1019,  bos_common: 47. 1610 coreblocks apnd: 985, 990, 991, bos_common: 30. 7221 cptwbase apnd: 322. 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. 2024 d355_state bos_common: 63. 12060 darg bos_tv: 15, 16.  4 data apnd: 1122, 1128, 1143, 1161, 1183, 1187, 1220, 1231.  1570 dbr bos_common: 24. 7210 dbr_set_mask apnd: 213, 243, 310. 7206 dbr_test_mask apnd: 216, 306.  7144 default_hcdbr apnd: 239. 2 desc_to_cmep.rl bos_page_info: 47.  14 desc_to_coreadd.rl bos_page_info: 41.  1 df1 bos_page_info: 5.  2000 dir bos_common: 43, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56,  57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 76. 600 dirlen bos_common: 70, 76.  2014 diskchanno bos_common: 55. 7715 disklist apnd: 180, 191, 193, 196, 197, 859, 913. 12236 disk_brief bos_tv: 51. 3 DISK_cd.chn apnd: 886, config_cards: 20.  2 DISK_cd.iom apnd: 883, config_cards: 19.  5 DISK_cd.model apnd: 865, 894,  config_cards: 22.  4 DISK_cd.nchan config_cards: 21.  6 DISK_cd.ndrives apnd: 863, 867, 872, config_cards: 23.  1 DISK_cd.sub apnd: 176, 192, 194, config_cards: 18.  7601 dmpbufl apnd: 151, 484, 635, 729, 791, 970, 1015, 1054, 1202. 7600 dmpbufsec apnd: 153, 572, 789, 1021.  10063 dontsw apnd: 968, 1031, 1073, 1108.  10035 dont_fetch apnd: 726, 1072.  0 ds apnd: 215, 715, 716, 1064,  bosequ: 7. 7122 dsksrted apnd: 186, 204.  12100 earg bos_tv: 16, 17.  7000 econf bos_common: 86, 90.  1100 eishist bos_common: 16. 7102 enddisk apnd: 175, 184.  12243 erbuf bos_tv: 56. 12242 ercv bos_tv: 55. 12241 erpt apnd: 287, 293, 1478, 1482, 1744, bos_tv: 54. 6 evict_entry bos_page_info: 20.  10350 extsltname apnd: 1281, 1347, 1400. 1576 faultreg bos_common: 28. 0 fault_entry bos_page_info: 14.  2023 fdump_state bos_common: 62. 7037 fetch apnd: 109, 509, 538, 654, 829, 939,  apnd_equ: 32. 7010 fetchin apnd: 57, 503, 507, 537, 652, 656, 721, 724, 725, 828, 933, 936,  937, 973, 994, 1007, 1017, 1056,  apnd_equ: 14. 10024 fetchincore apnd: 1002, 1006, 1008, 1009, 1051. 7744 fetchj apnd: 969, 1074.  7004 fetchout apnd: 51, 354, 399, 540, 600, 746, 831, 942, 975, 1203, 1211, 1409,  1417, 1676, 1694, 1738,  apnd_equ: 12. 7743 fetch_ apnd: 110, 968.  10503 fetch_pdmap apnd: 1661, 1736.  7041 fetch_use_buffer apnd: 115, 595, 1690, apnd_equ: 34. 10021 fetch_use_buffer_ apnd: 116, 1045.  10020 fetx2 apnd: 1014, 1028, 1032, 1043.  10030 fet_setsdw apnd: 1048, 1061.  5 fgb bosequ: 13. 20000 fgbx.alert fgbx: 33. 77 fgbx.bos_entry_mask fgbx: 35. 0 fgbx.bos_entry_shift fgbx: 34. 200000 fgbx.call_bos fgbx: 30. 2 fgbx.cpus fgbx: 20. 400000 fgbx.flags fgbx: 16. 0 fgbx.flags_word fgbx: 15. 40 fgbx.fnp_blast fgbx: 41. 16 fgbx.hc_dbr apnd: 163, fgbx: 39. 40000 fgbx.mess fgbx: 32. 20 fgbx.message fgbx: 40. 571 fgbx.ports_mask fgbx: 23. 34 fgbx.ports_shift fgbx: 22. 3 fgbx.rtb fgbx: 27. 4 fgbx.sentinel fgbx: 37. 100000 fgbx.shut fgbx: 31. 1 fgbx.slt_segno apnd: 165, fgbx: 18. 400000 fgbx.ssenb fgbx: 29. 14 fgbx.sst_sdw apnd: 161, fgbx: 38. 7 fgbx.tags_mask fgbx: 25. 25 fgbx.tags_shift fgbx: 24. 100 fgbx_size fgbx: 13. 12305 find_disk apnd: 1716, bos_tv: 90. 12307 find_part bos_tv: 92. 12306 find_root bos_tv: 91. 2000 firmware_bit bosequ: 20. 20 flagbox apnd: 34, 161, 163, 165.  12120 fltscu bos_tv: 17. 10540 ftperr apnd: 1670, 1688, 1697. 10533 ftpgot apnd: 1681, 1690.  10514 ftpnosst apnd: 1665, 1673.  10542 ftpsw apnd: 1667, 1684, 1700. 10535 ftpx2 apnd: 1662, 1671, 1693, 1697.  12253 geas bos_tv: 64. 12254 geastab bos_tv: 65. 7034 get apnd: 100, 1359, 1455, apnd_equ: 29. 10166 get.count apnd: 1190, 1208, 1210, 1217, 1238. 10155 get.erret apnd: 1168, 1198, 1225. 10160 get.exit apnd: 1145, 1181, 1218, 1226, 1229. 10165 get.ir apnd: 1144, 1182, 1232, 1237.  10127 get.loop apnd: 1194, 1223.  10167 get.offset apnd: 1185, 1195, 1222, 1239.  10164 get.pr apnd: 1183, 1231, 1236. 10131 get.sdwp apnd: 1192, 1197.  10143 get.switch apnd: 1180, 1213.  12264 getconf apnd: 174, 1710,  bos_tv: 73. 7161 getibos apnd: 217, 220, 265. 7164 getiend apnd: 259, 273.  7026 getinit apnd: 82, apnd_equ: 23. 7050 getinit_ apnd: 83, 143.  12265 getmore apnd: 179, 182,  bos_tv: 74. 12273 getmpc bos_tv: 80. 12266 getperiph bos_tv: 75. 12313 getportinfo bos_tv: 96. 12250 getprt bos_tv: 61. 7617 getpvt apnd: 561, 821.  7027 getsdw apnd: 85, 249, 1449, 1466,  apnd_equ: 24. 7231 getsdw_ apnd: 86, 347.  12207 getsec bos_tv: 28. 7043 getsltname apnd: 121, apnd_equ: 36. 10253 getsltname_ apnd: 122, 1323.  7030 getwd apnd: 88, apnd_equ: 25. 10064 get_ apnd: 101, 1124.  7727 get_ptw apnd: 490, 621, 742, 931.  7741 get_ptw_error apnd: 940, 947.  7737 get_ptw_return apnd: 932, 943, 948. 12275 get_special_interrupt bos_tv: 82. 12276 get_status_interrupt bos_tv: 83. 7145 gotdbr apnd: 237, 242.  7704 gotpvt apnd: 855, 899.  7705 gpvt2 apnd: 821, 848, 900, 906.  7713 gpvt3 apnd: 861, 873, 881, 888, 892, 897, 899, 911.  7643 gpvtl1 apnd: 859, 878.  7646 gpvtl2 apnd: 863, 870, 875. 7662 gpvtnxt apnd: 864, 877.  7656 gpvtskp apnd: 866, 872.  7707 gpvt_err apnd: 830, 852, 879, 896, 904. 7665 gpvt_got apnd: 868, 881.  7712 gpvt_pvtx apnd: 854, 856, 905, 910.  7031 grab apnd: 91, 227,  apnd_equ: 26. 7252 grab_ apnd: 92, 387.  7272 grerr apnd: 398, 408.  7256 grlp apnd: 393, 402.  7267 grx2 apnd: 387, 388, 395, 404, 408, 409.  10322 gsdesc apnd: 1331, 1373.  7167 gsdsx2 apnd: 143, 283.  7244 gsdw2 apnd: 347, 356, 363, 367, 370. 7246 gser apnd: 352, 367.  10305 gsget apnd: 1348, 1357.  10332 gsgx2 apnd: 1357, 1383.  10334 gsname apnd: 1361, 1365, 1372, 1386.  10303 gsnerr apnd: 1343, 1349, 1354, 1362.  10275 gsnok apnd: 1339, 1345.  10345 gsnseg apnd: 1329, 1338, 1342, 1346, 1388. 10301 gsnx2 apnd: 1327, 1351, 1354, 1380.  10346 gsofflen apnd: 1334, 1370, 1381, 1390.  7250 gssfer apnd: 358, 370.  10323 gstabad apnd: 1374, 1472.  10344 gstally apnd: 1367, 1369, 1376, 1378, 1387. 7002 hcdbr apnd: 48, 164, 235, 244,  apnd_equ: 11. 12304 hexwd bos_tv: 89. 7051 initbf apnd: 149, 206.  12300 initint bos_tv: 85. 10407 initslt apnd: 257, 1446.  12271 init_io bos_tv: 78. 2021 inputsw bos_common: 60. 100000 int bos_page_info: 6.  12302 intno bos_tv: 87. 1572 intrpts bos_common: 25. 12303 intrpts1 bos_tv: 88. 7615 in_core apnd: 807, 1046, 1052, 1079.  2011 iom_mbbase bos_common: 52. 2010 iom_mxbase bos_common: 51. 10451 isler apnd: 1480, 1485.  10435 islx2 apnd: 1447, 1474, 1487. 12237 itaper bos_tv: 52. 12240 itapew bos_tv: 53. 12206 ldcom bos_tv: 27. 12001 line bos_tv: 13, 14.  12257 ljust bos_tv: 68. 12220 lookup_devmodel apnd: 895, bos_tv: 37. 1620 lowport_cfg bos_common: 34. 1530 low_order_port bos_common: 20. 2716 macroargs bos_common: 78. 2600 macrobuf bos_common: 76, 77, 85. 2700 macroline bos_common: 77, 78.  2022 macroloc bos_common: 61. 12205 makefil bos_tv: 26. 12221 makesdw bos_tv: 38. 10113 mapg apnd: 1125, 1140, 1159, 1179.  1550 mcm bos_common: 23. 1532 mctime bos_common: 21. 7 mem bosequ: 15. 1574 modereg bos_common: 27. 1 moved_bit bos_page_info: 25.  12216 mulbos apnd: 567, 1721,  bos_tv: 35. 1 name_seg.ht slt: 35. 0 name_seg.next_loc slt: 33. 201 name_seg_size slt: 31. 7714 ndisks apnd: 184, 858, 912. 12202 nextline bos_tv: 23. 12203 nlraw bos_tv: 24. 7177 nocmp apnd: 247, 250, 251, 293.  7157 nocmpsdw apnd: 253, 297.  7545 noosr apnd: 711, 740.  10606 nopdid apnd: 1711, 1718, 1747. 10437 noslt apnd: 1450, 1451, 1458, 1463, 1478. 10443 nosltnt apnd: 1467, 1468, 1482. 7171 nosst apnd: 226, 229, 287. 7141 nosstsdw apnd: 231, 291.  7374 notos apnd: 539, 544.  7402 not_pd apnd: 549, 555.  4 no_post bos_page_info: 8.  12252 octwd bos_tv: 63. 500 ouhist bos_common: 14. 12000 pagectl bos_tv: 12, 13.  7013 pagesw apnd: 66, 519,  apnd_equ: 17. 7353 page_fault apnd: 497, 518.  12 page_power bos_page_info: 4.  3 PART_cd.drive config_cards: 11.  1 PART_cd.name config_cards: 9.  2 PART_cd.sub config_cards: 10.  0 path.acls slt: 56. 1 path.name slt: 55. 0 path.size slt: 54. 10474 pdcaddr apnd: 1573. 10472 pdcarea apnd: 1570. 10471 pdcdid apnd: 1569. 10476 pdcmep apnd: 1576. 10475 pdcnewaddr apnd: 1574. 10473 pdcnewarea apnd: 1571. 10600 pderr apnd: 1723, 1737, 1744. 10612 pdfrec apnd: 1679, 1713, 1720, 1727, 1752. 10500 pdgtdevadd apnd: 1619. 10501 pdgtmep apnd: 1621. 10543 pdinit apnd: 274, 1707.  10576 pdinx2 apnd: 1708, 1731, 1741, 1748.  3 pdm bos_page_info: 10.  7227 pdmaddr apnd: 329, 1673, 1734, 1739.  10610 pdmdid apnd: 1686, 1717, 1722, 1726, 1750. 10570 pdnosst apnd: 1730, 1734.  4 pdsize bos_page_info: 29.  7044 pd_check apnd: 124, apnd_equ: 37. 10470 pd_check_ apnd: 125, 1509.  5 pd_flush_entry bos_page_info: 19.  12 pd_free_required bos_page_info: 30.  7046 pd_getptr apnd: 130, 758,  apnd_equ: 39. 10477 pd_getptr_ apnd: 131, 1586.  36 pd_max_rws bos_page_info: 32.  7045 pd_modify apnd: 127, 760,  apnd_equ: 38. 10502 pd_modify_ apnd: 128, 1630.  36 pd_write_limit bos_page_info: 31.  3 pgm bosequ: 10. 12215 phyadd bos_tv: 34. 12213 phybos bos_tv: 32. 7602 pindevt apnd: 563, 568, 582, 589, 793, 1088, 1091. 7442 pinnadd apnd: 546, 557, 613, 629.  7433 pinrok apnd: 585, 592, 595, 642.  7603 pintemp apnd: 573, 581, 794. 7014 pmlsw apnd: 69, 1747,  apnd_equ: 18. 2 post_purge_bit bos_page_info: 24.  4 post_purge_entry bos_page_info: 18.  3 pre_page_entry bos_page_info: 17.  17 pre_seek_limit bos_page_info: 33.  20 pri bos_page_info: 7.  3 PRPH_cd.chn config_cards: 15.  2 PRPH_cd.iom config_cards: 14.  4 PRPH_cd.model config_cards: 16.  1 PRPH_cd.sub config_cards: 13.  1500 prs bos_common: 18. 1600 ptrlen bos_common: 29. 2 ptw bos_page_info: 12.  740000 ptw.add_type bos_ptw: 5. 4 ptw.df apnd: 496, 624, 752, bos_ptw: 16. 3 ptw.df_no bos_ptw: 17. 10000 ptw.er bos_ptw: 7. 20000 ptw.first bos_ptw: 6. 400000 ptw.nulled apnd: 556, bos_ptw: 4. 200 ptw.nypd bos_ptw: 11. 10 ptw.os apnd: 754, bos_ptw: 15. 100 ptw.phm apnd: 745, bos_ptw: 12. 400 ptw.phm1 bos_ptw: 10. 1000 ptw.phu bos_ptw: 9. 40 ptw.phu1 bos_ptw: 13. 10000 ptw.pre_paged bos_ptw: 8. 5 ptw.usage_bits_shift bos_ptw: 18. 20 ptw.wired bos_ptw: 14. 12251 punch bos_tv: 62. 7035 put apnd: 103, apnd_equ: 30. 10112 put.qtemp apnd: 1164, 1170, 1174. 10111 put.x2 apnd: 1165, 1171.  10100 put_ apnd: 104, 1158.  7047 pvt_to_devt apnd: 133, apnd_equ: 40. 7635 pvt_to_devt1 apnd: 834, 850.  7634 pvt_to_devt_ apnd: 134, 847.  2020 quietsw bos_common: 59. 12267 rdclock bos_tv: 76. 12211 rdev apnd: 588, 1685,  bos_tv: 30. 2016 rdrchanno bos_common: 57. 12234 rdsec apnd: 1033, bos_tv: 49. 12246 readcd bos_tv: 59. 7406 readrec apnd: 551, 563.  12247 readtty bos_tv: 60. 2030 readysw bos_common: 67. 7006 read_args apnd: 54, 583, 586, 640, 1027, 1029, 1084, 1680, 1682, apnd_equ: 13. 1 read_entry bos_page_info: 15.  12232 rec_per_dev_list bos_tv: 47. 1520 regs bos_common: 19. 7456 ret_zero_buf apnd: 625, 634.  12260 rjust bos_tv: 69. 2 ROOT_cd.drive config_cards: 7.  1 ROOT_cd.sub config_cards: 6.  4000 runcom_bit bosequ: 19. 12200 scan bos_tv: 21. 1540 scu bos_common: 22. 14 sdw.add_shift apnd: 823, bos_sdw: 4. 377770 sdw.bound apnd: 455, bos_sdw: 12. 40000 sdw.cache bos_sdw: 20. 4 sdw.df apnd: 357, 450,  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 apnd: 468, 707,  bos_sdw: 18. 1 sdw.write bos_sdw: 15. 12204 search bos_tv: 25. 12230 sect_per_cyl_list bos_tv: 45. 12231 sect_per_dev_list bos_tv: 46. 7000 seg6length bos_common: 90. 0 segnam.count slt: 41. 1 segnam.hp slt: 44. 2 segnam.name apnd: 1410, 1413,  slt: 49. 1 segnam.names slt: 42. 400000 segnam.ref slt: 45. 7777 segnam.segno_mask slt: 47. 0 segnam.segno_shift slt: 46. 10 seg_aste.usage aste: 147. 14 seg_aste_size aste: 144. 2004 setuparea bos_common: 49. 2025 skipsw bos_common: 64. 10406 slknms apnd: 1418, 1426, 1439. 10405 slknp apnd: 1411, 1420, 1425, 1438.  10373 slknxn apnd: 1424. 10242 slksegno apnd: 1277, 1285, 1293, 1313.  10402 slnerr apnd: 1306, 1408, 1416, 1434.  10200 slscad apnd: 1264, 1268, 1273. 10232 slscmp apnd: 1282, 1301.  10240 slscx2 apnd: 1301, 1309.  10224 slsfnd apnd: 1270, 1293, 1307. 10243 slsname apnd: 1269, 1274, 1305, 1314.  10230 slsnfd apnd: 1279, 1298.  10215 slsnxt apnd: 1283, 1285.  10225 slsx2 apnd: 1260, 1294, 1298. 5 slt.first_init_seg apnd: 1288, 1340,  slt: 21. 3 slt.first_sup_seg apnd: 1276, 1336,  slt: 19. 7 slt.free_core_size slt: 23. 2 slt.free_core_start slt: 18. 6 slt.last_init_seg apnd: 1278, 1341,  slt: 22. 4 slt.last_sup_seg apnd: 1286, 1337,  slt: 20. 0 slt.name_seg_ptr apnd: 1460, 1465,  slt: 17. 10 slt.seg apnd: 1405, 1457, 1493, 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 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 apnd: 1405, 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 apnd: 1404, 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. 10460 slthd apnd: 1276, 1278, 1286, 1288, 1336, 1337, 1340, 1341, 1457, 1460, 1465, 1493.  10207 sltlk1 apnd: 1277, 1289, 1291. 10370 sltlk2 apnd: 1420, 1427.  10456 sltntsdw apnd: 1304, 1360, 1415, 1469, 1492. 10454 sltsdw apnd: 268, 1258, 1324, 1407, 1452, 1456, 1485, 1486, 1491. 7042 sltsearch apnd: 118, apnd_equ: 35. 10170 sltsearch_ apnd: 119, 1257.  7011 sltseg apnd: 60, 167, 1448, apnd_equ: 15. 7 sltsegno apnd: 27, 61.  100010 slt_size slt: 14. 7104 srtdisk1 apnd: 186, 202.  7106 srtdisk2 apnd: 189, 199.  7120 srtdisk3 apnd: 189, 201.  3 sst bos_page_info: 9, 10, 11, 13. 220 sst.abs_wired_count sst: 135. 245 sst.acost sst: 150. 400000 sst.activate_activated sst: 227. 537 sst.activations sst: 206. 52 sst.ainitp sst: 53. 52 sst.ainitp1 sst: 54. 250 sst.alaps sst: 153. 234 sst.aneedsize sst: 144. 242 sst.asearches sst: 147. 247 sst.askipdius sst: 152. 241 sst.askipsehs sst: 146. 244 sst.askipsinit sst: 149. 230 sst.askipsize sst: 143. 243 sst.askipslevel sst: 148. 246 sst.askipslock sst: 151. 30 sst.astap apnd: 317, sst: 35. 260 sst.asteps sst: 160. 21 sst.astl sst: 26. 22 sst.astl_event sst: 27. 400000 sst.astl_notify_requested sst: 30.  23 sst.astl_notify_requested_word sst: 29. 34 sst.astsize apnd: 319, sst: 38. 74 sst.ast_ht_n_buckets sst: 82. 72 sst.ast_ht_ptr sst: 81. 75 sst.ast_ht_uid_mask sst: 83. 264 sst.ast_locked_at_time sst: 161. 266 sst.ast_locked_total_time sst: 162.  272 sst.ast_locking_count sst: 164. 270 sst.ast_lock_wait_time sst: 163. 400000 sst.ast_track sst: 292. 774 sst.ast_track_word sst: 291. 50 sst.atempp sst: 47. 50 sst.atempp1 sst: 48. 133 sst.aused sst: 113. 44 sst.ausedp sst: 44. 557 sst.backup_activations sst: 224. 533 sst.bad_sgms sst: 202. 674 sst.buckets sst: 289. 673 sst.bucket_overflow sst: 288. 32 sst.bulk_pvtx sst: 36. 122 sst.ceiling sst: 104. 77 sst.checksum_filemap sst: 85. 504 sst.claim_notmod sst: 177. 505 sst.claim_passed_used sst: 178. 536 sst.claim_runs sst: 205. 502 sst.claim_skip_cme sst: 175. 503 sst.claim_skip_free sst: 176. 506 sst.claim_skip_ptw sst: 179. 510 sst.claim_steps sst: 181. 507 sst.claim_writes sst: 180. 274 sst.cleanups_with_any_rws sst: 166.  273 sst.cleanup_count sst: 165. 276 sst.cleanup_real_time sst: 168. 275 sst.cleanup_rws_count sst: 167. 71 sst.cl_skips_pinned sst: 80. 35 sst.cmesize sst: 39. 54 sst.cmp apnd: 323, 325,  sst: 57. 672 sst.count_pdmes sst: 287. 256 sst.cpu_bf_time sst: 159. 164 sst.cpu_sf_time sst: 123. 123 sst.ctwait sst: 105. 104 sst.cycle_pv_allocation sst: 90. 134 sst.damaged_ct sst: 114. 527 sst.dblw_resurrections sst: 199. 135 sst.deact_count sst: 115. 137 sst.demand_deactivations sst: 117.  136 sst.demand_deact_attempts sst: 116.  775 sst.dirlock_writebehind sst: 294. 540 sst.dir_activations sst: 207. 114 sst.dir_page_faults sst: 98. 400000 sst.dm_enabled sst: 51. 51 sst.dm_enabled_word sst: 50. 62 sst.double_write sst: 67. 543 sst.evict_phmbit sst: 213. 543 sst.evict_ptp sst: 212. 543 sst.evict_recover_data sst: 210. 70 sst.fc_skips_pinned sst: 79. 224 sst.first_core_block sst: 139. 545 sst.force_pwrites sst: 216. 544 sst.force_swrites sst: 215. 547 sst.force_updatevs sst: 218. 546 sst.fw_none sst: 217. 226 sst.fw_retries sst: 141. 535 sst.good_sgms sst: 204. 541 sst.hedge_updatevs sst: 208. 542 sst.hedge_writes sst: 209. 125 sst.laps sst: 107. 225 sst.last_core_block sst: 140. 670 sst.last_update sst: 286. 44 sst.level sst: 42. 113 sst.level_1_page_faults sst: 97. 110 sst.lock_waits sst: 94. 161 sst.loop_locks sst: 121. 162 sst.loop_lock_time sst: 122. 556 sst.makeknown_activations sst: 223.  560 sst.metering_flags sst: 225. 76 sst.meter_ast_locking sst: 84. 624 sst.mod_during_write sst: 256. 121 sst.needc sst: 103. 641 sst.new_pages sst: 276. 400000 sst.nolock sst: 75. 66 sst.nolock_word sst: 74. 44 sst.no_aste sst: 45. 16 sst.npfs_misses sst: 23. 612 sst.nrecs_pdmap sst: 246. 24 sst.nused sst: 32. 105 sst.n_trailers sst: 91. 523 sst.oopv sst: 195. 100 sst.page_read_errors sst: 86. 101 sst.page_write_errors sst: 87. 525 sst.pcrsst_statptr sst: 197. 117 sst.pc_io_waits sst: 101. 2 sst.pc_trace sst: 273. 10 sst.pc_trace_pf sst: 271. 524 sst.pdflush_replaces sst: 196. 602 sst.pdhtp sst: 237. 112 sst.pdir_page_faults sst: 96. 600 sst.pdmap apnd: 328, sst: 236. 634 sst.pdmap_astep sst: 266. 606 sst.pdme_no sst: 240. 605 sst.pdsize sst: 239. 607 sst.pdusedp sst: 242. 617 sst.pd_ceiling sst: 251. 515 sst.pd_desperations sst: 186. 520 sst.pd_desperations_not_mod sst: 192.  514 sst.pd_desperation_steps sst: 185.  610 sst.pd_first sst: 244. 613 sst.pd_free sst: 247. 633 sst.pd_hash_mask sst: 264. 632 sst.pd_htsize sst: 262. 604 sst.pd_id sst: 238. 611 sst.pd_map_addr sst: 245. 623 sst.pd_needed sst: 255. 627 sst.pd_no_free sst: 259. 666 sst.pd_no_free_first sst: 284. 664 sst.pd_no_free_gtpd sst: 282. 665 sst.pd_page_faults sst: 283. 630 sst.pd_read_truncates sst: 260. 526 sst.pd_resurrections sst: 198. 626 sst.pd_rws_active sst: 258. 621 sst.pd_skips_incore sst: 253. 622 sst.pd_skips_rws sst: 254. 620 sst.pd_steps sst: 252. 650 sst.pd_time_counts sst: 280. 654 sst.pd_time_values sst: 281. 512 sst.pd_updates sst: 183. 614 sst.pd_using sst: 248. 400000 sst.pd_writeahead sst: 190. 517 sst.pd_writeahead_word sst: 189. 616 sst.pd_writes sst: 250. 625 sst.pd_write_aborts sst: 257. 631 sst.pd_write_truncates sst: 261. 615 sst.pd_wtct sst: 249. 637 sst.pd_zero_pages sst: 268. 554 sst.pf_pd_loop_meterings sst: 221.  550 sst.pf_pd_loop_time sst: 219. 555 sst.pf_unlock_ptl_meterings sst: 222.  552 sst.pf_unlock_ptl_time sst: 220. 14 sst.post_in_core sst: 21. 171 sst.post_list_size sst: 127. 173 sst.post_purge_calls sst: 129. 12 sst.post_purge_time sst: 20. 172 sst.post_purgings sst: 128. 400 sst.pp_meters sst: 170. 174 sst.pre_page_calls sst: 130. 175 sst.pre_page_list_size sst: 131. 176 sst.pre_page_misses sst: 132. 170 sst.pre_page_size sst: 126. 10 sst.pre_page_time sst: 19. 177 sst.pre_pagings sst: 133. 513 sst.pre_seeks_failed sst: 184. 20 sst.ptl sst: 25. 33 sst.ptl_wait_ct sst: 37. 40 sst.pts sst: 41. 25 sst.ptwbase apnd: 321, sst: 33. 400000 sst.ptw_first sst: 72. 65 sst.ptw_first_word sst: 71. 227 sst.pvhtp sst: 142. 140 sst.reads sst: 118. 223 sst.recopies sst: 138. 61 sst.removep sst: 65. 521 sst.resurrections sst: 193. 115 sst.ring_0_page_faults sst: 99. 36 sst.root_astep sst: 40. 64 sst.root_pvtx sst: 69. 116 sst.rqover sst: 100. 511 sst.rws_reads_os sst: 182. 102 sst.rws_read_errors sst: 88. 646 sst.rws_time_done sst: 279. 644 sst.rws_time_start sst: 278. 642 sst.rws_time_temp sst: 277. 103 sst.rws_write_errors sst: 89. 17 sst.salv sst: 24. 1 sst.sc_trace sst: 274. 561 sst.seg_fault_calls sst: 229. 253 sst.setfaults_acc sst: 156. 252 sst.setfaults_all sst: 155. 532 sst.sgm_pf sst: 201. 534 sst.sgm_sgft sst: 203. 530 sst.sgm_time sst: 200. 160 sst.short_pf_count sst: 120. 130 sst.skipm sst: 110. 131 sst.skipos sst: 111. 132 sst.skipspd sst: 112. 516 sst.skips_nypd sst: 187. 127 sst.skipu sst: 109. 126 sst.skipw sst: 108. 0 sst.space sst: 18. 60 sst.startp sst: 63. 120 sst.steps sst: 102. 240 sst.stepsa sst: 145. 566 sst.stk_pages_truncated sst: 234. 567 sst.stk_pages_truncated_in_core sst: 235. 565 sst.stk_truncate_shouldnt_did sst: 233.  564 sst.stk_truncate_shouldnt_didnt sst: 232. 563 sst.stk_truncate_should_did sst: 231.  562 sst.stk_truncate_should_didnt sst: 230.  53 sst.strsize sst: 56. 106 sst.synch_activations sst: 92. 107 sst.synch_skips sst: 93. 221 sst.system_type sst: 136. 63 sst.temp_w_event sst: 68. 26 sst.tfreep sst: 34. 15 sst.thrashing sst: 22. 254 sst.total_bf sst: 157. 255 sst.total_bf_pf sst: 158. 111 sst.total_locks_set sst: 95. 167 sst.total_sf sst: 125. 166 sst.total_sf_pf sst: 124. 640 sst.trace_sw sst: 269. 300 sst.tree_count sst: 169. 4 sst.tty_trace sst: 272. 251 sst.updates sst: 154. 667 sst.update_index sst: 285. 56 sst.usedp sst: 59. 522 sst.volmap_seg_page_faults sst: 194.  124 sst.wired sst: 106. 222 sst.wired_copies sst: 137. 200 sst.wire_proc_data sst: 134. 150 sst.writes sst: 119. 501 sst.write_hunts sst: 174. 776 sst.write_limit sst: 295. 57 sst.wtct sst: 61. 500 sst.wusedp sst: 172. 67 sst.x_fsdctp sst: 77. 636 sst.zero_pages sst: 267. 7016 sstsdw apnd: 72, 162, 225, 246, 267, 289, 290, 528, 1664, 1669, 1729, apnd_equ: 19. 1000 sst_size sst: 15. 2000 storlen bos_common: 36. 12262 stripa bos_tv: 71. 12263 stripg bos_tv: 72. 2015 tapechanno bos_common: 56. 7753 test_port_mem apnd: 981, 987, 995. 1 tmp apnd: 52, 161, 163, 165, 715, 733, 1064, 1127, 1142, 1162,  bosequ: 8. 2017 ttychanno bos_common: 58. 12245 ttyinit bos_tv: 58. 2026 ttypmtsw bos_common: 65. 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. 7571 unaerr apnd: 704, 727, 738, 743, 749, 766.  7033 unapnd apnd: 97, 1167,  apnd_equ: 28. 7507 unapnd_ apnd: 98, 700.  7573 unapr4 apnd: 713, 735, 770. 7574 unaset4 apnd: 714, 771.  7567 unax2 apnd: 701, 708, 753, 759, 761, 763, 766. 10057 unfbos apnd: 1087, 1101.  10055 unferr apnd: 1093, 1098, 1104. 7040 unfetch apnd: 112, 703, 737, 748,  apnd_equ: 33. 10037 unfetch_ apnd: 113, 1077.  10053 unfx2 apnd: 1077, 1095, 1098, 1105.  2013 unitgroup bos_common: 54. 2002 useable bos_common: 46. 2001 used bos_common: 45. 4 used_bit_off bos_page_info: 26.  2005 utilarea bos_common: 50. 12000 utilorg bosequ: 22, bos_tv: 12, 19.  12301 wantflt bos_tv: 86. 12212 wdev apnd: 1090, bos_tv: 31. 10 working_set bos_page_info: 23.  2 write_entry bos_page_info: 16.  12235 wtsec apnd: 1102, bos_tv: 50. 12277 xio_wait bos_tv: 84. 4 xs1 bosequ: 11. 5 xs2 bosequ: 12. 10400 xslx0 apnd: 1402, 1430, 1435. 10377 xslx2 apnd: 1401, 1421, 1429, 1434.  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