ASSEMBLY LISTING OF SEGMENT >udd>sm>ds>w>ml>dctl.alm ASSEMBLED ON: 04/18/00 1100.3 mdt Tue OPTIONS USED: list symbols ASSEMBLED BY: ALM Version 8.14 March 1989 ASSEMBLER CREATED: 06/09/89 1102.3 mdt Fri 1 " *********************************************************** 2 " * * 3 " * Copyright, (C) Honeywell Bull Inc., 1987 * 4 " * * 5 " * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6 " * * 7 " * Copyright (c) 1972 by Massachusetts Institute of * 8 " * Technology and Honeywell Information Systems, Inc. * 9 " * * 10 " *********************************************************** 11 12 " HISTORY COMMENTS: 13 " 1) change(85-09-09,Fawcett), approve(85-09-09,MCR6979), 14 " audit(86-01-27,CLJones), install(86-03-21,MR12.0-1033): 15 " Add support for dev 0 FIPS. 16 " 2) change(86-05-29,Fawcett), approve(86-05-29,MCR7383), 17 " audit(86-05-30,Coppola), install(86-07-17,MR12.0-1097): 18 " Add code for MSU3380 and MSU3390 support. This code supports the 19 " division of the devices into subvolumes. Also read 512 word sectors are 20 " supported by only doing 512_word seek command (30 oct). Multics will not 21 " support 64_seeks for these devices. 22 " 3) change(86-09-10,Farley), approve(86-10-24,MCR7544), 23 " audit(86-10-27,Fawcett), install(86-10-28,MR12.0-1200): 24 " Added change to properly shift the TEST I/O command in the A-reg before 25 " storing in chantab.rssdcw. 26 " END HISTORY COMMENTS 27 000000 28 name dctl 29 30 " dctl - fast path for disk control, coded in ALM for obvious reasons 31 " 32 " Written sometime by someone (possibly Mullen) 33 " Modified by Fawcett 1979 for shared stack frames 34 " Modified back by Hornig December 1980 35 " Modified March 1981 by J. Bongiovanni to add entry queue_length_given_pvtx 36 " Modified July, 1981, WOS, to implement Mike Jordan's fix to the 501 sector number 37 " overflow problem (too many sectors to represent in 20 bits). 38 " Modified February 1982 by C. Hornig for MR10 io_manager. 39 " Modified March 1982 by J. Bongiovanni to remove queue_length_given_pvtx 40 " (moved to disk_control) and for new PVTE 41 " Modified March 1982 by C. Hornig to unload disks. 42 " Modified July 1982 by J. Bongiovanni for read_sectors, write_sectors 43 " Modified April 1984 by T. Oke for system wide free_q. 44 " Modified April 1984 by T. Oke for dynamic channel table and the use of 45 " dskdcl_chans_per_subsys to define channel idx/subsystem relation. 46 " Modified May 1984 by T. Oke to add pvtx in queue entry for azm analysis 47 " of queue. 48 " Modified May 1984 by T. Oke to install adaptive optimization, modifying 49 " the quentry structure. 50 " Modified Nov 26,1984 by R. A. Fawcett to suppoer dev 0 (fips). 51 " Modified February 1985 by Keith Loepere to re-install bootload_read/write 52 " which was broken by one of the above recently named. 53 " Modified April 1985 by R. A. Fawcett to support real 512 work IO for 3380's. 54 " Modified July 1985 by R. A. Fawcett to support sub-volumes on 3380/3390's 55 " ============================================================================ 56 57 tempd int_arg_list 58 tempd meter_start_time,status_time,entry_time,test_time 59 tempd ptp,mask Used for pmut$wire_and_mask 60 tempd arglist(3) 61 tempd listp 62 tempd ima(8) 63 temp coreadd 64 temp sect_off,record_offset 65 temp devadd 66 temp errcd 67 temp real_device 68 temp sect_sw Uses upper bit (sign) to indicate sect 69 temp bootload_sw Ditto for bootload 70 temp sx Subsystem index in DL 71 temp pvtx 72 temp dev 73 temp sector 74 temp cylinder 75 temp io_type Io type stored in DL 76 temp masked Non-zero if call side running masked 77 temp intrpt Caller requested interrupt on complete 78 temp temp1 79 temp switches 80 temp best_seek Also is best_pos_comb 81 temp comb_qp DU has forward comb qp, DL has reverse 82 temp best_neg_comb 83 temp n_sectors,n_sectors_temp 84 " 001234 85 entry disk_inter 000057 86 entry disk_read 000053 87 entry disk_write 000010 88 entry bootload_read 000014 89 entry bootload_write 000004 90 entry read_sectors 000000 91 entry write_sectors 92 93 " REGISTER USAGE: 94 " bb -> disk_seg base, disk_data 95 " bp -> disktab, per subsystem info 96 " ap -> chantabe 97 " lb -> pvte, DCW list, devtabe (when opt_info access needed) 98 99 " x0 = pdi 100 " x1 temp 101 " x2-> devtab 102 " x3-> quentry 103 " x4 temp 104 " x5 temp 105 " x6 call savex (top level calls) 106 " x7 calls (lower level) 107 108 109 " The ALM assembler must border on the least friendly assembler known 110 " to man. So some techniques are in force through this program to aid 111 " in the detection of error conditions due to movement of structure 112 " contents. 113 114 " Specifically there is quite a bit of use of the construction: 115 " 116 " equ quentry.coreadd_shift,0 117 " 118 " This construction will cause an error if the value of the shift is not 119 " zero, AS WE ARE PRESUMING IT TO BE. Thus we can produce fast code, with 120 " extra supurflous instructions removed, but still detect if they would be 121 " necessary if things move. Hopefully these little checks will do someone 122 " good in the future. 123 000000 124 equ MUST_BE_ZERO,0 Used for 0 check 125 " 126 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 127 " 128 " CALL SIDE OF DISK DIM -- various entries 129 " 130 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 131 000000 132 write_sectors: 000000 aa 000160 6270 00 133 push 000001 aa 7 00040 2721 20 000002 aa 000003 2240 03 134 ldx4 VTOC_WRITE,du 000003 0a 000020 7100 00 135 tra go_sector 136 000004 137 read_sectors: 000004 aa 000160 6270 00 138 push 000005 aa 7 00040 2721 20 000006 aa 000002 2240 03 139 ldx4 VTOC_READ,du 000007 0a 000020 7100 00 140 tra go_sector 141 000010 142 bootload_read: 000010 aa 000160 6270 00 143 push 000011 aa 7 00040 2721 20 000012 aa 000005 2240 03 144 ldx4 BOOTLOAD_READ,du 000013 0a 000020 7100 00 145 tra go_sector 146 000014 147 bootload_write: 000014 aa 000160 6270 00 148 push 000015 aa 7 00040 2721 20 000016 aa 000006 2240 03 149 ldx4 BOOTLOAD_WRITE,du 000017 0a 000020 7100 00 150 tra go_sector 151 000020 152 go_sector: 000020 aa 6 00133 4441 00 153 sxl4 io_type 000021 aa 0 00012 2351 20 154 lda ap|10,* pick up number of sectors 000022 aa 6 00143 7551 00 155 sta n_sectors 000023 aa 0 00010 2361 20 156 ldq ap|8,* pick up sect_off arg 000024 aa 6 00117 7561 00 157 stq sect_off 000025 aa 6 00135 4501 00 158 stz intrpt clear interrupt desired 000026 aa 014000 2360 03 159 ldq bootload_mapping,du " IO type still in x4 000027 aa 000000 7360 14 160 qls 0,x4 000030 0a 000033 6050 00 161 tpl go_vtoc 000031 aa 6 00134 4501 00 162 stz masked 000032 0a 000073 7100 00 163 tra go_common 164 165 " wire stack frame for vtoc_man 166 000033 167 go_vtoc: 000033 aa 6 00064 3715 00 168 epplb mask 000034 aa 6 00070 6515 00 169 sprilb arglist+2 000035 aa 6 00062 3715 00 170 epplb ptp 000036 aa 6 00072 6515 00 171 sprilb arglist+4 000037 0a 001164 2370 00 172 ldaq two_args_nd 000040 aa 6 00066 7571 00 173 staq arglist 000041 aa 6 00000 2541 00 174 call pmut$wire_and_mask(arglist) 000042 aa 6 00066 3501 00 000043 4a 4 00010 3521 20 000044 aa 6 00040 7531 00 000045 aa 7 00036 6701 20 000046 aa 6 00000 1731 00 000047 aa 6 00040 0731 00 000050 aa 000001 2350 07 175 lda 1,dl 000051 aa 6 00134 7551 00 176 sta masked in masked environment 000052 0a 000073 7100 00 177 tra go_common 178 179 000053 180 disk_write: 000053 aa 000160 6270 00 181 push 000054 aa 7 00040 2721 20 000055 aa 000001 2240 03 182 ldx4 PAGE_WRITE,du 000056 0a 000062 7100 00 183 tra go_page 184 000057 185 disk_read: 000057 aa 000160 6270 00 186 push 000060 aa 7 00040 2721 20 000061 aa 000000 2240 03 187 ldx4 PAGE_READ,du 188 000062 189 go_page: 000062 aa 6 00133 4441 00 190 sxl4 io_type 000063 aa 6 00143 4501 00 191 stz n_sectors 000064 aa 6 00117 4501 00 192 stz sect_off sect_off = 0 000065 aa 6 00134 4501 00 193 stz masked not in masked environment 000066 aa 6 00135 4501 00 194 stz intrpt 000067 aa 0 00010 2351 20 195 lda ap|8,* pick up priority arg 000070 0a 000072 6000 00 196 tze no_intrpt intrpt="0"b 000071 aa 400000 2350 03 197 lda quentry.intrpt,du intrpt=quentry.intrpt 000072 198 no_intrpt: 000072 aa 6 00135 7551 00 199 sta intrpt 200 000073 201 go_common: " Common command interface 000073 aa 0 00004 2351 20 202 lda ap|4,* 000074 aa 000014 7350 00 203 als 12 MASK FOR COREADD 000075 aa 000014 7710 00 204 arl 12 000076 aa 6 00116 7551 00 205 sta coreadd 000077 aa 0 00006 2351 20 206 lda ap|6,* 000100 aa 000022 7710 00 207 arl 18 000101 aa 6 00121 7551 00 208 sta devadd 209 000102 4a 4 00020 6331 20 210 rccl sys_info$clock_,* get entry time for stats 000103 aa 6 00056 7571 00 211 staq entry_time GET PVTE for device 212 000104 4a 4 00022 3715 20 213 epplb pvt$array 000105 aa 0 00002 2361 20 214 ldq ap|2,* get pvtx 000106 aa 6 00127 7561 00 215 stq pvtx save for queue entry 000107 aa 000034 4020 07 216 mpy pvte_size,dl 000110 aa 5 77744 3715 06 217 epplb lb|-pvte_size,ql HENCEFORTH lb -> PVTE 000111 aa 5 00010 2351 00 218 lda lb|pvte.dim_info 000112 aa 000030 7710 00 219 arl pvtdi.sx_shift 000113 aa 6 00126 7551 00 220 sta sx 000114 0a 000304 7070 00 221 tsx7 setup 222 000115 aa 000016 6240 00 223 eax4 disktab.call_lock_meters specify lock reason 000116 0a 000310 7070 00 224 tsx7 lock 225 000117 aa 5 00004 2361 00 226 ldq lb|pvte.logical_area_number_word 000120 aa 000022 7720 00 227 qrl pvte.logical_area_number_shift 228 """"" anq pvte.logical_area_number_mask,dl This mask bigger than next 000121 aa 000077 3760 07 229 anq quentry.dev_mask,dl 000122 aa 6 00130 7561 00 230 stq dev device in sub-sys 231 000123 0a 001443 2220 06 232 ldx2 devtab_subs,ql subscript devtab 000124 aa 2 00000 2361 12 233 ldq bp|devtab.pdi_word,x2 devtab.pdi 000000 234 equ devtab.pdi_shift,0 PRESUMED 0 235 """"" qrs devtab.pdi_shift 000125 aa 000077 3760 07 236 anq devtab.pdi_mask,dl 000126 aa 000000 6200 06 237 eax0 0,ql HENCEFORTH X0 = pdi 000127 0a 001443 2220 10 238 ldx2 devtab_subs,x0 subscript devtab 000130 aa 2 00000 6221 12 239 eax2 bp|0,x2 HENCEFORTH X2->devtab 240 241 " The following code is out, since we will try the abandoned device 242 " will get an error return, and it will be handled by disk_control 243 " error processing. Thus disk_control eventually finds out. 244 245 """"" lda bb|devtab.abandoned_word,x2 246 """"" cana devtab.abandoned,du 247 """"" tnz ABANDONED 248 249 " Allocate a quentry for this operation 250 000131 aa 2 00026 0541 00 251 aos bp|disktab.alloc_wait_meters+disk_lock_meters.count 000132 0a 000367 7070 00 252 tsx7 get_free_q HENCEFORTH X3->quentry 000133 0a 000156 0000 00 253 arg got_fq get_free_q success 254 "Failed to find free quentry. Call RUN. 000134 aa 000026 6240 00 255 eax4 disktab.alloc_wait_meters meter this time as alloc wait 000135 0a 000327 7060 00 256 tsx6 lock_meter_start 000136 257 retry_get_fq: 000136 0a 000367 7070 00 258 tsx7 get_free_q 000137 0a 000154 0000 00 259 arg retry_got_fq 000140 aa 6 00126 3501 00 260 eppap sx 000141 aa 6 00070 2501 00 261 spriap arglist+2 000142 0a 001162 2370 00 262 ldaq one_arg_nd 000143 aa 6 00066 7571 00 263 staq arglist 000144 aa 6 00000 2541 00 264 call disk_control$call_run(arglist) 000145 aa 6 00066 3501 00 000146 4a 4 00012 3521 20 000147 aa 6 00040 7531 00 000150 aa 7 00036 6701 20 000151 aa 6 00000 1731 00 000152 aa 6 00040 0731 00 000153 0a 000136 7100 00 265 tra retry_get_fq 266 267 000154 268 retry_got_fq: 000154 aa 000026 6240 00 269 eax4 disktab.alloc_wait_meters time metered as alloc wait 000155 0a 000333 7060 00 270 tsx6 lock_meter_stop Compute cylinder and sector -- remember them in stack 271 000156 aa 6 00121 2361 00 272 got_fq: ldq devadd 000157 aa 5 00002 2351 00 273 lda lb|pvte.is_sv_word 000160 aa 040000 3150 03 274 cana pvte.is_sv,du 000161 0a 000171 6000 00 275 tze not_subvol " pvte does not define sv " 000162 aa 5 00013 5061 00 276 div lb|pvte.records_per_cyl 000163 aa 6 00120 7551 00 277 sta record_offset 000164 aa 6 00121 2361 00 278 ldq devadd 000165 aa 6 00120 1361 00 279 sblq record_offset 000166 aa 5 00012 4021 00 280 mpy lb|pvte.num_of_svs 000167 aa 5 00014 0361 00 281 adlq lb|pvte.record_factor 000170 aa 6 00120 0361 00 282 adlq record_offset 000171 283 not_subvol: 000171 aa 5 00004 2351 00 284 lda lb|pvte.device_type_word 000172 aa 000033 7710 00 285 arl pvte.device_type_shift 000173 aa 000777 3750 07 286 ana pvte.device_type_mask,dl 000174 aa 000000 6210 05 287 eax1 0,al 000175 0a 001421 4020 11 288 mpy sec_per_rec,x1 " mpy by 16 for 64 word io and 2 for 512 word io 000176 aa 6 00131 7561 00 289 stq sector 290 000177 aa 5 00010 2351 00 291 lda lb|pvte.dim_info 000200 aa 000014 7310 00 292 ars pvtdi.usable_sect_per_cyl_shift 000201 aa 007777 3750 07 293 ana pvtdi.usable_sect_per_cyl_mask,dl 000202 aa 6 00136 7551 00 294 sta temp1 000203 aa 6 00136 5061 00 295 div temp1 into sector in Qreg 000204 aa 6 00132 7561 00 296 stq cylinder 297 000205 aa 5 00010 2361 00 298 ldq lb|pvte.dim_info 000000 299 equ pvtdi.unused_sect_per_cyl_shift,0 PRESUMED = 0 300 """""" qrs pvtdi.unused_sect_per_cyl_shift 000206 aa 007777 3760 07 301 anq pvtdi.unused_sect_per_cyl_mask,dl 000207 aa 6 00132 4021 00 302 mpy cylinder 000210 aa 6 00117 0761 00 303 adq sect_off 000211 aa 6 00131 0561 00 304 asq sector 305 306 " Fill in quentry contents 307 " quentry.intrpt, used, type, coreadd 308 " PRESUMES that type,intrpt,used and coreadd are in the same quentry word. 309 000001 310 equ quentry.type_word,1 All presumed in word 1 000001 311 equ quentry.intrpt_word,1 000001 312 equ quentry.used_word,1 000001 313 equ quentry.coreadd_word,1 000000 314 equ MUST_BE_ZERO,quentry.coreadd_shift 315 000212 aa 6 00133 2351 00 316 lda io_type 000213 aa 000036 7350 00 317 als quentry.type_shift get io_type of operation 000214 aa 6 00135 2751 00 318 ora intrpt Set interrupt flag 000215 aa 200000 2750 03 319 ora quentry.used,du indicate entry is used 000216 aa 6 00116 2751 00 320 ora coreadd presume shift is 0 000217 aa 3 00001 7551 13 321 sta bb|quentry.type_word,x3 322 323 324 " quentry.pvtx, pdi, dev, cylinder 325 " PRESUMES that pvtx,cylinder,dev and pdi are in the same quentry word. 326 000002 327 equ quentry.pvtx_word,2 Presumed in word 2 000002 328 equ quentry.pdi_word,2 000002 329 equ quentry.dev_word,2 000002 330 equ quentry.cylinder_word,2 000000 331 equ MUST_BE_ZERO,quentry.cylinder_shift 332 000220 aa 6 00127 2351 00 333 lda pvtx 000221 aa 000034 7350 00 334 als quentry.pvtx_shift 000222 aa 6 00132 2751 00 335 ora cylinder presume cylinder shift is 0 000223 aa 3 00002 7551 13 336 sta bb|quentry.pvtx_word,x3 000224 aa 000000 6350 10 337 eaa 0,x0 pdi from X0 000225 aa 000004 7350 00 338 als quentry.pdi_shift-18 000226 aa 3 00002 2551 13 339 orsa bb|quentry.pdi_word,x3 000227 aa 6 00130 2351 00 340 lda dev 000230 aa 000020 7350 00 341 als quentry.dev_shift 000231 aa 3 00002 2551 13 342 orsa bb|quentry.dev_word,x3 343 344 345 " quentry.n_sectors, sector 346 " PRESUMES that n_sectors and sector are in the same quentry word. 347 000003 348 equ quentry.n_sectors_word,3 Presume in word 3 000003 349 equ quentry.sector_word,3 000000 350 equ MUST_BE_ZERO,quentry.sector_shift 351 000232 aa 6 00143 2351 00 352 lda n_sectors 000233 aa 000036 7350 00 353 als quentry.n_sectors_shift 000234 aa 6 00131 2751 00 354 ora sector include sector number 000235 aa 3 00003 7551 13 355 sta bb|quentry.sector_word,x3 356 357 " Fill in queued time. 358 000236 aa 6 00056 2371 00 359 ldaq entry_time 000237 aa 3 00004 7571 13 360 staq bb|quentry.time,x3 361 362 " 363 "Provided the disk dim is functioning correctly on the interrupt side 364 "then if there are already requests queued for this device 365 "then there is no chance we can immediately issue a connect for this request. 366 "Therefore we merely queue the request and return. 367 "The same is true if the device is busy already. 368 "On the other hand if the device is neither busy nor has a queue already 369 "then if there is a free channel then we need not even add the quentry 370 "to the queue, but instead issue the connect forthwith. 371 372 " X3 -> quentry, X0 = pdi, X2 -> devtab (pdi) 373 000240 aa 2 00004 2371 00 374 ldaq bp|disktab.dev_busy 000241 aa 2 00006 2771 00 375 oraq bp|disktab.dev_queued 000242 aa 000000 7370 10 376 lls 0,x0 X0 has PDI .. 000243 0a 000256 6040 00 377 tmi call_side_queues this PDI is busy or queued 378 000244 aa 2 00011 2241 00 379 ldx4 bp|disktab.channels find dynamic table 000245 aa 3 00000 3501 14 380 eppap bb|0,x4 AP -> (first)chantabe 381 000246 aa 2 00001 7241 00 382 lxl4 bp|disktab.nchan 000247 0a 000256 6000 00 383 tze call_side_queues no channels exist - queue it 384 000250 0a 000302 2370 00 385 ldaq channel_criteria bit and mask for testing 000251 386 call_chan_loop: 000251 aa 0 00006 2111 00 387 cmk ap|chantab.in_use_word 000252 0a 000260 6000 00 388 tze call_side_connects channel available - use it 000253 aa 0 00040 3501 00 389 eppap ap|chantab_size try next channel 000254 aa 777777 6240 14 390 eax4 -1,x4 if there is another channel 000255 0a 000251 6054 00 391 tpnz call_chan_loop 392 393 " Add to existing work queue for device and fast return 394 000256 395 call_side_queues: " io_type (DL) must be good 000256 0a 000437 7070 00 396 tsx7 add_wq 000257 0a 000261 7100 00 397 tra working 398 399 " Have channel and no queued requests for idle device - send it work 400 000260 401 call_side_connects: 000260 0a 000765 7070 00 402 tsx7 gotwork 000261 0a 000340 7070 00 403 working: tsx7 unlock unlock and return 000262 aa 6 00134 2341 00 404 szn masked see if we are masked 000263 0a 000301 6000 00 405 tze unwired 406 407 " We are wired and must clear wiring before return 408 000264 aa 6 00064 3715 00 409 epplb mask 000265 aa 6 00070 6515 00 410 sprilb arglist+2 000266 aa 6 00062 3715 00 411 epplb ptp 000267 aa 6 00072 6515 00 412 sprilb arglist+4 000270 0a 001164 2370 00 413 ldaq two_args_nd 000271 aa 6 00066 7571 00 414 staq arglist 000272 aa 6 00000 2541 00 415 call pmut$unwire_unmask(arglist) 000273 aa 6 00066 3501 00 000274 4a 4 00014 3521 20 000275 aa 6 00040 7531 00 000276 aa 7 00036 6701 20 000277 aa 6 00000 1731 00 000300 aa 6 00040 0731 00 416 000301 aa 7 00042 7101 20 417 unwired: return 418 419 420 "for ldaq/cmk above:A has bits desired, Q has 1bits to mask dont-care bits 421 "we require a channel which is in-use, and not-active 422 423 even 000302 424 channel_criteria: 000302 aa 000000 400000 425 zero 0,chantab.in_use 000303 aa 777777 177777 426 zero -1,-chantab.in_use-chantab.active-1 427 " 428 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 429 " 430 " SETUP -- called with sx in Areg 431 " makes bb->disk_seg 432 " makes bp->devtab 433 " 434 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 435 000304 4a 4 00024 3535 20 436 setup: eppbb disk_seg$ 000305 aa 000001 7350 00 437 als 1 000306 aa 3 00007 3521 25 438 eppbp bb|disk_data.array-2,al* 000307 aa 000000 7100 17 439 tra 0,7 setup returns 440 441 442 443 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 444 " 445 " LOCK -- locks bp->disktab (ie a subsystem) 446 " called with x4->metercells 447 " 448 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 449 000310 aa 2 00000 0541 14 450 lock: aos bp|disk_lock_meters.count,x4 000311 4a 4 00026 2351 20 451 lda pds$processid 000312 aa 2 00000 3541 00 452 stac bp|disktab.lock lock subsystem lock 000313 aa 000000 6000 17 453 tze 0,x7 lock ret1 454 000314 0a 000327 7060 00 455 tsx6 lock_meter_start 000315 4a 4 00026 2351 20 456 lda pds$processid 000316 aa 2 00000 3541 00 457 lockloop: stac bp|disktab.lock 000317 0a 000325 6000 00 458 tze lockgot 000320 aa 000110 7770 00 459 llr 72 000321 aa 000110 7770 00 460 llr 72 000322 aa 000110 7770 00 461 llr 72 000323 aa 000110 7770 00 462 llr 72 000324 0a 000316 7100 00 463 tra lockloop 464 000325 0a 000333 7060 00 465 lockgot: tsx6 lock_meter_stop 000326 aa 000000 7100 17 466 tra 0,x7 lock ret2 467 468 " 469 " LOCK_METER_START - called via X6, X4 must specify lock reason 470 " 471 000327 472 lock_meter_start: 000327 4a 4 00020 6331 20 473 rccl sys_info$clock_,* 000330 aa 6 00052 7571 00 474 staq meter_start_time 000331 aa 2 00001 0541 14 475 aos bp|disk_lock_meters.waits,x4 000332 aa 000000 7100 16 476 tra 0,x6 477 478 " 479 " LOCK_METER_STOP -called via X6, X4 must specify lock reason 480 " 481 000333 482 lock_meter_stop: 000333 4a 4 00020 6331 20 483 rccl sys_info$clock_,* 000334 aa 6 00052 1771 00 484 sbaq meter_start_time 000335 aa 2 00002 0771 14 485 adaq bp|disk_lock_meters.wait_time,x4 000336 aa 2 00002 7571 14 486 staq bp|disk_lock_meters.wait_time,x4 000337 aa 000000 7100 16 487 tra 0,x6 488 489 " 490 " UNLOCK -- unlocks bp->disktab 491 " 492 000340 4a 4 00026 2351 20 493 unlock: lda pds$processid DEBUG 000341 aa 2 00000 1151 00 494 cmpa bp|disktab.lock DEBUG 000342 0a 000344 6000 00 495 tze *+2 000343 aa 000000 000004 496 oct 04 DEBUG Die Die Die 000344 aa 000000 6350 00 497 eaa 0 000345 aa 2 00000 3551 00 498 ansa bp|disktab.lock 000346 aa 000000 7100 17 499 tra 0,x7 unlock ret 500 " 501 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 502 " 503 " GET_FREE_Q -- called with bp->disktab 504 " sets x3->quentry 505 " note indirect return if sucessful, direct if fail!! 506 " 507 " uses X4, X5, A 508 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 509 000347 aa 000000 0110 03 510 even 511 000350 512 lock_disk_data.wait: 000350 aa 000110 7770 00 513 llr 72 Read/Alter/Rewrite delay 000351 aa 000110 7770 00 514 llr 72 000352 aa 000110 7770 00 515 llr 72 000353 aa 000110 7770 00 516 llr 72 000354 517 lock_disk_data: 000354 4a 4 00026 2351 20 518 lda pds$processid 000355 aa 3 00003 3541 00 519 stac bb|disk_data.lock lock disk_data 000356 aa 000000 6000 14 520 tze 0,x4 return to caller 000357 0a 000350 7100 00 521 tra lock_disk_data.wait 522 523 " Unlock disk_data. Ensures write notification. 524 000360 525 unlock_disk_data: 000360 4a 4 00026 2351 20 526 lda pds$processid DEBUG 000361 aa 3 00003 1151 00 527 cmpa bb|disk_data.lock DEBUG 000362 0a 000364 6000 00 528 tze *+2 000363 aa 000000 000004 529 oct 04 DEBUG Die Die Dia 000364 aa 000000 6350 00 530 eaa 0 000365 aa 3 00003 3551 00 531 ansa bb|disk_data.lock 000366 aa 000000 7100 14 532 tra 0,x4 unlock ret 533 534 535 000367 536 get_free_q: 000367 0a 000354 7040 00 537 tsx4 lock_disk_data 000370 aa 3 00007 2231 00 538 ldx3 bb|disk_data.free_q+qht.head 000371 0a 000415 6000 00 539 tze gfq_bret bad unlock and return 540 000372 aa 3 00000 2241 13 541 ldx4 bb|quentry.next,x3 make head point to next 000373 aa 3 00007 7441 00 542 stx4 bb|disk_data.free_q+qht.head set head 000374 0a 000400 6000 00 543 tze gfq_kill_tail kill tail if no next 000375 aa 000000 2250 03 544 ldx5 0,du make an 18-bit zero 000376 aa 3 00000 4451 14 545 sxl5 bb|quentry.prev,x4 kill new head's prev 000377 0a 000401 7100 00 546 tra gfq_do_stats 547 000400 548 gfq_kill_tail: 000400 aa 3 00007 4441 00 549 sxl4 bb|disk_data.free_q+qht.tail kill tail 550 551 " Compile statistics. 552 000401 553 gfq_do_stats: 000401 aa 3 00006 7251 00 554 lxl5 bb|disk_data.free_q+qht.depth 000402 aa 000000 6350 15 555 eaa 0,x5 000403 aa 000022 7310 00 556 ars 18 000404 aa 3 00004 0551 00 557 asa bb|disk_data.free_q+qht.sum accumulate depth sum 000405 aa 000001 0650 03 558 adx5 1,du increment depth counter 000406 aa 3 00006 4451 00 559 sxl5 bb|disk_data.free_q+qht.depth 000407 aa 3 00006 1051 00 560 cmpx5 bb|disk_data.free_q+qht.max_depth 000410 0a 000412 6044 00 561 tmoz gfq_no_max_depth not maximum depth seen 000411 aa 3 00006 7451 00 562 stx5 bb|disk_data.free_q+qht.max_depth 000412 563 gfq_no_max_depth: 000412 aa 3 00005 0541 00 564 aos bb|disk_data.free_q+qht.count 565 566 " unlock disk_data and return good 567 000413 0a 000360 7040 00 568 tsx4 unlock_disk_data 000414 aa 000000 7100 37 569 tra 0,x7* 570 000415 0a 000360 7040 00 571 gfq_bret: tsx4 unlock_disk_data unlock disk_data 000416 aa 000001 7100 17 572 tra 1,x7 gfq failure ret 573 " 574 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 575 " 576 " ADD_FREE_Q -- add X3->quentry to queue 577 " 578 " Uses X4, X5 579 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 580 000417 aa 000000 0110 03 581 even 582 000420 583 add_free_q: 000420 0a 000354 7040 00 584 tsx4 lock_disk_data 000421 aa 3 00007 7251 00 585 lxl5 bb|disk_data.free_q+qht.tail X5->oldtail 000422 0a 000425 6000 00 586 tze afq_empty was none! 000423 aa 3 00000 7431 15 587 stx3 bb|quentry.next,x5 make old_tail -> new_tail 000424 0a 000426 7100 00 588 tra afq_any 000425 589 afq_empty: 000425 aa 3 00007 7431 00 590 stx3 bb|disk_data.free_q+qht.head was empty, make new head 591 592 " make this entry's prev point to old tail 593 000426 aa 3 00000 4451 13 594 afq_any: sxl5 bb|quentry.prev,x3 set this prev to old tail 000427 aa 3 00007 4431 00 595 sxl3 bb|disk_data.free_q+qht.tail set tail ptr 000430 aa 000000 6250 00 596 eax5 0 000431 aa 3 00000 7451 13 597 stx5 bb|quentry.next,x3 make newtail's next->nil 598 599 " Account for returned element 600 000432 aa 3 00006 7251 00 601 lxl5 bb|disk_data.free_q+qht.depth subtract for return 000433 aa 000001 1650 03 602 sbx5 1,du 000434 aa 3 00006 4451 00 603 sxl5 bb|disk_data.free_q+qht.depth 604 000435 0a 000360 7040 00 605 tsx4 unlock_disk_data unlock disk_data 000436 aa 000000 7100 17 606 tra 0,x7 add_q ret 607 " 608 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 609 " 610 " ADD_WQ -- add X3->quentry to queue 611 " 612 " X2-> devtab (pdi), X0 = pdi 613 " Uses X1, X4, X5, EAQ and lb 614 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 615 000437 616 add_wq: 000437 aa 400000 2350 03 617 lda =o400000,du set requests queued for dev 000440 aa 000000 2360 03 618 ldq 0,du 000441 aa 000000 7730 10 619 lrl 0,x0 000442 aa 2 00006 2551 00 620 orsa bp|disktab.dev_queued 000443 aa 2 00007 2561 00 621 orsq bp|disktab.dev_queued+1 622 623 " add to work queue 624 000444 aa 3 00011 7251 12 625 lxl5 bb|devtab.wq+qht.tail,x2 X5->oldtail 000445 0a 000450 6000 00 626 tze aq_empty was none! 000446 aa 3 00000 7431 15 627 stx3 bb|quentry.next,x5 make old_tail -> new_tail 000447 0a 000451 7100 00 628 tra aq_any 000450 629 aq_empty: 000450 aa 3 00011 7431 12 630 stx3 bb|devtab.wq+qht.head,x2 was empty, make new head 631 000451 aa 3 00000 4451 13 632 aq_any: sxl5 bb|quentry.prev,x3 set this prev to old tail 000452 aa 3 00011 4431 12 633 sxl3 bb|devtab.wq+qht.tail,x2 set tail ptr 000453 aa 000000 6250 00 634 eax5 0 000454 aa 3 00000 7451 13 635 stx5 bb|quentry.next,x3 make newtail's next->nil 636 637 " Compile statistics for queue loading. 638 000455 aa 3 00010 7251 12 639 lxl5 bb|devtab.wq+qht.depth,x2 000456 aa 000000 6350 15 640 eaa 0,x5 000457 aa 000022 7310 00 641 ars 18 000460 aa 3 00006 0551 12 642 asa bb|devtab.wq+qht.sum,x2 accumulate depth sum 000461 aa 000001 0650 03 643 adx5 1,du increment depth 000462 aa 3 00010 4451 12 644 sxl5 bb|devtab.wq+qht.depth,x2 000463 aa 3 00010 1051 12 645 cmpx5 bb|devtab.wq+qht.max_depth,x2 000464 0a 000466 6044 00 646 tmoz gq_no_max_depth not maximum depth seen 000465 aa 3 00010 7451 12 647 stx5 bb|devtab.wq+qht.max_depth,x2 000466 648 gq_no_max_depth: 000466 aa 3 00007 0541 12 649 aos bb|devtab.wq+qht.count,x2 650 651 " compile system load stats. Presumes io_type (DL) is good. 652 000467 0a 000354 7040 00 653 tsx4 lock_disk_data ensure counter is ours 000470 aa 6 00133 7211 00 654 lxl1 io_type 000471 0a 001433 2250 11 655 ldx5 sys_info_subs,x1 x5 is sysp offset 000472 aa 3 00003 2241 15 656 ldx4 bb|sys_info.depth_map,x5 get mapped counter 000473 aa 3 00000 4311 14 657 fld bb|0,x4 increment depth 000474 aa 002400 4750 03 658 fad =1.0,du 000475 aa 3 00000 4551 14 659 fst bb|0,x4 660 661 " Produce sys_info.fraction. -(float (depth) - max_depth)/max_depth 662 000476 aa 3 00001 5751 15 663 fsb bb|sys_info.max_depth,x5 000477 aa 000000 5130 00 664 fneg 000500 0a 000502 6050 00 665 tpl gq_pos_fraction fraction is positive 000501 aa 400000 4310 03 666 fld =0.0,du limit to 0.0 000502 667 gq_pos_fraction: 000502 aa 3 00001 5651 15 668 fdv bb|sys_info.max_depth,x5 000503 aa 3 00002 4551 15 669 fst bb|sys_info.fraction,x5 000504 0a 000360 7040 00 670 tsx4 unlock_disk_data clear disk_data lock 671 " Produce multiplier. -(float (depth) * slope) + intercept 672 " Final opt_info.multiplier is max (1.0, multiplier * sys_info.fraction) 673 000505 0a 001433 7240 11 674 lxl4 opt_info_subs,x1 x4 is optp offset in devtab 000506 aa 3 00000 3715 12 675 epplb bb|0,x2 pointer to devtab 000507 aa 5 00003 0541 14 676 aos lb|opt_info.depth,x4 increment device depth 677 000510 aa 5 00003 2351 14 678 lda lb|opt_info.depth,x4 000511 aa 000022 7350 00 679 als 18 clear high stuff 000512 aa 000066 7330 00 680 lrs 72-18 float opt_info.depth 000513 aa 216000 4110 03 681 lde =71b25,du 000514 aa 000000 5730 00 682 fno 000515 aa 5 00001 4611 14 683 fmp lb|opt_info.slope,x4 000516 aa 000000 5130 00 684 fneg 000517 aa 5 00002 4751 14 685 fad lb|opt_info.intercept,x4 000520 aa 3 00002 4611 15 686 fmp bb|sys_info.fraction,x5 * fraction 000521 aa 5 00000 4551 14 687 fst lb|opt_info.multiplier,x4 000522 aa 002400 5150 03 688 fcmp =1.0,du max (multiplier, 1.0) 000523 aa 000000 6050 17 689 tpl 0,x7 add_q return 000524 aa 002400 4310 03 690 fld =1.0,du 000525 aa 5 00000 4551 14 691 fst lb|opt_info.multiplier,x4 set to 1.0 000526 aa 000000 7100 17 692 tra 0,x7 add_q return 693 " 694 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 695 " 696 " DEL_Q -- called with x3->quentry 697 " 698 " Uses X1, X4, X5, EAQ, lb 699 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 700 000527 aa 3 00000 2241 13 701 del_q: ldx4 bb|quentry.next,x3 get next pointer 000530 aa 3 00000 7251 13 702 lxl5 bb|quentry.prev,x3 is if head is previous 000531 0a 000534 6010 00 703 tnz dq_mid 000532 aa 3 00011 7441 12 704 stx4 bb|devtab.wq+qht.head,x2 save new head 000533 0a 000535 7100 00 705 tra dq_head_done 000534 aa 3 00000 7441 15 706 dq_mid: stx4 bb|quentry.next,x5 set previous's next 000535 707 dq_head_done: 000535 aa 000000 1040 03 708 cmpx4 0,du test zero/non-zero 000536 0a 000541 6010 00 709 tnz dq_not_tail 000537 aa 3 00011 4451 12 710 sxl5 bb|devtab.wq+qht.tail,x2 update tail 000540 0a 000542 7100 00 711 tra dq_tail_done 000541 712 dq_not_tail: 000541 aa 3 00000 4451 14 713 sxl5 bb|quentry.prev,x4 update next's previous 714 715 " Compile queue loading statistics 716 000542 717 dq_tail_done: 000542 aa 3 00010 7251 12 718 lxl5 bb|devtab.wq+qht.depth,x2 decrement current depth 000543 aa 000001 1650 03 719 sbx5 1,du 000544 aa 3 00010 4451 12 720 sxl5 bb|devtab.wq+qht.depth,x2 000545 0a 000554 6054 00 721 tpnz dq_with_queue 000546 aa 400000 2350 03 722 lda =o400000,du turn off device_queued bit 000547 aa 000000 2360 03 723 ldq 0,du 000550 aa 000000 7730 10 724 lrl 0,x0 X0 has PDI 000551 0a 001230 6770 00 725 eraq all_ones form mask 000552 aa 2 00006 3551 00 726 ansa bp|disktab.dev_queued 000553 aa 2 00007 3561 00 727 ansq bp|disktab.dev_queued+1 728 729 " compile system load stats. 730 000554 731 dq_with_queue: 000554 aa 3 00001 2351 13 732 lda bb|quentry.type_word,x3 get type of IO 000555 aa 000036 7310 00 733 ars quentry.type_shift 000556 aa 000017 3750 07 734 ana quentry.type_mask,dl 000557 aa 000000 6210 05 735 eax1 0,al save for opt_info subs 736 000560 0a 000354 7040 00 737 tsx4 lock_disk_data lock for system update 000561 0a 001433 2250 11 738 ldx5 sys_info_subs,x1 x5 is sysp offset 000562 aa 3 00003 2241 15 739 ldx4 bb|sys_info.depth_map,x5 get mapped counter 000563 aa 3 00000 4311 14 740 fld bb|0,x4 increment depth 000564 aa 002400 5750 03 741 fsb =1.0,du 000565 0a 000567 6050 00 742 tpl dq_pos_depth Must stay positive 000566 aa 400000 4310 03 743 fld =0.0,du 000567 744 dq_pos_depth: 000567 aa 3 00000 4551 14 745 fst bb|0,x4 746 747 " Produce sys_info.fraction. -(float (depth) - max_depth)/max_depth 748 000570 aa 3 00001 5751 15 749 fsb bb|sys_info.max_depth,x5 000571 aa 000000 5130 00 750 fneg 000572 0a 000574 6050 00 751 tpl dq_pos_fraction fraction is positive 000573 aa 400000 4310 03 752 fld =0.0,du limit to 0.0 000574 753 dq_pos_fraction: 000574 aa 3 00001 5651 15 754 fdv bb|sys_info.max_depth,x5 000575 aa 3 00002 4551 15 755 fst bb|sys_info.fraction,x5 000576 0a 000360 7040 00 756 tsx4 unlock_disk_data 757 " Produce multiplier. -(float (depth) * slope) + intercept 758 " Final opt_info.multiplier is max (1.0, multiplier * sys_info.fraction) 759 000577 0a 001433 7240 11 760 lxl4 opt_info_subs,x1 x4 is optp offset in devtab 000600 aa 3 00000 3715 12 761 epplb bb|0,x2 pointer to devtab 000601 aa 5 00003 7211 14 762 lxl1 lb|opt_info.depth,x4 decrement depth 000602 aa 000001 1610 03 763 sbx1 1,du 000603 aa 5 00003 4411 14 764 sxl1 lb|opt_info.depth,x4 000604 aa 000000 6350 11 765 eaa 0,x1 load into high A 000605 aa 000066 7330 00 766 lrs 72-18 float opt_info.depth 000606 aa 216000 4110 03 767 lde =71b25,du 000607 aa 000000 5730 00 768 fno 000610 aa 5 00001 4611 14 769 fmp lb|opt_info.slope,x4 000611 aa 000000 5130 00 770 fneg 000612 aa 5 00002 4751 14 771 fad lb|opt_info.intercept,x4 000613 aa 3 00002 4611 15 772 fmp bb|sys_info.fraction,x5 * sys_info.fraction 000614 aa 5 00000 4551 14 773 fst lb|opt_info.multiplier,x4 000615 aa 002400 5150 03 774 fcmp =1.0,du max (multiplier, 1.0) 000616 aa 000000 6050 16 775 tpl 0,x6 add_wq return 000617 aa 002400 4310 03 776 fld =1.0,du 000620 aa 5 00000 4551 14 777 fst lb|opt_info.multiplier,x4 max to 1.0 000621 aa 000000 7100 16 778 tra 0,x6 add_wq_return 779 " 780 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 781 " 782 " GETWORK -- find something to do. 783 " enter at gotwork if you already know what to do. 784 " 785 " ap->chantabe 786 " bb->disk_seg 787 " bp->disktab 788 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 789 000622 790 getwork: 000622 aa 0 00006 2351 00 791 lda ap|chantab.in_use_word Return if channel not in use 000623 aa 400000 3150 07 792 cana chantab.in_use,dl 000624 0a 001141 6000 00 793 tze gw_ret 794 000625 aa 2 00006 2371 00 795 ldaq bp|disktab.dev_queued See if any PDI with queue is not busy 000626 aa 2 00004 2171 00 796 cnaaq bp|disktab.dev_busy Z = AQ & ^Y-pair 000627 0a 001141 6000 00 797 tze gw_ret Return if nothing to do 798 799 " Scan through all devices round-robin til one is found which is not 800 " busy, and has a queue. We are looking at the primary device to 801 " determine not_busy and queued. 802 000630 aa 2 00002 7251 00 803 lxl5 bp|disktab.last_dev get high drive number 000631 aa 6 00136 7451 00 804 stx5 temp1 in upper for cmpx 000632 4a 4 00020 6331 20 805 rccl sys_info$clock_,* get time for stagnate test 000633 aa 6 00060 7571 00 806 staq test_time 807 000634 808 gw_dev.scan: 000634 aa 2 00011 0541 00 809 aos bp|disktab.dev_index device to examine 000635 aa 2 00011 7241 00 810 lxl4 bp|disktab.dev_index 000636 aa 6 00136 1041 00 811 cmpx4 temp1 see if over-run 000637 0a 000642 6044 00 812 tmoz gw_dev.in_range 000640 aa 2 00002 2241 00 813 ldx4 bp|disktab.first_dev reset index to first dev 000641 aa 2 00011 4441 00 814 sxl4 bp|disktab.dev_index 815 000642 816 gw_dev.in_range: 000642 0a 001443 2240 14 817 ldx4 devtab_subs,x4 subscript devtab (dev) 000643 aa 2 00000 2361 14 818 ldq bp|devtab.pdi_word,x4 get PDI 000000 819 equ devtab.pdi_shift,0 PRESUMED 0 820 """"" qrs devtab.pdi_shift 000644 aa 000077 3760 07 821 anq devtab.pdi_mask,dl 000645 aa 000000 6200 06 822 eax0 0,ql X0 is PDI 000646 aa 2 00004 2371 00 823 ldaq bp|disktab.dev_busy see if PDI is busy 000647 aa 000000 7370 10 824 lls 0,x0 000650 0a 000655 6050 00 825 tpl gw_dev.not_busy free for use 000651 826 gw_dev.check_done: 000651 aa 000001 1650 03 827 sbx5 1,du count dev done 000652 aa 2 00002 1051 00 828 cmpx5 bp|disktab.first_dev more to scan 000653 0a 000634 6050 00 829 tpl gw_dev.scan 000654 0a 001141 7100 00 830 tra gw_ret done sub-system 831 832 " See if broken or without queue. 833 000655 834 gw_dev.not_busy: 000655 0a 001443 2240 10 835 ldx4 devtab_subs,x0 subscript devtab (pdi) 000656 aa 2 00000 6221 14 836 eax2 bp|0,x4 X2->DEVTABE 000657 aa 3 00010 7241 12 837 lxl4 bb|devtab.wq+qht.depth,x2 test depth of queue 000660 0a 000651 6000 00 838 tze gw_dev.check_done no work to do 000661 aa 3 00000 2361 12 839 ldq bb|devtab.broken_word,x2 see if usable 000662 aa 000100 3760 03 840 anq devtab.broken,du 000663 0a 000651 6010 00 841 tnz gw_dev.check_done skip this one 842 000664 aa 3 00011 2231 12 843 ldx3 bb|devtab.wq+qht.head,x2 get head of queue 000665 aa 000001 1040 07 844 cmpx4 1,dl 000666 0a 000764 6000 00 845 tze gw_dev.this_request take the only request 000667 aa 3 00111 2351 00 846 lda bb|disk_data.stagnate_time see if we are stagnating 000670 aa 000044 7330 00 847 lrs 36 full 71 bit time 000671 aa 3 00004 0771 13 848 adaq bb|quentry.time,x3 plus queued time 000672 aa 6 00060 1771 00 849 sbaq test_time minus time now 000673 0a 000733 6050 00 850 tpl gw_dev.seek optimized nearest seek 851 " 852 " COMB DEVICE FOR BEST REQUEST 853 " X0 = pdi 854 " X1 temp 855 " X2 -> devtabe 856 " X3 -> best_quentry 857 " X4 temp 858 " bb -> disk_seg 859 " bp -> disktab 860 " ap -> chantabe 861 " 862 000674 863 gw_dev.comb: 000674 aa 3 00002 0541 12 864 aos bb|devtab.comb,x2 count a comb done 000675 aa 400000 2350 03 865 lda =o400000,du best_neg_comb 000676 aa 6 00142 7551 00 866 sta best_neg_comb 000677 aa 377777 2350 03 867 lda =o377777,du best_pos_comb 000700 aa 6 00140 7551 00 868 sta best_seek 000701 aa 6 00141 4501 00 869 stz comb_qp flag no best yet 870 000702 871 comb.scan: 000702 aa 3 00000 2361 12 872 ldq bb|devtab.forward_word,x2 see if moving forward 000703 aa 3 00002 2351 13 873 lda bb|quentry.cylinder_word,x3 get queued cylinder 000704 aa 003777 3750 00 874 ana quentry.cylinder_mask 000705 aa 3 00001 1751 12 875 sba bb|devtab.cylinder,x2 000706 0a 000764 6000 00 876 tze gw_dev.this_request take on-cylinder request 000707 aa 000020 3760 03 877 anq devtab.forward,du see if forward 000710 0a 000712 6010 00 878 tnz comb.forward yes - use queue-device 000711 aa 000000 5310 00 879 neg " use device-queue 000712 880 comb.forward: 000712 aa 000000 1150 07 881 cmpa 0,dl test direction 000713 0a 000721 6040 00 882 tmi comb.move_reverse 883 884 " This move would be in the current direction. 885 000714 886 comb.move_forward: 000714 aa 6 00140 1151 00 887 cmpa best_seek see if shorter move 000715 0a 000725 6050 00 888 tpl comb.skip longer move 000716 aa 6 00140 7551 00 889 sta best_seek 000717 aa 6 00141 7431 00 890 stx3 comb_qp save forward best 000720 0a 000725 7100 00 891 tra comb.skip 892 893 " This move would reverse our direction. 894 000721 895 comb.move_reverse: 000721 aa 6 00142 1151 00 896 cmpa best_neg_comb see if shorter move 000722 0a 000725 6040 00 897 tmi comb.skip longer move 000723 aa 6 00142 7551 00 898 sta best_neg_comb 000724 aa 6 00141 4431 00 899 sxl3 comb_qp save reverse best 900 " tra comb.skip 901 902 " Continue scan of queue. 903 000725 904 comb.skip: 000725 aa 3 00000 2231 13 905 ldx3 bb|quentry.next,x3 get next element 000726 0a 000702 6010 00 906 tnz comb.scan continue scan 907 000727 aa 6 00141 2231 00 908 ldx3 comb_qp see if forward was found 000730 0a 000764 6010 00 909 tnz gw_dev.this_request yes - do it 000731 aa 6 00141 7231 00 910 lxl3 comb_qp take reverse which must be here 000732 0a 000764 7100 00 911 tra gw_dev.this_request 912 " 913 " FIND SHORTEST LOGICAL SEEK ON DEV 914 " X0 = pdi 915 " X1 = best_qp 916 " X2 -> devtabe 917 " X3 -> best_quentry 918 " X4 temp 919 " bb -> disk_seg 920 " bp -> disktab 921 " ap -> chantabe 922 " lb -> devtabe 923 " 924 000733 925 gw_dev.seek: 000733 aa 310623 4310 03 926 fld =1.0e30,du high set best_seek 000734 aa 6 00140 4551 00 927 fst best_seek 000735 aa 000000 6210 13 928 eax1 0,x3 best_qp 000736 aa 3 00000 3715 12 929 epplb bb|0,x2 form devtabe pointer 930 000737 931 seek.scan: 000737 aa 3 00001 2351 13 932 lda bb|quentry.type_word,x3 get type of request 000740 aa 000036 7310 00 933 ars quentry.type_shift 000741 aa 000017 3750 07 934 ana quentry.type_mask,dl 000742 0a 001433 7250 05 935 lxl5 opt_info_subs,al subscript opt_info 000743 aa 3 00002 2351 13 936 lda bb|quentry.cylinder_word,x3 find cylinder move 000744 aa 003777 3750 07 937 ana quentry.cylinder_mask,dl 000745 aa 5 00001 1751 00 938 sba lb|devtab.cylinder 000746 0a 000764 6000 00 939 tze gw_dev.this_request on-cylinder 000747 0a 000751 6050 00 940 tpl seek.pos take absolute 000750 aa 000000 5310 00 941 neg 000751 aa 000044 7330 00 942 seek.pos: lrs 36 float 000752 aa 216000 4110 03 943 lde =71b25,du 000753 aa 000000 5730 00 944 fno 000754 aa 5 00000 4611 15 945 fmp lb|opt_info.multiplier,x5 * multiplier 000755 aa 6 00140 5151 00 946 fcmp best_seek see if best seek 000756 0a 000761 6050 00 947 tpl seek.worse this one is worse 000757 aa 000000 6210 13 948 eax1 0,x3 save this entry as best 000760 aa 6 00140 4551 00 949 fst best_seek and the length 950 000761 951 seek.worse: 000761 aa 3 00000 2231 13 952 ldx3 bb|quentry.next,x3 check next entry 000762 0a 000737 6010 00 953 tnz seek.scan 954 955 " The best seek is noted in X1, move to X3 and use it. 956 000763 aa 000000 6230 11 957 eax3 0,x1 000764 958 gw_dev.this_request: 000764 0a 000527 7060 00 959 tsx6 del_q delete this request from Q 960 " tra xfer_join 961 " 962 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 963 " 964 " GOTWORK -- XFER JOIN process a quentry 965 " X0 = pdi 966 " X2 -> devtabe (from pdi) 967 " X3 -> quentry 968 " X5 -> devtabe for actual device 969 " X7 is return address 970 " bb -> disk_seg 971 " bp -> disktab 972 " ap -> chantabe 973 " 974 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 975 000000 976 equ chantab.erct_shift,0 PRESUME=0 977 000765 978 gotwork: 000765 979 xfer_join: 000765 aa 777000 2350 07 980 lda -chantab.erct_mask-1,dl clear error count and qrp 000766 aa 0 00007 3551 00 981 ansa ap|chantab.erct_word zero qrp,erct leave command 000767 aa 0 00007 7431 00 982 stx3 ap|chantab.qrp save quentry index for later 983 000770 aa 3 00002 2351 13 984 lda bb|quentry.dev_word,x3 000771 aa 000020 7310 00 985 ars quentry.dev_shift 000772 aa 000077 3750 07 986 ana quentry.dev_mask,dl 000773 aa 6 00130 7551 00 987 sta dev save device number 000774 aa 000030 7350 00 988 als idcw.device_shift position dev in AU 989 990 " dev value in AU is used in gw_testing below. 991 000001 992 equ quentry.used_word,quentry.type_word 000775 aa 3 00001 2361 13 993 ldq bb|quentry.used_word,x3 000776 aa 200000 3160 03 994 canq quentry.used,du DEBUG 000777 0a 001001 6010 00 995 tnz *+2 001000 aa 000000 000004 996 oct 04 DEBUG Die Die Die 001001 aa 000036 7320 00 997 qrs quentry.type_shift 001002 aa 000017 3760 07 998 anq quentry.type_mask,dl 001003 aa 000000 6240 06 999 eax4 0,ql io_type to x4 001004 aa 000004 1160 07 1000 cmpq TEST,dl See if TEST io 001005 0a 001142 6000 00 1001 tze gw_testing 1002 001006 aa 0 00024 7511 20 1003 stca ap|chantab.scdcw,20 use dev in AU 001007 aa 740000 2750 07 1004 ora =o740000,dl (dcdcw) idcw.code=7 idcw.ext_ctl=1 001010 aa 0 00026 7551 00 1005 sta ap|chantab.dcdcw 1006 001011 aa 6 00130 7251 00 1007 lxl5 dev get device 001012 0a 001443 2250 15 1008 ldx5 devtab_subs,x5 subscript devtab 001013 aa 2 00000 6251 15 1009 eax5 bp|0,x5 HENCE x5 -> real devtabe 1010 1011 " Determine if write IO by shifting the mask 1012 001014 aa 244000 2350 03 1013 lda write_mapping,du 001015 aa 000000 7350 06 1014 als 0,ql io_type still QL 001016 0a 001021 6050 00 1015 tpl gw_read if positive then read 001017 aa 310000 2350 03 1016 lda =o310000,du 001020 0a 001022 7100 00 1017 tra gw_rw_done 001021 1018 gw_read: 001021 aa 250000 2350 03 1019 lda =o250000,du 001022 1020 gw_rw_done: 001022 aa 0 00026 7511 40 1021 stca ap|chantab.dcdcw,40 I believe an orsa would do 1022 1023 "dcdcwp->idcw.ext = quentry.coreadd 001023 aa 3 00001 2351 13 1024 lda bb|quentry.coreadd_word,x3 000000 1025 equ MUST_BE_ZERO,quentry.coreadd_shift PRESUMPTION 001024 aa 0 00026 7511 10 1026 stca ap|chantab.dcdcw,10 1027 1028 "dddcwp->dcw.address = substr (quentry.coreadd,7) 001025 aa 000022 7350 00 1029 als 18 001026 aa 0 00027 5511 60 1030 stba ap|chantab.dddcw,60 1031 001027 aa 3 00003 2351 13 1032 lda bb|quentry.sector_word,x3 leave sector in A for gw_put_seldata 001030 aa 000006 7350 00 1033 als 36-quentry.n_sectors_shift mask for sectors 001031 aa 000006 7710 00 1034 arl 36-quentry.n_sectors_shift 001032 aa 0 00010 7551 00 1035 sta ap|chantab.select_data 1036 1037 " Check for 64 or 512 type seek use x1 001033 aa 0 00024 2211 00 1038 ldx1 ap|chantab.scdcw 040000 1039 bool seek_64_bit,040000 "34 = seek_64 (normal) 30 = seek_512 (ibm) 001034 aa 040000 3610 03 1040 anx1 seek_64_bit,du 001035 0a 001075 6010 00 1041 tnz seek_64 " bit was on 001036 1042 seek_512: 1043 " Check io type for file system standards 001036 aa 000003 1040 03 1044 cmpx4 VTOC_WRITE,du 001037 0a 001054 6054 00 1045 tpnz not_stan 001040 aa 000001 1040 03 1046 cmpx4 PAGE_WRITE,du 001041 0a 001047 6044 00 1047 tmoz page_512 001042 aa 000144 2750 03 1048 ora 000100,du 001043 aa 0 00010 7511 20 1049 stca ap|chantab.select_data,20 " store sector limit 001044 aa 000300 2360 07 1050 ldq 192,dl " real vtoce size 001045 aa 0 00027 7521 03 1051 stcq ap|chantab.dddcw,03 " store tally 001046 0a 001115 7100 00 1052 tra seek_stats 001047 1053 page_512: 001047 aa 000310 2750 03 1054 ora 000200,du 001050 aa 0 00010 7511 20 1055 stca ap|chantab.select_data,20 " store sector limit 001051 aa 002000 2360 07 1056 ldq 1024,dl 001052 aa 0 00027 7521 03 1057 stcq ap|chantab.dddcw,03 " store tally 001053 0a 001115 7100 00 1058 tra seek_stats 001054 1059 not_stan: 001054 aa 174000 2360 03 1060 ldq sector_mapping,du io_type still in X4 001055 aa 000000 7360 14 1061 qls 0,x4 001056 0a 001070 6050 00 1062 tpl not_sect_512 if positive then not sector 1063 1064 " Formulate tally and select_data.limit 512 1065 001057 aa 3 00003 2361 13 1066 ldq bb|quentry.n_sectors_word,x3 001060 aa 000036 7720 00 1067 qrl quentry.n_sectors_shift 001061 aa 6 00143 7561 00 1068 stq n_sectors 001062 aa 000030 7360 00 1069 qls chantab.limit_shift align for sector limit 001063 aa 6 00144 7561 00 1070 stq n_sectors_temp 001064 aa 6 00144 0751 00 1071 ada n_sectors_temp n_sectors + sector 001065 aa 6 00143 2361 00 1072 ldq n_sectors 001066 aa 000011 7360 00 1073 qls 9 times 512 001067 0a 001072 7100 00 1074 tra sect_done_512 001070 1075 not_sect_512: 001070 aa 002000 2360 07 1076 ldq 1024,dl page size is 1024 words 001071 aa 000200 0750 03 1077 ada =o000200,du add in limit bit 001072 1078 sect_done_512: 001072 aa 0 00027 7521 03 1079 stcq ap|chantab.dddcw,03 store tally 001073 1080 put_seldata_512: 001073 aa 0 00010 7551 00 1081 sta ap|chantab.select_data 001074 0a 001115 7100 00 1082 tra seek_stats 001075 1083 seek_64: 001075 aa 174000 2360 03 1084 ldq sector_mapping,du io_type still in X4 001076 aa 000000 7360 14 1085 qls 0,x4 001077 0a 001111 6050 00 1086 tpl gw_not_sect if positive then not sector Formulate tally and select_data.limit 1087 001100 aa 3 00003 2361 13 1088 ldq bb|quentry.n_sectors_word,x3 001101 aa 000036 7720 00 1089 qrl quentry.n_sectors_shift 001102 aa 6 00143 7561 00 1090 stq n_sectors 001103 aa 000030 7360 00 1091 qls chantab.limit_shift align for sector limit 001104 aa 6 00144 7561 00 1092 stq n_sectors_temp 001105 aa 6 00144 0751 00 1093 ada n_sectors_temp n_sectors + sector 001106 aa 6 00143 2361 00 1094 ldq n_sectors 001107 aa 000006 7360 00 1095 qls 6 times 64 001110 0a 001113 7100 00 1096 tra gw_sect_done 001111 1097 gw_not_sect: 001111 aa 002000 2360 07 1098 ldq 1024,dl page size is 1024 words 001112 aa 002000 0750 03 1099 ada =o002000,du add in limit bit 001113 1100 gw_sect_done: 001113 aa 0 00027 7521 03 1101 stcq ap|chantab.dddcw,03 store tally 001114 1102 gw_put_seldata: 001114 aa 0 00010 7551 00 1103 sta ap|chantab.select_data 1104 1105 " Formulate seek statistics and seek direction. 1106 001115 1107 seek_stats: 001115 aa 3 00000 3715 15 1108 epplb bb|0,x5 form devtab (dev) pointer 001116 0a 001433 7240 14 1109 lxl4 opt_info_subs,x4 get opt_info subscript in devtab 001117 aa 3 00002 2351 13 1110 lda bb|quentry.cylinder_word,x3 get quentry.cylinder 001120 aa 003777 3750 07 1111 ana quentry.cylinder_mask,dl 001121 aa 6 00132 7551 00 1112 sta cylinder 001122 aa 3 00001 1751 12 1113 sba bb|devtab.cylinder,x2 subtract devtab.cylinder 001123 0a 001133 6000 00 1114 tze gw_seek_done on-cylinder retain forward 001124 0a 001131 6050 00 1115 tpl gw_seek_fwd seek from low to high 001125 1116 gw_seek_back: " seek from high to low 001125 aa 000021 3210 03 1117 lcx1 devtab.forward+1,du clear forward bit 001126 aa 3 00000 3411 12 1118 ansx1 bb|devtab.forward_word,x2 001127 aa 000000 5310 00 1119 neg " take absolute cylinder move 001130 0a 001133 7100 00 1120 tra gw_seek_done 1121 001131 1122 gw_seek_fwd: 001131 aa 000020 2360 03 1123 ldq devtab.forward,du 001132 aa 3 00000 2561 12 1124 orsq bb|devtab.forward_word,x2 1125 001133 1126 gw_seek_done: 001133 aa 5 00010 0551 14 1127 asa lb|opt_info.seek_sum_word,x4 sum seek lengths 001134 aa 5 00011 0541 14 1128 aos lb|opt_info.seek_count_word,x4 count seek done 001135 aa 6 00132 2351 00 1129 lda cylinder 001136 aa 3 00001 7551 12 1130 sta bb|devtab.cylinder,x2 001137 aa 0 00024 3715 00 1131 epplb ap|chantab.scdcw 1132 1133 " Perform the operation 1134 001140 0a 001170 7060 00 1135 tsx6 connect 001141 aa 000000 7100 17 1136 gw_ret: tra 0,x7 1137 1138 1139 "TESTING HERE -- note dev for idcw in AU 1140 001142 1141 gw_testing: 001142 aa 0 00032 7511 20 1142 stca ap|chantab.rssdcw,20 use dev in AU 001143 aa 3 00001 2351 00 1143 lda bb|quentry.coreadd_word get command from coreadd 001144 aa 000077 3750 07 1144 ana idcw.command_mask,dl mask for command 001145 aa 000036 7350 00 1145 als 30 shift to bits 0 - 5 001146 aa 0 00032 7511 40 1146 stca ap|chantab.rssdcw,40 in IDCW 1147 1148 " Statistics for TEST - io_type in X4 1149 001147 aa 3 00000 3715 15 1150 epplb bb|0,x5 devtab (dev) pointer 001150 0a 001433 7240 14 1151 lxl4 opt_info_subs,x4 convert type to subscript 001151 aa 000072 1150 07 1152 cmpa 58,dl 001152 0a 001155 6000 00 1153 tze gw_testing.unload 001153 aa 5 00011 0541 14 1154 aos lb|opt_info.seek_count_word,x4 TEST 001154 0a 001156 7100 00 1155 tra gw_testing.connect 001155 1156 gw_testing.unload: 001155 aa 5 00010 0541 14 1157 aos lb|opt_info.seek_sum_word,x4 UNLOAD 1158 001156 1159 gw_testing.connect: 001156 aa 0 00032 3715 00 1160 epplb ap|chantab.rssdcw 001157 0a 001170 7060 00 1161 tsx6 connect 001160 0a 001141 7100 00 1162 tra gw_ret 1163 1164 " 1165 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1166 " 1167 " CONNECT -- called via tsx6 1168 " 1169 " X0 = pdi 1170 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1171 001161 aa 000000 0110 03 1172 even 001162 1173 one_arg_nd: 001162 aa 000002 000004 1174 zero 2,4 001163 aa 000000 000000 1175 zero 0 1176 001164 1177 two_args_nd: 001164 aa 000004 000004 1178 zero 4,4 001165 aa 000000 000000 1179 zero 0 1180 001166 aa 077777 000043 1181 nullptr: its -1,1 001167 aa 000001 000000 1182 1183 " ********* 1184 " 1185 " LB -> DCW list 1186 " 001170 1187 connect: 001170 aa 6 00104 6515 00 1188 sprilb ima+io_manager_arg.listp 001171 aa 0 00000 2351 00 1189 lda ap|chantab.chx 001172 aa 6 00076 7551 00 1190 sta ima+io_manager_arg.chx 001173 aa 6 00100 4501 00 1191 stz ima+io_manager_arg.pcw 001174 0a 001166 2370 00 1192 ldaq nullptr 001175 aa 6 00102 7571 00 1193 staq ima+io_manager_arg.ptp 1194 001176 0a 001162 2370 00 1195 ldaq one_arg_nd 001177 aa 6 00066 7571 00 1196 staq arglist 001200 aa 6 00076 3715 00 1197 epplb ima 001201 aa 6 00070 6515 00 1198 sprilb arglist+2 001202 aa 6 00000 2541 00 1199 call io_manager$connect_abs(arglist) 001203 aa 6 00066 3501 00 001204 4a 4 00016 3521 20 001205 aa 6 00040 7531 00 001206 aa 7 00036 6701 20 001207 aa 6 00000 1731 00 001210 aa 6 00040 0731 00 1200 001211 aa 0 00016 0541 00 1201 aos ap|chantab.connects 001212 aa 200000 2350 07 1202 lda chantab.active,dl 001213 aa 0 00006 2551 00 1203 orsa ap|chantab.active_word 001214 4a 4 00020 6331 20 1204 rccl sys_info$clock_,* 001215 aa 0 00014 7571 00 1205 staq ap|chantab.connect_time 001216 aa 400000 2350 03 1206 lda =o400000,du 001217 aa 000000 2360 03 1207 ldq 0,du 001220 aa 000000 7730 10 1208 lrl 0,x0 leave PDI-th bit on 001221 aa 2 00004 2551 00 1209 orsa bp|disktab.dev_busy 001222 aa 2 00005 2561 00 1210 orsq bp|disktab.dev_busy+1 001223 aa 000000 7100 16 1211 tra 0,x6 connect retns 1212 " 1213 " 1214 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1215 " 1216 " DISK_INTER -- the interrupt side of the disk_dim 1217 " This proc only processes the easy cases, those 1218 " which do not involve errors or syserr messeage production. 1219 " It is assumed that if this procedure did not exist, the 1220 " pl1 version of the disk_dim could handle all cases 1221 " properly. 1222 " 1223 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 1224 001224 1225 evil_status_bits: 001224 aa 002300 000000 1226 oct 002300000000 1227 001225 aa 000000 0110 03 1228 even 001226 1229 simple_interrupt_criteria: 001226 aa 000000 200000 1230 zero 0,chantab.active 001227 aa 777777 437777 1231 zero -1,-chantab.active-chantab.ioi_use-chantab.rsr-1 1232 1233 even 001230 1234 all_ones: 001230 aa 777777 777777 1235 vfd 36/-1 001231 aa 777777 777777 1236 vfd 36/-1 1237 1238 even 001232 aa 000000 000001 1239 time_mod: dec 1 001233 aa 000000 000000 1240 dec 0 1241 001234 1242 disk_inter: 001234 aa 000160 6270 00 1243 push " get a stack frame 001235 aa 7 00040 2721 20 001236 aa 6 00050 2501 00 1244 spriap int_arg_list " save arg list ptr 001237 4a 4 00024 3535 20 1245 eppbb disk_seg$ need bb in case of bailout 1246 001240 aa 0 00004 7251 20 1247 lxl5 ap|4,* get interrupt level 001241 aa 000003 1050 03 1248 cmpx5 3,du only level = 3 (terminate) handled here 001242 0a 001410 6010 00 1249 tnz SLOW_INT 1250 1251 " Each subsystem has a channel address space of dskdcl_chans_per_subsys. 1252 " If you divide the supplied channel idx by this you can arrive at the subsys 1253 " index. 1254 001243 aa 0 00002 2351 20 1255 lda ap|2,* get idx 001244 aa 000005 7330 00 1256 lrs dskdcl_chans_per_subsys_shift sx = idx/# 001245 0a 000304 7070 00 1257 tsx7 setup 001246 aa 000037 7720 00 1258 qrl 36-dskdcl_chans_per_subsys_shift put mod(idx,#) in the q 001247 0a 001443 7240 06 1259 lxl4 chantab_subs,ql subscript chantab 001250 aa 2 00011 0641 00 1260 adx4 bp|disktab.channels locate dynamic table 001251 aa 3 00000 3501 14 1261 eppap bb|0,x4 HENCEFORTH AP -> chantabe 001252 aa 000022 6240 00 1262 eax4 disktab.int_lock_meters 001253 0a 000310 7070 00 1263 tsx7 lock 1264 001254 aa 0 00002 2351 20 1265 lda ap|chantab.statusp,* get status 1266 001255 0a 001416 6000 00 1267 tze NO_STATUS_TERM someone else processed status (disk_control$run) 1268 1269 "CHECK 1 AGAIN 1270 001256 0a 001407 6050 00 1271 tpl UNLOCK_THEN_SLOW 1272 1273 1274 "CHECK 8 -- handle abnormal termination status 001257 aa 3 00002 3151 00 1275 cana bb|disk_data.status_mask 001260 0a 001407 6010 00 1276 tnz UNLOCK_THEN_SLOW 1277 1278 "CHECK 9 -- Test for non-zero tally residue in DCW (DISCONTINUED) 1279 "CHECK 10 -- If controller performed EDAC or auto retry 001261 0a 001224 3150 00 1280 cana evil_status_bits 001262 0a 001407 6010 00 1281 tnz UNLOCK_THEN_SLOW 1282 001263 0a 001226 2370 00 1283 ldaq simple_interrupt_criteria pre-CHECKS 3&4&7 001264 aa 0 00006 2111 00 1284 cmk ap|chantab.active_word test channel criteria 001265 0a 001407 6010 00 1285 tnz UNLOCK_THEN_SLOW 1286 1287 " 1288 "CHECK 3 -- If status for ioi channel 1289 "CHECK 4 -- If channel not active scream bloody murder 1290 "CHECK 7 --If detailed status just read 1291 " 001266 4a 4 00020 6331 20 1292 rccl sys_info$clock_,* 001267 aa 6 00054 7571 00 1293 staq status_time 1294 1295 "Now set needed registers pointing into disk_data seg 001270 aa 0 00007 2231 00 1296 ldx3 ap|chantab.qrp HENCEFORTH X3->quentry 001271 aa 3 00002 2351 13 1297 lda bb|quentry.pdi_word,x3 001272 aa 000026 7310 00 1298 ars quentry.pdi_shift AL now has PDI 001273 aa 000077 3750 07 1299 ana quentry.pdi_mask,dl 001274 aa 000000 6200 05 1300 eax0 0,al HENCEFORTH X0 = PDI 1301 001275 0a 001443 2220 10 1302 ldx2 devtab_subs,x0 subscript devtab (pdi) 001276 aa 2 00000 6221 12 1303 eax2 bp|0,x2 HENCEFORTH X2->devtabe 1304 " 1305 "CHECK 11 -- Was disk previously inoperative? 001277 aa 3 00000 2351 12 1306 lda bb|devtab.broken_word,x2 001300 aa 000300 3150 03 1307 cana devtab.broken+devtab.was_broken,du 001301 0a 001407 6010 00 1308 tnz UNLOCK_THEN_SLOW 1309 " 1310 " Must set sect_sw bootload_sw coreadd prior ercd before yielding quentry 1311 1312 1313 "CHECK 12 -- If was test then indicate test result 1314 001302 aa 3 00001 2351 13 1315 lda bb|quentry.type_word,x3 001303 aa 000036 7310 00 1316 ars quentry.type_shift 001304 aa 000017 3750 07 1317 ana quentry.type_mask,dl 001305 aa 6 00133 7551 00 1318 sta io_type io_type (DL) ** 001306 aa 000004 1150 07 1319 cmpa TEST,dl 001307 0a 001407 6000 00 1320 tze UNLOCK_THEN_SLOW Handle through pl1 DIM 1321 001310 aa 174000 2360 03 1322 ldq sector_mapping,du Determine if sector IO 001311 aa 000000 7360 05 1323 qls 0,al shift to sign bit 001312 aa 6 00124 7561 00 1324 stq sect_sw 001313 aa 014000 2360 03 1325 ldq bootload_mapping,du " Determine if bce IO 001314 aa 000000 7360 05 1326 qls 0,al 001315 aa 6 00125 7561 00 1327 stq bootload_sw 001316 aa 3 00001 2361 13 1328 ldq bb|quentry.coreadd_word,x3 001317 aa 000006 7360 00 1329 qls 36-quentry.type_shift isolate coreaddress 001320 aa 000006 7320 00 1330 qrs 36-quentry.type_shift 001321 aa 6 00116 7561 00 1331 stq coreadd 1332 001322 aa 6 00122 4501 00 1333 stz errcd 1334 1335 " WE MAY NEED TO SET LB->PVTE HERE ... 1336 1337 "AT THIS POINT WE KNOW THAT NO ERROR OCCURED. 1338 "AT THIS POINT WE KNOW WE WILL NOT HAVE TO PRINT ANY MESSAGES. 1339 "AT THIS POINT WE MAY BEGIN TO MODIFY DISK_SEG TO REFLECT AN I/O COMPLETION. 1340 1341 001323 aa 220001 3350 07 1342 lca chantab.active+chantab.inop+1,dl 001324 aa 0 00006 3551 00 1343 ansa ap|chantab.active_word Indicate channel is no longer active|inop 001325 aa 400000 2350 03 1344 lda =o400000,du 001326 aa 000000 2360 03 1345 ldq 0,du 001327 aa 000000 7730 10 1346 lrl 0,x0 X0=PDI -- turn off PDI-th bit 001330 0a 001230 6770 00 1347 eraq all_ones 001331 aa 2 00004 3551 00 1348 ansa bp|disktab.dev_busy 001332 aa 2 00005 3561 00 1349 ansq bp|disktab.dev_busy+1 1350 001333 aa 000401 3240 03 1351 lcx4 devtab.inop+1,du 001334 aa 3 00000 3441 12 1352 ansx4 bb|devtab.inop_word,x2 Clear the devtab.inop flag 1353 " Meter this i/o completion 1354 1355 001335 aa 6 00133 7241 00 1356 lxl4 io_type io_type in DL 001336 0a 001433 7240 14 1357 lxl4 opt_info_subs,x4 subscript opt_info 001337 aa 3 00000 3715 12 1358 epplb bb|0,x2 devtab pointer (pdi) 001340 4a 4 00020 6331 20 1359 rccl sys_info$clock_,* 001341 aa 0 00014 1771 00 1360 sbaq ap|chantab.connect_time 001342 aa 5 00004 0771 14 1361 adaq lb|opt_info.channel_wait,x4 sum channel wait 001343 aa 5 00004 7571 14 1362 staq lb|opt_info.channel_wait,x4 001344 4a 4 00020 6331 20 1363 rccl sys_info$clock_,* 001345 aa 3 00004 1771 13 1364 sbaq bb|quentry.time,x3 001346 aa 5 00006 0771 14 1365 adaq lb|opt_info.queue_wait,x4 sum queue wait 001347 aa 5 00006 7571 14 1366 staq lb|opt_info.queue_wait,x4 001350 aa 200001 3240 03 1367 lcx4 quentry.used+1,du mask out used bit 001351 aa 3 00001 3441 13 1368 ansx4 bb|quentry.used_word,x3 1369 001352 0a 000420 7070 00 1370 tsx7 add_free_q 1371 001353 0a 000622 7070 00 1372 tsx7 getwork 1373 001354 0a 000340 7070 00 1374 tsx7 unlock 1375 1376 1377 " Post this io completion. 1378 001355 aa 6 00116 3715 00 1379 epplb coreadd 001356 aa 6 00070 6515 00 1380 sprilb arglist+2 001357 aa 6 00122 3715 00 1381 epplb errcd 001360 aa 6 00072 6515 00 1382 sprilb arglist+4 001361 0a 001164 2370 00 1383 ldaq two_args_nd 001362 aa 6 00066 7571 00 1384 staq arglist 1385 001363 aa 6 00124 2341 00 1386 szn sect_sw Select posting means 001364 0a 001372 6040 00 1387 tmi sector_post 001365 aa 6 00066 3501 00 1388 eppap arglist 001366 4a 4 00030 3521 20 1389 short_call page$done 001367 aa 7 00036 6701 20 001370 aa 6 00030 3701 20 001371 aa 7 00042 7101 20 1390 return 1391 001372 1392 sector_post: 001372 aa 3 00000 2351 13 1393 lda bb|0,3 001373 aa 6 00125 2341 00 1394 szn bootload_sw 001374 0a 001402 6040 00 1395 tmi bootload_post 001375 aa 6 00066 3501 00 1396 eppap arglist 001376 4a 4 00032 3521 20 1397 short_call vtoc_interrupt$vtoc_interrupt 001377 aa 7 00036 6701 20 001400 aa 6 00030 3701 20 001401 aa 7 00042 7101 20 1398 return 1399 001402 1400 bootload_post: 001402 aa 6 00066 3501 00 1401 eppap arglist 001403 4a 4 00034 3521 20 1402 short_call bootload_disk_post$bootload_disk_post 001404 aa 7 00036 6701 20 001405 aa 6 00030 3701 20 001406 aa 7 00042 7101 20 1403 return 1404 1405 1406 " SLOW INT -- UNLOCK_THEN_SLOW -- bail out of hard case 1407 001407 1408 UNLOCK_THEN_SLOW: 001407 0a 000340 7070 00 1409 tsx7 unlock 1410 001410 aa 3 00112 0541 00 1411 SLOW_INT: aos bb|disk_data.bail_outs count a bail-out to PL1 001411 aa 6 00050 3501 20 1412 eppap int_arg_list,* get back arg list ptr 001412 4a 4 00036 3521 20 1413 short_call disk_control$disk_inter 001413 aa 7 00036 6701 20 001414 aa 6 00030 3701 20 001415 aa 7 00042 7101 20 1414 return 1415 001416 1416 NO_STATUS_TERM: 001416 aa 0 00036 0541 00 1417 aos ap|chantab.no_status_terminate; 001417 0a 000340 7070 00 1418 tsx7 unlock 001420 aa 7 00042 7101 20 1419 return 1420 1421 " Constants for subscript calculations 1422 1423 " Subscript for sys and opt info. Sys_info is DU, Opt_info is DL. 1424 " sys_info is segment offset of sys_info (i), opt_info is devtab 1425 " offset of opt_info (i). 001421 1426 sec_per_rec: 001421 aa 000000 000000 1427 zero 0,0 " not used 001422 aa 000000 000000 1428 zero 0,0 " not used 001423 aa 000000 000020 1429 zero 0,16 " 500 001424 aa 000000 000020 1430 zero 0,16 " 451 001425 aa 000000 000020 1431 zero 0,16 " 400 001426 aa 000000 000020 1432 zero 0,16 " 190 001427 aa 000000 000020 1433 zero 0,16 " 181 001430 aa 000000 000020 1434 zero 0,16 " 501 001431 aa 000000 000002 1435 zero 0,2 " 3380 001432 aa 000000 000002 1436 zero 0,2 " 3390 001433 1437 sys_info_subs: " (0:MAX_IO_TYPE) 001433 1438 opt_info_subs: 001433 aa 000116 000012 1439 zero disk_data.sys_info+sys_info_size*0,devtab.opt_info+opt_info_size*0 001434 aa 000122 000024 1440 zero disk_data.sys_info+sys_info_size*1,devtab.opt_info+opt_info_size*1 001435 aa 000126 000036 1441 zero disk_data.sys_info+sys_info_size*2,devtab.opt_info+opt_info_size*2 001436 aa 000132 000050 1442 zero disk_data.sys_info+sys_info_size*3,devtab.opt_info+opt_info_size*3 001437 aa 000136 000062 1443 zero disk_data.sys_info+sys_info_size*4,devtab.opt_info+opt_info_size*4 001440 aa 000142 000074 1444 zero disk_data.sys_info+sys_info_size*5,devtab.opt_info+opt_info_size*5 001441 aa 000146 000106 1445 zero disk_data.sys_info+sys_info_size*6,devtab.opt_info+opt_info_size*6 001442 aa 000152 000120 1446 zero disk_data.sys_info+sys_info_size*7,devtab.opt_info+opt_info_size*7 1447 1448 1449 " Constants for channel table and devtab subscripting. Current basis is 1450 " the limit on either is 64. 1451 001443 1452 chantab_subs: " straight subscript (1:64) 001443 1453 devtab_subs: " disktab.devtab subscript 001443 aa 000036 000000 1454 zero disktab.devtab+devtab_size*00,chantab_size*00 " @ 1 001444 aa 000156 000040 1455 zero disktab.devtab+devtab_size*01,chantab_size*01 001445 aa 000276 000100 1456 zero disktab.devtab+devtab_size*02,chantab_size*02 001446 aa 000416 000140 1457 zero disktab.devtab+devtab_size*03,chantab_size*03 001447 aa 000536 000200 1458 zero disktab.devtab+devtab_size*04,chantab_size*04 001450 aa 000656 000240 1459 zero disktab.devtab+devtab_size*05,chantab_size*05 001451 aa 000776 000300 1460 zero disktab.devtab+devtab_size*06,chantab_size*06 001452 aa 001116 000340 1461 zero disktab.devtab+devtab_size*07,chantab_size*07 001453 aa 001236 000400 1462 zero disktab.devtab+devtab_size*08,chantab_size*08 001454 aa 001356 000440 1463 zero disktab.devtab+devtab_size*09,chantab_size*09 001455 aa 001476 000500 1464 zero disktab.devtab+devtab_size*10,chantab_size*10 001456 aa 001616 000540 1465 zero disktab.devtab+devtab_size*11,chantab_size*11 001457 aa 001736 000600 1466 zero disktab.devtab+devtab_size*12,chantab_size*12 001460 aa 002056 000640 1467 zero disktab.devtab+devtab_size*13,chantab_size*13 001461 aa 002176 000700 1468 zero disktab.devtab+devtab_size*14,chantab_size*14 001462 aa 002316 000740 1469 zero disktab.devtab+devtab_size*15,chantab_size*15 001463 aa 002436 001000 1470 zero disktab.devtab+devtab_size*16,chantab_size*16 001464 aa 002556 001040 1471 zero disktab.devtab+devtab_size*17,chantab_size*17 001465 aa 002676 001100 1472 zero disktab.devtab+devtab_size*18,chantab_size*18 001466 aa 003016 001140 1473 zero disktab.devtab+devtab_size*19,chantab_size*19 001467 aa 003136 001200 1474 zero disktab.devtab+devtab_size*20,chantab_size*20 001470 aa 003256 001240 1475 zero disktab.devtab+devtab_size*21,chantab_size*21 001471 aa 003376 001300 1476 zero disktab.devtab+devtab_size*22,chantab_size*22 001472 aa 003516 001340 1477 zero disktab.devtab+devtab_size*23,chantab_size*23 001473 aa 003636 001400 1478 zero disktab.devtab+devtab_size*24,chantab_size*24 001474 aa 003756 001440 1479 zero disktab.devtab+devtab_size*25,chantab_size*25 001475 aa 004076 001500 1480 zero disktab.devtab+devtab_size*26,chantab_size*26 001476 aa 004216 001540 1481 zero disktab.devtab+devtab_size*27,chantab_size*27 001477 aa 004336 001600 1482 zero disktab.devtab+devtab_size*28,chantab_size*28 001500 aa 004456 001640 1483 zero disktab.devtab+devtab_size*29,chantab_size*29 001501 aa 004576 001700 1484 zero disktab.devtab+devtab_size*30,chantab_size*30 001502 aa 004716 001740 1485 zero disktab.devtab+devtab_size*31,chantab_size*31 001503 aa 005036 002000 1486 zero disktab.devtab+devtab_size*32,chantab_size*32 001504 aa 005156 002040 1487 zero disktab.devtab+devtab_size*33,chantab_size*33 001505 aa 005276 002100 1488 zero disktab.devtab+devtab_size*34,chantab_size*34 001506 aa 005416 002140 1489 zero disktab.devtab+devtab_size*35,chantab_size*35 001507 aa 005536 002200 1490 zero disktab.devtab+devtab_size*36,chantab_size*36 001510 aa 005656 002240 1491 zero disktab.devtab+devtab_size*37,chantab_size*37 001511 aa 005776 002300 1492 zero disktab.devtab+devtab_size*38,chantab_size*38 001512 aa 006116 002340 1493 zero disktab.devtab+devtab_size*39,chantab_size*39 001513 aa 006236 002400 1494 zero disktab.devtab+devtab_size*40,chantab_size*40 001514 aa 006356 002440 1495 zero disktab.devtab+devtab_size*41,chantab_size*41 001515 aa 006476 002500 1496 zero disktab.devtab+devtab_size*42,chantab_size*42 001516 aa 006616 002540 1497 zero disktab.devtab+devtab_size*43,chantab_size*43 001517 aa 006736 002600 1498 zero disktab.devtab+devtab_size*44,chantab_size*44 001520 aa 007056 002640 1499 zero disktab.devtab+devtab_size*45,chantab_size*45 001521 aa 007176 002700 1500 zero disktab.devtab+devtab_size*46,chantab_size*46 001522 aa 007316 002740 1501 zero disktab.devtab+devtab_size*47,chantab_size*47 001523 aa 007436 003000 1502 zero disktab.devtab+devtab_size*48,chantab_size*48 001524 aa 007556 003040 1503 zero disktab.devtab+devtab_size*49,chantab_size*49 001525 aa 007676 003100 1504 zero disktab.devtab+devtab_size*50,chantab_size*50 001526 aa 010016 003140 1505 zero disktab.devtab+devtab_size*51,chantab_size*51 001527 aa 010136 003200 1506 zero disktab.devtab+devtab_size*52,chantab_size*52 001530 aa 010256 003240 1507 zero disktab.devtab+devtab_size*53,chantab_size*53 001531 aa 010376 003300 1508 zero disktab.devtab+devtab_size*54,chantab_size*54 001532 aa 010516 003340 1509 zero disktab.devtab+devtab_size*55,chantab_size*55 001533 aa 010636 003400 1510 zero disktab.devtab+devtab_size*56,chantab_size*56 001534 aa 010756 003440 1511 zero disktab.devtab+devtab_size*57,chantab_size*57 001535 aa 011076 003500 1512 zero disktab.devtab+devtab_size*58,chantab_size*58 001536 aa 011216 003540 1513 zero disktab.devtab+devtab_size*59,chantab_size*59 001537 aa 011336 003600 1514 zero disktab.devtab+devtab_size*60,chantab_size*60 001540 aa 011456 003640 1515 zero disktab.devtab+devtab_size*61,chantab_size*61 001541 aa 011576 003700 1516 zero disktab.devtab+devtab_size*62,chantab_size*62 001542 aa 011716 003740 1517 zero disktab.devtab+devtab_size*63,chantab_size*63 001543 aa 012036 004000 1518 zero disktab.devtab+devtab_size*64,chantab_size*64 1519 " 1520 include device_error 1-1 "BEGIN INCLUDE FILE device_error.incl.alm 1-2 1-3 "Last modified 1/8/76 1-4 " 1-5 " HISTORY COMMENTS: 1-6 " 1) change(88-02-23,Farley), approve(88-02-23,MCR7759), 1-7 " audit(88-02-24,Fawcett), install(88-03-01,12.2-1029): 1-8 " Added all_paths_bad flag. 1-9 " END HISTORY COMMENTS 1-10 000100 1-11 bool errflags.all_paths_bad,000100 " DL 000040 1-12 bool errflags.memory_unusable,000040 " DL 000020 1-13 bool errflags.device_inoperative,000020 " DL 000010 1-14 bool errflags.reassign_address,000010 " DL 000004 1-15 bool errflags.seg_unusable,000004 " DL 000002 1-16 bool errflags.please_repeat_call,000002 " DL 000001 1-17 bool errflags.fatal_error,000001 " DL 1-18 1-19 "END INCLUDE FILE device_error.incl.alm 1521 include disk_error_interp 2-1 2-2 2-3 "BEGIN INCLUDE FILE disk_error_interp.incl.alm 2-4 2-5 "Created 06/30/77 2159.2 edt Thu by convert_include_file, 2-6 " Version of 03/21/77 1355.7 edt Mon. 2-7 2-8 "Made from >user_dir_dir>Multics>Mullen>alm_disk_dim>disk_error_interp.incl.pl1, 2-9 " modified 06/30/77 2159.2 edt Thu 2-10 2-11 " 2-12 " Structure disk_error_data 2-13 " 000026 2-14 equ disk_error_data_size,22 2-15 000000 2-16 equ disk_error_data.interp,0 "UPPER 000000 2-17 equ disk_error_data.namep,0 "LOWER 2-18 2-19 " 2-20 " Structure disk_status_interp_array 2-21 " 000310 2-22 equ disk_status_interp_array_size,200 2-23 2-24 2-25 " 2-26 " Structure dei 2-27 " 000002 2-28 equ dei_size,2 2-29 000000 2-30 equ dei.bitson_word,0 000036 2-31 equ dei.bitson_shift,30 000077 2-32 bool dei.bitson_mask,000077 000000 2-33 equ dei.bitmask_word,0 000030 2-34 equ dei.bitmask_shift,24 000077 2-35 bool dei.bitmask_mask,000077 000000 2-36 equ dei.max_retries_word,0 000022 2-37 equ dei.max_retries_shift,18 000077 2-38 bool dei.max_retries_mask,000077 000000 2-39 equ dei.reseek_word,0 400000 2-40 bool dei.reseek,400000 "DL 000000 2-41 equ dei.rsr_word,0 200000 2-42 bool dei.rsr,200000 "DL 000000 2-43 equ dei.bad_addr_word,0 100000 2-44 bool dei.bad_addr,100000 "DL 000000 2-45 equ dei.bad_dev_word,0 040000 2-46 bool dei.bad_dev,040000 "DL 000000 2-47 equ dei.bad_path_word,0 020000 2-48 bool dei.bad_path,020000 "DL 2-49 000001 2-50 equ dei.namep,1 "UPPER 2-51 2-52 " 2-53 " Structure disk_status_descrip 2-54 " 000000 2-55 equ disk_status_descrip.lth_word,0 000033 2-56 equ disk_status_descrip.lth_shift,27 000777 2-57 bool disk_status_descrip.lth_mask,000777 2-58 000000 2-59 equ disk_status_descrip.chr,0 2-60 2-61 "END INCLUDE FILE disk_error_interp.incl.alm 1522 include io_manager_dcls 3-1 3-2 3-3 "BEGIN INCLUDE FILE io_manager_dcls.incl.alm 3-4 3-5 3-6 "Created 04/08/82 1122.9 est Thu by convert_include_file, 3-7 " Version of 12/01/81 1540.3 est Tue. 3-8 3-9 "Made from >nbdd>Multics>Hornig>install>io>io_manager_dcls.incl.pl1, 3-10 " modified 03/24/82 1401.5 est Wed 3-11 3-12 " 3-13 " Structure io_manager_arg 3-14 " 000012 3-15 equ io_manager_arg_size,10 3-16 3-17 000000 3-18 equ io_manager_arg.chx,0 000001 3-19 equ io_manager_arg.bound,1 000002 3-20 equ io_manager_arg.pcw,2 000003 3-21 equ io_manager_arg.listx,3 000004 3-22 equ io_manager_arg.ptp,4 000006 3-23 equ io_manager_arg.listp,6 000010 3-24 equ io_manager_arg.dcw_pair_ptr,8 3-25 3-26 "END INCLUDE FILE io_manager_dcls.incl.alm 1523 include iom_ctl_words 4-1 4-2 "Include file iom_ctl_words.incl.alm 4-3 "Made from three convert_include_file files 4-4 "Bernard Greenberg 6/1/78 4-5 4-6 4-7 4-8 "BEGIN INCLUDE FILE iom_pcw.incl.alm 4-9 4-10 "Created 06/30/77 2159.1 edt Thu by convert_include_file, 4-11 " Version of 03/21/77 1355.7 edt Mon. 4-12 4-13 "Made from >user_dir_dir>Multics>Mullen>alm_disk_dim>iom_pcw.incl.pl1, 4-14 " modified 06/30/77 2159.1 edt Thu 4-15 4-16 " 4-17 " Structure pcw 4-18 " 000002 4-19 equ pcw_size,2 4-20 000000 4-21 equ pcw.command_word,0 000036 4-22 equ pcw.command_shift,30 000077 4-23 bool pcw.command_mask,000077 000000 4-24 equ pcw.device_word,0 000030 4-25 equ pcw.device_shift,24 000077 4-26 bool pcw.device_mask,000077 000000 4-27 equ pcw.ext_word,0 000022 4-28 equ pcw.ext_shift,18 000077 4-29 bool pcw.ext_mask,000077 000000 4-30 equ pcw.code_word,0 000017 4-31 equ pcw.code_shift,15 000007 4-32 bool pcw.code_mask,000007 000000 4-33 equ pcw.mask_word,0 040000 4-34 bool pcw.mask,040000 "DL 000000 4-35 equ pcw.control_word,0 000014 4-36 equ pcw.control_shift,12 000003 4-37 bool pcw.control_mask,000003 000000 4-38 equ pcw.chan_cmd_word,0 000006 4-39 equ pcw.chan_cmd_shift,6 000077 4-40 bool pcw.chan_cmd_mask,000077 000000 4-41 equ pcw.count_word,0 000000 4-42 equ pcw.count_shift,0 000077 4-43 bool pcw.count_mask,000077 4-44 000001 4-45 equ pcw.mbz1_word,1 000041 4-46 equ pcw.mbz1_shift,33 000007 4-47 bool pcw.mbz1_mask,000007 000001 4-48 equ pcw.channel_word,1 000033 4-49 equ pcw.channel_shift,27 000077 4-50 bool pcw.channel_mask,000077 000001 4-51 equ pcw.mbz2_word,1 000000 4-52 equ pcw.mbz2_shift,0 4-53 4-54 " 4-55 " Structure idcw 4-56 " 000000 4-57 equ idcw.command_word,0 000036 4-58 equ idcw.command_shift,30 000077 4-59 bool idcw.command_mask,000077 000000 4-60 equ idcw.device_word,0 000030 4-61 equ idcw.device_shift,24 000077 4-62 bool idcw.device_mask,000077 000000 4-63 equ idcw.ext_word,0 000022 4-64 equ idcw.ext_shift,18 000077 4-65 bool idcw.ext_mask,000077 000000 4-66 equ idcw.code_word,0 000017 4-67 equ idcw.code_shift,15 000007 4-68 bool idcw.code_mask,000007 000000 4-69 equ idcw.ext_ctl_word,0 040000 4-70 bool idcw.ext_ctl,040000 "DL 000000 4-71 equ idcw.control_word,0 000014 4-72 equ idcw.control_shift,12 000003 4-73 bool idcw.control_mask,000003 000000 4-74 equ idcw.chan_cmd_word,0 000006 4-75 equ idcw.chan_cmd_shift,6 000077 4-76 bool idcw.chan_cmd_mask,000077 000000 4-77 equ idcw.count_word,0 000000 4-78 equ idcw.count_shift,0 000077 4-79 bool idcw.count_mask,000077 4-80 4-81 "END INCLUDE FILE iom_pcw.incl.alm 4-82 4-83 4-84 4-85 "BEGIN INCLUDE FILE iom_dcw.incl.alm 4-86 4-87 "Created 06/30/77 2159.2 edt Thu by convert_include_file, 4-88 " Version of 03/21/77 1355.7 edt Mon. 4-89 4-90 "Made from >user_dir_dir>Multics>Mullen>alm_disk_dim>iom_dcw.incl.pl1, 4-91 " modified 06/30/77 2159.2 edt Thu 4-92 4-93 " 4-94 " Structure dcw 4-95 " 000000 4-96 equ dcw.address,0 "UPPER 000000 4-97 equ dcw.char_pos_word,0 000017 4-98 equ dcw.char_pos_shift,15 000007 4-99 bool dcw.char_pos_mask,000007 000000 4-100 equ dcw.m64_word,0 040000 4-101 bool dcw.m64,040000 "DL 000000 4-102 equ dcw.type_word,0 000014 4-103 equ dcw.type_shift,12 000003 4-104 bool dcw.type_mask,000003 000000 4-105 equ dcw.tally_word,0 000000 4-106 equ dcw.tally_shift,0 007777 4-107 bool dcw.tally_mask,007777 4-108 4-109 " 4-110 " Structure tdcw 4-111 " 000000 4-112 equ tdcw.address,0 "UPPER 000000 4-113 equ tdcw.mbz1_word,0 000016 4-114 equ tdcw.mbz1_shift,14 000017 4-115 bool tdcw.mbz1_mask,000017 000000 4-116 equ tdcw.type_word,0 000014 4-117 equ tdcw.type_shift,12 000003 4-118 bool tdcw.type_mask,000003 000000 4-119 equ tdcw.mbz2_word,0 000003 4-120 equ tdcw.mbz2_shift,3 000777 4-121 bool tdcw.mbz2_mask,000777 000000 4-122 equ tdcw.ec_word,0 000004 4-123 bool tdcw.ec,000004 "DL 000000 4-124 equ tdcw.res_word,0 000002 4-125 bool tdcw.res,000002 "DL 000000 4-126 equ tdcw.rel_word,0 000001 4-127 bool tdcw.rel,000001 "DL 4-128 4-129 "END INCLUDE FILE iom_dcw.incl.alm 4-130 4-131 4-132 4-133 "BEGIN INCLUDE FILE iom_stat.incl.alm 4-134 4-135 "Created 06/30/77 2159.2 edt Thu by convert_include_file, 4-136 " Version of 03/21/77 1355.7 edt Mon. 4-137 4-138 "Made from >user_dir_dir>Multics>Mullen>alm_disk_dim>iom_stat.incl.pl1, 4-139 " modified 06/30/77 2159.2 edt Thu 4-140 4-141 " 4-142 " Structure status 4-143 " 000002 4-144 equ status_size,2 4-145 000000 4-146 equ status.t_word,0 400000 4-147 bool status.t,400000 "DU 000000 4-148 equ status.power_word,0 200000 4-149 bool status.power,200000 "DU 000000 4-150 equ status.major_word,0 000036 4-151 equ status.major_shift,30 000017 4-152 bool status.major_mask,000017 000000 4-153 equ status.sub_word,0 000030 4-154 equ status.sub_shift,24 000077 4-155 bool status.sub_mask,000077 000000 4-156 equ status.eo_word,0 000040 4-157 bool status.eo,000040 "DU 000000 4-158 equ status.marker_word,0 000020 4-159 bool status.marker,000020 "DU 000000 4-160 equ status.soft_word,0 000024 4-161 equ status.soft_shift,20 000003 4-162 bool status.soft_mask,000003 000000 4-163 equ status.initiate_word,0 000002 4-164 bool status.initiate,000002 "DU 000000 4-165 equ status.abort_word,0 000001 4-166 bool status.abort,000001 "DU 000000 4-167 equ status.channel_stat_word,0 000017 4-168 equ status.channel_stat_shift,15 000007 4-169 bool status.channel_stat_mask,000007 000000 4-170 equ status.central_stat_word,0 000014 4-171 equ status.central_stat_shift,12 000007 4-172 bool status.central_stat_mask,000007 000000 4-173 equ status.mbz_word,0 000006 4-174 equ status.mbz_shift,6 000077 4-175 bool status.mbz_mask,000077 000000 4-176 equ status.rcount_word,0 000000 4-177 equ status.rcount_shift,0 000077 4-178 bool status.rcount_mask,000077 4-179 000001 4-180 equ status.address,1 "UPPER 000001 4-181 equ status.char_pos_word,1 000017 4-182 equ status.char_pos_shift,15 000007 4-183 bool status.char_pos_mask,000007 000001 4-184 equ status.r_word,1 040000 4-185 bool status.r,040000 "DL 000001 4-186 equ status.type_word,1 000014 4-187 equ status.type_shift,12 000003 4-188 bool status.type_mask,000003 000001 4-189 equ status.tally_word,1 000000 4-190 equ status.tally_shift,0 007777 4-191 bool status.tally_mask,007777 4-192 4-193 " 4-194 " Structure faultword 4-195 " 000000 4-196 equ faultword.mbz1_word,0 000033 4-197 equ faultword.mbz1_shift,27 000777 4-198 bool faultword.mbz1_mask,000777 000000 4-199 equ faultword.channel_word,0 000022 4-200 equ faultword.channel_shift,18 000777 4-201 bool faultword.channel_mask,000777 000000 4-202 equ faultword.serv_req_word,0 000015 4-203 equ faultword.serv_req_shift,13 000037 4-204 bool faultword.serv_req_mask,000037 000000 4-205 equ faultword.mbz2_word,0 000012 4-206 equ faultword.mbz2_shift,10 000007 4-207 bool faultword.mbz2_mask,000007 000000 4-208 equ faultword.cntrlr_fault_word,0 000006 4-209 equ faultword.cntrlr_fault_shift,6 000017 4-210 bool faultword.cntrlr_fault_mask,000017 000000 4-211 equ faultword.io_fault_word,0 000000 4-212 equ faultword.io_fault_shift,0 000077 4-213 bool faultword.io_fault_mask,000077 4-214 4-215 " 4-216 " Structure special_status 4-217 " 000000 4-218 equ special_status.t_word,0 400000 4-219 bool special_status.t,400000 "DU 000000 4-220 equ special_status.channel_word,0 000033 4-221 equ special_status.channel_shift,27 000377 4-222 bool special_status.channel_mask,000377 000000 4-223 equ special_status.device_word,0 000022 4-224 equ special_status.device_shift,18 000077 4-225 bool special_status.device_mask,000077 000000 4-226 equ special_status.byte2_word,0 000011 4-227 equ special_status.byte2_shift,9 000377 4-228 bool special_status.byte2_mask,000377 000000 4-229 equ special_status.byte3_word,0 000000 4-230 equ special_status.byte3_shift,0 000377 4-231 bool special_status.byte3_mask,000377 4-232 4-233 "END INCLUDE FILE iom_stat.incl.alm 1524 1525 " sectors per record must be used in seek calculations and are indexed by the pvte dev_type 1526 1527 " 1528 include dskdcl 5-1 5-2 5-3 "BEGIN INCLUDE FILE dskdcl.incl.alm 5-4 5-5 5-6 " HISTORY COMMENTS: 5-7 " 1) change(85-09-11,Fawcett), approve(85-09-11,MCR6979), 5-8 " audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033): 5-9 " Support for FIPS dev 0. 5-10 " 2) change(88-05-10,Farley), approve(88-06-03,MCR7906), 5-11 " audit(88-08-03,Fawcett), install(88-08-08,MR12.2-1080): 5-12 " Added reconnect_announce_time to chantab to allow announcement of 5-13 " reconnects at a throttled rate. Otherwise only report them in the 5-14 " syserr log. 5-15 " END HISTORY COMMENTS 5-16 5-17 5-18 "Created 05/12/88 1328.1 mst Thu by convert_include_file, 5-19 " Version of 01/09/85 0754.4 mst Wed. 5-20 5-21 "Made from >user_dir_dir>Multics>Farley>install_dir>dc>dskdcl.incl.pl1, 5-22 " modified 05/12/88 1321.2 mst Thu 5-23 5-24 " 5-25 " Structure disk_data 5-26 " 5-27 000000 5-28 equ disk_data.subsystems,0 5-29 000001 5-30 equ disk_data.free_offset,1 " UPPER 5-31 000002 5-32 equ disk_data.status_mask,2 000003 5-33 equ disk_data.lock,3 000004 5-34 equ disk_data.free_q,4 " LEVEL 2 5-35 000010 5-36 equ disk_data.free_q_size,8 000011 5-37 equ disk_data.array,9 " LEVEL 2 5-38 000011 5-39 equ disk_data.offset,9 " UPPER 000011 5-40 equ disk_data.mbz,9 " LOWER 5-41 000012 5-42 equ disk_data.name,10 000111 5-43 equ disk_data.stagnate_time,73 000112 5-44 equ disk_data.bail_outs,74 000114 5-45 equ disk_data.max_depth_reset_time,76 " DOUBLE 000116 5-46 equ disk_data.sys_info,78 " LEVEL 2 5-47 000152 5-48 equ disk_data.free_q_entries,106 " LEVEL 2 5-49 5-50 5-51 " 5-52 " Structure sys_info 5-53 " 000004 5-54 equ sys_info_size,4 5-55 000000 5-56 equ sys_info.depth,0 000001 5-57 equ sys_info.max_depth,1 000002 5-58 equ sys_info.fraction,2 5-59 000003 5-60 equ sys_info.depth_map,3 " UPPER 5-61 000040 5-62 equ dskdcl_chans_per_subsys,32 " MANIFEST 000005 5-63 equ dskdcl_chans_per_subsys_shift,5 " MANIFEST 5-64 5-65 " 5-66 " Structure disktab 5-67 " 000000 5-68 equ disktab.lock,0 000001 5-69 equ disktab.nchan,1 5-70 000002 5-71 equ disktab.first_dev,2 " UPPER 000002 5-72 equ disktab.last_dev,2 " LOWER 5-73 000003 5-74 equ disktab.channels_online,3 000004 5-75 equ disktab.dev_busy,4 " DOUBLE 000006 5-76 equ disktab.dev_queued,6 " DOUBLE 000010 5-77 equ disktab.abs_mem_addr,8 5-78 000011 5-79 equ disktab.channels,9 " UPPER 000011 5-80 equ disktab.dev_index,9 " LOWER 5-81 000012 5-82 equ disktab.errors,10 000013 5-83 equ disktab.ferrors,11 000014 5-84 equ disktab.edac_errors,12 000016 5-85 equ disktab.call_lock_meters,14 " LEVEL 2 5-86 000022 5-87 equ disktab.int_lock_meters,18 " LEVEL 2 5-88 000026 5-89 equ disktab.alloc_wait_meters,22 " LEVEL 2 5-90 000032 5-91 equ disktab.run_lock_meters,26 " LEVEL 2 5-92 000036 5-93 equ disktab.devtab,30 " LEVEL 2 5-94 5-95 5-96 " 5-97 " Structure disk_channel_table 5-98 " 5-99 5-100 " 5-101 " Structure quentry 5-102 " 000006 5-103 equ quentry_size,6 5-104 000000 5-105 equ quentry.next,0 " UPPER 000000 5-106 equ quentry.prev,0 " LOWER 5-107 000001 5-108 equ quentry.intrpt_word,1 400000 5-109 bool quentry.intrpt,400000 " DU 000001 5-110 equ quentry.used_word,1 200000 5-111 bool quentry.used,200000 " DU 000001 5-112 equ quentry.type_word,1 000036 5-113 equ quentry.type_shift,30 000017 5-114 bool quentry.type_mask,000017 000001 5-115 equ quentry.coreadd_word,1 000000 5-116 equ quentry.coreadd_shift,0 5-117 000002 5-118 equ quentry.pvtx_word,2 000034 5-119 equ quentry.pvtx_shift,28 000377 5-120 bool quentry.pvtx_mask,000377 000002 5-121 equ quentry.pdi_word,2 000026 5-122 equ quentry.pdi_shift,22 000077 5-123 bool quentry.pdi_mask,000077 000002 5-124 equ quentry.dev_word,2 000020 5-125 equ quentry.dev_shift,16 000077 5-126 bool quentry.dev_mask,000077 000002 5-127 equ quentry.cylinder_word,2 000000 5-128 equ quentry.cylinder_shift,0 003777 5-129 bool quentry.cylinder_mask,003777 5-130 000003 5-131 equ quentry.n_sectors_word,3 000036 5-132 equ quentry.n_sectors_shift,30 000077 5-133 bool quentry.n_sectors_mask,000077 000003 5-134 equ quentry.sector_word,3 000000 5-135 equ quentry.sector_shift,0 5-136 000004 5-137 equ quentry.time,4 " DOUBLE 5-138 5-139 " 5-140 " Structure chantab 5-141 " 000040 5-142 equ chantab_size,32 5-143 000000 5-144 equ chantab.chx,0 000001 5-145 equ chantab.ioi_ctx,1 000002 5-146 equ chantab.statusp,2 000004 5-147 equ chantab.chanid,4 " DOUBLE 5-148 000006 5-149 equ chantab.in_use_word,6 400000 5-150 bool chantab.in_use,400000 " DL 000006 5-151 equ chantab.active_word,6 200000 5-152 bool chantab.active,200000 " DL 000006 5-153 equ chantab.rsr_word,6 100000 5-154 bool chantab.rsr,100000 " DL 000006 5-155 equ chantab.ioi_use_word,6 040000 5-156 bool chantab.ioi_use,040000 " DL 000006 5-157 equ chantab.inop_word,6 020000 5-158 bool chantab.inop,020000 " DL 000006 5-159 equ chantab.broken_word,6 010000 5-160 bool chantab.broken,010000 " DL 000006 5-161 equ chantab.action_code_word,6 000012 5-162 equ chantab.action_code_shift,10 000003 5-163 bool chantab.action_code_mask,000003 5-164 000007 5-165 equ chantab.qrp,7 " UPPER 000007 5-166 equ chantab.command_word,7 000011 5-167 equ chantab.command_shift,9 000077 5-168 bool chantab.command_mask,000077 000007 5-169 equ chantab.erct_word,7 000000 5-170 equ chantab.erct_shift,0 000777 5-171 bool chantab.erct_mask,000777 5-172 000010 5-173 equ chantab.select_data,8 " LEVEL 2 5-174 000030 5-175 equ chantab.limit_shift,24 007777 5-176 bool chantab.limit_mask,007777 000025 5-177 equ chantab.mbz_shift,21 000007 5-178 bool chantab.mbz_mask,000007 000000 5-179 equ chantab.sector_shift,0 5-180 000012 5-181 equ chantab.reconnect_announce_time,10 " DOUBLE 000014 5-182 equ chantab.connect_time,12 " DOUBLE 000016 5-183 equ chantab.connects,14 5-184 000017 5-185 equ chantab.detailed_status_word,15 000034 5-186 equ chantab.detailed_status_shift,28 000377 5-187 bool chantab.detailed_status_mask,000377 5-188 000023 5-189 equ chantab.rstdcw,19 000024 5-190 equ chantab.scdcw,20 000025 5-191 equ chantab.sddcw,21 000026 5-192 equ chantab.dcdcw,22 000027 5-193 equ chantab.dddcw,23 000030 5-194 equ chantab.dscdcw,24 000031 5-195 equ chantab.dsddcw,25 000032 5-196 equ chantab.rssdcw,26 000033 5-197 equ chantab.status,27 000034 5-198 equ chantab.no_io_terminate,28 000035 5-199 equ chantab.terminate_not_active,29 000036 5-200 equ chantab.no_status_terminate,30 000037 5-201 equ chantab.status_from_run,31 5-202 5-203 " 5-204 " Structure qht 5-205 " 000004 5-206 equ qht_size,4 5-207 000000 5-208 equ qht.sum,0 000001 5-209 equ qht.count,1 5-210 000002 5-211 equ qht.max_depth,2 " UPPER 000002 5-212 equ qht.depth,2 " LOWER 5-213 000003 5-214 equ qht.head,3 " UPPER 000003 5-215 equ qht.tail,3 " LOWER 5-216 5-217 " 5-218 " Structure devtab 5-219 " 000120 5-220 equ devtab_size,80 5-221 000000 5-222 equ devtab.pvtx_word,0 000033 5-223 equ devtab.pvtx_shift,27 000777 5-224 bool devtab.pvtx_mask,000777 000000 5-225 equ devtab.inop_word,0 000400 5-226 bool devtab.inop,000400 " DU 000000 5-227 equ devtab.was_broken_word,0 000200 5-228 bool devtab.was_broken,000200 " DU 000000 5-229 equ devtab.broken_word,0 000100 5-230 bool devtab.broken,000100 " DU 000000 5-231 equ devtab.abandoned_word,0 000040 5-232 bool devtab.abandoned,000040 " DU 000000 5-233 equ devtab.forward_word,0 000020 5-234 bool devtab.forward,000020 " DU 000000 5-235 equ devtab.buddy_word,0 000006 5-236 equ devtab.buddy_shift,6 000077 5-237 bool devtab.buddy_mask,000077 000000 5-238 equ devtab.pdi_word,0 000000 5-239 equ devtab.pdi_shift,0 000077 5-240 bool devtab.pdi_mask,000077 5-241 000001 5-242 equ devtab.cylinder,1 000002 5-243 equ devtab.comb,2 000004 5-244 equ devtab.time_inop,4 " DOUBLE 000006 5-245 equ devtab.wq,6 " LEVEL 2 5-246 000012 5-247 equ devtab.opt_info,10 " LEVEL 2 5-248 5-249 5-250 " 5-251 " Structure opt_info 5-252 " 000012 5-253 equ opt_info_size,10 5-254 000000 5-255 equ opt_info.multiplier,0 000001 5-256 equ opt_info.slope,1 000002 5-257 equ opt_info.intercept,2 5-258 000003 5-259 equ opt_info.sys_info,3 " UPPER 000003 5-260 equ opt_info.depth,3 " LOWER 5-261 000004 5-262 equ opt_info.channel_wait,4 " DOUBLE 000006 5-263 equ opt_info.queue_wait,6 " DOUBLE 5-264 000010 5-265 equ opt_info.seek_sum_word,8 000000 5-266 equ opt_info.seek_sum_shift,0 5-267 000011 5-268 equ opt_info.seek_count_word,9 000000 5-269 equ opt_info.seek_count_shift,0 5-270 5-271 " 5-272 " Structure pvtdi 5-273 " 000030 5-274 equ pvtdi.sx_shift,24 007777 5-275 bool pvtdi.sx_mask,007777 000014 5-276 equ pvtdi.usable_sect_per_cyl_shift,12 007777 5-277 bool pvtdi.usable_sect_per_cyl_mask,007777 000000 5-278 equ pvtdi.unused_sect_per_cyl_shift,0 007777 5-279 bool pvtdi.unused_sect_per_cyl_mask,007777 5-280 5-281 " 5-282 " Structure disk_lock_meters 5-283 " 000004 5-284 equ disk_lock_meters_size,4 5-285 5-286 000000 5-287 equ disk_lock_meters.count,0 000001 5-288 equ disk_lock_meters.waits,1 000002 5-289 equ disk_lock_meters.wait_time,2 " DOUBLE 5-290 000001 5-291 equ RST_LISTX,1 " MANIFEST 000002 5-292 equ SC_LISTX,2 " MANIFEST 000006 5-293 equ DSC_LISTX,6 " MANIFEST 000010 5-294 equ RSS_LISTX,8 " MANIFEST 000000 5-295 equ PAGE_READ,0 " MANIFEST 000001 5-296 equ PAGE_WRITE,1 " MANIFEST 000002 5-297 equ VTOC_READ,2 " MANIFEST 000003 5-298 equ VTOC_WRITE,3 " MANIFEST 000004 5-299 equ TEST,4 " MANIFEST 000005 5-300 equ BOOTLOAD_READ,5 " MANIFEST 000006 5-301 equ BOOTLOAD_WRITE,6 " MANIFEST 000006 5-302 equ MAX_IO_TYPE,6 " MANIFEST 244000 5-303 bool write_mapping,244000 " DU MANIFEST 174000 5-304 bool sector_mapping,174000 " DU MANIFEST 014000 5-305 bool bootload_mapping,014000 " DU MANIFEST 5-306 5-307 "END INCLUDE FILE dskdcl.incl.alm 1529 " 1530 include pvte 6-1 6-2 6-3 "BEGIN INCLUDE FILE pvte.incl.alm 6-4 6-5 6-6 "Created 05/29/86 1617.9 mst Thu by convert_include_file, 6-7 " Version of 04/10/86 1622.3 mst Thu. 6-8 6-9 "Made from >dumps>old>dipper>svs5>incl>pvte.incl.pl1, 6-10 " modified 05/29/86 1617.8 mst Thu 6-11 6-12 6-13 " HISTORY COMMENTS: 6-14 " 1) change(86-04-11,Fawcett), approve(86-04-11,MCR7383), 6-15 " audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 6-16 " Add the support for subvolumes 6-17 " 2) change(86-04-11,Lippard), approve(86-04-11,MCR7309), 6-18 " audit(86-05-29,GDixon), install(86-07-18,MR12.0-1098): 6-19 " Add root_lv flag to mount RLVs that do not have hardcore partitions. 6-20 " 3) change(88-05-27,GWMay), approve(88-05-27,MCR7883), 6-21 " audit(88-06-14,Beattie), install(88-07-19,MR12.2-1061): 6-22 " Added inconsistent_dbm bit for determining the status of volume 6-23 " dumper bit maps. 6-24 " END HISTORY COMMENTS 6-25 6-26 6-27 " 6-28 " Structure pvt_array 6-29 " 6-30 6-31 " 6-32 " Structure pvte 6-33 " 000034 6-34 equ pvte_size,28 6-35 6-36 000000 6-37 equ pvte.pvid,0 000001 6-38 equ pvte.lvid,1 6-39 000002 6-40 equ pvte.dmpr_in_use_word,2 400000 6-41 bool pvte.dmpr_in_use,400000 " DU 000002 6-42 equ pvte.is_sv_word,2 040000 6-43 bool pvte.is_sv,040000 " DU 000002 6-44 equ pvte.root_lv_word,2 020000 6-45 bool pvte.root_lv,020000 " DU 000002 6-46 equ pvte.removable_pack_word,2 010000 6-47 bool pvte.removable_pack,010000 " DU 000002 6-48 equ pvte.inconsistent_dbm_word,2 004000 6-49 bool pvte.inconsistent_dbm,004000 " DU 000002 6-50 equ pvte.brother_pvtx_word,2 000022 6-51 equ pvte.brother_pvtx_shift,18 000777 6-52 bool pvte.brother_pvtx_mask,000777 000002 6-53 equ pvte.skip_queue_count,2 " LOWER 6-54 000003 6-55 equ pvte.devname,3 6-56 000004 6-57 equ pvte.device_type_word,4 000033 6-58 equ pvte.device_type_shift,27 000777 6-59 bool pvte.device_type_mask,000777 000004 6-60 equ pvte.logical_area_number_word,4 000022 6-61 equ pvte.logical_area_number_shift,18 000777 6-62 bool pvte.logical_area_number_mask,000777 000004 6-63 equ pvte.used_word,4 400000 6-64 bool pvte.used,400000 " DL 000004 6-65 equ pvte.storage_system_word,4 200000 6-66 bool pvte.storage_system,200000 " DL 000004 6-67 equ pvte.permanent_word,4 100000 6-68 bool pvte.permanent,100000 " DL 000004 6-69 equ pvte.testing_word,4 040000 6-70 bool pvte.testing,040000 " DL 000004 6-71 equ pvte.being_mounted_word,4 020000 6-72 bool pvte.being_mounted,020000 " DL 000004 6-73 equ pvte.being_demounted_word,4 010000 6-74 bool pvte.being_demounted,010000 " DL 000004 6-75 equ pvte.check_read_incomplete_word,4 004000 6-76 bool pvte.check_read_incomplete,004000 " DL 000004 6-77 equ pvte.device_inoperative_word,4 002000 6-78 bool pvte.device_inoperative,002000 " DL 000004 6-79 equ pvte.rpv_word,4 001000 6-80 bool pvte.rpv,001000 " DL 000004 6-81 equ pvte.scav_check_address_word,4 000400 6-82 bool pvte.scav_check_address,000400 " DL 000004 6-83 equ pvte.deposit_to_volmap_word,4 000200 6-84 bool pvte.deposit_to_volmap,000200 " DL 000004 6-85 equ pvte.being_demounted2_word,4 000100 6-86 bool pvte.being_demounted2,000100 " DL 000004 6-87 equ pvte.pc_vacating_word,4 000040 6-88 bool pvte.pc_vacating,000040 " DL 000004 6-89 equ pvte.vacating_word,4 000020 6-90 bool pvte.vacating,000020 " DL 000004 6-91 equ pvte.hc_part_used_word,4 000010 6-92 bool pvte.hc_part_used,000010 " DL 000004 6-93 equ pvte.volmap_lock_notify_word,4 000004 6-94 bool pvte.volmap_lock_notify,000004 " DL 000004 6-95 equ pvte.volmap_idle_notify_word,4 000002 6-96 bool pvte.volmap_idle_notify,000002 " DL 000004 6-97 equ pvte.vtoc_map_lock_notify_word,4 000001 6-98 bool pvte.vtoc_map_lock_notify,000001 " DL 6-99 000005 6-100 equ pvte.n_free_vtoce,5 " UPPER 000005 6-101 equ pvte.vtoc_size,5 " LOWER 6-102 000006 6-103 equ pvte.dbmrp,6 " UPPER 6-104 000007 6-105 equ pvte.nleft,7 " UPPER 000007 6-106 equ pvte.totrec,7 " LOWER 6-107 000010 6-108 equ pvte.dim_info,8 000011 6-109 equ pvte.sv_num,9 000012 6-110 equ pvte.num_of_svs,10 000013 6-111 equ pvte.records_per_cyl,11 000014 6-112 equ pvte.record_factor,12 000015 6-113 equ pvte.sv_name,13 6-114 000016 6-115 equ pvte.curn_dmpr_vtocx,14 " UPPER 6-116 000017 6-117 equ pvte.n_vtoce,15 " LOWER 6-118 000020 6-119 equ pvte.baseadd,16 " UPPER 6-120 000022 6-121 equ pvte.volmap_seg_sdw,18 " DOUBLE 000024 6-122 equ pvte.volmap_astep,20 6-123 000025 6-124 equ pvte.volmap_offset,21 " UPPER 000025 6-125 equ pvte.vtoc_map_offset,21 " LOWER 6-126 000026 6-127 equ pvte.volmap_lock,22 000027 6-128 equ pvte.vtoc_map_lock,23 000030 6-129 equ pvte.volmap_stock_ptr,24 000031 6-130 equ pvte.vtoc_map_stock_ptr,25 6-131 000032 6-132 equ pvte.volmap_async_state,26 " UPPER 000032 6-133 equ pvte.volmap_async_page,26 " LOWER 6-134 000033 6-135 equ pvte.vol_trouble_count,27 " UPPER 000033 6-136 equ pvte.scavenger_block_rel,27 " LOWER 6-137 000000 6-138 equ VOLMAP_ASYNC_IDLE,0 " MANIFEST 000001 6-139 equ VOLMAP_ASYNC_READ,1 " MANIFEST 000002 6-140 equ VOLMAP_ASYNC_WRITE,2 " MANIFEST 6-141 6-142 "END INCLUDE FILE pvte.incl.alm 1531 1532 end ENTRY SEQUENCES 001544 5a 000060 0000 00 001545 aa 7 00046 2721 20 001546 0a 001234 7100 00 001547 5a 000052 0000 00 001550 aa 7 00046 2721 20 001551 0a 000057 7100 00 001552 5a 000044 0000 00 001553 aa 7 00046 2721 20 001554 0a 000053 7100 00 001555 5a 000035 0000 00 001556 aa 7 00046 2721 20 001557 0a 000010 7100 00 001560 5a 000026 0000 00 001561 aa 7 00046 2721 20 001562 0a 000014 7100 00 001563 5a 000017 0000 00 001564 aa 7 00046 2721 20 001565 0a 000004 7100 00 001566 5a 000010 0000 00 001567 aa 7 00046 2721 20 001570 0a 000000 7100 00 NO LITERALS NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 001572 5a 000003 000000 001573 5a 000075 600000 001574 aa 000000 000000 001575 55 000010 000002 001576 5a 000002 400003 001577 55 000006 000010 001600 aa 004 144 143 164 001601 aa 154 000 000 000 001602 55 000017 000003 001603 0a 001567 500000 001604 55 000013 000003 001605 aa 015 167 162 151 write_sectors 001606 aa 164 145 137 163 001607 aa 145 143 164 157 001610 aa 162 163 000 000 001611 55 000026 000010 001612 0a 001564 500000 001613 55 000022 000003 001614 aa 014 162 145 141 read_sectors 001615 aa 144 137 163 145 001616 aa 143 164 157 162 001617 aa 163 000 000 000 001620 55 000035 000017 001621 0a 001561 500000 001622 55 000031 000003 001623 aa 016 142 157 157 bootload_write 001624 aa 164 154 157 141 001625 aa 144 137 167 162 001626 aa 151 164 145 000 001627 55 000044 000026 001630 0a 001556 500000 001631 55 000040 000003 001632 aa 015 142 157 157 bootload_read 001633 aa 164 154 157 141 001634 aa 144 137 162 145 001635 aa 141 144 000 000 001636 55 000052 000035 001637 0a 001553 500000 001640 55 000047 000003 001641 aa 012 144 151 163 disk_write 001642 aa 153 137 167 162 001643 aa 151 164 145 000 001644 55 000060 000044 001645 0a 001550 500000 001646 55 000055 000003 001647 aa 011 144 151 163 disk_read 001650 aa 153 137 162 145 001651 aa 141 144 000 000 001652 55 000066 000052 001653 0a 001545 500000 001654 55 000063 000003 001655 aa 012 144 151 163 disk_inter 001656 aa 153 137 151 156 001657 aa 164 145 162 000 001660 55 000002 000060 001661 6a 000000 400002 001662 55 000071 000003 001663 aa 014 163 171 155 symbol_table 001664 aa 142 157 154 137 001665 aa 164 141 142 154 001666 aa 145 000 000 000 DEFINITIONS HASH TABLE 001667 aa 000000 000015 001670 5a 000060 000000 001671 5a 000052 000000 001672 aa 000000 000000 001673 aa 000000 000000 001674 5a 000026 000000 001675 aa 000000 000000 001676 5a 000066 000000 001677 aa 000000 000000 001700 aa 000000 000000 001701 5a 000035 000000 001702 5a 000010 000000 001703 5a 000044 000000 001704 5a 000017 000000 EXTERNAL NAMES 001705 aa 022 142 157 157 bootload_disk_post 001706 aa 164 154 157 141 001707 aa 144 137 144 151 001710 aa 163 153 137 160 001711 aa 157 163 164 000 001712 aa 016 166 164 157 vtoc_interrupt 001713 aa 143 137 151 156 001714 aa 164 145 162 162 001715 aa 165 160 164 000 001716 aa 004 144 157 156 done 001717 aa 145 000 000 000 001720 aa 004 160 141 147 page 001721 aa 145 000 000 000 001722 aa 011 160 162 157 processid 001723 aa 143 145 163 163 001724 aa 151 144 000 000 001725 aa 003 160 144 163 pds 001726 aa 010 144 151 163 disk_seg 001727 aa 153 137 163 145 001730 aa 147 000 000 000 001731 aa 005 141 162 162 array 001732 aa 141 171 000 000 001733 aa 003 160 166 164 pvt 001734 aa 006 143 154 157 clock_ 001735 aa 143 153 137 000 001736 aa 010 163 171 163 sys_info 001737 aa 137 151 156 146 001740 aa 157 000 000 000 001741 aa 013 143 157 156 connect_abs 001742 aa 156 145 143 164 001743 aa 137 141 142 163 001744 aa 012 151 157 137 io_manager 001745 aa 155 141 156 141 001746 aa 147 145 162 000 001747 aa 015 165 156 167 unwire_unmask 001750 aa 151 162 145 137 001751 aa 165 156 155 141 001752 aa 163 153 000 000 001753 aa 010 143 141 154 call_run 001754 aa 154 137 162 165 001755 aa 156 000 000 000 001756 aa 014 144 151 163 disk_control 001757 aa 153 137 143 157 001760 aa 156 164 162 157 001761 aa 154 000 000 000 001762 aa 015 167 151 162 wire_and_mask 001763 aa 145 137 141 156 001764 aa 144 137 155 141 001765 aa 163 153 000 000 001766 aa 004 160 155 165 pmut 001767 aa 164 000 000 000 NO TRAP POINTER WORDS TYPE PAIR BLOCKS 001770 aa 000004 000000 001771 55 000164 000063 001772 aa 000004 000000 001773 55 000113 000113 001774 aa 000004 000000 001775 55 000120 000120 001776 aa 000004 000000 001777 55 000126 000124 002000 aa 000004 000000 002001 55 000133 000130 002002 aa 000003 000000 002003 5a 000134 000000 002004 aa 000004 000000 002005 55 000141 000137 002006 aa 000004 000000 002007 55 000144 000142 002010 aa 000004 000000 002011 55 000152 000147 002012 aa 000004 000000 002013 55 000174 000155 002014 aa 000004 000000 002015 55 000164 000161 002016 aa 000004 000000 002017 55 000174 000170 002020 aa 000001 000000 002021 aa 000000 000000 INTERNAL EXPRESSION WORDS 002022 5a 000176 000000 002023 5a 000200 000000 002024 5a 000202 000000 002025 5a 000204 000000 002026 5a 000206 000000 002027 5a 000210 000000 002030 5a 000212 000000 002031 5a 000214 000000 002032 5a 000216 000000 002033 5a 000220 000000 002034 5a 000222 000000 002035 5a 000224 000000 LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 001572 000000 000002 aa 000000 000000 000003 aa 000000 000000 000004 aa 000000 000000 000005 aa 000000 000000 000006 22 000010 000040 000007 a2 000000 000000 000010 9a 777770 0000 46 pmut|wire_and_mask 000011 5a 000243 0000 00 000012 9a 777766 0000 46 disk_control|call_run 000013 5a 000242 0000 00 000014 9a 777764 0000 46 pmut|unwire_unmask 000015 5a 000241 0000 00 000016 9a 777762 0000 46 io_manager|connect_abs 000017 5a 000240 0000 00 000020 9a 777760 0000 46 sys_info|clock_ 000021 5a 000237 0000 20 000022 9a 777756 0000 46 pvt|array 000023 5a 000236 0000 00 000024 9a 777754 0000 46 disk_seg| 000025 5a 000235 0000 00 000026 9a 777752 0000 46 pds|processid 000027 5a 000234 0000 00 000030 9a 777750 0000 46 page|done 000031 5a 000233 0000 00 000032 9a 777746 0000 46 vtoc_interrupt|vtoc_interrupt 000033 5a 000232 0000 00 000034 9a 777744 0000 46 bootload_disk_post|bootload_disk_post 000035 5a 000231 0000 00 000036 9a 777742 0000 46 disk_control|disk_inter 000037 5a 000230 0000 00 SYMBOL INFORMATION SYMBOL TABLE HEADER 000000 aa 000000 000001 000001 aa 163171 155142 000002 aa 164162 145145 000003 aa 000000 000010 000004 aa 000000 117244 000005 aa 361023 525721 000006 aa 000000 131036 000007 aa 671762 371070 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 000367 000020 aa 000000 000207 000021 aa 000327 000320 000022 aa 000355 000207 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 070056 061064 000030 aa 040115 141162 000031 aa 143150 040061 000032 aa 071070 071040 000033 aa 040040 040040 000034 aa 123143 150162 000035 aa 157164 150056 000036 aa 123171 163115 000037 aa 141151 156164 000040 aa 056155 040040 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 154151 163164 000045 aa 040163 171155 000046 aa 142157 154163 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 000007 000066 aa 000122 000030 000067 aa 310157 124436 000070 aa 000000 131036 000071 aa 671762 400000 000072 aa 000130 000037 000073 aa 305736 046546 000074 aa 000000 116147 000075 aa 533432 600000 000076 aa 000140 000044 000077 aa 305736 046607 000100 aa 000000 105444 000101 aa 722050 600000 000102 aa 000151 000042 000103 aa 305736 047572 000104 aa 000000 110763 000105 aa 676013 600000 000106 aa 000162 000040 000107 aa 305736 047620 000110 aa 000000 105444 000111 aa 722245 000000 000112 aa 000172 000031 000113 aa 305736 047020 000114 aa 000000 116451 000115 aa 232700 000000 000116 aa 000201 000027 000117 aa 305736 051201 000120 aa 000000 116416 000121 aa 727372 600000 000122 aa 076165 144144 >udd>sm>ds>w>ml>dctl.alm 000123 aa 076163 155076 000124 aa 144163 076167 000125 aa 076155 154076 000126 aa 144143 164154 000127 aa 056141 154155 000130 aa 076154 144144 >ldd>incl>device_error.incl.alm 000131 aa 076151 156143 000132 aa 154076 144145 000133 aa 166151 143145 000134 aa 137145 162162 000135 aa 157162 056151 000136 aa 156143 154056 000137 aa 141154 155040 000140 aa 076154 144144 >ldd>incl>disk_error_interp.incl.alm 000141 aa 076151 156143 000142 aa 154076 144151 000143 aa 163153 137145 000144 aa 162162 157162 000145 aa 137151 156164 000146 aa 145162 160056 000147 aa 151156 143154 000150 aa 056141 154155 000151 aa 076154 144144 >ldd>incl>io_manager_dcls.incl.alm 000152 aa 076151 156143 000153 aa 154076 151157 000154 aa 137155 141156 000155 aa 141147 145162 000156 aa 137144 143154 000157 aa 163056 151156 000160 aa 143154 056141 000161 aa 154155 040040 000162 aa 076154 144144 >ldd>incl>iom_ctl_words.incl.alm 000163 aa 076151 156143 000164 aa 154076 151157 000165 aa 155137 143164 000166 aa 154137 167157 000167 aa 162144 163056 000170 aa 151156 143154 000171 aa 056141 154155 000172 aa 076154 144144 >ldd>incl>dskdcl.incl.alm 000173 aa 076151 156143 000174 aa 154076 144163 000175 aa 153144 143154 000176 aa 056151 156143 000177 aa 154056 141154 000200 aa 155040 040040 000201 aa 076154 144144 >ldd>incl>pvte.incl.alm 000202 aa 076151 156143 000203 aa 154076 160166 000204 aa 164145 056151 000205 aa 156143 154056 000206 aa 141154 155040 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number 420 add_free_q dctl: 583, 1370. 437 add_wq dctl: 396, 616. 426 afq_any dctl: 588, 594. 425 afq_empty dctl: 586, 589. 1230 all_ones dctl: 725, 1234, 1347. 451 aq_any dctl: 628, 632. 450 aq_empty dctl: 626, 629. 66 arglist dctl: 60, 169, 171, 173, 174, 261, 263, 264, 410, 412, 414, 415, 1196, 1198, 1199, 1380, 1382, 1384, 1388, 1396, 1401. array dctl: 213. 142 best_neg_comb dctl: 82, 866, 896, 898. 140 best_seek dctl: 80, 868, 887, 889, 927, 946, 949. bootload_disk_post dctl: 1402. 14000 bootload_mapping dctl: 159, 1325, dskdcl: 305. 1402 bootload_post dctl: 1395, 1400. 5 BOOTLOAD_READ dctl: 144, dskdcl: 300. 10 bootload_read dctl: 88, 142. 125 bootload_sw dctl: 69, 1327, 1394. 6 BOOTLOAD_WRITE dctl: 149, dskdcl: 301. 14 bootload_write dctl: 89, 147. 251 call_chan_loop dctl: 386, 391. call_run dctl: 264. 260 call_side_connects dctl: 388, 401. 256 call_side_queues dctl: 377, 383, 395. 302 channel_criteria dctl: 385, 424. 3 chantab.action_code_mask dskdcl: 163. 12 chantab.action_code_shift dskdcl: 162. 6 chantab.action_code_word dskdcl: 161. 200000 chantab.active dctl: 426, 1202, 1230, 1231, 1342, dskdcl: 152. 6 chantab.active_word dctl: 1203, 1284, 1343, dskdcl: 151. 10000 chantab.broken dskdcl: 160. 6 chantab.broken_word dskdcl: 159. 4 chantab.chanid dskdcl: 147. 0 chantab.chx dctl: 1189, dskdcl: 144. 77 chantab.command_mask dskdcl: 168. 11 chantab.command_shift dskdcl: 167. 7 chantab.command_word dskdcl: 166. 16 chantab.connects dctl: 1201, dskdcl: 183. 14 chantab.connect_time dctl: 1205, 1360, dskdcl: 182. 26 chantab.dcdcw dctl: 1005, 1021, 1026, dskdcl: 192. 27 chantab.dddcw dctl: 1030, 1051, 1057, 1079, 1101, dskdcl: 193. 377 chantab.detailed_status_mask dskdcl: 187. 34 chantab.detailed_status_shift dskdcl: 186. 17 chantab.detailed_status_word dskdcl: 185. 30 chantab.dscdcw dskdcl: 194. 31 chantab.dsddcw dskdcl: 195. 777 chantab.erct_mask dctl: 980, dskdcl: 171. 0 chantab.erct_shift dctl: 976, dskdcl: 170. 7 chantab.erct_word dctl: 981, dskdcl: 169. 20000 chantab.inop dctl: 1342, dskdcl: 158. 6 chantab.inop_word dskdcl: 157. 400000 chantab.in_use dctl: 425, 426, 792, dskdcl: 150. 6 chantab.in_use_word dctl: 387, 791, dskdcl: 149. 1 chantab.ioi_ctx dskdcl: 145. 40000 chantab.ioi_use dctl: 1231, dskdcl: 156. 6 chantab.ioi_use_word dskdcl: 155. 7777 chantab.limit_mask dskdcl: 176. 30 chantab.limit_shift dctl: 1069, 1091, dskdcl: 175. 7 chantab.mbz_mask dskdcl: 178. 25 chantab.mbz_shift dskdcl: 177. 34 chantab.no_io_terminate dskdcl: 198. 36 chantab.no_status_terminate dctl: 1417, dskdcl: 200. 7 chantab.qrp dctl: 982, 1296, dskdcl: 165. 12 chantab.reconnect_announce_time dskdcl: 181. 100000 chantab.rsr dctl: 1231, dskdcl: 154. 6 chantab.rsr_word dskdcl: 153. 32 chantab.rssdcw dctl: 1142, 1146, 1160, dskdcl: 196. 23 chantab.rstdcw dskdcl: 189. 24 chantab.scdcw dctl: 1003, 1038, 1131, dskdcl: 190. 25 chantab.sddcw dskdcl: 191. 0 chantab.sector_shift dskdcl: 179. 10 chantab.select_data dctl: 1035, 1049, 1055, 1081, 1103, dskdcl: 173. 33 chantab.status dskdcl: 197. 2 chantab.statusp dctl: 1265, dskdcl: 146. 37 chantab.status_from_run dskdcl: 201. 35 chantab.terminate_not_active dskdcl: 199. 40 chantab_size dctl: 389, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, dskdcl: 142. 1443 chantab_subs dctl: 1259, 1452. clock_ dctl: 210, 473, 483, 805, 1204, 1292, 1359, 1363. 712 comb.forward dctl: 878, 880. 714 comb.move_forward dctl: 886. 721 comb.move_reverse dctl: 882, 895. 702 comb.scan dctl: 871, 906. 725 comb.skip dctl: 888, 891, 897, 904. 141 comb_qp dctl: 81, 869, 890, 899, 908, 910. 1170 connect dctl: 1135, 1161, 1187. connect_abs dctl: 1199. 116 coreadd dctl: 63, 205, 320, 1331, 1379. 132 cylinder dctl: 74, 296, 302, 335, 1112, 1129. 0 dcw.address iom_ctl_words: 96. 7 dcw.char_pos_mask iom_ctl_words: 99. 17 dcw.char_pos_shift iom_ctl_words: 98. 0 dcw.char_pos_word iom_ctl_words: 97. 40000 dcw.m64 iom_ctl_words: 101. 0 dcw.m64_word iom_ctl_words: 100. 7777 dcw.tally_mask iom_ctl_words: 107. 0 dcw.tally_shift iom_ctl_words: 106. 0 dcw.tally_word iom_ctl_words: 105. 3 dcw.type_mask iom_ctl_words: 104. 14 dcw.type_shift iom_ctl_words: 103. 0 dcw.type_word iom_ctl_words: 102. 100000 dei.bad_addr disk_error_interp: 44. 0 dei.bad_addr_word disk_error_interp: 43. 40000 dei.bad_dev disk_error_interp: 46. 0 dei.bad_dev_word disk_error_interp: 45. 20000 dei.bad_path disk_error_interp: 48. 0 dei.bad_path_word disk_error_interp: 47. 77 dei.bitmask_mask disk_error_interp: 35. 30 dei.bitmask_shift disk_error_interp: 34. 0 dei.bitmask_word disk_error_interp: 33. 77 dei.bitson_mask disk_error_interp: 32. 36 dei.bitson_shift disk_error_interp: 31. 0 dei.bitson_word disk_error_interp: 30. 77 dei.max_retries_mask disk_error_interp: 38. 22 dei.max_retries_shift disk_error_interp: 37. 0 dei.max_retries_word disk_error_interp: 36. 1 dei.namep disk_error_interp: 50. 400000 dei.reseek disk_error_interp: 40. 0 dei.reseek_word disk_error_interp: 39. 200000 dei.rsr disk_error_interp: 42. 0 dei.rsr_word disk_error_interp: 41. 2 dei_size disk_error_interp: 28. 527 del_q dctl: 701, 959. 130 dev dctl: 72, 230, 340, 987, 1007. 121 devadd dctl: 65, 208, 272, 278. 40 devtab.abandoned dskdcl: 232. 0 devtab.abandoned_word dskdcl: 231. 100 devtab.broken dctl: 840, 1307, dskdcl: 230. 0 devtab.broken_word dctl: 839, 1306, dskdcl: 229. 77 devtab.buddy_mask dskdcl: 237. 6 devtab.buddy_shift dskdcl: 236. 0 devtab.buddy_word dskdcl: 235. 2 devtab.comb dctl: 864, dskdcl: 243. 1 devtab.cylinder dctl: 875, 938, 1113, 1130, dskdcl: 242. 20 devtab.forward dctl: 877, 1117, 1123, dskdcl: 234. 0 devtab.forward_word dctl: 872, 1118, 1124, dskdcl: 233. 400 devtab.inop dctl: 1351, dskdcl: 226. 0 devtab.inop_word dctl: 1352, dskdcl: 225. 12 devtab.opt_info dctl: 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, dskdcl: 247. 77 devtab.pdi_mask dctl: 236, 821, dskdcl: 240. 0 devtab.pdi_shift dctl: 234, 819, dskdcl: 239. 0 devtab.pdi_word dctl: 233, 818, dskdcl: 238. 777 devtab.pvtx_mask dskdcl: 224. 33 devtab.pvtx_shift dskdcl: 223. 0 devtab.pvtx_word dskdcl: 222. 4 devtab.time_inop dskdcl: 244. 200 devtab.was_broken dctl: 1307, dskdcl: 228. 0 devtab.was_broken_word dskdcl: 227. 6 devtab.wq dctl: 625, 630, 633, 639, 642, 644, 645, 647, 649, 704, 710, 718, 720, 837, 843, dskdcl: 245. 120 devtab_size dctl: 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, dskdcl: 220. 1443 devtab_subs dctl: 232, 238, 817, 835, 1008, 1302, 1453. 10 disktab.abs_mem_addr dskdcl: 77. 26 disktab.alloc_wait_meters dctl: 251, 255, 269, dskdcl: 89. 16 disktab.call_lock_meters dctl: 223, dskdcl: 85. 11 disktab.channels dctl: 379, 1260, dskdcl: 79. 3 disktab.channels_online dskdcl: 74. 36 disktab.devtab dctl: 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, dskdcl: 93. 4 disktab.dev_busy dctl: 374, 796, 823, 1209, 1210, 1348, 1349, dskdcl: 75. 11 disktab.dev_index dctl: 809, 810, 814, dskdcl: 80. 6 disktab.dev_queued dctl: 375, 620, 621, 726, 727, 795, dskdcl: 76. 14 disktab.edac_errors dskdcl: 84. 12 disktab.errors dskdcl: 82. 13 disktab.ferrors dskdcl: 83. 2 disktab.first_dev dctl: 813, 828, dskdcl: 71. 22 disktab.int_lock_meters dctl: 1262, dskdcl: 87. 2 disktab.last_dev dctl: 803, dskdcl: 72. 0 disktab.lock dctl: 452, 457, 494, 498, dskdcl: 68. 1 disktab.nchan dctl: 382, dskdcl: 69. 32 disktab.run_lock_meters dskdcl: 91. disk_control dctl: 264, 1413. 11 disk_data.array dctl: 438, dskdcl: 37. 112 disk_data.bail_outs dctl: 1411, dskdcl: 44. 1 disk_data.free_offset dskdcl: 30. 4 disk_data.free_q dctl: 538, 542, 549, 554, 557, 559, 560, 562, 564, 585, 590, 595, 601, 603, dskdcl: 34. 152 disk_data.free_q_entries dskdcl: 48. 10 disk_data.free_q_size dskdcl: 36. 3 disk_data.lock dctl: 519, 527, 531, dskdcl: 33. 114 disk_data.max_depth_reset_time dskdcl: 45. 11 disk_data.mbz dskdcl: 40. 12 disk_data.name dskdcl: 42. 11 disk_data.offset dskdcl: 39. 111 disk_data.stagnate_time dctl: 846, dskdcl: 43. 2 disk_data.status_mask dctl: 1275, dskdcl: 32. 0 disk_data.subsystems dskdcl: 28. 116 disk_data.sys_info dctl: 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, dskdcl: 46. 0 disk_error_data.interp disk_error_interp: 16. 0 disk_error_data.namep disk_error_interp: 17. 26 disk_error_data_size disk_error_interp: 14. 1234 disk_inter dctl: 85, 1242, 1413. 0 disk_lock_meters.count dctl: 251, 450, dskdcl: 287. 1 disk_lock_meters.waits dctl: 475, dskdcl: 288. 2 disk_lock_meters.wait_time dctl: 485, 486, dskdcl: 289. 4 disk_lock_meters_size dskdcl: 284. 57 disk_read dctl: 86, 185. disk_seg dctl: 436, 1245. 0 disk_status_descrip.chr disk_error_interp: 59. 777 disk_status_descrip.lth_mask disk_error_interp: 57. 33 disk_status_descrip.lth_shift disk_error_interp: 56. 0 disk_status_descrip.lth_word disk_error_interp: 55. 310 disk_status_interp_array_size disk_error_interp: 22. 53 disk_write dctl: 87, 180. done dctl: 1389. 535 dq_head_done dctl: 705, 707. 534 dq_mid dctl: 703, 706. 541 dq_not_tail dctl: 709, 712. 567 dq_pos_depth dctl: 742, 744. 574 dq_pos_fraction dctl: 751, 753. 542 dq_tail_done dctl: 711, 717. 554 dq_with_queue dctl: 721, 731. 6 DSC_LISTX dskdcl: 293. 40 dskdcl_chans_per_subsys dskdcl: 62. 5 dskdcl_chans_per_subsys_shift dctl: 1256, 1258, dskdcl: 63. 56 entry_time dctl: 58, 211, 359. 122 errcd dctl: 66, 1333, 1381. 100 errflags.all_paths_bad device_error: 11. 20 errflags.device_inoperative device_error: 13. 1 errflags.fatal_error device_error: 17. 40 errflags.memory_unusable device_error: 12. 2 errflags.please_repeat_call device_error: 16. 10 errflags.reassign_address device_error: 14. 4 errflags.seg_unusable device_error: 15. 1224 evil_status_bits dctl: 1225, 1280. 777 faultword.channel_mask iom_ctl_words: 201. 22 faultword.channel_shift iom_ctl_words: 200. 0 faultword.channel_word iom_ctl_words: 199. 17 faultword.cntrlr_fault_mask iom_ctl_words: 210. 6 faultword.cntrlr_fault_shift iom_ctl_words: 209. 0 faultword.cntrlr_fault_word iom_ctl_words: 208. 77 faultword.io_fault_mask iom_ctl_words: 213. 0 faultword.io_fault_shift iom_ctl_words: 212. 0 faultword.io_fault_word iom_ctl_words: 211. 777 faultword.mbz1_mask iom_ctl_words: 198. 33 faultword.mbz1_shift iom_ctl_words: 197. 0 faultword.mbz1_word iom_ctl_words: 196. 7 faultword.mbz2_mask iom_ctl_words: 207. 12 faultword.mbz2_shift iom_ctl_words: 206. 0 faultword.mbz2_word iom_ctl_words: 205. 37 faultword.serv_req_mask iom_ctl_words: 204. 15 faultword.serv_req_shift iom_ctl_words: 203. 0 faultword.serv_req_word iom_ctl_words: 202. 622 getwork dctl: 790, 1372. 367 get_free_q dctl: 252, 258, 536. 415 gfq_bret dctl: 539, 571. 401 gfq_do_stats dctl: 546, 553. 400 gfq_kill_tail dctl: 543, 548. 412 gfq_no_max_depth dctl: 561, 563. 765 gotwork dctl: 402, 978. 156 got_fq dctl: 253, 272. 73 go_common dctl: 163, 177, 201. 62 go_page dctl: 183, 189. 20 go_sector dctl: 135, 140, 145, 150, 152. 33 go_vtoc dctl: 161, 167. 466 gq_no_max_depth dctl: 646, 648. 502 gq_pos_fraction dctl: 665, 667. 651 gw_dev.check_done dctl: 826, 838, 841. 674 gw_dev.comb dctl: 863. 642 gw_dev.in_range dctl: 812, 816. 655 gw_dev.not_busy dctl: 825, 834. 634 gw_dev.scan dctl: 808, 829. 733 gw_dev.seek dctl: 850, 925. 764 gw_dev.this_request dctl: 845, 876, 909, 911, 939, 958. 1111 gw_not_sect dctl: 1086, 1097. 1114 gw_put_seldata dctl: 1102. 1021 gw_read dctl: 1015, 1018. 1141 gw_ret dctl: 793, 797, 830, 1136, 1162. 1022 gw_rw_done dctl: 1017, 1020. 1113 gw_sect_done dctl: 1096, 1100. 1125 gw_seek_back dctl: 1116. 1133 gw_seek_done dctl: 1114, 1120, 1126. 1131 gw_seek_fwd dctl: 1115, 1122. 1142 gw_testing dctl: 1001, 1141. 1156 gw_testing.connect dctl: 1155, 1159. 1155 gw_testing.unload dctl: 1153, 1156. 77 idcw.chan_cmd_mask iom_ctl_words: 76. 6 idcw.chan_cmd_shift iom_ctl_words: 75. 0 idcw.chan_cmd_word iom_ctl_words: 74. 7 idcw.code_mask iom_ctl_words: 68. 17 idcw.code_shift iom_ctl_words: 67. 0 idcw.code_word iom_ctl_words: 66. 77 idcw.command_mask dctl: 1144, iom_ctl_words: 59. 36 idcw.command_shift iom_ctl_words: 58. 0 idcw.command_word iom_ctl_words: 57. 3 idcw.control_mask iom_ctl_words: 73. 14 idcw.control_shift iom_ctl_words: 72. 0 idcw.control_word iom_ctl_words: 71. 77 idcw.count_mask iom_ctl_words: 79. 0 idcw.count_shift iom_ctl_words: 78. 0 idcw.count_word iom_ctl_words: 77. 77 idcw.device_mask iom_ctl_words: 62. 30 idcw.device_shift dctl: 988, iom_ctl_words: 61. 0 idcw.device_word iom_ctl_words: 60. 40000 idcw.ext_ctl iom_ctl_words: 70. 0 idcw.ext_ctl_word iom_ctl_words: 69. 77 idcw.ext_mask iom_ctl_words: 65. 22 idcw.ext_shift iom_ctl_words: 64. 0 idcw.ext_word iom_ctl_words: 63. 76 ima dctl: 62, 1188, 1190, 1191, 1193, 1197. 135 intrpt dctl: 77, 158, 194, 199, 318. 50 int_arg_list dctl: 57, 1244, 1412. io_manager dctl: 1199. 1 io_manager_arg.bound io_manager_dcls: 19. 0 io_manager_arg.chx dctl: 1190, io_manager_dcls: 18. 10 io_manager_arg.dcw_pair_ptr io_manager_dcls: 24. 6 io_manager_arg.listp dctl: 1188, io_manager_dcls: 23. 3 io_manager_arg.listx io_manager_dcls: 21. 2 io_manager_arg.pcw dctl: 1191, io_manager_dcls: 20. 4 io_manager_arg.ptp dctl: 1193, io_manager_dcls: 22. 12 io_manager_arg_size io_manager_dcls: 15. 133 io_type dctl: 75, 153, 190, 316, 654, 1318, 1356. 74 listp dctl: 61. 310 lock dctl: 224, 450, 1263. 325 lockgot dctl: 458, 465. 316 lockloop dctl: 457, 463. 354 lock_disk_data dctl: 517, 537, 584, 653, 737. 350 lock_disk_data.wait dctl: 512, 521. 327 lock_meter_start dctl: 256, 455, 472. 333 lock_meter_stop dctl: 270, 465, 482. 64 mask dctl: 59, 168, 409. 134 masked dctl: 76, 162, 176, 193, 404. 6 MAX_IO_TYPE dskdcl: 302. 52 meter_start_time dctl: 58, 474, 484. 0 MUST_BE_ZERO dctl: 124, 314, 331, 350, 1025. 1070 not_sect_512 dctl: 1062, 1075. 1054 not_stan dctl: 1045, 1059. 171 not_subvol dctl: 275, 283. 72 no_intrpt dctl: 196, 198. 1416 NO_STATUS_TERM dctl: 1267, 1416. 1166 nullptr dctl: 1181, 1192. 143 n_sectors dctl: 83, 155, 191, 352, 1068, 1072, 1090, 1094. 144 n_sectors_temp dctl: 83, 1070, 1071, 1092, 1093. 1162 one_arg_nd dctl: 262, 1173, 1195. 4 opt_info.channel_wait dctl: 1361, 1362, dskdcl: 262. 3 opt_info.depth dctl: 676, 678, 762, 764, dskdcl: 260. 2 opt_info.intercept dctl: 685, 771, dskdcl: 257. 0 opt_info.multiplier dctl: 687, 691, 773, 777, 945, dskdcl: 255. 6 opt_info.queue_wait dctl: 1365, 1366, dskdcl: 263. 0 opt_info.seek_count_shift dskdcl: 269. 11 opt_info.seek_count_word dctl: 1128, 1154, dskdcl: 268. 0 opt_info.seek_sum_shift dskdcl: 266. 10 opt_info.seek_sum_word dctl: 1127, 1157, dskdcl: 265. 1 opt_info.slope dctl: 683, 769, dskdcl: 256. 3 opt_info.sys_info dskdcl: 259. 12 opt_info_size dctl: 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, dskdcl: 253. 1433 opt_info_subs dctl: 674, 760, 935, 1109, 1151, 1357, 1438. page dctl: 1389. 1047 page_512 dctl: 1047, 1053. 0 PAGE_READ dctl: 187, dskdcl: 295. 1 PAGE_WRITE dctl: 182, 1046, dskdcl: 296. 77 pcw.channel_mask iom_ctl_words: 50. 33 pcw.channel_shift iom_ctl_words: 49. 1 pcw.channel_word iom_ctl_words: 48. 77 pcw.chan_cmd_mask iom_ctl_words: 40. 6 pcw.chan_cmd_shift iom_ctl_words: 39. 0 pcw.chan_cmd_word iom_ctl_words: 38. 7 pcw.code_mask iom_ctl_words: 32. 17 pcw.code_shift iom_ctl_words: 31. 0 pcw.code_word iom_ctl_words: 30. 77 pcw.command_mask iom_ctl_words: 23. 36 pcw.command_shift iom_ctl_words: 22. 0 pcw.command_word iom_ctl_words: 21. 3 pcw.control_mask iom_ctl_words: 37. 14 pcw.control_shift iom_ctl_words: 36. 0 pcw.control_word iom_ctl_words: 35. 77 pcw.count_mask iom_ctl_words: 43. 0 pcw.count_shift iom_ctl_words: 42. 0 pcw.count_word iom_ctl_words: 41. 77 pcw.device_mask iom_ctl_words: 26. 30 pcw.device_shift iom_ctl_words: 25. 0 pcw.device_word iom_ctl_words: 24. 77 pcw.ext_mask iom_ctl_words: 29. 22 pcw.ext_shift iom_ctl_words: 28. 0 pcw.ext_word iom_ctl_words: 27. 40000 pcw.mask iom_ctl_words: 34. 0 pcw.mask_word iom_ctl_words: 33. 7 pcw.mbz1_mask iom_ctl_words: 47. 41 pcw.mbz1_shift iom_ctl_words: 46. 1 pcw.mbz1_word iom_ctl_words: 45. 0 pcw.mbz2_shift iom_ctl_words: 52. 1 pcw.mbz2_word iom_ctl_words: 51. 2 pcw_size iom_ctl_words: 19. pds dctl: 451, 456, 493, 518, 526. pmut dctl: 174, 415. processid dctl: 451, 456, 493, 518, 526. 62 ptp dctl: 59, 170, 411. 1073 put_seldata_512 dctl: 1080. pvt dctl: 213. 7777 pvtdi.sx_mask dskdcl: 275. 30 pvtdi.sx_shift dctl: 219, dskdcl: 274. 7777 pvtdi.unused_sect_per_cyl_mask dctl: 301, dskdcl: 279. 0 pvtdi.unused_sect_per_cyl_shift dctl: 299, dskdcl: 278. 7777 pvtdi.usable_sect_per_cyl_mask dctl: 293, dskdcl: 277. 14 pvtdi.usable_sect_per_cyl_shift dctl: 292, dskdcl: 276. 20 pvte.baseadd pvte: 119. 10000 pvte.being_demounted pvte: 74. 100 pvte.being_demounted2 pvte: 86. 4 pvte.being_demounted2_word pvte: 85. 4 pvte.being_demounted_word pvte: 73. 20000 pvte.being_mounted pvte: 72. 4 pvte.being_mounted_word pvte: 71. 777 pvte.brother_pvtx_mask pvte: 52. 22 pvte.brother_pvtx_shift pvte: 51. 2 pvte.brother_pvtx_word pvte: 50. 4000 pvte.check_read_incomplete pvte: 76. 4 pvte.check_read_incomplete_word pvte: 75. 16 pvte.curn_dmpr_vtocx pvte: 115. 6 pvte.dbmrp pvte: 103. 200 pvte.deposit_to_volmap pvte: 84. 4 pvte.deposit_to_volmap_word pvte: 83. 2000 pvte.device_inoperative pvte: 78. 4 pvte.device_inoperative_word pvte: 77. 777 pvte.device_type_mask dctl: 286, pvte: 59. 33 pvte.device_type_shift dctl: 285, pvte: 58. 4 pvte.device_type_word dctl: 284, pvte: 57. 3 pvte.devname pvte: 55. 10 pvte.dim_info dctl: 218, 291, 298, pvte: 108. 400000 pvte.dmpr_in_use pvte: 41. 2 pvte.dmpr_in_use_word pvte: 40. 10 pvte.hc_part_used pvte: 92. 4 pvte.hc_part_used_word pvte: 91. 4000 pvte.inconsistent_dbm pvte: 49. 2 pvte.inconsistent_dbm_word pvte: 48. 40000 pvte.is_sv dctl: 274, pvte: 43. 2 pvte.is_sv_word dctl: 273, pvte: 42. 777 pvte.logical_area_number_mask pvte: 62. 22 pvte.logical_area_number_shift dctl: 227, pvte: 61. 4 pvte.logical_area_number_word dctl: 226, pvte: 60. 1 pvte.lvid pvte: 38. 7 pvte.nleft pvte: 105. 12 pvte.num_of_svs dctl: 280, pvte: 110. 5 pvte.n_free_vtoce pvte: 100. 17 pvte.n_vtoce pvte: 117. 40 pvte.pc_vacating pvte: 88. 4 pvte.pc_vacating_word pvte: 87. 100000 pvte.permanent pvte: 68. 4 pvte.permanent_word pvte: 67. 0 pvte.pvid pvte: 37. 13 pvte.records_per_cyl dctl: 276, pvte: 111. 14 pvte.record_factor dctl: 281, pvte: 112. 10000 pvte.removable_pack pvte: 47. 2 pvte.removable_pack_word pvte: 46. 20000 pvte.root_lv pvte: 45. 2 pvte.root_lv_word pvte: 44. 1000 pvte.rpv pvte: 80. 4 pvte.rpv_word pvte: 79. 33 pvte.scavenger_block_rel pvte: 136. 400 pvte.scav_check_address pvte: 82. 4 pvte.scav_check_address_word pvte: 81. 2 pvte.skip_queue_count pvte: 53. 200000 pvte.storage_system pvte: 66. 4 pvte.storage_system_word pvte: 65. 15 pvte.sv_name pvte: 113. 11 pvte.sv_num pvte: 109. 40000 pvte.testing pvte: 70. 4 pvte.testing_word pvte: 69. 7 pvte.totrec pvte: 106. 400000 pvte.used pvte: 64. 4 pvte.used_word pvte: 63. 20 pvte.vacating pvte: 90. 4 pvte.vacating_word pvte: 89. 24 pvte.volmap_astep pvte: 122. 32 pvte.volmap_async_page pvte: 133. 32 pvte.volmap_async_state pvte: 132. 2 pvte.volmap_idle_notify pvte: 96. 4 pvte.volmap_idle_notify_word pvte: 95. 26 pvte.volmap_lock pvte: 127. 4 pvte.volmap_lock_notify pvte: 94. 4 pvte.volmap_lock_notify_word pvte: 93. 25 pvte.volmap_offset pvte: 124. 22 pvte.volmap_seg_sdw pvte: 121. 30 pvte.volmap_stock_ptr pvte: 129. 33 pvte.vol_trouble_count pvte: 135. 27 pvte.vtoc_map_lock pvte: 128. 1 pvte.vtoc_map_lock_notify pvte: 98. 4 pvte.vtoc_map_lock_notify_word pvte: 97. 25 pvte.vtoc_map_offset pvte: 125. 31 pvte.vtoc_map_stock_ptr pvte: 130. 5 pvte.vtoc_size pvte: 101. 34 pvte_size dctl: 216, 217, pvte: 34. 127 pvtx dctl: 71, 215, 333. 1 qht.count dctl: 564, 649, dskdcl: 209. 2 qht.depth dctl: 554, 559, 601, 603, 639, 644, 718, 720, 837, dskdcl: 212. 3 qht.head dctl: 538, 542, 590, 630, 704, 843, dskdcl: 214. 2 qht.max_depth dctl: 560, 562, 645, 647, dskdcl: 211. 0 qht.sum dctl: 557, 642, dskdcl: 208. 3 qht.tail dctl: 549, 585, 595, 625, 633, 710, dskdcl: 215. 4 qht_size dskdcl: 206. 0 quentry.coreadd_shift dctl: 314, 1025, dskdcl: 116. 1 quentry.coreadd_word dctl: 313, 1024, 1143, 1328, dskdcl: 115. 3777 quentry.cylinder_mask dctl: 874, 937, 1111, dskdcl: 129. 0 quentry.cylinder_shift dctl: 331, dskdcl: 128. 2 quentry.cylinder_word dctl: 330, 873, 936, 1110, dskdcl: 127. 77 quentry.dev_mask dctl: 229, 986, dskdcl: 126. 20 quentry.dev_shift dctl: 341, 985, dskdcl: 125. 2 quentry.dev_word dctl: 329, 342, 984, dskdcl: 124. 400000 quentry.intrpt dctl: 197, dskdcl: 109. 1 quentry.intrpt_word dctl: 311, dskdcl: 108. 0 quentry.next dctl: 541, 587, 597, 627, 635, 701, 706, 905, 952, dskdcl: 105. 77 quentry.n_sectors_mask dskdcl: 133. 36 quentry.n_sectors_shift dctl: 353, 1033, 1034, 1067, 1089, dskdcl: 132. 3 quentry.n_sectors_word dctl: 348, 1066, 1088, dskdcl: 131. 77 quentry.pdi_mask dctl: 1299, dskdcl: 123. 26 quentry.pdi_shift dctl: 338, 1298, dskdcl: 122. 2 quentry.pdi_word dctl: 328, 339, 1297, dskdcl: 121. 0 quentry.prev dctl: 545, 594, 632, 702, 713, dskdcl: 106. 377 quentry.pvtx_mask dskdcl: 120. 34 quentry.pvtx_shift dctl: 334, dskdcl: 119. 2 quentry.pvtx_word dctl: 327, 336, dskdcl: 118. 0 quentry.sector_shift dctl: 350, dskdcl: 135. 3 quentry.sector_word dctl: 349, 355, 1032, dskdcl: 134. 4 quentry.time dctl: 360, 848, 1364, dskdcl: 137. 17 quentry.type_mask dctl: 734, 934, 998, 1317, dskdcl: 114. 36 quentry.type_shift dctl: 317, 733, 933, 997, 1316, 1329, 1330, dskdcl: 113. 1 quentry.type_word dctl: 310, 321, 732, 932, 992, 1315, dskdcl: 112. 200000 quentry.used dctl: 319, 994, 1367, dskdcl: 111. 1 quentry.used_word dctl: 312, 992, 993, 1368, dskdcl: 110. 6 quentry_size dskdcl: 103. 4 read_sectors dctl: 90, 137. 123 real_device dctl: 67. 120 record_offset dctl: 64, 277, 279, 282. 136 retry_get_fq dctl: 257, 265. 154 retry_got_fq dctl: 259, 268. 10 RSS_LISTX dskdcl: 294. 1 RST_LISTX dskdcl: 291. 2 SC_LISTX dskdcl: 292. 131 sector dctl: 73, 289, 304, 354. 174000 sector_mapping dctl: 1060, 1084, 1322, dskdcl: 304. 1372 sector_post dctl: 1387, 1392. 1072 sect_done_512 dctl: 1074, 1078. 117 sect_off dctl: 64, 157, 192, 303. 124 sect_sw dctl: 68, 1324, 1386. 1421 sec_per_rec dctl: 288, 1426. 751 seek.pos dctl: 940, 942. 737 seek.scan dctl: 931, 953. 761 seek.worse dctl: 947, 951. 1036 seek_512 dctl: 1042. 1075 seek_64 dctl: 1041, 1083. 40000 seek_64_bit dctl: 1039, 1040. 1115 seek_stats dctl: 1052, 1058, 1082, 1107. 304 setup dctl: 221, 436, 1257. 1226 simple_interrupt_criteria dctl: 1229, 1283. 1410 SLOW_INT dctl: 1249, 1411. 377 special_status.byte2_mask iom_ctl_words: 228. 11 special_status.byte2_shift iom_ctl_words: 227. 0 special_status.byte2_word iom_ctl_words: 226. 377 special_status.byte3_mask iom_ctl_words: 231. 0 special_status.byte3_shift iom_ctl_words: 230. 0 special_status.byte3_word iom_ctl_words: 229. 377 special_status.channel_mask iom_ctl_words: 222. 33 special_status.channel_shift iom_ctl_words: 221. 0 special_status.channel_word iom_ctl_words: 220. 77 special_status.device_mask iom_ctl_words: 225. 22 special_status.device_shift iom_ctl_words: 224. 0 special_status.device_word iom_ctl_words: 223. 400000 special_status.t iom_ctl_words: 219. 0 special_status.t_word iom_ctl_words: 218. 1 status.abort iom_ctl_words: 166. 0 status.abort_word iom_ctl_words: 165. 1 status.address iom_ctl_words: 180. 7 status.central_stat_mask iom_ctl_words: 172. 14 status.central_stat_shift iom_ctl_words: 171. 0 status.central_stat_word iom_ctl_words: 170. 7 status.channel_stat_mask iom_ctl_words: 169. 17 status.channel_stat_shift iom_ctl_words: 168. 0 status.channel_stat_word iom_ctl_words: 167. 7 status.char_pos_mask iom_ctl_words: 183. 17 status.char_pos_shift iom_ctl_words: 182. 1 status.char_pos_word iom_ctl_words: 181. 40 status.eo iom_ctl_words: 157. 0 status.eo_word iom_ctl_words: 156. 2 status.initiate iom_ctl_words: 164. 0 status.initiate_word iom_ctl_words: 163. 17 status.major_mask iom_ctl_words: 152. 36 status.major_shift iom_ctl_words: 151. 0 status.major_word iom_ctl_words: 150. 20 status.marker iom_ctl_words: 159. 0 status.marker_word iom_ctl_words: 158. 77 status.mbz_mask iom_ctl_words: 175. 6 status.mbz_shift iom_ctl_words: 174. 0 status.mbz_word iom_ctl_words: 173. 200000 status.power iom_ctl_words: 149. 0 status.power_word iom_ctl_words: 148. 40000 status.r iom_ctl_words: 185. 77 status.rcount_mask iom_ctl_words: 178. 0 status.rcount_shift iom_ctl_words: 177. 0 status.rcount_word iom_ctl_words: 176. 1 status.r_word iom_ctl_words: 184. 3 status.soft_mask iom_ctl_words: 162. 24 status.soft_shift iom_ctl_words: 161. 0 status.soft_word iom_ctl_words: 160. 77 status.sub_mask iom_ctl_words: 155. 30 status.sub_shift iom_ctl_words: 154. 0 status.sub_word iom_ctl_words: 153. 400000 status.t iom_ctl_words: 147. 7777 status.tally_mask iom_ctl_words: 191. 0 status.tally_shift iom_ctl_words: 190. 1 status.tally_word iom_ctl_words: 189. 3 status.type_mask iom_ctl_words: 188. 14 status.type_shift iom_ctl_words: 187. 1 status.type_word iom_ctl_words: 186. 0 status.t_word iom_ctl_words: 146. 2 status_size iom_ctl_words: 144. 54 status_time dctl: 58, 1293. 137 switches dctl: 79. 126 sx dctl: 70, 220, 260. sys_info dctl: 210, 473, 483, 805, 1204, 1292, 1359, 1363. 0 sys_info.depth dskdcl: 56. 3 sys_info.depth_map dctl: 656, 739, dskdcl: 60. 2 sys_info.fraction dctl: 669, 686, 755, 772, dskdcl: 58. 1 sys_info.max_depth dctl: 663, 668, 749, 754, dskdcl: 57. 4 sys_info_size dctl: 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, dskdcl: 54. 1433 sys_info_subs dctl: 655, 738, 1437. 0 tdcw.address iom_ctl_words: 112. 4 tdcw.ec iom_ctl_words: 123. 0 tdcw.ec_word iom_ctl_words: 122. 17 tdcw.mbz1_mask iom_ctl_words: 115. 16 tdcw.mbz1_shift iom_ctl_words: 114. 0 tdcw.mbz1_word iom_ctl_words: 113. 777 tdcw.mbz2_mask iom_ctl_words: 121. 3 tdcw.mbz2_shift iom_ctl_words: 120. 0 tdcw.mbz2_word iom_ctl_words: 119. 1 tdcw.rel iom_ctl_words: 127. 0 tdcw.rel_word iom_ctl_words: 126. 2 tdcw.res iom_ctl_words: 125. 0 tdcw.res_word iom_ctl_words: 124. 3 tdcw.type_mask iom_ctl_words: 118. 14 tdcw.type_shift iom_ctl_words: 117. 0 tdcw.type_word iom_ctl_words: 116. 136 temp1 dctl: 78, 294, 295, 804, 811. 4 TEST dctl: 1000, 1319, dskdcl: 299. 60 test_time dctl: 58, 806, 849. 1232 time_mod dctl: 1239. 1164 two_args_nd dctl: 172, 413, 1177, 1383. 340 unlock dctl: 403, 493, 1374, 1409, 1418. 360 unlock_disk_data dctl: 525, 568, 571, 605, 670, 756. 1407 UNLOCK_THEN_SLOW dctl: 1271, 1276, 1281, 1285, 1308, 1320, 1408. 301 unwired dctl: 405, 417. unwire_unmask dctl: 415. 0 VOLMAP_ASYNC_IDLE pvte: 138. 1 VOLMAP_ASYNC_READ pvte: 139. 2 VOLMAP_ASYNC_WRITE pvte: 140. vtoc_interrupt dctl: 1397. 2 VTOC_READ dctl: 139, dskdcl: 297. 3 VTOC_WRITE dctl: 134, 1044, dskdcl: 298. wire_and_mask dctl: 174. 261 working dctl: 397, 403. 244000 write_mapping dctl: 1013, dskdcl: 303. 0 write_sectors dctl: 91, 132. 765 xfer_join dctl: 979. 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