ASSEMBLY LISTING OF SEGMENT >special_ldd>install>MR12.3-1114>bootload_tape_label.alm ASSEMBLED ON: 11/11/89 0955.1 mst Sat OPTIONS USED: -target l68 list symbols ASSEMBLED BY: ALM Version 8.14 March 1989 ASSEMBLER CREATED: 06/09/89 1002.3 mst Fri 1 " *********************************************************** 2 " * * 3 " * Copyright, (C) Honeywell Bull Inc., 1987 * 4 " * * 5 " * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6 " * * 7 " * Copyright (c) 1972 by Massachusetts Institute of * 8 " * Technology and Honeywell Information Systems, Inc. * 9 " * * 10 " *********************************************************** 11 12 " HISTORY COMMENTS: 13 " 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 14 " audit(86-01-31,GDixon), install(86-03-21,MR12.0-1033): 15 " select the proper bootload tape device, when the info in the IDCW & 16 " status word may be different. 17 " 2) change(87-04-02,Farley), approve(87-07-06,MCR7717), 18 " audit(87-07-15,Fawcett), install(87-07-17,MR12.1-1043): 19 " Added chk_mpc_state routine to test the tape controller's intelligence 20 " level, which will allow proper setting of the "cold mpc flag". 21 " 3) change(87-07-23,Farley), approve(87-07-23,PBF7717), 22 " audit(87-07-24,Fawcett), install(87-07-28,MR12.1-1047): 23 " Added POF retry to rd_tape routine, because unwedging of the tape 24 " controller on an IMU takes a long time (> 4sec) to complete (sigh!). 25 " 4) change(87-10-02,Farley), approve(88-02-26,MCR7794), 26 " audit(88-03-04,Fawcett), install(88-03-15,MR12.2-1035): 27 " Added code to copy the IMU bit from the system_fault_vector into the 28 " bootload info area. It will later be copied into 29 " bootload_info$imu_type_iom. 30 " END HISTORY COMMENTS 31 32 000000 33 name bootload_tape_label 34 35 " Written by J. A. Bush 12/80 36 " Modified for bootload Multics and macros BIM 2/82 37 " Modified to read in whole first segment by C. Hornig, October 1982. 38 " Modified for DPS88 support by K. Loepere, September 1983. 39 " Modified to run on any IOM by Keith Loepere, March 1984. 40 " Modified 1095-05-16, BIM: don't bomb on padded records. 41 " Modified to run on IMU by Paul Farley, June 1984. 42 " Modified 08/31/84 by Paul Farley to select the proper bootload tape 43 " device, when the info in the IDCW & status word may be different. 44 " 45 " This program is copied by the tape_mult_ "boot_program" control order and 46 " written onto a bootable MST when tape_mult_ is subsequently opened for 47 " writing. This program is put into execution by a bootload sequence as 48 " follows: The system operator depresses initialize and bootload (or 49 " equivalent) on the system console. Assuming an MST with this program written 50 " on its label is mounted and ready on the selected tape drive, the IOM (or 51 " equivalant) hardwired bootload program will read in the first record on the 52 " tape (the label record), starting at location 30 (8) absolute. When the 53 " record has been completely read in, a terminate interrupt is executed. The 54 " interrupt cell used for a terminate interrupt is a function of the IOM 55 " number. For IOM #0, interrupt cell 12 is used, for IOM #1, 2, and 3, 56 " interrupt cells 13, 14, and 15 respectively are used. The interrupt cell is 57 " used to form the interrupt vector address. Since interrupt vectors are two 58 " locations long, the interrupt cell is multiplied by 2. Therefore for IOM #0, 59 " the interrupt vector address would be 24 (10) or 30 (8). IOM #s 1, 2, and 3 60 " interrupt vector addresses would be 32, 34, and 36 (8) respectively. For the 61 " IOX, only vector address 30 is used. When the processor senses the 62 " terminate interrupt (via an execute interrupt present (xip) signal), a 63 " hardware XED instruction is forced to be executed to the interrupt vector 64 " address formed in the SCU. Since this program is read in so that location 0 65 " is overlayed at location 30 (8) absolute, by the IOM bootload program, the 66 " XED is forced to execute the transfer vector instructions (2) at the 67 " beginning of the record supplied by tape_mult_ for the appropriate IOM # 68 " and control is transferred to the label "my_zero" from the transfer vector. 69 " 70 " The function of this program is to read the next segment off the boot tape 71 " and to transfer control to it. 72 " 73 " The fault vectors (locations 100 to 177 (8)) are overlayed by an SCU 200/DIS 74 " pair. Therefore if this program dies in a DIS instruction, one can look at 75 " absolute location 200 - 207 for the SCU data stored as the result of the 76 " fault. 77 " 78 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 79 " 80 " The IOM Bootload Program: 81 " 82 " The IOM Bootload program looks like this (locations are absolute memory): 83 " 84 " Location Contents Purpose 85 " 86 " 000000 18/0, 18/720201 Bootload channel PCW, word 1 87 " 000001 3/0, 12/Chan#, 24/0, 3/Port# Bootload channel PCW, word 2 88 " 89 " 000002 12/Base, 6/0, 15/PIbase, 3/IOM# Info used by bootloaded pgm 90 " 000003 6/Command, 6/Device#, 6/0, 18/700000 91 " Bootload IDCW - Command is 05 92 " for tape, 01 for cards. 93 " 000004 18/000030, 18/0 Second IDCW: IOTD to loc 30 94 " 95 " System fault vector, at 000010 + 2*IOM# 96 " 1/0, 1/IMU, 16/0, 18/616200 DIS 0 instruction 97 " 98 " Terminate interrupt vector, at 000030 + 2*IOM# Overwritten by bootloaded 99 " 18/0, 18/616200 program: a DIS 0 instruction 100 " 101 " IOM Mailbox, at Base*6 102 " mbx + 07 12/Base, 6/02, 18/000002 Fault channel DCW 103 " mbx + 10 18/0, 18/004000 Connect channel LPW -> PCW 104 " at 000000 105 " 106 " Channel mailbox, at Base*64 + 4*Chan# 107 " mbx + 0 18/000003, 6/02, 12/0003 Boot dev LPW -> IDCW @ 000003 108 " mbx + 2 12/Base, 6/0, 18/0 Boot dev SCW -> IOM mailbox 109 " 110 " 111 " For Multics, the IOM Base ("Base") must be 0012, locating the IOM mailbox at 112 " location 001200. 113 " 114 " Multics can only be booted from tape -- booting from cards is not very 115 " useful, since the card reader firmware must be loaded in order to do so. 116 " Unfortunately, we have no genuine boot-from-disk mechanism available to us, 117 " because there is nothing to support the bootload connect in a cold disk MPC. 118 " 119 " The channel number ("Chan#") is set by the switches on the IOM to be the 120 " channel for the tape subsystem holding the bootload tape. The drive number 121 " for the bootload tape is set by switches on the tape MPC itself. 122 " 123 " The IOM number (IOM#) is set by IOM switches. 124 " 125 " The IOX Bootload Program: 126 " 127 " The IOX Bootload program looks like this (locations are absolute memory): 128 " 129 " Location Contents Purpose 130 " 131 " 000000 6/Command, 6/Device#, 6/0, 18/700000 132 " Bootload IDCW - Command is 05 133 " for tape 134 " 000001 18/000030, 18/0 Second IDCW: IOTD to loc 30 135 " 136 " 000004 24/7000000,12/IOXoffset A register value for connect 137 " 138 " System fault vector, at 000010 139 " 18/1, 18/612000 HALT instruction 140 " 141 " Terminate interrupt vector, at 000030 Overwritten by bootloaded 142 " 18/10, 18/612000 program: a HALT instruction 143 " 144 " IOX mailbox 145 " 146 " 001400 36/0 base addr 0 147 " 001401 36/0 base addr 1 148 " 001402 36/0 base addr 2 149 " 001403 36/0 base addr 3 150 " 001404 18/777777,18/0 bound 0, bound 1 151 " 001405 18/0,18/0 bound 2, bound 3 152 " 001406 24/0,12/3034 channel link word 153 " 001407 18/0,9/400,9/400 lpw 154 " 155 " We compromise between the IOM and IOX version of memory from 1400 onward 156 " with the IOX values except for the lpw which was fetched before the tape 157 " overwrote it. The code will fix it up. The presence of a 0 in the top six 158 " bits of word 0 denote an IOM boot from an IOX boot. 159 " 160 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 161 " 162 include bootload_equs 1-1 " BEGIN INCLUDE FILE bootload_equs.incl.alm 1-2 " Created 10/04/80 W. Olin Sibert, mostly from bootstrap1 1-3 " Modified by almost everyone, it seems. 1-4 " Last modified for MR11 bootload Multics addresses starting in 1983 by 1-5 " Keith Loepere. 1-6 " 1-7 " This include file describes various things used by the programs in 1-8 " bound_bootload_0. 1-9 1-10 " Default pointer register usage: 1-11 000000 1-12 equ ds,0 " Descriptor segment 000001 1-13 equ seg2,1 " Another temporary 000002 1-14 equ mb,2 " IOM mailbox 000003 1-15 equ slt,3 " Segment loading table (SLT) 000004 1-16 equ nt,4 " Name_table 000005 1-17 equ prb,5 " Physical_record_buffer 000006 1-18 equ seg,6 " Temporary 000007 1-19 equ fv,7 " Interrupt and fault vectors 1-20 1-21 " Macros 1-22 1-23 macro equ_o 1 1-24 maclist off,save 2 1-25 bool &U,&2 3 1-26 equ &1,&U 4 1-27 maclist restore 5 1-28 &end 1-29 1-30 macro set_o 1 1-31 maclist off,save 2 1-32 bool &U,&2 3 1-33 set &1,&U 4 1-34 maclist restore 5 1-35 &end 1-36 1-37 macro include_nolist 1 1-38 maclist off,save 2 1-39 include &1 3 1-40 maclist restore 4 1-41 &end 1-42 1-43 macro Bpush 1 1-44 stx2 bootload_0$entry_stack_ptr,id 2 1-45 ttn bootload_error$out_of_stack 3 1-46 &end 1-47 1-48 " Breturn offset-from-return-point 1-49 1-50 macro Breturn 1 1-51 ldx2 bootload_0$entry_stack_ptr,di 2 1-52 tra 0+&1,x2 3 1-53 &end 1-54 1-55 " Bentry name,offset-from-return-point 1-56 1-57 macro Bentry 1 1-58 segdef &1 2 1-59 macro &1_return 3 1-60 Breturn &<&K,2&[0&;&2&] 4 1-61 &&end 5 1-62 &end 1-63 1-64 " Bentry_internal name,offset_from_return_point 1-65 1-66 macro Bentry_internal 1 1-67 macro &1_return 2 1-68 Breturn &<&K,2&[0&;&2&] 3 1-69 &&end 4 1-70 &end 1-71 1-72 1-73 " Definitions 1-74 1-75 equ_o bostoe_absloc,10000 " bos_teohold 1-76 equ_o bostoe_lth,2000 1-77 1-78 equ_o fgbx_absloc,24000 " now in bce toehold 1-79 equ_o fgbx_lth,2000 1-80 1-81 equ_o toe_absloc,24000 " bootload Multics toehold 1-82 equ_o toe_lth,4000 " This starts at a 0 mod 4 1-83 " page address. It is 1-84 " bound as first element 1-85 " of bound_bootload_0. 1-86 1-87 equ_o bbl0_absloc,24000 " bound_bootload_0 location 1-88 equ_o bbl0_lth,22000 " and length. 1-89 1-90 equ_o toedata_absloc,46000 " toehold_data 1-91 equ_o toedata_lth,4000 1-92 1-93 equ_o upt_absloc,52000 " unpaged_page_tables 1-94 equ_o upt_lth,2000 1-95 1-96 equ_o iupt_absloc,54000 " init_unpaged_page_tables 1-97 equ_o iupt_lth,2000 1-98 1-99 equ_o bkpt_absloc,56000 " breakpoint_page 1-100 equ_o bkpt_lth,2000 1-101 1-102 equ_o prb_absloc,60000 " physical_record_buffer 1-103 equ_o prb_lth,6000 " memory past here up for 1-104 " grabs 1-105 1-106 " END INCLUDE FILE bootload_equs.incl.alm 163 include_nolist make_data_macros 164 include_nolist iom_word_macros 165 include mstr 4-1 4-2 4-3 "BEGIN INCLUDE FILE mstr.incl.alm 4-4 " Last modified November 1983 by Keith Loepere to add head_version. 4-5 4-6 " 4-7 " Structure mstr 4-8 " 4-9 000000 4-10 equ mstr.head,0 " LEVEL 2 4-11 4-12 000010 4-13 equ mstr.data_word,8 000044 4-14 equ mstr.data_shift,36 000000 4-15 bool mstr.data_mask,000000 4-16 000000 4-17 equ mstr.trail,0 " LEVEL 2 4-18 4-19 4-20 " 4-21 " Structure mst_label 4-22 " 000000 4-23 equ mst_label.xfer_vector,0 " LEVEL 2 4-24 000000 4-25 equ mst_label.lda_instr,0 000001 4-26 equ mst_label.tra_instr,1 000010 4-27 equ mst_label.head,8 " LEVEL 2 4-28 000020 4-29 equ mst_label.vid,16 " LEVEL 2 4-30 000050 4-31 equ mst_label.fv_overlay,40 " LEVEL 2 4-32 000050 4-33 equ mst_label.scu_instr,40 000051 4-34 equ mst_label.dis_instr,41 000150 4-35 equ mst_label.fault_data,104 000160 4-36 equ mst_label.boot_pgm_path,112 000232 4-37 equ mst_label.userid,154 000242 4-38 equ mst_label.label_version,162 000243 4-39 equ mst_label.output_mode,163 000244 4-40 equ mst_label.boot_pgm_len,164 000245 4-41 equ mst_label.copyright,165 000300 4-42 equ mst_label.boot_pgm,192 000000 4-43 equ mst_label.trail,0 " LEVEL 2 4-44 4-45 4-46 " 4-47 " Structure mstr_header 4-48 " 000010 4-49 equ mstr_header_size,8 4-50 000000 4-51 equ mstr_header.c1,0 000001 4-52 equ mstr_header.uid,1 " DOUBLE 4-53 000003 4-54 equ mstr_header.rec_within_file,3 " UPPER 000003 4-55 equ mstr_header.phy_file,3 " LOWER 4-56 000004 4-57 equ mstr_header.data_bits_used,4 " UPPER 000004 4-58 equ mstr_header.data_bit_len,4 " LOWER 4-59 000005 4-60 equ mstr_header.flags_word,5 000011 4-61 equ mstr_header.flags_shift,9 000005 4-62 equ mstr_header.admin_word,5 400000 4-63 bool mstr_header.admin,400000 " DU 000005 4-64 equ mstr_header.label_word,5 200000 4-65 bool mstr_header.label,200000 " DU 000005 4-66 equ mstr_header.eor_word,5 100000 4-67 bool mstr_header.eor,100000 " DU 000005 4-68 equ mstr_header.set_word,5 000010 4-69 bool mstr_header.set,000010 " DU 000005 4-70 equ mstr_header.repeat_word,5 000004 4-71 bool mstr_header.repeat,000004 " DU 000005 4-72 equ mstr_header.eot_word,5 000001 4-73 bool mstr_header.eot,000001 " DU 000005 4-74 equ mstr_header.drain_word,5 400000 4-75 bool mstr_header.drain,400000 " DL 000005 4-76 equ mstr_header.continue_word,5 200000 4-77 bool mstr_header.continue,200000 " DL 000005 4-78 equ mstr_header.head_version_word,5 000011 4-79 equ mstr_header.head_version_shift,9 007000 4-80 bool mstr_header.head_version_mask,7000 000005 4-81 equ mstr_header.repeat_count_word,5 000000 4-82 equ mstr_header.repeat_count_shift,0 000777 4-83 bool mstr_header.repeat_count_mask,000777 4-84 000006 4-85 equ mstr_header.checksum,6 000007 4-86 equ mstr_header.c2,7 4-87 4-88 " 4-89 " Structure mstr_trailer 4-90 " 000010 4-91 equ mstr_trailer_size,8 4-92 000000 4-93 equ mstr_trailer.c1,0 000001 4-94 equ mstr_trailer.uid,1 " DOUBLE 4-95 000003 4-96 equ mstr_trailer.tot_data_bits_word,3 4-97 " equ mstr_trailer.tot_data_bits_shift,0 4-98 000005 4-99 equ mstr_trailer.reel_num_word,5 000030 4-100 equ mstr_trailer.reel_num_shift,24 007777 4-101 bool mstr_trailer.reel_num_mask,007777 000005 4-102 equ mstr_trailer.tot_file_word,5 000000 4-103 equ mstr_trailer.tot_file_shift,0 4-104 000006 4-105 equ mstr_trailer.tot_rec_word,6 000000 4-106 equ mstr_trailer.tot_rec_shift,0 4-107 000007 4-108 equ mstr_trailer.c2,7 4-109 4-110 " 4-111 " Structure volume_identifier 4-112 " 000030 4-113 equ volume_identifier_size,24 4-114 4-115 " equ volume_identifier.installation_id,0 000010 4-116 equ volume_identifier.tape_reel_id,8 000020 4-117 equ volume_identifier.volume_set_id,16 4-118 670314 355245 4-119 bool header_c1,670314355245 " MANIFEST 512556 146073 4-120 bool header_c2,512556146073 " MANIFEST 107463 422532 4-121 bool trailer_c1,107463422532 " MANIFEST 265221 631704 4-122 bool trailer_c2,265221631704 " MANIFEST 4-123 000003 4-124 equ LABEL_VERSION,3 " MANIFEST 4-125 4-126 "END INCLUDE FILE mstr.incl.alm 166 include_nolist tape_io_commands 167 include toe_hold 6-1 6-2 6-3 "BEGIN INCLUDE FILE toe_hold.incl.alm 6-4 6-5 6-6 "Created 04/16/84 1150.7 est Mon by convert_include_file, 6-7 " Version of 11/07/82 1445.1 est Sun. 6-8 6-9 "Made from >cdd>incl>x>toe_hold.incl.pl1, 6-10 " modified 04/16/84 1150.7 est Mon 6-11 6-12 " 6-13 " Structure toe_hold 6-14 " 004000 6-15 equ toe_hold_size,2048 6-16 6-17 000000 6-18 equ toe_hold.entry_sequences,0 " DOUBLE 000040 6-19 equ toe_hold.flagbox,32 000220 6-20 equ toe_hold.paths,144 " LEVEL 2 6-21 000240 6-22 equ toe_hold.n_paths_used,160 000241 6-23 equ toe_hold.memory_state,161 000242 6-24 equ toe_hold.bce_dbr,162 " DOUBLE 002760 6-25 equ toe_hold.multics_state,1520 " LEVEL 2 6-26 6-27 6-28 " 6-29 " Structure io_path 6-30 " 000004 6-31 equ io_path_size,4 6-32 000000 6-33 equ io_path.pcw,0 " DOUBLE 6-34 000002 6-35 equ io_path.port_number_word,2 000041 6-36 equ io_path.port_number_shift,33 000007 6-37 bool io_path.port_number_mask,000007 000002 6-38 equ io_path.iom_number_word,2 000022 6-39 equ io_path.iom_number_shift,18 077777 6-40 bool io_path.iom_number_mask,077777 000002 6-41 equ io_path.channel_number,2 " LOWER 6-42 000000 6-43 equ TOE_HOLD_CRASH_ENTRY,0 " MANIFEST 000001 6-44 equ TOE_HOLD_ESD_ENTRY,1 " MANIFEST 000002 6-45 equ TOE_HOLD_DUMP_ENTRY,2 " MANIFEST 000003 6-46 equ TOE_HOLD_MULTICS_ENTRY,3 " MANIFEST 000004 6-47 equ TOE_HOLD_RESTART_ENTRY,4 " MANIFEST 000005 6-48 equ TOE_HOLD_BOOT_ENTRY,5 " MANIFEST 000014 6-49 equ TOE_HOLD_BOS_ENTRY,12 " MANIFEST 000015 6-50 equ TOE_HOLD_BOS_NO_SAVE_ENTRY,13 " MANIFEST 000016 6-51 equ TOE_HOLD_BOS_MULTICS_ENTRY,14 " MANIFEST 6-52 6-53 " 6-54 " Structure mc_state 6-55 " 001020 6-56 equ mc_state_size,528 6-57 000000 6-58 equ mc_state.mc_,0 " LEVEL 2 6-59 000060 6-60 equ mc_state.masks,48 000100 6-61 equ mc_state.interrupt,64 " DOUBLE 000102 6-62 equ mc_state.mode_reg,66 000103 6-63 equ mc_state.cache_mode_reg,67 000104 6-64 equ mc_state.dbr,68 " DOUBLE 000106 6-65 equ mc_state.cfg,70 " DOUBLE 000110 6-66 equ mc_state.bar,72 000111 6-67 equ mc_state.old_memory_state,73 000120 6-68 equ mc_state.ou_history_registers,80 " DOUBLE 000160 6-69 equ mc_state.cu_history_registers,112 " DOUBLE 000220 6-70 equ mc_state.du_history_registers,144 " DOUBLE 000260 6-71 equ mc_state.apu_history_registers,176 " DOUBLE 000320 6-72 equ mc_state.ptwam_ptrs,208 000420 6-73 equ mc_state.ptwam_regs,272 000520 6-74 equ mc_state.sdwam_ptrs,336 000620 6-75 equ mc_state.sdwam_regs,400 " DOUBLE 6-76 000000 6-77 equ Initial_undefined,0 " MANIFEST 000001 6-78 equ At_bce__early,1 " MANIFEST 000002 6-79 equ At_bce__boot,2 " MANIFEST 000003 6-80 equ Multics,3 " MANIFEST 000004 6-81 equ Undefined_saving_state,4 " MANIFEST 000005 6-82 equ Undefined_reading_bce,5 " MANIFEST 000006 6-83 equ At_bce__crash,6 " MANIFEST 000007 6-84 equ At_bce__shutdown,7 " MANIFEST 000010 6-85 equ Undefined_continue,8 " MANIFEST 000011 6-86 equ Undefined_saving_mem,9 " MANIFEST 6-87 6-88 " 6-89 " Structure mc 6-90 " 000060 6-91 equ mc_size,48 6-92 000000 6-93 equ mc.prs,0 6-94 000020 6-95 equ mc.regs_word,16 001532 6-96 equ mc.regs_shift,858 000020 6-97 equ mc.x,16 " UPPER 6-98 000024 6-99 equ mc.a,20 000025 6-100 equ mc.q,21 6-101 000026 6-102 equ mc.e_word,22 000034 6-103 equ mc.e_shift,28 000377 6-104 bool mc.e_mask,000377 6-105 000027 6-106 equ mc.t_word,23 000011 6-107 equ mc.t_shift,9 000027 6-108 equ mc.ralr_word,23 000000 6-109 equ mc.ralr_shift,0 000007 6-110 bool mc.ralr_mask,000007 6-111 000030 6-112 equ mc.scu,24 000040 6-113 equ mc.mask,32 " DOUBLE 000042 6-114 equ mc.ips_temp,34 6-115 000043 6-116 equ mc.errcode_word,35 000000 6-117 equ mc.errcode_shift,0 6-118 000044 6-119 equ mc.fim_temp_word,36 000000 6-120 equ mc.fim_temp_shift,0 000044 6-121 equ mc.unique_index,36 " UPPER 000044 6-122 equ mc.resignal_word,36 400000 6-123 bool mc.resignal,400000 " DL 000044 6-124 equ mc.fcode_word,36 000000 6-125 equ mc.fcode_shift,0 377777 6-126 bool mc.fcode_mask,377777 6-127 000045 6-128 equ mc.fault_reg,37 6-129 000046 6-130 equ mc.cpu_type_word,38 000041 6-131 equ mc.cpu_type_shift,33 000003 6-132 bool mc.cpu_type_mask,000003 000046 6-133 equ mc.ext_fault_reg_word,38 000022 6-134 equ mc.ext_fault_reg_shift,18 077777 6-135 bool mc.ext_fault_reg_mask,077777 6-136 000046 6-137 equ mc.fault_time,38 " DOUBLE 000050 6-138 equ mc.eis_info,40 6-139 000000 6-140 equ apx,0 " MANIFEST 000001 6-141 equ abx,1 " MANIFEST 000002 6-142 equ bpx,2 " MANIFEST 000003 6-143 equ bbx,3 " MANIFEST 000004 6-144 equ lpx,4 " MANIFEST 000005 6-145 equ lbx,5 " MANIFEST 000006 6-146 equ spx,6 " MANIFEST 000007 6-147 equ sbx,7 " MANIFEST 6-148 6-149 " 6-150 " Structure scu 6-151 " 000010 6-152 equ scu_size,8 6-153 000000 6-154 equ scu.ppr_word,0 000021 6-155 equ scu.ppr_shift,17 000041 6-156 equ scu.prr_shift,33 000007 6-157 bool scu.prr_mask,000007 000022 6-158 equ scu.psr_shift,18 077777 6-159 bool scu.psr_mask,077777 400000 6-160 bool scu.p,400000 " DL 000000 6-161 equ scu.apu_word,0 000003 6-162 equ scu.apu_shift,3 037777 6-163 bool scu.apu_mask,037777 200000 6-164 bool scu.xsf,200000 " DL 100000 6-165 bool scu.sdwm,100000 " DL 040000 6-166 bool scu.sd_on,040000 " DL 020000 6-167 bool scu.ptwm,020000 " DL 010000 6-168 bool scu.pt_on,010000 " DL 004000 6-169 bool scu.pi_ap,004000 " DL 002000 6-170 bool scu.dsptw,002000 " DL 001000 6-171 bool scu.sdwnp,001000 " DL 000400 6-172 bool scu.sdwp,000400 " DL 000200 6-173 bool scu.ptw,000200 " DL 000100 6-174 bool scu.ptw2,000100 " DL 000040 6-175 bool scu.fap,000040 " DL 000020 6-176 bool scu.fanp,000020 " DL 000010 6-177 bool scu.fabs,000010 " DL 000000 6-178 equ scu.fault_cntr_word,0 000000 6-179 equ scu.fault_cntr_shift,0 000007 6-180 bool scu.fault_cntr_mask,000007 6-181 000001 6-182 equ scu.fd_word,1 000020 6-183 equ scu.fd_shift,16 000001 6-184 equ scu.iro_word,1 400000 6-185 bool scu.iro,400000 " DU 000001 6-186 equ scu.oeb_word,1 200000 6-187 bool scu.oeb,200000 " DU 000001 6-188 equ scu.e_off_word,1 100000 6-189 bool scu.e_off,100000 " DU 000001 6-190 equ scu.orb_word,1 040000 6-191 bool scu.orb,040000 " DU 000001 6-192 equ scu.r_off_word,1 020000 6-193 bool scu.r_off,020000 " DU 000001 6-194 equ scu.owb_word,1 010000 6-195 bool scu.owb,010000 " DU 000001 6-196 equ scu.w_off_word,1 004000 6-197 bool scu.w_off,004000 " DU 000001 6-198 equ scu.no_ga_word,1 002000 6-199 bool scu.no_ga,002000 " DU 000001 6-200 equ scu.ocb_word,1 001000 6-201 bool scu.ocb,001000 " DU 000001 6-202 equ scu.ocall_word,1 000400 6-203 bool scu.ocall,000400 " DU 000001 6-204 equ scu.boc_word,1 000200 6-205 bool scu.boc,000200 " DU 000001 6-206 equ scu.inret_word,1 000100 6-207 bool scu.inret,000100 " DU 000001 6-208 equ scu.crt_word,1 000040 6-209 bool scu.crt,000040 " DU 000001 6-210 equ scu.ralr_word,1 000020 6-211 bool scu.ralr,000020 " DU 000001 6-212 equ scu.am_er_word,1 000010 6-213 bool scu.am_er,000010 " DU 000001 6-214 equ scu.oosb_word,1 000004 6-215 bool scu.oosb,000004 " DU 000001 6-216 equ scu.paru_word,1 000002 6-217 bool scu.paru,000002 " DU 000001 6-218 equ scu.parl_word,1 000001 6-219 bool scu.parl,000001 " DU 000001 6-220 equ scu.onc_1_word,1 400000 6-221 bool scu.onc_1,400000 " DL 000001 6-222 equ scu.onc_2_word,1 200000 6-223 bool scu.onc_2,200000 " DL 000001 6-224 equ scu.port_stat_word,1 000006 6-225 equ scu.port_stat_shift,6 001777 6-226 bool scu.port_stat_mask,001777 000001 6-227 equ scu.ial_word,1 000014 6-228 equ scu.ial_shift,12 000017 6-229 bool scu.ial_mask,000017 000001 6-230 equ scu.iac_word,1 000011 6-231 equ scu.iac_shift,9 000007 6-232 bool scu.iac_mask,000007 000001 6-233 equ scu.con_chan_word,1 000006 6-234 equ scu.con_chan_shift,6 000007 6-235 bool scu.con_chan_mask,000007 000001 6-236 equ scu.fi_num_word,1 000001 6-237 equ scu.fi_num_shift,1 000037 6-238 bool scu.fi_num_mask,000037 000001 6-239 equ scu.fi_flag_word,1 000001 6-240 bool scu.fi_flag,000001 " DL 6-241 000002 6-242 equ scu.tpr,2 " UPPER 000002 6-243 equ scu.trr_word,2 000041 6-244 equ scu.trr_shift,33 000007 6-245 bool scu.trr_mask,000007 000002 6-246 equ scu.tsr_word,2 000022 6-247 equ scu.tsr_shift,18 077777 6-248 bool scu.tsr_mask,077777 000002 6-249 equ scu.cpu_no_word,2 000006 6-250 equ scu.cpu_no_shift,6 000007 6-251 bool scu.cpu_no_mask,000007 000002 6-252 equ scu.delta_word,2 000000 6-253 equ scu.delta_shift,0 000077 6-254 bool scu.delta_mask,000077 6-255 000003 6-256 equ scu.word3,3 " UPPER 000003 6-257 equ scu.tsr_stat_word,3 000006 6-258 equ scu.tsr_stat_shift,6 007777 6-259 bool scu.tsr_stat_mask,007777 000003 6-260 equ scu.tsna_word,3 000016 6-261 equ scu.tsna_shift,14 000017 6-262 bool scu.tsna_mask,000017 000003 6-263 equ scu.tsnb_word,3 000012 6-264 equ scu.tsnb_shift,10 000017 6-265 bool scu.tsnb_mask,000017 000003 6-266 equ scu.tsnc_word,3 000006 6-267 equ scu.tsnc_shift,6 000017 6-268 bool scu.tsnc_mask,000017 000003 6-269 equ scu.tpr_tbr_word,3 000000 6-270 equ scu.tpr_tbr_shift,0 000077 6-271 bool scu.tpr_tbr_mask,000077 6-272 000004 6-273 equ scu.ilc,4 " UPPER 000004 6-274 equ scu.ir,4 " LOWER 000004 6-275 equ scu.zero_word,4 400000 6-276 bool scu.zero,400000 " DL 000004 6-277 equ scu.neg_word,4 200000 6-278 bool scu.neg,200000 " DL 000004 6-279 equ scu.carry_word,4 100000 6-280 bool scu.carry,100000 " DL 000004 6-281 equ scu.ovfl_word,4 040000 6-282 bool scu.ovfl,040000 " DL 000004 6-283 equ scu.eovf_word,4 020000 6-284 bool scu.eovf,020000 " DL 000004 6-285 equ scu.eufl_word,4 010000 6-286 bool scu.eufl,010000 " DL 000004 6-287 equ scu.oflm_word,4 004000 6-288 bool scu.oflm,004000 " DL 000004 6-289 equ scu.tro_word,4 002000 6-290 bool scu.tro,002000 " DL 000004 6-291 equ scu.par_word,4 001000 6-292 bool scu.par,001000 " DL 000004 6-293 equ scu.parm_word,4 000400 6-294 bool scu.parm,000400 " DL 000004 6-295 equ scu.bm_word,4 000200 6-296 bool scu.bm,000200 " DL 000004 6-297 equ scu.tru_word,4 000100 6-298 bool scu.tru,000100 " DL 000004 6-299 equ scu.mif_word,4 000040 6-300 bool scu.mif,000040 " DL 000004 6-301 equ scu.abs_word,4 000020 6-302 bool scu.abs,000020 " DL 000004 6-303 equ scu.hex_word,4 000010 6-304 bool scu.hex,000010 " DL 6-305 000005 6-306 equ scu.ca,5 " UPPER 000005 6-307 equ scu.cu_word,5 000006 6-308 equ scu.cu_shift,6 007777 6-309 bool scu.cu_mask,007777 000005 6-310 equ scu.rf_word,5 400000 6-311 bool scu.rf,400000 " DL 000005 6-312 equ scu.rpt_word,5 200000 6-313 bool scu.rpt,200000 " DL 000005 6-314 equ scu.rd_word,5 100000 6-315 bool scu.rd,100000 " DL 000005 6-316 equ scu.rl_word,5 040000 6-317 bool scu.rl,040000 " DL 000005 6-318 equ scu.pot_word,5 020000 6-319 bool scu.pot,020000 " DL 000005 6-320 equ scu.pon_word,5 010000 6-321 bool scu.pon,010000 " DL 000005 6-322 equ scu.xde_word,5 004000 6-323 bool scu.xde,004000 " DL 000005 6-324 equ scu.xdo_word,5 002000 6-325 bool scu.xdo,002000 " DL 000005 6-326 equ scu.poa_word,5 001000 6-327 bool scu.poa,001000 " DL 000005 6-328 equ scu.rfi_word,5 000400 6-329 bool scu.rfi,000400 " DL 000005 6-330 equ scu.its_word,5 000200 6-331 bool scu.its,000200 " DL 000005 6-332 equ scu.if_word,5 000100 6-333 bool scu.if,000100 " DL 000005 6-334 equ scu.cpu_tag_word,5 000000 6-335 equ scu.cpu_tag_shift,0 000077 6-336 bool scu.cpu_tag_mask,000077 6-337 000006 6-338 equ scu.even_inst,6 000007 6-339 equ scu.odd_inst,7 6-340 6-341 " 6-342 " Structure scux 6-343 " 000010 6-344 equ scux_size,8 6-345 6-346 000001 6-347 equ scux.fd_word,1 000000 6-348 equ scux.fd_shift,0 000001 6-349 equ scux.isn_word,1 400000 6-350 bool scux.isn,400000 " DU 000001 6-351 equ scux.ioc_word,1 200000 6-352 bool scux.ioc,200000 " DU 000001 6-353 equ scux.ia_am_word,1 100000 6-354 bool scux.ia_am,100000 " DU 000001 6-355 equ scux.isp_word,1 040000 6-356 bool scux.isp,040000 " DU 000001 6-357 equ scux.ipr_word,1 020000 6-358 bool scux.ipr,020000 " DU 000001 6-359 equ scux.nea_word,1 010000 6-360 bool scux.nea,010000 " DU 000001 6-361 equ scux.oobb_word,1 004000 6-362 bool scux.oobb,004000 " DU 6-363 000003 6-364 equ scux.tsr_stat_word,3 000006 6-365 equ scux.tsr_stat_shift,6 007777 6-366 bool scux.tsr_stat_mask,007777 6-367 000006 6-368 equ scux.instr,6 6-369 6-370 "END INCLUDE FILE toe_hold.incl.alm 168 " 000000 169 equ bootload_info,0 " address of IOM bootload program 170 equ_o load_offset,30 " offset of IOM load 000330 171 equ my_offset,load_offset+mst_label.boot_pgm 172 400000 173 bool cold_tape_mpc,400000 " DU 200000 174 bool imu,200000 " DU 000001 175 equ imu_bit_shift,1 176 equ_o iom_fault_vector,10 000007 177 bool iom_num_mask,000007 " DL 178 179 " Layout of the physical_record_buffer 180 " The first part is common to all phases of the loader. 181 060000 182 equ prb.prb_it,prb_absloc 060001 183 equ prb.mstrh,prb.prb_it+1 060011 184 equ prb.data,prb.mstrh+mstr_header_size 062011 185 equ prb.mstrt,prb.data+1024 186 000000 187 inhibit on <-><-><-><-><-><-><-><-><-><-><-><-> 000000 188 my_zero: 000000 aa 000000 2352 00 189 lda bootload_info 000001 aa 770000 3752 03 190 ana =o770000,du 000002 aa 000277 7552 04 191 sta system_type-*,ic non-zero for IOX 192 000003 aa 000062 6012 04 193 tnz iox_setup-*,ic 194 000004 195 decor dps8 <<<>>> 196 000004 aa 000700 6212 00 197 eax1 7*64 set all controller masks 000005 aa 000000 4312 07 198 fld 0,dl mask all interrupts 000006 aa 000020 0572 11 199 sscr 2*8,x1 .. 000007 aa 777700 6212 11 200 eax1 -64,x1 SSCR will do nothing for unassigned masks 000010 aa 777776 6052 04 201 tpl -2,ic .. 202 000011 aa 777777 6372 03 203 ldt -1,du Prevent timer runout 000012 204 inhibit off <-><-><-><-><-><-><-><-><-><-><-><-> 205 000012 aa 000623 6740 04 206 lcpr mr-my_zero+my_offset,04 207 " clear the mode register 000013 aa 000624 6740 02 208 lcpr cmr-my_zero+my_offset,02 209 " disable the cache 000014 aa 000002 5324 00 210 camp 2 " enable and clear the PTWAM 000015 aa 000006 5320 00 211 cams 6 " enable and clear the SDWAM 212 " clear the cache 213 000016 aa 000007 4500 00 214 stz bootload_info+7 " clear software region 215 000017 aa 000002 2360 00 216 ldq bootload_info+2 Get mailbox and int. base word 000020 aa 000007 3760 07 217 anq iom_num_mask,dl and extract the IOM number 000021 aa 000001 7360 00 218 qls 1 iom# * 2 000022 aa 000010 2350 06 219 lda iom_fault_vector,ql Get fault vector word 000023 aa 000001 7350 00 220 als imu_bit_shift shift IMU bit to sign position 000024 aa 000003 6050 04 221 tpl +3,ic If not IMU, skip setting of IMU bit 000025 aa 200000 2360 03 222 ldq imu,du 000026 aa 000007 2560 00 223 orsq bootload_info+7 save IMU flag in software region 224 000027 aa 000001 2360 00 225 ldq bootload_info+1 Last PCW 000030 aa 000007 7720 00 226 qrl 9-2 000031 aa 000000 6260 02 227 eax6 0,qu Tape channel number * 4 in X6. 000032 aa 000002 0260 00 228 adlx6 bootload_info+2 Add in base of mailbox 229 000033 aa 000002 2250 00 230 ldx5 bootload_info+2 Mailbox loc in X5 000034 aa 000000 2370 15 231 ldaq 0,x5 check status from first read 000035 aa 000241 3150 04 232 cana status_mask-*,ic 000036 aa 000230 6010 04 233 tnz boot_die-*,ic bad status 234 000037 aa 000003 2360 00 235 ldq bootload_info+3 " get the IDCW 000040 aa 007700 3760 03 236 anq =o007700,du " device number 000041 aa 000227 2560 04 237 orsq data_idcw-*,ic " save it 000042 aa 007700 3160 03 238 canq =o007700,du " boot from IOM or FIPS device zero? 000043 aa 000015 6000 04 239 tze get_device-*,ic " yes 240 000044 aa 000236 7560 04 241 stq device_hold-*,ic " save device# from IDCW 000045 aa 000074 7770 00 242 llr 24+36 " get device# from status word 000046 aa 007700 3760 03 243 anq =o007700,du " only device# please 000047 aa 000036 6000 04 244 tze got_device-*,ic " = 00 in both places... 000050 aa 000232 1160 04 245 cmpq device_hold-*,ic " are the two the same? 000051 aa 000034 6000 04 246 tze got_device-*,ic " yes, everything ok 000052 aa 000225 2350 04 247 lda device_mask-*,ic " no, get ready to zero device field 000053 aa 000003 3550 00 248 ansa bootload_info+3 " first the bootload IDCW 000054 aa 000214 3550 04 249 ansa data_idcw-*,ic " then the data IDCW 000055 aa 000003 2560 00 250 orsq bootload_info+3 " now put in the right number 000056 aa 000212 2560 04 251 orsq data_idcw-*,ic " ditto the data IDCW 000057 aa 000026 7100 04 252 tra got_device-*,ic " now its ready 253 000060 254 get_device: 000060 aa 000074 7770 00 255 llr 24+36 " get it from status word 000061 aa 007700 3760 03 256 anq =o007700,du " device only 000062 aa 000023 6000 04 257 tze got_device-*,ic " already zero, proceed 000063 aa 000003 2560 00 258 orsq bootload_info+3 " save in IDCW (for bootload_io) 000064 aa 000021 7100 04 259 tra got_device-*,ic 260 000065 261 iox_setup: 000065 262 decor adp <<<>>> 263 000065 264 inhibit on <-><-><-><-><-><-><-><-><-><-><-><-> 265 000065 aa 000000 2352 07 266 lda =0,dl Mask interrupts 000066 aa 000000 5532 00 267 limr 268 000067 aa 777777 6372 03 269 ldt -1,du Prevent timer runout 000070 270 inhibit off <-><-><-><-><-><-><-><-><-><-><-><-> 271 000070 aa 000205 1724 04 272 ldo or-*,ic " set option register 273 000071 aa 000000 5324 00 274 camp2 " enable and clear the PTWAM 275 000072 aa 000007 4500 00 276 stz bootload_info+7 " clear software region 277 000073 aa 000205 2350 04 278 lda iox_lpw-*,ic 000074 aa 001407 7550 00 279 sta iox_mailbox+7 000075 aa 001407 6260 00 280 eax6 iox_mailbox+7 281 000076 aa 001410 6250 00 282 eax5 iox_mailbox+8 " Mailbox loc in X5 000077 aa 000000 2370 15 283 ldaq 0,x5 " check status from first read 000100 aa 000176 3150 04 284 cana status_mask-*,ic 000101 aa 000165 6010 04 285 tnz boot_die-*,ic " bad status 286 000102 aa 000000 2360 00 287 ldq bootload_info " get the IDCW 000103 aa 007700 3760 03 288 anq =o007700,du " device number 000104 aa 000164 2560 04 289 orsq data_idcw-*,ic " save it 290 000105 291 decor dps8 <<<>>> or whatever 292 000105 293 got_device: 000105 aa 000027 7020 04 294 tsx2 chk_mpc_state-*,ic " is tape controller cold or warm? 000106 aa 000007 2560 00 295 orsq bootload_info+7 " save cold boot flag in software region 000107 aa 000107 7020 04 296 tsx2 rd_tape-*,ic " read eof record, and ignore status 000110 aa 000000 0110 00 297 nop " ignore errors 298 " 000111 aa 000105 7020 04 299 tsx2 rd_tape-*,ic read in first real record 000112 aa 000154 7100 04 300 tra boot_die-*,ic " error 301 000113 aa 060011 2350 00 302 lda prb.data " less SLTE size 000114 aa 000001 0750 07 303 ada 1,dl " and control word 000115 aa 000022 7350 00 304 als 18 000116 aa 060000 0550 00 305 asa prb.prb_it " adjust address 000117 aa 000014 7710 00 306 arl 12 000120 aa 000000 5310 00 307 neg 0 000121 aa 060000 0550 00 308 asa prb.prb_it " and tally 309 000122 aa 060000 7240 56 310 lxl4 prb.prb_it,id " bound_bootload_0 control word 311 000123 312 next_record: 000123 aa 060000 2350 56 313 lda prb.prb_it,id " get the next data word 000124 aa 000005 6064 04 314 ttn read_more_data-*,ic 000125 aa 000622 7550 56 315 sta data_it-my_zero+my_offset,id " store it 000126 aa 777777 6240 14 316 eax4 -1,x4 " tally it off 000127 aa 777774 6054 04 317 tpnz next_record-*,ic 318 319 " we are done reading in bound_bootload_0 320 000130 aa 024012 7100 00 321 tra bbl0_absloc+2*TOE_HOLD_BOOT_ENTRY " tra through 322 " toehold to bootload_abs_mode 323 000131 324 read_more_data: 000131 aa 000065 7020 04 325 tsx2 rd_tape-*,ic " read another record 000132 aa 000134 7100 04 326 tra boot_die-*,ic 000133 aa 777770 7100 04 327 tra next_record-*,ic " keep copying 328 " 329 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 330 " chk_mpc_state - subroutine to issue special connect to 331 " tape channel to determine if intelligence is present. 332 000134 333 chk_mpc_state: 000134 aa 000145 2340 04 334 szn system_type-*,ic 000135 aa 000003 6000 04 335 tze 3,ic 336 000136 337 decor adp <<<>>> 000136 aa 000000 2360 07 338 ldq 0,dl " indicate intelligence 000137 aa 000000 7100 12 339 tra 0,x2 340 000140 341 decor dps8 <<<>>> 000140 aa 000040 4130 00 342 rscr 32 000141 aa 000051 7570 04 343 staq chk_io_time-*,ic " save start time 000142 aa 000045 6350 04 344 eaa chk_idcw-*,ic " absolute address of DCW list. 000143 aa 000000 7550 16 345 sta 0,x6 " set tape LPW. 000144 aa 000000 4500 15 346 stz 0,x5 " clear status word. 347 000145 aa 000001 0150 00 348 cioc bootload_info+1 " port # stuck in PCW 349 000146 aa 000000 2350 15 350 lda 0,x5 " check for status 000147 aa 000025 6040 04 351 tmi got_status-*,ic " status has arrived 000150 aa 000040 4130 00 352 rscr 32 " nop, need to wait 000151 aa 000041 1770 04 353 sbaq chk_io_time-*,ic 000152 aa 000042 1170 04 354 cmpaq pause_time-*,ic 000153 aa 777773 6040 04 355 tmi -5,ic " continue waiting 356 357 " Timeout, tape controller must be wedged.. 358 000154 359 unwedge: 000154 aa 070000 2350 07 360 lda =o070000,dl " reset and mask PCW bits 000155 aa 000000 2550 00 361 orsa bootload_info " set bits in PCW 000156 aa 000032 6350 04 362 eaa ignore_idcw-*,ic " absolute address of DCW list. 000157 aa 000000 7550 16 363 sta 0,x6 " set tape LPW. 000160 aa 000000 4500 15 364 stz 0,x5 " clear status word. 365 000161 aa 000001 0150 00 366 cioc bootload_info+1 " port # stuck in PCW 367 000162 aa 000040 4130 00 368 rscr 32 " small pause for reset/mask 000163 aa 000027 7570 04 369 staq chk_io_time-*,ic 000164 aa 000040 4130 00 370 rscr 32 000165 aa 000025 1770 04 371 sbaq chk_io_time-*,ic 000166 aa 000026 1170 04 372 cmpaq pause_time-*,ic 000167 aa 777775 6040 04 373 tmi -3,ic 000170 aa 050000 2350 07 374 lda =o050000,dl " get mask and marker PCW bits 000171 aa 000000 6550 00 375 ersa bootload_info " turn them off in the PCW 000172 aa 400000 2360 03 376 ldq cold_tape_mpc,du " indicate no intelligence 000173 aa 000000 7100 12 377 tra 0,x2 378 000174 379 got_status: 000174 aa 000040 4130 00 380 rscr 32 " small pause for IO interrupt cycle 000175 aa 000015 7570 04 381 staq chk_io_time-*,ic 000176 aa 000040 4130 00 382 rscr 32 000177 aa 000013 1770 04 383 sbaq chk_io_time-*,ic 000200 aa 000014 1170 04 384 cmpaq pause_time-*,ic 000201 aa 777775 6040 04 385 tmi -3,ic 000202 aa 000000 2350 15 386 lda 0,x5 " get status word 000203 aa 000006 3150 04 387 cana pof_mask-*,ic " check for power-off 000204 aa 777750 6010 04 388 tnz unwedge-*,ic " yes, will need to unwedge 000205 aa 000000 2360 07 389 ldq 0,dl " indicate intelligence 000206 aa 000000 7100 12 390 tra 0,x2 391 392 make_idcw chk_idcw,TAPE.reset_device_status,0,nondata,terminate 000207 chk_idcw: 000207 aa 510000 700200 393 394 make_idcw ignore_idcw,TAPE.request_status,0,nondata,terminate 000210 ignore_idcw: 000210 aa 000000 700200 395 000211 aa 200000 000000 396 pof_mask: oct 200000000000 397 even 000212 398 chk_io_time: 000212 399 bss ,2 000214 400 pause_time: 000214 aa 000000 000000 401 dec 0,1000000 " one second 000215 aa 000003 641100 402 " 403 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 404 " rd_tape - subroutine to issue connect to tape channel 405 " and wait for status word to be stored 406 000216 aa 000040 4130 00 407 rd_tape: rscr 32 " get the time 000217 aa 000065 7570 04 408 staq io_start_time-*,ic " and save it 000220 409 try_rd_again: 000220 aa 000050 6350 04 410 eaa data_idcw-*,ic Absolute address of DCW list. 000221 aa 000000 7550 16 411 sta 0,x6 Set tape LPW. 000222 aa 000000 4500 15 412 stz 0,x5 Clear status word. 413 000223 aa 000004 2350 00 414 lda bootload_info+4 iox a data 415 000224 aa 000055 2340 04 416 szn system_type-*,ic 000225 aa 000003 6010 04 417 tnz 3,ic 418 000226 419 decor dps8 <<<>>> 000226 aa 000001 0150 00 420 cioc bootload_info+1 read next record (port # stuck in pcw) 000227 aa 000002 7100 04 421 tra 2,ic 422 000230 423 decor adp <<<>>> 000230 aa 001400 0150 00 424 cioc iox_mailbox 425 000231 426 decor dps8 <<<>>> 427 odd 428 000231 aa 000000 2350 15 429 lda 0,x5 000232 aa 777777 6050 04 430 tpl -1,ic Wait for it to happen. 431 432 " IMU only does single presision stores, so after status word 433 " arrives we need to wait for the second word to be stored... 434 000233 aa 001000 2360 07 435 ldq =o1000,dl 000234 aa 000001 1360 07 436 sblq 1,dl 000235 aa 777777 6010 04 437 tnz -1,ic 000236 aa 000000 2370 15 438 ldaq 0,x5 " should be there now!! 439 000237 aa 000037 3150 04 440 cana status_mask-*,ic " error? 000240 aa 000015 6010 04 441 tnz tape_error-*,ic " yes 000241 aa 007777 3160 07 442 canq =o7777,dl " tally residue? 000242 aa 000000 6010 12 443 tnz 0,x2 " yes, noise on the tape 444 445 " check for valid record 446 000243 aa 060006 2350 00 447 lda prb.mstrh+mstr_header.flags_word 000244 aa 000004 3150 03 448 cana mstr_header.repeat,du " the only fatal flag. 000245 aa 000021 6010 04 449 tnz boot_die-*,ic " yes 450 451 " compute prb pointer 452 000246 aa 060005 2360 00 453 ldq prb.mstrh+mstr_header.data_bits_used 000247 aa 000044 5060 03 454 div 36,du " number of words in QL 000250 aa 000001 0760 07 455 adq 1,dl " plus one 000251 aa 000006 7360 00 456 qls 18-12 " in Q(18:29) 000252 aa 060011 0760 03 457 adq prb.data,du " whole pointer 000253 aa 060000 7560 00 458 stq prb.prb_it 459 000254 aa 000001 7100 12 460 tra 1,x2 return to caller 461 000255 462 tape_error: 000255 aa 770000 3750 03 463 ana =o770000,du " get just major/minor status 000256 aa 600000 1150 03 464 cmpa =o600000,du " POF? 000257 aa 000002 6000 04 465 tze retry_pof-*,ic " yes, try again 000260 aa 000000 7100 12 466 tra 0,x2 " no, give up 467 000261 468 retry_pof: 000261 aa 000040 4130 00 469 rscr 32 " get the time 000262 aa 000022 1770 04 470 sbaq io_start_time-*,ic " rel-a-tize 000263 aa 000023 1170 04 471 cmpaq ten_sec_limit-*,ic " is ten seconds up? 000264 aa 777734 6040 04 472 tmi try_rd_again-*,ic " no, try one mo time 000265 aa 000000 7100 12 473 tra 0,x2 " yes, give up 474 " 000266 475 inhibit on <+><+><+><+><+><+><+><+><+><+><+><+> 000266 aa 000000 6162 00 476 boot_die: dis 0 stop the machine 000267 aa 777777 7102 04 477 tra -1,ic I said stop! 478 000270 479 inhibit off <-><-><-><-><-><-><-><-><-><-><-><-> 480 481 make_idcw data_idcw,TAPE.read_binary_record,0,record,terminate 000270 data_idcw: 000270 aa 050000 700000 482 483 make_ddcw data_dcw,prb.mstrh,mstr_header_size+1024+mstr_trailer_size, 484 iotd 000271 data_dcw: 000271 aa 060001 002020 485 000272 aa 024000 000000 486 data_it: vfd 18/bbl0_absloc,12/0,6/0 " indirect word for storing code 487 000273 aa 000000 000061 488 mr: oct 000000000061 " enable history registers 000274 aa 000000 000003 489 cmr: oct 000000000003 " disable cache, LUF in 16 ms. 000275 aa 300000 000000 490 or: oct 300000000000 " LUF in 16 ms. 491 000276 492 status_mask: 000276 aa 370000 770000 493 oct 370000770000 494 000277 495 device_mask: 000277 aa 770077 777777 496 oct 770077777777 497 000300 aa 000000 003034 498 iox_lpw: vfd 24/0,12o/3034 499 000301 500 system_type: 000301 aa 000000 000000 501 oct 0 " non zero is DPS88 (IOX) 000302 502 device_hold: 000302 aa 000000 000000 503 oct 0 " temp holding area for # from IDCW 000303 aa 000000 0110 03 504 even 000304 505 io_start_time: 000304 506 bss ,2 000306 507 ten_sec_limit: 000306 aa 000000 000000 508 dec 0,10000000 " ten seconds (in micros) 000307 aa 000046 113200 509 " 510 " If this program is bootloaded from tape by the IOM/IOX bootload program, 511 " the IOM/IOX mailbox will get overwritten with the contents of this 512 " tape record. It is imperative that the previous contents be restored. 513 " It is the purpose of the following code to perform this restoration. 514 515 equ_o iom_mbx_absloc,1200 516 equ_o iox_mailbox,1400 517 518 " IMW area 519 000650 520 org iom_mbx_absloc-my_offset 000650 521 bss ,128 522 523 macro status_mailboxes 1 524 oct 0,0 for status storage or base addr 0, 1 2 525 oct 0,0 for system fault storage or base addr 2, 3 3 526 4 527 vfd 18o/777777,18/0 bound 0, 1 5 528 vfd 18/0,18/0 bound 2, 3 6 529 vfd 24/0,12o/3034 channel link word 7 530 vfd 18o/&1+2,6/0,12/2 system fault DCW or iox lpw 8 531 9 532 vfd 18/0,6o/04,12/0 connect LPW or iox status 10 533 bss ,3 11 534 12 535 bss ,20 13 536 &end 537 538 " status mbx's for IOM 0 539 540 status_mailboxes 1400 001050 aa 000000 000000 oct 0,0 for status storage or base addr 0, 1 001051 aa 000000 000000 001052 aa 000000 000000 oct 0,0 for system fault storage or base addr 2, 3 001053 aa 000000 000000 001054 aa 777777 000000 vfd 18o/777777,18/0 bound 0, 1 001055 aa 000000 000000 vfd 18/0,18/0 bound 2, 3 001056 aa 000000 003034 vfd 24/0,12o/3034 channel link word 001057 aa 001402 000002 vfd 18o/1400+2,6/0,12/2 system fault DCW or iox lpw 001060 aa 000000 040000 vfd 18/0,6o/04,12/0 connect LPW or iox status 001061 bss ,3 001064 bss ,20 541 542 " channel mbx's for IOM 0 543 001110 544 maclist off,save 000070 545 dup 56 payload channel mailboxes 001110 aa 000003 020003 546 vfd 18/3,o6/02,12/3 LPW 001111 547 bss ,1 LPWX 001112 aa 001400 000000 548 vfd 18o/1400,6/,12/0 SCW 001113 549 bss ,1 DCW 550 dupend 001450 551 maclist restore 552 553 " status mbx's for IOM 1 554 555 status_mailboxes 2000 001450 aa 000000 000000 oct 0,0 for status storage or base addr 0, 1 001451 aa 000000 000000 001452 aa 000000 000000 oct 0,0 for system fault storage or base addr 2, 3 001453 aa 000000 000000 001454 aa 777777 000000 vfd 18o/777777,18/0 bound 0, 1 001455 aa 000000 000000 vfd 18/0,18/0 bound 2, 3 001456 aa 000000 003034 vfd 24/0,12o/3034 channel link word 001457 aa 002002 000002 vfd 18o/2000+2,6/0,12/2 system fault DCW or iox lpw 001460 aa 000000 040000 vfd 18/0,6o/04,12/0 connect LPW or iox status 001461 bss ,3 001464 bss ,20 556 557 " the channel mbx's for channels 8 and 9 get overwritten by the tape trailer 558 " 559 " 560 " BEGIN MESSAGE DOCUMENTATION 561 " 562 " Message: 563 " HALT with only the first MST tape record read. 564 " 565 " S: $crash 566 " 567 " T: $init 568 " 569 " M: If the high-order bit of the AQ register is on, the pattern in the AQ 570 " register is the (bad) status returned by the IOM while reading a tape 571 " record. If the high order bit is not on, the A register contains the 572 " flags word from a MST header record indicating that this record is bad. 573 " 574 " A: Try booting on a different drive or with a different tape. 575 " 576 " END MESSAGE DOCUMENTATION 577 578 end NO LITERALS NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 001510 5a 000003 000000 001511 5a 000022 600000 001512 aa 000000 000000 001513 55 000013 000002 001514 5a 000002 400003 001515 55 000006 000013 001516 aa 023 142 157 157 001517 aa 164 154 157 141 001520 aa 144 137 164 141 001521 aa 160 145 137 154 001522 aa 141 142 145 154 001523 55 000002 000003 001524 6a 000000 400002 001525 55 000016 000003 001526 aa 014 163 171 155 symbol_table 001527 aa 142 157 154 137 001530 aa 164 141 142 154 001531 aa 145 000 000 000 DEFINITIONS HASH TABLE 001532 aa 000000 000015 001533 aa 000000 000000 001534 aa 000000 000000 001535 aa 000000 000000 001536 aa 000000 000000 001537 aa 000000 000000 001540 aa 000000 000000 001541 5a 000013 000000 001542 aa 000000 000000 001543 aa 000000 000000 001544 aa 000000 000000 001545 aa 000000 000000 001546 aa 000000 000000 001547 aa 000000 000000 NO EXTERNAL NAMES NO TRAP POINTER WORDS TYPE PAIR BLOCKS 001550 aa 000001 000000 001551 aa 000000 000000 INTERNAL EXPRESSION WORDS LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 001510 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 000010 000004 aa 000000 117244 000005 aa 361023 525721 000006 aa 000000 117547 000007 aa 257765 356471 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000002 000002 000016 aa 000064 000000 000017 aa 000000 000333 000020 aa 000000 000226 000021 aa 000312 000307 000022 aa 000320 000226 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 070056 061064 000030 aa 040115 141162 000031 aa 143150 040061 000032 aa 071070 071040 000033 aa 040040 040040 000034 aa 110151 162156 000035 aa 145151 163145 000036 aa 156056 123171 000037 aa 163115 141151 000040 aa 156164 056141 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 055164 141162 000045 aa 147145 164040 000046 aa 154066 070040 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 040154 151163 000057 aa 164040 163171 000060 aa 155142 157154 000061 aa 163040 040040 000062 aa 040040 040040 000063 aa 040040 040040 000064 aa 000000 000001 000065 aa 000000 000007 000066 aa 000122 000070 000067 aa 175453 020735 000070 aa 000000 117547 000071 aa 207400 600000 000072 aa 000140 000043 000073 aa 127236 043477 000074 aa 000000 112724 000075 aa 701742 600000 000076 aa 000151 000046 000077 aa 112375 747473 000100 aa 000000 111240 000101 aa 207531 200000 000102 aa 000163 000045 000103 aa 112375 747472 000104 aa 000000 111240 000105 aa 207531 200000 000106 aa 000175 000032 000107 aa 127236 043541 000110 aa 000000 112724 000111 aa 701746 000000 000112 aa 000204 000046 000113 aa 112741 326633 000114 aa 000000 111274 000115 aa 624415 400000 000116 aa 000216 000036 000117 aa 127236 043574 000120 aa 000000 112724 000121 aa 701751 400000 000122 aa 076163 160145 >special_ldd>install>MR12.3-1114>bootload_tape_label.alm 000123 aa 143151 141154 000124 aa 137154 144144 000125 aa 076151 156163 000126 aa 164141 154154 000127 aa 076115 122061 000130 aa 062056 063055 000131 aa 061061 061064 000132 aa 076142 157157 000133 aa 164154 157141 000134 aa 144137 164141 000135 aa 160145 137154 000136 aa 141142 145154 000137 aa 056141 154155 000140 aa 076154 144144 >ldd>include>bootload_equs.incl.alm 000141 aa 076151 156143 000142 aa 154165 144145 000143 aa 076142 157157 000144 aa 164154 157141 000145 aa 144137 145161 000146 aa 165163 056151 000147 aa 156143 154056 000150 aa 141154 155040 000151 aa 076154 144144 >ldd>include>make_data_macros.incl.alm 000152 aa 076151 156143 000153 aa 154165 144145 000154 aa 076155 141153 000155 aa 145137 144141 000156 aa 164141 137155 000157 aa 141143 162157 000160 aa 163056 151156 000161 aa 143154 056141 000162 aa 154155 040040 000163 aa 076154 144144 >ldd>include>iom_word_macros.incl.alm 000164 aa 076151 156143 000165 aa 154165 144145 000166 aa 076151 157155 000167 aa 137167 157162 000170 aa 144137 155141 000171 aa 143162 157163 000172 aa 056151 156143 000173 aa 154056 141154 000174 aa 155040 040040 000175 aa 076154 144144 >ldd>include>mstr.incl.alm 000176 aa 076151 156143 000177 aa 154165 144145 000200 aa 076155 163164 000201 aa 162056 151156 000202 aa 143154 056141 000203 aa 154155 040040 000204 aa 076154 144144 >ldd>include>tape_io_commands.incl.alm 000205 aa 076151 156143 000206 aa 154165 144145 000207 aa 076164 141160 000210 aa 145137 151157 000211 aa 137143 157155 000212 aa 155141 156144 000213 aa 163056 151156 000214 aa 143154 056141 000215 aa 154155 040040 000216 aa 076154 144144 >ldd>include>toe_hold.incl.alm 000217 aa 076151 156143 000220 aa 154165 144145 000221 aa 076164 157145 000222 aa 137150 157154 000223 aa 144056 151156 000224 aa 143154 056141 000225 aa 154155 040040 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number 10000 .._00000 bootload_equs: 75. 2000 .._00001 bootload_equs: 76. 24000 .._00002 bootload_equs: 78. 2000 .._00003 bootload_equs: 79. 24000 .._00004 bootload_equs: 81. 4000 .._00005 bootload_equs: 82. 24000 .._00006 bootload_equs: 87. 22000 .._00007 bootload_equs: 88. 46000 .._00010 bootload_equs: 90. 4000 .._00011 bootload_equs: 91. 52000 .._00012 bootload_equs: 93. 2000 .._00013 bootload_equs: 94. 54000 .._00014 bootload_equs: 96. 2000 .._00015 bootload_equs: 97. 56000 .._00016 bootload_equs: 99. 2000 .._00017 bootload_equs: 100. 60000 .._00020 bootload_equs: 102. 6000 .._00021 bootload_equs: 103. 30 .._00022 bootload_tape_label: 170. 10 .._00023 bootload_tape_label: 176. 1200 .._00024 bootload_tape_label: 515. 1400 .._00025 bootload_tape_label: 516. 1 abx toe_hold: 141. 0 apx toe_hold: 140. 2 At_bce__boot toe_hold: 79. 6 At_bce__crash toe_hold: 83. 1 At_bce__early toe_hold: 78. 7 At_bce__shutdown toe_hold: 84. 24000 bbl0_absloc bootload_tape_label: 321, 486, bootload_equs: 87. 22000 bbl0_lth bootload_equs: 88. 3 bbx toe_hold: 143. 56000 bkpt_absloc bootload_equs: 99. 2000 bkpt_lth bootload_equs: 100. 0 bootload_info bootload_tape_label: 169, 189, 214, 216, 223, 225, 228, 230, 235, 248, 250, 258, 276, 287, 295, 348, 361, 366, 375, 414, 420. 266 boot_die bootload_tape_label: 233, 285, 300, 326, 449, 476. 10000 bostoe_absloc bootload_equs: 75. 2000 bostoe_lth bootload_equs: 76. 2 bpx toe_hold: 142. 207 chk_idcw bootload_tape_label: 344, 392. 212 chk_io_time bootload_tape_label: 343, 353, 369, 371, 381, 383, 398. 134 chk_mpc_state bootload_tape_label: 294, 333. 274 cmr bootload_tape_label: 208, 489. 400000 cold_tape_mpc bootload_tape_label: 173, 376. 271 data_dcw bootload_tape_label: 484. 270 data_idcw bootload_tape_label: 237, 249, 251, 289, 410, 481. 272 data_it bootload_tape_label: 315, 486. 302 device_hold bootload_tape_label: 241, 245, 502. 277 device_mask bootload_tape_label: 247, 495. 0 ds bootload_equs: 12. 24000 fgbx_absloc bootload_equs: 78. 2000 fgbx_lth bootload_equs: 79. 7 fv bootload_equs: 19. 60 get_device bootload_tape_label: 239, 254. 105 got_device bootload_tape_label: 244, 246, 252, 257, 259, 293. 174 got_status bootload_tape_label: 351, 379. 355245 header_c1 mstr: 119. 146073 header_c2 mstr: 120. 210 ignore_idcw bootload_tape_label: 362, 394. 200000 imu bootload_tape_label: 174, 222. 1 imu_bit_shift bootload_tape_label: 175, 220. 0 Initial_undefined toe_hold: 77. 10 iom_fault_vector bootload_tape_label: 176, 219. 1200 iom_mbx_absloc bootload_tape_label: 515, 520. 7 iom_num_mask bootload_tape_label: 177, 217. 300 iox_lpw bootload_tape_label: 278, 498. 1400 iox_mailbox bootload_tape_label: 279, 280, 282, 424, 516. 65 iox_setup bootload_tape_label: 193, 261. 2 io_path.channel_number toe_hold: 41. 77777 io_path.iom_number_mask toe_hold: 40. 22 io_path.iom_number_shift toe_hold: 39. 2 io_path.iom_number_word toe_hold: 38. 0 io_path.pcw toe_hold: 33. 7 io_path.port_number_mask toe_hold: 37. 41 io_path.port_number_shift toe_hold: 36. 2 io_path.port_number_word toe_hold: 35. 4 io_path_size toe_hold: 31. 304 io_start_time bootload_tape_label: 408, 470, 505. 54000 iupt_absloc bootload_equs: 96. 2000 iupt_lth bootload_equs: 97. 3 LABEL_VERSION mstr: 124. 5 lbx toe_hold: 145. 30 load_offset bootload_tape_label: 170, 171. 4 lpx toe_hold: 144. 60001 make_ddcw.address bootload_tape_label: 484. 0 make_ddcw.char_offset bootload_tape_label: 484. 0 make_ddcw.op_type bootload_tape_label: 484. 2020 make_ddcw.tally bootload_tape_label: 484. 0 make_ddcw.tally_type bootload_tape_label: 484. 0 make_pcw.chan_cmd bootload_tape_label: 392, 394, 481. 0 make_pcw.chan_ctrl bootload_tape_label: 392, 394, 481. 0 make_pcw.chan_data bootload_tape_label: 392, 394, 481. 5 make_pcw.command bootload_tape_label: 392, 394, 481. 0 make_pcw.device bootload_tape_label: 392, 394, 481. 0 make_pcw.extension bootload_tape_label: 392, 394, 481. 0 make_pcw.mask bootload_tape_label: 392, 394, 481. 2 mb bootload_equs: 14. 24 mc.a toe_hold: 99. 3 mc.cpu_type_mask toe_hold: 132. 41 mc.cpu_type_shift toe_hold: 131. 46 mc.cpu_type_word toe_hold: 130. 50 mc.eis_info toe_hold: 138. 0 mc.errcode_shift toe_hold: 117. 43 mc.errcode_word toe_hold: 116. 77777 mc.ext_fault_reg_mask toe_hold: 135. 22 mc.ext_fault_reg_shift toe_hold: 134. 46 mc.ext_fault_reg_word toe_hold: 133. 377 mc.e_mask toe_hold: 104. 34 mc.e_shift toe_hold: 103. 26 mc.e_word toe_hold: 102. 45 mc.fault_reg toe_hold: 128. 46 mc.fault_time toe_hold: 137. 377777 mc.fcode_mask toe_hold: 126. 0 mc.fcode_shift toe_hold: 125. 44 mc.fcode_word toe_hold: 124. 0 mc.fim_temp_shift toe_hold: 120. 44 mc.fim_temp_word toe_hold: 119. 42 mc.ips_temp toe_hold: 114. 40 mc.mask toe_hold: 113. 0 mc.prs toe_hold: 93. 25 mc.q toe_hold: 100. 7 mc.ralr_mask toe_hold: 110. 0 mc.ralr_shift toe_hold: 109. 27 mc.ralr_word toe_hold: 108. 1532 mc.regs_shift toe_hold: 96. 20 mc.regs_word toe_hold: 95. 400000 mc.resignal toe_hold: 123. 44 mc.resignal_word toe_hold: 122. 30 mc.scu toe_hold: 112. 11 mc.t_shift toe_hold: 107. 27 mc.t_word toe_hold: 106. 44 mc.unique_index toe_hold: 121. 20 mc.x toe_hold: 97. 60 mc_size toe_hold: 91. 260 mc_state.apu_history_registers toe_hold: 71. 110 mc_state.bar toe_hold: 66. 103 mc_state.cache_mode_reg toe_hold: 63. 106 mc_state.cfg toe_hold: 65. 160 mc_state.cu_history_registers toe_hold: 69. 104 mc_state.dbr toe_hold: 64. 220 mc_state.du_history_registers toe_hold: 70. 100 mc_state.interrupt toe_hold: 61. 60 mc_state.masks toe_hold: 60. 0 mc_state.mc_ toe_hold: 58. 102 mc_state.mode_reg toe_hold: 62. 111 mc_state.old_memory_state toe_hold: 67. 120 mc_state.ou_history_registers toe_hold: 68. 320 mc_state.ptwam_ptrs toe_hold: 72. 420 mc_state.ptwam_regs toe_hold: 73. 520 mc_state.sdwam_ptrs toe_hold: 74. 620 mc_state.sdwam_regs toe_hold: 75. 1020 mc_state_size toe_hold: 56. 273 mr bootload_tape_label: 206, 488. 0 mstr.data_mask mstr: 15. 44 mstr.data_shift mstr: 14. 10 mstr.data_word mstr: 13. 0 mstr.head mstr: 10. 0 mstr.trail mstr: 17. 400000 mstr_header.admin mstr: 63. 5 mstr_header.admin_word mstr: 62. 0 mstr_header.c1 mstr: 51. 7 mstr_header.c2 mstr: 86. 6 mstr_header.checksum mstr: 85. 200000 mstr_header.continue mstr: 77. 5 mstr_header.continue_word mstr: 76. 4 mstr_header.data_bits_used bootload_tape_label: 453, mstr: 57. 4 mstr_header.data_bit_len mstr: 58. 400000 mstr_header.drain mstr: 75. 5 mstr_header.drain_word mstr: 74. 100000 mstr_header.eor mstr: 67. 5 mstr_header.eor_word mstr: 66. 1 mstr_header.eot mstr: 73. 5 mstr_header.eot_word mstr: 72. 11 mstr_header.flags_shift mstr: 61. 5 mstr_header.flags_word bootload_tape_label: 447, mstr: 60. 7000 mstr_header.head_version_mask mstr: 80. 11 mstr_header.head_version_shift mstr: 79. 5 mstr_header.head_version_word mstr: 78. 200000 mstr_header.label mstr: 65. 5 mstr_header.label_word mstr: 64. 3 mstr_header.phy_file mstr: 55. 3 mstr_header.rec_within_file mstr: 54. 4 mstr_header.repeat bootload_tape_label: 448, mstr: 71. 777 mstr_header.repeat_count_mask mstr: 83. 0 mstr_header.repeat_count_shift mstr: 82. 5 mstr_header.repeat_count_word mstr: 81. 5 mstr_header.repeat_word mstr: 70. 10 mstr_header.set mstr: 69. 5 mstr_header.set_word mstr: 68. 1 mstr_header.uid mstr: 52. 10 mstr_header_size bootload_tape_label: 184, 484, mstr: 49. 0 mstr_trailer.c1 mstr: 93. 7 mstr_trailer.c2 mstr: 108. 7777 mstr_trailer.reel_num_mask mstr: 101. 30 mstr_trailer.reel_num_shift mstr: 100. 5 mstr_trailer.reel_num_word mstr: 99. 3 mstr_trailer.tot_data_bits_word mstr: 96. 0 mstr_trailer.tot_file_shift mstr: 103. 5 mstr_trailer.tot_file_word mstr: 102. 0 mstr_trailer.tot_rec_shift mstr: 106. 6 mstr_trailer.tot_rec_word mstr: 105. 1 mstr_trailer.uid mstr: 94. 10 mstr_trailer_size bootload_tape_label: 484, mstr: 91. 300 mst_label.boot_pgm bootload_tape_label: 171, mstr: 42. 244 mst_label.boot_pgm_len mstr: 40. 160 mst_label.boot_pgm_path mstr: 36. 245 mst_label.copyright mstr: 41. 51 mst_label.dis_instr mstr: 34. 150 mst_label.fault_data mstr: 35. 50 mst_label.fv_overlay mstr: 31. 10 mst_label.head mstr: 27. 242 mst_label.label_version mstr: 38. 0 mst_label.lda_instr mstr: 25. 243 mst_label.output_mode mstr: 39. 50 mst_label.scu_instr mstr: 33. 0 mst_label.trail mstr: 43. 1 mst_label.tra_instr mstr: 26. 232 mst_label.userid mstr: 37. 20 mst_label.vid mstr: 29. 0 mst_label.xfer_vector mstr: 23. 3 Multics toe_hold: 80. 330 my_offset bootload_tape_label: 171, 206, 208, 315, 520. 0 my_zero bootload_tape_label: 188, 206, 208, 315. 123 next_record bootload_tape_label: 312, 317, 327. 4 nt bootload_equs: 16. 275 or bootload_tape_label: 272, 490. 214 pause_time bootload_tape_label: 354, 372, 384, 400. 211 pof_mask bootload_tape_label: 387, 396. 5 prb bootload_equs: 17. 60011 prb.data bootload_tape_label: 184, 185, 302, 457. 60001 prb.mstrh bootload_tape_label: 183, 184, 447, 453, 484. 62011 prb.mstrt bootload_tape_label: 185. 60000 prb.prb_it bootload_tape_label: 182, 183, 305, 308, 310, 313, 458. 60000 prb_absloc bootload_tape_label: 182, bootload_equs: 102. 6000 prb_lth bootload_equs: 103. 216 rd_tape bootload_tape_label: 296, 299, 325, 407. 131 read_more_data bootload_tape_label: 314, 324. 261 retry_pof bootload_tape_label: 465, 468. 7 sbx toe_hold: 147. 20 scu.abs toe_hold: 302. 4 scu.abs_word toe_hold: 301. 10 scu.am_er toe_hold: 213. 1 scu.am_er_word toe_hold: 212. 37777 scu.apu_mask toe_hold: 163. 3 scu.apu_shift toe_hold: 162. 0 scu.apu_word toe_hold: 161. 200 scu.bm toe_hold: 296. 4 scu.bm_word toe_hold: 295. 200 scu.boc toe_hold: 205. 1 scu.boc_word toe_hold: 204. 5 scu.ca toe_hold: 306. 100000 scu.carry toe_hold: 280. 4 scu.carry_word toe_hold: 279. 7 scu.con_chan_mask toe_hold: 235. 6 scu.con_chan_shift toe_hold: 234. 1 scu.con_chan_word toe_hold: 233. 7 scu.cpu_no_mask toe_hold: 251. 6 scu.cpu_no_shift toe_hold: 250. 2 scu.cpu_no_word toe_hold: 249. 77 scu.cpu_tag_mask toe_hold: 336. 0 scu.cpu_tag_shift toe_hold: 335. 5 scu.cpu_tag_word toe_hold: 334. 40 scu.crt toe_hold: 209. 1 scu.crt_word toe_hold: 208. 7777 scu.cu_mask toe_hold: 309. 6 scu.cu_shift toe_hold: 308. 5 scu.cu_word toe_hold: 307. 77 scu.delta_mask toe_hold: 254. 0 scu.delta_shift toe_hold: 253. 2 scu.delta_word toe_hold: 252. 2000 scu.dsptw toe_hold: 170. 20000 scu.eovf toe_hold: 284. 4 scu.eovf_word toe_hold: 283. 10000 scu.eufl toe_hold: 286. 4 scu.eufl_word toe_hold: 285. 6 scu.even_inst toe_hold: 338. 100000 scu.e_off toe_hold: 189. 1 scu.e_off_word toe_hold: 188. 10 scu.fabs toe_hold: 177. 20 scu.fanp toe_hold: 176. 40 scu.fap toe_hold: 175. 7 scu.fault_cntr_mask toe_hold: 180. 0 scu.fault_cntr_shift toe_hold: 179. 0 scu.fault_cntr_word toe_hold: 178. 20 scu.fd_shift toe_hold: 183. 1 scu.fd_word toe_hold: 182. 1 scu.fi_flag toe_hold: 240. 1 scu.fi_flag_word toe_hold: 239. 37 scu.fi_num_mask toe_hold: 238. 1 scu.fi_num_shift toe_hold: 237. 1 scu.fi_num_word toe_hold: 236. 10 scu.hex toe_hold: 304. 4 scu.hex_word toe_hold: 303. 7 scu.iac_mask toe_hold: 232. 11 scu.iac_shift toe_hold: 231. 1 scu.iac_word toe_hold: 230. 17 scu.ial_mask toe_hold: 229. 14 scu.ial_shift toe_hold: 228. 1 scu.ial_word toe_hold: 227. 100 scu.if toe_hold: 333. 5 scu.if_word toe_hold: 332. 4 scu.ilc toe_hold: 273. 100 scu.inret toe_hold: 207. 1 scu.inret_word toe_hold: 206. 4 scu.ir toe_hold: 274. 400000 scu.iro toe_hold: 185. 1 scu.iro_word toe_hold: 184. 200 scu.its toe_hold: 331. 5 scu.its_word toe_hold: 330. 40 scu.mif toe_hold: 300. 4 scu.mif_word toe_hold: 299. 200000 scu.neg toe_hold: 278. 4 scu.neg_word toe_hold: 277. 2000 scu.no_ga toe_hold: 199. 1 scu.no_ga_word toe_hold: 198. 400 scu.ocall toe_hold: 203. 1 scu.ocall_word toe_hold: 202. 1000 scu.ocb toe_hold: 201. 1 scu.ocb_word toe_hold: 200. 7 scu.odd_inst toe_hold: 339. 200000 scu.oeb toe_hold: 187. 1 scu.oeb_word toe_hold: 186. 4000 scu.oflm toe_hold: 288. 4 scu.oflm_word toe_hold: 287. 400000 scu.onc_1 toe_hold: 221. 1 scu.onc_1_word toe_hold: 220. 200000 scu.onc_2 toe_hold: 223. 1 scu.onc_2_word toe_hold: 222. 4 scu.oosb toe_hold: 215. 1 scu.oosb_word toe_hold: 214. 40000 scu.orb toe_hold: 191. 1 scu.orb_word toe_hold: 190. 40000 scu.ovfl toe_hold: 282. 4 scu.ovfl_word toe_hold: 281. 10000 scu.owb toe_hold: 195. 1 scu.owb_word toe_hold: 194. 400000 scu.p toe_hold: 160. 1000 scu.par toe_hold: 292. 1 scu.parl toe_hold: 219. 1 scu.parl_word toe_hold: 218. 400 scu.parm toe_hold: 294. 4 scu.parm_word toe_hold: 293. 2 scu.paru toe_hold: 217. 1 scu.paru_word toe_hold: 216. 4 scu.par_word toe_hold: 291. 4000 scu.pi_ap toe_hold: 169. 1000 scu.poa toe_hold: 327. 5 scu.poa_word toe_hold: 326. 10000 scu.pon toe_hold: 321. 5 scu.pon_word toe_hold: 320. 1777 scu.port_stat_mask toe_hold: 226. 6 scu.port_stat_shift toe_hold: 225. 1 scu.port_stat_word toe_hold: 224. 20000 scu.pot toe_hold: 319. 5 scu.pot_word toe_hold: 318. 21 scu.ppr_shift toe_hold: 155. 0 scu.ppr_word toe_hold: 154. 7 scu.prr_mask toe_hold: 157. 41 scu.prr_shift toe_hold: 156. 77777 scu.psr_mask toe_hold: 159. 22 scu.psr_shift toe_hold: 158. 200 scu.ptw toe_hold: 173. 100 scu.ptw2 toe_hold: 174. 20000 scu.ptwm toe_hold: 167. 10000 scu.pt_on toe_hold: 168. 20 scu.ralr toe_hold: 211. 1 scu.ralr_word toe_hold: 210. 100000 scu.rd toe_hold: 315. 5 scu.rd_word toe_hold: 314. 400000 scu.rf toe_hold: 311. 400 scu.rfi toe_hold: 329. 5 scu.rfi_word toe_hold: 328. 5 scu.rf_word toe_hold: 310. 40000 scu.rl toe_hold: 317. 5 scu.rl_word toe_hold: 316. 200000 scu.rpt toe_hold: 313. 5 scu.rpt_word toe_hold: 312. 20000 scu.r_off toe_hold: 193. 1 scu.r_off_word toe_hold: 192. 100000 scu.sdwm toe_hold: 165. 1000 scu.sdwnp toe_hold: 171. 400 scu.sdwp toe_hold: 172. 40000 scu.sd_on toe_hold: 166. 2 scu.tpr toe_hold: 242. 77 scu.tpr_tbr_mask toe_hold: 271. 0 scu.tpr_tbr_shift toe_hold: 270. 3 scu.tpr_tbr_word toe_hold: 269. 2000 scu.tro toe_hold: 290. 4 scu.tro_word toe_hold: 289. 7 scu.trr_mask toe_hold: 245. 41 scu.trr_shift toe_hold: 244. 2 scu.trr_word toe_hold: 243. 100 scu.tru toe_hold: 298. 4 scu.tru_word toe_hold: 297. 17 scu.tsna_mask toe_hold: 262. 16 scu.tsna_shift toe_hold: 261. 3 scu.tsna_word toe_hold: 260. 17 scu.tsnb_mask toe_hold: 265. 12 scu.tsnb_shift toe_hold: 264. 3 scu.tsnb_word toe_hold: 263. 17 scu.tsnc_mask toe_hold: 268. 6 scu.tsnc_shift toe_hold: 267. 3 scu.tsnc_word toe_hold: 266. 77777 scu.tsr_mask toe_hold: 248. 22 scu.tsr_shift toe_hold: 247. 7777 scu.tsr_stat_mask toe_hold: 259. 6 scu.tsr_stat_shift toe_hold: 258. 3 scu.tsr_stat_word toe_hold: 257. 2 scu.tsr_word toe_hold: 246. 3 scu.word3 toe_hold: 256. 4000 scu.w_off toe_hold: 197. 1 scu.w_off_word toe_hold: 196. 4000 scu.xde toe_hold: 323. 5 scu.xde_word toe_hold: 322. 2000 scu.xdo toe_hold: 325. 5 scu.xdo_word toe_hold: 324. 200000 scu.xsf toe_hold: 164. 400000 scu.zero toe_hold: 276. 4 scu.zero_word toe_hold: 275. 0 scux.fd_shift toe_hold: 348. 1 scux.fd_word toe_hold: 347. 100000 scux.ia_am toe_hold: 354. 1 scux.ia_am_word toe_hold: 353. 6 scux.instr toe_hold: 368. 200000 scux.ioc toe_hold: 352. 1 scux.ioc_word toe_hold: 351. 20000 scux.ipr toe_hold: 358. 1 scux.ipr_word toe_hold: 357. 400000 scux.isn toe_hold: 350. 1 scux.isn_word toe_hold: 349. 40000 scux.isp toe_hold: 356. 1 scux.isp_word toe_hold: 355. 10000 scux.nea toe_hold: 360. 1 scux.nea_word toe_hold: 359. 4000 scux.oobb toe_hold: 362. 1 scux.oobb_word toe_hold: 361. 7777 scux.tsr_stat_mask toe_hold: 366. 6 scux.tsr_stat_shift toe_hold: 365. 3 scux.tsr_stat_word toe_hold: 364. 10 scux_size toe_hold: 344. 10 scu_size toe_hold: 152. 6 seg bootload_equs: 18. 1 seg2 bootload_equs: 13. 3 slt bootload_equs: 15. 6 spx toe_hold: 146. 276 status_mask bootload_tape_label: 232, 284, 440, 492. 301 system_type bootload_tape_label: 191, 334, 416, 500. 47 TAPE.backspace_file tape_io_commands: 26. 46 TAPE.backspace_record tape_io_commands: 25. 10 TAPE.control_store_overlay tape_io_commands: 27. 31 TAPE.diagnostic_mode_control tape_io_commands: 49. 54 TAPE.erase tape_io_commands: 29. 45 TAPE.forward_space_file tape_io_commands: 23. 44 TAPE.forward_space_record tape_io_commands: 22. 5 TAPE.load_from_device tape_io_commands: 28. 11 TAPE.main_memory_overlay tape_io_commands: 50. 25 TAPE.read_ascii_ebcdic_record tape_io_commands: 47. 27 TAPE.read_ascii_record tape_io_commands: 45. 4 TAPE.read_bcd_record tape_io_commands: 39. 5 TAPE.read_binary_record bootload_tape_label: 481, tape_io_commands: 35. 26 TAPE.read_control_registers tape_io_commands: 7. 24 TAPE.read_ebcdic_record tape_io_commands: 43. 3 TAPE.read_tape_nine tape_io_commands: 33. 67 TAPE.release_device tape_io_commands: 16. 50 TAPE.request_device_status tape_io_commands: 3. 0 TAPE.request_status bootload_tape_label: 394, tape_io_commands: 1. 6 TAPE.reread_bcd_record tape_io_commands: 40. 7 TAPE.reread_binary_record tape_io_commands: 37. 37 TAPE.reread_ebcdic_record tape_io_commands: 44. 66 TAPE.reserve_device tape_io_commands: 15. 51 TAPE.reset_device_status bootload_tape_label: 392, tape_io_commands: 4. 40 TAPE.reset_status tape_io_commands: 2. 70 TAPE.rewind tape_io_commands: 11. 72 TAPE.rewind_unload tape_io_commands: 14. 65 TAPE.set_1600_bpi tape_io_commands: 21. 64 TAPE.set_200_bpi tape_io_commands: 17. 61 TAPE.set_556_bpi tape_io_commands: 19. 60 TAPE.set_800_bpi tape_io_commands: 20. 63 TAPE.set_file_format tape_io_commands: 10. 62 TAPE.set_file_protect tape_io_commands: 9. 57 TAPE.survey_devices tape_io_commands: 5. 75 TAPE.tape_load tape_io_commands: 13. 35 TAPE.write_ascii_ebcdic_record tape_io_commands: 46. 14 TAPE.write_bcd_record tape_io_commands: 38. 15 TAPE.write_binary_record tape_io_commands: 34. 16 TAPE.write_control_registers tape_io_commands: 8. 34 TAPE.write_ebcdic_record tape_io_commands: 41. 55 TAPE.write_eof_record tape_io_commands: 31. 13 TAPE.write_tape_nine tape_io_commands: 32. 255 tape_error bootload_tape_label: 441, 462. 306 ten_sec_limit bootload_tape_label: 471, 507. 46000 toedata_absloc bootload_equs: 90. 4000 toedata_lth bootload_equs: 91. 24000 toe_absloc bootload_equs: 81. 242 toe_hold.bce_dbr toe_hold: 24. 0 toe_hold.entry_sequences toe_hold: 18. 40 toe_hold.flagbox toe_hold: 19. 241 toe_hold.memory_state toe_hold: 23. 2760 toe_hold.multics_state toe_hold: 25. 240 toe_hold.n_paths_used toe_hold: 22. 220 toe_hold.paths toe_hold: 20. 5 TOE_HOLD_BOOT_ENTRY bootload_tape_label: 321, toe_hold: 48. 14 TOE_HOLD_BOS_ENTRY toe_hold: 49. 16 TOE_HOLD_BOS_MULTICS_ENTRY toe_hold: 51. 15 TOE_HOLD_BOS_NO_SAVE_ENTRY toe_hold: 50. 0 TOE_HOLD_CRASH_ENTRY toe_hold: 43. 2 TOE_HOLD_DUMP_ENTRY toe_hold: 45. 1 TOE_HOLD_ESD_ENTRY toe_hold: 44. 3 TOE_HOLD_MULTICS_ENTRY toe_hold: 46. 4 TOE_HOLD_RESTART_ENTRY toe_hold: 47. 4000 toe_hold_size toe_hold: 15. 4000 toe_lth bootload_equs: 82. 422532 trailer_c1 mstr: 121. 631704 trailer_c2 mstr: 122. 220 try_rd_again bootload_tape_label: 409, 472. 10 Undefined_continue toe_hold: 85. 5 Undefined_reading_bce toe_hold: 82. 11 Undefined_saving_mem toe_hold: 86. 4 Undefined_saving_state toe_hold: 81. 154 unwedge bootload_tape_label: 359, 388. 52000 upt_absloc bootload_equs: 93. 2000 upt_lth bootload_equs: 94. 10 volume_identifier.tape_reel_id mstr: 116. 20 volume_identifier.volume_set_id mstr: 117. 30 volume_identifier_size mstr: 113. 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