COMPILATION LISTING OF SEGMENT boot_tape_io Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1000.4 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* format: style4,delnl,insnl,tree,ifthenstmt,indnoniterend */ 14 boot_tape_io: 15 procedure; 16 17 /* TAPE_IO - Magnetic Tape I/O Package for Multics Initialization 18* 9/9/68 - Noel I. Morris 19* converted for IOM operation - 9/15/71 by N. I. Morris 20* converted for MTS-500 operation - 8/27/73 by N. I. Morris 21* converted to IOBM to avoid buffer split problem - 12/29/75 by B. Greenberg 22* modified 1/25/76 by Noel I. Morris 23* modified April 1981 by Chris Jones for io_manager conversion 24* Modified March 1982 by C. Hornig for MR10 io_manager. 25* Modified May 1982 by BIM for sys_boot_info as source of tape data. 26* Modified April 1983 by K. Loepere for early entrypoint 27* Modified October 1983 by Keith Loepere for loading mst in collection 1. 28**/ 29 30 dcl chanid char (8) aligned; /* name of tape channel */ 31 dcl rcode fixed bin (35); /* error code */ 32 dcl op bit (6); /* tape operation code */ 33 dcl buffabs1 fixed bin (26); /* absolute address */ 34 dcl device_bits bit (6) aligned; /* device number from PCW */ 35 dcl device fixed bin (6); 36 37 dcl sys_boot_info$tape_device_number fixed bin (6) ext static; 38 dcl sys_boot_info$tape_channel_number fixed bin (7) ext static; 39 dcl sys_boot_info$tape_iom_number fixed bin (3) ext static; 40 41 dcl TAPE_IO_EVENT fixed bin (35) static options (constant) init (15594741861); 42 /* "tape" */ 43 44 dcl absadr entry (ptr, fixed bin (35)) returns (fixed bin (26)); 45 dcl pxss$addevent entry (fixed bin (35)); 46 dcl pxss$delevent entry (fixed bin (35)); 47 dcl pxss$notify entry (fixed bin (35)); 48 dcl pxss$wait entry; 49 dcl syserr entry options (variable); 50 51 dcl 1 physical_record_buffer$ external, 52 2 prb aligned, /* give it an effective alias */ 53 3 bootload_loader_leftovers aligned, 54 4 buffer_index bit (18), /* index to current buffer */ 55 4 cur_buffer (1040) fixed bin, /* record currently being processed */ 56 3 first_used_here aligned, 57 4 pad (33) fixed bin, 58 4 idcw like idcw, /* IDCW for readingtape */ 59 4 dcw1 like dcw, /* IOTD DCW for tape read */ 60 4 statp ptr, /* pointer to status word */ 61 4 ima like io_manager_arg, /* args for connect */ 62 4 flags, 63 5 reading_ahead bit (1) unaligned, /* reading-ahead is in progress */ 64 5 pad bit (35) unaligned, 65 4 ra_idcw like idcw, /* IDCW for readingtape */ 66 4 ra_dcw1 like dcw, /* IOTD DCW for tape read */ 67 4 ra_buffer (1040) fixed bin; /* for read-ahead */ 68 69 dcl (addr, binary, bit, mod, null, rel, string, substr, unspec) builtin; 70 71 init_tape: 72 entry; 73 74 /* INIT_TAPE/FINAL_TAPE - Initialize and Clean Up After Initialization Tape I/O. */ 75 76 unspec (prb.first_used_here) = ""b; /* clear memory left from BOS */ 77 78 device = sys_boot_info$tape_device_number; 79 device_bits = bit (device, 6); 80 81 call io_chnl_util$iom_to_name (sys_boot_info$tape_iom_number, sys_boot_info$tape_channel_number, chanid, rcode); 82 if rcode ^= 0 then call syserr (1, "boot_tape_io: code ^d from io_chnl_util$iom_to_name.", rcode); 83 call io_manager$assign (prb.ima.chx, chanid, pxss$notify, TAPE_IO_EVENT, prb.statp, rcode); 84 if rcode ^= 0 /* Tell the multiplexor we wish to use tape. */ 85 then call syserr (1, "boot_tape_io: Code ^d from io_manager$assign.", rcode); 86 87 buffabs1 = absadr (addr (prb), rcode); 88 if rcode ^= 0 then call syserr (1, "boot_tape_io: Code ^d from absadr.", rcode); 89 90 prb.idcw.count = bit (binary (1, 6)); /* Set count field in IDCW. */ 91 prb.idcw.device = device_bits; /* Copy the device code into instruction DCW. */ 92 prb.idcw.code = "111"b; /* Make sure IDCW ID bits are on. */ 93 prb.idcw.ext = substr (bit (buffabs1), 3, 6); 94 prb.idcw.ext_ctl = "1"b; 95 string (prb.ra_idcw) = string (prb.idcw); 96 prb.ra_idcw.command = "000101"b; /* READ */ 97 98 prb.dcw1.address = bit (binary (mod (buffabs1 + binary (rel (addr (prb.cur_buffer)), 18), 1f18b), 18)); 99 prb.ra_dcw1.address = bit (binary (mod (buffabs1 + binary (rel (addr (prb.ra_buffer)), 18), 1f18b), 18)); 100 /* Set address in DCW's */ 101 prb.dcw1.tally, prb.ra_dcw1.tally = bit (binary (1040, 12)); 102 103 prb.ima.bound = 0; 104 prb.ima.pcw = ""b; 105 prb.ima.ptp = null (); /* use absolute mode */ 106 return; 107 108 final_tape: 109 entry; 110 111 call io_manager$mask (prb.ima.chx); 112 call io_manager$unassign (prb.ima.chx, (0)); 113 return; 114 115 /* GET_UNIT/SET_UNIT - Get Current Unit Number and Set New Unit Number. */ 116 117 get_unit: 118 entry (unit_no); 119 120 dcl unit_no fixed bin (6); /* tape unit device number */ 121 122 123 unit_no = binary (prb.idcw.device, 6); /* Return the device code from IDCW. */ 124 125 return; 126 127 set_unit: 128 entry (unit_no); 129 130 131 prb.idcw.device = bit (unit_no); /* Set the new tape unit number. */ 132 133 return; /* All finished. Return to caller. */ 134 135 /* Entries for Performing Tape I/O Operations. */ 136 137 dcl ret_status fixed bin (5); /* major status from I/O operation */ 138 139 read: 140 entry (ret_status); 141 142 op = "000101"b; 143 go to connect; /* Operation is Read Tape Binary. */ 144 145 write: 146 entry (ret_status); 147 148 op = "001101"b; 149 go to connect; /* Operation is Write Tape Binary. */ 150 151 152 153 backspace: 154 entry (ret_status); 155 156 op = "100110"b; 157 go to connect; /* Operation is Backspace Record. */ 158 159 160 161 rewind: 162 entry (ret_status); 163 164 op = "111000"b; 165 go to connect; /* Operation is Rewind. */ 166 167 168 169 unload: 170 entry (ret_status); 171 172 op = "111010"b; 173 go to connect; /* Operation is Rewind and Unload. */ 174 175 176 177 skip_file: 178 entry (ret_status); 179 180 op = "100101"b; 181 go to connect; /* Operation is Forwardspace File. */ 182 183 184 185 set_density_800: 186 entry (ret_status); 187 188 op = "110000"b; 189 go to connect; /* Operation is Set Density to 800. */ 190 191 192 193 set_density_1600: 194 entry (ret_status); 195 196 op = "110101"b; 197 go to connect; /* Operation is Set Density to 1600. */ 198 199 /* CONNECT - Issue Connect and Handle Status. */ 200 201 connect: 202 if prb.flags.reading_ahead then do; 203 call wait_for_status; 204 prb.flags.reading_ahead = "0"b; 205 206 if op = "000101"b then do; /* did we guess right? */ 207 prb.cur_buffer = prb.ra_buffer; 208 goto read_done; 209 end; 210 211 /* We blew it. With luck it won't matter. */ 212 end; 213 214 prb.idcw.command = op; /* Set tape operation in IDCW. */ 215 if (op = "000101"b) | (op = "001101"b) /* If reading or writing tape ... */ 216 then prb.idcw.chan_cmd = "000000"b; /* Set unit record transfer. */ 217 else prb.idcw.chan_cmd = "000010"b; /* Set non-data transfer. */ 218 219 prb.ima.listp = addr (prb.idcw); 220 call io_manager$connect_abs (prb.ima); /* Fire up the device */ 221 call wait_for_status; 222 read_done: 223 ret_status = binary (prb.statp -> io_status_word.power || prb.statp -> io_status_word.major, 5); 224 /* Return the major status and the power bit. */ 225 226 if (op = "000101"b) & (ret_status = 0) then do; /* if we just completed a read */ 227 prb.ima.listp = addr (prb.ra_idcw); 228 call io_manager$connect_abs (prb.ima); /* then lets keep going */ 229 prb.flags.reading_ahead = "1"b; 230 end; 231 232 return; 233 234 235 wait_for_status: 236 procedure; 237 238 call pxss$addevent (TAPE_IO_EVENT); 239 do while (^prb.statp -> io_status_word.t); 240 call pxss$wait; 241 call pxss$addevent (TAPE_IO_EVENT); 242 end; 243 call pxss$delevent (TAPE_IO_EVENT); 244 return; 245 246 end wait_for_status; 247 1 1 1 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 1 3 1 4 dcl pcwp ptr; /* pointer to PCW */ 1 5 1 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 1 7 (2 command bit (6), /* device command */ 1 8 2 device bit (6), /* device code */ 1 9 2 ext bit (6), /* address extension */ 1 10 2 code bit (3), /* should be "111"b for PCW */ 1 11 2 mask bit (1), /* channel mask bit */ 1 12 2 control bit (2), /* terminate/proceed and marker control bits */ 1 13 2 chan_cmd bit (6), /* type of I/O operation */ 1 14 2 count bit (6), /* record count or control character */ 1 15 2 mbz1 bit (3), 1 16 2 channel bit (6), /* channel number */ 1 17 2 mbz2 bit (27)) unal; 1 18 1 19 dcl idcwp ptr; /* pointer to IDCW */ 1 20 1 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 1 22 (2 command bit (6), /* device command */ 1 23 2 device bit (6), /* device code */ 1 24 2 ext bit (6), /* address extension */ 1 25 2 code bit (3), /* should be "111"b for PCW */ 1 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 1 27 2 control bit (2), /* terminate/proceed and marker control bits */ 1 28 2 chan_cmd bit (6), /* type of I/O operation */ 1 29 2 count bit (6)) unal; /* record count or control character */ 1 30 1 31 /* End include file ...... iom_pcw.incl.pl1 */ 1 32 248 2 1 2 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 2 3 2 4 dcl dcwp ptr, /* pointer to DCW */ 2 5 tdcwp ptr; /* pointer to TDCW */ 2 6 2 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 2 8 (2 address bit (18), /* address for data transfer */ 2 9 2 char_pos bit (3), /* character position */ 2 10 2 m64 bit (1), /* non-zero for mod 64 address */ 2 11 2 type bit (2), /* DCW type */ 2 12 2 tally bit (12)) unal; /* tally for data transfer */ 2 13 2 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 2 15 (2 address bit (18), /* address to transfer to */ 2 16 2 mbz1 bit (4), 2 17 2 type bit (2), /* should be "10"b for TDCW */ 2 18 2 mbz2 bit (9), 2 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 2 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 2 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 2 22 2 23 /* End of include file ...... iom_dcw.incl.pl1 */ 2 24 249 3 1 /* Begin include file io_status_word.incl.pl1 */ 3 2 /* Made from iom_stat.incl.pl1 by C. Hornig */ 3 3 3 4 dcl io_status_word_ptr ptr; 3 5 dcl 1 io_status_word based (io_status_word_ptr) aligned, /* I/O status information */ 3 6 ( 3 7 2 t bit (1), /* set to "1"b by IOM */ 3 8 2 power bit (1), /* non-zero if peripheral absent or power off */ 3 9 2 major bit (4), /* major status */ 3 10 2 sub bit (6), /* substatus */ 3 11 2 eo bit (1), /* even/odd bit */ 3 12 2 marker bit (1), /* non-zero if marker status */ 3 13 2 soft bit (2), /* software status */ 3 14 2 initiate bit (1), /* initiate bit */ 3 15 2 abort bit (1), /* software abort bit */ 3 16 2 channel_stat bit (3), /* IOM channel status */ 3 17 2 central_stat bit (3), /* IOM central status */ 3 18 2 mbz bit (6), 3 19 2 rcount bit (6) 3 20 ) unaligned; /* record count residue */ 3 21 3 22 /* End include file io_status_word.incl.pl1 */ 250 4 1 /* Begin include file io_manager_dcls.incl.pl1 */ 4 2 4 3 /* Written by Charles Hornig, late 1980 and early 1981 */ 4 4 /* Modified for MR10 interface, February 1982 */ 4 5 /* Channel reconfiguration entries added by Chris Jones, January 1984 */ 4 6 4 7 /* These entries are callable on unwired stacks. */ 4 8 4 9 /* call io_manager$assign (Chx, Channel, Handler, Index, Statusp, Code); */ 4 10 dcl io_manager$assign 4 11 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 4 12 fixed bin (35), ptr, fixed bin (35)); 4 13 4 14 /* call io_manager$assign_add (Chx, Channel, Handler, Index, Statusp, Code); */ 4 15 dcl io_manager$assign_add 4 16 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 4 17 fixed bin (35), ptr, fixed bin (35)); 4 18 4 19 /* call io_manager$unassign (Chx, Code); */ 4 20 dcl io_manager$unassign entry (fixed bin (35), fixed bin (35)); 4 21 4 22 /* call io_manager$unassign_delete (Chx, Code); */ 4 23 dcl io_manager$unassign_delete entry (fixed bin (35), fixed bin (35)); 4 24 4 25 /* call io_manager$connect (Io_manager_arg); */ 4 26 dcl io_manager$connect entry (1 aligned like io_manager_arg); 4 27 4 28 /* call io_manager$connect_abs (Io_manager_arg); */ 4 29 dcl io_manager$connect_abs entry (1 aligned like io_manager_arg); 4 30 4 31 /* call io_manager$connect_direct (Io_manager_arg); */ 4 32 dcl io_manager$connect_direct entry (1 aligned like io_manager_arg); 4 33 4 34 /* call io_manager$get_status (Chx, Io_status_entry_ptr); */ 4 35 dcl io_manager$get_status entry (fixed bin (35), ptr); 4 36 4 37 /* call io_manager$mask (Chx); */ 4 38 dcl io_manager$mask entry (fixed bin (35)); 4 39 4 40 /* call io_manager$ignore_interrupt (); */ 4 41 dcl io_manager$ignore_interrupt entry (fixed bin (35), fixed bin (3), bit (36) aligned); 4 42 4 43 /* call io_manager$data_tdcw (Io_manager_arg); 4 44* dcl io_manager$data_tdcw entry (1 aligned like io_manager_arg); 4 45* 4 46* /* call io_manager$workspace_tdcw (Io_manager_arg); */ 4 47 dcl io_manager$workspace_tdcw entry (1 aligned like io_manager_arg); 4 48 4 49 dcl io_manager_arg_ptr ptr; 4 50 dcl 1 io_manager_arg aligned based (io_manager_arg_ptr), 4 51 2 chx fixed bin (35), /* channel index from io_manager$assign */ 4 52 2 bound fixed bin (19), /* workspace size */ 4 53 2 pcw bit (36) aligned, /* or IDCW */ 4 54 2 listx fixed bin (18), /* DCW list offset */ 4 55 2 ptp ptr, /* page table pointer */ 4 56 2 listp ptr, /* DCW list pointer */ 4 57 2 dcw_pair_ptr ptr; /* DCW pair pointer */ 4 58 4 59 /* End include file io_manager_dcls.incl.pl1 */ 251 5 1 /* START OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 5 2 5 3 /* Written by Charles Hornig, 1st quarter 1981 */ 5 4 /* Canonicalization entry added by Chris Jones, January 1984 */ 5 5 5 6 /* chanid = canonicalize_chanid (chanid); */ 5 7 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 5 8 dcl io_chnl_util$canonicalize_chanid 5 9 entry (char (8) aligned) returns (char (8) aligned); 5 10 5 11 /* call iom_to_name (iomno, channo, name, code); */ 5 12 dcl io_chnl_util$iom_to_name 5 13 entry (fixed bin (3), fixed bin (7), char (8) aligned, fixed bin (35)); 5 14 5 15 /* call name_to_iom (name, iomno, channo, code); */ 5 16 dcl io_chnl_util$name_to_iom 5 17 entry (char (8) aligned, fixed bin (3), fixed bin (7), fixed bin (35)); 5 18 5 19 /* END OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 252 253 254 /* BEGIN MESSAGE DOCUMENTATION 255* 256* Message: 257* boot_tape_io: Code CODE from io_manager$assign 258* 259* S: $crash 260* 261* T: $init 262* 263* M: The bootload tape reading package could not assign the bootload 264* tape drive to itself. 265* $err 266* 267* A: $boot_tape 268* 269* Message: 270* boot_tape_io: Unable to allocate buffer. 271* 272* S: $crash 273* 274* T: $init 275* 276* M: The bootload tape reading package could not allocate a wired-down buffer 277* into which to read the bootload tape. 278* $err 279* 280* A: $boot_tape 281* 282* Message: 283* boot_tape_io: Code CODE from absadr. 284* 285* S: $crash 286* 287* T: $init 288* 289* M: boot_tape_io was unable to find the address of its buffer. 290* $err 291* 292* A: $boot_tape 293* 294* END MESSAGE DOCUMENTATION */ 295 296 end boot_tape_io; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0807.4 boot_tape_io.pl1 >spec>install>1112>boot_tape_io.pl1 248 1 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 249 2 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 250 3 03/27/82 0430.3 io_status_word.incl.pl1 >ldd>include>io_status_word.incl.pl1 251 4 07/11/84 0937.3 io_manager_dcls.incl.pl1 >ldd>include>io_manager_dcls.incl.pl1 252 5 07/11/84 0937.3 io_chnl_util_dcls.incl.pl1 >ldd>include>io_chnl_util_dcls.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. TAPE_IO_EVENT 000000 constant fixed bin(35,0) initial dcl 41 set ref 83* 238* 241* 243* absadr 000016 constant entry external dcl 44 ref 87 addr builtin function dcl 69 ref 87 87 98 99 219 227 address 2064 000032 external static bit(18) level 5 in structure "physical_record_buffer$" packed packed unaligned dcl 51 in procedure "boot_tape_io" set ref 98* address 2104 000032 external static bit(18) level 5 in structure "physical_record_buffer$" packed packed unaligned dcl 51 in procedure "boot_tape_io" set ref 99* binary builtin function dcl 69 ref 90 98 98 99 99 101 123 222 bit builtin function dcl 69 ref 79 90 93 98 99 101 131 bootload_loader_leftovers 000032 external static structure level 3 dcl 51 bound 2071 000032 external static fixed bin(19,0) level 5 dcl 51 set ref 103* buffabs1 000104 automatic fixed bin(26,0) dcl 33 set ref 87* 93 98 99 chan_cmd 2063(24) 000032 external static bit(6) level 5 packed packed unaligned dcl 51 set ref 215* 217* chanid 000100 automatic char(8) dcl 30 set ref 81* 83* chx 2070 000032 external static fixed bin(35,0) level 5 dcl 51 set ref 83* 111* 112* code 2063(18) 000032 external static bit(3) level 5 packed packed unaligned dcl 51 set ref 92* command 2063 000032 external static bit(6) level 5 in structure "physical_record_buffer$" packed packed unaligned dcl 51 in procedure "boot_tape_io" set ref 214* command 2103 000032 external static bit(6) level 5 in structure "physical_record_buffer$" packed packed unaligned dcl 51 in procedure "boot_tape_io" set ref 96* count 2063(30) 000032 external static bit(6) level 5 packed packed unaligned dcl 51 set ref 90* cur_buffer 1 000032 external static fixed bin(17,0) array level 4 dcl 51 set ref 98 207* dcw based structure level 1 dcl 2-7 dcw1 2064 000032 external static structure level 4 dcl 51 device 2063(06) 000032 external static bit(6) level 5 in structure "physical_record_buffer$" packed packed unaligned dcl 51 in procedure "boot_tape_io" set ref 91* 123 131* device 000106 automatic fixed bin(6,0) dcl 35 in procedure "boot_tape_io" set ref 78* 79 device_bits 000105 automatic bit(6) dcl 34 set ref 79* 91 ext 2063(12) 000032 external static bit(6) level 5 packed packed unaligned dcl 51 set ref 93* ext_ctl 2063(21) 000032 external static bit(1) level 5 packed packed unaligned dcl 51 set ref 94* first_used_here 2022 000032 external static structure level 3 dcl 51 set ref 76* flags 2102 000032 external static structure level 4 dcl 51 idcw 2063 000032 external static structure level 4 in structure "physical_record_buffer$" dcl 51 in procedure "boot_tape_io" set ref 95 219 idcw based structure level 1 dcl 1-21 in procedure "boot_tape_io" ima 2070 000032 external static structure level 4 dcl 51 set ref 220* 228* io_chnl_util$iom_to_name 000044 constant entry external dcl 5-12 ref 81 io_manager$assign 000034 constant entry external dcl 4-10 ref 83 io_manager$connect_abs 000040 constant entry external dcl 4-29 ref 220 228 io_manager$mask 000042 constant entry external dcl 4-38 ref 111 io_manager$unassign 000036 constant entry external dcl 4-20 ref 112 io_manager_arg based structure level 1 dcl 4-50 io_status_word based structure level 1 dcl 3-5 listp 2076 000032 external static pointer level 5 dcl 51 set ref 219* 227* major 0(02) based bit(4) level 2 packed packed unaligned dcl 3-5 ref 222 mod builtin function dcl 69 ref 98 99 null builtin function dcl 69 ref 105 op 000103 automatic bit(6) packed unaligned dcl 32 set ref 142* 148* 156* 164* 172* 180* 188* 196* 206 214 215 215 226 pcw 2072 000032 external static bit(36) level 5 dcl 51 set ref 104* physical_record_buffer$ 000032 external static structure level 1 unaligned dcl 51 power 0(01) based bit(1) level 2 packed packed unaligned dcl 3-5 ref 222 prb 000032 external static structure level 2 dcl 51 set ref 87 87 ptp 2074 000032 external static pointer level 5 dcl 51 set ref 105* pxss$addevent 000020 constant entry external dcl 45 ref 238 241 pxss$delevent 000022 constant entry external dcl 46 ref 243 pxss$notify 000024 constant entry external dcl 47 ref 83 83 pxss$wait 000026 constant entry external dcl 48 ref 240 ra_buffer 2105 000032 external static fixed bin(17,0) array level 4 dcl 51 set ref 99 207 ra_dcw1 2104 000032 external static structure level 4 dcl 51 ra_idcw 2103 000032 external static structure level 4 dcl 51 set ref 95* 227 rcode 000102 automatic fixed bin(35,0) dcl 31 set ref 81* 82 82* 83* 84 84* 87* 88 88* reading_ahead 2102 000032 external static bit(1) level 5 packed packed unaligned dcl 51 set ref 201 204* 229* rel builtin function dcl 69 ref 98 99 ret_status parameter fixed bin(5,0) dcl 137 set ref 139 145 153 161 169 177 185 193 222* 226 statp 2066 000032 external static pointer level 4 dcl 51 set ref 83* 222 222 239 string builtin function dcl 69 set ref 95* 95 substr builtin function dcl 69 ref 93 sys_boot_info$tape_channel_number 000012 external static fixed bin(7,0) dcl 38 set ref 81* sys_boot_info$tape_device_number 000010 external static fixed bin(6,0) dcl 37 ref 78 sys_boot_info$tape_iom_number 000014 external static fixed bin(3,0) dcl 39 set ref 81* syserr 000030 constant entry external dcl 49 ref 82 84 88 t based bit(1) level 2 packed packed unaligned dcl 3-5 ref 239 tally 2104(24) 000032 external static bit(12) level 5 in structure "physical_record_buffer$" packed packed unaligned dcl 51 in procedure "boot_tape_io" set ref 101* tally 2064(24) 000032 external static bit(12) level 5 in structure "physical_record_buffer$" packed packed unaligned dcl 51 in procedure "boot_tape_io" set ref 101* unit_no parameter fixed bin(6,0) dcl 120 set ref 117 123* 127 131 unspec builtin function dcl 69 set ref 76* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. dcwp automatic pointer dcl 2-4 idcwp automatic pointer dcl 1-19 io_chnl_util$canonicalize_chanid 000000 constant entry external dcl 5-8 io_chnl_util$name_to_iom 000000 constant entry external dcl 5-16 io_manager$assign_add 000000 constant entry external dcl 4-15 io_manager$connect 000000 constant entry external dcl 4-26 io_manager$connect_direct 000000 constant entry external dcl 4-32 io_manager$get_status 000000 constant entry external dcl 4-35 io_manager$ignore_interrupt 000000 constant entry external dcl 4-41 io_manager$unassign_delete 000000 constant entry external dcl 4-23 io_manager$workspace_tdcw 000000 constant entry external dcl 4-47 io_manager_arg_ptr automatic pointer dcl 4-49 io_status_word_ptr automatic pointer dcl 3-4 pcw based structure level 1 dcl 1-6 pcwp automatic pointer dcl 1-4 tdcw based structure level 1 dcl 2-14 tdcwp automatic pointer dcl 2-4 NAMES DECLARED BY EXPLICIT CONTEXT. backspace 000515 constant entry external dcl 153 boot_tape_io 000057 constant entry external dcl 14 connect 000607 constant label dcl 201 ref 143 149 157 165 173 181 189 197 final_tape 000374 constant entry external dcl 108 get_unit 000430 constant entry external dcl 117 init_tape 000066 constant entry external dcl 71 read 000471 constant entry external dcl 139 read_done 000655 constant label dcl 222 ref 208 rewind 000527 constant entry external dcl 161 set_density_1600 000577 constant entry external dcl 193 set_density_800 000565 constant entry external dcl 185 set_unit 000447 constant entry external dcl 127 skip_file 000553 constant entry external dcl 177 unload 000541 constant entry external dcl 169 wait_for_status 000715 constant entry internal dcl 235 ref 203 221 write 000503 constant entry external dcl 145 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1270 1336 763 1300 Length 1660 763 46 305 305 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME boot_tape_io 124 external procedure is an external procedure. wait_for_status internal procedure shares stack frame of external procedure boot_tape_io. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME boot_tape_io 000100 chanid boot_tape_io 000102 rcode boot_tape_io 000103 op boot_tape_io 000104 buffabs1 boot_tape_io 000105 device_bits boot_tape_io 000106 device boot_tape_io THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry scaled_mod_fx1 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absadr io_chnl_util$iom_to_name io_manager$assign io_manager$connect_abs io_manager$mask io_manager$unassign pxss$addevent pxss$delevent pxss$notify pxss$wait syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. physical_record_buffer$ sys_boot_info$tape_channel_number sys_boot_info$tape_device_number sys_boot_info$tape_iom_number LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000056 71 000064 76 000073 78 000100 79 000102 81 000107 82 000123 83 000153 84 000201 87 000231 88 000246 90 000276 91 000305 92 000310 93 000312 94 000321 95 000323 96 000325 98 000327 99 000344 101 000360 103 000366 104 000367 105 000370 106 000372 108 000373 111 000401 112 000411 113 000424 117 000425 123 000435 125 000444 127 000445 131 000454 133 000465 139 000466 142 000476 143 000500 145 000501 148 000510 149 000512 153 000513 156 000522 157 000524 161 000525 164 000534 165 000536 169 000537 172 000546 173 000550 177 000551 180 000560 181 000562 185 000563 188 000572 189 000574 193 000575 196 000604 197 000606 201 000607 203 000614 204 000615 206 000621 207 000624 208 000630 214 000631 215 000633 217 000642 219 000644 220 000646 221 000654 222 000655 226 000673 227 000700 228 000702 229 000710 232 000714 235 000715 238 000716 239 000725 240 000733 241 000737 242 000746 243 000747 244 000755 ----------------------------------------------------------- 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