ASSEMBLY LISTING OF SEGMENT >spec>h>3.17>restor.alm ASSEMBLED ON: 11/29/83 1540.1 mst Tue OPTIONS USED: list ASSEMBLED BY: ALM Version 6.6 November 1982 ASSEMBLER CREATED: 09/21/83 1227.3 mst Wed  1 " ***********************************************************  2 " * *  3 " * Copyright, (C) Honeywell Information Systems Inc., 1982 *  4 " * *  5 " ***********************************************************  6 " RESTOR Command for BOS.  7 " Modified 9/27/73 by N. I. Morris  8 " Modified 2/80 by R.J.C. Kissel for 6250 bpi operation.  9  000000 10 name restor  11  12  13 " ******************************************************  14 " * *  15 " * *  16 " * Copyright (c) 1972 by Massachusetts Institute of *  17 " * Technology and Honeywell Information Systems, Inc. *  18 " * *  19 " * *  20 " ******************************************************  21  22  23 include bosequ 1-1 " Begin include file ...... bosequ.incl.alm 1-2 " Modified 8/25/76 by N. I. Morris  1-3 " Modified 8/79 by R.J.C. Kissel to expand BOS. 1-4 " Modified November 1981 by C. Hornig to add pgmorg.  1-5 " Modified October 1982 by J. Bongiovanni to take it out  1-6  000000 1-7 bool ds,0 descriptor segment  000001 1-8 bool tmp,1 temp seg  000002 1-9 bool bf,2 buffer segment for save/restor  000003 1-10 bool pgm,3 program in control 000004 1-11 bool xs1,4 spare segment  000005 1-12 bool xs2,5 spare segment  000005 1-13 bool fgb,5 flagbox segment  000006 1-14 bool com,6 common 000007 1-15 bool mem,7 all memory 1-16  000017 1-17 equ arglen,15 max number of args from scan  1-18  004000 1-19 bool runcom_bit,4000 runcom bit in dir entry  002000 1-20 bool firmware_bit,2000 firmware bit in dir entry  1-21  012000 1-22 bool utilorg,12000 origin of utility package  1-23  1-24 " End of include file ...... bosequ.incl.alm  24  25  26 " 27  28 include ntape_equ  2-1  2-2 " Begin include file ...... ntape_equ.incl.alm  2-3 " Last modified 11/25/75 by Noel I. Morris  2-4 " Modified 8/79 by R.J.C. Kissel to use expanded BOS.  2-5 " Modified 2/80 by R.J.C. Kissel to handle 6250 bpi operation.  2-6  2-7 " Transfer Vector values:  2-8  006000 2-9 bool ntape_org,6000 start of tape package  2-10  006000 2-11 equ taperopen,ntape_org+0  006001 2-12 equ tapewopen,ntape_org+1  006002 2-13 equ taper,ntape_org+2  006003 2-14 equ tapew,ntape_org+3  006004 2-15 equ inittape,ntape_org+4  006005 2-16 equ opentaper,ntape_org+5  006006 2-17 equ opentapew,ntape_org+6  006007 2-18 equ runtape,ntape_org+7  006010 2-19 equ endtape,ntape_org+8  2-20  2-21 " Queue entry codes:  2-22  000010 2-23 bool tpeot,10 EOT flag  000004 2-24 bool tpskip,4 skip queue entry  000002 2-25 bool tpdone,2 queue entry done  000001 2-26 bool tpstat,1 error in entry  2-27  2-28 " format of queue:  2-29 " 0/ zero next_entry,flags  2-30 " 1/ vfd 36/id  2-31 " 2/ vfd 3/data_seg,15/data_offset,18/data_length  2-32  2-33 " End of include file ...... ntape_equ.incl.alm 2-34  29  30 include sav_util  3-1 " 3-2 " Begin include file ...... sav_util.incl.alm  3-3 " This is the initialization code for the SAVE and RESTOR commands. 3-4 " Modified for NSS 11/75 by Noel I. Morris  3-5 " Last modified 9/9/76 by Noel I. Morris  3-6 " Modified 2/80 by R.J.C. Kissel to support 6250 bpi operation. 3-7 " Modified 3/82 by J. Bongiovanni for new pack layout  3-8 " Modified 5/82 by Sherm D. Sprague to print target pack info.  3-9 " Modified 83-10-10 by E. N. Kittlitz for disks up to 63.  3-10  3-11 include sav_io_buf_seg 4-1 " Begin include file ...... sav_io_buf_seg.incl.alm 4-2 " Overlay for segments which are used for disk and tape IO buffers  4-3 " by SAVE and RESTOR.  4-4 "  4-5 " Written 2/80 by R.J.C. Kissel.  4-6  044000 4-7 equ label_buff_len,18*1024 length of label buffer in bf  100000 4-8 equ disk_buff_len,32*1024 length of disk buffer in tmp 002000 4-9 equ small_tp_buff,1024 length of short tape buffer  002000 4-10 equ big_tp_buff,1024 length of big tape buffer  4-11  000000 4-12 equ dskbuf,0 start of disk buffers  000000 4-13 equ lbbuf,0 start of label buffer  4-14 " tape buffer is in ntape  4-15  4-16 " End include file ...... sav_io_buf_seg.incl.alm  4-12  4-13 include disk_pack  5-1  5-2  5-3 "BEGIN INCLUDE FILE disk_pack.incl.alm 5-4  5-5  5-6 "Created 04/02/82 1735.7 est Fri by convert_include_file, 5-7 " Version of 12/01/81 1540.3 est Tue.  5-8  5-9 "Made from >cdd>include>x>disk_pack.incl.pl1,  5-10 " modified 04/02/82 1145.0 est Fri  5-11  5-12  000000 5-13 equ LABEL_ADDR,0 " MANIFEST  000001 5-14 equ VOLMAP_ADDR,1 " MANIFEST  000004 5-15 equ DUMPER_BIT_MAP_ADDR,4 " MANIFEST  000006 5-16 equ VTOC_MAP_ADDR,6 " MANIFEST  000010 5-17 equ VTOC_ORIGIN,8 " MANIFEST  000003 5-18 equ SECTORS_PER_VTOCE,3 " MANIFEST  000005 5-19 equ VTOCES_PER_RECORD,5 " MANIFEST  001750 5-20 equ DEFAULT_HCPART_SIZE,1000 " MANIFEST  076036 5-21 equ MAX_VTOCE_PER_PACK,31774 " MANIFEST  5-22  5-23 "END INCLUDE FILE disk_pack.incl.alm  5-14  5-15 include vol_map  6-1  6-2  6-3 " BEGIN INCLUDE FILE vol_map.incl.alm  6-4  6-5  6-6 "Created 08/13/75 1411.7 edt Wed by convert_include_file, 6-7 " Version of 08/13/75 1339.8 edt Wed.  6-8  6-9 "Made from >udd>m>nss>include>vol_map.incl.pl1,  6-10 " modified 02/20/75 1020.2 edt Thu  6-11  6-12  000000 6-13 equ vol_map.n_rec,0  000001 6-14 equ vol_map.base_add,1 000002 6-15 equ vol_map.n_free_rec,2  000003 6-16 equ vol_map.bit_map_n_words,3  000100 6-17 equ vol_map.bit_map,64 6-18  6-19 "END INCLUDE FILE vol_map.incl.alm 6-16  6-17 " 6-18  6-19 include fs_vol_label  7-1  7-2  7-3 "BEGIN INCLUDE FILE fs_vol_label.incl.alm  7-4  7-5  7-6 "Created 03/27/82 1422.1 est Sat by convert_include_file, 7-7 " Version of 12/01/81 1540.3 est Tue.  7-8  7-9 "Made from >udd>m>bongo>htd>nsd>include>fs_vol_label.incl.pl1, 7-10 " modified 03/27/82 1421.0 est Sat  7-11  7-12 "  7-13 " Structure label  7-14 "  002000 7-15 equ label_size,1024  7-16  7-17  000000 7-18 equ label.gcos,0  000500 7-19 equ label.Multics,320  000510 7-20 equ label.version,328  000511 7-21 equ label.mfg_serial,329  000521 7-22 equ label.pv_name,337  000531 7-23 equ label.lv_name,345  000541 7-24 equ label.pvid,353 000542 7-25 equ label.lvid,354 000543 7-26 equ label.root_pvid,355  000544 7-27 equ label.time_registered,356 " DOUBLE 000546 7-28 equ label.n_pv_in_lv,358  000547 7-29 equ label.vol_size,359 000550 7-30 equ label.vtoc_size,360  7-31  000551 7-32 equ label.not_used_word,361  400000 7-33 bool label.not_used,400000 " DU  000551 7-34 equ label.private_word,361 200000 7-35 bool label.private,200000 " DU 000551 7-36 equ label.flagpad_word,361 000000 7-37 equ label.flagpad_shift,0  7-38  000552 7-39 equ label.max_access_class,362 " DOUBLE  000554 7-40 equ label.min_access_class,364 " DOUBLE  000556 7-41 equ label.password,366 " DOUBLE  000600 7-42 equ label.time_mounted,384 " DOUBLE  000602 7-43 equ label.time_map_updated,386 " DOUBLE  000604 7-44 equ label.volmap_version,388  000606 7-45 equ label.time_salvaged,390 " DOUBLE  000610 7-46 equ label.time_of_boot,392 " DOUBLE  000612 7-47 equ label.time_unmounted,394 " DOUBLE  000614 7-48 equ label.last_pvtx,396  000617 7-49 equ label.err_hist_size,399  000620 7-50 equ label.time_last_dmp,400 " DOUBLE  000626 7-51 equ label.time_last_reloaded,406 " DOUBLE  000700 7-52 equ label.root,448 " LEVEL 2  7-53  400000 7-54 bool label.here,400000 " DU  7-55  000701 7-56 equ label.root_vtocx,449  000702 7-57 equ label.shutdown_state,450  000704 7-58 equ label.disk_table_vtocx,452 000705 7-59 equ label.disk_table_uid,453  000706 7-60 equ label.esd_state,454  000707 7-61 equ label.volmap_record,455  000710 7-62 equ label.size_of_volmap,456  000711 7-63 equ label.vtoc_map_record,457  000712 7-64 equ label.size_of_vtoc_map,458 000713 7-65 equ label.volmap_unit_size,459 000714 7-66 equ label.vtoc_origin_record,460  000715 7-67 equ label.dumper_bit_map_record,461  000716 7-68 equ label.vol_trouble_count,462  001003 7-69 equ label.nparts,515  001004 7-70 equ label.parts,516 " LEVEL 2 7-71  001004 7-72 equ label.part,516 001005 7-73 equ label.frec,517 001006 7-74 equ label.nrec,518 7-75  7-76 "END INCLUDE FILE fs_vol_label.incl.alm  7-20  7-21 include old_fs_vol_label  8-1  8-2  8-3 "BEGIN INCLUDE FILE old_fs_vol_label.incl.alm  8-4  8-5  8-6 "Created 03/27/82 1424.5 est Sat by convert_include_file, 8-7 " Version of 12/01/81 1540.3 est Tue.  8-8  8-9 "Made from >udd>m>bongo>htd>nsd>include>old_fs_vol_label.incl.pl1, 8-10 " modified 03/27/82 1424.5 est Sat  8-11  8-12 "  8-13 " Structure old_label  8-14 "  002000 8-15 equ old_label_size,1024  8-16  8-17  000000 8-18 equ old_label.gcos,0  000500 8-19 equ old_label.Multics,320  000510 8-20 equ old_label.version,328  000511 8-21 equ old_label.mfg_serial,329  000521 8-22 equ old_label.pv_name,337  000531 8-23 equ old_label.lv_name,345  000541 8-24 equ old_label.pvid,353 000542 8-25 equ old_label.lvid,354 000543 8-26 equ old_label.root_pvid,355  000544 8-27 equ old_label.time_registered,356 " DOUBLE 000546 8-28 equ old_label.n_pv_in_lv,358  000547 8-29 equ old_label.vol_size,359 000550 8-30 equ old_label.vtoc_size,360  8-31  000551 8-32 equ old_label.not_used_word,361  400000 8-33 bool old_label.not_used,400000 " DU  000551 8-34 equ old_label.private_word,361 200000 8-35 bool old_label.private,200000 " DU 000551 8-36 equ old_label.flagpad_word,361 000000 8-37 equ old_label.flagpad_shift,0  8-38  000552 8-39 equ old_label.max_access_class,362 " DOUBLE  000554 8-40 equ old_label.min_access_class,364 " DOUBLE  000556 8-41 equ old_label.password,366 " DOUBLE  000600 8-42 equ old_label.time_mounted,384 " DOUBLE  000602 8-43 equ old_label.time_map_updated,386 " DOUBLE  000604 8-44 equ old_label.time_unmounted,388 " DOUBLE  000606 8-45 equ old_label.time_salvaged,390 " DOUBLE  000610 8-46 equ old_label.time_of_boot,392 " DOUBLE  000612 8-47 equ old_label.pd_time,394 " DOUBLE 000614 8-48 equ old_label.last_pvtx,396  000617 8-49 equ old_label.err_hist_size,399  000620 8-50 equ old_label.time_last_dmp,400 " DOUBLE  000626 8-51 equ old_label.time_last_reloaded,406 " DOUBLE  000700 8-52 equ old_label.root,448 " LEVEL 2  8-53  400000 8-54 bool old_label.here,400000 " DU  8-55  000701 8-56 equ old_label.root_vtocx,449  000702 8-57 equ old_label.shutdown_state,450  8-58  000703 8-59 equ old_label.pd_active_word,451  400000 8-60 bool old_label.pd_active,400000 " DU  8-61  000704 8-62 equ old_label.disk_table_vtocx,452 000705 8-63 equ old_label.disk_table_uid,453  000706 8-64 equ old_label.esd_state,454  001003 8-65 equ old_label.nparts,515  001004 8-66 equ old_label.parts,516 " LEVEL 2 8-67  001004 8-68 equ old_label.part,516 001005 8-69 equ old_label.frec,517 001006 8-70 equ old_label.nrec,518 8-71  8-72 "END INCLUDE FILE old_fs_vol_label.incl.alm  8-22  8-23 include config_cards  9-1 " 9-2 " Begin include file ...... config_cards.incl.alm  9-3 " 3/75 THVV nss 9-4 " Last modified 3/12/76 by Noel I. Morris  9-5  000001 9-6 equ ROOT_cd.sub,1  000002 9-7 equ ROOT_cd.drive,2  9-8  000001 9-9 equ PART_cd.name,1 000002 9-10 equ PART_cd.sub,2  000003 9-11 equ PART_cd.drive,3  9-12  000001 9-13 equ PRPH_cd.sub,1  000002 9-14 equ PRPH_cd.iom,2  000003 9-15 equ PRPH_cd.chn,3  000004 9-16 equ PRPH_cd.model,4  9-17  000001 9-18 equ DISK_cd.sub,1  000002 9-19 equ DISK_cd.iom,2  000003 9-20 equ DISK_cd.chn,3  000004 9-21 equ DISK_cd.nchan,4  000005 9-22 equ DISK_cd.model,5  000006 9-23 equ DISK_cd.ndrives,6  9-24  000001 9-25 equ CHNL_cd.sub,1  000002 9-26 equ CHNL_cd.iom,2  000003 9-27 equ CHNL_cd.chn,3  000004 9-28 equ CHNL_cd.nchan,4  9-29  000001 9-30 equ BULK_cd.frec,1 000002 9-31 equ BULK_cd.nrec,2 9-32  9-33 " End of include file ...... config_cards.incl.alm  9-34  9-24  9-25  9-26  9-27 " Label buffer segment equivalences.  9-28  9-29 " SAVE Header.  9-30  000000 9-31 equ svh,0  000001 9-32 equ svh.version,svh+1 version #  000000 9-33 equ svh.allsw,svh+0 nonzero if saving everything  000002 9-34 equ svh.nvol,svh+2 number of volumes saved 000003 9-35 equ svh.curvol,svh+3 current volume being processed  000020 9-36 equ svh.sva,16 array of volume info  9-37  004000 9-38 equ svh_length,2048  9-39  9-40  9-41 " Volume Preamble.  9-42  004000 9-43 equ svp,svh+svh_length 004000 9-44 equ svp.version,svp+0 version #  004001 9-45 equ svp.recs,svp+1 # of records on this volume 004020 9-46 equ svp.sva,svp+16 volume info 004040 9-47 equ svp.bits,svp+32 bit map  9-48  006000 9-49 equ svp_length,3072  9-50  9-51  9-52 " Volume Label. 9-53  012000 9-54 equ svl,svp+svp_length 012000 9-55 equ LABEL,svl+LABEL_ADDR*1024  014000 9-56 equ MAP,svl+VOLMAP_ADDR*1024  9-57  010000 9-58 equ svl_length,DUMPER_BIT_MAP_ADDR*1024  9-59  9-60  9-61 " SAVE Header Copy. 9-62  022000 9-63 equ svhc,svl+svl_length  9-64  9-65  9-66 " Volume Info.  9-67  000000 9-68 equ sva.pvname,0 physical volume name  000010 9-69 equ sva.pvid,8 physical volume ID  000011 9-70 equ sva.first,9 first record saved 000012 9-71 equ sva.last,10 last record saved  000013 9-72 equ sva.done,11 current record saved  000014 9-73 equ sva.devt,12 device type word  000015 9-74 equ sva.vtoc_size,13 size of VTOC area on volume  000016 9-75 equ sva.skip,14 nonzero to skip this volume  9-76  000020 9-77 equ sva_size,16  9-78  9-79 " 9-80  000000 0a 000436 7420 00 9-81 stx2 x2  000001 aa 012271 7020 00 9-82 tsx2 init_io  9-83  000002 aa 012245 7020 00 9-84 tsx2 ttyinit get tty requests 000003 0a 000436 0000 00 9-85 arg ttyrequest 9-86  000004 aa 012254 2350 00 9-87 lda geastab set for MVT instruction  000005 0a 000211 7550 00 9-88 sta gvmvt ..  9-89  000006 aa 044000 6350 00 9-90 eaa label_buff_len length of label buffer in AU  000007 aa 012221 7020 00 9-91 tsx2 makesdw make a segment  000010 0a 000436 7100 00 9-92 tra x2 Don't clobber core.  000011 aa 0 00004 7571 00 9-93 staq ds|bf*2 store SDW  9-94  000012 aa 100000 6350 00 9-95 eaa disk_buff_len length of disk buffer segment in AU  000013 aa 012221 7020 00 9-96 tsx2 makesdw make another segment 000014 0a 000436 7100 00 9-97 tra x2  000015 aa 0 00002 7571 00 9-98 staq ds|tmp*2 set SDW for temporary segment  000016 aa 000000 5320 00 9-99 cams  9-100  000017 0a 002344 2360 00 9-101 ldq =v12/,24/label_buff_len*4 length of seg 2 in QL  000020 aa 000140 1004 00 9-102 mlr (),(pr,rl),fill(0) zero seg 2  000021 0a 000021 000000 9-103 desc9a *,0 000022 aa 200000 000006 9-104 desc9a bf|0,ql 9-105  9-106 " 9-107  000023 aa 2 00000 4501 00 9-108 stz bf|svh.allsw clear all switch  9-109  000024 aa 000002 2350 07 9-110 lda 2,dl set version number  000025 aa 2 00001 7551 00 9-111 sta bf|svh.version ..  9-112  000026 0a 000436 2220 00 9-113 ldx2 x2 get command line and scan it ourselvs 9-114  000027 aa 7 00000 2351 12 9-115 lda mem|0,2 get address of command line  000030 aa 777777 3750 07 9-116 ana =-1,dl .. 000031 aa 000002 7350 00 9-117 als 2 get character offset  000032 aa 0 00000 1005 05 9-118 mlr (pr,al),() copy command line  000033 aa 700000 000124 9-119 desc9a mem|0,84  000034 aa 012001 000124 9-120 desc9a line,84 9-121  000035 aa 012200 7020 00 9-122 tsx2 scan now scan to get dec numbers too 9-123  000036 aa 012040 2350 00 9-124 lda arg get name of command  000037 0a 002345 6750 00 9-125 era =h save if SAVE, 000040 0a 000634 7550 00 9-126 sta savesw make switch zero  000041 aa 000065 2350 07 9-127 lda =o65,dl set the default tape density  000042 0a 000643 7550 00 9-128 sta tapeden save it for later use 9-129  000043 aa 000001 6210 00 9-130 eax1 1 use X1 for argument index  000044 aa 012040 2350 11 9-131 arglp: lda arg,1 get next argument 000045 aa 000000 6270 00 9-132 eax7 0 search list of args  000046 aa 022300 5202 02 9-133 rpt nargs,2,tze .. 000047 0a 000054 1150 17 9-134 cmpa args,7 ..  000050 0a 000160 6064 00 9-135 ttn badarg if not found, complain 000051 aa 777777 7160 17 9-136 xec -1,7 perform appropriate action  000052 aa 000001 6210 11 9-137 eax1 1,1 step to next arg 000053 0a 000044 7100 00 9-138 tra arglp and process next arg  9-139  000054 9-140 args:  000054 aa 202 251 312 526 9-141 bci " brief"  000055 aa 012236 5540 20 9-142 stc1 disk_brief,*  000056 aa 202 020 214 343 9-143 bci " all"  000057 aa 2 00000 5541 00 9-144 stc1 bf|svh.allsw  000060 aa 202 063 214 725 9-145 bci " tape"  000061 0a 000112 7100 00 9-146 tra argtape  000062 aa 202 024 316 242 9-147 bci " disk"  000063 0a 000121 7100 00 9-148 tra argdisk  000064 aa 202 023 464 770 9-149 bci " copy"  000065 0a 000131 7100 00 9-150 tra argcopy  000066 aa 202 475 100 000 9-151 bci " d=800"  000067 0a 000076 7100 00 9-152 tra arg800 000070 aa 247 501 060 000 9-153 bci "d=1600"  000071 0a 000102 7100 00 9-154 tra arg1600  000072 aa 247 506 020 500 9-155 bci "d=6250"  000073 0a 000106 7100 00 9-156 tra arg6250  000074 aa 777777 777777 9-157 dec -1 000075 0a 000166 7100 00 9-158 tra argend 9-159  000011 9-160 equ nargs,(*-args)/2  9-161  9-162 " 9-163  000076 9-164 arg800: 000076 aa 000060 2350 07 9-165 lda =o60,dl  000077 0a 000643 7550 00 9-166 sta tapeden  000100 aa 000001 6210 11 9-167 eax1 1,1  000101 0a 000044 7100 00 9-168 tra arglp  000102 9-169 arg1600:  000102 aa 000065 2350 07 9-170 lda =o65,dl  000103 0a 000643 7550 00 9-171 sta tapeden  000104 aa 000001 6210 11 9-172 eax1 1,1  000105 0a 000044 7100 00 9-173 tra arglp  000106 9-174 arg6250:  000106 aa 000041 2350 07 9-175 lda =o41,dl  000107 0a 000643 7550 00 9-176 sta tapeden  000110 aa 000001 6210 11 9-177 eax1 1,1  000111 0a 000044 7100 00 9-178 tra arglp  9-179  000112 0a 002346 2350 00 9-180 argtape: lda =h ntape set name of module  000113 0a 000640 7550 00 9-181 sta modulename ..  000114 0a 002347 2350 00 9-182 lda =h tape and name of subsystem  000115 0a 000641 7550 00 9-183 sta subsysname ..  000116 0a 000635 5540 00 9-184 stc1 tapesw set switch to indicate tape usage 000117 0a 000636 4500 00 9-185 stz copysw clear switch indicating disk copy  000120 0a 000141 7100 00 9-186 tra setdrives now try to get drive numbers  9-187  000121 0a 002350 2350 00 9-188 argdisk: lda =h ndisk set name of module  000122 0a 000640 7550 00 9-189 sta modulename ..  000123 aa 000001 6210 11 9-190 eax1 1,1 step to next arg 000124 aa 012040 2350 11 9-191 lda arg,1 get name of disk subsystem  000125 0a 000641 7550 00 9-192 sta subsysname and save  000126 0a 000635 4500 00 9-193 stz tapesw clear tape usage flag  000127 0a 000636 4500 00 9-194 stz copysw clear disk copy flag  000130 0a 000141 7100 00 9-195 tra setdrives try to get drive numbers  9-196  000131 0a 002351 2350 00 9-197 argcopy: lda =h ncopy set module name  000132 0a 000640 7550 00 9-198 sta modulename ..  000133 aa 000001 6210 11 9-199 eax1 1,1 step to next arg 000134 aa 012040 2350 11 9-200 lda arg,1 get name of disk subsystem  000135 0a 000641 7550 00 9-201 sta subsysname and save  000136 0a 000635 4500 00 9-202 stz tapesw clear tape usage flag  000137 0a 000636 5540 00 9-203 stc1 copysw set disk copy flag  000140 0a 000141 7100 00 9-204 tra setdrives get drive numbers  9-205  000141 aa 000000 6270 00 9-206 setdrives:eax7 0 initialize tape index 000142 aa 000001 6210 11 9-207 drivlp: eax1 1,1 step argument index  000143 aa 012060 2350 11 9-208 lda darg,1 get tape number  000144 0a 000152 6044 00 9-209 tmoz drivend end of list  000145 aa 000077 1150 07 9-210 cmpa 63,dl don't allow numbers > idcw device field  000146 0a 000152 6054 00 9-211 tpnz drivend ..  000147 0a 000645 7550 17 9-212 sta taplst,7 set tape number in list  000150 aa 000001 6270 17 9-213 eax7 1,7 step to next slot in list  000151 0a 000142 7100 00 9-214 tra drivlp .. 9-215  000152 aa 000000 1070 03 9-216 drivend: cmpx7 0,du were any numbers supplied? 000153 0a 000044 6000 00 9-217 tze arglp if not, use default setting 000154 0a 000644 7470 00 9-218 stx7 ntapes set number of tapes  9-219  000155 0a 000645 2350 00 9-220 lda taplst get first tape number  000156 0a 000642 7550 00 9-221 sta tapen and set it for ntape package  000157 0a 000044 7100 00 9-222 tra arglp process rest of arguments  9-223  000160 aa 012241 7020 00 9-224 badarg: tsx2 erpt else, print error  000161 aa 012 136 147 040 9-225 acc '^g unknown' arg unknown  000162 aa 165 156 153 156 000163 aa 157 167 156 000 000164 aa 012040 0000 11 9-226 arg arg,1  000165 0a 000436 7100 00 9-227 tra x2 9-228  9-229 " 9-230  000166 aa 2 00002 4501 00 9-231 argend: stz bf|svh.nvol initialize number of volumes  9-232  000167 aa 012202 7020 00 9-233 gvloop: tsx2 nextline read an input line  9-234  000170 aa 012040 2350 00 9-235 lda arg get argument  000171 0a 002352 1150 00 9-236 cmpa =h end "end"?  000172 0a 000351 6000 00 9-237 tze setup if so, start processing 000173 0a 002353 1150 00 9-238 cmpa =h quit "quit"? 000174 0a 000436 6000 00 9-239 tze x2 if so, exit command  9-240  000175 aa 000000 6200 00 9-241 eax0 0 start with first arg  000176 aa 012223 7020 00 9-242 tsx2 argmul and get device address extent 000177 0a 000167 7100 00 9-243 tra gvloop .. 9-244  000200 aa 012040 2350 10 9-245 lda arg,0 look at last arg  000201 0a 002354 1150 00 9-246 cmpa =-1 was it supplied? 000202 0a 000473 6000 00 9-247 tze nolblerr if not, error  9-248  000203 aa 2 00002 2361 00 9-249 ldq bf|svh.nvol get current volume number  000204 aa 000020 4020 07 9-250 mpy sva_size,dl compute array index  000205 aa 2 00020 3701 06 9-251 epp xs1,bf|svh.sva,ql get pointer in xs1  9-252  000206 aa 020100 1604 20 9-253 mvt (id),(pr),fill(20) copy pvname and translate to ASCII  000207 aa 012100 0000 10 9-254 arg earg,0 000210 aa 400000 000040 9-255 desc9a xs1|sva.pvname,32  000211 0a 000211 0000 00 9-256 gvmvt: arg *  9-257  000212 0a 000234 7020 00 9-258 tsx2 cklabel read and check volume label  9-259  000213 aa 4 00016 4501 00 9-260 stz xs1|sva.skip clear skip indicator  9-261  000214 aa 012224 2350 20 9-262 lda amdvt,* get devt word 000215 aa 4 00014 7551 00 9-263 sta xs1|sva.devt save  9-264  000216 0a 000636 2340 00 9-265 szn copysw is this a SAVE COPY?  000217 0a 000225 6000 00 9-266 tze gvfirst nope, we don't want to make the following check  9-267  000220 aa 2 00002 2361 00 9-268 ldq bf|svh.nvol get the volume number  000221 0a 000225 6000 00 9-269 tze gvfirst first time, we cannot check with the last entry  9-270  000222 aa 000020 3360 07 9-271 lcq =o20,dl load mask 000223 aa 4 77774 2111 00 9-272 cmk xs1|sva.devt-sva_size check the device type with the last volume entry 000224 0a 000565 6010 00 9-273 tnz devterr not the same, this is not allowed for SAVE COPY  9-274  000225 aa 012225 2350 20 9-275 gvfirst: lda amfirst,* get first record to process 000226 aa 4 00011 7551 00 9-276 sta xs1|sva.first save 000227 aa 4 00013 7551 00 9-277 sta xs1|sva.done ..  9-278  000230 aa 012226 2350 20 9-279 lda amlast,* get last record to process  000231 aa 4 00012 7551 00 9-280 sta xs1|sva.last save  9-281  000232 aa 2 00002 0541 00 9-282 aos bf|svh.nvol step volume index  000233 0a 000167 7100 00 9-283 tra gvloop and continue to next one  9-284  9-285 " 9-286  000234 0a 000347 7420 00 9-287 cklabel: stx2 cklbx2 save X2  9-288  000235 aa 012224 2350 20 9-289 lda amdvt,* for bulk, any is ok.  000236 aa 000017 3750 07 9-290 ana =o17,dl  000237 aa 000001 1150 07 9-291 cmpa 1,dl bulk?  000240 0a 000347 6000 00 9-292 tze cklbx2 yeh, ok.  9-293  000241 aa 000000 2350 07 9-294 lda LABEL_ADDR,dl get record number of disk label  000242 aa 012216 7020 00 9-295 tsx2 mulbos convert to BOS sector address 000243 aa 012224 0000 20 9-296 arg amdvt,*  000244 0a 000436 7100 00 9-297 tra x2 9-298  000245 aa 012211 7020 00 9-299 tsx2 rdev read it in  000246 aa 012224 0000 20 9-300 arg amdvt,*  000247 aa 2 12000 0001 00 9-301 arg bf|LABEL  000250 0a 000441 7100 00 9-302 tra lblioerr  9-303  000251 aa 0 40000 1065 00 9-304 cmpc (pr),(),fill(040) check the label 000252 aa 212500 000040 9-305 desc9a bf|LABEL+label.Multics,32  000253 0a 000670 000040 9-306 desc9a Multics_label,32  000254 0a 000260 6000 00 9-307 tze mulabel tra if Multics storage system disk  9-308  000255 0a 000634 2340 00 9-309 szn savesw SAVE or RESTOR?  000256 0a 000454 6000 00 9-310 tze lblerr if SAVE, complain about bad label  000257 0a 000347 7100 00 9-311 tra cklbx2 if RESTOR, write on unlabelled disk  9-312  000260 aa 0 00100 1065 00 9-313 mulabel: cmpc (pr),(pr) test the physical volume name  000261 aa 212521 000040 9-314 hisldesc: desc9a bf|LABEL+label.pv_name,32  000262 aa 400000 000040 9-315 myldesc: desc9a xs1|sva.pvname,32  000263 0a 000505 6010 00 9-316 tnz pvnamerr if not equal, complain  000264 aa 012241 7020 00 9-317 tsx2 erpt print the volume name  000265 aa 053 040 040 040 9-318 acc " Multics storage system volume ^A."  000266 aa 040 040 040 040 000267 aa 040 040 040 115 000270 aa 165 154 164 151 000271 aa 143 163 040 163 000272 aa 164 157 162 141 000273 aa 147 145 040 163 000274 aa 171 163 164 145 000275 aa 155 040 166 157 000276 aa 154 165 155 145 000277 aa 040 136 101 056 000300 0a 000261 0000 00 9-319 arg hisldesc  9-320  000301 aa 2 12602 2371 00 9-321 ldaq bf|LABEL+label.time_map_updated  000302 aa 012270 7020 00 9-322 tsx2 cvclock  000303 0a 000666 7570 00 9-323 staq time_map_updated  9-324  000304 aa 012241 7020 00 9-325 tsx2 erpt  000305 aa 041 040 040 040 9-326 acc " Time last updated ^g ^g"  000306 aa 040 040 040 040 000307 aa 040 040 040 124 000310 aa 151 155 145 040 000311 aa 154 141 163 164 000312 aa 040 165 160 144 000313 aa 141 164 145 144 000314 aa 040 136 147 040 000315 aa 136 147 000 000 000316 0a 000666 0000 00 9-327 arg time_map_updated  000317 0a 000667 0000 00 9-328 arg time_map_updated+1 9-329  000320 aa 2 12541 2351 00 9-330 lda bf|LABEL+label.pvid  000321 aa 4 00010 7551 00 9-331 sta xs1|sva.pvid copy the volume ID  9-332  000322 aa 2 12550 2351 00 9-333 lda bf|LABEL+label.vtoc_size  000323 aa 4 00015 7551 00 9-334 sta xs1|sva.vtoc_size copy the VTOC size  9-335  000324 0a 000634 2340 00 9-336 szn savesw doing save?  000325 0a 000347 6010 00 9-337 tnz cklbx2 if not, skip following 9-338  000326 aa 2 00000 2341 00 9-339 szn bf|svh.allsw doing SAVE ALL?  000327 0a 000347 6010 00 9-340 tnz cklbx2 if so, don't check for consistent volumes  9-341  000330 aa 2 12604 2351 00 9-342 lda bf|LABEL+label.volmap_version Check label format  000331 0a 000336 6044 00 9-343 tmoz pre_MR10_label Old  000332 aa 000002 1150 07 9-344 cmpa 2,dl MR 10.x  000333 0a 000336 6054 00 9-345 tpnz pre_MR10_label No  000334 aa 2 12612 2371 00 9-346 ldaq bf|LABEL+label.time_unmounted 000335 0a 000337 7100 00 9-347 tra common_label  000336 9-348 pre_MR10_label: 000336 aa 2 12604 2371 00 9-349 ldaq bf|LABEL+old_label.time_unmounted 000337 9-350 common_label:  000337 0a 000700 7570 00 9-351 staq time_unmounted  9-352  000340 aa 2 12602 2371 00 9-353 ldaq bf|LABEL+label.time_map_updated Get time of map update.  000341 0a 000700 1170 00 9-354 cmpaq time_unmounted Same as time of unmount?  000342 0a 000347 6000 00 9-355 tze cklbx2 If so, volume is OK.  000343 aa 2 12606 1171 00 9-356 cmpaq bf|LABEL+label.time_salvaged Same as time salvaged? 000344 0a 000542 6010 00 9-357 tnz allerr If not, must do SAVE ALL.  000345 0a 000700 1170 00 9-358 cmpaq time_unmounted If so, must be later than unmount.  000346 0a 000542 6044 00 9-359 tmoz allerr Otherwise, must do SAVE ALL.  9-360  000347 0a 000347 6220 00 9-361 cklbx2: eax2 * restore X2  000350 aa 000000 7100 12 9-362 tra 0,2 and return  9-363  9-364 " 9-365  000351 0a 000633 2340 00 9-366 setup: szn nogo did errors occur?  000352 0a 000616 6010 00 9-367 tnz stopit if so, stop dead in our tracks 9-368  000353 aa 006000 6360 00 9-369 eaq ntape_org origin of tape package in QU  000354 0a 000640 2350 00 9-370 lda modulename 000355 aa 012206 7020 00 9-371 tsx2 ldcom load in the tape package  000356 0a 000436 7100 00 9-372 tra x2 9-373  000357 0a 000641 2350 00 9-374 lda subsysname get name of subsystem  000360 aa 006004 7020 00 9-375 tsx2 inittape init tape package  000361 0a 000643 000000 9-376 zero tapeden send the density argument  000362 0a 000436 000000 9-377 zero x2 fatal error return point for opens  000363 0a 000436 7100 00 9-378 tra x2 error return  9-379  000364 aa 000004 2350 03 9-380 lda 4,du thread queue forwards  000365 0a 000636 2340 00 9-381 szn copysw unless copying disk  000366 0a 000370 6000 00 9-382 tze *+2 ..  000367 aa 000000 5310 00 9-383 neg 0 in which case, thread it backwards  000370 0a 000637 7550 00 9-384 sta qdelta .. 9-385  000371 0a 001340 6230 00 9-386 eax3 ql thread tape queue 000372 0a 002355 2350 00 9-387 lda =v3/tmp,15/,18/1024 fill in segment and length 000373 aa 000002 7550 13 9-388 thq: sta 2,3  000374 aa 000000 6220 13 9-389 eax2 0,3 queue index in X2  000375 0a 000637 0220 00 9-390 adlx2 qdelta X2 points to next entry  000376 aa 000000 7420 13 9-391 stx2 0,3 set pointer to next entry  000377 aa 000004 6230 13 9-392 eax3 4,3  000400 aa 002000 0750 03 9-393 ada =1024,du  000401 0a 001540 1030 03 9-394 cmpx3 ql+128,du  000402 0a 000373 6040 00 9-395 tmi thq  9-396  000403 0a 000636 2340 00 9-397 szn copysw copying disk?  000404 0a 000410 6010 00 9-398 tnz thq1 if so, must take special action  9-399  000405 0a 001334 6230 00 9-400 eax3 qp  000406 0a 001534 7430 00 9-401 stx3 ql+128-4 make queue wrap 000407 0a 000420 7100 00 9-402 tra qth  9-403  000410 0a 001374 6230 00 9-404 thq1: eax3 ql+32-4 X3 points to start of first group of 8  000411 0a 001334 7430 00 9-405 stx3 qp set pointer in preamble record  000412 aa 000040 6230 13 9-406 thq2: eax3 32,3 thread blocks together 000413 aa 777704 7430 13 9-407 stx3 -64+4,3 ..  000414 0a 001534 1030 03 9-408 cmpx3 ql+128-4,du  000415 0a 000412 6040 00 9-409 tmi thq2  000416 0a 001334 6230 00 9-410 eax3 qp get address of preamble record  000417 0a 001500 7430 00 9-411 stx3 ql+96 set pointer at end of last block of 8  9-412  000420 0a 001343 5540 00 9-413 qth: stc1 ql+3 put in stoppers 000421 0a 001443 5540 00 9-414 stc1 ql+64+3 and half way points to make 2 buffers  9-415  000422 aa 000001 2350 07 9-416 lda 1,dl set initial volume index 000423 aa 2 00003 7551 00 9-417 sta bf|svh.curvol ..  000424 0a 001540 7100 00 9-418 tra go go to beginning of SAVE/RESTOR program 9-419  9-420 " 9-421  000425 9-422 done:  000425 aa 012241 7020 00 9-423 tsx2 erpt  000426 aa 025 136 144 040 9-424 acc "^d records processed."  000427 aa 162 145 143 157 000430 aa 162 144 163 040 000431 aa 160 162 157 143 000432 aa 145 163 163 145 000433 aa 144 056 000 000 000434 0a 001315 0000 00 9-425 arg recs  000435 aa 006010 7020 00 9-426 tsx2 endtape close out the tape  9-427  000436 9-428 ttyrequest: 000436 0a 000436 6220 00 9-429 x2: eax2 * restore X2  000437 aa 000001 3350 07 9-430 lca 1,dl don't chain to another command  000440 aa 7 00001 7101 12 9-431 tra mem|1,2 and return to BOS main control  9-432  9-433 " 9-434  000441 aa 012241 7020 00 9-435 lblioerr: tsx2 erpt 000442 aa 041 106 141 164 9-436 acc "Fatal error reading volume label."  000443 aa 141 154 040 145 000444 aa 162 162 157 162 000445 aa 040 162 145 141 000446 aa 144 151 156 147 000447 aa 040 166 157 154 000450 aa 165 155 145 040 000451 aa 154 141 142 145 000452 aa 154 056 000 000 000453 0a 000436 7100 00 9-437 tra x2 9-438  000454 aa 012241 7020 00 9-439 lblerr: tsx2 erpt  000455 aa 056 126 157 154 9-440 acc "Volume is not a Multics storage system volume."  000456 aa 165 155 145 040 000457 aa 151 163 040 156 000460 aa 157 164 040 141 000461 aa 040 115 165 154 000462 aa 164 151 143 163 000463 aa 040 163 164 157 000464 aa 162 141 147 145 000465 aa 040 163 171 163 000466 aa 164 145 155 040 000467 aa 166 157 154 165 000470 aa 155 145 056 000 000471 0a 000633 7500 00 9-441 stc2 nogo  000472 0a 000167 7100 00 9-442 tra gvloop 9-443  000473 aa 012241 7020 00 9-444 nolblerr: tsx2 erpt 000474 aa 031 116 157 040 9-445 acc "No volume label supplied."  000475 aa 166 157 154 165 000476 aa 155 145 040 154 000477 aa 141 142 145 154 000500 aa 040 163 165 160 000501 aa 160 154 151 145 000502 aa 144 056 000 000 000503 0a 000633 7500 00 9-446 stc2 nogo  000504 0a 000167 7100 00 9-447 tra gvloop 9-448  000505 aa 012241 7020 00 9-449 pvnamerr: tsx2 erpt 000506 aa 054 120 150 171 9-450 acc "Physical volume name does not match request." 000507 aa 163 151 143 141 000510 aa 154 040 166 157 000511 aa 154 165 155 145 000512 aa 040 156 141 155 000513 aa 145 040 144 157 000514 aa 145 163 040 156 000515 aa 157 164 040 155 000516 aa 141 164 143 150 000517 aa 040 162 145 161 000520 aa 165 145 163 164 000521 aa 056 000 000 000 000522 aa 012241 7020 00 9-451 tsx2 erpt  000523 aa 051 122 145 161 9-452 acc "Request is for ^A, but volume name is ^A."  000524 aa 165 145 163 164 000525 aa 040 151 163 040 000526 aa 146 157 162 040 000527 aa 136 101 054 040 000530 aa 142 165 164 040 000531 aa 166 157 154 165 000532 aa 155 145 040 156 000533 aa 141 155 145 040 000534 aa 151 163 040 136 000535 aa 101 056 000 000 000536 0a 000262 0000 00 9-453 arg myldesc  000537 0a 000261 0000 00 9-454 arg hisldesc  000540 0a 000633 7500 00 9-455 stc2 nogo  000541 0a 000167 7100 00 9-456 tra gvloop 9-457  000542 aa 012241 7020 00 9-458 allerr: tsx2 erpt  000543 aa 032 126 157 154 9-459 acc "Volume requires salvaging."  000544 aa 165 155 145 040 000545 aa 162 145 161 165 000546 aa 151 162 145 163 000547 aa 040 163 141 154 000550 aa 166 141 147 151 000551 aa 156 147 056 000 000552 aa 012241 7020 00 9-460 tsx2 erpt  000553 aa 036 125 163 145 9-461 acc "Use ALL option to save volume."  000554 aa 040 101 114 114 000555 aa 040 157 160 164 000556 aa 151 157 156 040 000557 aa 164 157 040 163 000560 aa 141 166 145 040 000561 aa 166 157 154 165 000562 aa 155 145 056 000 000563 0a 000633 7500 00 9-462 stc2 nogo  000564 0a 000167 7100 00 9-463 tra gvloop 9-464  000565 aa 012241 7020 00 9-465 devterr: tsx2 erpt  000566 aa 127 115 165 154 9-466 acc "Multiple device types cannot be processed by SAVE COPY, process each type individually."  000567 aa 164 151 160 154 000570 aa 145 040 144 145 000571 aa 166 151 143 145 000572 aa 040 164 171 160 000573 aa 145 163 040 143 000574 aa 141 156 156 157 000575 aa 164 040 142 145 000576 aa 040 160 162 157 000577 aa 143 145 163 163 000600 aa 145 144 040 142 000601 aa 171 040 123 101 000602 aa 126 105 040 103 000603 aa 117 120 131 054 000604 aa 040 160 162 157 000605 aa 143 145 163 163 000606 aa 040 145 141 143 000607 aa 150 040 164 171 000610 aa 160 145 040 151 000611 aa 156 144 151 166 000612 aa 151 144 165 141 000613 aa 154 154 171 056 000614 0a 000633 7500 00 9-467 stc2 nogo  000615 0a 000167 7100 00 9-468 tra gvloop 9-469  000616 aa 012241 7020 00 9-470 stopit: tsx2 erpt  000617 aa 053 105 162 162 9-471 acc "Errors found in arguments. Cannot proceed."  000620 aa 157 162 163 040 000621 aa 146 157 165 156 000622 aa 144 040 151 156 000623 aa 040 141 162 147 000624 aa 165 155 145 156 000625 aa 164 163 056 040 000626 aa 040 103 141 156 000627 aa 156 157 164 040 000630 aa 160 162 157 143 000631 aa 145 145 144 056 000632 0a 000436 7100 00 9-472 tra x2 9-473  9-474 " 9-475  000633 9-476 nogo: bss ,1 non-zero if error(s) in args  000634 9-477 savesw: bss ,1 zero if performing SAVE 000635 0a 000635 0000 00 9-478 tapesw: arg * non-zero if using tape  000636 aa 000000 0000 00 9-479 copysw: arg 0 non-zero if copying disk 000637 9-480 qdelta: bss ,1 used for threading queue  000640 9-481 modulename: 000640 aa 204 563 214 725 9-482 bci " ntape" name of SAVE/RESTOR I/O Module  000641 aa 202 063 214 725 9-483 subsysname:bci " tape" name of subsystem used for SAVE/RESTOR 000642 aa 000000 000001 9-484 tapen: oct 1 current tape number  000643 9-485 tapeden: bss ,1 tape density setting command  000644 aa 000002 000000 9-486 ntapes: zero 2,0 numbers of tapes and current index  000645 aa 000000 000001 9-487 taplst: oct 1 list of tapes to use 000646 aa 000000 000002 9-488 oct 2 default is tapes 1 & 2  000647 9-489 bss ,8 9-490  000657 9-491 pvbcname: bss ,6 BCD volume name  000665 aa 000000 0110 03 9-492 even  000666 9-493 time_map_updated:  000666 9-494 bss ,2 000670 9-495 Multics_label:  000670 aa 115 165 154 164 9-496 aci "Multics Storage System Volume",32 000671 aa 151 143 163 040 000672 aa 123 164 157 162 000673 aa 141 147 145 040 000674 aa 123 171 163 164 000675 aa 145 155 040 126 000676 aa 157 154 165 155 000677 aa 145 040 040 040 9-497 even  000700 9-498 time_unmounted: 000700 9-499 bss ,2 9-500 " 9-501  9-502 " This is the main loop subroutine for processing a volume. 9-503  9-504 " tsx2 savloop  9-505 " arg subr called for each 32K block  9-506  9-507  000702 0a 000736 7420 00 9-508 savloop: stx2 svlx2 save return  000703 0a 001340 6230 00 9-509 eax3 ql start at beginning of queue  9-510  000704 aa 2 04033 2351 00 9-511 lda bf|svp.sva+sva.done start ID  000705 aa 777740 3750 07 9-512 ana =o777740,dl  000706 0a 001314 7550 00 9-513 sta id 000707 aa 2 04034 2351 00 9-514 lda bf|svp.sva+sva.devt get device type word  000710 aa 000017 3750 07 9-515 ana =o17,dl mask device type  000711 aa 000022 7350 00 9-516 als 18 move to AU 000712 0a 001314 2550 00 9-517 orsa id insert in ID  000713 aa 2 00003 2351 00 9-518 lda bf|svh.curvol get volume index 000714 aa 000030 7350 00 9-519 als 24 as part of ID  000715 0a 001314 2550 00 9-520 orsa id ..  9-521  000716 0a 001252 7020 00 9-522 didl: tsx2 ckmore see if any more to do on device  000717 0a 000734 7100 00 9-523 tra didend if not, finish with volume 9-524  000720 aa 000004 7270 07 9-525 lxl7 tpskip,dl set preamble entry to be skipped  000721 0a 001334 4470 00 9-526 sxl7 qp ..  9-527  000722 0a 000772 7020 00 9-528 tsx2 getbits pick up free storage bits  000723 0a 000726 7100 00 9-529 tra nextaddr skip call if 32K block is all free  9-530  000724 0a 000736 2220 00 9-531 ldx2 svlx2 restore X2 000725 aa 000000 7020 32 9-532 tsx2 0,2* make subroutine call  9-533  000726 aa 2 04033 2351 00 9-534 nextaddr: lda bf|svp.sva+sva.done get first record not done 000727 aa 000037 2750 07 9-535 ora =o37,dl bump to next 0 mod 32 000730 aa 000001 0750 07 9-536 ada 1,dl ..  000731 aa 2 04033 7551 00 9-537 sta bf|svp.sva+sva.done .. 000732 0a 001314 7510 07 9-538 stca id,07 set next ID  000733 0a 000716 7100 00 9-539 tra didl and loop 9-540  000734 aa 000002 7270 07 9-541 didend: lxl7 tpdone,dl set stop at preamble queue entry  000735 0a 001334 4470 00 9-542 sxl7 qp ..  9-543  000736 0a 000736 6220 00 9-544 svlx2: eax2 * restore X2  000737 aa 000001 7100 12 9-545 tra 1,2 return to caller  9-546  9-547 " 9-548  9-549 " This is the tape I/O waiting and checking subroutine. 9-550  9-551 " eax3 queue_entry queue entry to be checked  9-552 " tsx2 savwait  9-553 " arg errsub subroutine called if tape error  9-554 " tra eot end of tape handler  9-555  9-556  000740 0a 000755 7420 00 9-557 savwait: stx2 svwx2 save X2  9-558  000741 aa 000000 7270 13 9-559 waitl: lxl7 0,3 get flags from queue entry 000742 aa 000010 3070 03 9-560 canx7 tpeot,du end of tape?  000743 0a 000757 6010 00 9-561 tnz saveot if so, switch to next reel 9-562  000744 aa 000002 3070 03 9-563 canx7 tpdone,du tape I/O finished?  000745 0a 000750 6010 00 9-564 tnz endwait if not, wait for completion  9-565  000746 aa 006007 7020 00 9-566 tsx2 runtape let tape run some more  000747 0a 000741 7100 00 9-567 tra waitl and test again  9-568  000750 0a 001315 0540 00 9-569 endwait: aos recs count records outputted  000751 aa 000001 3070 03 9-570 canx7 tpstat,du tape error?  000752 0a 000755 6000 00 9-571 tze svwx2 if not, skip error call 9-572  000753 0a 000755 2220 00 9-573 ldx2 svwx2 restore X2 000754 aa 000000 7020 32 9-574 tsx2 0,2* make error subroutine call  9-575  000755 0a 000755 6220 00 9-576 svwx2: eax2 * restore X2  000756 aa 000002 7100 12 9-577 tra 2,2 return to caller  9-578  9-579  000757 aa 006010 7020 00 9-580 saveot: tsx2 endtape finished with this tape  9-581  000760 0a 000644 7270 00 9-582 lxl7 ntapes get current tape index  000761 aa 000001 6270 17 9-583 eax7 1,7 bump by one  000762 0a 000644 1070 00 9-584 cmpx7 ntapes compare against total number 000763 0a 000765 6040 00 9-585 tmi *+2 ..  000764 aa 000000 6270 00 9-586 eax7 0 reset to first tape, if necessary  000765 0a 000645 2350 17 9-587 lda taplst,7 get next tape number 000766 0a 000642 7550 00 9-588 sta tapen and set it for ntape package  000767 0a 000644 4470 00 9-589 sxl7 ntapes remember current tape index  9-590  000770 0a 000755 2220 00 9-591 ldx2 svwx2 restore X2 000771 aa 000001 7100 12 9-592 tra 1,2 take EOT return  9-593  9-594 " 9-595  9-596 " This is the utility subroutine package for SAVE and RESTOR.  9-597  9-598 " tsx2 getbits get free storage for current 32K block  9-599 " tra nobits if all addresses are free 9-600  000772 0a 001025 4500 00 9-601 getbits: stz bits clear result 9-602  000773 aa 2 04033 2351 00 9-603 lda bf|svp.sva+sva.done  000774 aa 000005 7730 00 9-604 lrl 5  000775 aa 2 00000 2341 00 9-605 szn bf|svh.allsw if allsw, dont get bits from fsdct  000776 0a 001003 6010 00 9-606 tnz doall dump all sectors  9-607  000777 aa 000005 7350 00 9-608 als 5 now have 0 mod 32 address  001000 aa 0 03000 0605 05 9-609 csl (pr,al),(),bool(03) get 32 bits from map  001001 aa 204040 000040 9-610 descb bf|svp.bits,32  001002 0a 001025 010040 9-611 descb bits(1),32  9-612  001003 aa 000015 7720 00 9-613 doall: qrl 18-5 if we should start 001004 aa 400000 2350 03 9-614 lda =o400000,du in middle of string  001005 aa 000000 7310 02 9-615 ars 0,qu make n bits  001006 0a 001025 2550 00 9-616 orsa bits  9-617  001007 aa 2 04033 2351 00 9-618 lda bf|svp.sva+sva.done check if tail of bits should be done  001010 aa 000037 2750 07 9-619 ora =o37,dl  001011 aa 2 04032 1751 00 9-620 sba bf|svp.sva+sva.last  001012 0a 001020 6044 00 9-621 tmoz notail  001013 aa 000000 6270 05 9-622 eax7 0,al no, or in some tail bits  001014 aa 000000 2350 07 9-623 lda =0,dl  001015 aa 000001 3360 07 9-624 lcq =1,dl  001016 aa 000003 7370 17 9-625 lls 3,7  001017 0a 001025 2550 00 9-626 orsa bits  9-627  001020 0a 002356 2350 00 9-628 notail: lda =o377777777770 check if nothing to do  001021 0a 001025 3550 00 9-629 ansa bits  001022 0a 001025 1150 00 9-630 cmpa bits  001023 aa 000000 6000 12 9-631 tze 0,2  001024 aa 000001 7100 12 9-632 tra 1,2 normal return 9-633  9-634  001025 9-635 bits: bss ,1 free storage bits 9-636  9-637 " 9-638  9-639 " tsx2 disk_io to write or read block on disk  9-640 " arg io_proc either rdev or wdev  9-641  001026 0a 001075 7420 00 9-642 disk_io: stx2 diox2 save X2  001027 0a 001076 7400 00 9-643 stx0 diox2+1 and X0  001030 aa 2 04034 7201 00 9-644 lxl0 bf|svp.sva+sva.devt device ID in X0  001031 aa 000017 3600 03 9-645 anx0 =o17,du ..  9-646  001032 0a 001317 2350 00 9-647 again: lda top compute length of xfer  001033 0a 001316 1750 00 9-648 sba base  001034 aa 000004 7350 00 9-649 als 4 in 64 words 001035 0a 001166 7550 00 9-650 sta iolen  9-651  001036 0a 001316 2360 00 9-652 ldq base  001037 0a 001075 6000 00 9-653 tze diox2 all bits on 001040 aa 777777 3760 07 9-654 anq =-1,dl get addr only  001041 aa 012233 5060 70 9-655 div amaxio,*0 compute number of sectors left in unit  001042 aa 000000 5310 00 9-656 neg  001043 aa 012233 0750 70 9-657 ada amaxio,*0  001044 aa 000004 7350 00 9-658 als 4  001045 0a 001166 1150 00 9-659 cmpa iolen don't read past end of unit  001046 0a 001050 6050 00 9-660 tpl *+2  001047 0a 001166 7550 00 9-661 sta iolen  9-662  001050 aa 000050 7730 00 9-663 lrl 36+4  001051 0a 001316 2350 00 9-664 lda base set starting address 001052 aa 000037 3750 07 9-665 ana =o37,dl  001053 aa 000034 7350 00 9-666 als 10+18  001054 0a 001165 7550 00 9-667 sta iooff+1  9-668  001055 0a 001316 2350 00 9-669 lda base get multics address  001056 aa 777777 3750 07 9-670 ana =-1,dl 001057 0a 001316 0560 00 9-671 asq base  001060 aa 012216 7020 00 9-672 tsx2 mulbos  001061 0a 002360 0000 20 9-673 arg =itp(bf,svp.sva+sva.devt),*  001062 0a 000436 7100 00 9-674 tra x2 001063 0a 001166 7510 74 9-675 stca iolen,74  9-676  001064 0a 001166 2350 00 9-677 lda iolen  001065 0a 001075 2220 00 9-678 ldx2 diox2 restore X2 001066 aa 000000 7020 32 9-679 tsx2 0,2* do disk I/O 001067 0a 002360 0000 20 9-680 arg =itp(bf,svp.sva+sva.devt),*  001070 0a 001164 0000 20 9-681 arg iooff,*  001071 0a 001100 7100 00 9-682 tra ioerr tra if error  9-683  001072 0a 001316 2350 00 9-684 iod: lda base is more to be done?  001073 0a 001317 1150 00 9-685 cmpa top  001074 0a 001032 6040 00 9-686 tmi again  9-687  001075 0a 001075 6220 00 9-688 diox2: eax2 * restore X2  001076 0a 001076 6200 00 9-689 eax0 * and X0 001077 aa 000001 7100 12 9-690 tra 1,2 and return  9-691  9-692 " 9-693  001100 9-694 ioerr:  001100 aa 012236 2340 20 9-695 szn disk_brief,* brief mode?  001101 0a 001111 6010 00 9-696 tnz ioer1 if so, skip message 001102 aa 012241 7020 00 9-697 tsx2 erpt  001103 aa 026 163 164 141 9-698 acc 'start of 64 word reads'  001104 aa 162 164 040 157 001105 aa 146 040 066 064 001106 aa 040 167 157 162 001107 aa 144 040 162 145 001110 aa 141 144 163 000 9-699  001111 0a 001166 7210 00 9-700 ioer1: lxl1 iolen if error, read each 64 words 001112 aa 007777 3610 03 9-701 anx1 =o7777,du so pages after error will be read  9-702 "and so error will be isolated  9-703  001113 0a 001166 2350 00 9-704 sloop: lda iolen  001114 0a 002362 3750 00 9-705 ana =o777777770000 001115 aa 000001 2750 07 9-706 ora =1,dl  001116 0a 001075 2220 00 9-707 ldx2 diox2 restore X2 001117 aa 000000 7020 32 9-708 tsx2 0,2*  001120 0a 002360 0000 20 9-709 arg =itp(bf,svp.sva+sva.devt),*  001121 0a 001164 0000 20 9-710 arg iooff,*  001122 0a 001143 7100 00 9-711 tra iofatal if error  9-712  001123 aa 000100 2350 03 9-713 sner: lda 64,du bump addr  001124 0a 001165 0550 00 9-714 asa iooff+1  001125 aa 000014 7710 00 9-715 arl 12 001126 0a 001166 0550 00 9-716 asa iolen  001127 aa 777777 6210 11 9-717 eax1 -1,1  001130 0a 001113 6054 00 9-718 tpnz sloop 9-719  001131 aa 012236 2340 20 9-720 szn disk_brief,*  001132 0a 001142 6010 00 9-721 tnz ioer2  001133 aa 012241 7020 00 9-722 tsx2 erpt  001134 aa 024 145 156 144 9-723 acc 'end of 64 word reads' 001135 aa 040 157 146 040 001136 aa 066 064 040 167 001137 aa 157 162 144 040 001140 aa 162 145 141 144 001141 aa 163 000 000 000 001142 0a 001072 7100 00 9-724 ioer2: tra iod  9-725  9-726 " 9-727  001143 9-728 iofatal:  001143 0a 001166 2350 00 9-729 lda iolen print error with multics addr  001144 aa 012217 7020 00 9-730 tsx2 bosmul  001145 0a 002360 0000 20 9-731 arg =itp(bf,svp.sva+sva.devt),*  001146 0a 000436 7100 00 9-732 tra x2 001147 0a 001167 7550 00 9-733 sta error_sector  001150 aa 012241 7020 00 9-734 tsx2 erpt  001151 aa 037 165 156 162 9-735 acc 'unrecoverable error, record ^d.'  001152 aa 145 143 157 166 001153 aa 145 162 141 142 001154 aa 154 145 040 145 001155 aa 162 162 157 162 001156 aa 054 040 162 145 001157 aa 143 157 162 144 001160 aa 040 136 144 056 001161 0a 001167 0000 00 9-736 arg error_sector  9-737  001162 0a 001322 7500 00 9-738 stc2 fatalsw  001163 0a 001123 7100 00 9-739 tra sner  9-740  9-741  9-742 even  001164 aa 000001 000043 9-743 iooff: its tmp,* location for disk I/O 001165 0a 001164 000000 001166 9-744 iolen: bss ,1 vfd 24/sector_address,12/sector_count  001167 9-745 error_sector:  001167 9-746 bss ,1 for printing message  9-747  9-748 " 9-749  9-750 " tsx2 copy_to_preamble to copy cur vol info into preamble  9-751 "  9-752 " tsx2 copy_from_preamble to retrieve cur vol info from preamble  9-753 "  9-754  001170 9-755 copy_to_preamble:  001170 aa 2 00003 2361 00 9-756 ldq bf|svh.curvol get current volume number  001171 aa 000001 1760 07 9-757 sbq 1,dl minus 1  001172 aa 000020 4020 07 9-758 mpy sva_size,dl multiply by size of array element  001173 aa 000002 7360 00 9-759 qls 2 multiply by 4  9-760  001174 aa 0 00100 1005 06 9-761 mlr (pr,ql),(pr) copy array element into preamble  001175 aa 200020 000100 9-762 desc9a bf|svh.sva,sva_size*4  001176 aa 204020 000100 9-763 desc9a bf|svp.sva,sva_size*4  9-764  001177 aa 000000 7100 12 9-765 tra 0,2 return to caller  9-766  9-767  9-768  001200 9-769 copy_from_preamble: 001200 aa 2 00003 2361 00 9-770 ldq bf|svh.curvol get current volume number  001201 aa 000001 1760 07 9-771 sbq 1,dl minus 1  001202 aa 000020 4020 07 9-772 mpy sva_size,dl compute array element offset  001203 aa 000002 7360 00 9-773 qls 2 as character offset 9-774  001204 aa 0 00106 1005 00 9-775 mlr (pr),(pr,ql) copy array element back from preamble 001205 aa 204020 000100 9-776 desc9a bf|svp.sva,sva_size*4  001206 aa 200020 000100 9-777 desc9a bf|svh.sva,sva_size*4  9-778  001207 aa 000000 7100 12 9-779 tra 0,2 return to caller  9-780  9-781 " 9-782  9-783 " Queue Manipulation Routines.  9-784 "  9-785 " ldx7 flags,du flags for queue entry  9-786 " tsx2 setq to set ID and flags in queue entry 9-787 "  9-788 " tsx2 comp_base to compute base and top for disk I/O  9-789 "  9-790 " tsx2 nextq to chain to next queue entry  9-791 " return with indicators set from stopper  9-792  001210 0a 001314 2350 00 9-793 setq: lda id get ID  001211 aa 000001 7550 13 9-794 sta 1,3 and place in queue entry  9-795  001212 0a 001025 2360 00 9-796 ldq bits get free storage bits  001213 aa 000001 7360 00 9-797 qls 1 shift out previous bit  001214 0a 001025 7560 00 9-798 stq bits and save 001215 0a 001217 6050 00 9-799 tpl *+2 if unused record, 001216 aa 000004 2670 03 9-800 orx7 tpskip,du set skip flag  001217 aa 000000 4470 13 9-801 sxl7 0,3 set flags in queue entry 9-802  001220 0a 001314 0540 00 9-803 aos id bump ID to next devadd 001221 aa 000000 7100 12 9-804 tra 0,2 and return to caller  9-805  9-806  001222 aa 000000 7270 13 9-807 comp_base:lxl7 0,3 get flags from queue entry  001223 aa 000004 3070 03 9-808 canx7 tpskip,du skip this?  001224 aa 000000 6010 12 9-809 tnz 0,2 if so avoid setting base  9-810  001225 aa 000001 2350 13 9-811 lda 1,3 get ID  001226 0a 001316 3540 00 9-812 stac base set base if first time  001227 aa 000001 0750 07 9-813 ada 1,dl bump by 1  001230 0a 001317 7550 00 9-814 sta top and set top  9-815  001231 aa 000000 7100 12 9-816 tra 0,2 return to caller  9-817  9-818  001232 aa 000004 6230 13 9-819 nextq: eax3 4,3 step to next queue entry  001233 0a 001540 1030 03 9-820 cmpx3 ql+128,du and loop if at end  001234 0a 001236 6040 00 9-821 tmi *+2 ..  001235 0a 001340 6230 00 9-822 eax3 ql ..  9-823  001236 aa 000003 2340 13 9-824 szn 3,3 set indicators from queue stopper 001237 aa 000000 7100 12 9-825 tra 0,2 and return to caller  9-826  9-827 " 9-828  9-829 " tsx2 resetq to read/write header and turn off queue  9-830 "  9-831 " tsx2 ckmore to see if anything more to do  9-832 " tra nothing return here if all done  9-833 "  9-834  001240 9-835 resetq: 001240 aa 000000 6270 00 9-836 eax7 0 reset done bit for header  001241 0a 001330 4470 00 9-837 sxl7 qh  001242 aa 000002 6270 00 9-838 eax7 tpdone and turn on for remainder of list 001243 0a 001334 4470 00 9-839 sxl7 qp including preamble record 001244 0a 001340 6230 00 9-840 eax3 ql  001245 aa 000000 4470 13 9-841 rsql: sxl7 0,3  001246 aa 000004 6230 13 9-842 eax3 4,3 step to next queue entry 001247 0a 001540 1030 03 9-843 cmpx3 ql+128,du test for completion  001250 0a 001245 6040 00 9-844 tmi rsql ..  001251 aa 000000 7100 12 9-845 tra 0,2 return when finished  9-846  9-847  001252 9-848 ckmore: 001252 aa 2 04036 2341 00 9-849 szn bf|svp.sva+sva.skip skip bit ON?  001253 aa 000000 6010 12 9-850 tnz 0,2 if so, take end return  9-851  001254 aa 2 04033 2351 00 9-852 lda bf|svp.sva+sva.done make sure something is left to do  001255 aa 2 04032 1151 00 9-853 cmpa bf|svp.sva+sva.last  001256 aa 000000 6054 12 9-854 tpnz 0,2  001257 aa 000001 7100 12 9-855 tra 1,2  9-856  9-857 " 9-858  9-859 " Routine to Print Tape Starting Point. 9-860 "  9-861 " tsx2 pprint  9-862 "  9-863  001260 0a 001307 7420 00 9-864 pprint: stx2 pprx2 save X2 9-865  001261 aa 2 04034 7271 00 9-866 lxl7 bf|svp.sva+sva.devt get devt word 001262 aa 777760 3670 03 9-867 anx7 =o777760,du mask to get config card pointer  001263 aa 6 00001 2351 17 9-868 lda com|DISK_cd.sub,7 get subsystem name  001264 0a 001311 7550 00 9-869 sta ppname and save  001265 aa 2 04034 2351 00 9-870 lda bf|svp.sva+sva.devt get devt word again  001266 aa 000022 7710 00 9-871 arl 18 right-justify device number  001267 aa 000777 3750 07 9-872 ana =o777,dl mask it  001270 0a 001312 7550 00 9-873 sta ppdev and save  9-874  001271 aa 012241 7020 00 9-875 tsx2 erpt print out info  001272 aa 030 136 101 040 9-876 acc "^A (^a ^d) ^d. ON ^g ^d." 001273 aa 050 136 141 040 001274 aa 136 144 051 040 001275 aa 136 144 056 040 001276 aa 117 116 040 136 001277 aa 147 040 136 144 001300 aa 056 000 000 000 001301 0a 001313 0000 00 9-877 arg ppdesc 001302 0a 001311 0000 00 9-878 arg ppname 001303 0a 001312 0000 00 9-879 arg ppdev  001304 aa 2 04033 0001 00 9-880 arg bf|svp.sva+sva.done  001305 0a 000641 0000 00 9-881 arg subsysname 001306 0a 000642 0000 00 9-882 arg tapen  9-883  001307 0a 001307 6220 00 9-884 pprx2: eax2 * restore X2  001310 aa 000000 7100 12 9-885 tra 0,2 return to caller  9-886  001311 9-887 ppname: bss ,1  001312 9-888 ppdev: bss ,1  001313 aa 204020 000040 9-889 ppdesc: desc9a bf|svp.sva+sva.pvname,32 9-890  9-891 " 9-892  001314 aa 000000 000000 9-893 id: oct 0 current ID for queue entry  001315 aa 000000 000000 9-894 recs: oct 0 count records saved/restored  001316 9-895 base: bss ,1 start of block for disk I/O  001317 9-896 top: bss ,1 end of block for disk I/O  001320 9-897 qtemp: bss ,1 place keeper in queue  001321 9-898 rtemp: bss ,1 temporary  001322 9-899 fatalsw: bss ,1 9-900  9-901  001323 aa 000000 0110 03 9-902 eight  001324 aa 000000 0110 03 001325 aa 000000 0110 03 001326 aa 000000 0110 03 001327 aa 000000 0110 03 001330 0a 001334 000000 9-903 qh: zero qp to write out header  001331 aa 000000 000000 9-904 zero  001332 aa 222000 004000 9-905 vfd 3/bf,15/svhc,18/svh_length 001333 aa 000000 000000 9-906 zero  9-907  001334 0a 001340 000000 9-908 qp: zero ql 001335 aa 000000 000000 9-909 zero  001336 aa 204000 016000 9-910 vfd 3/bf,15/svp,18/svp_length+svl_length  001337 aa 000000 000000 9-911 zero  9-912  9-913 eight  001340 9-914 ql: bss ,128  9-915  9-916  9-917 " End of include file ...... sav_util.incl.alm  9-918  31  32 " 33  001540 34 go: 001540 0a 001240 7020 00 35 startape: tsx2 resetq reset done for header, set everything else  36  001541 aa 006005 7020 00 37 tsx2 opentaper start tape 001542 0a 001330 000000 38 zero qh  001543 0a 000642 000000 39 zero tapen 40  001544 0a 001330 6230 00 41 eax3 qh wait for header to read in  001545 0a 000740 7020 00 42 tsx2 savwait ..  001546 0a 002314 0000 00 43 arg erh  001547 0a 001642 7100 00 44 tra eot  45  001550 aa 2 22000 2351 00 46 lda bf|svhc+svh.allsw get ALL flag from tape  001551 aa 2 00000 7551 00 47 sta bf|svh.allsw copy into header  48  001552 0a 001737 7020 00 49 tsx2 rqm merge requests  50  001553 0a 001170 7020 00 51 rpre: tsx2 copy_to_preamble copy info into preamble 52  001554 0a 001252 7020 00 53 tsx2 ckmore anything to do?  001555 0a 001603 7100 00 54 tra nxtvol if not, skip this code 55  001556 aa 2 00003 2351 00 56 lda bf|svh.curvol get current volume index 001557 aa 000030 7350 00 57 als 24 move to ID position  001560 0a 001335 7550 00 58 sta qp+1 set ID for reading preamble  59  001561 aa 000000 7270 07 60 lxl7 0,dl set queue entry to read tape  001562 0a 001334 4470 00 61 sxl7 qp ..  62  001563 0a 001334 6230 00 63 eax3 qp wait for preamble to read in  001564 0a 000740 7020 00 64 tsx2 savwait ..  001565 0a 002327 0000 00 65 arg erp  001566 0a 001642 7100 00 66 tra eot  67  001567 0a 001651 7020 00 68 tsx2 set_preamble_info copy pertinent info into preamble  001570 0a 001260 7020 00 69 tsx2 pprint announce tape contents  70  001571 0a 002312 5540 00 71 stc1 firstsw set first time switch  001572 0a 002313 4500 00 72 stz lastsw clear last time switch 001573 0a 000702 7020 00 73 tsx2 savloop enter volume loop  001574 0a 001610 0000 00 74 arg dorestor  75  001575 0a 002313 5540 00 76 stc1 lastsw set last time switch  001576 0a 001610 7020 00 77 drain: tsx2 dorestor do last lap of queue  001577 0a 001340 1030 03 78 cmpx3 ql,du until back at beginning  001600 0a 001576 6010 00 79 tnz drain ..  80  001601 0a 001322 2140 00 81 sznc fatalsw fatal errors on this volume? 001602 0a 001716 6010 00 82 tnz force_salv if so, force a salvage later  83  001603 aa 2 00003 2351 00 84 nxtvol: lda bf|svh.curvol have we processed last volume?  001604 aa 2 00002 1151 00 85 cmpa bf|svh.nvol ..  001605 0a 000425 6050 00 86 tpl done if so, stop now  87  001606 aa 2 00003 0541 00 88 aos bf|svh.curvol step to next volume  001607 0a 001553 7100 00 89 tra rpre ..  90  91 " 001610 0a 001640 7420 00 92 dorestor: stx2 dorsx2 save X2  93  001611 0a 002312 2340 00 94 more: szn firstsw first time through loop? 001612 0a 001630 6010 00 95 tnz qsetl if so, get tape rolling 96  001613 0a 001316 4500 00 97 stz base clear base of block  001614 0a 001320 7430 00 98 stx3 qtemp save current queue pointer 99  001615 0a 000740 7020 00 100 wait: tsx2 savwait wait for I/O and check  001616 0a 001664 0000 00 101 arg rserr  001617 0a 001642 7100 00 102 tra eot  103  001620 0a 001222 7020 00 104 tsx2 comp_base compute base and top  001621 0a 001232 7020 00 105 tsx2 nextq chain to next queue entry  001622 0a 001615 6000 00 106 tze wait and loop until queue stopper 107  001623 0a 001026 7020 00 108 tsx2 disk_io do disk output  001624 aa 012212 0000 00 109 arg wdev ..  110  001625 0a 002313 2340 00 111 szn lastsw last time? 001626 0a 001640 6010 00 112 tnz dorsx2 if so, don't queue more tape I/O  113  001627 0a 001320 2230 00 114 ldx3 qtemp restore queue pointer  001630 aa 000000 6270 00 115 qsetl: eax7 0 clear all queue flags  001631 0a 001210 7020 00 116 tsx2 setq go set ID and flags in queue entry  001632 0a 001232 7020 00 117 tsx2 nextq chain to next queue entry  001633 0a 001630 6000 00 118 tze qsetl until queue stopper 119  001634 aa 006007 7020 00 120 tsx2 runtape now keep the tape moving 121  001635 0a 001340 1030 03 122 cmpx3 ql,du fill whole 32K queue  001636 0a 001611 6010 00 123 tnz more until queue lapped  001637 0a 002312 4500 00 124 stz firstsw then, clear first time flag  125  001640 0a 001640 6220 00 126 dorsx2: eax2 * restore X2  001641 aa 000000 7100 12 127 tra 0,2 return to caller  128  129 " 130  001642 aa 000001 2350 13 131 eot: lda 1,3 save current place  001643 aa 777777 3750 07 132 ana -1,dl mask device address 001644 aa 2 04033 7551 00 133 sta bf|svp.sva+sva.done and save  134  001645 0a 001026 7020 00 135 tsx2 disk_io do last block of disk output 001646 aa 012212 0000 00 136 arg wdev ..  137  001647 0a 001200 7020 00 138 tsx2 copy_from_preamble copy preamble back into header 139  001650 0a 001540 7100 00 140 tra startape now, start new tape  141  142 " 143  001651 144 set_preamble_info:  001651 aa 2 00003 2361 00 145 ldq bf|svh.curvol get current volume index 001652 aa 000001 1760 07 146 sbq 1,dl minus 1  001653 aa 000020 4020 07 147 mpy sva_size,dl compute array element offset  001654 aa 2 00020 3701 06 148 epp xs1,bf|svh.sva,ql get pointer to array element 149  001655 aa 4 00013 2351 00 150 lda xs1|sva.done copy pertinent info into preamble 001656 aa 2 04033 7551 00 151 sta bf|svp.sva+sva.done .. 152  001657 aa 4 00012 2351 00 153 lda xs1|sva.last ..  001660 aa 2 04032 7551 00 154 sta bf|svp.sva+sva.last .. 155  001661 aa 4 00014 2351 00 156 lda xs1|sva.devt ..  001662 aa 2 04034 7551 00 157 sta bf|svp.sva+sva.devt .. 158  001663 aa 000000 7100 12 159 tra 0,2 return to caller  160  161 " 162  001664 0a 001714 7420 00 163 rserr: stx2 rserx2 save return 164  001665 aa 000001 2350 13 165 lda 1,3 get ID  001666 aa 777777 3750 07 166 ana -1,dl mask the device address 001667 0a 001321 7550 00 167 sta rtemp and save for printing message  168  001670 aa 012241 7020 00 169 tsx2 erpt  001671 aa 046 165 156 162 170 acc 'unrecoverable error reading record ^d.'  001672 aa 145 143 157 166 001673 aa 145 162 141 142 001674 aa 154 145 040 145 001675 aa 162 162 157 162 001676 aa 040 162 145 141 001677 aa 144 151 156 147 001700 aa 040 162 145 143 001701 aa 157 162 144 040 001702 aa 136 144 056 000 001703 0a 001321 0000 00 171 arg rtemp  172  001704 aa 000002 2350 13 173 lda 2,3 get location of disk record contents  001705 aa 077777 3750 03 174 ana =o077777,du mask it  001706 aa 000002 7350 00 175 als 2 compute character offset  001707 aa 010000 2360 03 176 ldq 1024*4,du record length in QU 001710 aa 000141 1004 00 177 mlr (),(pr,rl,au),fill(0) clear the record in error  001711 0a 001711 000000 178 desc9a *,0 001712 aa 100000 000002 179 desc9a tmp|0,qu  180  001713 0a 001322 7500 00 181 stc2 fatalsw indicate fatal I/O error 001714 0a 001714 6220 00 182 rserx2: eax2 * restore X2  001715 aa 000000 7100 12 183 tra 0,2 return to caller  184  185 " 186  001716 187 force_salv: 001716 aa 000000 2350 07 188 lda LABEL_ADDR,dl get disk address of label  001717 aa 012216 7020 00 189 tsx2 mulbos convert to BOS address  001720 0a 002360 0000 20 190 arg =itp(bf,svp.sva+sva.devt),*  001721 0a 001603 7100 00 191 tra nxtvol 001722 0a 001321 7550 00 192 sta rtemp save temporarily  193  001723 aa 012211 7020 00 194 tsx2 rdev read the label  001724 0a 002360 0000 20 195 arg =itp(bf,svp.sva+sva.devt),*  001725 aa 2 12000 0001 00 196 arg bf|LABEL  001726 0a 001603 7100 00 197 tra nxtvol 198  001727 aa 2 12602 4501 00 199 stz bf|LABEL+label.time_map_updated This will cause salvager to run.  001730 aa 2 12603 4501 00 200 stz bf|LABEL+label.time_map_updated+1 ..  201  001731 0a 001321 2350 00 202 lda rtemp get label address again 001732 aa 012212 7020 00 203 tsx2 wdev write it back out  001733 0a 002360 0000 20 204 arg =itp(bf,svp.sva+sva.devt),*  001734 aa 2 12000 0001 00 205 arg bf|LABEL  001735 0a 001603 7100 00 206 tra nxtvol 207  001736 0a 001603 7100 00 208 tra nxtvol continue to next volume  209  210 " 211  212 " RESTOR request merger 213 " Nov. 18, 1975 by Bernard Greenberg  214 "  215 "  216 " This routine operates upon the request lines (cards) given to RESTOR.  217 " It checks their internal consistency, and their consistency with the  218 " data saved on a SAVE tape/disk. It reorders the requests to be in the  219 " same order as the tape/disk, by volume name. Card slots for which  220 " there are no requests for a given volume on the tape/disk are marked  221 " with a "skip" flag.  222 "  223 " It is essential to the functioning of this algorithm, which reorders  224 " the requests in place, that it remove duplicate requests for any  225 " volume, and those which do not correspond to a volume on the  226 " tape/disk. This is not merely an error check.  227 "  228 " It is assumed that there are no duplicate volumes on the tape/disk, or  229 " other instances than the first can never be RESTORed. 230 "  231  001737 232 rqm:  001737 0a 002263 7420 00 233 stx2 rqm_x2 save exit 234  235 " Initialize limits for starting and ending scans.  236  001740 aa 2 22002 2361 00 237 ldq bf|svhc+svh.nvol  001741 aa 000020 4020 03 238 mpy sva_size,du  001742 0a 002310 7560 00 239 stq rqm_limt tape limit  240  001743 aa 2 00002 2361 00 241 ldq bf|svh.nvol  001744 aa 000020 4020 03 242 mpy sva_size,du  001745 0a 002307 7560 00 243 stq rqm_limc cards limit  244  001746 aa 2 00003 2361 00 245 ldq bf|svh.curvol  001747 aa 000001 1760 07 246 sbq 1,dl make org 0  001750 aa 000020 4020 03 247 mpy sva_size,du  001751 0a 002306 7560 00 248 stq rqm_start  249  250  251 " If more tape vols than reqs, fill out with skip cards.  252  001752 0a 002307 2360 00 253 ldq rqm_limc cards  001753 0a 002310 1160 00 254 rqm_fills:cmpq rqm_limt tape  001754 0a 001760 6050 00 255 tpl rqm_filld tra if cards > tape  001755 aa 2 00036 7501 02 256 stc2 bf|svh.sva+sva.skip,qu  001756 aa 000020 6360 02 257 eaq sva_size,qu next req  001757 0a 001753 7100 00 258 tra rqm_fills  001760 0a 002307 7560 00 259 rqm_filld:stq rqm_limc see next comment  260  261 " We have now insured that there are at least as many  262 " cards as tape requests. This will be very important later on. 263  264 " 265  266 " Scan card requests for duplicates, and  267 " volumes not on tape. When this has been done, 268 " there will be fewer or same non-skip cards  269 " than tape requests.  270  001761 0a 002306 2210 00 271 ldx1 rqm_start begin outer loop on cards  001762 0a 001764 7100 00 272 tra *+2  001763 aa 000020 6210 11 273 rqm_lp1: eax1 sva_size,1  001764 0a 002307 1010 00 274 cmpx1 rqm_limc are we done?  001765 0a 002065 6050 00 275 tpl rqm_2 yes, begin next phase  276  001766 aa 2 00020 3701 11 277 epp xs1,bf|svh.sva,1 address sva entry 001767 aa 4 00016 2341 00 278 szn xs1|sva.skip is this entry already skipped?  001770 0a 001763 6010 00 279 tnz rqm_lp1 yes, go on to next.  001771 0a 002311 7410 00 280 stx1 rqm_curvol save for later compare.  281  282  283 " Scan other cards to eliminate duplicates. 284 "  001772 0a 002306 2230 00 285 ldx3 rqm_start scan  001773 0a 001775 7100 00 286 tra *+2  001774 aa 000020 6230 13 287 rqm_lp2: eax3 sva_size,3 move on scanning cards 001775 0a 002307 1030 00 288 cmpx3 rqm_limc done with cards?  001776 0a 002033 6050 00 289 tpl rqm_e1 done with check  001777 0a 002311 1030 00 290 cmpx3 rqm_curvol is it the one we are checking against?  002000 0a 001774 6000 00 291 tze rqm_lp2 yes, don't compare  292  002001 aa 2 00020 3715 13 293 epp xs2,bf|svh.sva,3 address sva entry 002002 aa 5 00016 2341 00 294 szn xs2|sva.skip skip this one too?  002003 0a 001774 6010 00 295 tnz rqm_lp2 yes  296  002004 aa 0 00100 1065 00 297 cmpc (pr),(pr) "compare the names.  002005 aa 400000 000040 298 xs1desc: desc9a xs1|sva.pvname,32  002006 aa 500000 000040 299 xs2desc: desc9a xs2|sva.pvname,32  002007 0a 001774 6010 00 300 tnz rqm_lp2 not same, ok. 301  002010 aa 012241 7020 00 302 tsx2 erpt type out complaint  002011 aa 061 151 147 156 303 acc "ignoring duplicate request for vol ^A, ^d. to ^d."  002012 aa 157 162 151 156 002013 aa 147 040 144 165 002014 aa 160 154 151 143 002015 aa 141 164 145 040 002016 aa 162 145 161 165 002017 aa 145 163 164 040 002020 aa 146 157 162 040 002021 aa 166 157 154 040 002022 aa 136 101 054 040 002023 aa 136 144 056 040 002024 aa 164 157 040 136 002025 aa 144 056 000 000 002026 0a 002006 0000 00 304 arg xs2desc  002027 aa 5 00013 0001 00 305 arg xs2|sva.done  002030 aa 5 00012 0001 00 306 arg xs2|sva.last  307  002031 aa 5 00016 7501 00 308 stc2 xs2|sva.skip skip the duplicate  002032 0a 001774 7100 00 309 tra rqm_lp2  310  311 " 312  313 " All duplicates weeded out for xs1 -> sva. 314 " Now make sure such a vol is present on tape.  315  002033 0a 002306 2230 00 316 rqm_e1: ldx3 rqm_start  002034 0a 002036 7100 00 317 tra *+2  002035 aa 000020 6230 13 318 rqm_l2: eax3 sva_size,3 scan on 002036 0a 002310 1030 00 319 cmpx3 rqm_limt are we done?  002037 0a 002046 6050 00 320 tpl rqm_novol yes, could not find it. Too bad.  321  002040 aa 2 22020 3715 13 322 epp xs2,bf|svhc+svh.sva,3  002041 aa 0 00100 1065 00 323 cmpc (pr),(pr) "same name?  002042 aa 400000 000040 324 desc9a xs1|sva.pvname,32  002043 aa 500000 000040 325 desc9a xs2|sva.pvname,32  002044 0a 002035 6010 00 326 tnz rqm_l2 not found, scan tape more  002045 0a 001763 7100 00 327 tra rqm_lp1 found it, scan cards more.  328  329  002046 330 rqm_novol:  002046 aa 012241 7020 00 331 tsx2 erpt  002047 aa 050 116 157 040 332 acc "No records for vol ^A; igNoring request." 002050 aa 162 145 143 157 002051 aa 162 144 163 040 002052 aa 146 157 162 040 002053 aa 166 157 154 040 002054 aa 136 101 073 040 002055 aa 151 147 116 157 002056 aa 162 151 156 147 002057 aa 040 162 145 161 002060 aa 165 145 163 164 002061 aa 056 000 000 000 002062 0a 002005 0000 00 333 arg xs1desc  334  002063 aa 4 00016 7501 00 335 stc2 xs1|sva.skip skip it  002064 0a 001763 7100 00 336 tra rqm_lp1 loop on cards 337  338 " There are now no duplicate cards, or cards that do not correspond to  339 " tape requests.  340  341 " 342  343 " Phase 2 of request merge. We reorder the cards to be in the same  344 " positions as the tape requests. Where there is a tape request for  345 " which there appears no card, we put a skip card. We do this by  346 " scanning the tape requests in order, placing the card that corresponds  347 " to that request, if any, in that slot, or a skip card if there is  348 " none. In the case that a corresponding card is found, we swap the  349 " found card with the current resident of the current slot (card slot  350 " corresponding to tape slot). We have ensured that there is only, if  351 " any, one card per tape request. Thus, when we have scanned any number  352 " of tape requests, there are no cards for them in slots higher than the  353 " processed tape requests. In the case where a card is found for a tape  354 " request, we swap it into place. The card with which it is swapped,  355 " i.e., the card currently at the current index, must either be a skip  356 " card, or a card for an as yet unprocessed request, as we have just  357 " shown that cards for processed requests cannot appear. Thus, we will  358 " process the card later. The case where no card is found for the  359 " current tape request is even more involved, and explained at rqm_lpe4.  360 "  361  002065 0a 002306 2210 00 362 rqm_2: ldx1 rqm_start  002066 0a 002070 7100 00 363 tra *+2  002067 aa 000020 6210 11 364 rqm_lp3: eax1 sva_size,1 scan on tape  002070 0a 002310 1010 00 365 cmpx1 rqm_limt tra when done  002071 0a 002261 6050 00 366 tpl rqmlpe3 tra when done.  002072 aa 2 22020 3701 11 367 epp xs1,bf|svhc+svh.sva,1 address sva entry  002073 0a 002311 7410 00 368 stx1 rqm_curvol save for compare  369  370 "  371 " Find the card which has the same request name as the tape request  372 " pointed to by xs1. We have ensured that there is not more than one. If  373 " there is none, go to rqm_lpe4. Since, by induction, all card slots  374 " below the current tape slot contain either skip cards or the right  375 " cards, if there is a card for the current tape record at all, it is  376 " either in place now or beyond this point. 377 "  378  002074 0a 002311 2230 00 379 ldx3 rqm_curvol start at current index 002075 0a 002077 7100 00 380 tra *+2  002076 aa 000020 6230 13 381 rqm_lp4: eax3 sva_size,3 scan on cards  002077 0a 002307 1030 00 382 cmpx3 rqm_limc check end of deck  002100 0a 002240 6050 00 383 tpl rqm_lpe4 very interesting case where not found.  384  002101 aa 2 00020 3715 13 385 epp xs2,bf|svh.sva,3 address card. 002102 aa 5 00016 2341 00 386 szn xs2|sva.skip skip this entry?  002103 0a 002076 6010 00 387 tnz rqm_lp4 yes  388  002104 aa 0 00100 1065 00 389 cmpc (pr),(pr) "is this same name?  002105 aa 400000 000040 390 desc9a xs1|sva.pvname,32  002106 aa 500000 000040 391 desc9a xs2|sva.pvname,32  002107 0a 002076 6010 00 392 tnz rqm_lp4 no, not interesting  393  394 " 395  396 " There is a single card corresponding to the tape request pointed to by  397 " xs1. We found it, and xs2 points to it. If it is already in the right  398 " slot (x1 = x3), we are done. If not, the card currently in the current  399 " slot (bf|svh.sva,1) is either a skip card or a card corresponding to a  400 " tape request as yet not scanned. Hence, we swap the card here now  401 " with the card that wants to be here.  402 "  403  002110 aa 2 00020 3701 11 404 epp xs1,bf|svh.sva,1 from hereon in in this loop,  405 "xs1 -> card entry for this tape slot.  406  002111 0a 002311 1030 00 407 cmpx3 rqm_curvol same card?  002112 0a 002114 6000 00 408 tze *+2 yes, no swap  002113 0a 002264 7070 00 409 tsx7 rqm_swap exch sva's at xs1 and xs2  410  411 " Request is in place -- validate parameters.  412  002114 aa 2 22020 3715 11 413 epp xs2,bf|svhc+svh.sva,1 address tape entry in xs2  414 " address card entry in xs1 415  002115 aa 4 00014 2351 00 416 lda xs1|sva.devt  002116 aa 5 00014 6751 00 417 era xs2|sva.devt  002117 aa 000017 3750 07 418 ana =o17,dl  002120 0a 002222 6010 00 419 tnz diff_devt current restr: same type  420  002121 aa 4 00013 2351 00 421 lda xs1|sva.done  002122 aa 5 00013 1151 00 422 cmpa xs2|sva.done  002123 0a 002127 6010 00 423 tnz differs  424  002124 aa 4 00012 2351 00 425 lda xs1|sva.last  002125 aa 5 00012 1151 00 426 cmpa xs2|sva.last  002126 0a 002067 6000 00 427 tze rqm_lp3 take as is, next tape request.  002127 428 differs:  002127 aa 012241 7020 00 429 tsx2 erpt announce bad news.  002130 aa 044 123 141 166 430 acc "Save sequence contains ^A ^d. to ^d." 002131 aa 145 040 163 145 002132 aa 161 165 145 156 002133 aa 143 145 040 143 002134 aa 157 156 164 141 002135 aa 151 156 163 040 002136 aa 136 101 040 136 002137 aa 144 056 040 164 002140 aa 157 040 136 144 002141 aa 056 000 000 000 002142 0a 002006 0000 00 431 arg xs2desc  002143 aa 5 00013 0001 00 432 arg xs2|sva.done  002144 aa 5 00012 0001 00 433 arg xs2|sva.last  434  002145 aa 012241 7020 00 435 tsx2 erpt  002146 aa 041 117 165 164 436 acc "Outstanding request is ^d. to ^d."  002147 aa 163 164 141 156 002150 aa 144 151 156 147 002151 aa 040 162 145 161 002152 aa 165 145 163 164 002153 aa 040 151 163 040 002154 aa 136 144 056 040 002155 aa 164 157 040 136 002156 aa 144 056 000 000 002157 aa 4 00013 0001 00 437 arg xs1|sva.done  002160 aa 4 00012 0001 00 438 arg xs1|sva.last  439  002161 aa 012241 7020 00 440 tsx2 erpt  002162 aa 022 111 163 040 441 acc "Is ^g ^o correct^g"  002163 aa 136 147 040 136 002164 aa 157 040 143 157 002165 aa 162 162 145 143 002166 aa 164 136 147 000 002167 0a 000641 0000 00 442 arg subsysname 002170 0a 000642 0000 00 443 arg tapen  002171 0a 002363 0000 00 444 arg =h!!????  445  002172 0a 002276 7020 00 446 tsx2 ask find out 002173 0a 000436 7100 00 447 tra x2 abort 448  002174 aa 012241 7020 00 449 tsx2 erpt  002175 aa 051 123 150 157 450 acc "Should request be changed to ^d. to ^d.^g"  002176 aa 165 154 144 040 002177 aa 162 145 161 165 002200 aa 145 163 164 040 002201 aa 142 145 040 143 002202 aa 150 141 156 147 002203 aa 145 144 040 164 002204 aa 157 040 136 144 002205 aa 056 040 164 157 002206 aa 040 136 144 056 002207 aa 136 147 000 000 002210 aa 5 00013 0001 00 451 arg xs2|sva.done  002211 aa 5 00012 0001 00 452 arg xs2|sva.last  002212 0a 002363 0000 00 453 arg =h!!????  454  002213 0a 002276 7020 00 455 tsx2 ask  002214 0a 002067 7100 00 456 tra rqm_lp3 leave as is if says no.  457  002215 aa 5 00013 2351 00 458 lda xs2|sva.done  002216 aa 4 00013 7551 00 459 sta xs1|sva.done move tape to cards  002217 aa 5 00012 2351 00 460 lda xs2|sva.last  002220 aa 4 00012 7551 00 461 sta xs1|sva.last  002221 0a 002067 7100 00 462 tra rqm_lp3 process as this.  463  464  002222 aa 012241 7020 00 465 diff_devt:tsx2 erpt cannot handle mismatched devices  002223 aa 052 122 145 161 466 acc "Request for vol ^a differs in device type."  002224 aa 165 145 163 164 002225 aa 040 146 157 162 002226 aa 040 166 157 154 002227 aa 040 136 141 040 002230 aa 144 151 146 146 002231 aa 145 162 163 040 002232 aa 151 156 040 144 002233 aa 145 166 151 143 002234 aa 145 040 164 171 002235 aa 160 145 056 000 002236 0a 002005 0000 00 467 arg xs1desc  002237 0a 000436 7100 00 468 tra x2 469  470 " 471  472 " At this point, we have determined that there is no card containing a  473 " request described by the tape request of the current index (pointed to  474 " by xs1 and x1). We must thus put a skip request in the card slot of  475 " this index. However, the card in this slot now, if not a skip card  476 " already, represents a tape request that we have not yet scanned. We  477 " will exchange it with a skip card of higher index (ahead of us). The  478 " following is a proof that, given that the current card is not a skip  479 " card, a skip card must exist ahead of us. 480 "  481 " The current card, is, by hypothesis, not a skip card. Define that  482 " there are n tape requests, including the current index, left  483 " unprocessed. There are at least n unprocessed cards, possibly  484 " including skip cards put there to fulfill this requirement by the  485 " first loop in the merger program. Now of those n cards, either a skip  486 " card exists among them or does not. Assume one does not. Now there  487 " are n cards corresponding to n tape requests. The first phase of the  488 " merger ensured that there are no duplications among cards, and that  489 " each corresponds to a tape request. Since all cards corresponding to  490 " processed tape requests have been swapped with thereto unprocessed  491 " ones, the n cards from here above must all correspond to unprocessed  492 " tape requests. By definition, the current tape request is considered  493 " unprocessed. Since all cards are different, and they all correspond  494 " to unprocessed tape requests, and there are as many as there are  495 " unprocessed tape requests, there must be a card for each unprocessed  496 " tape request, including the current one. But we arrived at this point  497 " because there is no card for the current tape request. Hence, the  498 " assumption that there does not exist a skip card must be false.  499 " Therefore, there exists a skip card in the n cards. As the current  500 " card is not a skip card, by hypothesis, one must therefore appear  501 " later on. 502 "  503 " Q.E.D.  504 "  505  002240 506 rqm_lpe4:  002240 aa 012241 7020 00 507 tsx2 erpt  002241 aa 027 116 157 040 508 acc "No requests for vol ^A."  002242 aa 162 145 161 165 002243 aa 145 163 164 163 002244 aa 040 146 157 162 002245 aa 040 166 157 154 002246 aa 040 136 101 056 002247 0a 002005 0000 00 509 arg xs1desc announce the news.  510  002250 aa 2 00020 3715 11 511 epp xs2,bf|svh.sva,1 look at card here 002251 aa 5 00016 2341 00 512 szn xs2|sva.skip  002252 0a 002067 6010 00 513 tnz rqm_lp3 will never need this skip, let it go. 514  515 "  516 " If we just branched, there was a skip record here, and there is no  517 " problem. We proceed down the array of tape requests. If we fell  518 " through, there is a card here corresponding to an as yet unprocessed  519 " tape request. Find the skip card which was just proven to exist in  520 " this case, and swap it with this request. 521 "  522  002253 aa 5 00000 3701 00 523 epp xs1,xs2|0 maintain pointer to this card slot  002254 aa 5 00020 3715 00 524 epp xs2,xs2|sva_size try next card 002255 aa 5 00016 2341 00 525 szn xs2|sva.skip skip record?  002256 0a 002254 6000 00 526 tze *-2 loop. Loop _w_i_l_l terminate.  527  002257 0a 002264 7070 00 528 tsx7 rqm_swap skip records. Swap xs1, xs2.  002260 0a 002067 7100 00 529 tra rqm_lp3 move on to next tape record  530  531 "  532 " When the day's work is done, we arrive here. Patch nvol  533 " in the card buffer as a testament to this.  534  002261 aa 2 22002 2351 00 535 rqmlpe3: lda bf|svhc+svh.nvol cards := tape 002262 aa 2 00002 7551 00 536 sta bf|svh.nvol  002263 aa 000000 7100 00 537 rqm_x2: tra *-* 538  539 " 540  541 "  542 " Routine to swap xs1 and xs2 sva entries.  543 "  544  002264 aa 0 06100 0605 00 545 rqm_swap: csl (pr),(pr),bool(6) XOR 002265 aa 400000 001100 546 descb xs1|0,sva_size*36  002266 aa 500000 001100 547 descb xs2|0,sva_size*36  548  002267 aa 0 06100 0605 00 549 csl (pr),(pr),bool(6)  002270 aa 500000 001100 550 descb xs2|0,sva_size*36  002271 aa 400000 001100 551 descb xs1|0,sva_size*36  552  002272 aa 0 06100 0605 00 553 csl (pr),(pr),bool(6)  002273 aa 400000 001100 554 descb xs1|0,sva_size*36  002274 aa 500000 001100 555 descb xs2|0,sva_size*36  556  002275 aa 000000 7100 17 557 tra 0,7  558  559  560 "  561 " Routine to answer questions.  562 "  563  002276 0a 002301 7420 00 564 ask: stx2 askx2 subr to read yes or else  002277 aa 012247 7020 00 565 tsx2 readtty "get answer 002300 0a 002277 7100 00 566 tra *-1  002301 0a 002301 6220 00 567 askx2: eax2 *  002302 aa 012001 2360 00 568 ldq line  002303 0a 002364 1160 00 569 cmpq =hyes " 002304 aa 000000 6010 12 570 tnz 0,2  002305 aa 000001 7100 12 571 tra 1,2  572  573 " 574  575 "  576 " Variables.  577 " All of them are in the UPPER. 578 "  579  002306 580 rqm_start:  002306 aa 000000 0000 00 581 arg 0 sva_size * adjusted index of first vol this call  582  002307 583 rqm_limc:  002307 aa 000000 0000 00 584 arg 0 sva_size * (1+ adjusted index of last vol), for 585 "the request lines (cards) typed in.  002310 586 rqm_limt:  002310 aa 000000 0000 00 587 arg 0 same, but for the requests on tape. 588  002311 589 rqm_curvol: 002311 aa 000000 0000 00 590 arg 0 temp used for comparison of current index pos.  591  592 "  593 " End of request merger 594 "  595  596 " 597  002312 aa 000000 000000 598 firstsw: oct 0  002313 aa 000000 000000 599 lastsw: oct 0  600  002314 aa 012241 7020 00 601 erh: tsx2 erpt  002315 aa 040 106 141 164 602 acc "Fatal error reading save header." 002316 aa 141 154 040 145 002317 aa 162 162 157 162 002320 aa 040 162 145 141 002321 aa 144 151 156 147 002322 aa 040 163 141 166 002323 aa 145 040 150 145 002324 aa 141 144 145 162 002325 aa 056 000 000 000 002326 0a 000436 7100 00 603 tra x2 604  002327 aa 012241 7020 00 605 erp: tsx2 erpt  002330 aa 051 106 141 164 606 acc "Fatal error reading save volume preamble."  002331 aa 141 154 040 145 002332 aa 162 162 157 162 002333 aa 040 162 145 141 002334 aa 144 151 156 147 002335 aa 040 163 141 166 002336 aa 145 040 166 157 002337 aa 154 165 155 145 002340 aa 040 160 162 145 002341 aa 141 155 142 154 002342 aa 145 056 000 000 002343 0a 000436 7100 00 607 tra x2 608  609 " 610 include bos_sdw  10-1 "  10-2 " BEGIN INCLUDE FILE sdw.incl.alm 02/12/74  10-3 "  000014 10-4 equ sdw.add_shift,12  007000 10-5 bool sdw.r1,007000 Ringbrack 1 (DL)  000700 10-6 bool sdw.r2,000700 Ringbrack 2 (DL)  000070 10-7 bool sdw.r3,000070 Ringbrack 3 (DL)  10-8  000004 10-9 bool sdw.df,000004 Directed fault bit (0 -> fault)  000003 10-10 bool sdw.fault_code,000003 Number of directed fault  10-11  377770 10-12 bool sdw.bound,377770 Bound field (DU)  000004 10-13 bool sdw.read,000004 Read permission bit (DU) 000002 10-14 bool sdw.execute,000002 Execute permission bit (DU)  000001 10-15 bool sdw.write,000001 Write permission bit (DU)  10-16  400000 10-17 bool sdw.privileged,400000 Privileged bit (DL) 200000 10-18 bool sdw.unpaged,200000 Unpaged bit (DL)  100000 10-19 bool sdw.entry_bound_sw,100000 Entry bound switch (DL) 040000 10-20 bool sdw.cache,040000 Cache enabled bit (DL)  037777 10-21 bool sdw.entry_bound,037777 Entry bound (DL)  10-22  10-23 "  10-24 " END INCLUDE FILE sdw.incl.alm  10-25 "  611 include bos_tv 11-1 " 11-2 " Begin include file ...... bos_tv.incl.alm 11-3 " Created in November 1971 by N. I. Morris. 11-4 " Modified 9/9/76 by Noel I. Morris 11-5 " Modified by Sherman D. Sprague 02/11/81 for DPS8 support. 11-6 " Modified November 1981 by C. Hornig to remove iom_connect_rel.  11-7 " Modified January 1982 by J. Bongiovanni to add getport_info  11-8 " Modified May 1982 by Sherman D. Sprague to add getmpc.  11-9  11-10 " BOS Utility Package Transfer Vector.  11-11  012000 11-12 equ pagectl,utilorg  012001 11-13 equ line,pagectl+1 012040 11-14 equ arg,line+31  012060 11-15 equ darg,arg+arglen+1  012100 11-16 equ earg,darg+arglen+1 012120 11-17 equ fltscu,earg+arglen+1  11-18  012200 11-19 equ tv_org,utilorg+128 11-20  012200 11-21 equ scan,tv_org+0  012201 11-22 equ arg_count,tv_org+1 012202 11-23 equ nextline,tv_org+2  012203 11-24 equ nlraw,tv_org+3 012204 11-25 equ search,tv_org+4  012205 11-26 equ makefil,tv_org+5  012206 11-27 equ ldcom,tv_org+6 012207 11-28 equ getsec,tv_org+7  012210 11-29 equ cvinit,tv_org+8  012211 11-30 equ rdev,tv_org+9  012212 11-31 equ wdev,tv_org+10 012213 11-32 equ phybos,tv_org+11  012214 11-33 equ bosphy,tv_org+12  012215 11-34 equ phyadd,tv_org+13  012216 11-35 equ mulbos,tv_org+14  012217 11-36 equ bosmul,tv_org+15  012220 11-37 equ lookup_devmodel,tv_org+16  012221 11-38 equ makesdw,tv_org+17  012222 11-39 equ argbos,tv_org+18  012223 11-40 equ argmul,tv_org+19  012224 11-41 equ amdvt,tv_org+20  012225 11-42 equ amfirst,tv_org+21  012226 11-43 equ amlast,tv_org+22  012227 11-44 equ cvnamla,tv_org+23  012230 11-45 equ sect_per_cyl_list,tv_org+24  012231 11-46 equ sect_per_dev_list,tv_org+25  012232 11-47 equ rec_per_dev_list,tv_org+26 012233 11-48 equ amaxio,tv_org+27  012234 11-49 equ rdsec,tv_org+28  012235 11-50 equ wtsec,tv_org+29  012236 11-51 equ disk_brief,tv_org+30  012237 11-52 equ itaper,tv_org+31  012240 11-53 equ itapew,tv_org+32  012241 11-54 equ erpt,tv_org+33 012242 11-55 equ ercv,tv_org+34 012243 11-56 equ erbuf,tv_org+35  012244 11-57 equ type,tv_org+36 012245 11-58 equ ttyinit,tv_org+37  012246 11-59 equ readcd,tv_org+38  012247 11-60 equ readtty,tv_org+39  012250 11-61 equ getprt,tv_org+40  012251 11-62 equ punch,tv_org+41  012252 11-63 equ octwd,tv_org+42  012253 11-64 equ geas,tv_org+43 012254 11-65 equ geastab,tv_org+44  012255 11-66 equ asge,tv_org+45 012256 11-67 equ asgetab,tv_org+46  012257 11-68 equ ljust,tv_org+47  012260 11-69 equ rjust,tv_org+48  012261 11-70 equ bzel,tv_org+49 012262 11-71 equ stripa,tv_org+50  012263 11-72 equ stripg,tv_org+51  012264 11-73 equ getconf,tv_org+52  012265 11-74 equ getmore,tv_org+53  012266 11-75 equ getperiph,tv_org+54  012267 11-76 equ rdclock,tv_org+55  012270 11-77 equ cvclock,tv_org+56  012271 11-78 equ init_io,tv_org+57  012272 11-79 equ connect_iom,tv_org+58  012273 11-80 equ getmpc,tv_org+59  012274 11-81 equ check_status,tv_org+60 012275 11-82 equ get_special_interrupt,tv_org+61  012276 11-83 equ get_status_interrupt,tv_org+62 012277 11-84 equ xio_wait,tv_org+63 012300 11-85 equ initint,tv_org+64  012301 11-86 equ wantflt,tv_org+65  012302 11-87 equ intno,tv_org+66  012303 11-88 equ intrpts1,tv_org+67 012304 11-89 equ hexwd,tv_org+68  012305 11-90 equ find_disk,tv_org+69  012306 11-91 equ find_root,tv_org+70  012307 11-92 equ find_part,tv_org+71  012310 11-93 equ check_status_no_stat,tv_org+72 012311 11-94 equ check_special_status,tv_org+73 012312 11-95 equ check_cpu_type,tv_org+74  012313 11-96 equ getportinfo,tv_org+75  11-97  11-98 " End of include file ...... bos_tv.incl.alm  11-99  612 include bos_common 12-1 "  12-2 " Begin include file ...... bos_common.incl.alm 12-3 " Modified on 8/31/76 by N. I. Morris  12-4 " Modified on 9/01/80 by Sherman D. Sprague for DPS8 operation  12-5 " Modified on 5/26/82 by Sherman D. Sprague to lengthen config size 12-6 " Modified on 3/01/83 by Sherman D. Sprague to lengthen dirlen  12-7 " MACHINE CONDITIONS AREA  12-8 " Its length is "storlen". 12-9  000000 12-10 equ amptwregs,0 Ass. Mem PTW registers  000100 12-11 equ amptwptr,64 Ass. Mem PTW pointers 000200 12-12 equ amsdwregs,128 Ass. Mem SDW registers  000400 12-13 equ amsdwptr,256 Ass. Mem SDW pointers  000500 12-14 equ ouhist,320 operations hist regs  000700 12-15 equ cuhist,448 control unit hist regs  001100 12-16 equ eishist,576 eis hist regs  001300 12-17 equ aphist,704 appending unit hist regs  001500 12-18 equ prs,832 pointer regs  001520 12-19 equ regs,848 sreg 001530 12-20 equ low_order_port,856 port to read clock from 001532 12-21 equ mctime,858 bootload memory clock  001540 12-22 equ scu,864  001550 12-23 equ mcm,872 memory masks 8 ports 001570 12-24 equ dbr,888  001572 12-25 equ intrpts,890 waiting interrupts 001573 12-26 equ bar,891 bar  001574 12-27 equ modereg,892 processor & cache mode registers  001576 12-28 equ faultreg,894 processor fault register  001600 12-29 equ ptrlen,896 pointer-lengths EIS 0 mod 8 001610 12-30 equ coreblocks,904 array of port information  12-31 " Bits 0-17 => num 1st 64-word block  12-32 " Bits 18-35 => num of 64-word blocks  12-33 " (-1) => no mem on this port  001620 12-34 equ lowport_cfg,912 Saved CFG from bootload SCU  12-35  002000 12-36 equ storlen,1024  12-37  12-38  12-39  12-40 " BOS COMMAND DIRECTORY 12-41 " Its length is "dirlen".  12-42  002000 12-43 equ dir,1024 ( 0-23) => sector # of first sector on BOS disk  12-44 " (24-35) => # of sectors in BOS common  002001 12-45 equ used,dir+1 ( 0-23) => # of next available sector on BOS disk  002002 12-46 equ useable,dir+2 ( 0-23) => first unavailable sector on BOS disk  002003 12-47 equ corearea,dir+3 ( 0-23) => starting sector of Multics core image  12-48 " (24-35) => # of sectors in Multics core image  002004 12-49 equ setuparea,dir+4 Sector and length of setup 002005 12-50 equ utilarea,dir+5 where utility package is kept  002010 12-51 equ iom_mxbase,dir+8 IOM IMW area address  002011 12-52 equ iom_mbbase,dir+9 IOM mailbox base  002012 12-53 equ bos_dvt,dir+10 BOS disk loc: (o3/iom,o6/chn,o9/drive,o18/devtype)  002013 12-54 equ unitgroup,dir+11 disk unitgroup (device no. or area no.)  002014 12-55 equ diskchanno,dir+12 channel to be used for disk  002015 12-56 equ tapechanno,dir+13 channel # for tapes  002016 12-57 equ rdrchanno,dir+14 channel number for card reader  002017 12-58 equ ttychanno,dir+15 channel # for operator's tty  002020 12-59 equ quietsw,dir+16 if on, don't print card and macro commands  002021 12-60 equ inputsw,dir+17 read from tty, cards, macros  002022 12-61 equ macroloc,dir+18 disk addr, buffer index of macro file  002023 12-62 equ fdump_state,dir+19 completion flag for last FDUMP  002024 12-63 equ d355_state,dir+20 = 1 if DataNet 355 loaded successfully  002025 12-64 equ skipsw,dir+21 if on, skip runcom lines 002026 12-65 equ ttypmtsw,dir+22 if on, prompt  002027 12-66 equ curtcmd,dir+23 current bos command 002030 12-67 equ readysw,dir+24 if on, print ready message  002032 12-68 equ cmdlst,dir+26 list of commands 12-69  000600 12-70 equ dirlen,384 12-71  12-72  12-73  12-74 " MACRO BUFFER AREA 12-75  002600 12-76 equ macrobuf,dir+dirlen io buffer for macro files 002700 12-77 equ macroline,macrobuf+64 runcom command line 002716 12-78 equ macroargs,macroline+14 argument descriptors for runcom  12-79  12-80  12-81  12-82 " CONFIGURATION CARD AREA  12-83 " Its length is 2048 words.  12-84  003000 12-85 equ conf,macrobuf+128 start of configuration info  007000 12-86 equ econf,conf+2048 end of configuration info  000020 12-87 equ confl,16 length of each line  12-88  12-89  007000 12-90 equ seg6length,econf length of bos_common area segment 12-91  12-92 " End of include file ...... bos_common.incl.alm  12-93  613  614 end  LITERALS 002344 aa 000000 220000 002345 aa 202062 216525 002346 aa 204563 214725 002347 aa 202063 214725 002350 aa 204524 316242 002351 aa 204523 464770 002352 aa 202020 254524 002353 aa 202050 643163 002354 aa 777777 777777 002355 aa 100000 002000 002356 aa 377777 777770 002360 aa 200000 000041 002361 aa 004034 000000 002362 aa 777777 770000 002363 aa 777717 171717 002364 aa 702562 202020 NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 002365 5a 000003 000000 002366 5a 000017 600000 002367 aa 000000 000000 002370 55 000010 000002 002371 5a 000002 400003 002372 55 000006 000010 002373 aa 006 162 145 163 002374 aa 164 157 162 000 002375 55 000002 000003 002376 6a 000000 400002 002377 55 000013 000003 002400 aa 014 163 171 155 symbol_table  002401 aa 142 157 154 137 002402 aa 164 141 142 154 002403 aa 145 000 000 000 DEFINITIONS HASH TABLE  002404 aa 000000 000015 002405 aa 000000 000000 002406 aa 000000 000000 002407 aa 000000 000000 002410 aa 000000 000000 002411 aa 000000 000000 002412 aa 000000 000000 002413 5a 000010 000000 002414 aa 000000 000000 002415 aa 000000 000000 002416 aa 000000 000000 002417 aa 000000 000000 002420 aa 000000 000000 002421 aa 000000 000000 NO EXTERNAL NAMES  NO TRAP POINTER WORDS  TYPE PAIR BLOCKS  002422 aa 000001 000000 002423 aa 000000 000000 INTERNAL EXPRESSION WORDS LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 002365 000000 000002 aa 000000 000000 000003 aa 000000 000000 000004 aa 000000 000000 000005 aa 000000 000000 000006 22 000010 000010 000007 a2 000000 000000 SYMBOL INFORMATION SYMBOL TABLE HEADER  000000 aa 000000 000001 000001 aa 163171 155142 000002 aa 164162 145145 000003 aa 000000 000004 000004 aa 000000 112143 000005 aa 305203 523135 000006 aa 000000 112272 000007 aa 234664 023743 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000010 000002 000016 aa 000064 000000 000017 aa 000000 000543 000020 aa 000000 000333 000021 aa 000000 000521 000022 aa 000524 000333 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 040066 056066 000030 aa 040040 116157 000031 aa 166145 155142 000032 aa 145162 040061 000033 aa 071070 062040 000034 aa 110157 154155 000035 aa 163164 145144 000036 aa 164056 123171 000037 aa 163115 141151 000040 aa 156164 056141 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 154151 163164 000045 aa 040040 040040 000046 aa 040040 040040 000047 aa 040040 040040 000050 aa 040040 040040 000051 aa 040040 040040 000052 aa 040040 040040 000053 aa 040040 040040 000054 aa 040040 040040 000055 aa 040040 040040 000056 aa 040040 040040 000057 aa 040040 040040 000060 aa 040040 040040 000061 aa 040040 040040 000062 aa 040040 040040 000063 aa 040040 040040 000064 aa 000000 000001 000065 aa 000000 000015 000066 aa 000152 000027 000067 aa 122721 273230 000070 aa 000000 112272 000071 aa 216435 400000 000072 aa 000160 000040 000073 aa 113400 415301 000074 aa 000000 111341 000075 aa 220414 400000 000076 aa 000170 000043 000077 aa 074654 553115 000100 aa 000000 107470 000101 aa 740072 400000 000102 aa 000201 000042 000103 aa 122106 030401 000104 aa 000000 112211 000105 aa 234031 200000 000106 aa 000212 000050 000107 aa 074654 553123 000110 aa 000000 107470 000111 aa 740142 400000 000112 aa 000224 000037 000113 aa 110044 377547 000114 aa 000000 111005 000115 aa 417017 600000 000116 aa 000234 000035 000117 aa 043243 130732 000120 aa 000000 103437 000121 aa 276653 200000 000122 aa 000244 000042 000123 aa 110044 377556 000124 aa 000000 111005 000125 aa 417043 600000 000126 aa 000255 000046 000127 aa 110044 377561 000130 aa 000000 111005 000131 aa 417071 200000 000132 aa 000267 000046 000133 aa 043243 125746 000134 aa 000000 103534 000135 aa 053307 400000 000136 aa 000301 000041 000137 aa 105543 476637 000140 aa 000000 110555 000141 aa 260135 200000 000142 aa 000312 000040 000143 aa 110235 072677 000144 aa 000000 111024 000145 aa 524460 600000 000146 aa 000322 000044 000147 aa 121622 277475 000150 aa 000000 112162 000151 aa 321563 400000 000152 aa 076163 160145 >spec>h>3.17>restor.alm 000153 aa 143076 150076 000154 aa 063056 061067 000155 aa 076162 145163 000156 aa 164157 162056 000157 aa 141154 155040 000160 aa 076154 144144 >ldd>bos>include>bosequ.incl.alm  000161 aa 076142 157163 000162 aa 076151 156143 000163 aa 154165 144145 000164 aa 076142 157163 000165 aa 145161 165056 000166 aa 151156 143154 000167 aa 056141 154155 000170 aa 076154 144144 >ldd>bos>include>ntape_equ.incl.alm 000171 aa 076142 157163 000172 aa 076151 156143 000173 aa 154165 144145 000174 aa 076156 164141 000175 aa 160145 137145 000176 aa 161165 056151 000177 aa 156143 154056 000200 aa 141154 155040 000201 aa 076154 144144 >ldd>bos>include>sav_util.incl.alm  000202 aa 076142 157163 000203 aa 076151 156143 000204 aa 154165 144145 000205 aa 076163 141166 000206 aa 137165 164151 000207 aa 154056 151156 000210 aa 143154 056141 000211 aa 154155 040040 000212 aa 076154 144144 >ldd>bos>include>sav_io_buf_seg.incl.alm  000213 aa 076142 157163 000214 aa 076151 156143 000215 aa 154165 144145 000216 aa 076163 141166 000217 aa 137151 157137 000220 aa 142165 146137 000221 aa 163145 147056 000222 aa 151156 143154 000223 aa 056141 154155 000224 aa 076154 144144 >ldd>include>disk_pack.incl.alm 000225 aa 076151 156143 000226 aa 154165 144145 000227 aa 076144 151163 000230 aa 153137 160141 000231 aa 143153 056151 000232 aa 156143 154056 000233 aa 141154 155040 000234 aa 076154 144144 >ldd>include>vol_map.incl.alm  000235 aa 076151 156143 000236 aa 154165 144145 000237 aa 076166 157154 000240 aa 137155 141160 000241 aa 056151 156143 000242 aa 154056 141154 000243 aa 155040 040040 000244 aa 076154 144144 >ldd>include>fs_vol_label.incl.alm  000245 aa 076151 156143 000246 aa 154165 144145 000247 aa 076146 163137 000250 aa 166157 154137 000251 aa 154141 142145 000252 aa 154056 151156 000253 aa 143154 056141 000254 aa 154155 040040 000255 aa 076154 144144 >ldd>include>old_fs_vol_label.incl.alm  000256 aa 076151 156143 000257 aa 154165 144145 000260 aa 076157 154144 000261 aa 137146 163137 000262 aa 166157 154137 000263 aa 154141 142145 000264 aa 154056 151156 000265 aa 143154 056141 000266 aa 154155 040040 000267 aa 076154 144144 >ldd>bos>include>config_cards.incl.alm  000270 aa 076142 157163 000271 aa 076151 156143 000272 aa 154165 144145 000273 aa 076143 157156 000274 aa 146151 147137 000275 aa 143141 162144 000276 aa 163056 151156 000277 aa 143154 056141 000300 aa 154155 040040 000301 aa 076154 144144 >ldd>bos>include>bos_sdw.incl.alm  000302 aa 076142 157163 000303 aa 076151 156143 000304 aa 154165 144145 000305 aa 076142 157163 000306 aa 137163 144167 000307 aa 056151 156143 000310 aa 154056 141154 000311 aa 155040 040040 000312 aa 076154 144144 >ldd>bos>include>bos_tv.incl.alm  000313 aa 076142 157163 000314 aa 076151 156143 000315 aa 154165 144145 000316 aa 076142 157163 000317 aa 137164 166056 000320 aa 151156 143154 000321 aa 056141 154155 000322 aa 076154 144144 >ldd>bos>include>bos_common.incl.alm  000323 aa 076142 157163 000324 aa 076151 156143 000325 aa 154165 144145 000326 aa 076142 157163 000327 aa 137143 157155 000330 aa 155157 156056 000331 aa 151156 143154 000332 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number  1032 again sav_util: 647, 686.  542 allerr sav_util: 357, 359, 458. 12233 amaxio sav_util: 655, 657,  bos_tv: 48. 12224 amdvt sav_util: 262, 289, 296, 300,  bos_tv: 41. 12225 amfirst sav_util: 275, bos_tv: 42. 12226 amlast sav_util: 279, bos_tv: 43. 100 amptwptr bos_common: 11. 0 amptwregs bos_common: 10. 400 amsdwptr bos_common: 13. 200 amsdwregs bos_common: 12. 1300 aphist bos_common: 17. 12040 arg sav_util: 124, 131, 191, 200, 226, 235, 245, bos_tv: 14, 15.  102 arg1600 sav_util: 154, 169.  106 arg6250 sav_util: 156, 174.  76 arg800 sav_util: 152, 164.  12222 argbos bos_tv: 39. 131 argcopy sav_util: 150, 197.  121 argdisk sav_util: 148, 188.  166 argend sav_util: 158, 231.  17 arglen bosequ: 17, bos_tv: 15, 16, 17. 44 arglp sav_util: 131, 138, 168, 173, 178, 217, 222. 12223 argmul sav_util: 242, bos_tv: 40. 54 args sav_util: 134, 140, 160. 112 argtape sav_util: 146, 180.  12201 arg_count bos_tv: 22. 12255 asge bos_tv: 66. 12256 asgetab bos_tv: 67. 2276 ask restor: 446, 455, 564. 2301 askx2 restor: 564, 567.  160 badarg sav_util: 135, 224.  1573 bar bos_common: 26. 1316 base restor: 97, sav_util: 648, 652, 664, 669, 671, 684, 812, 895.  2 bf restor: 46, 47, 56, 84, 85, 88, 133, 145, 148, 151, 154, 157,  190, 195, 196, 199, 200, 204, 205, 237, 241, 245, 256, 277,  293, 322, 367, 385, 404, 413, 511, 535, 536, bosequ: 9, sav_util: 93, 104, 108, 111, 144, 231, 249, 251, 268, 282, 301, 305,  314, 321, 330, 333, 339, 342, 346, 349, 353, 356, 417, 511,  514, 518, 534, 537, 603, 605, 610, 618, 620, 644, 673, 680,  709, 731, 756, 762, 763, 770, 776, 777, 849, 852, 853, 866,  870, 880, 889, 905, 910. 2000 big_tp_buff sav_io_buf_seg: 10.  1025 bits sav_util: 601, 611, 616, 626, 629, 630, 635, 796, 798. 12217 bosmul sav_util: 730, bos_tv: 36. 12214 bosphy bos_tv: 33. 2012 bos_dvt bos_common: 53. 1 BULK_cd.frec config_cards: 30.  2 BULK_cd.nrec config_cards: 31.  12261 bzel bos_tv: 70. 12312 check_cpu_type bos_tv: 95. 12311 check_special_status bos_tv: 94. 12274 check_status bos_tv: 81. 12310 check_status_no_stat bos_tv: 93. 3 CHNL_cd.chn config_cards: 27.  2 CHNL_cd.iom config_cards: 26.  4 CHNL_cd.nchan config_cards: 28.  1 CHNL_cd.sub config_cards: 25.  234 cklabel sav_util: 258, 287.  347 cklbx2 sav_util: 287, 292, 311, 337, 340, 355, 361. 1252 ckmore restor: 53, sav_util: 522, 848.  2032 cmdlst bos_common: 68. 6 com bosequ: 14, sav_util: 868. 337 common_label sav_util: 347, 350.  1222 comp_base restor: 104, sav_util: 807. 3000 conf bos_common: 85, 86.  20 confl bos_common: 87. 12272 connect_iom bos_tv: 79. 636 copysw sav_util: 185, 194, 203, 265, 381, 397, 479. 1200 copy_from_preamble restor: 138, sav_util: 769. 1170 copy_to_preamble restor: 51, sav_util: 755. 2003 corearea bos_common: 47. 1610 coreblocks bos_common: 30. 700 cuhist bos_common: 15. 2027 curtcmd bos_common: 66. 12270 cvclock sav_util: 322, bos_tv: 77. 12210 cvinit bos_tv: 29. 12227 cvnamla bos_tv: 44. 2024 d355_state bos_common: 63. 12060 darg sav_util: 208, bos_tv: 15, 16.  1570 dbr bos_common: 24. 1750 DEFAULT_HCPART_SIZE disk_pack: 20. 565 devterr sav_util: 273, 465.  734 didend sav_util: 523, 541.  716 didl sav_util: 522, 539.  2127 differs restor: 423, 428.  2222 diff_devt restor: 419, 465.  1075 diox2 sav_util: 642, 643, 653, 678, 688, 707.  2000 dir bos_common: 43, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56,  57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 76. 600 dirlen bos_common: 70, 76.  2014 diskchanno bos_common: 55. 12236 disk_brief sav_util: 142, 695, 720, bos_tv: 51. 100000 disk_buff_len sav_util: 95, sav_io_buf_seg: 8.  3 DISK_cd.chn config_cards: 20.  2 DISK_cd.iom config_cards: 19.  5 DISK_cd.model config_cards: 22.  4 DISK_cd.nchan config_cards: 21.  6 DISK_cd.ndrives config_cards: 23.  1 DISK_cd.sub sav_util: 868, config_cards: 18.  1026 disk_io restor: 108, 135,  sav_util: 642. 1003 doall sav_util: 606, 613.  425 done restor: 86, sav_util: 422. 1610 dorestor restor: 74, 77, 92. 1640 dorsx2 restor: 92, 112, 126. 1576 drain restor: 77, 79.  152 drivend sav_util: 209, 211, 216. 142 drivlp sav_util: 207, 214.  0 ds bosequ: 7, sav_util: 93, 98.  0 dskbuf sav_io_buf_seg: 12.  4 DUMPER_BIT_MAP_ADDR sav_util: 58, disk_pack: 15. 12100 earg sav_util: 254, bos_tv: 16, 17.  7000 econf bos_common: 86, 90.  1100 eishist bos_common: 16. 6010 endtape ntape_equ: 19, sav_util: 426, 580.  750 endwait sav_util: 564, 569.  1642 eot restor: 44, 66, 102, 131.  12243 erbuf bos_tv: 56. 12242 ercv bos_tv: 55. 2314 erh restor: 43, 601.  2327 erp restor: 65, 605.  12241 erpt restor: 169, 302, 331, 429, 435, 440, 449, 465, 507, 601, 605, sav_util: 224, 317, 325, 423, 435, 439, 444, 449, 451, 458, 460, 465,  470, 697, 722, 734, 875, bos_tv: 54. 1167 error_sector sav_util: 733, 736, 745. 1322 fatalsw restor: 81, 181,  sav_util: 738, 899.  1576 faultreg bos_common: 28. 2023 fdump_state bos_common: 62. 5 fgb bosequ: 13. 12305 find_disk bos_tv: 90. 12307 find_part bos_tv: 92. 12306 find_root bos_tv: 91. 2000 firmware_bit bosequ: 20. 2312 firstsw restor: 71, 94, 124, 598.  12120 fltscu bos_tv: 17. 1716 force_salv restor: 82, 187.  12253 geas bos_tv: 64. 12254 geastab sav_util: 87, bos_tv: 65. 772 getbits sav_util: 528, 601.  12264 getconf bos_tv: 73. 12265 getmore bos_tv: 74. 12273 getmpc bos_tv: 80. 12266 getperiph bos_tv: 75. 12313 getportinfo bos_tv: 96. 12250 getprt bos_tv: 61. 12207 getsec bos_tv: 28. 12275 get_special_interrupt bos_tv: 82. 12276 get_status_interrupt bos_tv: 83. 1540 go restor: 34, sav_util: 418. 225 gvfirst sav_util: 266, 269, 275. 167 gvloop sav_util: 233, 243, 283, 442, 447, 456, 463, 468.  211 gvmvt sav_util: 88, 256.  12304 hexwd bos_tv: 89. 261 hisldesc sav_util: 314, 319, 454. 1314 id sav_util: 513, 517, 520, 538, 793, 803, 893. 12300 initint bos_tv: 85. 6004 inittape ntape_equ: 15, sav_util: 375. 12271 init_io sav_util: 82, bos_tv: 78. 2021 inputsw bos_common: 60. 12302 intno bos_tv: 87. 1572 intrpts bos_common: 25. 12303 intrpts1 bos_tv: 88. 1072 iod sav_util: 684, 724.  1111 ioer1 sav_util: 696, 700.  1142 ioer2 sav_util: 721, 724.  1100 ioerr sav_util: 682, 694.  1143 iofatal sav_util: 711, 728.  1166 iolen sav_util: 650, 659, 661, 675, 677, 700, 704, 716, 729, 744.  2011 iom_mbbase bos_common: 52. 2010 iom_mxbase bos_common: 51. 1164 iooff sav_util: 667, 681, 710, 714, 743. 12237 itaper bos_tv: 52. 12240 itapew bos_tv: 53. 12000 LABEL restor: 196, 199, 200, 205,  sav_util: 55, 301, 305, 314, 321, 330, 333, 342, 346, 349, 353, 356.  705 label.disk_table_uid fs_vol_label: 59.  704 label.disk_table_vtocx fs_vol_label: 58.  715 label.dumper_bit_map_record fs_vol_label: 67. 617 label.err_hist_size fs_vol_label: 49.  706 label.esd_state fs_vol_label: 60.  0 label.flagpad_shift fs_vol_label: 37.  551 label.flagpad_word fs_vol_label: 36.  1005 label.frec fs_vol_label: 73.  0 label.gcos fs_vol_label: 18.  400000 label.here fs_vol_label: 54.  614 label.last_pvtx fs_vol_label: 48.  542 label.lvid fs_vol_label: 25.  531 label.lv_name fs_vol_label: 23.  552 label.max_access_class fs_vol_label: 39.  511 label.mfg_serial fs_vol_label: 21.  554 label.min_access_class fs_vol_label: 40.  500 label.Multics sav_util: 305, fs_vol_label: 19.  400000 label.not_used fs_vol_label: 33.  551 label.not_used_word fs_vol_label: 32.  1003 label.nparts fs_vol_label: 69.  1006 label.nrec fs_vol_label: 74.  546 label.n_pv_in_lv fs_vol_label: 28.  1004 label.part fs_vol_label: 72.  1004 label.parts fs_vol_label: 70.  556 label.password fs_vol_label: 41.  200000 label.private fs_vol_label: 35.  551 label.private_word fs_vol_label: 34.  541 label.pvid sav_util: 330, fs_vol_label: 24.  521 label.pv_name sav_util: 314, fs_vol_label: 22.  700 label.root fs_vol_label: 52.  543 label.root_pvid fs_vol_label: 26.  701 label.root_vtocx fs_vol_label: 56.  702 label.shutdown_state fs_vol_label: 57.  710 label.size_of_volmap fs_vol_label: 62.  712 label.size_of_vtoc_map fs_vol_label: 64.  620 label.time_last_dmp fs_vol_label: 50.  626 label.time_last_reloaded fs_vol_label: 51. 602 label.time_map_updated restor: 199, 200,  sav_util: 321, 353,  fs_vol_label: 43.  600 label.time_mounted fs_vol_label: 42.  610 label.time_of_boot fs_vol_label: 46.  544 label.time_registered fs_vol_label: 27.  606 label.time_salvaged sav_util: 356, fs_vol_label: 45.  612 label.time_unmounted sav_util: 346, fs_vol_label: 47.  510 label.version fs_vol_label: 20.  707 label.volmap_record fs_vol_label: 61.  713 label.volmap_unit_size fs_vol_label: 65.  604 label.volmap_version sav_util: 342, fs_vol_label: 44.  547 label.vol_size fs_vol_label: 29.  716 label.vol_trouble_count fs_vol_label: 68.  711 label.vtoc_map_record fs_vol_label: 63.  714 label.vtoc_origin_record fs_vol_label: 66. 550 label.vtoc_size sav_util: 333, fs_vol_label: 30.  0 LABEL_ADDR restor: 188, sav_util: 55, 294,  disk_pack: 13. 44000 label_buff_len sav_util: 90, 101,  sav_io_buf_seg: 7.  2000 label_size fs_vol_label: 15.  2313 lastsw restor: 72, 76, 111, 599.  0 lbbuf sav_io_buf_seg: 13.  454 lblerr sav_util: 310, 439.  441 lblioerr sav_util: 302, 435.  12206 ldcom sav_util: 371, bos_tv: 27. 12001 line restor: 568, sav_util: 120, bos_tv: 13, 14.  12257 ljust bos_tv: 68. 12220 lookup_devmodel bos_tv: 37. 1620 lowport_cfg bos_common: 34. 1530 low_order_port bos_common: 20. 2716 macroargs bos_common: 78. 2600 macrobuf bos_common: 76, 77, 85. 2700 macroline bos_common: 77, 78.  2022 macroloc bos_common: 61. 12205 makefil bos_tv: 26. 12221 makesdw sav_util: 91, 96,  bos_tv: 38. 14000 MAP sav_util: 56. 76036 MAX_VTOCE_PER_PACK disk_pack: 21. 1550 mcm bos_common: 23. 1532 mctime bos_common: 21. 7 mem bosequ: 15, sav_util: 115, 119, 431. 1574 modereg bos_common: 27. 640 modulename sav_util: 181, 189, 198, 370, 481. 1611 more restor: 94, 123.  260 mulabel sav_util: 307, 313.  12216 mulbos restor: 189, sav_util: 295, 672,  bos_tv: 35. 670 Multics_label sav_util: 306, 495.  262 myldesc sav_util: 315, 453.  11 nargs sav_util: 133, 160.  726 nextaddr sav_util: 529, 534.  12202 nextline sav_util: 233, bos_tv: 23. 1232 nextq restor: 105, 117,  sav_util: 819. 12203 nlraw bos_tv: 24. 633 nogo sav_util: 366, 441, 446, 455, 462, 467, 476. 473 nolblerr sav_util: 247, 444.  1020 notail sav_util: 621, 628.  644 ntapes sav_util: 218, 486, 582, 584, 589. 6000 ntape_org ntape_equ: 9, 11, 12, 13, 14, 15, 16, 17, 18, 19,  sav_util: 369. 1603 nxtvol restor: 54, 84, 191, 197, 206, 208.  12252 octwd bos_tv: 63. 705 old_label.disk_table_uid old_fs_vol_label: 63. 704 old_label.disk_table_vtocx old_fs_vol_label: 62. 617 old_label.err_hist_size old_fs_vol_label: 49.  706 old_label.esd_state old_fs_vol_label: 64.  0 old_label.flagpad_shift old_fs_vol_label: 37.  551 old_label.flagpad_word old_fs_vol_label: 36.  1005 old_label.frec old_fs_vol_label: 69.  0 old_label.gcos old_fs_vol_label: 18.  400000 old_label.here old_fs_vol_label: 54.  614 old_label.last_pvtx old_fs_vol_label: 48.  542 old_label.lvid old_fs_vol_label: 25.  531 old_label.lv_name old_fs_vol_label: 23.  552 old_label.max_access_class old_fs_vol_label: 39. 511 old_label.mfg_serial old_fs_vol_label: 21.  554 old_label.min_access_class old_fs_vol_label: 40. 500 old_label.Multics old_fs_vol_label: 19.  400000 old_label.not_used old_fs_vol_label: 33.  551 old_label.not_used_word old_fs_vol_label: 32.  1003 old_label.nparts old_fs_vol_label: 65.  1006 old_label.nrec old_fs_vol_label: 70.  546 old_label.n_pv_in_lv old_fs_vol_label: 28.  1004 old_label.part old_fs_vol_label: 68.  1004 old_label.parts old_fs_vol_label: 66.  556 old_label.password old_fs_vol_label: 41.  400000 old_label.pd_active old_fs_vol_label: 60.  703 old_label.pd_active_word old_fs_vol_label: 59. 612 old_label.pd_time old_fs_vol_label: 47.  200000 old_label.private old_fs_vol_label: 35.  551 old_label.private_word old_fs_vol_label: 34.  541 old_label.pvid old_fs_vol_label: 24.  521 old_label.pv_name old_fs_vol_label: 22.  700 old_label.root old_fs_vol_label: 52.  543 old_label.root_pvid old_fs_vol_label: 26.  701 old_label.root_vtocx old_fs_vol_label: 56.  702 old_label.shutdown_state old_fs_vol_label: 57. 620 old_label.time_last_dmp old_fs_vol_label: 50.  626 old_label.time_last_reloaded old_fs_vol_label: 51. 602 old_label.time_map_updated old_fs_vol_label: 43. 600 old_label.time_mounted old_fs_vol_label: 42.  610 old_label.time_of_boot old_fs_vol_label: 46.  544 old_label.time_registered old_fs_vol_label: 27. 606 old_label.time_salvaged old_fs_vol_label: 45.  604 old_label.time_unmounted sav_util: 349,  old_fs_vol_label: 44. 510 old_label.version old_fs_vol_label: 20.  547 old_label.vol_size old_fs_vol_label: 29.  550 old_label.vtoc_size old_fs_vol_label: 30.  2000 old_label_size old_fs_vol_label: 15.  6005 opentaper restor: 37, ntape_equ: 16. 6006 opentapew ntape_equ: 17. 500 ouhist bos_common: 14. 12000 pagectl bos_tv: 12, 13.  3 PART_cd.drive config_cards: 11.  1 PART_cd.name config_cards: 9.  2 PART_cd.sub config_cards: 10.  3 pgm bosequ: 10. 12215 phyadd bos_tv: 34. 12213 phybos bos_tv: 32. 1313 ppdesc sav_util: 877, 889.  1312 ppdev sav_util: 873, 879, 888. 1311 ppname sav_util: 869, 878, 887. 1260 pprint restor: 69, sav_util: 864. 1307 pprx2 sav_util: 864, 884.  336 pre_MR10_label sav_util: 343, 345, 348. 3 PRPH_cd.chn config_cards: 15.  2 PRPH_cd.iom config_cards: 14.  4 PRPH_cd.model config_cards: 16.  1 PRPH_cd.sub config_cards: 13.  1500 prs bos_common: 18. 1600 ptrlen bos_common: 29. 12251 punch bos_tv: 62. 657 pvbcname sav_util: 491. 505 pvnamerr sav_util: 316, 449.  637 qdelta sav_util: 384, 390, 480. 1330 qh restor: 38, 41,  sav_util: 837, 903.  1340 ql restor: 78, 122,  sav_util: 386, 394, 401, 404, 408, 411, 413, 414, 509, 820, 822, 840,  843, 908, 914. 1334 qp restor: 58, 61, 63, sav_util: 400, 405, 410, 526, 542, 839, 903, 908.  1630 qsetl restor: 95, 115, 118. 1320 qtemp restor: 98, 114,  sav_util: 897. 420 qth sav_util: 402, 413.  2020 quietsw bos_common: 59. 12267 rdclock bos_tv: 76. 12211 rdev restor: 194, sav_util: 299, bos_tv: 30. 2016 rdrchanno bos_common: 57. 12234 rdsec bos_tv: 49. 12246 readcd bos_tv: 59. 12247 readtty restor: 565, bos_tv: 60. 2030 readysw bos_common: 67. 1315 recs sav_util: 425, 569, 894. 12232 rec_per_dev_list bos_tv: 47. 1520 regs bos_common: 19. 1240 resetq restor: 35, sav_util: 835. 12260 rjust bos_tv: 69. 2 ROOT_cd.drive config_cards: 7.  1 ROOT_cd.sub config_cards: 6.  1553 rpre restor: 51, 89.  1737 rqm restor: 49, 232.  2261 rqmlpe3 restor: 366, 535.  2065 rqm_2 restor: 275, 362.  2311 rqm_curvol restor: 280, 290, 368, 379, 407, 589.  2033 rqm_e1 restor: 289, 316.  1760 rqm_filld restor: 255, 259.  1753 rqm_fills restor: 254, 258.  2035 rqm_l2 restor: 318, 326.  2307 rqm_limc restor: 243, 253, 259, 274, 288, 382, 583. 2310 rqm_limt restor: 239, 254, 319, 365, 586. 1763 rqm_lp1 restor: 273, 279, 327, 336.  1774 rqm_lp2 restor: 287, 291, 295, 300, 309. 2067 rqm_lp3 restor: 364, 427, 456, 462, 513, 529.  2076 rqm_lp4 restor: 381, 387, 392. 2240 rqm_lpe4 restor: 383, 506.  2046 rqm_novol restor: 320, 330.  2306 rqm_start restor: 248, 271, 285, 316, 362, 580.  2264 rqm_swap restor: 409, 528, 545. 2263 rqm_x2 restor: 233, 537.  1664 rserr restor: 101, 163.  1714 rserx2 restor: 163, 182.  1245 rsql sav_util: 841, 844.  1321 rtemp restor: 167, 171, 192, 202,  sav_util: 898. 4000 runcom_bit bosequ: 19. 6007 runtape restor: 120, ntape_equ: 18, sav_util: 566. 757 saveot sav_util: 561, 580.  634 savesw sav_util: 126, 309, 336, 477.  702 savloop restor: 73, sav_util: 508. 740 savwait restor: 42, 64, 100, sav_util: 557. 12200 scan sav_util: 122, bos_tv: 21. 1540 scu bos_common: 22. 14 sdw.add_shift bos_sdw: 4. 377770 sdw.bound bos_sdw: 12. 40000 sdw.cache bos_sdw: 20. 4 sdw.df bos_sdw: 9. 37777 sdw.entry_bound bos_sdw: 21. 100000 sdw.entry_bound_sw bos_sdw: 19. 2 sdw.execute bos_sdw: 14. 3 sdw.fault_code bos_sdw: 10. 400000 sdw.privileged bos_sdw: 17. 7000 sdw.r1 bos_sdw: 5. 700 sdw.r2 bos_sdw: 6. 70 sdw.r3 bos_sdw: 7. 4 sdw.read bos_sdw: 13. 200000 sdw.unpaged bos_sdw: 18. 1 sdw.write bos_sdw: 15. 12204 search bos_tv: 25. 3 SECTORS_PER_VTOCE disk_pack: 18. 12230 sect_per_cyl_list bos_tv: 45. 12231 sect_per_dev_list bos_tv: 46. 7000 seg6length bos_common: 90. 141 setdrives sav_util: 186, 195, 204, 206.  1210 setq restor: 116, sav_util: 793. 351 setup sav_util: 237, 366.  2004 setuparea bos_common: 49. 1651 set_preamble_info restor: 68, 144.  2025 skipsw bos_common: 64. 1113 sloop sav_util: 704, 718.  2000 small_tp_buff sav_io_buf_seg: 9.  1123 sner sav_util: 713, 739.  1540 startape restor: 35, 140.  616 stopit sav_util: 367, 470.  2000 storlen bos_common: 36. 12262 stripa bos_tv: 71. 12263 stripg bos_tv: 72. 641 subsysname restor: 442, sav_util: 183, 192, 201, 374, 483, 881.  14 sva.devt restor: 156, 157, 190, 195, 204, 416, 417, sav_util: 73, 263, 272, 514, 644, 673, 680, 709, 731, 866, 870. 13 sva.done restor: 133, 150, 151, 305, 421, 422, 432, 437, 451, 458, 459, sav_util: 72, 277, 511, 534, 537, 603, 618, 852, 880. 11 sva.first sav_util: 70, 276.  12 sva.last restor: 153, 154, 306, 425, 426, 433, 438, 452, 460, 461,  sav_util: 71, 280, 620, 853.  10 sva.pvid sav_util: 69, 331.  0 sva.pvname restor: 298, 299, 324, 325, 390, 391,  sav_util: 68, 255, 315, 889.  16 sva.skip restor: 256, 278, 294, 308, 335, 386, 512, 525,  sav_util: 75, 260, 849. 15 sva.vtoc_size sav_util: 74, 334.  20 sva_size restor: 147, 238, 242, 247, 257, 273, 287, 318, 364, 381, 524, 546,  547, 550, 551, 554, 555, sav_util: 77, 250, 272, 758, 762, 763, 772, 776, 777. 0 svh sav_util: 31, 32, 33, 34, 35, 43.  0 svh.allsw restor: 46, 47,  sav_util: 33, 108, 144, 339, 605. 3 svh.curvol restor: 56, 84, 88, 145, 245, sav_util: 35, 417, 518, 756, 770. 2 svh.nvol restor: 85, 237, 241, 535, 536, sav_util: 34, 231, 249, 268, 282. 20 svh.sva restor: 148, 256, 277, 293, 322, 367, 385, 404, 413, 511,  sav_util: 36, 251, 762, 777.  1 svh.version sav_util: 32, 111.  22000 svhc restor: 46, 237, 322, 367, 413, 535,  sav_util: 63, 905.  4000 svh_length sav_util: 38, 43, 905. 12000 svl sav_util: 54, 55, 56, 63.  736 svlx2 sav_util: 508, 531, 544. 10000 svl_length sav_util: 58, 63, 910. 4000 svp sav_util: 43, 44, 45, 46, 47, 54, 910. 4040 svp.bits sav_util: 47, 610.  4001 svp.recs sav_util: 45. 4020 svp.sva restor: 133, 151, 154, 157, 190, 195, 204, sav_util: 46, 511, 514, 534, 537, 603, 618, 620, 644, 673, 680, 709,  731, 763, 776, 849, 852, 853, 866, 870, 880, 889.  4000 svp.version sav_util: 44. 6000 svp_length sav_util: 49, 54, 910. 755 svwx2 sav_util: 557, 571, 573, 576, 591. 2015 tapechanno bos_common: 56. 643 tapeden sav_util: 128, 166, 171, 176, 376, 485.  642 tapen restor: 39, 443,  sav_util: 221, 484, 588, 882.  6002 taper ntape_equ: 13. 6000 taperopen ntape_equ: 11. 635 tapesw sav_util: 184, 193, 202, 478.  6003 tapew ntape_equ: 14. 6001 tapewopen ntape_equ: 12. 645 taplst sav_util: 212, 220, 487, 587.  373 thq sav_util: 388, 395.  410 thq1 sav_util: 398, 404.  412 thq2 sav_util: 406, 409.  666 time_map_updated sav_util: 323, 327, 328, 493.  700 time_unmounted sav_util: 351, 354, 358, 498.  1 tmp restor: 179, bosequ: 8, sav_util: 98, 387, 743. 1317 top sav_util: 647, 685, 814, 896.  2 tpdone ntape_equ: 25, sav_util: 541, 563, 838. 10 tpeot ntape_equ: 23, sav_util: 560. 4 tpskip ntape_equ: 24, sav_util: 525, 800, 808. 1 tpstat ntape_equ: 26, sav_util: 570. 2017 ttychanno bos_common: 58. 12245 ttyinit sav_util: 84, bos_tv: 58. 2026 ttypmtsw bos_common: 65. 436 ttyrequest sav_util: 85, 428.  12200 tv_org bos_tv: 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,  44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,  56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,  68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,  80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,  92, 93, 94, 95, 96. 12244 type bos_tv: 57. 2013 unitgroup bos_common: 54. 2002 useable bos_common: 46. 2001 used bos_common: 45. 2005 utilarea bos_common: 50. 12000 utilorg bosequ: 22, bos_tv: 12, 19.  1 VOLMAP_ADDR sav_util: 56, disk_pack: 14. 1 vol_map.base_add vol_map: 14. 100 vol_map.bit_map vol_map: 17. 3 vol_map.bit_map_n_words vol_map: 16. 2 vol_map.n_free_rec vol_map: 15. 0 vol_map.n_rec vol_map: 13. 5 VTOCES_PER_RECORD disk_pack: 19. 6 VTOC_MAP_ADDR disk_pack: 16. 10 VTOC_ORIGIN disk_pack: 17. 1615 wait restor: 100, 106.  741 waitl sav_util: 559, 567.  12301 wantflt bos_tv: 86. 12212 wdev restor: 109, 136, 203, bos_tv: 31. 12235 wtsec bos_tv: 50. 436 x2 restor: 447, 468, 603, 607,  sav_util: 81, 92, 97, 113, 227, 239, 297, 372, 377, 378, 429, 437,  472, 674, 732. 12277 xio_wait bos_tv: 84. 4 xs1 restor: 148, 150, 153, 156, 277, 278, 298, 324, 335, 367, 390, 404,  416, 421, 425, 437, 438, 459, 461, 523, 546, 551, 554, bosequ: 11, sav_util: 251, 255, 260, 263, 272, 276, 277, 280, 315, 331, 334. 2005 xs1desc restor: 298, 333, 467, 509.  5 xs2 restor: 293, 294, 299, 305, 306, 308, 322, 325, 385, 386, 391, 413,  417, 422, 426, 432, 433, 451, 452, 458, 460, 511, 512, 523,  524, 525, 547, 550, 555, bosequ: 12. 2006 xs2desc restor: 299, 304, 431. 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